動作確認・能力試験

Axiomtek社製 NA-812A にセットした Open vSwitch 1.4 の動作確認・転送能力試験をする。
iperf による試験では 940Mbps を安定して出しており、CPU 負荷も低く良好な結果が得られた。


動作環境

以下に設定したスイッチの状態を示す。

# ovs-ofctl show br0
OFPT_FEATURES_REPLY (xid=0x1): ver:0x1, dpid:0000000000000012
n_tables:255, n_buffers:256
features: capabilities:0xc7, actions:0xfff
 1(eth1): addr:00:60:e0:51:6c:04
     config:     0
     state:      LINK_DOWN
     current:    COPPER AUTO_NEG
     advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
     supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
 2(eth2): addr:00:60:e0:51:6c:05
     config:     0
     state:      0
     current:    100MB-FD COPPER AUTO_NEG
     advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
     supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
....(snip)....
 LOCAL(br0): addr:00:60:e0:51:6c:04
     config:     PORT_DOWN
     state:      LINK_DOWN
OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0
#

# ovs-vsctl show
44469118-c2e7-4956-b985-7bcb0a23b20b
    Bridge "br0"
        Controller "tcp:192.168.12.20"
            is_connected: true
        Port "eth2"
            Interface "eth2"
        Port "br0"
            Interface "br0"
                type: internal
        Port "eth4"
            Interface "eth4"  順不同
....(snip).....
        Port "eth3"
            Interface "eth3"
#

# ovs-dpctl show
system@br0:
	lookups: hit:2163192 missed:44759 lost:15
	flows: 0
	port 0: br0 (internal)
	port 1: eth1    このコマンドでは順どおりに出る   
	port 2: eth2
	port 3: eth3
	port 4: eth4
	port 5: eth5
[root@localhost ~]# 

動作前の注意

実際の稼働時には対象インタフェイスがすべて ifconfig up してあることに注意。 down であってもただ動作しないだけで何もエラーは出ない。
modprobe openvswitch_mod する必要がある点も注意。 自動ロードには /etc/modprobe.d/ 以下に bridge.conf でも作ればいいが、どのみち実験用で自動起動で困る場合もあるので手作業のままとする。

動作確認

今回は ovs-controller による単純 L2 lerning bridge として機能させているだけなので、単に eth1 - eth5 ポートのいずれかに二台のマシンを接続して ping などすれば良い。 念のために初期状態では下記のようにフローテーブルの中身が空であることを確認する。

# ovs-ofctl dump-flows br0
NXST_FLOW reply (xid=0x4):
#

ping テストの後は、例えば以下のようになっている。

# ovs-ofctl dump-flows br0
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=3.146s, table=0, n_packets=2, n_bytes=196, idle_timeout=5,icmp,in_port=2,vlan_tci=0x0000,dl_src=00:08:74:23:5c:50,dl_dst=00:0a:e4:2e:b8:41,nw_src=192.168.12.201,nw_dst=192.168.12.202,icmp_type=0,icmp_code=0 actions=output:3
 cookie=0x0, duration=2.147s, table=0, n_packets=1, n_bytes=98, idle_timeout=5,icmp,in_port=3,vlan_tci=0x0000,dl_src=00:0a:e4:2e:b8:41,dl_dst=00:08:74:23:5c:50,nw_src=192.168.12.202,nw_dst=192.168.12.201,icmp_type=8,icmp_code=0 actions=output:2
#

この環境では arp を飛ばさないようにしているので icmp しか出ていないが、通常は arp なども残っているはず。 デフォルトでは idle_timeout が 5 になっているので、パケットが 5 秒間来ない時間があればフロー情報は消えてしまう点に注意。

能力試験

iperf (http://sourceforge.net/projects/iperf/) による転送テストを行った。 対向している二台のMacintosh (共に 1Gbps インタフェイス)の一方で iperf -s としてサーバモードで起動、他方で iperf -c 192.168.1.xx のように相手を指定して TCP による転送テストを行う。

# iperf -c 192.168.12.3
------------------------------------------------------------
Client connecting to 192.168.12.3, TCP port 5001
TCP window size:  129 KByte (default)
------------------------------------------------------------
[  3] local 192.168.12.6 port 63119 connected with 192.168.12.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   940 Mbits/sec
#

10秒間の転送試験で安定して 940Mbps だった。 シングルストリーム、長大パケットであるとは言え、CPU もほぼアイドル状態だった。 カーネルモジュールが効率良く機能していると思える。


以上で Open vSwitch 1.4 をインストールし、テストする準備ができた。



Yutaka Yasuda (yasuda [ at ] ylb.jp)