매치 플러스 액션
- ‘매치’와 ‘패킷’으로 이뤄진 2단계의 목적지 기반 포워딩
매치(match)
- 목적지 IP 주소를 찾는 것
- 프로토콜 스택의 다른 계층에서 다른 프로토콜과 관련된 여러 헤더 필드에 대해 ‘매치’ 수행 가능
액션(action)
- 매치 이후, 패킷을 스위치 구조로 지정된 하나 이상의 출력 포트로 전송하는 것
- 이는 목적지 기반 포워딩과 같은 역할
- 이는 목적지 기반 포워딩과 같은 역할
- 인터페이스에서 나가는 패킷을 로드 밸런싱(load balancing) 한 후, 헤더값을 다시 쓰는 역할
- 의도적으로 패킷을 차단/삭제 및 추가 처리 작업을 위해 특수 서버로 패킷을 보내는 작업을 함
- 패킷을 차단/삭제하는 것은 방화벽과 같은 기능
- 추가 작업 처리는 DPI와 비슷한 동작
매치 플러스 액션 테이블
- 매치 플러스 액션 테이블은 원격 컨트롤러를 통해 계산, 설치, 갱신된다.
- 개별 패킷 스위치의 제어 구성요소가 서로 상호작용이 가능하기는 함
→ 실제로는 일반화된 매치 플러스 액션 기능이 원격 컨트롤러를 통해 계산, 설치, 갱신됨
일반화된 포워딩 : OpenFlow
OpenFlow
: 명확하고 간결한 방식으로 SDN 개념 및 기능을 도입한 일반화된 포워딩 기술(프로토콜)- 일반화된 포워딩의
매치 플러스 액션 테이블
은 목적지 기반 포워딩 테이블의 개념을 일반화함
일반화된 포워딩과 목적지 기반 포워딩의 차별점
- 이는 2가지의 기반을 둔다.
- ‘매치 플러스 액션’ 포워딩의 개념화 및 컨트롤러
- SDN의 개념을 도입(혁명)
플로우 테이블(Flow Table)
- OpenFlow의
매치 플러스 액션 포워딩 테이블
을 부르는 용어 - 플로우 테이블의 각 엔트리가 포함하는 특성
- 들어오는 패킷에 대한 헤더값들의 세트가 매치될 것이다.
- 하드웨어 기반 매치는 TCAM 메모리에서 가장 신속하게 수행
- 백만 개가 넘는 목적지 주소를 동반한다.
- 플로우 테이블 엔트리와 매치되지 않는 패킷은 원격 컨트롤러로 전송 가능(처리율 증가)
- 패킷들에 의해 갱신되는
카운터 세트
는 플로우 테이블 엔트리들과 매치된다.- 이러한 카운터는 플로우 테이블 엔트리와 마지막으로 갱신된 테이블 엔트리
이후에 매치된 다수의 패킷을 포함하고 있다.
- 이러한 카운터는 플로우 테이블 엔트리와 마지막으로 갱신된 테이블 엔트리
- 패킷은 플로우 테이블 엔트리와 매치될 때 여러 가지 액션이 가능해진다.
- 할 수 있는 액션
- 패킷을 지정된 출력 포트로 전달
- 패킷을 삭제하고, 복사본을 만들어 여러 출력 포트로 보낸다.
- 선택한 헤더 필드를 다시 쓴다.
- 할 수 있는 액션
- 들어오는 패킷에 대한 헤더값들의 세트가 매치될 것이다.
- 플로우 테이블은 본질적으로 API이며, 개별 패킷 스위치의 동작을 프로그래밍할 수 있는 개념
→ 네트워크 패킷 스위치 테이블을 적절하게 프로그래밍/구성함으로써 유사하게 가능하다.
OpenFlow의 매치(match)
- 매치 플러스 액션 규칙에서 매치될 수 있는 11개의 패킷 헤더 필드와 수신 포트 ID
패킷 매치 필드
출발지 및 목적지 MAC 주소 필드
- 프레임의 송신 및 수신 인터페이스와 연관된 링크 계층 주소라고 할 수 있음
- IP 주소가 아닌 이더넷 주소를 기반으로 전달함
→ OpenFlow 지원 장치가 스위치(2 계층 장치) 포워딩 프레임뿐만 아니라
라우터(3 계층 장치) 포워딩 데이터그램과 동일한 성능을 발휘한다.
이더넷 타입 필드
- 상위 계층의 프로토콜, 즉 프레임의 페이로드가 역다중화되는 프로토콜(예: IP)에 해당됨
- 상위 계층의 프로토콜, 즉 프레임의 페이로드가 역다중화되는 프로토콜(예: IP)에 해당됨
VLAN ID 필드
: 가상 로컬 영역 네트워크와 관련됨진입 포트
: 패킷이 수신되는 패킷 스위치의 입력 포트를 나타냄IP 출발지, 목적지
: 자신의 IP 주소와 목적지의 IP 주소를 넣는 곳IP 프로토콜
: IP 데이터그램이 최종 목적지에 도달했을 때 사용, 특정 프로토콜을 명시IP TOS(서비스 타입)
: 각 다른 유형의 IP 데이터그램을 구별할 때 쓰임- 트랜스포트 계층 출발지와 목적지 포트 번호 필드도 매치될 수 있다.
플로우 테이블 엔트리의 와일드카드
- 플로우 테이블 엔트리에는 와일드카드도 있을 수 있다.
- 예시
- 플로우 테이블의 128.119.. IP 주소
→ 128.119를 주소의 첫 번째 16비트를 갖는 데이터그램의 해당 주소 필드와 매치됨
- 플로우 테이블의 128.119.. IP 주소
플로우 테이블 엔트리의 우선순위
- 각 플로우 테이블 엔트리에는 관련된 우선순위가 존재한다.
- 패킷이 여러 플로우 테이블 엔트리와 매치되는 경우
→ 선별된 매치 엔트리에 해당되는 패킷이 엔트리의 가장 높은 우선순위가 됨
잘 매치되는 필드와 그렇지 않은 필드가 존재하는 이유
- IP 헤더의 모든 필드가 매치될 수 있는 것은 아니다.→ 기능과 복잡성 간의 절충을 위해서
- 추상화 선택 기술의 목적
- 너무 많은 세부사항과 일반성을 가진 추상화에 과도한 부담을 주지 않는 것
- 동시에 작업을 수행하기에 충분한 기능을 제공하는 것.
버틀러 랩슨 -
한 번에 한 가지 일을 하고, 잘하라. 인터페이스는 추상화의 최소 필수 요소를 차지한다.
일반화하지 마라. 일반화는 일반적을 잘못됐다.
OpenFlow의 액션
- 각 플로우 테이블 엔트리
→ 플로우 테이블 엔트리와 매치되는 패킷 처리를 결정하는 0개 이상의 액션 목록을 가짐 - 여러 액션이 있는 경우 목록에 지정된 순서대로 수행
중요한 액션
포워딩(forwarding)
- 들어오는 패킷은 특정 실제 출력 포트로 전달되거나 모든 포트를 통해 브로드캐스트 되거나,
선택된 포트 세트를 통해 멀티캐스트 될 수 있다. - 패킷은 캡슐화되어 원격 컨트롤러로 전송될 수 있다.
→ 다음 컨트롤러는 새 플로우 테이블 엔트리를 설치하고 해당 패킷에 대한 조치를 취할 수 있음- 갱신된 플로우 테이블 규칙에 따라 포워딩을 위해 패킷을 장치를 반환 가능
- 갱신된 플로우 테이블 규칙에 따라 포워딩을 위해 패킷을 장치를 반환 가능
- 들어오는 패킷은 특정 실제 출력 포트로 전달되거나 모든 포트를 통해 브로드캐스트 되거나,
삭제(dropping)
: 아무 액션이 없는 플로우 테이블 엔트리는 매치된 패킷을 삭제해야 함을 나타냄필드 수정(modify-field)
- 패킷이 선택된 출력 포트를 전달되기 전에 10개의 패킷 헤더 필드의 값을 다시 쓸 수 있음
매치 플러스 액션 작업의 OpenFlow 예
가정
- 네트워크에는 6개의 호스트(h1, h2, h3, h4, h5, h6)와 3개의 패킷 스위치(s1, s2, s3)가 존재
- 각각 4개의 로컬 인터페이스(1~4까지 번호가 매겨짐)가 있음
- 구현하고자 하는 것
- 네트워크 전반의 다양한 동작을 고려하고,
이 동작을 구현하는데 필요한 s1, s2, s3의 플로우 테이블 엔트리를 고려하는 것
- 네트워크 전반의 다양한 동작을 고려하고,
첫 번째 예 : 간단한 포워딩
- 포워딩 동작
- h3 또는 h4로 예정된 h5 또는 h6의 패킷
- s3에서 s1로 전달
- 그다음 s1에서 s2로 전달
- 따라서 s3와 s2 사이의 링크 사용을 완전히 피할 수 있음
- s1의 플로우 테이블 엔트리
- s3에 플로우 테이블 엔트리가 필요
→ h5 or h6에서 전송된 데이터그램은 인터페이스 3을 통해 s1로 전달
- s3에 플로우 테이블 엔트리가 필요
- h3 또는 h4로 예정된 h5 또는 h6의 패킷
- 마지막으로 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가 s3에 연결된 호스트에서 보낸 트래픽만 수신하려고 하는 방화벽 시나리오
- s2의 플로우 테이블에 다른 엔트리가 없으면 10.3.. 의 트래픽만 s2에 연결된 호스트에 전달됨
3가지 예시로 얻은 결론
- 일반화된 포워딩의 다양성과 장점은 명백하다는 점