次はチーム構成時に必要となる動作モードとアルゴリズムについて解説する。
チーミングモードとは、チームを組んだ複数のアダプター間で通信の負荷分散(ロードバランス)をするかしないか、また負荷分散する場合はサーバーからの送信パケットのみか、送信・受信とも負荷分散させるかを決めるパラメーターである。
言葉だけ聞けば、「送信のみ負荷分散」より「送受信とも負荷分散」を選びたくなるところだろう。しかし受信パケットに対する負荷分散はLBFOといったサーバー側のチーミングユーティリティでは対応できない。なぜなら、チームによって束ねられたケーブルのうち、どれを使ってパケットを送るかは送信元(相手側)が選ぶからだ。すでにケーブルを伝って送られてきた受信パケットについて、別のアダプターが受け取ることは物理的にも不可能である(図4)。
つまり、「送受信とも負荷分散」を実現するためには、対向のスイッチについてもチーミングのような機能が必要となることに注意してほしい。なお、スイッチの世界ではチーミングとは呼ばず、「集約」の意味を持つ「リンクアグリゲーション」や「ポートトランキング」といった言葉が利用される。
チーミングモードには次の3つがある。
■「スイッチに依存しない(既定)」モード
負荷分散を行わずに冗長化のみを行うActive-Standby構成や、Active-Active構成において、サーバーから送信されるデータのみ負荷分散を行う動作モードである。対向スイッチ側でリンクアグリゲーションを構成しない(できない)場合はこのモードを選択しよう。
なお、Active-ActiveかActive-Standbyかについては後述の「スタンバイアダプター」で指定する。
■「静的チーミング」モード
一般的に「静的リンクアグリゲーション」と呼ばれる、対向スイッチにリンクアグリゲーション機能を必要とするモードだ。スイッチ側で「LAG(リンクアグリゲーショングループ)」を設定しながらも、後述のネゴシエーションプロトコルである「LACP(Link Aggregation Control Protocol)」に対応していない場合はこちらを選択することになる。
こちらのモードはスイッチ側でもチーミング(集約)を設定するため、送受信ともパケットを負荷分散できる。シスコ社製スイッチにおける「mode=on」相当であるが、LAGに対応しながらもLACPに対応しないといったスイッチ機器は滅多に存在しないため、このモードが用いられることはほとんどない。
■「LACP」モード
一般的に「動的リンクアグリゲーション」と呼ばれるモードであり、こちらも対向スイッチにリンクアグリゲーション機能を必要とする。静的チーミングの上位互換であり、対向スイッチがLAGとLACPの両方に対応している場合はこちらを選択しよう。
こちらのモードでは、LAGで束ねたリンクにLACPによる調停を加えることで、一部のリンク(アダプターやポート、ケーブルなど)に障害が発生した場合の切り離しや復旧処理を自動化できる。また、対向スイッチに対して自らLACPネゴシエーションを要求することで、対向ポートのLAGが未構成の場合に自動構成を促すことも可能だ(LACP active機能)。なお、LBFOがサポートするネゴシエーションプロトコルはLACPのみであり、シスコ社独自のPAgPには対応しない。
以上3つの動作モードを決定するには、スイッチにLAGやLACPなどの機能が搭載されているかを確認することになるだろう。しかしながら、同じ意味でありながらメーカーによって異なる用語が利用されているのが現実だ。加えて、IEEEによる標準化がドラフトと正式制定で仕様変更されたために、輪を掛けて誤解しやすくなっている(表1)。
用語 | 別称 | 意味 |
---|---|---|
リンクアグリゲーション | ポートトランキング EtherChannel |
スイッチ上で複数のポートを束ねること(NICにおけるチーミングとほぼ同義) |
リンクアグリゲーショングループ(LAG) | トランクグループ チャネルグループ |
リンクアグリゲーションによって束ねられたポートグループ |
静的リンクアグリゲーション ※LBFOにおける「静的チーミング」 |
IEEE 802.3ad draft v1 IEEE 802.3ad Static |
ネゴシエーションプロトコル無しでLAGを運用すること |
動的リンクアグリゲーション ※LBFOにおける「LACP」 |
IEEE 802.3ad IEEE 802.3ad+LACP IEEE 802.3ad Dynamic IEEE 802.1ax IEEE 802.1ax-2008 |
ネゴシエーションプロトコルとしてLACPを用いてLAGを運用すること |
負荷分散モードとは、アクティブなアダプターが複数ある場合に、どのアダプターからデータ送信を行うかを決める「ロードバランスアルゴリズム」のことだ(図5)。
Windows Server 2012 R2では、負荷分散モードとして次の3つのアルゴリズムモードを選択できる。
■「アドレスのハッシュ」モード
こちらは送信元や宛先のMACアドレスやIPアドレス/ポート番号をベースにハッシュ計算を行い、使用するアダプターを決定するアルゴリズムモードである。つまり、これらのアドレス情報が同じ通信については常に同じアダプターが使用される。
判定に用いられるアドレス情報は次の3パターンだ。上から順に自動選択される。pingコマンドで利用されるICMPといったように、ポート番号の存在しないTCPやUDP以外のプロトコルや、IPSecなどで隠蔽されている場合はIPアドレスをベースに決定される。また、IP通信でなかったり、レイヤー2で判定させた方が良いとされるケースはMACアドレスをベースに決定される。インテリジェントなアルゴリズムであるため、この判定順序は自動に任せるべきであるが、リスクを承知の上でどうしても手動調整したい場合はPowerShellから変更可能だ。
■「Hyper-Vポート」モード
こちらは、LBFOチームアダプターをHyper-V仮想スイッチのアップリンクとして接続する場合にのみ有効なアルゴリズムモードである。Hyper-V仮想スイッチは内部で各ポートにIDが割り振られており、そのポートIDをベースに使用するアダプターを決定する。つまり、同じ仮想マシンからの送信データは常に同じアダプターが使用される。
■「動的(既定)」モード
これはWindows Server 2012 R2から追加された新しいアルゴリズムモードである。アドレス情報などのパケットの中身は見ず、物理アダプターの負荷を見て、負荷が平等になるように送信アダプターを適宜変えていく。パケットの内容を見ないため処理が高速なほか、非常に効率的に分散されることもあり、Windows Server 2012 R2ではHyper-Vやリンクアグリゲーションの有無に関係なく、このモードの利用が推奨されている。
このように、Windows Server 2012 R2では新しいアルゴリズムモードである「動的」が追加され、こちらの利用が推奨されている。既定値もこちらであり、以前のバージョンのようにネットワーク環境に合わせるのに悩む必要もなくなったのは嬉しい。
なお、アルゴリズムの解説で気付かれた方もいるかもしれないが、「チーミングを構成しても単一スループットが倍増しない」ことに注意しよう。「1GbpsのNICを2枚束ねればファイルコピーは2倍の2Gbpsになる」といった誤解だ。確かにチームアダプターのリンク速度は2Gbpsと表示されているし、総帯域としては2Gbpsといえるかもしれない。しかし、これは合計で2Gbpsの転送が行えるだけであり、単一セッションの転送スループットは最大1Gbpsのままだ。詳細については次のColumn「チーミングを行っても単一スループットは倍増しない?」を参照していただきたい。
チーミングについては広く誤解されていることがあるのでここで補足しておこう。「1GbpsのNICを2枚束ねればファイルコピーは2倍の2Gbpsになる」と思っていないだろうか。これは誤解で、チーミングを構成しても単一のスループットは倍増しないのだ。確かにチームアダプターのリンク速度は2Gbpsと表示されているし、総帯域としては2Gbpsといえるかもしれない。しかし、これは合計で2Gbpsの転送が行えるだけであり、1つ1つのスループットは最大1Gbpsのままである。
ここについてもう少し詳しく説明しよう。先ほど解説した負荷分散モードのアルゴリズムを思い出してほしい。例えば「アドレスのハッシュ」の場合、どのアダプターを使って送信するかは、送信元や宛先のIPアドレスやポート番号などを用いて決定される。逆に言えば、IPアドレスやポート番号といったアドレス情報が変わらない場合、チーム内の他のアダプターは用いられず、同じアダプターでデータを送信し続けることになる。そのアダプターが1Gbps規格であれば、1Gbpsを超えるスループットは物理的にも不可能なのだ。
もちろん、複数のホストに同時転送する場合は宛先IPアドレスが変わるために複数のアダプターで並列転送することができる。また、利用するアプリが異なれば、宛先ホストが同じであっても通信に利用するポート番号が変わるために、複数のアダプターを用いた並列転送が行われるだろう。このように、チーミングは単一の転送スループットとしては倍増しない。しかし、同時に複数のアプリケーションから通信を行っていたり、複数の宛先へデータ転送を行っていたりすれば「総帯域」として倍増することになる(図a)。
これは、CPUにおいて2GHzのプロセッサーを2つ搭載しても、4GHzの速度で処理できるわけではないのと同じことといえるだろう。単一のデータ転送で1Gbps以上のスループットを出したい場合は10Gbpsイーサネットが必要であり、チーミングではスループットに対して限界があることを覚えておこう。
実際の転送速度の測定例を次に示す。単一セッションの場合は、個別のセッションはNIC 1つ分を超えることはないが、複数のセッションがあれば、単一のNICよりも速くなっている。
なお、負荷分散モードを「動的」に設定した場合も、宛先に届くデータの順序保証の観点から、基本的にデータ転送中に送信アダプターを突然変えるということはない。このため、動的モードの場合も単一スループットが倍増することはない。
測定で使用したNTttcpツールについては、以下の情報を参照していただきたい。
NICチームにおいては、すべてのアダプターを効率的に利用でき、同時に冗長化も実現できるActive-Active構成が一般的だ。しかし、自動的に負荷分散されるのは不安だ、通信する物理アダプターやMACアドレスを固定化しておきたいといったケースではActive-Standby構成を取ることもある。
Active-Standby構成の場合に、フェールオーバー用の待機系アダプターを指定するのが「スタンバイアダプター」の設定だ。RAIDにおける「ホットスペア」をイメージすると分かりやすいだろう。なお、チーミングモードがLACP(動的リンクアグリゲーション)の場合は、スタンバイアダプターは設定できない(図6)。
ここまでの通り、LBFOには「チーミングモード」「負荷分散モード」「スタンバイアダプター」と大きく3つのパラメーターがある。負荷分散モードはWindows Server 2012 R2からは「動的」にしておけばほぼ間違いは無いし、スタンバイアダプターは“ホットスペア”が必要かどうかで判断すれば良い。
悩みどころは「チーミングモード」だろう。しかし、冒頭でNICチーミングはもはや当たり前と述べた通り、ほとんどの管理者はLBFO以外のチーミングユーティリティを利用したことがあるのではないだろうか。そこで、表2にLBFOと各社の用語をマッピングさせてみた。これまで他社ツールで正常稼働してした設定内容を踏襲すれば、深く悩まずに済むはずだ。
スイッチ側の LAG設定 |
Windows Server 2012 R2 LBFO | Intel PROSet |
HP NCU |
VMware vSS |
||
---|---|---|---|---|---|---|
Active-Standby | なし | スイッチに依存しない | AFT | NFT | 明示的順序 | |
Active-Active (送信のみ) |
ALB | TLB | Port ID/ MAC Hash |
|||
Active-Active (送信/受信) |
LAGのみ | 静的チーミング | SLA | SLB | IP Hash | |
LAG + LACP | LACP | DLA | 802.3ad Dynamic |
(なし*) | ||
各社のツールについては、以下のサイトを参照していただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.