Trema Day #7 に参加してきた


http://trema.connpass.com/event/16844/

OpenFlow「で」おぼえるネットワーク

はじめに

  • 対象
    • ネットワークって何?って人にネットワークって何かを伝える
    • ネットワークに詳しい人は自分が説明する時のために

ネットワークのキホンのキ

  • 誰から誰宛に情報を伝えるもの(Src/Dst)
  • 伝える方法と伝える媒体
  • 音声もメディアを使うよね

  • 共有メディアで考えよう

    • ある人が喋るとみんなに聞こえる(flooding)
    • ある人が喋っていると他の人が喋れない(半二重)
    • 一緒にみんなが喋る(コリジョン)
    • 遠くの人に喋る(増幅)
    • 別の部屋にも伝達(L3)

デモ

今後ネタ

  • もっと同時に喋れる人を増やそう。共有メディアを狭めて同時に喋れる人を増やそう。

    -> ブリッジ

  • 誰がどこにいるか把握して直接くっつけてP2Pに
    -> スイッチ

  • ARP TableはknownとしてARP Request + Unicastコントロールルールを考えてみる

  • learning switch

  • 会話モデルで考えるNetwork Layer

ついにリリース! ニューTremaの紹介

ニューTremaの5つのポイント

  1. Openflow 1.3.4対応
    • trema run my_controller_rb --openflow13 -c my.conf
    • パケットライブラリ trema/pio参照
  2. Ruby化
    • 旧TremaはCをRubyでラップ
    • Ruby化で50,000行が5,000行くらいになった
    • インストールが簡単に。gccとかいらなくなった。openvswitchだけ準備でOK。
    • debugが楽に。Rubyのデバッガーだけでいい!
    • Pryでデバックしてみよう(demo)
  3. コントローラー連携
    • 既存コントローラーを組み合わせ高機能なコントローラーをつくる
    • 機能を拡張する
    • trema/routing_switch , Path Manager + trema/topology
    • def_delegators
    • VLAN的な動きはSliceable SwitchはPath Managerに機能を継承してあがればできる
  4. テスト
    • outputとして標準出力にログを吐く(Cucumber)
  5. ドキュメント
    • 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のどちら?
  • ホワイトボックスにコンテナ入れるのは嬉しい?

クラウド時代のネットワーク技術 OpenFlow実践入門 (Software Design plus)
高宮 安仁 鈴木 一哉
技術評論社 (2013-01-09)
売り上げランキング: 93,728
次世代ネットワーク制御技術 OpenFlow入門
石井秀治 大山裕泰 河合栄治
アスキー・メディアワークス
売り上げランキング: 600,388
マスタリングTCP/IP OpenFlow編
あきみち 宮永 直樹 岩田 淳
オーム社
売り上げランキング: 305,938

 シェアして頂けると嬉しいです

参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。