SDN 계층 구조
SDN 계층 구조는 위 그림과 같으나, 인터넷을 찾아보면 여러 용어를 혼용해서 사용한다.
예를 들어, Plane을 Tier나 Layer라고도 표현하며, 가장 하윗단을 Data나 Forward 혹은 Infrastructure라고도 표현한다.
본 페이지에서는 Infrastructure로는 이해하지 않아도 된다. 이것으로 이해하게 되면, 인프라 서비스(IaaS) 내용까지 이해하고 넘어가야 해서 너무 광범위 해진다. (필자도 잘모름..)
필자는 SDN 전공을 했던게 아닌터라 용어간의 차이가 무엇인지는 정확히는 잘 모르겠지만, 일단 가장 심플한 SDN은 저렇게 세 계층 구조로 나뉘어 동작한다고 볼 수 있다.
SDN 관련 용어 정리
- Application Plane
- 방화벽, 로드 밸런스 등의 특정 Application이 동작하는 영역
- Application은 자신의 요구사항을 Control Plane으로 요청함
- 방화벽의 예를 들어, 어떠한 주소를 어느 네트워크 영역으로 들이지 말게끔 Control Plane으로 요청하면 Control Plane은 그 요청에 맞추어 Data Plane을 수정하는 것임
- Control Plane
- SDN 컨트롤러가 위치하는 영역
- 특정 Application에서 요구하는 서비스에 맞게 Data Plane으로 라우팅 경로 수정 or 트래픽 쉐이핑 명령을 내림
- Data Plane에 위치하는 네트워크 장치들의 토폴로지나 네트워크 상태를 항시 모니터링
- SDN 컨트롤러로는 ONOS(Open Network Operating System)나 ODL(Open Day Light)이 많이 사용 됨
- Python으로 제어할 수 있는 Ryu라는 컨트롤러도 존재함
- Data Plane
- 네트워크 장치가 위치하는 영역
- SDN 컨트롤러의 요청에 따라 특정 네트워크 장치의 Flow Table이 수정 됨
- Flow Table은 여러 개의 Flow Entry로 구성되며, 하나의 Flow Entry는 [Match Field -> Actions] 같은 형태임
- Match Field를 통해 들어온 패킷의 여러 튜플(MAC, IP, Port 등)을 살펴보고 매칭시킴
- Actions는 매치된 패킷에 특정 동작(Drop, Forwarding, Copy, Save 등)을 가하는 것
- 만약 장치에서 Flow Entries의 Match Field를 살펴봤는데 패킷이 매치되지 않는다면 SDN 컨트롤러에게 어떻게 처리할 지 요청함
- 최근에는 OpenFlow API 보다 Open vSwitch API가 SDN Data Plane에서 많이 사용됨
- 현대의 네트워크 장치는 하나의 PC와 같은 기기가 맡아서 함. 다시 말해, OSI 7 Layer 중에 특정 Layer만을 담당하진 않으며 전체 영역을 아우를 수 있음. 즉, Layer 2에서 포워딩을 담당하던 스위치 장치가 Layer 3의 라우팅 장치가 될 수 있음 (Flexibility)
- NorthBound API
- Application Plane과 Control Plane 사이에 위치하는 API
- REST API를 주로 사용
- SouthBound API
- Control Plane과 Data Plane 사이에 위치하는 API
- SouthBound API를 통해 SDN 컨트롤러는 네트워크 장치로 명령을 내림
- Open vSwitch의 예로 네트워크 장치는 받은 명령을 Open vSwitch에서 제공하는 CLI(ovs-vsctl, ovs-ofctl 등)로 처리함
- Open vSwitch
- 일명 OVS라고도 불림
- OVS CLI를 통해 가상화된 OVS 브릿지를 네트워크 장치에 생성할 수 있음 (using ovs-vsctl)
- OVS 브릿지에는 Flow Table이 존재함.
- Flow Table을 수정하여 라우팅 경로 수정 등을 할 수 있음 (using ovs-ofctl)
- OVS 브릿지에 가상화된 네트워크 인터페이스와 물리적인 인터페이스 모두를 부착할 수 있음
- 즉, 물리적인 인터페이스로 들어오는 패킷을 가상화된 인터페이스로 보내어 특정 서버로 전달할 수 있음
- 다시 말해, 가상화된 공간과 실제 공간을 연결해주는 역할을 할 수 있음
- OpenFlow
- SDN 개념을 등장시킨 API라고 봐도 무방함
- OpenFlow가 개발되면서 특정 PC가 모든 Layer의 네트워크 장치를 대신할 수 있게 됨
- 필자는 OVS를 먼저 시작해서 OpenFlow는 잘 모름.. 그래도 시초는 OpenFlow인 것으로 알고있음
- OpenFlow가 개발되고 어디에 팔리고 그게 다시 뭐.. Open vSwitch로 되고 등등 정말 수많은 역사가 있으나, 너무 깊어서 다루진 않겠습니다..
References
'Network' 카테고리의 다른 글
gPTP(Generalized Precision Time Protocol)란? (1) | 2024.12.06 |
---|---|
네트워크 스위치(Network Switch)의 계층별 특징 (0) | 2023.08.22 |
VLAN(Virtual LAN) 이란? (0) | 2023.04.01 |
HTTP Range Request를 통한 다중 네트워크 인터페이스 제어 (0) | 2022.07.07 |