본문

윈도우에서 Vagrant로 Mininet+OVS 설치하기

Mininet에 대하여 #1. 소개 에 이은글이다. Mininet을 설치하기 가장 간편한 방법은 미니넷 다운로드 페이지의 Option 1: Mininet VM Installation 에 나와있는대로 VM 이미지를 다운받고 이를 VirtualBox에서 불러오는 것이다. 이미 이미지내에 Mininet과 Open vSwitch가 설치되어있기 떄문에 설치과정 없이 바로 사용할 수 있어서 편리하다. 하지만 해당 VM은 크기가 대략 800MB 정도고 다운속도는 300K에 불과해서 기다리는데 답답하다. 그리고 무엇이 어떻게 설치되었는지 알기 어렵도 또한 최신 Open vSwitch가 설치되어있지 않다는 단점이 있다. 


그래서 이 글은 Mininet과 OpenVSwitch를 수동 설치하는 과정을 설명하고 Vagrantfile로 이를 마무리하려 한다. 최종적으로는 vagrant up 명령만 수행하면 자동으로 VM이 생성되는 것을 목표로 한다. 만약 Vagrant가 익숙하지 않다면 Vagrant에 대하여 #1. 소개 페이지를 참고할 수 있다. 굳이 Vagrant를 사용해서 설치하는 이유는 윈도우에서 Mininet을 구동하기 가장 간편한 방법이기 때문이다. VM이미지를 사용하는경우 VirtualBox나 VMware를 열고 VM을 구동시키고 리눅스를 띄워서 쉘에서 명령을 실행해야 하는데 번거롭고 아름답지 않다. Vagrant를 사용하면 윈도우 명령 프롬프트에서 vagrant ssh 명령만 사용하면 자동으로 리눅스 쉘에 들어가니, 마치 윈도우 프로그램을 실행시키는듯한 착각을 불러온다. 




*. Vagrant로 Mininet 설치&확인하기
위 파일은 아래 1,2,3 단계를 실행시키는 Vagrantfile이다. Vagrant가 설치된 환경에서 아무 폴더내에 다운받고, 명령프롬프트로 해당 폴더로 들어가서 vagrant up & vagrant ssh 명령을 실행시키면 VirtualBox내에 자동으로 VM을 생성해주고 해당 VM에 SSH 접속을 수행한다. SSH 접속까지 완료되면 다음 명령으로 Mininet을 실행시킨다. (물론 윈도우상에서 SDN(OpenFlow) 컨트롤러를 구동시킨 상태여야 한다)

sudo mn --topo=linear,2 --controller=remote,ip=192.168.56.1 

mininet> pingall


그러면 SDN 컨트롤러상에 다음과 같이 토폴로지가 보이며 Mininet이 정상구동됨을 확인할 수 있다.



=============

아래 단계는 Vagrantfile이 어떻게 구성되었는지에 대한 설명이다. 'Vagrant를 통하지 않고 우분투 쉘에서 직접 설치하겠다' 하는경우도 아래 명령만 실행하면 쉽게 Mininet+OVS를 설치할 수 있다.


1. 설치 준비하기

Vagrant Box는 "ubuntu/trusty64" (Ubuntu 14.04) 를 기준으로 준비하고, 여기에 약간의 수정을 덧붙인다. Ubuntu의 apt 저장소 서버를 국내카카오 서버로 변경해서 설치속도를 빠르게 하고 update를 진행해둔다. 또한 apt-get으로 install하는 프로그램중에 사용자 입력을 요구하여 vagrant 진행을 방해하는 경우가 있으므로 DEBIAN_FRONTEND 설정도 만약을 위해 해둔다.


sudo sed -i 's/archive.ubuntu.com/ftp.daum.net/g' /etc/apt/sources.list

sudo apt-get update

export DEBIAN_FRONTEND='noninteractive'


2. Open vSwitch 설치하기

Open vSwitch는 http://openvswitch.org/download/ 에서 다운로드 받을 수 있다. 현재 LTS 버전기준 최신버전은 openvswitch-2.5.1.tar.gz으로, 이를 다운받고 설치하는 과정은 아래와 같다. 또한 우분투에서 설치하는 경우 prerequisite로 요구하는 패키지들이 있는데 이는 압축파일내의 debian/control 파일에서 확인할 수 있다. 아래에 apt-get install 명령으로 이런 패키지들을 설치하는데, 그중에서 racoon은 제외시켰다. 사용자의 입력을 요구하여 설치를 방해하기 때문이다. 그렇다고 위의 DEBIAN_FRONTEND 으로 이를 막아버리면 프로그램이 설치가 안된다. 이 프로그램은 openvswitch-ipsec에 필요한 요소이기 때문에 결국 racoon과 openvswitch-ipsec는 설치에서 제외시켰다. 물론 추후에 따로 설치하면 된다.


sudo apt-get install -y build-essential fakeroot

wget -qO- http://openvswitch.org/releases/openvswitch-2.5.1.tar.gz | tar xzvf -

cd openvswitch-2.5.1

sudo apt-get install -y module-assistant graphviz autoconf automake bzip2 debhelper dh-autoreconf libssl-dev libtool openssl procps python-all python-twisted-conch python-zopeinterface python-six dkms libc6-dev make openssl kmod module-init-tools netbase procps python-argparse uuid-runtime iproute2 

#racoon breaks vagrant ssh. Actually, as ipsec-tools is a dependency of racoon

DEB_BUILD_OPTIONS='parallel=8 nocheck' fakeroot debian/rules binary  

cd ..

mv openvswitch-ipsec_2.5.1-1_amd64.deb openvswitch-2.5.1/

sudo dpkg -i *.deb


3. Mininet 설치하기

Mininet 설치는 간단하다. 그저 참고할것은 install.sh에서의 스위치인데 홈페이지에서는 아래와 같이 정리해놓았다. 부가설명을 하자면, -a 옵션은 모든 컴포넌트를 설치해서 속편하긴 하겠지만 현재 시나리오에서는 필요가 없다.  Wireshark는 윈도우에서 가동시킬거라 필요없고 POX OpenFlow 컨트롤러도 ODL을 사용할것이기 때문에 필요가 없기 때문이다. 또한 -nfv 옵션은 miniNet, openFlow-switch, openVswitch 에서 대문자를 따서 NFV라고 해놓은것이지 NFV(Network Function Virtualisation)을 위한 패키지가 아님을 알아두어야 한다. 이미 Open vSwitch를 앞단계에서 설치했기 때문에 -nf 스위치만 사용하면 된다.

-a: install everything that is included in the Mininet VM, including dependencies like Open vSwitch as well the additions like the OpenFlow wireshark dissector and POX. By default these tools will be built in directories created in your home directory. 

-nfv: install Mininet, the OpenFlow reference switch, and Open vSwitch 


sudo apt-get install -y git

git clone git://github.com/mininet/mininet

cd mininet

git checkout -b 2.2.1 2.2.1

./util/install.sh -fn

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.