Skip to main content
QUICK REVIEW

[論文レビュー] SNAP: Stateful Network-Wide Abstractions for Packet Processing

Mina Tahmasbi Arashloo, Yaron Koral|arXiv (Cornell University)|Dec 2, 2015
Software-Defined Networks and 5G参考文献 13被引用数 18
ひとこと要約

SNAPは、物理的ネットワークを1つの論理的スイッチと一貫したグローバル配列として抽象化する、ステートフルでネットワーク全体にわたるプログラミングモデルを導入する。このモデルにより、混合整数線形プログラミング(MILP)と拡張型フォワーディング意思決定図(xFDD)を用いて、配列配置とトラフィックルーティングを共同最適化するコンパイラを通じて、分散スイッチ間でのステートフルパケット処理の効率的かつ正しい配布が可能になる。

ABSTRACT

Early programming languages for software-defined networking (SDN) were built on top of the simple match-action paradigm offered by OpenFlow 1.0. However, emerging hardware and software switches offer much more sophisticated support for persistent state in the data plane, without involving a central controller. Nevertheless, managing stateful, distributed systems efficiently and correctly is known to be one of the most challenging programming problems. To simplify this new SDN problem, we introduce SNAP. SNAP offers a simpler "centralized" stateful programming model, by allowing programmers to develop programs on top of one big switch rather than many. These programs may contain reads and writes to global, persistent arrays, and as a result, programmers can implement a broad range of applications, from stateful firewalls to fine-grained traffic monitoring. The SNAP compiler relieves programmers of having to worry about how to distribute, place, and optimize access to these stateful arrays by doing it all for them. More specifically, the compiler discovers read/write dependencies between arrays and translates one-big-switch programs into an efficient internal representation based on a novel variant of binary decision diagrams. This internal representation is used to construct a mixed-integer linear program, which jointly optimizes the placement of state and the routing of traffic across the underlying physical topology. We have implemented a prototype compiler and applied it to about 20 SNAP programs over various topologies to demonstrate our techniques' scalability.

研究の動機と目的

  • 物理的ネットワークを一貫したグローバル配列を持つ1つの論理的スイッチとして抽象化することで、分散型ステートフルネットワークのプログラミングを簡素化すること。
  • スイッチ間でのステートフルデータ構造の手動による分散と最適化の必要性を排除すること。
  • ファイアウォールやトラフィックモニタなど、複雑なステートフルアプリケーションをSDN環境で効率的かつスケーラブルに正しくデプロイできること。
  • 分散型ステートフルデータプレーンにおけるステートフル操作とトラフィックフロー間の依存関係を管理する課題に対処すること。

提案手法

  • SNAP言語により、プログラマはパケットヘッダーフィールドでインデックスが付いたグローバルで永続的な配列を用いてプログラムを記述でき、物理的分散を抽象化する。
  • コンパイラは、ステートフル操作とパケットフロー間の読み書き依存関係をモデル化するための拡張型フォワーディング意思決定図(xFDD)を構築する。
  • xFDD表現を用いて、配列配置とトラフィックルーティングを共同最適化する混合整数線形プログラミング(MILP)制約系を生成する。
  • コンパイラはMILPを用いて、最適なスイッチにおける状態配列の配置場所とルーティング経路を決定することで、ネットワークの混雑を低減し、負荷をバランスさせる。
  • ネットワークトランザクションを介したアトミックな更新により、分散状態更新における一貫性を保証する。
  • プロトタイプコンパイラは、複数のトポロジにまたがる20の多様なプログラムに対して、高レベルのSNAPプログラムを低レベルのスイッチ設定にマッピングし、検証された。

実験結果

リサーチクエスチョン

  • RQ1ステートフルで分散型のパケット処理をSDNでプログラミングする際、正しさと効率性を維持しながら、どのように簡素化できるか?
  • RQ2ネットワーク全体のステートフルデータプレーンにおいて、状態配置とトラフィックルーティングを共同最適化するためのコンパイラ技術は何か?
  • RQ3ステートフル操作とパケットフロー間の依存関係を、スケーラブルかつ合成可能なかたちでモデル化・分析するにはどうすればよいか?
  • RQ4物理的に分散されたネットワーク上で1台の大きなスイッチのプログラミングモデルを実現するために、どのような抽象化と最適化が必要か?
  • RQ5中央コントローラーに依存せずに、分散状態更新におけるアトミシティと一貫性をどのように保証できるか?

主な発見

  • SNAPコンパイラは、さまざまなネットワークトポロジにおいて、高レベルのステートフルプログラムを効率的で分散型のスイッチ設定に成功して変換した。
  • xFDDの使用により、ステートフル操作とパケットフロー間の複雑な読み書き依存関係を正確にモデル化できるようになった。
  • MILPによる共同最適化は、単純な配置戦略やヒューリスティックな戦略と比較して、ネットワークの混雑を顕著に低減し、リソース利用効率を向上させた。
  • プロトタイプは20の多様なSNAPプログラムにおいてスケーラビリティを示し、本アプローチが実世界のステートフルアプリケーションに適用可能であることを確認した。
  • システムは、ステートフルファイアウォール、トラフィックモニタリング、フロー単位の状態追跡など、幅広いアプリケーションを正しくかつ効率的にデプロイ可能である。
  • 状態がパケットヘッダーフィールドでインデックス付けされる場合、本アプローチは、ステートフルNetKATのような代替モデルに比べて指数的(compact)に小さくなる。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。