仮想マシンと仮想ブリッジでブロードキャストストームのテストをしてみた
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