Book/COMPUTER NETWORKING A TOP-DOWN-APPROACH

5.5 The SDN Control Plane

S0LL 2024. 12. 3. 19:25

SDN 제어 평면은 네트워크 장치의 패킷 전달 로직을 중앙에서 제어하고, 이 장치들의 설정과 관리를 담당한다.

이는 기존의 라우터 기반 네트워크 모델과는 크게 구분된다.

 

SDN의 주요 특징

 

1. Flow-Based Forwarding:

SDN에서는 네트워크 장치(스위치)가 패킷 헤더 필드에 기반하여 포워딩을 수행한다.

OpenFlow 1.0 기준으로, 총 11개의 패킷 헤더 필드(예: IP 주소, 포트 번호 등)를 기반으로 포워딩 규칙을 정의할 수 있다.

이는 전통적인 라우터가 목적지 IP 주소만을 기반으로 포워딩했던 것과는 차별화된다.

 

2. 데이터 평면과 제어 평면의 분리:

SDN은 **데이터 평면(Data Plane)**과 **제어 평면(Control Plane)**을 분리한다.

데이터 평면: 스위치와 같은 네트워크 장치가 실제 패킷 전달을 수행.

제어 평면: SDN 컨트롤러가 네트워크의 전반적인 제어와 관리 역할을 수행.

 

3. 외부 제어 기능:

제어 평면의 역할은 네트워크 스위치에서 분리되어 소프트웨어로 구현된다.

제어는 SDN 컨트롤러에서 이루어지며, 네트워크 상태를 종합적으로 관리.

 

4. 프로그래머블 네트워크:

네트워크는 SDN 제어 애플리케이션(예: 라우팅, 로드 밸런싱)을 통해 프로그래밍 가능.

예: SDN 컨트롤러는 링크 상태 정보를 사용해 Dijkstra 알고리즘을 실행하여 최적 경로를 계산하거나, 특정 패킷을 차단하는 방화벽 규칙을 적용.

 

SDN의 아키텍처 (Figure 5.14 설명)

SDN 구조는 세 가지 주요 계층으로 나뉜다:

1. 데이터 평면:

스위치가 위치하며, 패킷 전달 작업을 수행한다.

SDN 컨트롤러의 명령에 따라 동작하며, 포워딩 테이블에 정의된 규칙을 실행.

2. 제어 평면:

SDN 컨트롤러가 위치하며, 네트워크 상태를 종합적으로 관리.

제어 평면은 Southbound API를 통해 데이터 평면과, Northbound API를 통해 네트워크 애플리케이션과 통신.

3. 네트워크 제어 애플리케이션:

라우팅, 액세스 제어, 로드 밸런싱 등의 애플리케이션이 동작.

이들은 SDN 컨트롤러의 인터페이스를 사용하여 네트워크 동작을 제어.

 

SDN 컨트롤러의 구성 요소

 

SDN 컨트롤러는 다음과 같은 세 가지 주요 계층으로 구성된다 (Figure 5.15 참조):

1. 통신 계층:

SDN 컨트롤러와 네트워크 장치 간의 데이터를 교환.

예: OpenFlow와 같은 Southbound 프로토콜을 사용.

2. 네트워크 상태 관리 계층:

네트워크의 전체 상태를 저장 및 관리.

예: 호스트 정보, 링크 상태, 스위치 상태 등.

3. 네트워크 제어 애플리케이션과의 인터페이스 계층:

RESTful API와 같은 Northbound 인터페이스를 통해 SDN 애플리케이션과 통신.

이를 통해 네트워크 상태를 조회하거나 업데이트 가능.

 

OpenFlow 프로토콜

 

OpenFlow는 SDN 컨트롤러와 스위치 간의 통신을 위해 사용되는 주요 프로토콜이다.

주요 메시지:

1. Configuration: 스위치의 설정 정보 요청 및 수정.

2. Modify-State: 포워딩 테이블을 업데이트.

3. Read-State: 통계 정보와 카운터 값 수집.

4. Send-Packet: 특정 포트를 통해 패킷 전송.

 

 

 

SDN 제어 평면(Data and Control Plane Interaction)에 대한 예제 설명

 

이는 Figure 5.16과 관련된 내용으로, SDN 컨트롤러가 네트워크 이벤트(예: 링크 장애)에 어떻게 반응하는지를 보여준다.

SDN 제어 평면의 동작 과정

 

시나리오 설명

 

가정: 스위치  s1   s2  사이의 링크가 장애로 인해 끊어진 상황.

목표: SDN 컨트롤러가 이를 감지하고, 네트워크의 포워딩 규칙을 업데이트하여 트래픽 흐름을 복구.

 

작동 단계

 

1. 스위치  s1 의 이벤트 발생:

 s1  OpenFlow의 port-status 메시지를 통해 SDN 컨트롤러에 링크 장애를 알린다.

2. 컨트롤러의 링크 상태 업데이트:

컨트롤러는 OpenFlow 메시지를 수신하고, 링크 상태 매니저(Link-State Manager)를 통해 네트워크의 상태 정보를 업데이트한다.

3. Dijkstra 알고리즘 실행:

링크 상태 라우팅 애플리케이션이 링크 상태 변화를 감지한다.

Dijkstra 알고리즘을 사용하여 새로운 최단 경로를 계산한다.

4. 포워딩 테이블 업데이트:

새롭게 계산된 경로에 따라 포워딩 테이블이 업데이트된다.

이 과정은 OpenFlow 프로토콜을 통해 스위치에 전달된다.

5. 네트워크 복구:

 s1, s3, s4 의 포워딩 테이블이 변경되어, 트래픽이  s1 -> s4 -> s2  경로로 전달되도록 설정된다.

 

 

전통적인 라우팅과 SDN의 차이점

 

기존의 전통적인 라우팅에서는 모든 라우터가 각각 독립적으로 링크 상태를 교환하고 최단 경로를 계산했다.

SDN에서는 이러한 기능이 중앙 컨트롤러로 집약되어, 더 빠르고 효율적인 네트워크 업데이트가 가능하다.

 

 

SDN의 과거와 미래

 

과거

 

SDN의 아이디어는 2000년대 초반부터 등장했으며, 데이터 평면과 제어 평면의 분리를 목표로 발전.

초기 프로젝트로는 **Ethane 프로젝트(2007)**와 이를 기반으로 한 OpenFlow가 있다.

 

미래

 

SDN은 전통적인 라우터 및 스위치를 대체하는 방향으로 발전하고 있다.

NFV(Network Functions Virtualization)와 결합되어 네트워크 기능을 소프트웨어로 구현.

Inter-AS 라우팅 등 더 복잡한 네트워크 상황에도 적용 가능성을 연구 중이다.

 

 

OpenDaylight 및 ONOS 컨트롤러

 

OpenDaylight Controller (Figure 5.17)

구성:

REST API, NETCONF를 통해 네트워크 장치를 제어.

네트워크 상태 정보(토폴로지, 통계, 호스트 정보)를 관리.

특징:

초기에는 단순한 기능을 제공하였으나, 현재는 고급 서비스(예: 트래픽 엔지니어링, 방화벽 설정)까지 포함.

 

ONOS Controller (Figure 5.18)

구성:

분산 코어 구조를 통해 대규모 네트워크를 지원.

REST API와 INTENT 프레임워크를 통해 고수준 서비스 요청 처리.

특징:

분산된 서버 아키텍처로 높은 성능과 확장성을 제공.