호우동의 개발일지

Today :

article thumbnail

매치 플러스 액션

  • ‘매치’와 ‘패킷’으로 이뤄진 2단계의 목적지 기반 포워딩

 


매치(match)

  • 목적지 IP 주소를 찾는 것
  • 프로토콜 스택의 다른 계층에서 다른 프로토콜과 관련된 여러 헤더 필드에 대해 ‘매치’ 수행 가능

 


액션(action)

  • 매치 이후, 패킷을 스위치 구조로 지정된 하나 이상의 출력 포트로 전송하는 것
    • 이는 목적지 기반 포워딩과 같은 역할

  • 인터페이스에서 나가는 패킷을 로드 밸런싱(load balancing) 한 후, 헤더값을 다시 쓰는 역할
  • 의도적으로 패킷을 차단/삭제 및 추가 처리 작업을 위해 특수 서버로 패킷을 보내는 작업을 함
    • 패킷을 차단/삭제하는 것은 방화벽과 같은 기능
    • 추가 작업 처리는 DPI와 비슷한 동작

일반화된 포워딩: 각각의 패킷 스위치는 원격 컨트롤러에 의해 계산 및 분포된 매치 플러스 액션 테이블을 포함하고 있음
일반화된 포워딩: 각각의 패킷 스위치는 원격 컨트롤러에 의해 계산 및 분포된 매치 플러스 액션 테이블을 포함하고 있음

 


매치 플러스 액션 테이블

  • 매치 플러스 액션 테이블은 원격 컨트롤러를 통해 계산, 설치, 갱신된다.
  • 개별 패킷 스위치의 제어 구성요소가 서로 상호작용이 가능하기는 함
    → 실제로는 일반화된 매치 플러스 액션 기능이 원격 컨트롤러를 통해 계산, 설치, 갱신됨

 


일반화된 포워딩 : OpenFlow

  • OpenFlow : 명확하고 간결한 방식으로 SDN 개념 및 기능을 도입한 일반화된 포워딩 기술(프로토콜)
  • 일반화된 포워딩의 매치 플러스 액션 테이블은 목적지 기반 포워딩 테이블의 개념을 일반화함

 


일반화된 포워딩과 목적지 기반 포워딩의 차별점

  • 이는 2가지의 기반을 둔다.
    1. ‘매치 플러스 액션’ 포워딩의 개념화 및 컨트롤러
    2. SDN의 개념을 도입(혁명)

 


플로우 테이블(Flow Table)

  • OpenFlow의 매치 플러스 액션 포워딩 테이블을 부르는 용어
  • 플로우 테이블의 각 엔트리가 포함하는 특성
    • 들어오는 패킷에 대한 헤더값들의 세트가 매치될 것이다.
      • 하드웨어 기반 매치는 TCAM 메모리에서 가장 신속하게 수행
      • 백만 개가 넘는 목적지 주소를 동반한다.
      • 플로우 테이블 엔트리와 매치되지 않는 패킷은 원격 컨트롤러로 전송 가능(처리율 증가)

    • 패킷들에 의해 갱신되는 카운터 세트는 플로우 테이블 엔트리들과 매치된다.
      • 이러한 카운터는 플로우 테이블 엔트리와 마지막으로 갱신된 테이블 엔트리
        이후에 매치된 다수의 패킷을 포함하고 있다.

    • 패킷은 플로우 테이블 엔트리와 매치될 때 여러 가지 액션이 가능해진다.
      • 할 수 있는 액션
        1. 패킷을 지정된 출력 포트로 전달
        2. 패킷을 삭제하고, 복사본을 만들어 여러 출력 포트로 보낸다.
        3. 선택한 헤더 필드를 다시 쓴다.

  • 플로우 테이블은 본질적으로 API이며, 개별 패킷 스위치의 동작을 프로그래밍할 수 있는 개념
    → 네트워크 패킷 스위치 테이블을 적절하게 프로그래밍/구성함으로써 유사하게 가능하다.

 


OpenFlow의 매치(match)

  • 매치 플러스 액션 규칙에서 매치될 수 있는 11개의 패킷 헤더 필드와 수신 포트 ID

OpenFlow 매치 필드
OpenFlow 매치 필드

패킷 매치 필드

  • 출발지 및 목적지 MAC 주소 필드
    • 프레임의 송신 및 수신 인터페이스와 연관된 링크 계층 주소라고 할 수 있음
    • IP 주소가 아닌 이더넷 주소를 기반으로 전달함
      → OpenFlow 지원 장치가 스위치(2 계층 장치) 포워딩 프레임뿐만 아니라
      라우터(3 계층 장치) 포워딩 데이터그램과 동일한 성능을 발휘한다.

  • 이더넷 타입 필드
    • 상위 계층의 프로토콜, 즉 프레임의 페이로드가 역다중화되는 프로토콜(예: IP)에 해당됨

  • VLAN ID 필드 : 가상 로컬 영역 네트워크와 관련됨
  • 진입 포트 : 패킷이 수신되는 패킷 스위치의 입력 포트를 나타냄
  • IP 출발지, 목적지 : 자신의 IP 주소와 목적지의 IP 주소를 넣는 곳
  • IP 프로토콜 : IP 데이터그램이 최종 목적지에 도달했을 때 사용, 특정 프로토콜을 명시
  • IP TOS(서비스 타입) : 각 다른 유형의 IP 데이터그램을 구별할 때 쓰임
  • 트랜스포트 계층 출발지와 목적지 포트 번호 필드도 매치될 수 있다.

 

플로우 테이블 엔트리의 와일드카드

  • 플로우 테이블 엔트리에는 와일드카드도 있을 수 있다.
  • 예시
    • 플로우 테이블의 128.119.. IP 주소
      → 128.119를 주소의 첫 번째 16비트를 갖는 데이터그램의 해당 주소 필드와 매치됨

 

플로우 테이블 엔트리의 우선순위

  • 각 플로우 테이블 엔트리에는 관련된 우선순위가 존재한다.
  • 패킷이 여러 플로우 테이블 엔트리와 매치되는 경우
    → 선별된 매치 엔트리에 해당되는 패킷이 엔트리의 가장 높은 우선순위가 됨

 

잘 매치되는 필드와 그렇지 않은 필드가 존재하는 이유

  • IP 헤더의 모든 필드가 매치될 수 있는 것은 아니다.→ 기능과 복잡성 간의 절충을 위해서
  • 추상화 선택 기술의 목적
    • 너무 많은 세부사항과 일반성을 가진 추상화에 과도한 부담을 주지 않는 것
    • 동시에 작업을 수행하기에 충분한 기능을 제공하는 것.

 

버틀러 랩슨 -
한 번에 한 가지 일을 하고, 잘하라. 인터페이스는 추상화의 최소 필수 요소를 차지한다.
일반화하지 마라. 일반화는 일반적을 잘못됐다.

 


OpenFlow의 액션

  • 각 플로우 테이블 엔트리
    → 플로우 테이블 엔트리와 매치되는 패킷 처리를 결정하는 0개 이상의 액션 목록을 가짐

  • 여러 액션이 있는 경우 목록에 지정된 순서대로 수행

 

중요한 액션

  • 포워딩(forwarding)
    • 들어오는 패킷은 특정 실제 출력 포트로 전달되거나 모든 포트를 통해 브로드캐스트 되거나,
      선택된 포트 세트를 통해 멀티캐스트 될 수 있다.
    • 패킷은 캡슐화되어 원격 컨트롤러로 전송될 수 있다.
      → 다음 컨트롤러는 새 플로우 테이블 엔트리를 설치하고 해당 패킷에 대한 조치를 취할 수 있음
      • 갱신된 플로우 테이블 규칙에 따라 포워딩을 위해 패킷을 장치를 반환 가능

  • 삭제(dropping) : 아무 액션이 없는 플로우 테이블 엔트리는 매치된 패킷을 삭제해야 함을 나타냄
  • 필드 수정(modify-field)
    • 패킷이 선택된 출력 포트를 전달되기 전에 10개의 패킷 헤더 필드의 값을 다시 쓸 수 있음

 


매치 플러스 액션 작업의 OpenFlow 예

OpenFlow 컨트롤러 6개의 호스트, 3개의 패킷 스위치가 있는 매치 플러스 액션
OpenFlow 컨트롤러 6개의 호스트, 3개의 패킷 스위치가 있는 매치 플러스 액션

 

가정

  • 네트워크에는 6개의 호스트(h1, h2, h3, h4, h5, h6)와 3개의 패킷 스위치(s1, s2, s3)가 존재
  • 각각 4개의 로컬 인터페이스(1~4까지 번호가 매겨짐)가 있음
  • 구현하고자 하는 것
    • 네트워크 전반의 다양한 동작을 고려하고,
      이 동작을 구현하는데 필요한 s1, s2, s3의 플로우 테이블 엔트리를 고려하는 것

 

첫 번째 예 : 간단한 포워딩

  • 포워딩 동작
    • h3 또는 h4로 예정된 h5 또는 h6의 패킷
      1. s3에서 s1로 전달
      2. 그다음 s1에서 s2로 전달
      • 따라서 s3와 s2 사이의 링크 사용을 완전히 피할 수 있음

    • s1의 플로우 테이블 엔트리
      • s3에 플로우 테이블 엔트리가 필요
        → h5 or h6에서 전송된 데이터그램은 인터페이스 3을 통해 s1로 전달

테이블 엔트리
테이블 엔트리

  • 마지막으로 s1에서 도착한 데이터그램을 호스트 h3 또는 h4에 전달할 수 있도록 s2에 플로우 테이블 엔트리가 필요
    • Ingress Port : 입구(출입) 포트

 

두 번째 예 : 로드 밸런싱(Load Balancing)

  • 가정된 시나리오
    • 10.1..로 향하는 데이터그램이 s2와 s1 사이의 링크를 통해 전달
    • 동시에 h4에서 10.1.. 로이 데이터그램은 s2에서 s3 사이의 링크를 통해 전달됨
    • 로드 밸런싱이 필요한 시나리오 → 이 동작은 IP의 목적지 기반 포워딩으론 수행 불가능
  • 이 경우 s2 플로우 테이블

엔트리 테이블
엔트리 테이블

  • S2에서 수신한 데이터그램을 h1 또는 h2로 전달해야 함
    → s1에서 플로우 테이블 엔트리가 필요

  • 인터페이스 4에서 수신한 데이터그램을 s2에서 인터페이스 3을 통해 s1로 전달해야 함
    → s3에서 플로우 테이블 엔트리가 필요

  • s1 및 s3에서 이러한 플로우 테이블 엔트리를 파악할 수 있는 확인 해야 함

 

세 번째 예 : 방화벽

  • 가정된 시나리오
    • s2가 s3에 연결된 호스트에서 보낸 트래픽만 수신하려고 하는 방화벽 시나리오

  • s2의 플로우 테이블에 다른 엔트리가 없으면 10.3.. 의 트래픽만 s2에 연결된 호스트에 전달됨

엔트리 테이블
엔트리 테이블

 


3가지 예시로 얻은 결론

  • 일반화된 포워딩의 다양성과 장점은 명백하다는 점