Your SlideShare is downloading. ×
  • Like
Trema での Open vSwitch
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Trema での Open vSwitch

  • 11,800 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
11,800
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
115
Comments
0
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tremaでの Open vSwitch Trema開発チーム 鈴木一哉 (@countone) 2012/4/7Page 1
  • 2. Agenda▐ Tremaとは▐ ネットワークエミュレーション  機能概要  使用例  仮想スイッチ  仮想ホスト  仮想リンク▐ まとめ▐ おまけ : kernel-mode 版openvswitchとtremaを接続してみる Page 2
  • 3. Trema 概要▐ Trema : C/Ruby でコントローラ開発をするためのフレームワーク  開発が容易 : 洗練された API, テストのためのネットワークエミュ レータ  多くのサンプルアプリ  GPLv2 Page 3
  • 4. ネットワークエミュレーション機能概要▐ 試験用の OpenFlow ネットワークを、開発マシン内に構築する機 能  仮想スイッチ : openvswitch (userspace) を使用  仮想ホスト : phost (trema original) を使用  仮想リンク : Linux の Virtual ethernet device を使用Page 4
  • 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. 仮想リンクの設定▐ 仮想リンク  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. 仮想スイッチの起動▐ 仮想スイッチ  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. 仮想ホストの起動▐ 仮想ホスト  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. まとめ▐ Tremaのネットワークエミュレーション機能  開発したコントローラを「すぐ動かしてみる」ための機能です  仮想スイッチとしてuserspaceで動作するopenvswitchを使用していま す。▐ ネットワークエミュレーション機能のTrema内部での実現方法に ついて紹介しました。Page 9
  • 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. 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. 仮想リンクの設定▐ 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. 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. 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. 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. 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. 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. 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