チーミングで負荷分散してもスイッチ側の設定が不要な理由。スイッチ非依存モードはどういうパケット通信になっているのか?仕組み

チーミングとは、サーバーの複数NICでチームを組み、冗長化させる機能です。
このチーミングを実現するにあたり、いろんな方法(チーミングモード)がありますが
その中でも不思議なのが、スイッチ側の設定が不要なスイッチ非依存モードでロードバランス(負荷分散)するモードです。
パケットの流れはどうなっているのでしょうか?

チーミングが負荷分散・ロードバランスしてもスイッチ側の設定が不要な理由。

image

実は、なかなか巧妙な手口が使われているんです。

今回説明に上記画像を使用し、上記画像を左から順に

  • サーバー
  • 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とか)が必要になります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です