현업이 아니다보니 SDN을 알게된 건 1년 정도? 그 당시 막 나오는 최-신 기술인줄 알았다. 하지만 꽤나 예전부터 논의되고 적용된 기술이었다. 오늘은 SDN이 무엇인지 알아보고자 한다.
(잘못된 정보나 덧붙여야할 내용이 있다면 언제든지 댓글 부탁드립니다.)
SDN
Software Defined Network
소프트웨어 즉, 프로그래밍을 통해서 네트워크 기능을 구현하는 기술이다.
- SDN 동작과정
기존 네트워킹에선 라우터가 라우팅 경로를 계산하고, 라우터에 있는 물리 포트로 데이터를 전송했다. 하지만 SDN에서는 이 개념을 파괴(?)시켰다. 라우터의 네트워킹 기능과 물리포트를 구분지은 것이다. 네트워킹 기을 Control Plane, 물리 포트 부분을 Data Plane으로 나누고 서로를 RPC를 통해 통신하도록 한다.
이해를 돕기 위해 아래 그림을 참고하자.

한줄로 요약하자면, “SDN은 Data plane과 Control Plane으로 분리하고, RPC를 통해 서로 통신한다.”
- SDN 아키텍처

크게 3가지 요소로 나뉜다. 이 요소들은 서로 다른 물리적 위치에 존재할 수 있다.
1. Application(Application Layer) : 전반적인 리소스를 요청하거나 네트워크 관련 정보를 통신한다.
2. Controller(Control Layer) : Application의 정보를 활용해 데이터 패킷 라우팅 방식을 결정한다.
3. Networking Device(Infrastructure Layer) : Controller로부터 데이터를 이동할 위치에 대한 정보를 수신한다.
SDN의 Control Plane<->Data Plane
Control Plane
SDN의 Controller가 여기에 속하며, SDN의 Software 부분이다. 트래픽(데이터)를 어디로 보낼지 결정한다. Control Plane에서는 아래의 2가지 API를 제공한다.
- South-bound API
여러 네트워크 장비와 통신할 수 있도록 API를 제공하고 추가할 수 있다. - North-bound API
여러 가지 기능의 애플리케이션을 개발하고 다른 운영 도구와 통신할 수 있게 한다.
많이 사용되는 오픈소스 SDN Controller에는 ‘Open Daylight‘와 ‘ONOS‘가 있다.
Data Plane
SDN의 Network Device가 여기에 속하며, SDN의 Hardware 부분이다. 실제 트래픽(데이터)를 전송한다.
- White Box
기존 레거시의 네트워크 장비들은 제어 방식을 공개하지 않아서 ‘Black Box’라고 불렸다. 이 단어의 반대말로 나온 것이 ‘White Box’이다. 말 그대로 네트워크 장비의 동작 방식을 사용자가 결정하고 투명하게 공개된다는 의미를 담고 있다.
RPC
Control Plane과 Data Plane의 통신 규약이다. 대표적인 기술로 ‘OpenFlow’가 있다.
Infrastructure Layer(전송부 or Network device)에서 OpenFlow의 PortStats 또는 FlowStats을 통해 각 경로의 혼잡도를 Control Layer로 전달한다.
Control Layer(제어부 or Controller)는 이 정보를 기준으로 최적의 경로를 찾아 Infrastructure Layer로 최적의 경로를 전달한다.
그래서 SDN이 왜 좋은데?
첫째로, 여러 벤더별 장비를 수동으로 프로그래밍하는 대신 개방형 표준 소프트웨어 기반 컨트롤러를 프로그래밍하여 네트워크를 통한 트래픽 흐름을 제어할 수 있다. 즉, 속도가 향상되고 유연성이 있기 때문에 제어 능력이 향상된다.
둘째, 중앙으로 집중된 기술이기 때문에 관리자가 실시간으로 네트워크 인프라를 변경할 수 있다. 맞춤 설정이 가능한 네트워크 인프라라는 뜻이다.
이외에도 SDN의 장점이 많다!
조금 더 자세한 내용은 아래 사이트 참고.
– Software-Defined Networking (SDN) Definition -ONF
– 5G 시대 SDN/NFV (1) – 네트워크 세상을 바꾼 SDN -netmanias
– 소프트웨어 정의 네트워킹 -vmware
NFV
Network Function Virtualization
네트워크 기능(장비)를 가상화하는 것이다. 한 가지의 네트워크 기능을 추상화하고, 이 기능을 여러 사용자들과 나눠 사용할 수 있도록 한다.
예를 들어, 라우터에서 라우터 기능들만 분리하여 일반 가상 서버로 이동한다. 일반 가상 서버지만 라우터처럼 운용되는 것이다. 이 때, 가상 머신에서 네트워크 기능을 구현하는 것을 VNF(Virtual Network Function)이라고 한다. VNF를 범용 서버에 올리는 것을 NFV라고 한다.
예전엔 ‘네트워크 기능+물리장비’가 일체형으로 제작되어 판매됐었지만, NFV가 도입되면서 네트워크 기능과 서버를 별도로 교체하거나 업그레이드할 수 있다.
NFV는 SDN없이 구현할 수 있지만, 가상 네트워크 내에서 VNF를 연결하려면 SDN이 필요하다.
참고 – 5G 시대 SDN/NFV (2) – 다가올 5G 시대의 핵심? SDN 기반 가상 네트워크를 이용한 NFV -netmanias
Q. Ansible과 SDN? 서로 비슷한 기술인가?
‘소프트웨어로 정의한다.’는 점에서 서로 비슷한 기술이라고 생각할 수도 있다. 하지만 그렇지 않다.
Ansible은 Orchestration Tool로써 내가 어떤 장비, 어떤 기능을 사용할지 정의한다. 이 정의된 내용을 바탕으로 장비를 자동으로 작동시킨다. 자동화, 사용편의성을 추구한다.
SDN은 Data plane, Control plane으로 네트워크 개념을 나누고 전체적인 네트워크를 동작시키는 것이다.
결론, SDN으로 구성된 망에서 Ansible을 사용하면 더 유연하고 효율적으로 네트워크를 관리할 수 있다.