[SDN] mininet 환경 구성하기, 설치

SDN(Software Defined Network) 환경 구성

소프트웨어 정의 네트워크는 트래픽의 제어를 위해 소프트웨어 기반 컨트롤러나 애플리케이션 프로그래밍 인터페이스(API)를 통해 네트워크를 사용하는 방법이다. 기존의 하드웨어 디바이스를 사용하는 것과 차이가 있으며 네트워크 지능화 기능을 담당하는 응용 평면(Application Plane), 운영체제 기능을 담당하는 제어 평면(Control Plane), 데이터 전송을 담당하는 데이터 평면(Data Plane) 세 가지로 구분되고 각 레이어는 다음과 같은 특징을 가지고 있다. 응용 평면은 소프트웨어를 이용하여 네트워크를 제어하는 레이어이다. 네트워크 통계 정보를 활용하여 소프트웨어를 개발할 수 있는 개방형 영역이다. 제어 평면은 전반적인 네트워크 제어 및 관리를 한다. 제어 평면의 SDN 컨트롤러는 패킷 흐름 제어를 위한 제어 논리를 가지고 있어야 한다. 제어 논리에는 스위칭, 라우팅, 방화벽 보안 규칙, DNS(Domain Name Service) 등이 있다. 이 포스트에서는 직접 SDN 환경을 구성하고 실습해본다.

[환경]
Windows 10 Pro 64bit

[Guest]
Ubuntu 18.04 LTS
Python 3.7

순서

1.OVS와 Mininet을 이용한 가상 네트워크 환경 구성

2.ODL과 OVS연동

3.ODL의 WEB GUI를 이용해 topology 확인

4.ODL을 이용해 가상 네트워크 상의 ICMP packet data 제어

5.각 node의 터미널에서 tcpdump, wireshark를 이용해 패킷 확인

Install mininet

http://mininet.org/download/

위 사이트에서 다양한 방법으로 설치를 안내하고 있다. 가상머신 이미지를 설치하는 방법(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

cd ..

mininet/util/install.sh [options]

여기서 install.sh의 내용을 변경해야한다.

install.sh를 편집기로 연다.
iproute를 iproute2로 변경한다. (2곳 수정)

./install.sh -a

위 명령어를 통해 설치를 하고 나면 아래처럼 설치완료 메시지 확인 가능하다.

테스트하는 방법은 sudo mn --test pingall 을 통해 테스트 네트워크 토폴로지를 구성해서 핑을 날려볼 수 있다.

테스트 중 에러 발생 시

mininet Cannot find required executable ifconfig 에러!
필수 모듈이 설치되지 않은 경우이다. sudo apt install net-tools 설치를 통해 해결한다.

동작 확인

python으로 topology 구성

이제 직접 호스트와 스위치를 선언하여 트래픽을 전송할 수 있다. 2개의 스위치와 2개의 호스트 토폴로지를 구성한 코드는 아래와 같다.

토폴로지 구성 예제 코드

cli 에서 바로 ping 테스트를 하려면 (송신 단말) ping (수신 단말) 하면 된다.

핑 테스트 결과 정상

Topology 구성하기

sudo mininet/examples/miniedit.py 파일을 통해서 직접 GUI를 통해 토폴로지를 구성할 수 있다.

 

반응형