onos - multiple instance setting(distributed sdn controller)

31
ONOS SDN Controller 소스코드 분석 SDN 응용개발 Mobile Convergence Lab, Computer Engineering, Kyung Hee University Sangyun Han Email : [email protected] SDN/NFV 이론, 실습, 최신동향 [ONOS 다중 인스턴스 설치 및 테스트]

Upload: sangyun-han

Post on 16-Apr-2017

960 views

Category:

Software


1 download

TRANSCRIPT

Page 1: ONOS - multiple instance setting(Distributed SDN Controller)

ONOS SDN Controller소스코드 분석 및 SDN 응용개발

Mobile Convergence Lab, Computer Engineering, Kyung Hee University

Sangyun Han

Email : [email protected]

SDN/NFV 이론, 실습, 최신동향

[ONOS 다중 인스턴스 설치 및 테스트]

Page 2: ONOS - multiple instance setting(Distributed SDN Controller)

Structure of Machines

• 다중 인스턴스 설치 시, 사용할 머신들의 구조

Mobile Convergence Laboratory 2

Internet

Physical machine

Virtual machine Virtual machine Virtual machine

Instance 1 Instance 2 Instance 3

Eth0 Eth1 Eth0 Eth1 Eth0 Eth1

Host-Only Network

Page 3: ONOS - multiple instance setting(Distributed SDN Controller)

Structure of Machines

• 다중 인스턴스 설치 시, 사용할 머신들의 구조

Mobile Convergence Laboratory 3

Internet

Physical machine

Virtual machine Virtual machine Virtual machine

Instance 1 Instance 2 Instance 3

Eth0 Eth1 Eth0 Eth1 Eth0 Eth1

Host-Only Network

현재 설치 중인인스턴스 Instance Duplication

Page 4: ONOS - multiple instance setting(Distributed SDN Controller)

Configure1. Change linux user authority

2. Install openssh-server

Mobile Convergence Laboratory 4

Page 5: ONOS - multiple instance setting(Distributed SDN Controller)

Configuration

• 다중 노드 설치 시,• 유저명 sdn에 비밀번호 없도록 권한 추가(SSH 접속 시)

• /etc/sudoers 파일 수정• sdn ALL=(ALL) NOPASSWD:ALL

• SSH 설치• $ sudo apt-get install openssh-server

Mobile Convergence Laboratory 5

Page 6: ONOS - multiple instance setting(Distributed SDN Controller)

Configuration

Mobile Convergence Laboratory 6

Page 7: ONOS - multiple instance setting(Distributed SDN Controller)

ONOS - Install multi instance 1. Getting ONOS

2. Installing ONOS

3. Start ONOS

Mobile Convergence Laboratory 7https://wiki.onosproject.org/display/ONOS/Installing+and+Running+ONOS

Page 8: ONOS - multiple instance setting(Distributed SDN Controller)

ONOS Multiple Instances-scenario 1

Mobile Convergence Laboratory 8

- Download source code

- Build ONOS project

- Package the project

- Deploy the packageDeploy & Install

Copy VM instance

Page 9: ONOS - multiple instance setting(Distributed SDN Controller)

ONOS Multiple Instances-scenario 2

Mobile Convergence Laboratory 9

- Download source code

- Build ONOS project

- Package the project

- Deploy the packageDeploy & Install

Page 10: ONOS - multiple instance setting(Distributed SDN Controller)

1. Prepare multi machine

• 물리 머신 or 가상 머신• 홀수의 머신이 필요( ∵ RAFT algorithm for distributed clustering)

• 물리 머신이라면Java 설치 및 경로 설정(1,2), 환경 셋팅(4,5), 경로 설정(7) 필요

• 가상 머신이라면 그대로 복사(주의! MAC 주소 수동 변경)

Mobile Convergence Laboratory 10

Multiple Instance Setting (1/6)

Page 11: ONOS - multiple instance setting(Distributed SDN Controller)

1. Prepare multi machine

Mobile Convergence Laboratory 11

Multiple Instance Setting (1/6)

Page 12: ONOS - multiple instance setting(Distributed SDN Controller)

주의!

Mobile Convergence Laboratory 12

새로 고침

Page 13: ONOS - multiple instance setting(Distributed SDN Controller)

1. Prepare multi machine

Mobile Convergence Laboratory 13

Multiple Instance Setting (1/6)

인스턴스 3개 복제 완료

Page 14: ONOS - multiple instance setting(Distributed SDN Controller)

2. cell script

Mobile Convergence Laboratory 14

Multiple Instance Setting (2/6)

• a cell is a collection of environment variables that are used• cells make it easy to use the utility scripts to package, configure, install, and run ONOS.

• ~/onos/tools/test/cells

Page 15: ONOS - multiple instance setting(Distributed SDN Controller)

2. cell script

Mobile Convergence Laboratory 15

Multiple Instance Setting (2/6)

• ~/onos/tools/test/cells

• 디렉토리에 FILE_NAME 파일에다음과 같이 작성

• 머신과 환경에 맞게 작성

Page 16: ONOS - multiple instance setting(Distributed SDN Controller)

3. Define control plane

• cell 명령어와 작성한 스크립트로 제어 평면에 대한 정의$ cell FILE_NAME

Mobile Convergence Laboratory 16

Multiple Instance Setting (4/6)

Page 17: ONOS - multiple instance setting(Distributed SDN Controller)

4. Connect SSH

• 배포할 머신과 패키징을 받을 머신들끼리 연결

$ ssh-keygen -t rsa // 각 인스턴스 머신마다 key 생성$ onos-push-keys $OC1 // 노드 개수 만큼

$ onos-push-keys $OC3$ onos-verify-cell // 연결 확인

Mobile Convergence Laboratory 17

Multiple Instance Setting (3/6)

Page 18: ONOS - multiple instance setting(Distributed SDN Controller)

4. Connect SSH

• 배포할 머신과 패키징을 받을 머신들끼리 연결

Mobile Convergence Laboratory 18

Multiple Instance Setting (3/6)

주의!OpenSSH-Server 설치 필수(p.5 참고)

Page 19: ONOS - multiple instance setting(Distributed SDN Controller)

4. Connect SSH

• 배포할 머신과 패키징을 받을 머신들끼리 연결

Mobile Convergence Laboratory 19

Multiple Instance Setting (3/6)

연결할 인스턴스 수 만큼 push-key 진행

password (mclab)초기 계정 비밀번호

Page 20: ONOS - multiple instance setting(Distributed SDN Controller)

4. Connect SSH

• 각 인스턴스끼리 연결 확인

Mobile Convergence Laboratory 20

Multiple Instance Setting (3/6)

Page 21: ONOS - multiple instance setting(Distributed SDN Controller)

5. Packaging and Deploying

$ mvn clean install$ onos-package

$ onos-install $OC1

$ onos-install $OC3배포 및 실행, onos의 process PID가 반환

Mobile Convergence Laboratory 21

Multiple Instance Setting (5/6)

Page 22: ONOS - multiple instance setting(Distributed SDN Controller)

5. Packaging and Deploying

$ onos-install $OC1

$ onos-install $OC3배포 및 실행, onos의 process PID가 반환

Mobile Convergence Laboratory 22

Multiple Instance Setting (5/6)

Page 23: ONOS - multiple instance setting(Distributed SDN Controller)

6. Manage Multi instances

• CLI$ onos -w $OC1 //cell script에 등록한 인스턴스 이름또는$ onos -w 192.168.56.101 //해당 인스턴스의 IP

• GUI in webhttp://192.168.56.101:8181/onos/ui/login.html//접속하고자 하는 인스턴스의 IP

Mobile Convergence Laboratory 23

Multiple Instance Setting (6/6)

Page 24: ONOS - multiple instance setting(Distributed SDN Controller)

6. Manage Multi instances• CLI//cell에 등록한 인스턴스 이름$ onos -w $OC1

//해당 인스턴스 IP$ onos -w 192.168.56.101

Mobile Convergence Laboratory 24

Multiple Instance Setting (6/6)

Page 25: ONOS - multiple instance setting(Distributed SDN Controller)

Mobile Convergence Laboratory 25

<ONOS Instance>

Page 26: ONOS - multiple instance setting(Distributed SDN Controller)

ONOS command

• onos-service $OC1 start/stop/restart/status

• onos-install• onos-uninstall $OC1

• onos-show-cell• onos-log

Mobile Convergence Laboratory 26

Page 27: ONOS - multiple instance setting(Distributed SDN Controller)

ONOS - Test multi instance 1. mininet script by python code

2. connect multi instance to mininet

Mobile Convergence Laboratory 27

http://mininet.org/sample-workflow/

Page 28: ONOS - multiple instance setting(Distributed SDN Controller)

mininet depth & fanout

• depth 2 and fanout 8= 64 hosts connected to 9 switches

Mobile Convergence Laboratory 28

S

S SS S SS SSH H…8 hosts

H H…8 hosts

…64 hosts

8 switches

1 switch

switch number = ∑ (𝑓𝑎𝑛𝑜𝑢𝑡)+,-./012+3-

Page 29: ONOS - multiple instance setting(Distributed SDN Controller)

python script

Mobile Convergence Laboratory 29

입력되는 컨트롤러와의 연결

sudo python tree.py $OC1 $OC2 $OC3

컨트롤러 실행부

토폴로지 셋팅

Page 30: ONOS - multiple instance setting(Distributed SDN Controller)

tree.py code

import sys

from mininet.net import Mininet

from mininet.topo import Topo

from mininet.log import setLogLevel

from mininet.cli import CLI

from mininet.topolib import TreeTopo

from mininet.node import RemoteController, OVSKernelSwitch

myTree = TreeTopo(depth=3,fanout=4)

def run( controllers ):

net = Mininet( topo=myTree, controller=None, autoSetMacs=True )

ctrl_count = 0

for controllerIP in controllers:

net.addController( 'c%d' % ctrl_count, RemoteController, ip=controllerIP )

ctrl_count += 1

net.start()

CLI( net )

net.topo()

if __name__ == '__main__':

setLogLevel( 'info' )

if len(sys.argv ) > 1:

controllers = sys.argv[ 1: ]

else:

print 'Usage: sudo python tree.py '

exit(1)

run(controllers)Mobile Convergence Laboratory 30

for copy & paste

Page 31: ONOS - multiple instance setting(Distributed SDN Controller)

Mobile Convergence Laboratory 31