http://trema.connpass.com/event/16844/
OpenFlow「で」おぼえるネットワーク
はじめに
- 対象
- ネットワークって何?って人にネットワークって何かを伝える
- ネットワークに詳しい人は自分が説明する時のために
ネットワークのキホンのキ
- 誰から誰宛に情報を伝えるもの(Src/Dst)
- 伝える方法と伝える媒体
音声もメディアを使うよね
共有メディアで考えよう
- ある人が喋るとみんなに聞こえる(flooding)
- ある人が喋っていると他の人が喋れない(半二重)
- 一緒にみんなが喋る(コリジョン)
- 遠くの人に喋る(増幅)
- 別の部屋にも伝達(L3)
デモ
- Tremaではなくmininetで(笑)
- 資料参照(http://www.slideshare.net/stereocat55/tremaday7)
- 1本のワイヤで糸電話モデル
- mininet> xterm h3
今後ネタ
もっと同時に喋れる人を増やそう。共有メディアを狭めて同時に喋れる人を増やそう。
-> ブリッジ
誰がどこにいるか把握して直接くっつけてP2Pに
-> スイッチARP TableはknownとしてARP Request + Unicastコントロールルールを考えてみる
learning switch
会話モデルで考えるNetwork Layer
ついにリリース! ニューTremaの紹介
ニューTremaの5つのポイント
- Openflow 1.3.4対応
- trema run my_controller_rb --openflow13 -c my.conf
- パケットライブラリ trema/pio参照
- Ruby化
- 旧TremaはCをRubyでラップ
- Ruby化で50,000行が5,000行くらいになった
- インストールが簡単に。gccとかいらなくなった。openvswitchだけ準備でOK。
- debugが楽に。Rubyのデバッガーだけでいい!
- Pryでデバックしてみよう(demo)
- コントローラー連携
- 既存コントローラーを組み合わせ高機能なコントローラーをつくる
- 機能を拡張する
- trema/routing_switch , Path Manager + trema/topology
- def_delegators
- VLAN的な動きはSliceable SwitchはPath Managerに機能を継承してあがればできる
- テスト
- outputとして標準出力にログを吐く(Cucumber)
- ドキュメント
- Project:Pio
- APIドキュメントは整っている。
- 本も出るよ。原稿は近日中に公開。
- (嬉しい)バグ報告・パッチPR・本のレビュー
OVS拡張を援用して簡単なOpenFlow Programming(とPioの話)
trema/pio紹介
Pioとは?
- Rubyのパケットパーサ実装
- 使い易い、分かり易い
- 1.0だけでなく1.3.2も実装されている
こんな感じ
openflow
- Pio::FlowMod.new
- Pio::ICMP::Request.new
- Pio::Udp.new
- Pio::SendOutPort.new
features_reply.ports
- stateが人の目でみて扱い易い
Nicira拡張
Nicira拡張とは?
- vender拡張
- NXAST_LEARNが有名
openflowのキツいところ
controllerに転送処理を書く
controllerって
- 宣言的な転送ルールを事前定義できればいいのに
- BUMを例外として扱うべきか
packet_inはさせるな的な風潮
例外になる転送処理(一部)
- MAC Learning
- ARP Respond
- Routing & Egress interface lookup
- BUM
NXM_NX_REG(idx)
- Packet register fields
- pipelineフィールドでpacket_inのmatchフィールドにも入る
LOAD_REG / MOVE_REG / OUTPUT_RGE
NXAST_LEARN フロー追加するアクション
作ってみる
- learning-switch -> mac_learning(table=0)
isolated learning-switch -> ingress port(table=0), ingress vid(table=1), mac-filter(table=2), unicat-l2(table=3), bum-handling(table=4)
中身は小さすぎて見えなった・・・。
基本的にエッジで使うものと考えた方が良い。ARP__RESPONDERはBUM対策で便利。
いろいろなデバイスでOpenVNetを動かしてみようとした
tremaが使われているネットワークかそうかプロダクトOpenVNetとオーバーレイの話
Raspberry PiでTremaに挑戦した話
Edge Overlayのおさらい
図で説明
openstack neutornと親和性が高い/同じ方向性のものが覇権争い
Open VNetとは
- あくしゅさんが作ってる
- trema-edgeを使って作られています
- hypervisorの横にtremaベースのagent
作ってみた
- 最先端(?)の某端末で試験
- OVS / trema / open vnet
- デモ(見ないとわからない)
Dive into wireless openflow!
- なんか繋がらない
- なんか不安定
- なんか遅い
- 無線のパケットを観測できるツールが必要
APに入ってれば・・・
openflow 1.3 + experimenter
IEEE802.11 / 6LoWPAN
デモ
- 電波強度
- AP
- AP切り替え
openflow対応方法
- netdev = openflow port
- cfg80211系ドライバ
- 物理インタフェースにnetdevを複数作れる
- ARPHRD_RADIOTAP
Lagopusで遊ぶ(仮)
はじめに
Tremaで試すFirewallいいよね
- ACLしんどい
- シュミレーション、ACL自動テスト
openflow1.0ではL4ポートのrangeが使えない
Lagopasで試すFirewall
rangeどうする?
- range -> bitmask変換のアルゴリズム
- 0111 ~ 1111を再起的にマップを処理して{011*,1***}へ
TCP/UDPのポートどうする
- 1.3.2ならmetadataコピーすればいいじゃん
- maskでlookupできるし
- 26万ルール・・・
- Lagopasは100万を超えるフローを処理
実装どうする
- table0 : L4 srcをmetadataにコピー
- table1 : L4 dstをmetadataにコピー
- table2 : range変換。マッチしたら落とす。
ルールの追加/削除が動的にできる(priorityを考える必要あり)
iptablesより早いかも
Lagopusならなんとかしてくれるはず
近頃のDockerネットワーク
Dockerとは(略)
Software Infrastructure Plumbing
libnetwork
- コンテナネットワークモデル
- endpoint(veth)をsandbox(コンテナ)につけたり外したり
- 起動 -> libnetwork driverがdocker0作成・NAT設定 -> Linux kernel
- libnetwork driver(bridge / host / null / overlay / windows)
中身があるのはbridgeとoverlayくらい
overlay driver
- 1.8-experimental buildからdocker networkコマンドが追加
- libkv(consul/zookeeper/etcd等と連携)がnetwork名やIPを共有
- linux bridgeでbroadcast落としてる
- デモ
VLANドライバ作ってみた
- vlanidごとにbrを作成。bridgeドライバ流用できそう
- デモ
コンテナをネットワーク
- docker on cumulus linux
- 制約を考えると、、RunC!
- open container projextに準拠されたコンテナ管理ツール。Goでコンパイル。
- デモ
質問
- VNIは直書きできない?例えば箱物とかと組める?出口はgatewayの`コンテナ`を作るべし。
- VXLANはmulticast / unicastのどちら?
- ホワイトボックスにコンテナ入れるのは嬉しい?
技術評論社 (2013-01-09)
売り上げランキング: 93,728
アスキー・メディアワークス
売り上げランキング: 600,388
オーム社
売り上げランキング: 305,938