仕事中にコアスイッチが故障しても、サーバーがシームレスに利用可能な状態を望みますか? 特定のベンダーの特定のドライバに依存せずに、サーバーが複数のVLANにアクセスできるようにしたいですか? 物理および仮想ホストのネットワーキング構成を簡素化したいですか? これらの質問のいずれかに「はい」と答えた場合、この記事はあなたのためです。
NIC チーミングを使用することで、マシンの信頼性を向上させ、ネットワークリソースを効果的に利用(負荷分散)、マシンが使用するためのVLANを構成し、ネットワーキング構成を簡素化することができます。
この記事では、NIC チーミングとは何か、仮想マシンで NIC チーミングを使用する際の特別な考慮事項、および組織での展開方法について学びます。
前提条件
NIC チーミングを理解するためには、Windowsやネットワーク管理の専門家である必要はありません。ただし、この記事を理解して適用するには、いくつかの技術的な前提条件と知識が必要です。これらの項目は次のとおりです:
- ネットワークの動作に関する理解(MACアドレス、IPアドレス、VLAN)
- Windows Server 2016(または2019)にアクセスできること(2つ以上のネットワークアダプタが利用可能) – ほとんどの内容はWindows Server 2016、2012R2、およびWindows Server 2012にも同様に適用されます。
NIC チーミングの理解
物理サーバーの従来のネットワーキングセットアップでは、サーバーから複数のネットワークケーブルを複数の物理スイッチに接続することで信頼性を確保します(可能な場合は単一のスイッチスタックの一部です)。したがって、サーバーは常に複数のIPアドレスがアクティブであり、負荷分散は存在しません。
サーバーにNICチームを展開することで、複数の物理スイッチへの接続を維持し、ただ1つのIPアドレスを使用することができます。負荷分散が容易に利用できます。故障耐性は、DNSレコードがタイムアウト/更新されるのを待つ代わりに即座に提供され、管理がより簡単になります。
NICチーミングは、Windows Serverの機能であり、NICを「チーム」にグループ化することができます。各チームには、1つ以上のチームメンバ(チームにあるNIC)と1つ以上の仮想NIC(使用可能な仮想ネットワークアダプタ)が含まれます。
チームメンバは、チームがスイッチと通信するために使用するネットワークアダプタです。チームインターフェイスは、チームを作成したときに作成される仮想ネットワークアダプタです。チームインターフェイスにはIPアドレスが割り当てられるため、どちらがどちらかを覚えるのは難しいかもしれません。
NICチーミングとボンディングの違いは何ですか?
NICチーミングはNICボンディングと同義です。
NICチーミングは、Windows Server 2012以降のすべてのエディションで利用できます。この機能は非常に柔軟で、管理者にリンク集約/負荷分散、フェールオーバー、およびソフトウェア定義ネットワーキング(VLAN)のよりシンプルなソリューションを提供します。
特定のハードウェアや特定のベンダーの製品には似たようなソリューションもありますが、MicrosoftのNICチーミングの実装は、ハードウェアやベンダーに依存しない形でこれらの機能を提供することを目指しています。
NICチーミングとブリッジングの違いは何ですか?
NICチーミングを使用すると、同じサブネット上にある複数のNICアダプタを含むNICインターフェースを作成することができます。NICブリッジングを使用すると、異なるサブネットのNICアダプタをペアにして、2つのサブネット間で通信を可能にすることができます。
NICチームを構成する際には、チーミングモード、負荷分散モード、スタンバイアダプタ、およびチームインターフェースVLANを設定します。それぞれのコンポーネントについて以下で説明します。
チーミングモード
NICチームを作成する際には、どのチーミングモードを使用するかを選択する必要があります。チーミングモードは、サーバとスイッチ間でトラフィックを複数のリンク間で分割する方法を決定します。チーミングモードには、スイッチ非依存、LACP、およびスタティックの3種類があります。
スイッチ非依存
スイッチ非依存モードでは、チームメンバーを複数のスイッチに接続することができます。スイッチ非依存モードは、接続するスイッチに対して構成変更を行わない唯一のチーミングモードです。このモードでは、受信データをどのインターフェースに送信するかを制御するためにMACアドレスのみを使用します。
スイッチ非依存チーミングモードを使用する場合のいくつかの状況には、次のようなものがあります。
- 接続されたスイッチで構成変更を行わない場合
- チームメンバーに複数の非スタックスイッチを使用する場合
- 仮想マシン内でNICチームを作成する場合(詳細は以下の仮想マシンでの使用に関する考慮事項セクションを参照)
1つのアダプターを使用し、物理リンクの障害時にのみスタンバイアダプターにフェイルオーバーする場合は、Switch independentチーミングモードを使用し、スタンバイアダプターを設定する必要があります。
A standby adapter is not used often because it reduces the total bandwidth that is available for communicating with the server. The default setting is “None (all adapters Active)”.
Static
Static チーミングでは、NICチームに接続するスイッチのポートを手動で設定する必要があります。サーバーとスイッチは、利用可能なすべてのリンク間でトラフィックを分散します。
いずれかのポートが他のデバイスに接続されている場合、トラフィックは予期しないリンクに分散されてしまいます。そのため、誤って接続されたケーブルなどのエラーを分離するのに役立ちません。
スイッチがLACPをサポートしていない場合にのみ、Staticチーミングモードを使用する必要があります。
リンクアグリゲーション制御プロトコル(LACP)
LACP チーミングはStaticチーミングに類似していますが、各アクティブなケーブルが意図したLAGに接続されていることもトラッキングします。LACPは、予期されたLAGに接続されていないリンクを介してデータを送信しません。
スイッチがNICチームに送信するデータを負荷分散するために、スイッチがNICチームを認識する必要がある場合は、LACPを使用する必要があります。
重要:StaticおよびLACPチーミングモードでは、ホストを単一のスイッチまたは単一のスイッチスタックに接続する必要があります。
負荷分散モード
負荷分散モードは、チームが受信データのインターフェースを提供し、送信データに使用するアダプタを決定する方法を決定します。利用可能なオプションは、アドレスハッシュ、Hyper-Vポート、およびダイナミックです。
「負荷分散アプライアンス」とは異なり、受信トラフィックはチームメンバーが使用する各リンク間で均等に分割されるわけではありません。
アドレスハッシュ
アドレスハッシュモードは、ソースと宛先のIPアドレスとポートを使用して、チームメンバー間で効果的な負荷分散を行います。接続にポートが含まれていない場合、負荷分散の方法を決定するためにIPアドレスのみを使用します。接続にIPアドレスが含まれていない場合、MACアドレスを使用します。
NICチームを作成する際には、チームがIP+ポート、IPのみ、またはMACアドレスのみを使用するように強制することができます。IP+ポートはデフォルトであり、チームメンバー間で最もバランスの取れた結果を提供します。IPのみまたはMACアドレスのみを使用するには、PowerShellを使用してNICチームを作成する必要があります。
アドレスハッシュ負荷分散モードは、チームメンバー間のアウトバウンドトラフィックを均等に分割することには成功していますが、過剰または過少に使用されるチームメンバーには適応できません。また、すべてのインバウンドトラフィックは、プライマリチームインターフェースのMACアドレスを使用します。ただし、これはスイッチ非依存チーミングモードを使用している場合に限られます。
仮想マシン内でチームを作成する場合は、アドレスハッシュを使用する必要があります。
Hyper-Vポート
Hyper-Vポートモードは、Hyper-V仮想マシンホストでのみ使用することを意図しています。このモードでは、各マシンにMACアドレスを割り当て、それぞれのMACアドレスにチームメンバーを割り当てます。これにより、通常の動作時に特定のVMが予測可能なチームメンバーを持つことができます。
各VMの予測可能なチームメンバーは、VMの帯域幅がそれが動作する単一のリンクの最大値に制限されることを意味します。Hyper-VホストにVMが少ない場合、Hyper-Vポートの負荷分散モードはバランスが取れていない可能性が高いです。
通常、Hyper-Vポートモードを使用する必要はありませんが、各VMが常に同じリンクを使用する必要がある場合には便利です。
ダイナミック
ダイナミックモードは、アドレスハッシュモードとHyper-Vポートモードの最良の機能を組み合わせて、送信および受信のネットワークトラフィックをバランスさせます。 Hyper-Vと同様に、受信トラフィックは異なるMACアドレスにチームメンバーを割り当てることで分割されます。 アドレスハッシュと同様に、送信トラフィックはIP/ポートから派生した組み合わせハッシュによって分割されます。この組み合わせにより、上記のいずれの方法よりも優れたバランシングが提供されます。
ダイナミックバランスモードには、重要な改善点が1つあります。動的モードのアルゴリズムが特定のチームメンバーの過剰/過少利用を検出した場合、必要に応じて送信トラフィックを他のチームメンバーに再バランスします。
TCPストリームには自然なリズムがあり、将来のトラフィック量/切れ目を予測することが可能です。Microsoftはこれらをフローレットと呼んでいます。ダイナミックロードバランシングモードでは、フローレットを通じて、どのチームメンバーが過剰使用または過少使用されるかを予測し、アウトバウンドトラフィックを再バランスして準備することもできます。
ダイナミックモードはほとんどの場合、最適なロードバランシングオプションです。
チームインターフェースVLAN
チームを作成すると、デフォルトで単一のチームインターフェースが作成されます。チームインターフェースには、インターフェース上のトラフィックを特定のVLANにタグ付けするためのVLAN設定があります。チームインターフェースのVLANをタグ付きVLANに設定するのは、NICチームが作成されるチームメンバーがトランクモードを使用している場合にのみ行われます。
チームを作成した後、異なるVLANで追加のチームインターフェースを作成することもできます。
注意:Microsoftは、VM内のインターフェースのVLANを設定しないことを推奨しています。代わりに、Hyper-Vスイッチの詳細オプションである「VLAN ID」を使用してVMのVLANを定義してください。
仮想マシンでのNICチーミング
VMでのNICチームの設定にはいくつかの制限があります。Microsoftは特に「Teams on Teams」(ホストレベルのチームとVMレベルのチーム)の使用は非常に予測不可能であり、接続の喪失を引き起こす可能性があると指摘しています。
従来、VMの冗長性を確保するためには、VMを複数の外部仮想スイッチに接続する必要がありました。各仮想スイッチをどのVMが共有するかを計画し、混雑が起きないようにする必要がありました。さらに、他のVMからの混雑の可能性により、負荷分散の問題が複雑になりました。
現在では、VMホスト上に1つのネットワークアダプタに対してNICチームを展開することができます。すべてのVMは物理ポートまたはスイッチの障害から完全な冗長性を得ることができます。すべてのVMのトラフィックはチームメンバー全体でバランスが取れ、全体的なスループットと混雑処理が大幅に向上します。現在の設定は次のようになります:

VM内でのNICチーミングは、ネットワーキングスタックのCPUオーバーヘッドを削減するために、SR-IOVを有効にするために使用されることがあります。SR-IOVを機能させるには、BIOSのサポートとNICのサポートも必要です。
要件
VM内でのNICチーミングを使用するには、次の要件を満たす必要があります:これらの要件が「サポートされる構成」となります。
- VMで複数のアダプタを使用する必要があります。
- アダプタは、両方が「外部」タイプの2つの仮想スイッチに接続する必要があります。
- 物理スイッチに接続する場合、スイッチは同じL2サブネット上にある必要があります。
- VMのNICチームモードは「スイッチ非依存」に設定し、負荷分散モードは「アドレスハッシュ」に設定する必要があります。
Hyper-Vでは、チームになるネットワークアダプタの詳細設定タブから、各ネットワークアダプタのNICチーミングを有効にする必要があります。以下に、この設定の例を示します。

パフォーマンスの最大化
NICチーミングは、基本的には良好なパフォーマンスを提供しますが、パフォーマンスを向上させる必要があるさまざまなシナリオが存在します。これらのシナリオの詳細は、この記事の範囲外ですが、以下の用語に注意を払ってパフォーマンスを向上させる方法について学びたい場合は、次の用語に焦点を当ててください:
- リモートダイレクトメモリアクセス(RDMA)
- スイッチ埋め込みチーミング(SET)
- 受信側スケーリング(RSS)
- シングルルートI/O仮想化(SR-IOV)
通常、これらの追加の設定は、ネットワーキングスタックのCPUオーバーヘッドと接続間の遅延を削減します。パフォーマンスの向上については、ソフトウェアとハードウェア技術の説明とSETによるRDMAを使用した高性能の記事で詳細を学ぶことができます。
Windows ServerでのNICチームの作成
NICチーミングの仕組みとネットワーキングの簡素化を実現するビジョンを持っていることを踏まえて、NICチームを作成する準備が整いました!
このデモでは、デモ環境の制約により、VM上でNICチームが作成されます。物理サーバーでのNICチームの設定は同じですが、VM固有の手順が必要な場合は、それについて言及されます。
NICチーミングが有効かどうかを確認するにはどうすればよいですか?
NICチーミングは、Windows Server 2012(Server 2012、2012R2、2016、および2019)のすべてのバージョンで有効になっています。
GUIを使用したNICチーミングの展開
まず、Windows ServerマシンでServer Managerを起動します。NICチームを設定したいマシンに接続していることを確認してください。
- まず、NICチームを作成するサーバー名を右クリックし、「NICチーミングの構成」を選択します。

2. 「アダプターとインターフェイス」パネルから、新しいチームに追加するNICを選択します。次に、選択したアダプターを右クリックし、「新しいチームに追加」を選択します。

注意:NICチーミングは、1つまたは複数のアダプター(最大32個)と1つ以上のチームインターフェイスの組み合わせで構成することができます。
3. 説明的なチーム名を入力し、必要に応じて追加のプロパティを構成し、チームを作成するためにOKをクリックします。
この例では、NICチームはVM上で設定されています。その結果、チーミングモードまたは負荷分散モードは使用できません。このデモが物理サーバー上で実行されている場合、スイッチにLAGを使用する場合には、おそらくスイッチ非依存またはLACPを使用します。

Windows Server上でNICチームが作成されました。
NICチームにより、追加のNICまたはインターフェースを追加することができます。
作成した後、同じNICチーミングウィンドウからチームにNICを追加することができます。そのためには、利用可能なNIC上で右クリックし、「チームに追加」を選択します。「<チーム名>」に追加。

また、チームにさらにインターフェースを追加することもできます。これは、チームインターフェースタブを選択し、TASKS —> インターフェースを追加をクリックすることで行えます。

入力が表示されたら、以下のように使用するVLANとオプションで名前を入力します。

Windows PowerShellを使用したNICチーミングの展開
GUIを使用してNICチームを設定する方法がわかったので、次はPowerShellを使用して行う方法をチェックしてみましょう。
NICの名前を見つける
まず、チームに追加するNICを決定する必要があります。具体的には、NICの名前を特定する必要があります。
NICの名前を見つけるには、Get-Adapter
コマンドレットを使用します。このコマンドレットを実行し、以下のオプションを確認してください。

名前をメモしたら、PowerShellでチームを作成する準備が整いました!今回のデモでは、新しいNICチームにEthernet 3と4のNICを使用します。
NICチームの作成
NICの名前が手に入ったので、あとは1つのコマンドレット(New-NetLbfoTeam
)を実行するだけです。以下に、New-NetLbfoTeam
コマンドレットの実行例とその出力を示します。
TeamMembers
パラメータには、先程取得したNICの名前を使用します。
この例では、TeamingMode
はSwitchIndependent
に設定されています。スイッチポートをLAGに構成する場合、おそらくLACP
の値を使用したいでしょう。スイッチでLAGを使用していない場合は、おそらくSwitchIndependent
を選択するでしょう。
LoadBalancingAlgorithm
パラメータの値はDynamic
です。このモードは、チームメンバー間で最も均等な負荷分散を提供します。

完了すると、Get-NetAdapter
からアダプターリストに新しい仮想NICが表示されます。

VMのNICチームの注意点:
– ‘SwitchIndependent’のTeamingModeを使用する必要があります。
– LoadBalancingAlgorithmのアドレスハッシュタイプのいずれかを使用する必要があります(TransportPorts)。
– 物理サーバーではTransportPortsの代わりに動的な負荷分散が使用されます。*
NICチームにNICまたはインターフェースを追加する
NICチームが構築されたら、GUIと同様にNICやインターフェースを追加できます。チームにさらにNICを追加するには、Add-NetLbfoTeamMember
コマンドレットを使用します。*.*
また、Add-NetLbfoteamNIC
コマンドレットでチームインターフェースを追加することもできます。
要約
NIC チーミングとは何か、パフォーマンスや VM の利用、ネットワークの簡素化との関係、GUI または PowerShell を使用してのデプロイ方法について学びました。