Skip to main content
QUICK REVIEW

[논문 리뷰] SNAP: Stateful Network-Wide Abstractions for Packet Processing

Mina Tahmasbi Arashloo, Yaron Koral|arXiv (Cornell University)|2015. 12. 02.
Software-Defined Networks and 5G참고 문헌 13인용 수 18
한 줄 요약

SNAP은 소프트웨어 정의 네트워크에서 상태 기반, 네트워크 전반의 프로그래밍 모델을 도입하여 물리적 네트워크를 하나의 논리적 스위치로 추상화하고 영구적인 글로벌 배열을 제공함으로써, 혼합 정수 선형 프로그래밍과 확장된 포워딩 결정 다이어그램(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.

연구 동기 및 목표

  • 물리적 네트워크를 영구적인 글로벌 배열이 있는 하나의 논리적 스위치로 추상화하여 분산된 상태 기반 네트워크 프로그래밍을 단순화한다.
  • 스위치 간에 상태 기반 데이터 구조를 수동으로 분포하고 최적화할 필요성을 제거한다.
  • 방화벽과 트래픽 모니터링과 같은 복잡한 상태 기반 응용 프로그램을 SDN 환경에서 효율적이고 정확하며 확장 가능한 방식으로 배포할 수 있도록 한다.
  • 분산된 상태 기반 데이터 플레인에서 상태 기반 작업과 트래픽 플로우 간의 의존성을 관리하는 과제를 해결한다.

제안 방법

  • SNAP 언어를 사용하면 프로그래머가 패킷 헤더 필드로 인덱싱된 글로벌이고 영구적인 배열을 사용하여 프로그래밍할 수 있으며, 물리적 분포를 추상화한다.
  • 컴파일러는 상태 기반 작업과 패킷 플로우 간의 읽기/쓰기 의존성을 모델링하기 위해 확장된 포워딩 결정 다이어그램(xFDD)을 구성한다.
  • xFDD 표현은 혼합 정수 선형 프로그래밍(MILP) 제약 조건의 시스템을 생성하는 데 사용되며, 이는 배열 배치와 트래픽 라우팅을 공동 최적화한다.
  • 컴파일러는 MILP를 사용하여 최적의 스위치 위치와 라우팅 경로를 결정함으로써 네트워크 혼잡도를 최소화하고 부하를 균형 잡는다.
  • 네트워크 트랜잭션을 통해 원자적 업데이트를 지원하여 분산된 상태 업데이트 간의 일관성을 보장한다.
  • 프로토타입 컴파일러는 고수준의 SNAP 프로그램을 저수준 스위치 구성으로 매핑하며, 다양한 토폴로지에서 20개의 다양한 프로그램으로 검증되었다.

실험 결과

연구 질문

  • RQ1정확성과 효율성을 유지하면서 SDN에서 분산된 상태 기반 패킷 처리를 프로그래밍하는 것을 단순화할 수 있는 방법은 무엇인가?
  • RQ2네트워크 전반의 상태 기반 데이터 플레인에서 상태 위치와 트래픽 라우팅을 공동 최적화할 수 있는 컴파일러 기법은 무엇인가?
  • RQ3스케일링 가능하고 조합 가능한 방식으로 상태 기반 작업과 패킷 플로우 간의 의존성을 모델링하고 분석할 수 있는 방법은 무엇인가?
  • RQ4물리적으로 분산된 네트워크에서 하나의 큰 스위치 프로그래밍 모델을 가능하게 하기 위해 필요한 추상화와 최적화는 무엇인가?
  • RQ5중앙 제어기 의존 없이 분산된 상태 업데이트의 원자성과 일관성을 보장할 수 있는 방법은 무엇인가?

주요 결과

  • SNAP 컴파일러는 다양한 네트워크 토폴로지에서 고수준의 상태 기반 프로그램을 효율적인 분산 스위치 구성으로 성공적으로 변환한다.
  • xFDD의 사용은 상태 기반 작업과 패킷 플로우 간의 복잡한 읽기/쓰기 의존성을 정확하게 모델링할 수 있도록 한다.
  • MILP를 통한 공동 최적화로 인해 단순하거나 휘도 기반 배치 전략에 비해 네트워크 혼잡도가 크게 감소하고 자원 활용도가 향상된다.
  • 프로토타입은 20개의 다양한 SNAP 프로그램에서 확장성을 입증하여 이론적 접근의 실용성을 확인했다.
  • 시스템은 상태 기반 방화벽, 트래픽 모니터링, 플로우 별 상태 추적과 같은 다양한 응용 프로그램을 정확하고 효율적으로 배포할 수 있다.
  • 특히 상태가 패킷 헤더 필드로 인덱싱될 경우, 상태 기반 NetKAT와 같은 대안 모델에 비해 지수적(compactness)으로 압축 가능하다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.