azの書き捨て

一般美少女社会人の穏やかな生活

p4 tutorial のpdfの英語が読めないのでブログを用いてゆっくり翻訳する #1

クリティカルな部分が間違っていたら非常にやさしく教えてください。 意訳が多分に含まれるので参考にしないでください。

今回読むもの

github.com

これ。

p2 goals

  • p4lang を学習する。
    • 今までのアプリケーション
    • 新しいアプリケーション
  • p4のソフトウェアツールを学習する。
  • p4の対象ハードウェアを学習する。
    • ミニワークショップで手法のまとめ: Barefoot, Netronome, Netcope, NetFPGA
  • いろいろなnetworking
  • 楽しんで!

用語
BMv2: リファレンスベースのソフトウェアによる仮想基盤のこと?P4による実験を行うのに適している?
ランタイム: ふわふわ理解につきもう一度調べなおした。プログラムのライブラリなど、実行時に利用するもの。情報卒でこんな単語をわかっていなくてすみません…
Barefoot, Netronome, Netcope, NetFPGA: 製品名?

p3 データプレーンのプログラミングとは?

ソフトウェア定義のネットワーキング: 論理的に一元化されたコントロール

論理的に一元化されたコントロール→分散型ネットワーキングってことっぽい。
コントローラがswitch等の各機器を制御する、みたいなことをlogically centralized controlと呼ぶらしい、知見~

  • 主な貢献(contributions)

    • OpenFlow: 標準化済

      • match/actionの抽象化
        *OpenFlow: 標準化されたswitchと相互作用するプロトコル
      • フローテーブルやクエリ統計など。(フローはOpenFlow独自の考え方で、通信ルールの集合体という意味)
    • 分散型ネットワーキングのコンセプト -> SDNコントローラの存在

      • シンプルなコントロールプレーン
        例: 一か所(コントローラ)での最適path計算 vs ルーティングアルゴリズムの経路交換完了までの待機
  • 問題点

    • データプレーンのプロトコルの発展は標準からの変化を余儀なくされた
      ex) OpenFlowのフローテーブルのマッチタイプが12 -> 40に
    • ベンダ間での相互運用性の制限 -> 下り通信に対するI/Fの違いをコントローラでハンドルする
      ex) OpenFlow, netconf, JSON, XML variants...

p4 現状: ボトムアップデザイン

"パケットの処理をどのようにするか、つまり集積回路のデータシートがルールを作る"、ルールをswitch OSに要求できない
処理したASICに対して、ドライバが定義され、ランタイムAPIでドライバを触り、Switch OSがランタイムAPIをたたく の流れ?

p5 より良いアプローチ: トップダウンデザイン

"ネットワークにどのようにふるまってほしいか、どのようにパケットの経路制御をしてほしいか…": ユーザやコントローラがルールを定義、それをOSに要求
OSは要求をランタイムAPIに通し、ドライバからP4へ伝えられる(ここがよくわからないが)、それによりデバイス(回路)をOSから制御可能
OSはフィードバックをネットワークに対し行う: ここでのフィードバックは実行という意味かな…

p6 データプレーンのプログラム性の利点

  • 新機能: 新しいプロトコルを新規で追加可能
  • 複雑さの削減: 利用しないプロトコルの削除
  • リソースの効率的活用: テーブルの柔軟な利用
  • より優れた可視性: 新たな診断ツール, テレメトリ(各環境の稼働状況を回線を用いて収集・分析すること), など
  • SW(ソフトウェア?)スタイルの開発: 急速なデザインサイクル、速い変革、データプレーンのバグをその場で修正
  • あなたのアイデアを試せる! プロトコルを用いるより、良いプログラミングを思考する…

p7 プログラム可能なネットワークデバイス

  • PISA: 柔軟なmatch+action 回路
    • Intel Flexpipe, Cisco Doppler, Cavium(Xpliant), Barefoot Tofino, ...
  • NPU: ネットワークプロセッサ
    • EZchip, Netronome
  • CPU
    • Open Vswitch, eBPF. DPDK, VPP...
  • FPGA

これらのデバイスは、パケットプロセスを教えるのが可能となっている。

p8 たとえばP4で何ができるの?

  • L4ロードバランサ - SilkRoad
  • 低遅延の混雑緩和 - NDP
  • 帯域内ネットワークテレメトリ - INT
  • 鍵保存のための高速なネットワーク内キャッシュ - NetCache
  • 通信速度の合致 - NetPaxos
  • 分散コンピューティングの統計処理

などなど。

p9 歴史

2013~からの歴史がありますよって話。読めばふーんなので割愛

p10 - p11 データプレーンモデル PISAとは?

PISA: Protocol Independent Switch Architecture(プロトコル依存のないスイッチアーキテクチャ
まずパケットが流入する
-> プログラマはパーサにて、ヘッダの解釈とその順番を明記しておく
-> プログラマはmatch-actionパイプライン上において、テーブルと綿密な制御アルゴリズムを定義しておく
-> プログラマはデパーサにて、回線で解釈可能なようにパケットの出力を明記しておく
-> 射出

p12 PISAの動作について

  • パケットは個々のヘッダにパースされる: パース・リプレゼンテーション
  • ヘッダとその中間体において、match/actionが行えるように変換される
  • ヘッダは追記したり削除したりなど、修正が可能となる
  • 最終的にパケットがシリアライズ(デパース)される

おわり

全然読めてないけど今日はここまで。