仮想MACのフェイルオーバーについて考えてみる

UC●M問題に端を発した仮想MACですが、あれこれ調べてるうちにひとつの疑問にいたりました。

仮想MACが移動したところで、ぶら下がってるL2スイッチのMACアドレステーブルが更新されないとだめじゃない?
うは、ベンダー様の専売特許とかですかwww
もしかしてリンクdown→upとかダサいことしちゃったりしてる?ぶぴぴwww

とか思いつつ調べてみたんですが、どうにもARPテーブルと情報がまざってしまい、ほしい資料がなかなか得られませんでしたが、やっと見つけました。

どうやら、GARPによってL2スイッチはMACアドレステーブルを更新する動きをするようですね。

ですが実際目で見るまで納得できないので、以下のような実験をしてみました。

  1. 同じMACアドレスとIPアドレスをもった物理ホストを2台用意する。
  2. IPアドレスに対してLAN内の別のホストからPINGを打ち続ける。
  3. PINGのリクエストが着てない側でGARP(arping -U [IPアドレス]を送信)
  4. スイッチングが切り替わるかtcpdumpとスイッチでshow macで確認

物理ホストはvyattaの仮想デバイスを使って用意しました。
LiveCDなvyattaはちょっとした検証のときに便利です。

set interfaces pseudo-ethernet peth0 link eth0
set interfaces pseudo-ethernet peth0 mac aa:aa:aa:aa:aa:aa
set interfaces pseudo-ethernet peth0 address 192.168.100.100/24

 

結果は想像通りで、GARPと同時に切り替わりました。
またL2スイッチは同じMACアドレスがあった場合、同時に二つMACアドレステーブルにのらない、でいいのかな。通信が複製されて大変なことになってしまいますね。

仮想MACのフェイルオーバーの流れはこんな感じでしょうか。

  1. フェイルオーバー発生
  2. 仮想MACとVIPを上げる
  3. L2スイッチのMACアドレステーブルを更新するためにGARP送信

NWがでかくなったり、UC●Mのように不届きな機器がいると、NWすべてのホストにブロードキャストして、ARPテーブルの更新を促すといった手法だと、確実に切り替わりが担保できないのも想像できます。

それに比べて仮想MACだと、直近のスイッチのMACアドレステーブルだけ切り替われば問題ないということですね。

なるほど、知れば納得です。

コメントを残す

メールアドレスが公開されることはありません。


*