ㅍㅍㅋㄷ

Mininet을 이용한 SDN 실습(1) - topo, switch, controller 본문

IT/SDN

Mininet을 이용한 SDN 실습(1) - topo, switch, controller

클쏭 2015. 7. 17. 01:00

Mininet




  Mininet 은 개인 PC에서도 손쉽게 가상 네트워크(Virtual Network) 환경을 구성하여, OpenFlow나 SDN 과 같은 network 환경을 간단히 테스트 해볼 수 있는 Open source emulator 이다.


Mininet에 대한 기본 설치 방법은 이전  포스팅을 참고. ( 여기로-! )


이번 포스팅에서는 Mininet CLI 를 통한 기본적인 사용 방법에 대해 알아보자. 


먼저 간단한 예로 아래와 같은 명령을 수행해 보자. 


vagrant@sdn-test# sudo mn --test pingall --topo single,3


갑자기 무슨일이 바쁘게 일어나기 시작한다.


*** Creating network

*** Adding controller

*** Adding hosts:

h1 h2 h3 

*** Adding switches:

s1 

*** Adding links:

(h1, s1) (h2, s1) (h3, s1) 

*** Configuring hosts

h1 h2 h3 

*** Starting controller

c0 

*** Starting 1 switches

s1 ...

*** Waiting for switches to connect

s1 

*** Ping: testing ping reachability

h1 -> h2 h3 

h2 -> h1 h3 

h3 -> h1 h2 

*** Results: 0% dropped (6/6 received)

*** Stopping 1 controllers

c0 

*** Stopping 3 links

...

*** Stopping 1 switches

s1 

*** Stopping 3 hosts

h1 h2 h3 

*** Done

completed in 5.329 seconds


정리하면, mininet 커맨드(mn) 를 이용해서 테스트 topology를 구성하고 ping을 날려 테스트 하라는 명령이다.

그렇다면 어떤 topology 가 구성된 것일까. 

그림을 그려 보면 간단하다. 



  Switch 1대에 3개의 host가 연결된 형태의 topology 가 구성된 것이다. 이 구성을 mininet 에서는 single topology 라고 하며, --topo 옵션을 사용하여 구성이 가능하다.


아래는 Mininet을 사용하기 위한 기본 개념중 가장 중요한 topo / switch / controller 에 대한 설명이다. 






topo


  topo 옵션은 mininet을 시작할때 구성하는 topology 형태를 정의하는 옵션이다. 종류는 크게 아래와 같다. 



  1) Single


  --topo single,N

  하나의 switch에 N개의 host가 연결되는 topology 형태이다.


  --topo single,3 으로 설정시 3개의 host 가 하나의 switch에 연결되는 형태이다.    




  2) Linear


   --topo linear,N,M

  N개의 switch에 각각 M개의 host가 연결되는 topology 형태이다. 만약 M을 지정하지 않을 경우 자동으로 Switch 하나에 한개의 host가 연결된다.


  --topo linear,3 으로 설정시 스위치 3개가 생성되며 각각 하나의 host가 연결된다. 


  3) Mininal


   --topo minimal

  하나의 switch 와 2개의 host가 연결되는 형태로 간단한 테스트를 위해 제공되는 옵션이다. 




  4) Tree


   --topo tree,depth=N,fanout=M

  Tree 형태의 topology를 구성해 준다. switch tree 구성의 depth와 각각이 몇개의 child를 갖게 되는지를 설정하는 fanout 값을 설정할수 있다. 


  --topo tree,depth=3, fanout=2 으로 설정시 topology 형태는 아래와 같다. 





  5) Torus


   --topo torus,N,M

  ring 형태로 switch가 연결되는 topology 를 구성해 준다. switch 와 host는 1:1 맵핑으로 구성된다. N과 M 은 3 이상 만 설정 가능하다. 


 --topo torus,3,3 으로 설정시 아래와 같은 구성이다. 


[ 그림이 매우....  ]









switch


  switch 옵션은 topology 구성시 생성되는 OpenFlow switch 종류 중 어떤걸 사용할지 선택하는 옵션이다. default 는 OVS (Open vSwitch) 이다. 



 1) ovs (ovsk)


Open vSwitch 를 사용.

Open vSwitch 에 대한 정보는 http://openvswitch.org/ )



 2) ivs


 Indigo virtual switch 를 사용. 이걸 사용하려면 추가로 ivs-ctl 설치가 필요하다. 

 추가 설치 방법은 링크 참고 ( http://techandtrains.com/2013/09/29/installing-indigo-virtual-switch-in-mininet-2-1-0/ )

 Indigo virtual switch 에 대한 정보는 ( http://www.projectfloodlight.org/indigo-virtual-switch/ )

  


 3) ovsbr


Open vSwitch 의 bridge 모드를 사용

  


 4) lxbr


Linux bridge 사용 

이걸 사용하려면 추가로 brctl을 설치해야한다.  yum 이나 apt-get 을 이용하여 쉽게 설치 가능하다. 

   


 5) user


user-space switch를 사용한다. 

   







Controller


  controller 옵션은 OpenFlow 의 controller 종류 중 어떤걸 사용할지 선택하는 옵션이다. default 는 OpenFlow controller를 사용한다. 


1) nox


  SDN controller platform 중 NOX 를 이용한다. 해당 모듈을 사용하려면 따로 설치가 필요하다. 

  NOX 에 대한 정보는 링크 참고 ( http://www.noxrepo.org/ )  



2) ovsc


  Open vSwitch controller 를 사용한다. ovs-controller 를 따로 설치해야 한다. 



3) ryu


  SDN network framework인 Ryu 를 이용한다. ryu 모듈을 따로 설치해야 한다. 

  Ryu 에 대한 정보는 링크 참고 ( http://osrg.github.io/ryu/ )



4) remote


  Mininet 외부에 있는 controller를 사용하고 싶을때는 remote 옵션을 사용한다. 


 예) --controller remote,name=XXX,ip=10.10.0.100,port=6633



5) none

  Controller 없이 topology를 배포할때 사용한다. 



다음으로, 위와 같은 Topology 구성들을 

 Python 을 이용해 원하는 대로 직접 구성해보는 방법을 알아보자. 



Comments