최근 SDN에 관심이 생기면서 Mininet이라는 것을 알게 되었다. OMNET++과 비슷하게 가상 네트워크 환경에서 시뮬레이션 할 수 있는 툴 같은데 OMNET++보다 Mininet을 사용하는 것이 SDN과 Openflow를 이해하고 실험하는데 더 좋다고 하여 공부하기 시작하였다.(사실 Mininet과 OMNET++의 차이도 잘 모를 뿐더러 사용은 해봤지만 아직도OMNET++을 잘 모른다.)
미리 말하자면, 멘땅에 해딩으로 시작하는 글이기 때문에 Mininet에서 제공하는 Tutorial을 참고하며 진행했지만 절대로 신용하면서 이 글을 읽지는 않는것이 좋다. "뭔가 틀린 거 같은데..."라는 생각이 든다면 정말 틀렸을 가능성이 크다. 피드백 해주면 정말 고맙겠다.
실습 환경 구축에 대한 Tutorial은 Mininet에서 제공하는 것을 참고하였다.
실습 환경 구축 Tutorial 링크 : http://mininet.org/download/
위 링크를 타고 가서 보는 것이 가장 정확하겠지만 영어 울렁증이 있는 사람이라면 이 글을 참고하는 것도 나쁘진 않다.
(하지만 Chrome에서 좋은 영어 번역 기능을 제공하니 하다가 이상하다 싶으면 위 링크를 타고 가서 한글 번역 기능 사용 후 진행하는 것을 추천한다.)
시작에 앞서서...
기본적으로 SDN에 대한 지식은 가지고 시작하는 것이 도움이 될 것이다.
예전에 작성한 글이지만 개인 공부용으로 정리해 놓은 것이니 쉽고 요점만 정리해놓았다.(맞는지는 모른다)
SDN에 대한 기초 지식 : https://freloha.tistory.com/manage/newpost/40?type=post&returnURL=https%3A%2F%2Ffreloha.tistory.com%2Fmanage%2Fposts
웹 상에서 SDN에 대해 이론적인 부분은 여러 블로그를 통해 많이 배포되어 있지만 실습이나 환경구축에 대한 글은 적은 것 같다. 개인 공부도 겸하여 mininet.org에서 제작한 Mininet 사용법을 기준으로 실습을 진행한다.
Mininet이란?
가상 네트워크를 통해 SDN이나 Openflow와 같은 네트워크 환경을 시뮬레이션할 수 있는 오픈 소스 프로그램
1. Virtual Box 다운로드하기
자신의 컴퓨터 환경이 Linux인 사람들은 모르겠으나, Window 기반의 컴퓨터를 사용하는 사람이 Linux와 같은 다른 OS를 사용하기 위해서는 가상머신이 필요하다. 대표적인 무료 가상머신이 Virtual Box인데 이를 사용하여 Mininet을 실행하고자 한다.
다운로드 링크 : https://www.virtualbox.org/wiki/Downloads
필자의 경우, windows를 사용하기 때문에 밑줄 친 <windows hosts>를 눌러 다운로드를 받았다.
2. Mininet VM image 다운로드 받기
Virtual Machine(가상머신)에서 다른 OS를 구동하기 위해서는 이미지파일(ex : 대표적으로 .iso 확장자)이 있어야 한다. Mininet 역시 이미지파일이 있어야 구동이 되기 때문에 다운로드 한다.
다운로드 링크 : https://github.com/mininet/mininet/releases
amd64와 i386이 존재하는데 솔직히 둘의 차이를 잘 몰라 그나마 들어본적 있는 amd로 다운받았으며 source code는 당장 쓸일이 있는지는 모르겠으나 나중에 다운받기 귀찮아 미리 다운 받았다.
3. Virtual Box에 Mininet 환경 구축하기
1) 다운로드 받은 mininet-server0amd64.zip 압축을 풀기
2) Virtual Box를 열고 [파일 - 가상 시스템 가져오기(Ctrl + I)]를 클릭하고 압축을 풀어둔 Mininet image(.ovf)를 가져온다.
Mininet을 실습하기 위해서는 최소 두 개의 VM이 필요하다. 때문에 위 작업을 두 번 반복하여 VM을 2개 만든다.
4. Mininet 네트워크 설정
VM을 두 개 만들었는데 그 중 하나의 네트워크를 설정해주어야 한다.
이로서 기초적인 실습을 위한 환경 구축이 되었다.
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(가상 네트워크 토폴로지)를 만들어본다.
mininet-vm login이 나타나는데 id 와 password 모두 'mininet'이다.
로그인 시,커멘드 창이 mininet@mininet-vm으로 바뀐 것을 확인할 수 있다.
[ifconfig eth0] 명령어를 통해 1번 인터페이스에 있는 정보를 얻어올 수 있다.
위에서 호스트 전용 어댑터로 하나 만들었었는데 이를 사용하기 위해서는 [sudo dhclient eth1] 명령어를 사용한다.
그 후, [ifconfig eth1] 명령어를 입력하면 eth1에 대한 정보가 나타나는 것을 확인할 수 있다.
다른 VM으로 들어가서 호스트 전용 어댑터에 접속한다.
[ssh -X mininet@10.0.2.15]를 입력한다.
(10.0.2.15 부분에는 ifconfig eth1을 통해 확인한 inet addr을 입력해주면 된다. 이 부분이 영상과 다르게 나오는데 맞는지 틀린지는 잘 모르겠다...)
[sudo mn --topo single,3 --mac --switch ovsk --controller remote]를 입력하여 3개의 호스트, 하나의 스위치, 하나의 컨트롤러를 구성한다.
입력하였다면 아래와 같이 추가된 호스트와 스위치, 링크 관계, 컨트롤러에 대한 정보가 표시된다.
영어로 된 것과는 별개로 설명 자체가 저같은 초심자가 따라하기에는 어려움이 많았습니다...
실습을 따라하면서도 "이게 맞는건가...?" 싶지만 가르쳐줄 사람이 없고 질문을 해도 StackOverflow나 Mininet 이메일로 해야해서 빠른 피드백은 어려울 것 같네요...
국내서적도 여러 권 찾아봤지만 실습에 대해 기초적인 것부터 자세히 기술된게 없어서 멘땅에 해딩 식으로 해야겠습니다...
진행하다가 틀린 부분이 굉장히 많습니다.
지적해주시면 감사하겠습니다.
'IT > SDN with Java Socket Programming' 카테고리의 다른 글
[Openflow/SDN]Java로 SDN을 위한 Openflow Controller 를 만들기 위해 공부하면 좋은 사전 지식들 (0) | 2021.01.09 |
---|---|
[Socket/SDN 기초] Socket Programming과 Software Defined Network(SDN)에 대한 사전 지식 (0) | 2020.12.22 |
[SDN 기초 지식] SDN 시작 전 기초지식 요약(1) (0) | 2020.06.07 |