NOX をインストールし、起動する。
Open vSwitch を入れたマシンの上に NOX をインストールし、下図のような単純な構成の OpenFlow スイッチとして機能させる。
http://noxrepo.org/ の、http://noxrepo.org/noxwiki/index.php/NOX_Installation にインストール手順あり。
NOX Installation を見ながら作業。
$ git clone git://noxrepo.org/nox $ cd nox $ git branch -a * zaku remotes/origin/HEAD -> origin/zaku remotes/origin/destiny remotes/origin/dev/destiny-fast remotes/origin/openflow-0.8.9 remotes/origin/openflow-0.9 remotes/origin/openflow-1.0 remotes/origin/zaku $
$ ./boot.sh building with all apps Disabling noxext... libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'. libtoolize: copying file `config/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `config'. libtoolize: copying file `config/libtool.m4' libtoolize: copying file `config/ltoptions.m4' libtoolize: copying file `config/ltsugar.m4' libtoolize: copying file `config/ltversion.m4' libtoolize: copying file `config/lt~obsolete.m4' configure.ac:23: installing `config/config.guess' configure.ac:23: installing `config/config.sub' configure.ac:12: installing `config/install-sh' configure.ac:12: installing `config/missing' src/Makefile.am: installing `config/depcomp' $ で、普通に成功。
手順通り、../configure したが、、、 $ mkdir build $ cd build/ $ ../configure checking build number... none checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p .... (中略) checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for fdatasync... yes checking for ppoll... yes checking for boostlib >= 1.34.1... yes checking whether the Boost::Filesystem library is available... yes configure: error: Could not link against ! $ 念のため root ユーザでやったが同じ。さて何だ?
Google に聞くとどうやら libboost-all-dev が足りないときの現象らしい。 正しくは http://noxrepo.org/noxwiki/index.php/Dependencies の依存性リストを見よ、という感じ。 が、Fedora 12 には libboost-all-dev などというパッケージはない。 関連パッケージを探してみてもどれも違う。 http://www.boost.org/doc/libs/1_47_0/more/getting_started/unix-variants.html から libboost を手で入れてみても ./configure の状況は変わらず。 === しかし冷静に見ると、 # rpm -qa | grep boost boost-program-options-1.39.0-9.fc12.x86_64 boost-1.39.0-9.fc12.x86_64 boost-filesystem-1.39.0-9.fc12.x86_64 boost-wave-1.39.0-9.fc12.x86_64 boost-thread-1.39.0-9.fc12.x86_64 boost-system-1.39.0-9.fc12.x86_64 boost-signals-1.39.0-9.fc12.x86_64 boost-devel-1.39.0-9.fc12.x86_64 boost-test-1.39.0-9.fc12.x86_64 boost-graph-1.39.0-9.fc12.x86_64 boost-date-time-1.39.0-9.fc12.x86_64 boost-math-1.39.0-9.fc12.x86_64 boost-serialization-1.39.0-9.fc12.x86_64 boost-regex-1.39.0-9.fc12.x86_64 boost-iostreams-1.39.0-9.fc12.x86_64 boost-python-1.39.0-9.fc12.x86_64 # で、既に boost-filesystem は入っているのだから、 checking for boostlib >= 1.34.1... yes checking whether the Boost::Filesystem library is available... yes というエラーから見ても filesystem は適当なバージョンで入っているのでは?? http://groups.google.com/group/scribe-server/browse_thread/thread/5e5836019418fa7a configure: error: Could not link against ! に、全然違う話だが同じエラーが記載されている。 Jon Schutz / May 5 2010, 8:02 pm I had this a while ago (though on Fedora 12 64 bit). From memory it was because the path to the boost libs was incorrect, and was fixed by giving the appropriate path in the options to configure/bootstrap. Sorry for being vague but hope this gives you something to go on. Check config.log where the error occurred, copy out the C program that failed, and try compiling by hand using the options in the log file. という記事あり。 これってつまり古いパッケージには何かしら間違いがあった、ということか。 それだけなら新しいものに boost 関係を全部買えてしまえば良いのか? nox の configure コマンドにはboost 関連のパス指定をするオプションがある。 --with-boost[=DIR] use boost (default is yes) - it is possible to specify the root directory for boost (optional) --with-boost-filesystem[=special-lib] use the Filesystem library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-filesystem=boost_filesystem-gcc-mt --with-boost-unit-test-framework[=special-lib] use the Unit_Test_Framework library from boost - it is possible to specify a certain library for the linker e.g. --with-boost-unit-test-framework=boost_unit_test_framework-gcc しかし ../configure --with-boost=/home/hoge/boost_1_47_0 などとしてみても状況は同じ。はて? # ../configure --with-boost-filesystem=/home/hoge/boost_1_47_0/stage/lib/lbbioost_filesystem.a でやると、今度はエラーの状況が変わった。 checking for boostlib >= 1.34.1... yes checking whether the Boost::Filesystem library is available... yes checking for exit in -l/home/hoge/boost_1_47_0/stage/lib/lbbioost_filesystem.a... no checking for exit in -lboost_filesystem-/home/hoge/boost_1_47_0/stage/lib/lbbioost_filesystem.a... no configure: error: Could not link against boost_filesystem-/home/hoge/boost_1_47_0/stage/lib/lbbioost_filesystem.a ! というわけでファイルが無いと怒るらしい。 次、 ../configure --with-boost-filesystem=boost_filesystem にするとちょっと先まで進んだ。 checking for boostlib >= 1.34.1... yes checking whether the Boost::Filesystem library is available... yes checking for exit in -lboost_filesystem... yes checking pcap.h usability... yes checking pcap.h presence... yes .... checking whether the Boost::Unit_Test_Framework library is available... yes configure: error: Could not link against boost_filesystem ! # 今度は boost のテストツールか。 ../configure --with-boost-filesystem=boost_filesystem --with-boost-unit-test-framework=boost_unit_test_framework とやると、これで越えた。 (しかしどのディレクトリの libboost_filesystem.a や libboost_unit_test_framework.a を見に行っているかは確信無し。) 今回はとりあえず名前を /home/hoge/boost_1_47_0/stage/lib から適当に選んだだけに過ぎない。はて。
結局前節の ./configure は ../configure --with-boost-filesystem=boost_filesystem --with-boost-unit-test-framework=boost_unit_test_framework とすることで抜けた。 次に make -j 5 としてコンパイル。 が、エラーが出た。現象は以下と同じ。 http://noxrepo.org/pipermail/nox-dev/2011-March/007384.html で、対処としてはここの 3) Manually edit tablog.cc. I count three errors: lines 369, 420, and 426. Each of these calls a function and passes in fs::native as the last argument. I think you can just remove that argument. をそのまま実施。 それで少し進んだけれど、しかし ./builtin/.libs/libbuiltin.so: undefined reference to `boost::filesystem3::detail::dir_itr_close(void*&, void*&)' ./builtin/.libs/libbuiltin.so: undefined reference to `boost::filesystem3::directory_entry::m_get_status(boost::system::error_code*) const' collect2: ld returned 1 exit status となり、リンクでエラー。undefined reference?? これは上の記述の 2) Set the preprocessor macro BOOST_FILESYSTEM_VERSION to 2. が、より適切な解だったと言う事か。 直前の reply に Is this the zaku branch? The first thing I'd try is seeing if the destiny branch works (zaku will have other problems on 10.10 anyway). というのもあり、こりゃ zaku をやめろということか? # BOOST_FILESYSTEM_VERSION=2 # echo $BOOST_FILESYSTEM_VERSION 2 # export BOOST_FILESYSTEM_VERSION # make -j 5 これでも直らなかったので boost を手で入れた(1.47.0)のが悪かったと推定。 http://noxrepo.org/pipermail/nox-dev/2011-March/007384.html には I believe NOX currently works fine with semi-recent versions up to 1.40, and possibly has very minor problems with 1.42 (maybe only on 64 bit?). とあるのでね。(これが正解だった) 手で入れた boost 1.47 には uninstall script がないので、/usr/local/include/boost と /usr/local/lib/libboost* を手で削除して、再度 nox を git から取ってきて build にトライ。 fedora 12 標準の boost は 1.39 なので、たぶん問題ない。 (BOOST_FILESYSTEM_VERSION は unset した) # git clone git://noxrepo.org/nox # cd nox # ./boot.sh # mkdir build # cd build # ../configure --with-boost-filesystem=boost_filesystem --with-boost-unit-test-framework=boost_unit_test_framework (./configure はするっと通る。さすが。) # make -j 5 ..... かなり時間が掛かる。。。。 make[2]: Leaving directory `/home/hoge/nox/build' make[1]: Leaving directory `/home/hoge/nox/build' # うぉ!通った!
http://noxrepo.org/noxwiki/index.php/NOX_Installation の Verify Installation によると、 ・nox 本体はこの build/src 以下にバイナリが出来る ・これは移動不可で、 ・実行もこのディレクトリからでないとだめ ということになっている。ちょっと変わってる。
http://noxrepo.org/noxwiki/index.php/Using_NOX の Using NOX を見ながら作業。
バージョン確認は -V で。zaku (unstable)だった。 # cd /home/hoge/nox/build/src # ./nox_core -V NOX 0.9.0(zaku)~full~beta (nox_core), compiled Jul 19 2011 19:55:26 Compiled with OpenFlow 0x01 #
やはり NOX は build/src ディレクトリから ./nox_core で起動されなければならない、らしい。 # pwd /home/hoge/nox/build/src # ./nox_core -v -i ptcp:6633 00001|nox|INFO:Starting nox_core (/home/hoge/nox/build/src/.libs/lt-nox_core) 00002|kernel|DBG:Assigned a new UUID for the container: 8351905445277066603 00003|pyrt|DBG:Loading a component description file 'nox/coreapps/examples/t/meta.json'. 00004|pyrt|DBG:Loading a component description file 'nox/coreapps/examples/meta.json'. 00005|pyrt|DBG:Loading a component description file 'nox/coreapps/snmp/meta.json'. 00006|pyrt|DBG:Loading a component description file 'nox/coreapps/coretests/meta.json'. 00007|pyrt|DBG:Loading a component description file 'nox/coreapps/messenger/meta.json'. 00008|pyrt|DBG:Loading a component description file 'nox/coreapps/simple_c_py_app/meta.json'. 00009|pyrt|DBG:Loading a component description file 'nox/coreapps/testharness/meta.json'. 00010|pyrt|DBG:Loading a component description file 'nox/coreapps/simple_c_app/meta.json'. 00011|pyrt|DBG:Loading a component description file 'nox/coreapps/hub/meta.json'. 00012|pyrt|DBG:Loading a component description file 'nox/coreapps/pyrt/meta.json'. 00013|pyrt|DBG:Loading a component description file 'nox/coreapps/switch/meta.json'. 00014|pyrt|DBG:Loading a component description file 'nox/netapps/hoststate/meta.json'. 00015|pyrt|DBG:Loading a component description file 'nox/netapps/bindings_storage/t/meta.json'. 00016|pyrt|DBG:Loading a component description file 'nox/netapps/bindings_storage/meta.json'. 00017|pyrt|DBG:Loading a component description file 'nox/netapps/switchstats/meta.json'. 00018|pyrt|DBG:Loading a component description file 'nox/netapps/networkstate/meta.json'. 00019|pyrt|DBG:Loading a component description file 'nox/netapps/routing/meta.json'. 00020|pyrt|DBG:Loading a component description file 'nox/netapps/user_event_log/meta.json'. 00021|pyrt|DBG:Loading a component description file 'nox/netapps/discovery/meta.json'. 00022|pyrt|DBG:Loading a component description file 'nox/netapps/storage/t/meta.json'. 00023|pyrt|DBG:Loading a component description file 'nox/netapps/storage/meta.json'. 00024|pyrt|DBG:Loading a component description file 'nox/netapps/tablog/meta.json'. 00025|pyrt|DBG:Loading a component description file 'nox/netapps/lavi/meta.json'. 00026|pyrt|DBG:Loading a component description file 'nox/netapps/tests/meta.json'. 00027|pyrt|DBG:Loading a component description file 'nox/netapps/route/meta.json'. 00028|pyrt|DBG:Loading a component description file 'nox/netapps/authenticator/meta.json'. 00029|pyrt|DBG:Loading a component description file 'nox/netapps/flow_fetcher/meta.json'. 00030|pyrt|DBG:Loading a component description file 'nox/netapps/topology/meta.json'. 00031|pyrt|DBG:Loading a component description file 'nox/netapps/switch_management/meta.json'. 00032|pyrt|DBG:Loading a component description file 'nox/netapps/data/meta.json'. 00033|pyrt|DBG:Loading a component description file 'nox/webapps/webservice/meta.json'. 00034|pyrt|DBG:Loading a component description file 'nox/webapps/miscws/meta.json'. 00035|pyrt|DBG:Loading a component description file 'nox/webapps/webserver/meta.json'. 00036|nox|DBG:Application installation report: 00037|nox|DBG:python: Current state: INSTALLED Required state: INSTALLED Dependencies: 00038|nox|DBG:built-in DSO deployer: Current state: INSTALLED Required state: INSTALLED Dependencies: 00039|nox|DBG:built-in event dispatcher: Current state: INSTALLED Required state: INSTALLED Dependencies: 00040|openflow|DBG:Passive tcp interface bound to port 6633 00041|nox|INFO:nox bootstrap complete で、止まった。これで動いてるらしい。 telnet で 6633 ポートにつなぐと接続され、サーバ(nox)側に以下のメッセージが出た。 00042|openflow|DBG:Passive tcp interface received connection 00043|nox|WARN:stream: closing connection due to timeout after 5 seconds in sending features request state
MAC learning switch として機能させるにはこんなことをする、と書いてあるが良く分からない、、、 ./nox_core -v -i ptcp:6633 pyswitch と思ったら、どうも pyswitch.py を使って動作する、ということらしい。 ./nox/coreapps/examples/pyswitch.py にファイルあり。 「Using NOX in an Openflow network」に期待したけど、あまり大したことは書いてない。 http://blog.bitmeister.jp/?p=2176 に少し解説あり。 OpenFlowで、なんちゃって負荷分散を実装してみた[NOXインストール編]
# cd /home/hoge/nox/build/src # ./nox_core -v -i ptcp:6633 pyswitch で NOX を単純スイッチとして起動しておく。ログに新たに以下の一行が追加された。これか。 00035|pycomponent|DBG:Importing Python module nox.coreapps.examples.pyswitch pyswitch は接続されたすべての OpenFlow スイッチを単純な L2 MAC learning switch として設定する。 つまり冒頭の図であれば、二台の PC はともに外部(インターネット上)のホストと通信できるようになる。
この状態で ovs-openflowd を起動する。 # ovs-openflowd netdev@br0 --ports=eth0,eth1,eth3 tcp:127.0.0.1 これだけで OpenFlow switch として動作する。 なお br0 は任意の名前で良い。 以下に openflowd 起動時のログを示す。 ・openflowd 側 # ovs-openflowd netdev@br0 --ports=eth0,eth1 tcp:127.0.0.1 Jul 20 11:30:36|00001|openflowd|INFO|Open vSwitch version 1.1.1 Jul 20 11:30:36|00002|openflowd|INFO|OpenFlow protocol version 0x01 Jul 20 11:30:36|00003|ofproto|INFO|using datapath ID 0000002320a43f4a <<< データパス ID (スイッチ ID) Jul 20 11:30:36|00004|rconn|INFO|br0<->tcp:127.0.0.1: connecting... Jul 20 11:30:36|00005|rconn|INFO|br0<->tcp:127.0.0.1: connected Jul 20 11:30:36|00006|ofp_util|WARN|received Nicira extension message of unknown type 8 Jul 20 11:30:36|00007|ofp_util|INFO|normalization changed ofp_match, details: Jul 20 11:30:36|00008|ofp_util|INFO| pre: wildcards=0xffffffff in_port= 0 dl_src=00:00:00:00:00:00 dl_dst=00:00:00:00:00:00 dl_vlan= 0 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 Jul 20 11:30:36|00009|ofp_util|INFO|post: wildcards= 0x23fffff in_port= 0 dl_src=00:00:00:00:00:00 dl_dst=00:00:00:00:00:00 dl_vlan= 0 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 Jul 20 11:52:20|00010|dpif_linux|ERR|Generic Netlink family 'odp_datapath' does not exist. The Open vSwitch kernel module is probably not loaded. <<< この状態でじーっとする ^C <<< 停止してみた # ・NOX 側 openflowd から接続されたときのログ 01748|openflow|DBG:Passive tcp interface received connection 01749|openflow|DBG:stream: negotiated OpenFlow version 0x01 (we support versions 0x01 to 0x01 inclusive, peer no later than version 0x01) 01750|nox|DBG:Success sending in 'sending switch config' 01751|nox|DBG:Success sending in 'receiving features reply' 01752|nox|DBG:Success receiving in 'receiving features reply' 01753|nox|DBG:Success sending in 'receiving ofmp capability reply' 01754|nox|DBG:Success receiving in 'receiving ofmp capability reply' 01755|nox|DBG:Datapath 002320c8bc41 sent error in response to capability reply, assuming no management support 01756|nox|DBG:No switch auth module registered, auto-approving switch 01757|nox|DBG:Registering switch with DPID = 2320c8bc41 << スイッチが通知したデータパス ID 01758|nox.coreapps.examples.pyswitch|INFO:Switch 2320c8bc41 has joined the network 01759|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60) << 1 パケごとにこんなログが出る 01760|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60) 切断したときのログ 01745|openflow|WARN:stream: connection closed by peer 01746|nox|WARN:stream: connection closed by peer 01747|nox.coreapps.examples.pyswitch|INFO:Switch 2320a43f4a has left the network
--help によるコマンド一覧(主要なものだけ) ovs-ofctl: OpenFlow switch management utility usage: ovs-ofctl [OPTIONS] COMMAND [ARG...] For OpenFlow switches: show SWITCH show OpenFlow information dump-desc SWITCH print switch description dump-tables SWITCH print table stats mod-port SWITCH IFACE ACT modify port behavior dump-ports SWITCH [PORT] print port statistics dump-flows SWITCH print all flow entries dump-flows SWITCH FLOW print matching FLOWs dump-aggregate SWITCH print aggregate flow statistics dump-aggregate SWITCH FLOW print aggregate stats for FLOWs queue-stats SWITCH [PORT [QUEUE]] dump queue stats add-flow SWITCH FLOW add flow described by FLOW add-flows SWITCH FILE add flows from FILE mod-flows SWITCH FLOW modify actions of matching FLOWs del-flows SWITCH [FLOW] delete matching FLOWs monitor SWITCH [MISSLEN] print packets received from SWITCH
# ovs-ofctl show br0 OFPT_FEATURES_REPLY (xid=0x1): ver:0x1, dpid:0000002320a43f4a n_tables:2, n_buffers:256 features: capabilities:0x87, actions:0xfff 1(eth1): addr:00:50:43:00:e1:3b, config: 0, state:0 current: 1GB-FD COPPER AUTO_NEG advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG supported: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG 2(eth0): addr:00:50:43:00:e3:47, config: 0, state:0 current: 100MB-FD COPPER AUTO_NEG advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG supported: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG LOCAL(br0): addr:b6:89:66:bd:48:61, config: 0x1, state:0x1 current: 10MB-FD COPPER OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0 #
# ovs-ofctl dump-desc br0 OFPST_DESC reply (xid=0x1): Manufacturer: Nicira Networks, Inc. Hardware: Open vSwitch Software: 1.1.1 Serial Num: None DP Description: None # へええ。ハードが Open vSwitch なのに製造者が Nicira になってる。へええ。
# ovs-ofctl dump-tables br0 OFPST_TABLE reply (xid=0x1): 1 tables 0: classifier: wild=0x3fffff, max=1048576, active=9 lookup=0, matched=0 #
# ovs-ofctl dump-ports br0 OFPST_PORT reply (xid=0x1): 3 ports port 2: rx pkts=33, bytes=5785, drop=0, errs=0, frame=0, over=0, crc=0 << show コマンドで 1, 2 番などがついてる tx pkts=730, bytes=56061, drop=0, errs=0, coll=0 port 65534: rx pkts=0, bytes=0, drop=0, errs=0, frame=0, over=0, crc=0 << これ localport だね。 tx pkts=723, bytes=57908, drop=0, errs=0, coll=0 port 1: rx pkts=718, bytes=55125, drop=0, errs=0, frame=0, over=0, crc=0 tx pkts=39, bytes=6253, drop=0, errs=0, coll=0 #
# ovs-ofctl dump-flows br0 NXST_FLOW reply (xid=0x4): # この時はフローがなかった。ので ping bakkers.gr.jp (61.194.20.172) をやって再び dump-flows を実行。 # ovs-ofctl dump-flows br0 NXST_FLOW reply (xid=0x4): cookie=0x0, duration=5.382s, table_id=0, n_packets=1, n_bytes=238, idle_timeout=5,udp,in_port=1,vlan_tci=0x0000,dl_src=00:16:01:71:79:ea,dl_dst=00:03:47:89:8f:e5,nw_src=192.168.12.1,nw_dst=192.168.12.47,tp_src=53,tp_dst=42413 actions=output:2 cookie=0x0, duration=5.427s, table_id=0, n_packets=1, n_bytes=86, idle_timeout=5,udp,in_port=2,vlan_tci=0x0000,dl_src=00:03:47:89:8f:e5,dl_dst=00:16:01:71:79:ea,nw_src=192.168.12.47,nw_dst=192.168.12.1,tp_src=42413,tp_dst=53 actions=output:1 cookie=0x0, duration=5.483s, table_id=0, n_packets=5, n_bytes=490, idle_timeout=5,icmp,in_port=2,vlan_tci=0x0000,dl_src=00:03:47:89:8f:e5,dl_dst=00:16:01:71:79:ea,nw_src=192.168.12.47,nw_dst=61.194.20.172,icmp_type=8,icmp_code=0 actions=output:1 cookie=0x0, duration=5.429s, table_id=0, n_packets=5, n_bytes=490, idle_timeout=5,icmp,in_port=1,vlan_tci=0x0000,dl_src=00:16:01:71:79:ea,dl_dst=00:03:47:89:8f:e5,nw_src=61.194.20.172,nw_dst=192.168.12.47,icmp_type=0,icmp_code=0 actions=output:2 cookie=0x0, duration=5.485s, table_id=0, n_packets=1, n_bytes=180, idle_timeout=5,udp,in_port=1,vlan_tci=0x0000,dl_src=00:16:01:71:79:ea,dl_dst=00:03:47:89:8f:e5,nw_src=192.168.12.1,nw_dst=192.168.12.47,tp_src=53,tp_dst=46475 actions=output:2 # これってつまり DNS の UDP と ICMP のそれぞれ往復が記録されているんだな。 ovs-ofctl dump-flows br0 icmp などとマッチングパターンを指定して取ってくることも出来る模様。 ところでこのテーブル、あっというまに消える。厄介だ。
# ovs-ofctl dump-aggregate br0 NXST_AGGREGATE reply (xid=0x4): packet_count=0 byte_count=0 flow_count=0 # という感じ。これ、ping している間に何度か繰り返してみる。 NXST_AGGREGATE reply (xid=0x4): packet_count=7 byte_count=868 flow_count=5 << カウントされた NXST_AGGREGATE reply (xid=0x4): packet_count=11 byte_count=1260 flow_count=5 << 追加されている模様 NXST_AGGREGATE reply (xid=0x4): packet_count=16 byte_count=1568 flow_count=2 << まだ追加。このあたりで ping を停止したところ、 NXST_AGGREGATE reply (xid=0x4): packet_count=0 byte_count=0 flow_count=0 << あっというまにゼロになる。あれれえ。 フローカウントが無くなるタイミングをよく見ないと駄目だなあ。
ping によるフローテーブルへの追加については NOX 側にほとんどログが出ない。 が、expire はどうやら出るらしい。 01790|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60) 01791|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60) 01792|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60) 01793|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60) 01794|openflow-event|DBG:received flow expired event from 002320c8bc41 01795|openflow-event|DBG:received flow expired event from 002320c8bc41 01796|openflow-event|DBG:received flow expired event from 002320c8bc41 01797|openflow-event|DBG:received flow expired event from 002320c8bc41 01798|openflow-event|DBG:received flow expired event from 002320c8bc41 01799|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60) 01800|openflow-event|DBG:received packet-in event from 002320c8bc41 (len:60)
以上で NOX をインストールし、Open vSwitch と連携させた L2 switch の動作確認ができた。