SlideShare a Scribd company logo
Tremaでの Open vSwitch


               Trema開発チーム
              鈴木一哉 (@countone)
                   2012/4/7




Page 1
Agenda

▐ Tremaとは
▐ ネットワークエミュレーション
         機能概要
         使用例
         仮想スイッチ
         仮想ホスト
         仮想リンク
▐ まとめ
▐ おまけ : kernel-mode 版openvswitchとtremaを接続してみる




 Page 2
Trema 概要

▐ Trema : C/Ruby でコントローラ開発をするためのフレームワーク
      開発が容易 : 洗練された API, テストのためのネットワークエミュ
       レータ
      多くのサンプルアプリ
      GPLv2




 Page 3
ネットワークエミュレーション機能概要

▐ 試験用の OpenFlow ネットワークを、開発マシン内に構築する機
  能
     仮想スイッチ : openvswitch (userspace) を使用
     仮想ホスト : phost (trema original) を使用
     仮想リンク : Linux の Virtual ethernet device を使用




Page 4
使用例

▐ ./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
仮想リンクの設定

▐ 仮想リンク
     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-1




Page 6
仮想スイッチの起動

▐ 仮想スイッチ
     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
仮想ホストの起動

▐ 仮想ホスト
     Userspace で動作する仮想ホストデーモン phost (Trema 同梱) を使用

▐ Trema から phost を起動するコード
     https://raw.github.com/trema/trema/develop/ruby/trema/phost.rb

     sudo ./phost –i trema0-0 –D &




Page 8
まとめ

▐ Tremaのネットワークエミュレーション機能
     開発したコントローラを「すぐ動かしてみる」ための機能です
     仮想スイッチとしてuserspaceで動作するopenvswitchを使用していま
      す。

▐ ネットワークエミュレーション機能のTrema内部での実現方法に
  ついて紹介しました。




Page 9
おまけ : 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
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
仮想リンクの設定

▐ 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
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
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
openvswitchの状態確認

▐ ovs-vsctl list-br
   ofs0
▐ ovs-vsctl list-ports ofs0
   link0-0
link0-1
▐ ovs-vsctl get-controller ofs0
   tcp:127.0.0.1:6633
▐ ovs-vsctl get bridge ofs0 other-config
   {datapath-id="0000000000000010"}




 Page 15
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
Description の取得

▐ (cd apps/show_description/; make)
▐ TREMA_HOME=./trema ./apps/show_description/show_description

Manufacturer description: Nicira Networks, Inc.
Hardware description: Open vSwitch
Software description: 1.4.0
Serial number: None
Human readable description of datapath: None
Datapath ID: 0x10
Port no: 2(0x2)(Port up)
  Hardware address: e6:26:c9:98:52:eb
  Port name: link0-0
...




 Page 17
Topology の検出

▐ TREMA_HOME=./trema ./apps/topology/show_topology
vswitch {
datapath_id "0x11"
}

vswitch {
datapath_id "0x10"
}

vswitch {
datapath_id "0x12"
}

link "0x11", "0x10"
link "0x12", "0x11"
link "0x12", "0x10"

 Page 18

More Related Content

KEY
OpenvswitchでVPS
PDF
Open vSwitchソースコードの全体像
PDF
OpenFlowをXenServerで試してみよう
PDF
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
PPTX
initとプロセス再起動
ODP
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
PPTX
Hello, systemd
PDF
Lagopus as open flow hybrid switch 実践編
OpenvswitchでVPS
Open vSwitchソースコードの全体像
OpenFlowをXenServerで試してみよう
動的ネットワークパス構築と連携したエッジオーバレイ帯域制御
initとプロセス再起動
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
Hello, systemd
Lagopus as open flow hybrid switch 実践編

What's hot (20)

PDF
Free bsd jail入門
PDF
仮想化環境での利用者公平性
PPTX
ラズパイ2で動く Docker PaaSを作ってみたよ
PDF
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
PPTX
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
PDF
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
PDF
OpenvSwitchのモニタリングと管理機能
KEY
Lxc on cloud
PDF
FreeBSD jail+vnetと戯れた話
PDF
Ethernetの受信処理
PDF
Lagopus 0.2
PDF
OSvの概要と実装
PDF
10GbE時代のネットワークI/O高速化
PDF
Lxc cf201207-presen
PDF
UEFI時代のブートローダ
PDF
Lagopus, raw socket build
PDF
DPDKを拡張してみた話し
PDF
Infinite Debian - Platform for mass-producing system every second
ODP
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
PDF
systemdを始めよう
Free bsd jail入門
仮想化環境での利用者公平性
ラズパイ2で動く Docker PaaSを作ってみたよ
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
OpenvSwitchのモニタリングと管理機能
Lxc on cloud
FreeBSD jail+vnetと戯れた話
Ethernetの受信処理
Lagopus 0.2
OSvの概要と実装
10GbE時代のネットワークI/O高速化
Lxc cf201207-presen
UEFI時代のブートローダ
Lagopus, raw socket build
DPDKを拡張してみた話し
Infinite Debian - Platform for mass-producing system every second
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
systemdを始めよう
Ad

Similar to Trema での Open vSwitch (20)

PPTX
VPP事始め
PDF
配布用Beginnerならきっと役立つmaster slave環境
PPTX
FD.io VPP事始め
PDF
Ansible npstudy-shtsuchi
PDF
VlanManagerを使ってみた
PDF
「さくらのクラウド」におけるVyattaの活用事例
PDF
JOSUG 9th Study
PDF
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
PDF
Cloud stack徹底入門7章 20130514
PDF
Mellanox Vxlan offload Performance on linux
KEY
Openvswitch vps 20120429資料
PDF
Hadoop on LXC
PDF
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
PDF
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
PDF
もしCloudStackのKVMホストでPCIパススルーできるようになったら
PDF
「Docker +VLAN 環境」アプリケーション実行環境の構築
PDF
20140612_Docker上でCloudStackを動かしてみる!!
PDF
Pacemaker+DRBDでHAクラスタを作る
PDF
Apache cloudstack4.0インストール
KEY
P2Pって何?
VPP事始め
配布用Beginnerならきっと役立つmaster slave環境
FD.io VPP事始め
Ansible npstudy-shtsuchi
VlanManagerを使ってみた
「さくらのクラウド」におけるVyattaの活用事例
JOSUG 9th Study
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Cloud stack徹底入門7章 20130514
Mellanox Vxlan offload Performance on linux
Openvswitch vps 20120429資料
Hadoop on LXC
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
もしCloudStackのKVMホストでPCIパススルーできるようになったら
「Docker +VLAN 環境」アプリケーション実行環境の構築
20140612_Docker上でCloudStackを動かしてみる!!
Pacemaker+DRBDでHAクラスタを作る
Apache cloudstack4.0インストール
P2Pって何?
Ad

Trema での Open vSwitch

  • 1. Tremaでの Open vSwitch Trema開発チーム 鈴木一哉 (@countone) 2012/4/7 Page 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-1 Page 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-0 link0-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_description Manufacturer description: Nicira Networks, Inc. Hardware description: Open vSwitch Software description: 1.4.0 Serial number: None Human readable description of datapath: None Datapath ID: 0x10 Port 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_topology vswitch { datapath_id "0x11" } vswitch { datapath_id "0x10" } vswitch { datapath_id "0x12" } link "0x11", "0x10" link "0x12", "0x11" link "0x12", "0x10" Page 18