差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
blog:2019:2019-01-29 [2019-01-29 01:17]
Decomo 作成
blog:2019:2019-01-29 [2022-04-14 09:17] (現在)
Decomo
行 1: 行 1:
 ====== 逸般の誤家庭で40GbEはじめますた その3(構築編) ====== ====== 逸般の誤家庭で40GbEはじめますた その3(構築編) ======
 +
 +  * [[2019-01-16]]
 +  * [[2019-01-22]]
 +  * [[2019-01-29]] ←いまここ
  
 機材が揃ったので、サーバ/クライアント直結40GBASE-SR4ネットワークを構築する。 機材が揃ったので、サーバ/クライアント直結40GBASE-SR4ネットワークを構築する。
  
-ネットワーク概略図は以下の通り。+ネットワーク概略図を示す。
  
 {{ :blog:2019:40gbe_1gbe_bridged_network.png |}} {{ :blog:2019:40gbe_1gbe_bridged_network.png |}}
  
-クライアントとサーバを40GBASE-SR4で直結し、サーバで40GbEと1GbEをブリッジする。こうすることで、40GbE対応スイッチがなくとも、40GbEの高速化の恩恵を受けつつ既存の1000BASE-Tネットワークとの相互運用がスマートに実現できる。この構成だと、サーバが落ちてると当然ながらクライアントがネットに繋がらなくなってしまうが、うちでは常時稼働させてるので殆ど問題ない。いざというときは、クライアントを従来通り1000BASE-Tで繋げばいいだけだし、そこは割り切る。+<WRAP important>(2020-03-07 追記)
  
-40GbEといっても、ネットワークカードのインストールは一般的なPCI-Express拡張カードと一緒。マシンにNICを挿してドライバをインストールするだけだ。+FreeBSDのL2ブリッジ''if_bridge''はジャイアントロックを使った実装が原因でボトルネックとなるようだ。実際、うちの環境ではブリッジなしでは30Gbpsを超えるのに対し、ブリッジを使うと12~13Gbpsで頭打ちとなる。 
 +</WRAP>
  
-FreeBSD(サーバ)では''/boot/loader.conf''に以下の1行を追加し再起動すると、mlxen0/mlxen1というネットワークデバイスが生えてくる。+クライアントとサーバを40GBASE-SR4で直結し、サーバで40GbEのI/Fと1GbEのI/Fをブリッジする。こうすることで、40GbE対応スイッチがなくとも、40GbEによる高速化の恩恵を受けつつ既存の1000BASE-Tネットワークとの相互運用が実現できる。当然ながら、サーバが落ちてるとクライアントのネットワークも使えなくなってしまうが、うちでは常時稼働させてるので殆ど問題ない。いざって時はクライアントを従来通り1000BASE-Tで繋げばいいだけだし、そこは割り切る。 
 + 
 +40GbEといっても恐るるなかれ、ネットワークカードは何の変哲もないPCI-Expressカードだ。ビデオカード等を取り付ける要領でマシンにNICを挿し、ドライバをインストールすればよい。 
 + 
 +FreeBSD(サーバ側)では''/boot/loader.conf''に以下の1行を追加し再起動すると、mlxen0/mlxen1というネットワークデバイスが生えてくる。
 <code> <code>
 mlx4en_load="YES" mlx4en_load="YES"
 </code> </code>
  
-40GbEと1GbEのブリッジは''/etc/rc.conf''に以下の設定を追加する。このサーバでは様々なサービスを提供しているので、bridge0にIPアドレスを付け替えるのも忘れずに。IPアドレスを振る場合は、必ずブリッジに対して行うこと。ブリッジメンバの個別I/Fに振ると、一見動いているように見えてパケットが流れなかったりと、非常に分かりにくいバグを誘発することになる。 +40GbEと1GbEのブリッジは''/etc/rc.conf''に以下の設定を追加する。このサーバではsshやSambaなどのサービスを提供しているので、''igb0''のIPアドレスを''bridge0''に付け替える。ブリッジにIPアドレスを振る場合は、必ずブリッジそのもの(ここでは''bridge0'')に対して行う。ブリッジメンバ(ここではigb0)に振ると、一見動いているように見えてブロードキャストは到達するのにユニキャストは到達しない、といった非常に分かりにくい問題を誘発することになる。 
-</code>+<code>
 cloned_interfaces="bridge0" cloned_interfaces="bridge0"
-ifconfig_bridge0="ether xx:yy:zz:uu:vv:ww addm igb0 addm mlxen0 up"+ifconfig_bridge0="ether XX:YY:ZZ:00:00:01 addm igb0 addm mlxen0 up"
 ifconfig_bridge0_alias0="inet 192.168.0.1 netmask 255.255.255.0" ifconfig_bridge0_alias0="inet 192.168.0.1 netmask 255.255.255.0"
 ifconfig_igb0="up" ifconfig_igb0="up"
行 25: 行 34:
 </code> </code>
  
-うまくブリッジが出来上がればifconfigが↓こんな感じになる。bhyve用のブリッジも兼用してるので余計なtapが刺さってるのは無視してくだしあ。+うまくブリッジが出来上がればifconfigが↓こんな感じになる。bhyve用のブリッジも兼用してるのでtapも刺さってるのは無視してくだしあ。
 <code> <code>
 $ ifconfig bridge0 $ ifconfig bridge0
 bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
         description: vm-public         description: vm-public
-        ether 02:44:23:00:00:01 +        ether XX:YY:ZZ:00:00:01 
-        inet 172.20.32.1 netmask 0xffffff00 broadcast 172.20.32.255+        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
         nd6 options=9<PERFORMNUD,IFDISABLED>         nd6 options=9<PERFORMNUD,IFDISABLED>
         groups: bridge vm-switch viid-4c918@         groups: bridge vm-switch viid-4c918@
行 47: 行 56:
 </code> </code>
  
-クライアントのネットワークが正しく使えることを確認する。インターネットに繋いだり、サーバにsshしたり…。設定に間違いがなければ、従来と全く同じように使えるはず。+Windows(クライアント側)はふつーのEthernet設定の要領で、ConnectX-3のネットワークプロパティでIPアドレス等を設定してやればよい。サーバ側の設定が問題なければ、今までと同じように通信が行えるはず。
  
 最後にSambaでファイルコピーを行ったGIF動画を貼っておく。サーバのSSD(Intel DC S3500シリーズ)の速度がボトルネックとなり10Gb/秒にも満たないが、素敵な速さだ。 最後にSambaでファイルコピーを行ったGIF動画を貼っておく。サーバのSSD(Intel DC S3500シリーズ)の速度がボトルネックとなり10Gb/秒にも満たないが、素敵な速さだ。
 {{ :blog:2019:40gbe_file_copy.gif |}} {{ :blog:2019:40gbe_file_copy.gif |}}