2012年7月12日木曜日

OpenFlow環境をつくってみた(NOX,Mininet編)

前回OpenFlow環境をつくった際に使用したMininet VM imageにNOXが入っていることや、Tutorialにもその辺りの記述があるのに気づきました。
今回は、Mininet VM imageにinstallされているものだけで、OpenFlowコントローラー(NOX)、OpenFlowスイッチ(Mininet)を準備します。
前回の説明と重複する部分がありますが、ご容赦ください。

Mininet VM imageの準備
  1. MininetのVM imageをDL
    こちらを参考にMininetのVM imageをDLします。
  2. VirtualBoxのinstall
    こちらからOS X用をDL
  3. VirtualBoxにて、VMを新規作成
    こちらを参考に、VM新規作成後、HDDイメージとして、上記1でDLしたvmdx fileを指定。
  4. VirtualBoxにて当該VM imageを選択し、設定をクリック。
    ネットワークを選択し、ネットワーク設定を実施(今回はブリッジとして、Wi-fiを選択)
  5. VirtualBoxにて当該VMを起動、login
    ID:openflow
    PW:openflow
  6. /sbin/ifconfig eth0 にて、VM側のIPを確認
    (defaultではDHCPになっているので必要に応じて、static IPを設定してください。こちらが参照になります)
  7. Macからssh接続。
    上記6で確認したIPに対して、ターミナルからssh接続します。
    MAC$ ssh -X openflow@192.168.*.*         #VMのIPを指定。
                                                                       #X windowを利用できるように-Xを指定
    openflow@192.168.*.*'s password:          #default PW:openflow 
    Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
    
     * Documentation:  https://help.ubuntu.com/
    New release '12.04 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.
    
    Last login: Thu Jul 12 07:02:00 2012
    openflow@mininet-vm:~$                            #VMにlogin
    



OpenFlowコントローラーの起動

  1. こちらを参考に、noxの起動
  2. openflow@mininet-vm:~$ cd ~/noxcore/build/src/
    openflow@mininet-vm:~/noxcore/build/src$ sudo ./nox_core -v -i ptcp: pytutorial
    00001|nox|INFO:Starting nox_core (/home/openflow/noxcore/build/src/.libs/lt-nox_core)
    00002|nox|INFO:nox bootstrap complete
    


OpenFlowスイッチの起動
  1. こちらを参考に、Mininetを起動。スイッチ:s1に、ホスト:h2,h3,4を接続。
    nodes,netコマンドで、node情報、接続情報を確認。
    pingallコマンドで、h2,h3,h4間でpingが通ることを確認。
    例として、h2 ifconfigコマンドにて、特定hostにてlinuxコマンドを実行。
    MAC$ ssh -X openflow@192.168.*.*
    openflow@192.168.*.*'s password: 
    Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
    
     * Documentation:  https://help.ubuntu.com/
    New release '12.04 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.
    
    Last login: Thu Jul 12 07:08:56 2012 from 192.168.115.139
    openflow@mininet-vm:~$ sudo mn --topo single,3 --mac --switch ovsk --controller remote
    *** Loading openvswitch_mod
    *** Adding controller
    *** Creating network
    *** Adding hosts:
    h2 h3 h4 
    *** Adding switches:
    s1 
    *** Adding links:
    (s1, h2) (s1, h3) (s1, h4) 
    *** Configuring hosts
    h2 h3 h4 
    *** Starting controller
    *** Starting 1 switches
    s1 
    *** Starting CLI:
    mininet> nodes
    available nodes are: 
    h4 h3 h2 s1 c0
    mininet> net
    s1 <-> h2-eth0 h3-eth0 h4-eth0
    mininet> pingall
    *** Ping: testing ping reachability
    h2 -> h3 h4 
    h3 -> h2 h4 
    h4 -> h2 h3 
    *** Results: 0% dropped (0/6 lost)
    mininet> h2 ifconfig
    h2-eth0   Link encap:Ethernet  HWaddr 00:00:00:00:00:02  
              inet addr:10.0.0.2  Bcast:10.255.255.255  Mask:255.0.0.0
              inet6 addr: fe80::200:ff:fe00:2/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:32 errors:0 dropped:0 overruns:0 frame:0
              TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:2344 (2.3 KB)  TX bytes:1028 (1.0 KB)
    
    mininet> 
    
これで、とりあえずOpenFlowコントローラーとスイッチが起動できました。

GUIコマンドの実行
MininetのHPに掲載されているGUIコマンドを試してみます。
  • consoles.py
    MAC$ssh -X openflow@192.168.*.*
    openflow@192.168.*.*'s password: 
    Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
    
     * Documentation:  https://help.ubuntu.com/
    New release '12.04 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.
    
    Last login: Thu Jul 12 07:27:10 2012 from 192.168.115.139
    openflow@mininet-vm:~$ cd mininet/examples/
    openflow@mininet-vm:~/mininet/examples$ pwd
    /home/openflow/mininet/examples
    openflow@mininet-vm:~/mininet/examples$ sudo ./consoles.py 
    *** Adding controller
    *** Creating network
    *** Adding hosts:
    h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 
    *** Adding switches:
    s17 s18 s19 s20 s21 
    *** Adding links:
    (h1, s18) (h2, s18) (h3, s18) (h4, s18) (h5, s19) (h6, s19) (h7, s19) (h8, s19) (h9, s20) (h10, s20) (h11, s20) (h12, s20) (h13, s21) (h14, s21) (h15, s21) (h16, s21) (s17, s18) (s17, s19) (s17, s20) (s17, s21) 
    *** Configuring hosts
    h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 
    *** Starting controller
    *** Starting 5 switches
    s17 s18 s19 s20 s21 
    上記コマンドによって、新たにhost16台、スイッチ5台が作成されます。
    (先のMininetコマンドにて作成した構成を利用する方法はこれから調べます。。。)
    h1にてping 10.0.0.2(host2のIP)、h2にてifconfigを実行しています。
  • miniedit.py
    openflow@mininet-vm:~/mininet/examples$ pwd
    /home/openflow/mininet/examples
    openflow@mininet-vm:~/mininet/examples$ ls
    baresshd.py     hwintf.py           README             tree1024.py
    consoles.py     linearbandwidth.py  scratchnet.py      treeping64.py
    controllers.py  miniedit.py         scratchnetuser.py
    emptynet.py     multitest.py        sshd.py
    openflow@mininet-vm:~/mininet/examples$ sudo ./miniedit.py 
    下記のような画面が起動するので、スイッチ、hostを描いて、線で接続します。
    (しかし、この後の起動のさせ方はわかりませんでした。。。)


    今回は、Mininet VM imageに含まれるアプリのみで、OpenFlowコントローラー、スイッチを起動してみました。また、GUIコマンドもいくつか起動してみました。

    次回からはいよいよ、コマンド詳細を調べて、複雑な構成・設定を試していきたいと思います。

このエントリーをはてなブックマークに追加