일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Container
- 리워드앱
- AWS
- aws codecommit
- 도커
- 하나머니
- namespace
- DocumentDB
- docker
- built-in
- codecommit
- 앱테크
- 리뷰
- 포인트앱
- mininet
- 커피머니불리기
- docker network
- 토스카드
- VPC
- 실사용
- 재테크
- Python
- network
- S3
- clone
- 후기
- Linux
- MongoDB
- python3
- MongoEngine
- Today
- Total
ㅍㅍㅋㄷ
Mininet을 이용한 SDN 실습(1) - topo, switch, controller 본문
Mininet
[Contents]
1. Mininet을 통한 SDN실습 - Virtual Box와 Vagrant를 이용한 구성
2. Mininet을 이용한 SDN실습(1) - topo, switch, controller
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 을 이용해 원하는 대로 직접 구성해보는 방법을 알아보자.
'IT > SDN' 카테고리의 다른 글
Mininet을 이용한 SDN실습 (2) - Python을 이용한 Topology 구성 (1) | 2016.06.01 |
---|---|
Mininet을 통한 SDN실습 - Virtual Box와 Vagrant를 이용한 구성 (0) | 2015.06.23 |