20130724004230

馬鹿の考え休むに似たり

コマンド復唱と挙動の確認に昨日のL2フォワードを少し弄ってみる。

root@box:~# ovs-vsctl show
a66779ff-0224-40ef-89f1-0deb21b939db
    Bridge "br0"
        Controller "tcp:192.168.254.100"
        Port "br0"
            Interface "br0"
                type: internal
        Port "eth0"
            Interface "eth0"
        Port "eth1"
            Interface "eth1"
        Port "eth2"
            Interface "eth2"

こんな感じのものを3つほど用意。コントローラ無しでもPingが通ります。

さて今回はコントローラでL3のフォワーディングを実行。これも通ります。

# ./pox.py forwarding.l3_learning
POX 0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.
INFO:core:POX 0.1.0 (betta) is up.
INFO:openflow.of_01:[00-00-ab-f3-41-02 1] connected
INFO:openflow.of_01:[00-ab-05-d3-88-00 2] connected
INFO:openflow.of_01:[00-00-ab-05-5d-02 3] connected
INFO:packet:(dhcp parse) warning DHCP packet data too short to parse header: data len 86
INFO:forwarding.l3_learning:2884845826 2 RE-learned 0.0.0.0
INFO:forwarding.l3_learning:2869255426 2 RE-learned 192.168.0.10
INFO:forwarding.l3_learning:2884845826 2 RE-learned 192.168.0.30
....
...
..
.
^CINFO:core:Going down...
INFO:openflow.of_01:[00-00-ab-f3-41-02 1] disconnected
INFO:openflow.of_01:[00-ab-05-d3-88-00 2] disconnected
INFO:openflow.of_01:[00-00-ab-05-5d-02 3] disconnected
INFO:core:Down.

ところでこれはハブ/スイッチっぽい動作ですが、今日実行したものはL3フォワードによる疎通。ひょっとしてループ状にしてもブロードキャストストーム的な事が起こらないのではないだろうか?ということで以下のようなトポロジにしてみます。

ifconfig eth0 down; ifconfig eth1 down; ifconfig eth2 down;
ovs-vsctl init
ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
ovs-vsctl add-port br0 eth2
ovs-vsctl set-controller br0 tcp:192.168.254.100

//3台整ったら
ifconfig eth0 up; ifconfig eth1 up; ifconfig eth2 up;

同じIPを何度も学習してPOXが落ちました。

ERROR:core:Exception while handling OpenFlowNexus!PacketIn...
Traceback (most recent call last):
  File "/root/pox/pox/lib/revent/revent.py", line 234, in raiseEventNoErrors
    return self.raiseEvent(event, *args, **kw)
  File "/root/pox/pox/lib/revent/revent.py", line 281, in raiseEvent
    rv = event._invoke(handler, *args, **kw)
  File "/root/pox/pox/lib/revent/revent.py", line 159, in _invoke
    return handler(self, *args, **kw)
  File "/root/pox/pox/forwarding/l3_learning.py", line 201, in _handle_PacketIn
    "input port" % (dpid, inport, str(dstaddr)))
TypeError: not all arguments converted during string formatting

うーん、いい考えと思ったのですが駄目みたいですね。インターフェイスを落とさないとループしましたし、PC1とPC2 (タイミングによる) だけ応答が出来る等不安定でしたし・・・まだサンプル動かして喜んでる程度では奇抜な事は出来なさそうです。


Posted by uso8000k | Categories: Tech | [ツィート(笑)] | [2013/07/24/T00_42_30/]