Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Lagopus as open flow hybrid switch

1,406 views

Published on

Using Lagiopus software switch DPDK version with Linux ip command. (In Japanese)

Published in: Software
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Lagopus as open flow hybrid switch

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

×