Trema での Open vSwitch

13,309 views
13,144 views

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
13,309
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
118
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Trema での Open vSwitch

  1. 1. Tremaでの Open vSwitch Trema開発チーム 鈴木一哉 (@countone) 2012/4/7Page 1
  2. 2. Agenda▐ Tremaとは▐ ネットワークエミュレーション  機能概要  使用例  仮想スイッチ  仮想ホスト  仮想リンク▐ まとめ▐ おまけ : kernel-mode 版openvswitchとtremaを接続してみる Page 2
  3. 3. Trema 概要▐ Trema : C/Ruby でコントローラ開発をするためのフレームワーク  開発が容易 : 洗練された API, テストのためのネットワークエミュ レータ  多くのサンプルアプリ  GPLv2 Page 3
  4. 4. ネットワークエミュレーション機能概要▐ 試験用の OpenFlow ネットワークを、開発マシン内に構築する機 能  仮想スイッチ : openvswitch (userspace) を使用  仮想ホスト : phost (trema original) を使用  仮想リンク : Linux の Virtual ethernet device を使用Page 4
  5. 5. 使用例▐ ./trema run ./mycontroller.rb –c ./network.conf network.conf vswitch("sw1") { routing switch datapath_id "0x1" } trema vswitch("sw2") { datapath_id "0x2" } host1 sw1 sw2 host2 vhost ("host1") vhost ("host2") link "host1", "sw1" link "sw1", "sw2" 開発マシン内で動作 link "sw2", "host2" Page 5
  6. 6. 仮想リンクの設定▐ 仮想リンク  Linux の Virtual ethernet device を使用▐ trema 上から仮想リンクを設定するコード  https://raw.github.com/trema/trema/develop/ruby/trema/link.rb  sudo ip link add name trema0-0 type veth peer name trema0-1Page 6
  7. 7. 仮想スイッチの起動▐ 仮想スイッチ  Userspace で動作する test-openflowd (ver 1.2.2) を使用▐ trema から openvswitch を起動するコード  https://raw.github.com/trema/trema/develop/ruby/trema/open- vswitch.rb  sudo ./test-openflowd netdev@ofs0 tcp:127.0.0.1:6633 --ports=trema0-0,trema1-0 --datapath-id=0000000000000001 --unixctl=/tmp/ofs0.ctl &Page 7
  8. 8. 仮想ホストの起動▐ 仮想ホスト  Userspace で動作する仮想ホストデーモン phost (Trema 同梱) を使用▐ Trema から phost を起動するコード  https://raw.github.com/trema/trema/develop/ruby/trema/phost.rb  sudo ./phost –i trema0-0 –D &Page 8
  9. 9. まとめ▐ Tremaのネットワークエミュレーション機能  開発したコントローラを「すぐ動かしてみる」ための機能です  仮想スイッチとしてuserspaceで動作するopenvswitchを使用していま す。▐ ネットワークエミュレーション機能のTrema内部での実現方法に ついて紹介しました。Page 9
  10. 10. おまけ : kernel-mode 版openvswitchとtremaを接続してみる routing switch trema Secure Channel link0-1 link1-0 ofs0 ofs1 link0-0 link1-1 link2-1 link2-0 ofs2 Page 10
  11. 11. openvswitchのインストール▐ ./configure --with-linux=/lib/modules/`uname -r`/build▐ make▐ make install▐ insmod datapath/linux/openvswitch.ko▐ mkdir -p /usr/local/etc/openvswitch▐ ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema Page 11
  12. 12. 仮想リンクの設定▐ ip link add name link0-1 type veth peer name link1-0▐ ip link add name link1-1 type veth peer name link2-0▐ ip link add name link2-1 type veth peer name link0-0▐ ifconfig link0-0 up▐ ifconfig link0-1 up▐ ifconfig link1-0 up▐ ifconfig link1-1 up▐ ifconfig link2-0 up▐ ifconfig link2-1 up Page 12
  13. 13. openvswitchの起動▐ ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --pidfile --detach▐ ovs-vsctl --no-wait init▐ ovs-vswitchd --pidfile --detach Page 13
  14. 14. openvswitchの設定▐ ovs-vsctl add-br ofs0▐ ovs-vsctl add-port ofs0 link0-0▐ ovs-vsctl add-port ofs0 link0-1▐ ovs-vsctl set-controller ofs0 tcp:127.0.0.1:6633▐ ovs-vsctl set bridge ofs0 other-config:datapath- id=0000000000000010▐ ofs1, ofs2 についても同様に設定 Page 14
  15. 15. openvswitchの状態確認▐ ovs-vsctl list-br ofs0▐ ovs-vsctl list-ports ofs0 link0-0link0-1▐ ovs-vsctl get-controller ofs0 tcp:127.0.0.1:6633▐ ovs-vsctl get bridge ofs0 other-config {datapath-id="0000000000000010"} Page 15
  16. 16. trema routing switchの起動▐ gitclone https://github.com/trema/trema.git▐ ./trema/build.rb▐ gitclone https://github.com/trema/apps.git▐ (cd apps/topology/; make)▐ (cd apps/routing_switch/; make)▐ ./trema/trema run -c ./apps/routing_switch/routing_switch_null.conf -d Page 16
  17. 17. Description の取得▐ (cd apps/show_description/; make)▐ TREMA_HOME=./trema ./apps/show_description/show_descriptionManufacturer description: Nicira Networks, Inc.Hardware description: Open vSwitchSoftware description: 1.4.0Serial number: NoneHuman readable description of datapath: NoneDatapath ID: 0x10Port no: 2(0x2)(Port up) Hardware address: e6:26:c9:98:52:eb Port name: link0-0... Page 17
  18. 18. Topology の検出▐ TREMA_HOME=./trema ./apps/topology/show_topologyvswitch {datapath_id "0x11"}vswitch {datapath_id "0x10"}vswitch {datapath_id "0x12"}link "0x11", "0x10"link "0x12", "0x11"link "0x12", "0x10" Page 18

×