SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
Lagopus as OpenFlow
Hybrid Switch
Dec 8, 2015
Masaru OKI @masaru0714
OpenFlow?
● 受信したパケットを、「フローエントリ」に書かれた条件に従って(エントリの指示によっ
ては加工し)送信する、という一連の機能について定めた仕様
● OpenFlowの機能を持ったスイッチをOpenFlow switchと呼ぶ
● OpenFlow switchの制御にはOpenFlow Protocolが使われる
OpenFlow switch
Flow Table
OpenFlow
Controller
OpenFlow Protocol
Flow entry
パケット
Hybrid switch?
● OpenFlowスイッチと、いわゆる従来のパケット処理が組み合わさったもの
● 組み合わせ方についてはベンダー次第
● OpenFlow仕様では、OFPP_NORMALにoutputすると従来の処理に渡される
● standaloneモードに設定されていれば、コントローラと未接続の時も従来の処理
● いわゆる従来の処理とは: ブリッジ、ルーティング等
OpenFlow switch Legacy Protocol
(bridge, router, …)
1
2
3
NORMAL
Lagopus
● Intel DPDKを利用しマルチコア・マルチスレッドで動作するOpenFlowスイッチ。
● DPDKは、パケット送受信するNICをLinuxの制御下から奪い取って動作する。
● よって、Lagopusでパケット送受信している様子をtcpdumpなどで観察できない。
● ipコマンドを使ってlink up, downなどの操作もできない。
● brctlなどでブリッジにDPDKポートを追加することもできない。
Linux kernel
eth2 eth3
DPDK apps (i.e. Lagopus)
NIC1 NIC2 NIC3 NIC4
port0 port1
eth0 eth1
いわゆる従来の処理をどう用意するか
まじめにブリッジ処理・ルーティング処理を実装する
● MACアドレス学習し、学習したポートへ転送
● 学習されてないアドレス宛の場合flooding
● ルーティングの場合ARP, ICMP, ルーティングテーブルなど多数の機能実装が必要
カーネルに任せる
● 丸投げ。
第一段階: 丸投げの実装
● /dev/net/tun (OSによりパスが異なる)をopenしてioctlすればtapが作られる
● tapインタフェースにデータを書き込み→kernelからみるとパケット受信
● kernelからパケット送信→tapインタフェースからデータを読める
● Lagopusが扱う(DPDK)ポートと1:1でtapインタフェースを作成
● tapインタフェースをLinux bridgeにつなげばOFPP_NORMALのブリッジ完成
Linux kernel
tap0 tap1
Lagopus
NIC1 NIC2
port0 port1
eth0 eth1
Linux bridge
tapの応用: ホワイトボックススイッチの方法
Cumulus Linuxでは、
● 物理スイッチのポートに対応するダミーのインタフェースを用意しておく
● ダミーのインタフェースに対してipコマンドを使用すると、
switchdがそれを検知して、物理スイッチのポートに対して設定を行う
これと似たようなことができるのではないだろうか?
Linux kernel
eth2 eth3
switchd
port0 port1 port2 port3
eth0 eth1
Switch ASIC
2.検知ipコマンド 1.設定
3.設定
同様の手段がとれるか考えてみる
● Lagopus interfaceと1:1対応のtap interfaceを用意する
● netlink socketを使ってtap interfaceに対する操作を監視
● tap interfaceがlink downされたらLagopus interfaceをdown
● tap interfaceがlink upされたらLagopus interfaceをup
実現できそう?
Linux kernel
tap0 tap1
Lagopus
NIC1 NIC2
port0 port1
eth0 eth1
ipコマンド
1.設定
2.検知
3.設定
第二段階: 自前のL2bridge実装
● tapを用意せずともブリッジ動作が実現できる
● が、tapはtapで利用価値がある
● 全パケットをtapにコピーして送るとtcpdumpできる
○ コピーは重いので、リファレンスカウントを +1する
● MACやIPアドレスからkernelが取捨選択して適宜通信できる
Linux kernel
tap0 tap1
Lagopus
NIC1 NIC2
port0 port1
eth0 eth1
転送
tcpdumpなど
転送
実装状況
● tapインタフェースの作成: 完了
● tapインタフェースを使ったパケットの送受信: 完了
○ lagopusを経由してpingがとおります
● 自前L2bridge: 動き始めている
TODO
● netlinkを使ったtapインタフェース操作の監視とLagopusへの動作反映: これから
● tapについてLinux以外ではまだ実装できていない
● 転送性能も未確認
近日リリース予定……です!

Weitere ähnliche Inhalte

Was ist angesagt?

Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkMasaru Oki
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchMasaru Oki
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
LagopusとvagrantMasaru Oki
 
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Masaru Oki
 
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Masaru Oki
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用kazuyas
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケットTakaaki Hoyo
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会slankdev
 
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)hiroshi oshiba
 
Using rump on NetBSD 7.0
Using rump on NetBSD 7.0Using rump on NetBSD 7.0
Using rump on NetBSD 7.0Masaru Oki
 
仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNet仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNetAkira Yokokawa
 
Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo yuki-f
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)Masaru Oki
 
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!Akira Yokokawa
 
2013 summercamp 06
2013 summercamp 062013 summercamp 06
2013 summercamp 06openrtm
 

Was ist angesagt? (20)

Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitch
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
Lagopusとvagrant
 
Lagopus 0.2
Lagopus 0.2Lagopus 0.2
Lagopus 0.2
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
 
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
 
Using rump on NetBSD 7.0
Using rump on NetBSD 7.0Using rump on NetBSD 7.0
Using rump on NetBSD 7.0
 
the study of monit
the study of monitthe study of monit
the study of monit
 
仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNet仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNet
 
Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
 
Openflow実験
Openflow実験Openflow実験
Openflow実験
 
2013 summercamp 06
2013 summercamp 062013 summercamp 06
2013 summercamp 06
 

Andere mochten auch

Net bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfNet bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfMasaru Oki
 
GPD WINが来た!
GPD WINが来た!GPD WINが来た!
GPD WINが来た!Masaru Oki
 
Lagopus match improvements
Lagopus match improvementsLagopus match improvements
Lagopus match improvementsMasaru Oki
 
Lagopus+pcap pmd
Lagopus+pcap pmdLagopus+pcap pmd
Lagopus+pcap pmdMasaru Oki
 
Rumpを使ってみる
Rumpを使ってみるRumpを使ってみる
Rumpを使ってみるMasaru Oki
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話Masaru Oki
 
今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話Masaru Oki
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlowJoel W. King
 
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークOpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークM Hagiwara
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話Masaru Oki
 
8 Colorful Ideas for My Country (Filipinization)
8 Colorful Ideas for My Country (Filipinization)8 Colorful Ideas for My Country (Filipinization)
8 Colorful Ideas for My Country (Filipinization)Jose Radin Garduque
 
Project and pitch in 10 min
Project and pitch in 10 minProject and pitch in 10 min
Project and pitch in 10 minWALID RAS
 

Andere mochten auch (17)

Net bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfNet bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpf
 
Lagopus 0.2.4
Lagopus 0.2.4Lagopus 0.2.4
Lagopus 0.2.4
 
GPD WINが来た!
GPD WINが来た!GPD WINが来た!
GPD WINが来た!
 
Lagopus match improvements
Lagopus match improvementsLagopus match improvements
Lagopus match improvements
 
Lagopus+pcap pmd
Lagopus+pcap pmdLagopus+pcap pmd
Lagopus+pcap pmd
 
Rumpを使ってみる
Rumpを使ってみるRumpを使ってみる
Rumpを使ってみる
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話
 
今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話
 
Cisco Openflow
Cisco OpenflowCisco Openflow
Cisco Openflow
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlow
 
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークOpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話
 
Lagopus 0.2.7
Lagopus 0.2.7Lagopus 0.2.7
Lagopus 0.2.7
 
Ryu sdn framework
Ryu sdn framework Ryu sdn framework
Ryu sdn framework
 
8 Colorful Ideas for My Country (Filipinization)
8 Colorful Ideas for My Country (Filipinization)8 Colorful Ideas for My Country (Filipinization)
8 Colorful Ideas for My Country (Filipinization)
 
Project and pitch in 10 min
Project and pitch in 10 minProject and pitch in 10 min
Project and pitch in 10 min
 
Site Kalu
Site KaluSite Kalu
Site Kalu
 

Mehr von Masaru Oki

NetBSD移植の昔話
NetBSD移植の昔話NetBSD移植の昔話
NetBSD移植の昔話Masaru Oki
 
Running lagopus on Xeon D
Running lagopus on Xeon DRunning lagopus on Xeon D
Running lagopus on Xeon DMasaru Oki
 
Using Xeon D 10GBase-T
Using Xeon D 10GBase-TUsing Xeon D 10GBase-T
Using Xeon D 10GBase-TMasaru Oki
 

Mehr von Masaru Oki (7)

NetBSD移植の昔話
NetBSD移植の昔話NetBSD移植の昔話
NetBSD移植の昔話
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Running lagopus on Xeon D
Running lagopus on Xeon DRunning lagopus on Xeon D
Running lagopus on Xeon D
 
Using Xeon D 10GBase-T
Using Xeon D 10GBase-TUsing Xeon D 10GBase-T
Using Xeon D 10GBase-T
 
DPDK QoS
DPDK QoSDPDK QoS
DPDK QoS
 
Xeon d
Xeon dXeon d
Xeon d
 

Lagopus as open flow hybrid switch