SDN은 말 그대로 '소프트웨어로 정의된 네트워킹 방식'을 의미한다. 기존의 네트워킹 방식, 우리가 흔히 알고 있는 네트워킹 방식은 물리적인 장비들이 '스스로' 데이터를 전송하는 방식이다.
우리의 PC는 네트워킹이 어떤 방식으로 이루어지고 있는지, 어느 라우터를 거치는지 등을 알지 못하지만 패킷을 송, 수신할 수 있다. 이는 스위치나 라우터 같은 장비들이 스스로 목적지를 판단하고 패킷을 포워딩하기 때문이다.
SDN는 반대로 이 데이터의 흐름 자체를 제어하는 데에 목적이 있다. 전통적인 방식과는 다르게 네트워크 장비의 제어부만 분리해서 이를 별도의 컨트롤러로 이전한다. 그러니까, SDN을 적용한 네트워크 장비들은 포워딩만 할 뿐, '어떻게 가지?'등과 같은 내용은 컨트롤러가 담당한다는 것이다. 컨트롤러에서는 물리적인 네트워크를 가상화해서 다루므로, 제어 능력 및 유연성을 극대화할 수 있다.
Simplified Architecture
아래는 SDN의 간소화된 아키텍쳐를 나타낸 것인데, 네트워크 장비들은 Southbound Interface라고 하는 인터페이스를 통해 SDN Controller들과 통신하고, SDN Application은 Northbound Interface를 통해 SDN Controller와 통신한다.
Southbound Interface, Northbound Interface는 쉽게 생각하면 '컨트롤러에 접근하는 API' 등으로 생각하면 될 것 같다. Southbound Inteface는 네트워크 장비와 컨트롤러 간의 통신을 담당하는 인터페이스인데, 이 부분에서는 OpenFlow라는 유명한 프로토콜 있으므로 이후 살펴보겠다.
참고로, 앞서서는 '제어부와 전송부를 분리한다' 라는 개념으로만 설명했는데, 이를 SDN에서 사용하는 용어로 표현하면 'Data Plane과 Control Plane을 분리했다'라고 표현한다.
SDN이 등장한 이유
그럼 왜 SDN이 탄생했을까? 기존의 네트워크 장비들은 여러 프로토콜이나 전송 기술을 지원하기 위해 상당히 복잡한 제어부를 가지고 있다. 참고로, Cisco라는 회사는 이러한 장비를 거의 독점적으로 공급하면서 엄청난 성장을 이뤘다.
그런데 사용하는 입장에서 생각해보면, 사용하지도 않는 프로토콜이나 전송 기술을 지원하기 위해 고가의 라우터, 스위치를 사용하는 것은 엄연한 리소스 낭비다. 이는 On-premise에 대항하여 클라우드가 등장한 이유이기도 하다. 이런 경우 SDN을 사용해 필요한 부분만 제어 기능으로 넣음으로서 리소스 활용률을 끌어올릴 수 있는 것이다.
리소스 활용률 이외에도, 네트워크 장비를 가시화할 수 있다는 장점, 네트워크를 가상화해 어플리케이션으로 다루기 때문에 유연성이 높다는 장점, 트래픽을 직접 제어하므로 보안 위협에 쉽게 대처할 수 있다는 장점 등이 있다.
SDN을 활용하는 경우, Service Provider로부터 네트워크 장비만 구입하고 제어부는 직접 구축할 수 있게 되면서 보다 효율적으로 네트워크를 운영할 수 있게 된다.
White box switch
SDN의 특성을 이해하면, 기존의 복잡하고 가격이 비싼 네트워크 장비들을 그대로 사용할 필요는 없음도 이해할 수 있다. 제어부가 컨트롤러로 분리되어 있으므로, 포워딩을 위해 사용하는 네트워크 장비들도 복잡한 기능이 들어갈 필요는 없다.
따라서 SDN의 개념을 따라 등장한것이 White box switch인데, 이는 Black box와는 반대로 내부 동작방식이 투명하게 공개되어 있는 스위치를 의미한다. 컨트롤러에서는 이러한 White box switch를 제어하고, White box switch는 포워딩만 수행하면 값 싼 가격에 인프라를 구성할 수 있다. White box switch는 다른 말로 표현하면 'NOS(Network Operating System)가 존재하지 않는 베어메탈'이라고도 한다.
OpenFlow
그럼 이러한 White box switch와 컨트롤러는 어떠한 방식으로 통신할까? 이 부분에서는 표준 통신 규격이 이미 정해졌는데, 바로 OpenFlow이다. 컨트롤러는 OpenFlow 프로토콜을 사용해서 네트워크 장비들의 정보를 수집하거나, 전송부를 제어하기도 한다.
스위치는 Flow Table과 컨트롤러와 OpenFlow 프로토콜로 통신할 수 있는 OpenFlow Channel을 가지고 있다. Flow table에서는 패킷을 제어하는 정보를 가지고 있는데, 다음과 같이 Header, Counters, Actions 필드로 구성된다.
헤더는 패킷을 구분할 수 있는 스위치 포트, 이더넷 및 프로토콜 정보, 출발지 / 목적지 MAC, IP 주소 등이 저장되어 있다. Counters는 TTL과 비슷한 개념으로, 해당 시간이 지나면 해당 정보를 삭제한다. 마지막으로 Actions는 해당하는 패킷이 들어왔을 경우 어떻게 처리할지에 대한 정보를 담는다.
스위치는 컨트롤러부터 테이블 정보를 입력받고, 데이터가 들어오면 해당 테이블을 확인한 뒤 적절한 위치로 전송하게 된다.
참고 자료
https://www.nomios.com/resources/white-box-switching/
https://d2.naver.com/helloworld/387756
https://post.naver.com/viewer/postView.nhn?volumeNo=11764596&memberNo=34920570
https://community.fs.com/article/open-flow-switch-what-is-it-and-how-does-it-work.html
'네트워크' 카테고리의 다른 글
TCP flow control (3) | 2024.03.29 |
---|---|
CSMA/CD, CSMA/CA (1) | 2024.03.26 |
Broadcast Domain & Collision Domain (2) | 2024.03.17 |
HTTP 요청 및 응답 구조 알아보기 (2) | 2023.09.04 |
Oauth의 등장 배경 및 개념 이해해보기 (0) | 2023.08.15 |