大Trema day (Trema day #6) 参加メモ

大Trema dayに参加してきました。今回は信学会NV研共催ということで場所は東大・本郷です。
例によって聞きながらのメモなので内容的に怪しげなところがあるかもしれませんのでご容赦を。修正点あれば適宜突っ込みください。

SDN編

NV 研究会の OSS やハンズオンへの取り組み (東大, 中尾先生)

NV研究会の紹介

  • 時限: 通常の学会とちょっと違う。
    • いま旬な技術について、必要に迫られて、フットワークの軽い枠組みで研究を行う。
    • 査読なしで論文募集、次は9月で、東北大学
  • 「学会」とあまり固くとらえずに、メールで応募して気軽に参加を。
  • 時限研では論文なし、スライドだけでも発表できます(フォーマットは整えてもらわないといけないけど)
    • 企業・学会関係者の参加者が集まる場で発表ができる。

中尾研

  • Nakao-Lab で検索してみてください。
  • Flareというスイッチを作っている。メニーコアプロセッサ+Linux
  • リソースコンテナ上でOpenFlow実装したり。
  • コア数-スループットのグラフ, 6core/10Gbpsのスイッチが実装できてる(OF1.3 on Flare, Packet:1514B, 100万フロー)
    • ryu/trema との連携、コントローラとデータプレーンを両方拡張可能にするという活動をしている。

信学会は非常に硬いのだけど、時限研はそうではない。OSSとの共同活動などもやっていきたい。

データで見るTrema (高宮さん)

資料: データで見るTrema

  • Question? Trema day 初参加の方(挙手)
    • ほとんどTrema day初参加

Tremaの紹介とか。

  • Trema
    • NECが中心になって開発しているOpenFlow Framework, コントローラを作るためのツールを一通り提供
    • ruby, GPL, github上で開発
  • データ
    • Tremaを開発したのはつ? 2011/04にリリース
    • 今までのリリース回数は? 56 (tag)
  • "OpenFlow" trends (google trend)
    • OF0.8.9, 1.0(2010), Trema公開(2011/04),
  • Trema, 33000件くらいダウンロードされてる, gemランキング4000/79200...上位5%くらい (trema -- BestGems)
  • 主な活用事例
  • 開発コミュニティ
    • NEC, Axsh, Stratoshere, yandex, AP comm, ON.Lab, GREE
  • Stargazed count at github
    • OF framework 4強: ryu, floodlight, pox, trema
  • Trema Day
    • Ryuの人とかFloodlightの本書いたりした人たちが、Tremaという枠にとらわれずに集まって話をしてくれてる。
    • 参加者推移

まとめ

  • 地道に開発進めてます。
  • Trema day とかやってます。
  • これからは各方面の連携、NV研含め、学術あるいは企業とも一緒にやっていきたいです。

SDNを使った映像伝送 〜W杯の8Kライブビューイング〜(NTT未来ねっと研究所, 北村さん)

プロフィール

  • 最近はクラウドの中で映像制作をやってしまおうとかそういうのをやってる。
    • 映像制作のリモートコラボレーションとか。

W杯の8Kライブビューイング

  • NHKがやっている8K、スーパーハイビジョン(HD16面)の伝送のところをやるのでタッグを組んでる。ワールドカップブラジルのを日本へ転送。1か月くらいブラジルに拘束されていました。
  • ブラジルから日本は、地球半周。ジッタ、誤り訂正やマルチパスなどの技術を使ってなるべく映像が落ちないようにする。
  • 8K/60P (TVだと30P, 単純に倍のフレーム), H.264+誤り訂正つけて300Mbpsとか。
    • サッカーのフィールド全体を撮れる
  • ネットワーク
    • ブラジル〜日本の経路
ブラジル -- relay node -- RNP PoP --(US)-- Distribution Centre (tokyo) -+- PV site
                           +- PV site                                   +- PV site
    • アマゾン川とか地形的な制約が…
    • これをさらに冗長・マルチパス
  • RNP, redclare, internet2, gemnet/sinet4 ほとんどパブリックネットワークを使って伝送実験。これだけだと不安なのでさらに new linkをつけてルートを3つ作ってる。
    • 組み合わせがいっぱいある。どの経路を使うか。経路A/B: 2本の線、誤り訂正とかつけて、両方を受けて、よかったほうのデータを使う。経路Cはシングルパス。3種類。3重なんだけど、ネットワークとしては2,2,1で5本の系統がある。物理線とか系統が被るので独立で5本というわけではないが…。
  • 映像の転送システム
    • 暗号化、誤り訂正を入れてIPでながす。
  • 6月上旬からいってきた。

NWの課題1

  • パブリックネットワークなので不安定。特にブラジル国内。テレビ局が再送信とかしてるので試合が始まると一気にトラフィックが増える。強豪国とかだとすごいけど日本の試合はあまり増えなかったりして逆に安心したり。
    • 5本用意したけど、ネットワークのパスどう切り替えるか。ネットワーク側で切り替えられるのがいい。エンドユーザから触れられるネットワーク、SDNでコントローラベースでパス変えられるようなことができるとうれしい。OpenFlow SDN あたりが現実的ではないかと思っている。
  • OFS を使ったパス切り替えの検証
    • OFS(Lagopus)+Ryu, ブラジルと日本においてパス切り替え(宛先アドレス変換)
    • 350Mbpsが2本、フローテーブルは多くない。DELLのデスクトップPCにIntel NIC入れたような機材でLagopusいれてる。実験レベルではこれくらいでやれちゃう。
    • アドレス変換・ARP解決の切り替えでパス切り替えやってる。
    • バグを見つけたり…

NWの課題2, ネットワークの状況を知る

  • ネットワークの中身がわからない。
    • ブラジルの人は英語が通じない…。言葉が通じても、最初は絶対に大丈夫だ・気にするな・まだ時間はあるとか言われる。
    • ブラジルのネットワークは1日に1回どこかでファイバカットがあるくらい。トラックが突っ込んだとか。
    • 設定も400Mbps用意したとか言われてやったら出ない。実は双方向で合計400だったとか。
  • NFVとか高価なものじゃなくても、ネットワークを利用者側から触れるようになっているのがいいのでは。
    • フロリダ国際大学(FIU)にLagopusを入れてみた。本番では使えなかったが実験を。間に触れるスイッチがあると便利。
    • [Tokyo]--[Miami/US]--[Rio/Brazil], 間でミラーしてやるだけで折り返しのテストができる。どこでNW悪いのかが計測できる。
    • ネットワークの中にLinuxマシン潜らせるとかそういうのやればいいんだけど、OFSあってその権限が与えられればすぐにそういうネットワークのチェックやテストができる。広域/伝送網とかではすごく便利だった。

NWの課題3, 既存のNWにどうSDN入れ込むか

  • 既存のルータの下にぶら下げるだけだとパケットが届かない。
  • 現場ではまだSDN懐疑的。テストベッドサブネットにしか入れてくれない…
    • コントロールプレーンを物理的に確保するのが難しい。国際NWだと物理船別れて引けない。Data/Control を同じ物理線に乗せないといけなかったり。既存のスイッチと一緒に動かすと意外な反応があったり…(結構怖い)

Q&A

  • 混んでる時と混んでないときの差、その辺の計測結果とかは?
    • jitterはわりとばらつき、パケロスについてはドバっと落ちる時があったりする。回線が切り替わったり。秒単位とか。
    • 遅れ、誤り訂正入れてる影響? 映像ストリームを30秒くらいためてる。映像再生時間は変わらない。30秒ためて訂正符号かけて、受信側でも30秒くらいためて再生。なので(映像の)NW遅延としては30秒とかあるが、映像見ている人にとってはずっと滑らかに映像が見えている。誤り訂正、ビット誤りはない。届いたパケットは正しい。届くか届かないか。Bit irretional channel*2 bit が届けば正しいし、届かなければ誤ってる。処理もシンプルだし、性能も出る。
  • 全滅の可能性、帯域を取っておく(予約とか)?
    • 商用網つかえばできただろうけど、今回は実験的な位置づけ。国内ならJGN/Sinetを使うようなイメージ。申請はするけど、確保されるわけではない。半パブリックなネットワークをつかっていた。
  • FIUに設置した図の中、Prestaって何?
    • 計測装置、簡単に言うとtcpdumpを高精細なタイムスタンプで打てる装置。
Maturing of OpenFlow and SDN through deployments(NEC/Stanford Univ, 小林さん)

参考: Maturing of OpenFlow and Software-defined Networking through deployments

プロフィール

  • 2003-2004, 2007-2012, Stanford Univ. at Prof. Nick McKeown Group
  • 2012-2014, ON.LAB

歴史

  • 2007末, OpenFlow "Viros"*3開始
  • 2009年頭, MIT tech Review called "SDN", 名前については不評だった。
  • 2010頭, OF/1.0.0
  • 2011頭, ONF設立
  • たった4年で10人くらいの小さなグループで始めたものがインダストリーに移った。

フェーズ

phase.1(2008), OF PoC

phase.2(2009), Slicing and Scaling SDN deployment

  • スライスと拡張性、9台のスイッチ、30個のAP, スライスして複数の実験を行う
    • スライス: 物理ポートでOF/legacy VLANを分けるもの → FlowVisor
    • FlowVisor: packet header に応じて異なるOFCへふりわけ。
    • OF/0.9.0

phase.3(2010), GENI, 全米に広げる。

  • 10+ Univs by NLR & Internet2
  • OF/1.0.0, 商用化開始
  • C-Plane, FlowVisor + PlanetLab + オーケストレータで複数プロジェクトが実験できるように。マルチDCオーケストレータの走りみたいなことをやっていた。
  • NW全体の負荷分散、サーバとネットワークのパス選択を同時にできる。

phase.4(2011-), Production deployment

  • Research Groupの中で日々の業務を(バグの多い)環境の中で使う。
  • Researcherがビルの管理者に渡してプロダクションをやった。StanfordのCIS/CISX Building, Packard Building
  • 14switch, 30+AP
  • measurementに力を入れてる。flow setup delay (reactive flowでやってた), ping RTT, とか。時間コリレーションとるとどこら辺が怪しいのかが見えてくる。
  • Measurement infrastructure
  • Conribution to OF spec
    • flow_mod (最初は消してから入れるとか、フロー足すとカウンタがリセットされるとかだった)
    • controller failover (v0.9)
    • barrier message
    • など。使ってみて足りないものを入れていった。

何を学んだか? (1)

  • spec はシンプルなほうがいい。複雑なものだったら4年でこんなに使われるようにはならなかっただろう。
    • "Viros" Nov 2007, 11pages, v0.8.2 で18pages, v1.0.0 42pages, vendor extension も入れたがらなかった。
    • 短いスペックについては解釈の問題がおきる。リファレンス実装による提示。ベンダは作りやすかった。インタオペラビリティも。
    • 開発ツールとかも重要

何を学んだか? (2)

  • SDN Design
    • reactive flow は実験にはやりやすい。が、ボトルネックに。reactive flow は design としてはどうだったんだろう?
    • トポロジディスカバリはどこが担保すべきか?
    • in-band control/oub-bound control, in-band, 話はあったが非常に難しい。鶏卵問題、カスケードした現象が起きる。
    • out-of-band, 管理VLANつあけばいい、DC/CampusとかではOutで問題なかった。

何を学んだか? (3)

  • Hybrid or pure?
    • 最初はpure OFS だろうといっていたが、実際にはhybrid OFSが非常に便利だった。プロダクションと実験の分離とか。
    • Flow Space Slicing もとても有用だった。実験車はあらゆるトラフィックをさばきたいと思っているわけではない。映像とか特定のプロトコルとかをさばければいい。興味なるところだけを分けられるので、実験系に非常に有用だった。
    • パフォーマンスの分離はなかったのでそこは問題…

何を学んだか? (4)

  • Living with legacy network
    • OF島間に Legacy NW がはいってしまう。同じエンドノードが島ごとに見えてしまう → P2P vlan, QinQとか。
      • LLDP落として問題に…などのトラブル。トンネルするとMTUの問題、ソフトウェア処理による性能問題…
    • 結局、コントローラが multiple control point をサポートするようにしてしまった。(BSN/Floodlight)*4

結論

  • Research/Production を両方サポートするのは大変。
  • Researcher は production trafficがほしい(リアルな実験をしたい)
  • 見た目でアピールする実験をやるのはクリティカル。新しい技術なのでできないことはいっぱいある。見たい人のイマジネーションをとらえて、先のイメージを想起させないといけない。そのためにビジュアルに訴えるデモは非常に大切。ただ、作るのは大変。
  • Research/NW Admin/Vendor の間にいいコミュニケーション。お互いの欠点を教えて直していく。それができたので短い時間でMatureだった。

Q&A

  • ログ取得と相関、ツールとか?
    • 相関は目視で。ログについては…前は手作業、今はTime Series DBというので。大量高速処理できる。
  • テスト
    • OFが信頼できなかったので、多ポートのあるLinuxはことか持ってきて頑張った。
  • OF仕様の肥大化?
    • 最初のころは Nick とか Martin とか入ってたけど、今はベンダの世界に任せる状態。迷走しているなというようなところもあるけど…そこまでもう影響力発揮できない。それは Stanford の仕事ではないと考えていると思う。
    • たとえば, BSNプロトコル部分の標準化に時間かかるの待ってられないのでベアメタル戦略に変えてる。エージェントとコントローラの通信は自分でスペック決めて早く動かせる。標準化の難しさを表していると思う。
  • OF仕様のオプションになってるところ、バージョンアップも差分的に変わってる。「バージョンいくつ対応」といってるけど対応していないように見えるところがある。それをどう使いこなせばいいんだろうとか、使いこなしの勘所とかあったりするのでしょうか?
    • ないです。だから大変だと思います。オープンで単一のI/Fと言っていたけど、スイッチごとにCapability違う。可能性があるとしたら、Marchant Silicon Chip を使ってるのを OF 用のチップ作ってる会社がある。それがでてくると、インタフェースがシンプルになって中のインプリをうまくスケールするように…。そうなればコントローラはシンプルにできるんじゃ。そういうのが出てこないと難しいかなと。
    • Nicira はハード触らずにソフトだけにして、思い通りにコントロールできる方向にした。ハードが出ないと、当初イメージしていたPureでシンプルな世界の実現は難しいのかな。
  • OFの情報、どこに何があるのかわからないことが。Extensionの追加、EXT-No.とか。「こういうことで困ってるよ」とかって話は公開されていたりするのか? なぜその Extention が出たか、とかその提案とか。
    • ONFなので参加企業だけ。ONF内部的にはあるかもしれないけど。

Clickを始めよう(東大, 山本先生)

Click?

  • Click Modular Router で検索してみて
  • パケット処理を小さな単位(element)を連結してプログラミング
  • element はいま500個くらい公開されてる。組み合わせて複雑なパケット処理。
    • 自分でも element 作れる。
  • MIT, Eddie Kohler が開発 (2000年), USではNW研究によくつかわれている。
    • 中尾研究室ではまずこれを学習
  • 実NWに利用できるのか?

Clickをさわってみよう

test.click

FromDevice(eth0) -> Print(ok) -> Discard

ポートの種類

  • push: source からパケット転送をイニシエート
  • pull: destination からパケット転送をイニシエート
  • agnostic: push/pull可能

ethernet switch

arp 機能なし ip router

(arp機能あり)ip router

GUIツールでコンフィグ自動生成

vNODEプロジェクト、仮想化基盤にClickを利用。Click config を自動配置・実行させる。

  • D-Planeの性能, FLAREというスイッチを開発。x86 + NPU(many-core NP), 最初のバージョンは36core
  • 10G 32port のものを最近は開発している。
  • メニーコアをスライスで仮想化して異なるパケット処理を1台のマシンで実行

性能

  • ip forwarding, 3coreでほぼ10Gbps
  • switch, 2core
  • openflow, 5coreくらいで10G, 100Mフローでもいける。

まとめ

  • clickで仮想スライスのデータプレーンをプログラミング
  • GUIツールでネットワークプログラム
  • Flareで物理NW危機並みのスループット確保
  • flareスライスにclickでOF実装(OF1.3でやってる)
    • tremaでflare openflowを制御

QA

  • click学生向け教育って結構大変じゃない?
    • 学生にもよるけど、かかる人だと1か月2か月とか。NWの知識があればそんなにかからない…エレメントの理解ができれば。
  • Flareを個人で使いたいと思ったらどうしたらいい?
    • お金があれば…。無理であれば、共同研究とかそういう形でやれればFlare貸出とかできるかも。いまそういう形で企業数社と話を進めていたりする。興味あれば中尾先生にコンタクトを。
  • NWデバイス、FDBとかの実装ってどうする?
    • 共有メモリや個別のメモリ空間もあるのでその辺を使って。16-32GB位までの目盛がボードにある。NPはひとつのLinuxとして見える。
  • Flare, 中尾ラボのパンフ、Wifiの記載があったんだけどそういうのも作っている?
    • アーキテクチャがFlare, Linux BoxでAP作って仮想化するというのをやっている。APはNPじゃなくて普通のLinux Boxになってる。
  • Click, 大学とか学術系で見るが、インダストリで使ってる事例はある? インダストリに入らない理由とかがある?
    • 事例はあるらしいが私もよく知らない。文献だとNAT Boxとかそういうのあはる。(インダストリに入らないのは) 専用のチップがあったからあまりやらなかったんだろうけど、これからNFVとか汎用チップで実装していく方向に進むと広がるのでは。
  • Flare, NP/CPU, パケットの転送は全部NPでやる? CPUに上がる?
    • パケットはNP側から転送、そこもClickモジュールつくって、NICのように見えるようにエレメントを作っている。Intel側でapacheとか動かしておいて、そっちに処理を振るとかそういうこともやれる。
  • click, 実行時にパケット流しながら指示を入れて反応見るとかできる?
    • ダイナミックな変更は無理か。中のパラメタとかは書き換えることはできる。
    • モジュール(エレメント)の動的なつなぎかえとか、Trial and Error がリアルタイムにできると面白いなと。

スペシャルゲスト(US Ignite, CTO and Founder, Glenn Ricart)

(ゲストのところはメモちゃんと取れてません…。英語能力の壁。)

入門編

Trema ハンズオンチュートリアル(つかうのはTremaEdge) (NCLC, 大柴さん)


自己紹介

今日の内容

  • TremaEdgeのつかいかた。
  • Sinatra, PIO を使うために fork したものをつかっています。

github.com/proshiba/trema-edge

今日のゴール

  • TremaEdgeでL2SWをつくる
  • ついでにパケット精製、WebAPIの定義、DB操作といったフレームワークやライブラリを紹介。

OpenFlowの基本

  • C/D分離
  • 集中コントローラ
  • フローテーブル
    • v1はデバイスについてひとつ。match-action
    • v1.3では複数テーブル。複数テーブルを扱う[テーブル間の連携]ためにインストラクションというフィールドが増えた。match-instruction
  • スイッチでは何ができるのか。
  • TremaEdgeの特徴
  • ハンドラ

Tremaベースのアプリ作成をやってみよう

  • 起動
    • Hello Trema!

参考

  • パケットライブラリ Trema::PIO
  • Sinatra
    • get/post
  • DB操作: ActiveRecord, RoRでおなじみのO/R Mapper

注意事項

宣伝(pica8)

  • L2/L3とOpenFlow両方対応している。
  • Trident2搭載モデル予定
  • コントローラ接続検証, ryu/trema/floodlight, OF1.0/1.3で接続テスト済み
  • CrossFlow
    • テーブルミスした場合にL2/L3の機能で処理をすることができる。
    • 必要なところでだけOFのルールを入れることができる。
  • フローエントリ数の増加
    • ExactMatch(OF1.0), P5101 290000 エントリ, P3290 36000 エントリ, 今年9月くらいのバージョンで。

Q&A

  • CrossFlow, 最初にOFのマッチ→l2/L3マッチという順序は固定? OF仕様を逸脱?
    • 順序は固定。OF仕様とは異なる動き。OFで実現できないからL2/L3というわけではない。OFCでやることもできるけど、全部をコントローラで作るのは大変。ある程度既存のL2/L3に任せていいのであれば任せてしまってよいのでは、というのがコンセプト。
  • CrossFlow, 挙動としては action=normal というのと関連ある?
    • この先 action=normal としたらL2/L3に渡すというのがつけられるのかもしれないけど、いまのCrossFlowでは全然別の機能。単純にフローエントリに対してマッチミスがあった場合にL2/L3にわたす。
  • Crossflow, pica8すべての製品で実装?
    • Broadcomのスイッチでも似たようなのがあったと思うけど。全部のスイッチでできるわけではない。action=normal をいれたとしてもL2/L3としてちゃんと動くように実装されてる製品はあまりない。

Trema編

OpenFlow実用実験事例 (丸紅OKIネットソリューションズ, 板橋さん、玉川さん)


OpenFlowの実用実験

  • 2010-2011あたりから技術動向調査とかやってる。
  • 技術習得したい
  • 社内ネットワークを一部借りてテストベッドをやろう。
  • 自生して技術を、と思うけど、開発周りの話になると弱いのでどうしようかな。
    • サンプルベースにカスタマイズしながら学習しよう
    • どうせやるならうまく社内の環境とつながるような。最低でもL3でやりたいよね。
    • コアのL3SWは評価用にいろいろ買った。安価なPica8の機材でやろう。万が一で、L2/L3としても使えるというのもあり。

スケジュール

  • 2013年中、段階的にL2スイッチ実装, L3昨日実装, 冗長化、というながれで。
  • いま移転直後で止まっちゃってる…将来的にはもうちょっと侵食していきたい。

移行の流れ。

  • phase.0, 構築前, wan-router -- core-L3SW -- floor switch (L2)
  • phase.1, フロアの一部分を引き出してpica8, L2スイッチとして実装。ブリッジ相当の機能がちゃんと動くか。
  • phase.2, WAN-router の下にOFSを移動。L3スイッチとして動くかどうか。ルーティングやTag VLANの実装、DHCP Relay、スタティックルートの機能
  • phase.3, OFSの冗長化(コアL3として冗長化)
    • というところでいまとまってる
    • これから、従来の基幹ネットワークをOFS L3の方へ移行させちゃいたい。

コントローラ開発

  • OFCフレームワークの選択
    • Tremaにした: 日本語ドキュメント、サンプルコードや情報が多い。取りつきやすい。
  • 開発環境、Win7 PCの上に仮想サーバおいてやってる。
    • テストできたら実験環境へ。
    • Tremaは随時アップデートしてなるべく新しいバージョンで。

開発の進め方

phase.2

  • dhcp relay agent
    • アドレス書き換え
    • UDPチェックサム再計算とかの実装。
    • チェックサム計算とかシンプルなところ間違えると原因調査難しい…(計算あってる場合・間違える場合とかあって)
  • Tag VLAN
    • これはそんなに難しくない。
    • シミュレータとVLAN TAGの扱いが違うところがあった。(tagged frame が tag はずれた状態で packet-in ?)

phase.3

  • L2の経路冗長化
    • 既存環境との接続があるところをどうするか。
    • OFSは2台1組として優先度を設定。優先度の高いものをActive/もう片方はポートダウン。
  • L3の冗長化
    • コントローラがスイッチの死活監視してる → スイッチ間 KeepAlive のない冗長化
    • スイッチペアに仮想 IP/MAC つけておく。優先度が高い方が仮想IP・MACの処理
    • コントローラから見てスイッチからの接続が切れた場合に優先度を再評価。
      • Linkダウンについて → L2冗長によるポートダウン検出などを併用して。

現状の課題

  • 信頼性の向上
    • 完璧じゃない。切り替わりにかかる時間とかも。
  • 運用
    • コントローラ、コードのメンテとかをどうするか
  • 全フロア適用すると10倍近いノードがぶら下がる。負荷とかどうなるか?
  • OF1.3対応考えないと。

Q&A

  • 情シス部門との調整、説得ってどうやったの?
    • トップダウン。やりたいことを経営層に先に承認もらった。情シスが従わなければいけない状況を作った。
  • 経営層の口説き落とし方を…
    • 当時、SDN/OpenFlowってバズってた。上が非常に興味を持っていた。会社くっついてインフラ刷新したときに、OpenFlowとか意識した選定をせよという指示もあり、経営層がそういうマインドを持っていたので、割と通りやすい状況だった。エンジニア側の思いに対してもともと理解があって前向きに判断してもらえた。裏は少数精鋭、3〜4人くらい。経営層が協力的……、「一部の領域に入れた」というのは、経営層が使ってるNWも含めてデプロイしている。
  • メンテナンス、運用やトラブルシューティング、それらの引き継ぎやトランスファーってどうしてる?
    • 現状策がないというのが正直なところ。ある程度開発者がバックアップしながらやれることを渡していく。マニュアルの話なのかオペレーション一緒にやるのか、形としてはいろいろあるけど、少しずつ移行。
  • テスト環境, Tremaでテスト環境, 実際デプロイして機器つないだ環境でのテスト。テストコードってパケットパターン作ってチェック。現実ではいろんな機器つなぐと予想外の動きが。テストやデバッグどうしたんだろう?
    • 開発環境では、プログラム使用に関するテスト。
    • テストベッドでは社内の様々なノードに対してPing等の津新流して実際回るかどうか、一般的なネットワーク構築時のテストを一通りやってる。
  • 実環境で動かしたときのトラブルとか事象とかってどういうところ?
    • L2冗長化、ポートステータス通知とかの応用で考えたんだけど、やってみたら必ずしも通知が来ないことが。
  • コード公開する予定ってあったりする?
    • 今のところないけど検討します。

そのほか

  • TremaEdge上への移植もやってるけど、結構大変だった。APIの変更や機能的に足りないところとか。
  • DHCP relay agentについて, PIO, 近藤さん → いれるつもり。目標は4-5行でリレー実装できるようなものを。興味があれば使ってください。
    • 実装作った後にその辺が公開された。もうちょっと早く出てくれれば…。自分で解析するルーチン書いてパケット構築する実装もしたりしてた。ほんとに直後くらいでPIO出てきた…
できる! Trema-Switch(Stratosphere, 川井さん)

資料: できる!trema-switch

自己紹介

  • apache とか好き。Webやってた。OSS好き
  • IIJ側からストらトスフィアに。技術開発部しかない。10人しかいない。
  • なんでTrema?
    • Interop Tokyo 2013, OmniSphere1.0, Buffalo G301N を Trema-Switch/OpenWRT に書き換えて使ってた。

Trema-Switch

  • trema-edge に同梱
  • OF1.3 software switch
    • うれしいことに C で書かれている。
    • netdev が port になる

ほかの実装

  • ovs: C実装, kernel module or netdev
  • cpqd ofsoftswitch13, C実装, netdev, OpenWRT対応
  • indigo(IVS: Indigo Virtual Switch), floodlight: C, netdev
  • Linc: Erlang, netdev
  • Lagopus: C, dpdk

いろいろ実装、特徴がある。Trema-Switchは?

  • テストスイッチとしてのポジション

Trema-switchのビルド

  • rake trema_switch
  • gccのコマンド一発でもビルドできる。超簡単。
    • OpenWRTへのフィードとか超簡単。
    • github.com/iHiroakiKawai/trema-openwrt
    • 一部自前パッチが必要。uClibc に足を引っ張られて…

Trema-switchの起動

  • 起動も簡単。netdev つかうのに sudo
  • ファイルにログとかゴリゴリ書くとつらい。イメージ死ぬ。syslogとstdoutに飛ばす。

Trema-switch

  • いまはだいぶできる子になった。Ryu Certificationやるとかなり好成績で出る。NGなる項目は、CPU足りない・テストケース不備のところ。
  • テストスイッチかくあるべし。
  • Ryu Certification で OK 900 項目以上いくような(ソフトウェア)スイッチはそうそうない。ハードウェアスイッチはもっと悪い。
    • PoCはTrema Switchでやって実際の環境持っていくときに泣く泣く機能落とす感じ。

安価なOFS, OpenWRTの敷居が高い?

  • RasPi
  • Intel NUC
  • 普段使いでもtrema-switchを。

trema-switchの開発

  • コミット数推移

Flags, ビルド用にいくつかフラグがある。

  • WITH_PCAP
    • libpcap対応にできる。パケット吸ったり吐いたりをpcapでやれる。pcap的に最適な方法を選択してくれる。
    • ポータビリティ(trema switch はわりとLinuxべったりなコードたくさんあるからどこまでかというのはあるが)
  • USE_PCAP_IMMEDIATE_MODE
    • 比較的新しいlibpcapで使える。pcap_set_immediatemode()
    • TPACKET_V2/V3の特性の違い、V2は即時応答性重視, V3はスループット重視。
    • 削ってもいいかなと思いつつ。
  • GROUP_SELECT_BY_HASH
    • Bucket SELECT: ランダムではなくetherフレーム情報に基づいて振り分け。out-of-order をなるべく発生させない。

こんな感じでビルド

シグナル

  • 内部状態の確認ができる。
    • SIGUSR1: flow table dump
    • SIGUSR2: group table dump

and more (相談

  • OpenWRT feedメンテナンス事情
    • trema-edgeにリリースがないので常にHEAD, そろそろリリースしない?
  • テストスイッチなのでOF仕様満たしたい。まだおわってないところ
    • controller meter, queue, tunnel port, ポートの動的追加削除, role, AsyncConfig, SSL
  • performance tuning
  • thread safety

拡張の名前空間ほしいな…

  • OSSのexperimenter IDとかないかな? 誰かのれん分けできない?

Trema/Trema-edge統合?

  • まだまだ先は長い。次の本出すって話、統合進めつつ書こうかな。本が発売されることには統合されている…両方共倒れにならなければ。(高宮さん)

そんなこんなで Gopenflow

  • hkwi/gopenflow · GitHub
  • Go lang で実装しはじめた。pthreadもう嫌…
  • とりあえずなんでもたいおうする方向で。
  • pcap netdev のあとで dpdk も対応したい。
  • パフォーマンスも見る。
  • pcapリンクすればwindowsでも動く
  • 現状, ryu cert OK(981)/ERROR(10)

ところで、関西でSDN勉強会とかしませんか? というネタふりだけしておきます。

Q&A

  • スイッチの certification, テストスイッチとしては現実の環境を模擬できるように、特定の機能を落とせるようにするのがいいのでは?
    • 1.3 は capability flag があるので、それで正しい設定が取れれば…いまのところそういう予定あるかと聞かれるとない。
    • もともとTrema Test Switch, ふつうのUnit Testやうけいれてすと、Features Replyとかスタブ的に。特定のfeature reply返すとか。思ったようにテスト用のコントロールが効くスイッチというのが野望としてはあった。全部できるというのと、コンフィグ読ませて特定のビット操作するとか。そういうテスト。ただ実装は千葉さんで特に何もリクエストしないとC実装に。(高宮さん)
RISE: OpenFlow testbed on JGN-X (NEC/NICT 石井さん)

自己紹介

  • NEC, 初期の Trema Commiter としても
  • 2011-2014, NICTテストベッド研究開発推進センターに。4月からはNEC戻って兼務。

JGN-X

  • Japan Gigabit Network, 1999年にはじまったテストベッドサービス。2-5年に1回くらいテーマ別に更新
  • 次世代NW, Future Internet
  • JGN-Xウェブサイト

RISE

  • OpenFlowのテストベッド, JGN-Xで提供しているサービスの一つ。
  • 研究計画とか申請ベースでテストベッド使ってもらう。
  • テストベッド自体の技術的なチャレンジ
    • OF広域展開(2009からノウハウためつつ、2011からサービス開始

トポロジ

RISEで苦労した点

  • すぐループ
  • ARPは地味だけど大切。IPパケットのエントリ書くけどARPのエントリ書いて無くて動かないとか結構ある。L2の知識がないとつかうのは大変。
  • 原因はどこにあるのか?
    • ログとかいろいろ集めてチェック、スイッチのフローエントリのぞいたり。今はある程度手順として確立。
  • 既存の機器がおかしくなる
    • レガシスイッチとかもあるので。

Tremaを使った活動

  • interop tokyo shownet demo
    • 2012
    • 2013
  • RISE3.0

Interop Tokyo 2012 ShowNet

  • セキュリティソリューション、ログ監視、IDSとかで怪しいトラフィックを調べてどっかに飛ばす・止めるデモ
    • interop なので直前にならないと実機確認できない…。やってみないとわからん。
  • さて
    • rubyわからんしC langで
    • sliceable switchいじればいいんじゃない? → 予想以上に大変。
      • マルチベンダ
      • デモシナリオ
      • すぐ core dump して止まっちゃう…
  • やってみて
    • 現場合わせでやることはたくさんある。事前準備難しい。試す〜直すのサイクルを速く回したい。
    • ruby の方が楽そうな気が。
      • 基盤はんだ付けするんじゃなくて、ブレッドボードで回路を試作する感じ

Interop Tokyo 2013 ShowNet

  • モニタシステム: 指定したトラフィックを抜き出す。
  • 次はruby版で
    • ruby 特有の構文に戸惑ったりしたけど…
  • 学ぶは「真似ぶ」
    • サンプルベースで。足しながら動かす。動かしつつ文法やライブラリを学ぶ。
    • 動くと楽しい! Sinatra とかいれはじめる。RESTとかWebUIとか。
  • コミットの数が 2012 よりだいぶ増えた。10倍?
  • ファイル名、jeje とか入ってて当時あまちゃんが流行ってたのがわかる…

RISE3.0

  • 運用してて見えてきた課題
  • ユーザ数
    • 同時収容ユーザ数が16, NEC PF5240のvirtual switch instance で仮想化。それが最大16個まで。
    • FlowVisor? 開発止まり気味…みたいなところもあってプロダクト機能に。
    • 機器の追加、スペースも電源も予算も…
  • 特定拠点にユーザが集中してしまう。
    • 4拠点でループくれ、みたいなリクエストが多い。JGNのトポロジ上使えるトポロジが限られる。
  • フルメッシュでない。
    • リンク増やすわけにもいかず…。買うにしても調達とか期間が。
    • pseudo wire もオペレーションが大変でそんなに頻繁にはできない。

RISE3.0

  • トポロジの問題から解決しよう
    • SDNそのものじゃないか?
    • User OFSとJGN-X Switchの間にトポロジ制御のためのRISE OFSをいれる。
      • Vlan Stack による論理パス
      • MACアドレス書き換えによる論理パス ← こっちを採用
  • MACアドレス書き換え
    • OFS仕様上、2Vlan tag push が性能でない。
    • QinQはJGN仕様上、原則使ってない
    • mac書き換える方が面白そうだから。
  • ruby trema で作ってみた。1か月くらいでコンセプト実装。1200行くらい。

まとめ

  • JGN-XとRISE
  • 乱暴に言うと、Cに対してRubyの方が10倍くらい生産性が向上? (生産性がコミット回数に比例と仮定)
    • 短期間で何か作る場合には特に。

Q&A

  • テナント数の制約ってどうなったの?
    • VSIは継続して使ってる。1拠点当たりの最大数制約は変わっていない。が、トポロジについては自由度増えたので、空いているところを使える。収容効率とか利用率の向上。RISE4.0でVSIの制約をどうにかしたい。ソフトウェアスイッチにして制限を外して州よするスライスの数を増やすとかは考えている。
Rubyで100行でルータ (NEC, 千葉さん)

100行でフル機能のIPルータ作っちゃおうぜ!

自己紹介

  • NW含むシステムを作ったり研究したり
  • 最近はOF/Tremaは道具としてナチュラルに業務に利用
  • Ruby勉強中

OF環境で完全なIPルータほしいんだけど

  • 世界各地でそういう話が!

目標、フル機能のIPルータをOF環境で提供しよう。できれば100行くらいで。

アプローチ

  • OFS -- OFC -- Routing Instance
    • use existing router /routing instance as slow-path
    • OFSのポートに入ったものはコントローラ経由でルーティングインスタンスに。
    • OFCはルーティングインスタンスから戻ったパケットを見てフローテーブルを書き込む。
    • フローエントリ書き込めればあとはスイッチ側で折り返す。
  • linux tap (vif) と namespace を使う。OFSのポートとOFC-Routing Instanceとのvifは同期。
  • route cache manager, routing instance でやった処理をキャッシュ

routing decision をどう取ってくるか

  • route cache/neighbor cache
  • netfilter
    • NFLOG (ulogd)
    • CT (cnnection track)(conntrack s-L)
    • Linux AUDIT (auditd)

つくってみた

  • Cだと448行
  • Rubyはまだ完成してないけどたぶん100行切る

まとめ

  • OFS/OFCでいろいろできるルータができる
  • 拡張

Q&A

  • Dockerっぽいのがみえたんだけどdocketをつかってる?
    • namespace を素で使ってる。
  • route-cache manager でちゃんと同期できる?
    • 正常系なら動くけど。キャッシュクリアしないといけないイベントはいろいろある。
  • ARPの解決ってどっちでやってる?
    • コントローラ側で。
  • こういうアーキテクチャの利点って?
    • そこにOFSがあって、それをルータにしたいとき。

LT編

(力尽きてるのでメモとってません…)

OVSの落とし穴(電通大, 内藤さん)
Reactive? Proactive? (Stratosphere, 川井さん)

資料: Openflow - Reactive? Proactive?

おわりに

  • Lagopus の人にステッカーもらったり。コードは7月末に公開になったそうです。

  • 某所で突然見たことのある名前が出てきたりして驚きました。何の気なしに出したモノでも見る人いるんだなあと改めて再認識。このへんはもうちょっとやりたいことがあるモノのなかなか手を動かせておらず。さてどうしようか。
  • 懇親会でつぼいさんと alexanderplatz1999/neutron-lan ってあれ誰だろうみたいな話した。誰ですか。作者の方は名乗り出ませんか。というかあそこまで作ってるんだったら trema day とかでしゃべることいろいろありそうなんですが…。
  • 川井さん「言語何か覚えようと思うと実際モノを作ってみないとなかなか…。OF仕様が隅々まで頭に入ってて、Go lang 覚えたいなと思うと、必然的に Go で OpenFlow Switch 作ろうってなってて、後はさくさく書いてた」的な話をしていてアレゲ感すごかったです。
  • 懇親会そのほか技術の話から非技術のはなしまで。結局4時間とか店にいたのか? 楽しゅうございました。

*1:NVシンポジウム | 電子情報通信学会 ネットワーク仮想化時限研究専門委員会

*2:注: 記録者よくわかってません。

*3:OF初期コードネーム

*4:注: 複数の独立したOF島だと1つのノードが複数の島を経由する際に、通過する島につながっているように見える(1つのノードがいろんなところにいるように見える)。それはもうそういうもんだってことでそれを加味してコントロールするようにしてしまったという話。