仮想化でプリセールスしてるSEの一日

VMware から Azure まで、インフラや仮想化の最新情報をベンダー色をできるだけ抑えて綴っていきます

Windows Server 2012 R2 のネットワークの注意事項 - SMB Multichannel (2)

f:id:ogawad:20190203195637p:plain:right


前回 の内容から、SMB 通信限定、かつ障害対応を無視できるのであれば Multichannel の方が優れているように感じたでしょう。

しかし、その決断をするにはまだ早いかもしれません。
確かに机上ではそうなのですが、実環境では実はそう簡単ではないのです。


複数のネットワークでラウンドロビン

下図は前回も紹介した SMB Multichannel によるラウンドロビン
ファイルを細切れにして並列転送することでワイヤースピード超えを実現します。



仕組みは非常に簡単であり、実装は難しそうには見えません。
ではなぜ、多くの NIC Team ではラウンドロビンを実装しないのでしょうか?


上図は2台のサーバーだけの世界でしたが、
実際の環境では各セグメントに様々なデバイスが繋がっています。

ここで少し考えてみてください。

  • Multichannel を構成する複数のネットワークは全く同格でしょうか?
  • 一部のネットワークは業務系や管理系だったりしないでしょうか?
  • それぞれの負荷は均等でしょうか?
  • 一部のネットワークだけ高性能なスイッチにしていないでしょうか...?



そうです。実際の環境では、複数のネットワークパスを利用してラウンドロビンで並列転送しても、なかなか順番どおりに届かない のです。
この図のとおり、宛先ホストはランダムに届くピースをジグゾーパズルのように埋めていかなければなりません。


「シーケンシャルでもパラレルでも、遅いネットワークに引きずられるので結局同じなのでは?」と思われる方もいるでしょう。しかし、ピースがランダムで虫食い状態に埋めていくのと、端から順番にピースが届くのでは、受信サーバーの負担は全然違います。


道路にバイパスができて到着地までルートが増えると渋滞は減るでしょう。
しかし、2つのルートの所要時間は全く同じとは限りません。走行する時間帯によって差も生じます。

もし、ゴール地点ではゼッケンの順番どおりに駐車しなければならない場合、
駐車場は虫食いだらけ。広大の駐車スペースを確保して各車の到着を待つことになってしまいます。

これに対し、NIC Team はシーケンシャル転送です。
送られて来るピースは順序保証されているため、各車はゼッケンの番号どおりに到着します。適度に溜まったところで解散できるため(メモリ解放)、駐車スペースがそれほど確保できなくても回していけるのです。


実環境では1台のサーバーがやり取りする相手は1台だけではありません。
“サーバー” なのですから複数の相手と同時にやり取りすることの方が多いはず。
広大な駐車スペースとジグゾーパズルが何セットも必要になりますが、はたしてそのサーバーは効率的に動けるでしょうか...?


検証環境と本番環境は違う

1 対 1 の検証環境では、Multichannel でスループットが綺麗に倍増するでしょう。但し、本番環境ではそう上手くいかないだけでなく、トラブルの種になり得ます。

以前も同じ表現をしましたが、「世界の限られた検証環境と本番環境は違う」ということを意識して設計する必要がありそうです。

逆に言えば、「自宅ネットワーク」のように帯域が常にガラ空きであったり、「ストレージ専用」ように途中で輻輳を起こしにくいクローズネットワークであれば、トラブルなく運用できるかもしれません。実際、比較的クローズと言える SAN の世界では、マルチパスにラウンドロビンが広く採用されています。


トラブルの多い SMB Multichannel の挙動を理解する

「ファイル分割 + ラウンドロビンによるパフォーマンストラブルはさておき、
現行の Windows では Multichannel は既定で On になっています。Off にする方法はコマンドのみですので、Multichannel 有効のままで動かしている Windows Server も多いと思ってます。
こういった背景もあり、サーバー管理者もネットワーク管理者も SMB Multichannel の「挙動」を理解しておく必要がありそうです。

このあたりを 次回 まとめてみたいと思います。