본문 바로가기

IT/SDN with Java Socket Programming

Mininet을 이용한 SDN 실습[1.실습 환경 구축 및 간단한 토폴로지 구성]

최근 SDN에 관심이 생기면서 Mininet이라는 것을 알게 되었다. OMNET++과 비슷하게 가상 네트워크 환경에서 시뮬레이션 할 수 있는 툴 같은데 OMNET++보다 Mininet을 사용하는 것이 SDN과 Openflow를 이해하고 실험하는데 더 좋다고 하여 공부하기 시작하였다.(사실 Mininet과 OMNET++의 차이도 잘 모를 뿐더러 사용은 해봤지만 아직도OMNET++을 잘 모른다.)

미리 말하자면, 멘땅에 해딩으로 시작하는 글이기 때문에 Mininet에서 제공하는 Tutorial을 참고하며 진행했지만 절대로 신용하면서 이 글을 읽지는 않는것이 좋다. "뭔가 틀린 거 같은데..."라는 생각이 든다면 정말 틀렸을 가능성이 크다. 피드백 해주면 정말 고맙겠다.

 

실습 환경 구축에 대한 Tutorial은 Mininet에서 제공하는 것을 참고하였다.

실습 환경 구축 Tutorial 링크 : http://mininet.org/download/

 

Download/Get Started with Mininet - Mininet

Download and install a virtualization system. We recommend VirtualBox (free, GPL) because it is free and works on OS X, Windows, and Linux (though it’s slightly slower than VMware in our tests.) You can also use Qemu for any platform, VMware Workstation

mininet.org

위 링크를 타고 가서 보는 것이 가장 정확하겠지만 영어 울렁증이 있는 사람이라면 이 글을 참고하는 것도 나쁘진 않다.

(하지만 Chrome에서 좋은 영어 번역 기능을 제공하니 하다가 이상하다 싶으면 위 링크를 타고 가서 한글 번역 기능 사용 후 진행하는 것을 추천한다.)

 

시작에 앞서서...

기본적으로 SDN에 대한 지식은 가지고 시작하는 것이 도움이 될 것이다.

예전에 작성한 글이지만 개인 공부용으로 정리해 놓은 것이니 쉽고 요점만 정리해놓았다.(맞는지는 모른다)

SDN에 대한 기초 지식 : https://freloha.tistory.com/manage/newpost/40?type=post&returnURL=https%3A%2F%2Ffreloha.tistory.com%2Fmanage%2Fposts

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

 

웹 상에서 SDN에 대해 이론적인 부분은 여러 블로그를 통해 많이 배포되어 있지만 실습이나 환경구축에 대한 글은 적은 것 같다. 개인 공부도 겸하여 mininet.org에서 제작한 Mininet 사용법을 기준으로 실습을 진행한다.

 

Mininet이란?

가상 네트워크를 통해 SDN이나 Openflow와 같은 네트워크 환경을 시뮬레이션할 수 있는 오픈 소스 프로그램

 

1. Virtual Box 다운로드하기

자신의 컴퓨터 환경이 Linux인 사람들은 모르겠으나, Window 기반의 컴퓨터를 사용하는 사람이 Linux와 같은 다른 OS를 사용하기 위해서는 가상머신이 필요하다. 대표적인 무료 가상머신이 Virtual Box인데 이를 사용하여 Mininet을 실행하고자 한다.

다운로드 링크 : https://www.virtualbox.org/wiki/Downloads

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt

www.virtualbox.org

<각자의 OS 에 맞는 버전을 다운받는다>

필자의 경우, windows를 사용하기 때문에 밑줄 친 <windows hosts>를 눌러 다운로드를 받았다.

 

2. Mininet VM image 다운로드 받기

Virtual Machine(가상머신)에서 다른 OS를 구동하기 위해서는 이미지파일(ex : 대표적으로 .iso 확장자)이 있어야 한다. Mininet 역시 이미지파일이 있어야 구동이 되기 때문에 다운로드 한다.

다운로드 링크 : https://github.com/mininet/mininet/releases

 

Releases · mininet/mininet

Emulator for rapid prototyping of Software Defined Networks - mininet/mininet

github.com

<Mininet 이미지 파일 다운로드>

amd64와 i386이 존재하는데 솔직히 둘의 차이를 잘 몰라 그나마 들어본적 있는 amd로 다운받았으며 source code는 당장 쓸일이 있는지는 모르겠으나 나중에 다운받기 귀찮아 미리 다운 받았다.

 

3. Virtual Box에 Mininet 환경 구축하기

1) 다운로드 받은 mininet-server0amd64.zip 압축을 풀기

<다운받은 mininet-server-amd64 압축을 풀어둔다>

2) Virtual Box를 열고 [파일 - 가상 시스템 가져오기(Ctrl + I)]를 클릭하고 압축을 풀어둔 Mininet image(.ovf)를 가져온다.

<파일 - 가상 시스템 가져오기를 클릭한다>
<가상 시스템 가져오기를 누르면 위와 같은 창이 뜨는데 파일 옆의 불러오기 아이콘을 누른다>
<위에서 미리 압축을 풀어둔 .ovf 이미지를 불러온다>
<.ovf 이미지를 불러온 후 다음을 누른다>
<설정을 건들지 않고 가져오기를 누른다>
<새로운 Mininet-VM이 생긴 것을 확인할 수 있다>

Mininet을 실습하기 위해서는 최소 두 개의 VM이 필요하다. 때문에 위 작업을 두 번 반복하여 VM을 2개 만든다.

 

4. Mininet 네트워크 설정

VM을 두 개 만들었는데 그 중 하나의 네트워크를 설정해주어야 한다.

<VM을 누른 후 설정을 누른다>
<네트워크 - 어댑터 2 네트워크 어댑터 사용하기 체크 - 호스트 전용 어댑터 클릭 후 확인>

이로서 기초적인 실습을 위한 환경 구축이 되었다.

 

5. Mininet을 이용한 간단한 네트워크 토폴로지(Topology) 만들기

 

SDN은 크게 Controller와 Switch, Hosts(Clients)로 구분할 수 있다. 이 세 가지를 통해 토폴로지를 구축하기 위해 간단한 실습을 진행해보도록 한다.

지금부터 진행할 실습은 Nick Feamster 유투브 영상을 참고하였으니, 아래 설명이 이해가 안될 시 원본 영상을 보고 따라하면 된다.

mininet install Link : https://www.youtube.com/watch?v=68Dr0gguVT8

 

Mininet을 이용한 간단한 실습

지금까지 설치한 mininet을 이용하여 간단한 Virtual Network Topology(가상 네트워크 토폴로지)를 만들어본다.

<import한 Mininet Virtual Machine 2개를 실행>
<mininet-vm login에 대한 정보가 나타난다>

mininet-vm login이 나타나는데 id 와 password 모두 'mininet'이다.

로그인 시,커멘드 창이 mininet@mininet-vm으로 바뀐 것을 확인할 수 있다.

<ifconfig와 sudo dhclinet>

[ifconfig eth0] 명령어를 통해 1번 인터페이스에 있는 정보를 얻어올 수 있다.

위에서 호스트 전용 어댑터로 하나 만들었었는데 이를 사용하기 위해서는 [sudo dhclient eth1] 명령어를 사용한다.

그 후, [ifconfig eth1] 명령어를 입력하면 eth1에 대한 정보가 나타나는 것을 확인할 수 있다.

<열어둔 또 하나의 VM을 이용하여 eth1에 접속>

다른 VM으로 들어가서 호스트 전용 어댑터에 접속한다.

[ssh -X mininet@10.0.2.15]를 입력한다.

(10.0.2.15 부분에는 ifconfig eth1을 통해 확인한 inet addr을 입력해주면 된다. 이 부분이 영상과 다르게 나오는데 맞는지 틀린지는 잘 모르겠다...)

<3개의 호스트와 하나의 스위치, 컨트롤러 구성> 

[sudo mn --topo single,3 --mac --switch ovsk --controller remote]를 입력하여 3개의 호스트, 하나의 스위치, 하나의 컨트롤러를 구성한다.

입력하였다면 아래와 같이 추가된 호스트와 스위치, 링크 관계, 컨트롤러에 대한 정보가 표시된다.

 

영어로 된 것과는 별개로 설명 자체가 저같은 초심자가 따라하기에는 어려움이 많았습니다... 
실습을 따라하면서도 "이게 맞는건가...?" 싶지만 가르쳐줄 사람이 없고 질문을 해도 StackOverflow나 Mininet 이메일로 해야해서 빠른 피드백은 어려울 것 같네요...
국내서적도 여러 권 찾아봤지만 실습에 대해 기초적인 것부터 자세히 기술된게 없어서 멘땅에 해딩 식으로 해야겠습니다...
진행하다가 틀린 부분이 굉장히 많습니다.
지적해주시면 감사하겠습니다.