VMWare Serverで、OpenFlowの環境を作ってみた[2/2]

VMWare Serverを使ってOpenFlowの環境を作ってみる前回の記事の続き。
大まかな手順で示した、VMのコピーからです。

大まかな手順

  1. VM作成(前回済み)
  2. OpenFlowインストール(前回済み)
  3. VMコピー
  4. 設定&動作確認

目標とするネットワーク(再掲)

異なるネットワークに接続する3つのHostを一つのSwitchを経由して通信できるようにします。
普通のスイッチングハブならハードウェアでやってしまうので意識することはありませんが、ここではソフトウェアのSwitchをソフトウェアのControllerで制御して、スイッチングハブと同様の動作をさせます。
Host、Switch、Controllerはそれぞれ別のVMで起動し、ControllerとSwitchの間と、HostとSwitchの間は仮想ネットワークで接続します。
ControllerとSwitchのソフトウェアにはOpenFlow付属のものを使用します。

VMで作るOpenFlowネットワーク

VMで作るOpenFlowネットワーク

手順(続き)

  1. VMをコピー
  2. 今回はSwitchのVMを作成しますが、SwitchのVMは前回(手順2で)作成したControllerのVMをコピーして作成します。

    1. VMWare Serverが起動するホストOS上のVMのあるディレクトリ(“/var/lib/vmware/Virtual Machines/”)にて、手順2で作成したVMをディレクトリごとコピー
    2. $ sudo cp -r OpenFlow01 OpenFlow02
      
    3. VM名を変更
    4. コピーしたVMの設定ファイル(*.vmx)を編集し、VM名を変える。

      $ sudo vi OpenFlow02/OpenFlow01.vmx
      

      OpenFlow01.vmxの

      displayName = "OpenFlow01"
      

      displayName = "OpenFlow02"
      

      に変更

    5. VMWare ServerのWeb Access画面からVirtual Machine – Add Virtual Machine to Inventory を選び、”OpenFlow02″にある”OpenFlow01.vmx”を選択
    6. VMの追加

      VMの追加

    7. コピーしたVMのホスト名を変更
    8. VMを起動すると、VMをコピーしたかどうか聞かれるので、「コピーしました」を選んでください。

      VMコピー

      VMコピー


      ホスト名を変更するには/etc/hostnameと/etc/hostsを編集して、”OpenFlow01″とある箇所を”OpenFlow02″として、再起動してください。

      $ sudo vi /etc/hostname
      $ sudo vi /etc/hosts
      $ sudo shutdown -r now
      
    9. Hostの作成、コピー
    10. Hostは手順1に従ってUbuntu11.04 desktopのVMを一つ作って、上記手順を参考に作成したVMをコピーして、合計3つのHostを作成してください。
      ただし、VMのメモリは512MBでよいです。(VMWare Serverが起動するPCのスペックによりますが、VMのメモリが大きすぎると全部のHostが同時に起動できなくなります。)
      なお、HostにOpenFlowをインストールする必要はありません。

  3. 設定
  4. すべてのVMをシャットダウンしてから以下の設定をおこなって下さい。

    説明のため、仮想ネットワークの名前を仮に以下とします。

    仮想ネットワーク名 Network Adapter
    仮想ネットワーク1 HostOnly
    仮想ネットワーク2 HostOnly (2)
    仮想ネットワーク3 HostOnly (3)
    仮想ネットワーク4 HostOnly (4)

    VMの設定を次のようにしてください。

    Role VM名 Network Adapter
    Controller OpenFlow01 HostOnly
    Switch OpenFlow02 HostOnly
    HostOnly (2)
    HostOnly (3)
    HostOnly (4)
    Host1 OpenFlowHost1 HostOnly (2)
    Host2 OpenFlowHost2 HostOnly (3)
    Host3 OpenFlowHost3 HostOnly (4)

    VMのNetwork Adapterは、VMWare ServerのWeb Access画面からVMを選択し、Summary – Network Adapter を選んで変更してください。
    なお、Switchは複数のNetwork Adapterが必要なので、”Add Hardware”でNetwork Adapterを追加する必要があります。

    NetworkAdapterの設定

    NetworkAdapterの設定

    VMWare Serverが動作するホストOS上で、仮想ネットワークに使用するHostOnly接続やNAT接続用のdhcpが起動しているので、killしてください。

    $ sudo killall vmnet-dhcpd
    

    dhcpを停止させた後、すべてのVMを起動し、各ネットワークアダプターに次のIPアドレスを設定してください。

    Role VM名 Network Adapter IPアドレス
    Controller OpenFlow01 HostOnly 192.168.1.1/24
    Switch OpenFlow02 HostOnly 192.168.1.2/24
    HostOnly (2) no ip address
    HostOnly (3) no ip address
    HostOnly (4) no ip address
    Host1 OpenFlowHost1 HostOnly (2) 192.168.2.1/24
    Host2 OpenFlowHost2 HostOnly (3) 192.168.2.2/24
    Host3 OpenFlowHost3 HostOnly (4) 192.168.2.3/24
    UbuntuのIPアドレス設定

    UbuntuのIPアドレス設定

    IPアドレスを設定した後、ControllerとSwitch間でpingが通ること、いずれのHostからも他のどこにもpingが通らないことを確認してください。

  5. 動作確認
  6. Controllerを起動:OpenFlow01にて以下を実行

    $ sudo controller ptcp:6633 -v
    

    Switchを起動:OpenFlow02にて2つの異なるターミナルで以下を実行

    $ sudo ofdatapath punix:/var/run/dp0.sock -i eth1,eth2,eth3 -v --no-local-port
    
    $ sudo ofprotocol unix:/var/run/dp0.sock tcp:192.168.1.1:6633 -v --out-of-band
    

    Host間でpingが通ることを確認:OpenFlowHost1にて以下を実行し、Host間でpingが通ることを確認

    $ ping 192.168.2.2
    $ ping 192.168.2.3
    

    VM上で動作するControllerとSwitch

    VM上で動作するControllerとSwitch

おわりに

最後までお付き合いいただきありがとうございます。
今回は普通のスイッチングハブでできることしかやっていないので、「結局、OpenFlowで何ができるの?」と疑問に思っている方がいらっしゃると思います。
OpenFlowはControllerでパケットの制御が(プログラミングできれば)自由に行えるのが特徴で、Controllerを適切に作ることで、VLAN機能やNAT機能なんかも(たぶん)できます。
が、実際に動いているのを見ないとどんなことができるのかイメージできないと思いますので、次回はこの環境をベースに、なんちゃって負荷分散を行うControllerを作ってみます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*