다른 명령
| 18번째 줄: | 18번째 줄: | ||
===SDN Controller=== | ===SDN Controller=== | ||
SDN 컨트롤러의 기능은 figure 3와 같이 세 개의 계층으로 나뉜다: | |||
먼저, A communication layer가 있으며, 이는 SDN 컨트롤러와 네트워크 장치 간의 통신을 담당한다. SDN 컨트롤러가 원격의 SDN-지원 스위치나 호스트 또는 기타 장치를 제어하려면, 컨트롤러와 해당 장치 간에 정보를 전송하는 프로토콜이 필요하다. 또한 각 네트워크 장치들은 자신 주변에서 일어나는 변화들이 SDN 컨트롤러에 전달하여 SDN 컨트롤러가 네트워크 상태에 대한 최신 정보를 유지할 수 있도록 해야한다. 이러한 역할을 하는 인터페이스를 흔히 '''southbound interface'''라고 한다. | |||
그 다음으로는 a network-wide state-management layer가 있으며, 이는 말 그대로 네트워크 전반의 상태(state)를 관리하고, 최신으로 유지하는 역할을 한다. 예를 들어 SDN control plane이 어떤 data plane의 middlebox에 대해 올바른 결정을 내리기 위해서는 SDN 컨트롤러가 네트워크의 호스트, 링크, 스위치 등에 대한 최신 정보를 습득하고, 유지해야 한다. | |||
마지막으로는 The interface to the network-control application layer가 있다. SDN 컨트롤러는 네트워크 제어 애플리케이션과 '''northbound interface'''를 통해 상호작용한다. 이 API는 네트워크 제어 애플리케이션이 하위 계층 내의 네트워크 상태와 flow table을 읽고 쓸 수 있게 한다. 예를 들어, 애플리케이션은 네트워크의 상태가 변경되었을 때 알림을 받을 수 있도록할 수 있으며, 이에 따라 data plane에서 발생한 네트워크 상태 변경에 반응하여 조치를 취할 수 있다. | |||
위와 같이 구성되어 있는 SDN 컨트롤러는 논리적으로 중앙 집중화되어 있다. 즉, data plane이나 네트워크 제어 애플리케이션의 관점에서, SDN 컨트롤러는 단일하고 일체화된 서비스이다. 하지만, 이러한 서비스들과 상태 정보를 저장하는 데이터베이스는 실제로는 여러 대의 서버에 의해 구현된다. | |||
==각주== | ==각주== | ||
2025년 5월 9일 (금) 05:20 판
상위 문서: Network Layer
개요
SDN control plane은 네트워크의 SDN 지원 장치들 사이의 패킷 전달을 제어하고, 해당 장치들과 서비스들을 구성하고 관리하는 네트워크 전역을 관리하는 로직이다. 해당 문서에서는 네트워크의 forwarding 장치를 "패킷 스위치(packet switch)" 혹은 스위치로 부른다. SDN 아키텍처의 네 가지 주요 특징은 다음과 같다:
- Flow-based forwarding: 패킷 스위치에 의한 패킷 forwarding은 transport/network/link layer 각각의 헤더에 있는 어떤 필드 값에 기반할 수 있다. 이는 IP 데이터그램의 목적지 IP 주소에 의존하는 전통적인 라우터 기반의 forwarding 방식과 매우 대조된다. SDN control plane은 figure 1과 같이, 네트워크 내의 모든 스위치 들에 대한 flow table을 계산하고, 관리하고, 설치한다.
- Separation of data plane and control plane: Figure 2에 나타나 있는 것과 같이, 스위치들로 구성된 data plane이 "match + action"에 따라 주어진 역할을 수행할 뿐이다. Control plane은 그러한 data plane을 제어하도록 스위치의 flow table을 결정하고 관리하는 서버와 소프트웨어로 구성된다.
- Network control functions: external to data-plane switches: SDN control plane은 소프트웨어로 구현되며, 이 소프트웨어는 스위치들과 물리적으로 분리 되어있는 서버에서 실행된다. Figure 2에서 볼 수 있듯이, control plane은 두 가지 구성 요소인 SDN 컨트롤러(SDN controller)와 네트워크 제어 애플리케이션(network control application)로 구성된다. SDN 컨트롤러는 네트워크의 상태 정보[1]을 유지하고, 이를 control plane에서 실행되는 네트워크 제어 애플리케이션에 제공하여 해당 애플리케이션들이 data plane에 위치한 네트워크 장치들을 모니터링, 프로그래밍, 제어할 수 있도록 한다.
- A programmable network: 네트워크는 control plane에서 실행되는 네트워크 제어 애플리케이션들을 통해 프로그래밍된다. 해당 애플리케이션들은 SDN control plane의 두뇌와 같은 역할을 하여, SDN 컨트롤러가 제공하는 API[2]를 통해 data plane을 명시하고 제어한다. 예를 들어, 라우팅 네트워크 제어 애플리케이션은 출발지와 목적지 간의 종단 간 경로를 결정할 수 있으며, 이는 SDN 컨트롤러가 유지하는 노드 상태 및 링크 상태 정보를 사용하여 Dijkstra 알고리즘을 실행함으로써 가능하다.
위에서 논의한 특징들로부터, SDN은 네트워크 기능을 분리시킬 수 있다는 것을 보여준다. 스위치, SDN 컨트롤러, 네트워크 제어 애플리케이션은 각각 다른 조직에 의해서 제공될 수 있는 별개의 구성 요소이다. 이는 기존의 전통적인 방식에서는 스위치/라우터가 control plane의 소프트웨어를 내장한 채 통합되어 구현되던 것과는 대조적인 방식이라고 할 수 있다.
SDN Layers
SDN 내의 다양한 구성 요소들은 크게 data plane과 control plane으로 구분된다. 이때 control plane은 SDN 컨트롤러와 네트워크 제어 애플리케이션으로, 계층적으로 구분된다. 이 문단에서는 SDN의 계층적으로 어떻게 구분되어 있는지에 대해 더욱 자세히 살펴본다.
Data Plane
Data plane에서 가장 기본이 되는 장치는 스위치이다. 해당 문단에서는 스위치를 기준으로 data plane에 대해 설명한다. 스위치란, 패킷을 forwarding하는 역할을 하는 하드웨어이다. 이는 빠르고, 저렴하며, 단순하다는 특징이 있다. 또한, Generalized Forwarding을 지원한다. 스위치의 다양한 기능을 구현하기 위해 사용되는 flow table은 스위치에 의해 구성되지 않고, SDN 컨트롤러에 의해서 구성된다. 즉, 스위치는 스스로 판단하여 움직이지 않으며, SDN 컨트롤러가 만든 flow table에 따라 기계적으로 움직일 뿐이다.
스위치들은 분명히 SDN 컨트롤러에 의해 제어되며, 이를 위해 표준화되어 있는 인터페이스(API)가 존재한다. 이는 어떤 동작을 제어할 수 있고, 어떤 것이 불가능한지 사전에 제안한다. 이러한 인터페이스에는 대표적으로 OpenFlow가 있다. 또한 스위치와 SDN 컨트롤러가 서로 소통(communicate)하기 위한 프로토콜이 존재하며, OpenFlow가 역시 대표적인 예시이다. 즉, OpenFlow는 API이면서 동시에 프로토콜로도 사용된다. 이 프로토콜을 통해 컨트롤러가 스위치에 명령을 내리거나, 스위치가 flow table을 요청할 수 있다.
SDN Controller
SDN 컨트롤러의 기능은 figure 3와 같이 세 개의 계층으로 나뉜다:
먼저, A communication layer가 있으며, 이는 SDN 컨트롤러와 네트워크 장치 간의 통신을 담당한다. SDN 컨트롤러가 원격의 SDN-지원 스위치나 호스트 또는 기타 장치를 제어하려면, 컨트롤러와 해당 장치 간에 정보를 전송하는 프로토콜이 필요하다. 또한 각 네트워크 장치들은 자신 주변에서 일어나는 변화들이 SDN 컨트롤러에 전달하여 SDN 컨트롤러가 네트워크 상태에 대한 최신 정보를 유지할 수 있도록 해야한다. 이러한 역할을 하는 인터페이스를 흔히 southbound interface라고 한다.
그 다음으로는 a network-wide state-management layer가 있으며, 이는 말 그대로 네트워크 전반의 상태(state)를 관리하고, 최신으로 유지하는 역할을 한다. 예를 들어 SDN control plane이 어떤 data plane의 middlebox에 대해 올바른 결정을 내리기 위해서는 SDN 컨트롤러가 네트워크의 호스트, 링크, 스위치 등에 대한 최신 정보를 습득하고, 유지해야 한다.
마지막으로는 The interface to the network-control application layer가 있다. SDN 컨트롤러는 네트워크 제어 애플리케이션과 northbound interface를 통해 상호작용한다. 이 API는 네트워크 제어 애플리케이션이 하위 계층 내의 네트워크 상태와 flow table을 읽고 쓸 수 있게 한다. 예를 들어, 애플리케이션은 네트워크의 상태가 변경되었을 때 알림을 받을 수 있도록할 수 있으며, 이에 따라 data plane에서 발생한 네트워크 상태 변경에 반응하여 조치를 취할 수 있다.
위와 같이 구성되어 있는 SDN 컨트롤러는 논리적으로 중앙 집중화되어 있다. 즉, data plane이나 네트워크 제어 애플리케이션의 관점에서, SDN 컨트롤러는 단일하고 일체화된 서비스이다. 하지만, 이러한 서비스들과 상태 정보를 저장하는 데이터베이스는 실제로는 여러 대의 서버에 의해 구현된다.