仮想マシンと仮想ブリッジでブロードキャストストームのテストをしてみた

STP(Spanning-Tree Protocol)はスイッチでループを作った際にブロードキャストストームの発生を防いでくれるはずなのだが、スイッチが1台しかない筆者の環境ではこの構成をテストするのが難しかった。
最近、仮想化環境で自由に仮想スイッチを作れるようになったので、仮想マシンのブリッジ接続と合わせて、ブロードキャストストームが発生する状況を作ってみた。
仮想マシンFedoraを使い、同じブリッジからのNICを2本(eth0, eth1)つなぎ、ブリッジ接続を行った。ブリッジの設定は次のようになる。

# brctl addbr br0
# brctl addif br0 eth0
# brctl addif br0 eth1
# ifconfig br0 192.168.1.XXX netmask 255.255.255.0 
# ifconfig eth0 up
# ifconfig eth1 up
# brctl br0 stp off

この状態で、ブロードキャストのpingを行う。

# ping -b 192.168.1.135 <== 同じセグメントの別仮想マシン

こうすることで、仮想マシンのCPUが張り付き、ブロードキャストストームが起こっていることが確認できた。。ww

tcpdumpで見たところ、次のようなパケットが大量に出ていた。(全セグメントへの要求??)

00:32:00.046749 IP 192.168.1.XXX > 224.0.0.251: igmp v2 report 224.0.0.251 
00:36:06.607295 IP 0.0.0.0 > ALL-SYSTEMS.MCAST.NET: igmp query v2 

なお、この事象は仮想マシン側か、ホストOS側のブリッジのどちらかで、STPを有効化することで収束した。

# brctl br0 stp on

まあ、基本的にはSTPはオンにしよう、、という確認でしかないが。。ww