본문

Mininet에 대하여 #1. 소개

Mininet은 2009년부터 스탠포드 Nick McKeown 교수 연구실에서 개발된(by Bob Lantz) 네트워크 에뮬레이터이다. 프로세스 가상화와 리눅스 Network Namespace 기능을 사용하여 가상 호스트, 가상 스위치, 가상 라우터, 가상 링크를 생성하고 이를 바탕으로 가상 네트워크를 구축하게 해준다. 최근에는 가상 광네트워크를(ROADM) 구축하는데까지 발전하였다. Mininet의 원리는 HotNets ’10 에서 발표된 A network in a laptop: rapidprototyping for software-defined networks. 논문에 자세히 설명되어 그 구현원리에 대해 살펴볼 수 있다. 참고로, Mininet을 만든 McKeown 교수의 ONRC (ON.Lab)에서는 이후에 ONOS SDN Controller를 만들었다.


http://mininet.org/download/ 사이트에 접속하면 VM사용, 소스기반설치, 패키지기반설치의 세가지의 설치옵션을 제공하는데 보이다시피 매우 간단하게 설치할 수 있다. 그중에서 가장 간편한 방법은 가상머신을 다운받아서 VirtualBox로 실행시키는것. 800MB정도의 가상머신 이미지 압축파일을 해제하면 약 2GB의 가상머신이 생성되고, 이를 실행시키면 된다. (암호 비밀번호 모두 mininet이다) 실행시킬때는 이전글인 '편리하게 VirtualBox기반 서버 관리하기 (Headless+KiTTY+Xming)' 페이지를 참고하는것도 좋다. (ciena에서 만든 docker이미지도 있긴하나 실행이 잘 안된다.)


우분투를 구동하면 바로 Mininet을 구동할 수 있다. Mininet은 네트워크 인터페이스등을 직접 편집해야하므로 실행시 루트권한이 필요하다. 따라서 mn 명령앞에 sudo를 붙여 실행한다. 아무런 스위치 없이 'sudo mn' 명령을 실행하면 아래와같이 가상 스위치 하나와 이에 연결되어있는 가상 호스트 두개로 이루어진 가상 네트워크가 구축된다. (추가로 기본적인 기능을 가진 SDN 컨트롤러가 네트워크내에 제공된다)


네트워크가 구축되면 각 노드들에 대해 명령을 실행할 수 있다. 우선 네트워크에 포함된 노드들의 목록을 보기 위해 nodes 명령을 내리면 available nodes are: c0 h1 h2 s1 이 출력된다. 각각 controller, host 1&2, switch를 의미하고 만약 host1내에서 h2에 ping을 실행하고자 한다면 h1 ping h2을 입력할 수 있다. 또한 모든 노드들에 대해 서로간의 ping을 수행하고 싶다 한다면 간단하게 pingall을 실행할 수 있다. 이번 글에서는 간단히 Mininet의 실행만 다루었고, 다음에는 고급 명령어, SDN Controller와의 연계, Python 개발등에 대해 다룰 예정이다.



댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.