▶ 일반화된 포워딩
- 앞전에 “목적지 기반의 포워딩”(http://movefast.tistory.com/40)에 대해 알아보았는데, 이 포워딩 방법은 목적지 IP 주소만을 가지고 포워딩하는 방식으로, 제어 영역(Control Plane)에 의해 생성된 “포워딩 테이블(Forwarding Table)”을 참고하여 패킷(데이터)이 전달되어진다.
- 지금부터 살펴볼 “일반화된 포워딩”기법은 제어 영역에 의해 생성되는 “플로우 테이블(Flow Table)”을 참고하여 패킷(데이터)를 전달한다. 아래는 해당 포워딩 기법을 이해하기 위해 필요한 개념을 소개한다.
- 각각의 라우터는 중앙에 집중된 라우팅 컨트롤러(중앙 관리 방식)에 의해 계산되고 배포된 Flow Table을 포함한다.
▶ 소프트웨어 정의 네트워킹(Software Defined Network, SDN)
- 등장 배경
- 네트워크 환경의 변화
트래픽 패턴(방식) 변화 : 트래픽이 데이터 센터를 중심으로 전환되고 있다.
- 가상화(VM)의 보편화로 호스트의 빈번한 이동
- 네트워크 관리의 필요성
- 소프트웨어로 네트워크 경로를 설정 및 제어 그리고 운용 관리를 처리할 수 있다.
- 즉, 하나의 물리 네트워크 환경에서 다수의 가상 네트워크 환경을 구축할 수 있다.
- 원리 : 라우터의 제어 부분과 데이터 전송 부분을 분리하고 개방형 인터페이스를 외부에 제공한다.
- “분리”라는 것은, 네트워크 장비가 포함된 인프라 계층은 “단순히 패킷을 전달”만 하는 역할을 하고, 소프트웨어 제어기(Controller)를 프로그래밍하여 “데이터의 흐름을 제어”하는 상황을 의미한다.
- 즉, 컨트롤러에서 데이터의 흐름을 제어하게 되면, 패킷이 발생했을 때 네트워크 장비는 패킷을 어디로 전달할지 컨트롤러에게 물어보고 결과를 반영한다.
▶ OpenFlow
- SDN을 구현하기 위해 처음으로 제정된 표준 인터페이스이다.
- OpenFlow 스위치, OpenFlow 컨트롤러로 구성되며, 흐름(flow) 정보를 제어하여 패킷의 전달 경로 및 방식을 결정한다.
- “흐름”이란 패킷의 출발지와 목적지 정보를 가진 데이터라고 볼 수 있다.
- OpenFlow 스위치 내부에는 "패킷 전달 경로와 방식에 대한 정보"를 가지고 있는 "Flow Table"이 존재한다.
- 기본 동작
1. 패킷 발생 시 Flow Table이 해당 패킷의 정보가 있는지 확인
-> 정보가 존재하면 패킷 바로 처리
-> 정보가 존재하지 않으면 OpenFlow 컨트롤러에게 해당 패킷에 대한 제어 정보를 요청
2. 스위치로부터 제어정보를 요청받은 컨트롤러는 내부에 존재하는 패킷 제어 정보를 확인하고, 해당 결과를 스위치에게 전달
3. 스위치는 받은 데이터를 Flow Table에 저장하고, 이후 동일 패킷 발생 시 Flow Table의 정보를 활용하여 패킷을 전달한다.
* FlowTable에 등록된 제어 정보는 영구적으로 저장하거나 정해진 시간 동안만 유지할 수 있다.
▶ OpenFlow 데이터 영역
- 흐름(flow) : 헤더 필드에 의해 정의되어지는데, 프레임의 2~5계층 헤더 필드값이 동일한 경우 같은 flow로 본다. IPv6에서는 흐름 라벨(flow label)로 빠르게 판단가능하다.
- 기존의 목적지 기반의 포워딩은 앞서 언급했듯이 단순히 목적지 IP주소만 보고 포워딩을 했으나 일반화된 포워딩은 몇 가지 간단한 패킷 처리 규칙이 있다.
- 패턴(Pattern) : 패킷의 헤더 필드값과 일치 여부를 결정
패턴이 일치한 패킷의 처리(Actions) : 해당 패킷을 삭제(drop), 전달(forward), 수정(modify), 또는 컨트롤러에게 전송한다.
우선순위(Priority) : 중첩되는 패턴을 구분한다.
통계(Counters) : 트래픽 양을 패킷 수와 바이트 수로 표시한다.
- 제어기가 계산하고 배포한 라우터의 Flow Table에는 라우터의 “match+action rules“이 정의되어 있다.
▶ match+action rules
- OpenFlow의 조건+처리 규칙(match+action rules)은 다양한 종류의 네트워크 장비에 통합적용된다.
- 조건처리 규칙은 match(해당 조건)를 만족한다면, action(처리) 할 것을 약속한 것이다.
- 라우터(Router)
match : 가장 긴 목적지 IP 주소의 접두사(prefix)
- action : 링크로 전달
- 스위치(Switch)
match : 목적지 MAC 주소 (2계층 주소)
action : 포워딩(forwarding) 또는 브로드캐스팅(flooding, broadcasting) 한다.
* flood는 모든 네트워크 장비에게 알리는 것이다.
- 방화벽(Firewall)
- match : IP주소와 TCP/UDP 포트 번호
- action : 접근 허용 및 거부
- 네트워크 주소 변환(NAT)
- match : IP주소와 포트 번호
action : 주소와 포트 번호를 재구성한다.
▶ Flow Table Entry
- Action은 어디 포트로 포워딩을 할지 등을 결정한다.
- Data Link Layer(2계층) : VLAN ID, MAC src, MAC dst, Eth type
- Network Layer(3계층) : IP src, IP dst, IP port
- Transport Layer(4계층) : TCP src port, UDP dst port
'Network > OSI 3-4 계층' 카테고리의 다른 글
14. Routing in Internet - 인터넷에서의 라우팅 (0) | 2017.06.11 |
---|---|
13. Control Plane and Routing Protocol - 제어 영역과 라우팅 프로토콜 (0) | 2017.06.08 |
11. IPv6 and Tunneling - IPv6 주소 체계와 터널링 기법 (0) | 2017.06.04 |
10. Internet Protocol and IPv4 - 인터넷 프로토콜 and IP version 4 (1) | 2017.06.03 |
9. Network Layer and Router - 네트워크 계층과 라우터의 기능 (0) | 2017.04.22 |