SDN(Software Defined Networking)

SDN(Software Defined Networking, 소프트웨어 정의 네트워킹)은 네트워크의 제어 부분(Control Plane)을 물리적인 하드웨어(데이터 전송 부분, Data Plane)로부터 분리하여 소프트웨어 기반으로 통합 관리하는 네트워크 기술입니다.

쉽게 말해, 과거에는 네트워크 장비(스위치, 라우터) 하나하나를 직접 설정해야 했다면, SDN은 중앙화된 소프트웨어(컨트롤러)를 통해 전체 네트워크를 한눈에 보고 마우스 클릭 몇 번으로 설정을 바꾸는 방식입니다. SDN(Software Defined Networking)의 구조는 네트워크의 제어 기능과 데이터 전송 기능을 분리하는 것이 핵심입니다. 이를 위해 SDN은 크게 3개의 평면(Plane)과 이들을 연결하는 인터페이스로 구성됩니다.

 

1. SDN의 3계층 구조

SDN은 논리적으로 수직적인 3단계 계층 구조를 가집니다.

 

① 응용 계층 (Application Layer)

네트워크 관리자가 네트워크의 동작을 정의하는 곳입니다.

방화벽(Firewall), 침입 탐지 시스템(IDS), 로드 밸런싱, 네트워크 가상화 등 실제 비즈니스 로직을 구현합니다.

소프트웨어 애플리케이션 형태로 존재하며, 네트워크를 프로그래밍 가능하게 만듭니다.

 

② 제어 계층 (Control Layer)

네트워크의 '두뇌' 역할을 하는 SDN 컨트롤러가 위치하는 곳입니다.

응용 계층의 요구사항을 받아 하위 계층(스위치, 라우터)이 이해할 수 있는 명령으로 변환합니다. 네트워크 전체의 토폴로지를 파악하고 패킷의 경로를 결정합니다. 물리적으로는 분산될 수 있으나 논리적으로는 중앙 집중화되어 있습니다.

 

③ 인프라 계층 (Infrastructure Layer)

실제 데이터 패킷을 전달하는 물리적/가상적 장비들이 위치하는 곳입니다.

제어 계층으로부터 받은 흐름 규칙(Flow Rules)에 따라 데이터를 단순 전달(Forwarding)합니다.

스스로 경로를 결정하는 지능이 없으며, 오직 명령 수행에만 집중하는 'Dumb' 장비(White-box 스위치 등)로 구성됩니다.

 

2. 계층 간 연결 인터페이스 (Interface)

계층 사이를 잇는 통로가 있어야 명령이 전달됩니다. 이를 Northbound와 Southbound라고 부릅니다.

SDN 아키텍쳐 (이미지출처 : https://www.brainz.co.kr/tech-story/view/id/279#u)

 

Northbound API (북향 인터페이스)

  • 응용 계층 ↔ 제어 계층
  • 컨트롤러가 상위 앱에 네트워크 상태를 알려주거나, 앱이 컨트롤러에 정책을 전달할 때 사용합니다. 주로 RESTful API 형식을 많이 사용합니다.

Southbound API (남향 인터페이스)

 

3. SDN의 동작 원리 (Flow Management)

  • 패킷 도착 : 인프라 계층의 스위치에 새로운 패킷이 들어옵니다.
  • 조회 : 스위치는 자신의 **플로우 테이블(Flow Table)**에 해당 패킷에 대한 처리 규칙이 있는지 확인합니다.
  • 요청 : 규칙이 없다면 스위치는 제어 계층(컨트롤러)에 "이 패킷을 어떻게 처리할까요?"라고 묻습니다. (Packet-In)
  • 결정 : 컨트롤러는 전체 네트워크 상황을 보고 경로를 결정한 뒤, 스위치에 규칙을 내려보냅니다. (Flow-Mod)
  • 실행 : 스위치는 이제 해당 규칙을 테이블에 저장하고, 이후 들어오는 동일한 패킷들은 컨트롤러에 묻지 않고 바로 전달합니다.

 

4. 전통적 네트워크와의 차이

구분 전통적 네트워크 (Legacy) SDN (Software Defined)
제어 방식 각 장비(스위치/라우터)가 개별 제어 중앙 컨트롤러가 통합 제어
구조 제어와 전송 기능이 한 장비에 통합 제어와 전송 기능이 물리적으로 분리
유연성 설정 변경 시 장비마다 접속해야 함 소프트웨어 코딩으로 일괄 변경 가능
표준화 제조사별 폐쇄적 운영체제 사용 오픈플로우 등 표준 인터페이스 사용