Open vSwitchやNamespaceの関係図をコマンド一つで描く

LinuxでSDNっぽいことをOpen vSwitchでやろうとすると、BridgeやらNamespaceやらInterfaceやらが増えまくって全貌の把握が困難になってきます。また、なぜかpingが通らないときなど、あっちこっちでtcpdumpして回るのは大変です。

そこで、コマンド一つでOpen vSwitchやNamespaceの関係図を描き、ついでに全interfaceをtcpdumpしてpingがどこを通っているかも色で示すツールを作りました。


今のところ単一ホスト内のみなので複数nodeあるときは各nodeで実行する必要がありますが。

使い方

ソースは https://github.com/NeoCat/ovsimager にあります。sudo できるユーザかrootで

 $ sudo gem install ovsimager
 $ sudo yum install graphviz
 $ ovsimager

とインストールして実行すると、interfaces.png というファイルに関係図が出力されます。


以下はOpenStack Neutron DVR(all-in-one構成)でinstanceにFloating IPを振った状態です。
Open vSwitch Virtual SwitchとLinuxBridge内のInterface、およびNamespaceとの関係(routingに使われうる、IPが振られたインターフェイスのみ)が点線で描かれます。vethやOpen vSwitch間のpeerは実線で繋がります。


pingをトレースするときは、400byteのpayloadのpingを打ちながら、

 $ sudo ovsimager -d

とします。すると、全インターフェイスtcpdumpが数秒間起動され、400byteのping (vxlanも含む) が通った場所を記録、図にpingの宛先・送信元IPアドレスが追加され、色もつきます。(黄: ICMP Echo Request/Response両方が通過、ピンク: Requestのみ通過、赤:Responseのみ通過)


なお ovsimager 自身に ping を実行させることもできます。

 $ sudo ovsimager -d -f 10.0.0.1 -t 192.0.2.1

pingのトレース時は全interfaceでtcpdumpを同時実行するとか割と荒っぽいので、大規模な環境で実行しないほうがいいと思います。。が、学習用にはいいかな、と。