チーミングとは、サーバーの複数NICでチームを組み、冗長化させる機能です。
このチーミングを実現するにあたり、いろんな方法(チーミングモード)がありますが
その中でも不思議なのが、スイッチ側の設定が不要なスイッチ非依存モードでロードバランス(負荷分散)するモードです。
パケットの流れはどうなっているのでしょうか?
レジュメ
チーミングが負荷分散・ロードバランスしてもスイッチ側の設定が不要な理由。
実は、なかなか巧妙な手口が使われているんです。
今回説明に上記画像を使用し、上記画像を左から順に
- サーバー
- L2スイッチ
- パソコン
とし、サーバーが今回のチーミング対象となっているとして説明します。
実はチーミングのネットワーク負荷分散は実は送信パケットのみ
チーミングでパケットを負荷分散してネットワーク帯域を広げられると一般的に言いますが(例えば、1GbpsのNIC二枚で2Gbpsのネットワーク帯域)、
実は、ネットワーク帯域が広がっているのはサーバーからみた送信パケットのみなのです。
スイッチ非依存モードではサーバーからみた受信パケットは負荷分散もロードバランスもしていません。
サーバーが送信パケットを負荷分散して2経路から送っているけどスイッチは大丈夫なの?
サーバーが送信パケットを負荷分散して2経路で送信します。
そのパケットを見ながらL2スイッチはMACアドレステーブルを書き換えます。
この時、実はサーバーからの送信パケットはチーミングの仮想MACアドレスでパケットを送らずに、物理NICのMACアドレスでパケットを送っているんです。
なので、サーバーが以下の3つのMACアドレスを持っているとすると
- 物理NIC1 MACアドレス
- 物理NIC2 MACアドレス
- チーミング MACアドレス(仮想MACアドレス)
サーバーの送信パケットには、
物理NIC1からは送信パケットには物理NIC1のMACアドレスが使用され
物理NIC2からの送信パケットには物理NIC2のMACアドレスが使用されているます。
そして、L2スイッチのMACアドレステーブルには
- 物理ポート1=物理NIC1 MACアドレス
- 物理ポート2=物理NIC2 MACアドレス
が登録されます。
サーバーの受信パケットが負荷分散されない理由
そして、最後にサーバーの受信パケットが負荷分散されない理由です。
パソコンが、サーバーとIPアドレス通信(L3レイヤー)するためには、サーバーのMACアドレス(L2レイヤー)が必要です。
このサーバーのMACアドレスを入手するのに、パソコンはARPパケットを飛ばしサーバーのMACアドレスを調べます。
この時、実はサーバーはチーミングの仮想MACアドレスを片方の物理NIC(物理NIC2)からのみ返信します。
このARPパケットにより、パソコンのARPテーブルには
- サーバーIPアドレス=チーミングMACアドレス(仮想MACアドレス)
が登録され、
L2スイッチのMACアドレステーブルには
- 物理ポート1=物理NIC1 MACアドレス
- 物理ポート2=物理NIC2 MACアドレス と チーミングMACアドレス
が登録されます。
これにより、パソコンからサーバーに向けたパケットは、L2スイッチの「物理ポート2」のみを経由し、サーバーの「物理NIC2」に届くのです。
この普通の動作がL2スイッチに特別な設定が不要でかつ、サーバーの受信パケットが負荷分散されない理由になります。
まとめ。ネットワークチーミングのスイッチ非依存モードの挙動・パケット通信
- サーバーから送信パケットのみ複数の経路で負荷分散される
- サーバーの受信パケットは一つのNICのみを使用し受信している
そのため、L2スイッチには特別な設定は不要ということです。
逆に言えば、
受信パケットも負荷分散させるためには、L2スイッチ側に特別な設定(LACPとか)が必要になります。