« OpenFlowスイッチ(Open vSwitch)の性能測定 | トップページ | OpenFlow性能測定 (第3弾) »

2013年2月12日 (火)

OpenFlowスイッチ(Open vSwitch)の性能測定 (続編)

前回の性能テストで OpenFlow スイッチを経由することによる TCP, UDP の性能の低下を確認できなかったので、今度は全パケットを OpenFlow コントローラを経由するようにして測定してみました。
今回のテスト環境では以下の構成です:Photo
OpenFlow スイッチとコントローラを直結しじゃまが一切入らないようにしました。

前回同様に iperf コマンドを用いて測定し、ホスト1(192.168.0.1)をサーバ、ホスト2(192.168.0.2)をクライアントとして動かしています。以下の出力結果はすべて 192.168.0.2 側で採取したものです。

測定結果は、UDP ではほとんど変わりませんが、TCP では劇的に 95M → 5M と性能が悪化しています。

テスト中、OpenFlow コントローラ側にて top コマンドを実行し CPU のアイドル時間を眺めていたのですが UDP の時は 30% ぐらいまで落ち込むのに対して、TCP の時は 70% ぐらいにしかならず暇してました。

これはどう解釈したらよいのでしょう?

Tremaで実行したコード:

class RepeaterHubPacketInOut < Controller
  def packet_in( datapath_id, message )
    send_packet_out(
      datapath_id,
      :packet_in => message,
      :actions => ActionOutput.new( OFPP_FLOOD )
    )
  end
end

(1) Ping

$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=2.91 ms
64 bytes from 192.168.0.1: icmp_req=2 ttl=64 time=2.58 ms
64 bytes from 192.168.0.1: icmp_req=3 ttl=64 time=2.80 ms
64 bytes from 192.168.0.1: icmp_req=4 ttl=64 time=2.69 ms
64 bytes from 192.168.0.1: icmp_req=5 ttl=64 time=2.40 ms
^C
--- 192.168.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 2.407/2.680/2.912/0.184 ms

(2) TCP
3回実行しています。平均すると 5.62Mbits/sec

$ iperf -c 192.168.0.1
------------------------------------------------------------
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.2 port 54052 connected with 192.168.0.1 port 5001
[ ID] Interval	     Transfer	  Bandwidth
[  3]  0.0-10.5 sec  7.00 MBytes  5.61 Mbits/sec
$ iperf -c 192.168.0.1
------------------------------------------------------------
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.2 port 54053 connected with 192.168.0.1 port 5001
[ ID] Interval	     Transfer	  Bandwidth
[  3]  0.0-10.3 sec  7.38 MBytes  6.03 Mbits/sec
$ iperf -c 192.168.0.1
------------------------------------------------------------
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.2 port 54054 connected with 192.168.0.1 port 5001
[ ID] Interval	     Transfer	  Bandwidth
[  3]  0.0-10.4 sec  6.50 MBytes  5.23 Mbits/sec

(3) UDP

$ iperf -c 192.168.0.1 -u -b 100M
------------------------------------------------------------
Client connecting to 192.168.0.1, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.2 port 59215 connected with 192.168.0.1 port 5001
[ ID] Interval	     Transfer	  Bandwidth
[  3]  0.0-10.0 sec   114 MBytes  95.7 Mbits/sec
[  3] Sent 81410 datagrams
[  3] Server Report:
[  3]  0.0-10.1 sec   114 MBytes  95.0 Mbits/sec   0.037 ms   15/81409 (0.018%)
[  3]  0.0-10.1 sec  1 datagrams received out-of-order

« OpenFlowスイッチ(Open vSwitch)の性能測定 | トップページ | OpenFlow性能測定 (第3弾) »

OpenFlow」カテゴリの記事

Trema」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: OpenFlowスイッチ(Open vSwitch)の性能測定 (続編):

« OpenFlowスイッチ(Open vSwitch)の性能測定 | トップページ | OpenFlow性能測定 (第3弾) »

最近のトラックバック

無料ブログはココログ