OpenFlowをXenServerで試してみよう


                北瀬公彦 @kkitase
               kkitase@gmail.com
何故シトリックスがOpenFlowを語る?
• ONF (Open Network Foundation)がOpenFlowを推進している
• CitrixはONFの一員
• ハイパーバイザーの仮想スイッチでOpenFlowに対応しているスイッチは
  Citrix® XenServer®のみ!!
• OpenFlowネットワークを構築する際に、使用するハイパーバイザーの最有
  力候補はXenServer!!




“Citrix Systems”
用語の整理
• OpenFlow
   – スイッチのコントロールパスとデータパスを分断し、フロー単位での経路制御
     を実現する為の技術
• OpenFlow switch
   – OpenFlow対応のスイッチ(仮想スイッチ、物理スイッチ)
• Open vSwitch
   – オープンソースのOpenFlow対応の仮想スイッチ
   – http://www.openvswitch.org
• NOX
   – オープンソースのOpenFlowコントローラ
   – http://noxrepo.org/wp/
• vSwitch
   – XenServerのOpenFlow対応仮想スイッチ
• vSwitch Controller
   – XenServerのOpenFlow対応仮想スイッチを制御するOpenFlowコン
     トローラ
XenServer vSwitch / Controller        NOX 0.9.5 build 3697ベース http://noxrepo.org/wp
                                      GUI等をカスタマイズ
アーキテクチャー                              NetFlow対応済み、sFlow対応は今後予定
                                      Default user “admin”




                                 openvswitch--
                                 ‐1.1.0pre1--
                                 ‐69.1914 ベース
Open vSwitch daemon
• ovs-vswitchd
   – Daemon that manages and controls any number of OVS switches on
     the host.
• ovs-xenserverd
   – Open vSwitch daemon for XenServer specific functionality
• ovsdb-server
   – usage: ovsdb-server [OPTIONS] DATABASE
   – where DATABASE is a database file in ovsdb format (JSON)
• ovs−brcompatd
   – Bridge compatibility front-end for ovs−vswitchd
• ovs−controller
   – Simple OpenFlow controller reference implementation
• ovs−discover
   – OpenFlow controller discovery utility
• ovs−openflowd
   – Implements an OpenFlow switch using a flow-based datapath
OpenFlow スイッチ                                        コントローラー
OpenFlow 仮想スイッチ



 sw Secure
    Channel


 hw   Flow
      Table

                   XenServer


                                           OpenFlow物理スイッチ

              参考: The Stanford Clean Slate Program: http://cleanslate.stanford.edu
フローテーブルエントリー
    Rule            Action             Stats

                                              Packet + byte counters


                        1.   Forward packet to port(s)
                        2.   Encapsulate and forward to controller
                        3.   Drop packet
                        4.   Send to normal processing pipeline

 Switch   MAC      MAC        Eth     VLAN        IP          IP          IP          TCP        TCP
  Port    src      dst       type      ID         Src         Dst        Prot        sport      dport
+ mask
                                             The Stanford Clean Slate Program http://cleanslate.stanford.edu
                OpenFlow White Paper: http://www.openflow.org/documents/openflow-wp-latest.pdf
                    OpenFlow Spec: http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf
Wireshark plugin




参考: http://www.openflow.org/wp/2008/08/openflow-dissector-released-as-wireshark-plugin/
  インストール方法: http://www.openflow.org/wk/index.php/OpenFlow_Wireshark_Dissector
1. XenServerをインストール
  - 5.6 SP2の場合
  http://www.citrix.com/lang/English/lp/lp_1688615.asp
         インストールした後に、仮想スイッチをOpenFlow対応スイッチに変更
         xe-switch-network-backend openvswitch
         xe host-list params=software-version
  - 6.0ベータの場合
  http://www.citrix.com/xenserver/beta


2. XenCenterをインストール
  http://www.citrix.co.jp/products/pdf/Step_By_Step_XenCenter_Download.pdf


3. vSwitch Controllerの設定
  -コントローラを触りたい場合、評価ライセンスが必要です。
  http://www.citrix.co.jp/products/pdf/Step_By_Step_XenServer_Platinum_Download.pdf
  http://www.citrix.co.jp/products/pdf/Step_By_Step_XenServer_Activation.pdf
XenCenter




    1. vSwitch Controllerをインポート
    2. IPやhost名等を設定する
    3. 起動後に表示されるURLにアクセス
コントローラにアクセスしたところ
Resource Poolを追加
ACLを設定してみる
コマンドでコントロールしてみよう



                   http://openvswitch.org/cgi-bin/ovsman.cgi




  ovs−appctl − utility for configuring running Open vSwitch daemons
  ovs−ofctl − administer OpenFlow switches
  ovs−vsctl − utility for querying and configuring ovs−vswitchd
                           注 ovsコマンドはXenServerで現状は正式サポートされていません
XenServer (Dom 0)に接続
     仮想スイッチの確認とか・・
     ovsコマンド野確認とか・・              # xe host-list params=software-version
                                 ... network_backend: openvswitch




# ovs-ofctl –V
Ovs-ofctl (Open vSwitch) 1.0.2
Flowテーブルの確認、設定
# ovs-ofctl
コントローラでGUIよりACLを設定した後、コマンドでどのようにFlow
Tableに設定されたか確認




ovs-ofctl dump-flowsでFlowテーブルを確認
# ovs-ofctl dump-flows xapi4 | grep drop
.., table_id=1, priority=32763, n_packets=0, n_bytes=0,
     tcp,dl_dst=86:43:b2:1a:f2:d0,nw_dst=10.12.45.151,tp_src=80,actions=drop,
     cookie=0x0, duration_sec=171s, duration_nsec=25000000ns, table_id=1,
     priority=65529, n_packets=15, n_bytes=930,
     tcp,in_port=4,dl_src=86:43:b2:1a:f2:d0,nw_src=10.12.45.78,tp_dst=80,actions=drop

ovs-ofctl add-flowやmod-flowでFlowテーブルを操作
                                       注 ovsコマンドはXenServerで現状は正式サポートされていません
仮想スイッチの管理コマンド
#ovs-vsctl
仮想スイッチにぶら下がっているポートの確認
[root@xs203 ~]# ovs-vsctl list-ports xapi11
vif30.0
[root@xs203 ~]# ovs-vsctl list-ports xenbr0
eth0
vif28.0
vif29.0
vif32.0




                         注 ovsコマンドはXenServerで現状は正式サポートされていません
仮想スイッチと設定の確認
#ovs-appctl
ボンディングの設定の確認
# ovs-appctl bond/list
bridge    bond     slaves
Xapi2     bond1   eth4, eth5
Xapi4     bond0   eth2, eth1

MACアドレスとvLANの表示
# ovs-appctl fdb/show xenbr0
 port VLAN MAC                   Age
    1     0 42:79:df:c1:4d:15     53
    1     0 1a:fb:07:c3:86:dd     37
    1     0 66:78:6f:d3:e5:b2      3
    1     0 00:17:0f:ad:c9:c0      1
    1     0 00:00:0c:07:ac:01      1
    1     0 00:17:0f:ad:ca:c0      1
    0     0 00:24:e8:c7:0f:30      1
    2     0 c6:3c:f4:ea:b3:f4      1


                               注 ovsコマンドはXenServerで現状は正式サポートされていません
ログレベルの確認、設定
#ovs-appctl
#ovs-appctl vlog/list
                 console          syslog      file
                 -------          ------      ------
bridge            EMER              ERR         INFO
vswitchd          EMER              ERR         INFO
xenserver         EMER              ERR         INFO
ofproto           EMER              ERR         INFO

# ovs-appctl vlog/set vswitchd:file:dbg
vlog/set MODULE[:FACILITY[:LEVEL]]
• Modules: bridge, vswitchd,sflow,openflow, etc.
• Facility: Console, Syslog, File, any
• Level: Emer, Err, Info, warn, dbg

ログファイルを確認する時は、/var/log 以下のログを確認する
• /var/log/openvswitch/ovsdb-server.log
• /var/log/openvswitch/ovs-vswitchd.log
• /var/log/xensource.log

詳しくはhelpで
# ovs-appctl –help                    注 ovsコマンドはXenServerで現状は正式サポートされていません
クロスホストプライベートネットワーク
• 異なるXenServer上で起動しているVM間でプライベートネットワークを共有
  – XenServer Advanced Edition以上
  – vSwitch と vSwitch Controllerが必要
  – XenCenterより、クロスホストプライベートネットワークを設定
ご清聴ありがとうございました

OpenFlowをXenServerで試してみよう

  • 1.
    OpenFlowをXenServerで試してみよう 北瀬公彦 @kkitase kkitase@gmail.com
  • 2.
    何故シトリックスがOpenFlowを語る? • ONF (OpenNetwork Foundation)がOpenFlowを推進している • CitrixはONFの一員 • ハイパーバイザーの仮想スイッチでOpenFlowに対応しているスイッチは Citrix® XenServer®のみ!! • OpenFlowネットワークを構築する際に、使用するハイパーバイザーの最有 力候補はXenServer!! “Citrix Systems”
  • 3.
    用語の整理 • OpenFlow – スイッチのコントロールパスとデータパスを分断し、フロー単位での経路制御 を実現する為の技術 • OpenFlow switch – OpenFlow対応のスイッチ(仮想スイッチ、物理スイッチ) • Open vSwitch – オープンソースのOpenFlow対応の仮想スイッチ – http://www.openvswitch.org • NOX – オープンソースのOpenFlowコントローラ – http://noxrepo.org/wp/ • vSwitch – XenServerのOpenFlow対応仮想スイッチ • vSwitch Controller – XenServerのOpenFlow対応仮想スイッチを制御するOpenFlowコン トローラ
  • 4.
    XenServer vSwitch /Controller NOX 0.9.5 build 3697ベース http://noxrepo.org/wp GUI等をカスタマイズ アーキテクチャー NetFlow対応済み、sFlow対応は今後予定 Default user “admin” openvswitch-- ‐1.1.0pre1-- ‐69.1914 ベース
  • 5.
    Open vSwitch daemon •ovs-vswitchd – Daemon that manages and controls any number of OVS switches on the host. • ovs-xenserverd – Open vSwitch daemon for XenServer specific functionality • ovsdb-server – usage: ovsdb-server [OPTIONS] DATABASE – where DATABASE is a database file in ovsdb format (JSON) • ovs−brcompatd – Bridge compatibility front-end for ovs−vswitchd • ovs−controller – Simple OpenFlow controller reference implementation • ovs−discover – OpenFlow controller discovery utility • ovs−openflowd – Implements an OpenFlow switch using a flow-based datapath
  • 6.
    OpenFlow スイッチ コントローラー OpenFlow 仮想スイッチ sw Secure Channel hw Flow Table XenServer OpenFlow物理スイッチ 参考: The Stanford Clean Slate Program: http://cleanslate.stanford.edu
  • 7.
    フローテーブルエントリー Rule Action Stats Packet + byte counters 1. Forward packet to port(s) 2. Encapsulate and forward to controller 3. Drop packet 4. Send to normal processing pipeline Switch MAC MAC Eth VLAN IP IP IP TCP TCP Port src dst type ID Src Dst Prot sport dport + mask The Stanford Clean Slate Program http://cleanslate.stanford.edu OpenFlow White Paper: http://www.openflow.org/documents/openflow-wp-latest.pdf OpenFlow Spec: http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf
  • 8.
    Wireshark plugin 参考: http://www.openflow.org/wp/2008/08/openflow-dissector-released-as-wireshark-plugin/ インストール方法: http://www.openflow.org/wk/index.php/OpenFlow_Wireshark_Dissector
  • 9.
    1. XenServerをインストール - 5.6 SP2の場合 http://www.citrix.com/lang/English/lp/lp_1688615.asp インストールした後に、仮想スイッチをOpenFlow対応スイッチに変更 xe-switch-network-backend openvswitch xe host-list params=software-version - 6.0ベータの場合 http://www.citrix.com/xenserver/beta 2. XenCenterをインストール http://www.citrix.co.jp/products/pdf/Step_By_Step_XenCenter_Download.pdf 3. vSwitch Controllerの設定 -コントローラを触りたい場合、評価ライセンスが必要です。 http://www.citrix.co.jp/products/pdf/Step_By_Step_XenServer_Platinum_Download.pdf http://www.citrix.co.jp/products/pdf/Step_By_Step_XenServer_Activation.pdf
  • 10.
    XenCenter 1. vSwitch Controllerをインポート 2. IPやhost名等を設定する 3. 起動後に表示されるURLにアクセス
  • 11.
  • 12.
  • 13.
  • 14.
    コマンドでコントロールしてみよう http://openvswitch.org/cgi-bin/ovsman.cgi ovs−appctl − utility for configuring running Open vSwitch daemons ovs−ofctl − administer OpenFlow switches ovs−vsctl − utility for querying and configuring ovs−vswitchd 注 ovsコマンドはXenServerで現状は正式サポートされていません
  • 15.
    XenServer (Dom 0)に接続 仮想スイッチの確認とか・・ ovsコマンド野確認とか・・ # xe host-list params=software-version ... network_backend: openvswitch # ovs-ofctl –V Ovs-ofctl (Open vSwitch) 1.0.2
  • 16.
    Flowテーブルの確認、設定 # ovs-ofctl コントローラでGUIよりACLを設定した後、コマンドでどのようにFlow Tableに設定されたか確認 ovs-ofctl dump-flowsでFlowテーブルを確認 #ovs-ofctl dump-flows xapi4 | grep drop .., table_id=1, priority=32763, n_packets=0, n_bytes=0, tcp,dl_dst=86:43:b2:1a:f2:d0,nw_dst=10.12.45.151,tp_src=80,actions=drop, cookie=0x0, duration_sec=171s, duration_nsec=25000000ns, table_id=1, priority=65529, n_packets=15, n_bytes=930, tcp,in_port=4,dl_src=86:43:b2:1a:f2:d0,nw_src=10.12.45.78,tp_dst=80,actions=drop ovs-ofctl add-flowやmod-flowでFlowテーブルを操作 注 ovsコマンドはXenServerで現状は正式サポートされていません
  • 17.
    仮想スイッチの管理コマンド #ovs-vsctl 仮想スイッチにぶら下がっているポートの確認 [root@xs203 ~]# ovs-vsctllist-ports xapi11 vif30.0 [root@xs203 ~]# ovs-vsctl list-ports xenbr0 eth0 vif28.0 vif29.0 vif32.0 注 ovsコマンドはXenServerで現状は正式サポートされていません
  • 18.
    仮想スイッチと設定の確認 #ovs-appctl ボンディングの設定の確認 # ovs-appctl bond/list bridge bond slaves Xapi2 bond1 eth4, eth5 Xapi4 bond0 eth2, eth1 MACアドレスとvLANの表示 # ovs-appctl fdb/show xenbr0 port VLAN MAC Age 1 0 42:79:df:c1:4d:15 53 1 0 1a:fb:07:c3:86:dd 37 1 0 66:78:6f:d3:e5:b2 3 1 0 00:17:0f:ad:c9:c0 1 1 0 00:00:0c:07:ac:01 1 1 0 00:17:0f:ad:ca:c0 1 0 0 00:24:e8:c7:0f:30 1 2 0 c6:3c:f4:ea:b3:f4 1 注 ovsコマンドはXenServerで現状は正式サポートされていません
  • 19.
    ログレベルの確認、設定 #ovs-appctl #ovs-appctl vlog/list console syslog file ------- ------ ------ bridge EMER ERR INFO vswitchd EMER ERR INFO xenserver EMER ERR INFO ofproto EMER ERR INFO # ovs-appctl vlog/set vswitchd:file:dbg vlog/set MODULE[:FACILITY[:LEVEL]] • Modules: bridge, vswitchd,sflow,openflow, etc. • Facility: Console, Syslog, File, any • Level: Emer, Err, Info, warn, dbg ログファイルを確認する時は、/var/log 以下のログを確認する • /var/log/openvswitch/ovsdb-server.log • /var/log/openvswitch/ovs-vswitchd.log • /var/log/xensource.log 詳しくはhelpで # ovs-appctl –help 注 ovsコマンドはXenServerで現状は正式サポートされていません
  • 20.
    クロスホストプライベートネットワーク • 異なるXenServer上で起動しているVM間でプライベートネットワークを共有 – XenServer Advanced Edition以上 – vSwitch と vSwitch Controllerが必要 – XenCenterより、クロスホストプライベートネットワークを設定
  • 21.