2014年3月6日木曜日

OpenFlow Mininetのトポロジーをカスタマイズしてみる2

以前、Mininetのトポロジーのカスタマイズという事で、仮想ホストのIPアドレスの割り当てをしました。
今回は仮想ホストのmacアドレスを任意のmacアドレスにしてみたいと思います。

Mininetのトポロジーで仮想ホストのIPアドレスを指定する場合、ホストの追加を以下のように書きました。

h1 = net.addHost('h1', ip='192.168.2.10/24')

任意のmacアドレスを設定する場合は、この部分の記述を少し変えてあげます。

h1 = net.addHost('h1', mac='aa:aa:aa:aa:aa:01', ip='192.168.2.10/24')

この例は仮想ホスト「h1」は、macアドレスが「aa:aa:aa:aa:aa:01」でIPアドレスが「192.168.2.10」のインターフェイスが設定されることになります。

以前作ったトポロジーにmacアドレスの設定を追加してみます。
ホスト1のmacアドレスは「aa:aa:aa:aa:aa:01」を設定します。
ホスト2のmacアドレスは「aa:aa:aa:aa:aa:02」を設定します。

(topo_test.py)
#!/usr/bin/env python

from mininet.net import Mininet
from mininet.cli import CLI
from mininet.link import Link

if '__main__' == __name__:

    net = Mininet()

    c1 = net.addController('c1')
    s1 = net.addSwitch('s1')
    h1 = net.addHost('h1', mac='aa:aa:aa:aa:aa:01',ip='192.168.100.1/24')
    h2 = net.addHost('h2', mac='aa:aa:aa:aa:aa:02',ip='192.168.100.2/24')

    #Link( h1, s1)
    #Link( h2, s1)
    h1.linkTo(s1)
    h2.linkTo(s1)

    net.start()
    CLI(net)
    net.stop()

このようになります。
気を付けるのは、macアドレスの先頭から8bit目は0にする事です。
I/Gビットにあたる部分のようです。

参考:http://itpro.nikkeibp.co.jp/article/COLUMN/20070829/280708/

あと、ネットワーク接続の記述の部分で、別の記述方法があるみたいなのでを少し変えてみました。
こういう書き方もできるみたいです。

    #Link( h1, s1)
    #Link( h2, s1)
    h1.linkTo(s1)
    h2.linkTo(s1)


実行して確認してみます。

$ sudo python topo_test.py
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0
c1
mininet> dump
<Host h1: h1-eth0:192.168.100.1 pid=20973>
<Host h2: h2-eth0:192.168.100.2 pid=20974>
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=20966>
<Controller c1: 127.0.0.1:6633 pid=20958>
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
mininet> h1 ifconfig
h1-eth0   Link encap:Ethernet  HWaddr aa:aa:aa:aa:aa:01
          inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::a8aa:aaff:feaa:aa01/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:658 (658.0 B)  TX bytes:838 (838.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

mininet> h2 ifconfig
h2-eth0   Link encap:Ethernet  HWaddr aa:aa:aa:aa:aa:02
          inet addr:192.168.100.2  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::a8aa:aaff:feaa:aa02/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:658 (658.0 B)  TX bytes:838 (838.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

mininet> exit


ホスト1のmacアドレスが「aa:aa:aa:aa:aa:01」、ホスト2は「aa:aa:aa:aa:aa:02」になりました。

以上です。

0 件のコメント:

コメントを投稿