新生Lagopus2017(仮称)
Dec 9, 2016
Masaru OKI @masaru0714
Lagopusの概要と歴史
オープンソースの、OpenFlow1.3対応ソフトウェアスイッチ。
2014年7月 0.1.0をOSSとして公開
2015年8月 0.2.0公開(最初の新生)
2016年12月 0.2.10公開(予定)
0.1.xと0.2.xの違いとは?
● 0.1.xではlagosh(C言語で作成)とlagopus.conf syntaxがすべてだった
● 0.2.xでDSL(Domain Specific Language)による設定・参照を実装
○ ひとつのアクションを 1行テキストで表し、レスポンスが JSONで返る言語を定義
● Lagopus DSLを元にlagopus.conf syntaxを再定義
● Lagopus内部ではDSLで操作できるDatastoreを実装
● DSL通信する新しいlagosh(Pythonで作成)を実装
● 設定・参照に関する部分が全体的に再実装された(新生)
0.2.xの次?
LagopusはOpenFlow準拠のソフトウェアスイッチ
という存在にとどまらない機能を持ったソフトウェアに生まれ変わります!(新生)
Lagopusはソフトウェアルータになります!
なぜソフトウェアルーターなのか
● OpenFlowはレイヤーの壁を越えたパケット処理をする
● 既存のL2, L3レイヤーとつなぐには、OpenFlowコントローラ側での実装が必須
○ たとえばARP, ICMP, NDなど
● それらをコントローラ側で実装するのはタスクとして重いし意識したくない
● L2, L3の基本機能はデータプレーン側でがんばってほしい
● わかりやすく言うと、商用として導入するには機能が不足してる、という見解
既存のカーネルにあるIPスタックと何が違う?
IPスタックなら、既存のものがあるじゃん! という話に当然なるわけですが……
● カーネルのIPスタックは、L2からL3につながるようなパスが固定されている
● 新生Lagopusでは、パケット処理機能の組み合わせ・接続を自由に可能にする
機能の直列モデル(パイプライン)と並列モデル(ワーカースレッド)を自在に組み合わせ
て、最適な性能を出せる構成とトラフィックパターンについてより細かな調査・研究が行
えるプラットフォームを目指しつつ、pure OpenFlowだった旧Lagopusと比較して、実用
に供するシステムを構築する
でたらめにつなぐとでたらめに動くという意味ではOpenFlowの雰囲気に近い
OpenFlowとシームレスにつながるユーザスペースIPスタックはすでにあるか?
類似の技術
Click Modular Router http://read.cs.ucla.edu/click/click
BESS http://span.cs.berkeley.edu/bess.html
Toy Block Networking
● パケット処理の各機能を細かく分割し「モジュール」として定義する
● 地続きのコンテキストで実行するか、スレッド分割するかをモジュールが決める
● モジュールはいわばクラスの役目で、実際にはインスタンスを生成して動かす
● 前段インスタンスの出力と次段のインスタンスの入力を接続する
● DPDKを最初から組み込み、DPDKと親和性の高いフレームワークとする
● モジュールを*.soとしてビルドし、動的に組み込み可能とする
● 外部からgRPCを使って制御できる
新生Lagopus2017 Dataplaneの特徴
pkt rx VLAN ACL
MAC
Lookup
Bridge
IP
Lookup
もうひとつ新生Lagopus2017の特徴
● 0.2.xまで: single process (+ lagosh)
● 新生Lagopus: multiple process
● dataplane, datastoreなどのコンポーネントをそれぞれmicro serviceとして用意
● 各プロセスが連携してLagopusとしての動作を実現する
● 設定はOpenConfig準拠で定義する
● Internet2 exchange 2016にて概要が発表されています
○ http://meetings.internet2.edu/2016-technology-exchange/detail/10004490/
○ NTT中島さんのスライド(PDF) 17ページに構成図が乗っているので見てみてください
大雑把にまとめると
作り直しています!
Q: 公開される?
A; 時期未定ですが、OSSとして公開される前提で開発中です
Q: OpenFlowはどうなるの?
A: モジュールとして用意し、Lagopus 0.2と同等の仕様準拠とする予定です

新生Lagopus2017(仮称)