OpenFlow/OpenFlow Tutorial 2 †Open Flow Tutorialのように Wireshark を用いて OpenFlow パケットの表示と OpenFlow パケット表示 †OpenFlow 解析プラグインをインストールした Wireshark を使用することで、 $ sudo wireshark Wireshark を起動して loopback インタフェースのパケットをキャプチャーします。 $ controller ptcp: この時 Wireshark のキャプチャーウィンドウを見ると、コントローラーとスイッチがどのようなやり取りをしているかが分かります。
mininet 環境の場合はすべてのパケットは localhost 経由でやり取りされるため、IP アドレスでは送信元を特定できません。 of && (of.type != 3) && (of.type != 2) この段階ではフローテーブルには何も入っていません。 $ dpctl dump-flows tcp:127.0.0.1:6634 stats_reply (xid=0x7a3fc29b): flags=none type=1(flow) mininet のプロンプトで ping を打ちます。 mininet> h1 ping -c1 h2 PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data. 64 bytes from 10.0.0.2: icmp_req=1 ttl=64 time=4.43 ms --- 10.0.0.2 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 4.431/4.431/4.431/0.000 ms Wireshark のキャプチャーウィンドウには以下のように新しいメッセージが表示されます。
ここでフローテーブルを確認すると、以下のようにコントローラーによってエントリーが足されているのがわかります。 $ dpctl dump-flows tcp:127.0.0.1:6634 stats_reply (xid=0x342f8af7): flags=none type=1(flow) cookie=0, duration_sec=18s, duration_nsec=654000000s, table_id=0, priority=65535, n_packets=1, n_bytes=98, idle_timeout=60,hard_timeout=0,icmp,in_port=2,dl_vlan=0xffff,dl_vlan_pcp=0x00,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0x00,icmp_type=0,icmp_code=0,actions=output:1 cookie=0, duration_sec=18s, duration_nsec=655000000s, table_id=0, priority=65535, n_packets=1, n_bytes=98, idle_timeout=60,hard_timeout=0,icmp,in_port=1,dl_vlan=0xffff,dl_vlan_pcp=0x00,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0x00,icmp_type=8,icmp_code=0,actions=output:2 cookie=0, duration_sec=13s, duration_nsec=650000000s, table_id=0, priority=65535, n_packets=1, n_bytes=42, idle_timeout=60,hard_timeout=0,arp,in_port=1,dl_vlan=0xffff,dl_vlan_pcp=0x00,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_proto=2,actions=output:2 cookie=0, duration_sec=18s, duration_nsec=656000000s, table_id=0, priority=65535, n_packets=1, n_bytes=42, idle_timeout=60,hard_timeout=0,arp,in_port=2,dl_vlan=0xffff,dl_vlan_pcp=0x00,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_proto=2,actions=output:1 cookie=0, duration_sec=13s, duration_nsec=653000000s, table_id=0, priority=65535, n_packets=1, n_bytes=42, idle_timeout=60,hard_timeout=0,arp,in_port=2,dl_vlan=0xffff,dl_vlan_pcp=0x00,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_proto=1,actions=output:1 以上が Passive モードでの OpenFlow を Passive モードで使用した場合の動作例です。 スイッチの種類による性能差 †mn コマンドで mininet 環境を起動する際、--switch オプションで指定するスイッチによって $ sudo mn --topo single,3 --mac --switch ovsk --controller remote mininet> iperf *** Iperf: testing TCP bandwidth between h1 and h3 *** Results: ['514 Mbits/sec', '517 Mbits/sec'] 平均して 300〜500 Mbps のスループットが出ます。 $ sudo mn --topo single,3 --mac --switch user --controller remote mininet> iperf *** Iperf: testing TCP bandwidth between h1 and h3 *** Results: ['88.9 Mbits/sec', '89.2 Mbits/sec'] パケットがユーザー空間-カーネル空間の移動を何度か行わなければならず |