소프트웨어 정의 네트워크는 트래픽의 제어를 위해 소프트웨어 기반 컨트롤러나 애플리케이션 프로그래밍 인터페이스(API)를 통해 네트워크를 사용하는 방법이다. 기존의 하드웨어 디바이스를 사용하는 것과 차이가 있으며 네트워크 지능화 기능을 담당하는 응용 평면(Application Plane), 운영체제 기능을 담당하는 제어 평면(Control Plane), 데이터 전송을 담당하는 데이터 평면(Data Plane) 세 가지로 구분되고 각 레이어는 다음과 같은 특징을 가지고 있다. 응용 평면은 소프트웨어를 이용하여 네트워크를 제어하는 레이어이다. 네트워크 통계 정보를 활용하여 소프트웨어를 개발할 수 있는 개방형 영역이다. 제어 평면은 전반적인 네트워크 제어 및 관리를 한다. 제어 평면의 SDN 컨트롤러는 패킷 흐름 제어를 위한 제어 논리를 가지고 있어야 한다. 제어 논리에는 스위칭, 라우팅, 방화벽 보안 규칙, DNS(Domain Name Service) 등이 있다. 이 포스트에서는 직접 SDN 환경을 구성하고 실습해본다.
위 사이트에서 다양한 방법으로 설치를 안내하고 있다. 가상머신 이미지를 설치하는 방법(1)과 소스를 다운받아서 설치하는 방법이 있는데 기존 구성한 우분투 환경에 설치를 하고 싶으므로 Option 2.의 방법으로 설치하겠다. 사이트에 안내된 대로 쉘에서 명령어를 통해 소스를 다운받고 설치한다.
git clone git://github.com/mininet/mininet
cd mininet
git tag # list available versions
git checkout -b 2.2.1 2.2.1 # or whatever version you wish to install