SDN — 제어와 전달을 나누다
PART 04에서 라우터를 배울 때, 라우터는 두 가지 일을 동시에 합니다. 어디로 보낼지 결정하는 일(제어 평면)과, 실제로 패킷을 전달하는 일(데이터 평면)입니다. 전통적인 라우터는 이 두 기능이 하나의 장비 안에 녹아 있습니다. 새로운 라우팅 정책을 만들려면 라우터 한 대 한 대를 관리자가 직접 설정해야 합니다. 네트워크가 커질수록 이 작업은 지수적으로 복잡해집니다.
제어 평면을 분리하다
SDN(Software-Defined Networking)의 핵심 아이디어는 단순합니다. 제어 평면을 장비에서 떼어내 중앙의 소프트웨어인 컨트롤러로 올리는 것입니다. 스위치와 라우터 같은 데이터 평면 장비는 패킷을 빠르게 전달하는 일에만 집중합니다. 어디로 보낼지는 컨트롤러가 결정해 플로우 테이블로 내려줍니다.
이렇게 하면 전체 네트워크를 하나의 프로그램으로 제어할 수 있습니다. 새 정책이 필요하면 컨트롤러 소프트웨어만 업데이트하면 됩니다. 물리 장비에 손댈 필요가 없습니다. 네트워크가 소프트웨어처럼 다루어지는 것입니다.
OpenFlow와 컨트롤러
SDN의 대표적인 표준 프로토콜이 OpenFlow입니다. 컨트롤러는 OpenFlow를 통해 스위치의 플로우 테이블을 읽고 씁니다. "이 IP에서 오는 패킷은 포트 3으로 내보내라"는 식의 명령을 내립니다. 스위치는 받은 패킷과 플로우 테이블을 비교해 매칭되는 규칙을 실행합니다.
상용 SDN 컨트롤러로는 OpenDaylight, ONOS가 있고, 구글과 대형 클라우드 사업자들은 자체 컨트롤러를 운용합니다. 구글의 데이터센터 간 네트워크인 B4는 SDN으로 링크 활용률을 기존 30~40%에서 95% 이상으로 끌어올린 사례로 유명합니다.
왜 이 방향으로 진화했는가
전통적인 네트워크는 하드웨어 벤더에 종속됩니다. 라우터 설정 언어가 벤더마다 달랐고, 새 기능은 하드웨어 교체를 기다려야 했습니다. 클라우드 시대에 네트워크 자원을 가상 머신처럼 수분 내에 프로비저닝해야 할 필요가 생기면서, 사람이 장비를 하나씩 설정하는 방식은 병목이 되었습니다. SDN은 네트워크를 코드로 다룰 수 있게 함으로써 이 병목을 제거했습니다. 다음 절에서는 이 아이디어를 네트워크 기능 전체로 확장한 NFV를 살펴봅니다.