+ All Categories
Home > Technology > Opendaylight beryllium

Opendaylight beryllium

Date post: 08-Jan-2017
Category:
Upload: cheolmin-lee
View: 440 times
Download: 17 times
Share this document with a friend
38
OpenDayLight Beryllium 2016. 05. 04 ㈜파이오링크 SDN개발실 이철민 ([email protected])
Transcript
Page 1: Opendaylight beryllium

OpenDayLight Beryllium

2016. 05. 04㈜파이오링크

SDN개발실 이철민 ([email protected])

Page 2: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

목차

1. INTRODUCE

2. Platforma. Northbound app & Interfaces

b. Controller Platform Services/Applications

i. Services & Applications

ii. Service Abstraction Layer/Core

c. Southbound Interfaces & Protocol Plugins

d. Data Plane Elements

3. ODL Multi Controller Distributed

4. Release Note

5. ODL & Tools Installa. ODL install

b. Tool (Open vSwitch & Mininet) Install

6. ODL view

2

Page 3: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

1. INTRODUCE

● ODL(OpenDayLight) Project?○ Open source platform for Software Defined Networking

■ Open protocol을 이용하여 중앙 집중식 네트워크 모니터링 & 프로그램 제어 관리■ OpenFlow 지원■ SNMP, NETCONF, OVSDB, BGP, PCEP, LISP등등 의 다양한 네트워크 프로토콜을 지원.

■ 추가되는 새로운 프로토콜 및 서비스에 대해 개발.■ 최적의 네트워크 성능을 신속하고 지능적으로 제공할 수 있는 인터페이스를 제공

○ microservices 아키텍처■ 서비스 기능을 중심으로(API가 아닌) 구성. 서비스의 교체가 용의■ 자세한 사항은 https://en.wikipedia.org/wiki/Microservices

○ ODL의 service 및 plugin 개발을 위한 필요 지식■ The YANG modeling language■ Model-Driven Service Abstraction Layer (MD-SAL)■ Maven build tool■ Management of the shared data store■ How to handle notifications and(or) Remote Procedure Calls (RPCs)■ Written in Java

○ Origin and releases■ 2013 Hydrogen■ 2016/03 Beryllium■ Periodic releases every _9 months

3

Page 4: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

1. INTRODUCE

● SDN(Software Defined Networking)?○ legacy switch의 구성 요소에서 Software 적인 요소만을 분리

■ Application(Software) Layer - 네트워크 지능화■ Control Plane(Software) Layer - 운영체제 기능■ Data Plane(Hardware) Layer - 데이터 전송

○ 중앙 Controller에서 switch의 Software(Control Plane)을 관리■ data path 정보■ switch config 정보■ switch와의 communication 매커니즘(표준 프로토콜 - Openflow)

4

Page 5: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

1. INTRODUCE

● SDN(Software Defined Networking)?○ network에 존재하는 모든 switch를 관리

■ 최적 경로 연산■ network device monitoring■ 중앙 집중식 관리

5

Page 6: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

1. INTRODUCE

● Openflow○ Controller와 switch간 통신 protocol○ Controller의 topology 관리(ex. interface down > up)

■ switch의 interface가 down > up■ switch가 controller 에게 상태 변경 메시지 전송(port 번호 & MAC 주소 등)■ switch가 해당 interface로 LLDP 패킷을 전송하도록 controller에서 Packet Out

Message(LLDP 패킷의 정보 포함) 전송■ LLDP를 받은 인접한 switch는 controller에 unknown (down되어 있던 interface로 들어온 알수없는)packet을 알리기 위해 Packet In Message를 전송

■ Packet In Message를 통해 변경된 switch의 interface에 인접한 switch의 정보를 확인■ 해당 정보를 기반으로 topology 갱신

○ network devices의 control path설정을 Controller에서 일괄적 제어

6

Page 7: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform

7

Page 8: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Northboud app & Interfaces

8

1) Graphical User Interface Application and Toolkit

● DLUX - Web based user Interface○ MD-SAL 흐름 뷰어○ Network topology 시각화○ YANG tree 쿼리 및 시각화

● *(New)Network embedded Experience(NeXt) - Network-centric topology UI○ 크고 복잡한 네트워크 topology○ Aggregated 네트워크 nodes○ Traffic / path / tunnel / group 시각화○ 다양한 layout 알고리즘○ Map overlays○ IE 미 지원

Page 9: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Northboud app & Interfaces

9

2) AAA AuthN Filter

● Authentication(인증), Authorization(권한), Accounting(계정) Filter

Page 10: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Northboud app & Interfaces

10

3) Northboud APIs(SDN Application과 통신에 사용되는 Interface)

● REST/RESTCONF○ Server - Client 통신 방식○ Application layer(=NorthBound)에서 controller core인 SAL(자원)에 접근하기 위한 web Interface

■ REST - AD-SAL(API-Driven)에서 사용■ RESTCONF - MD-SAL(Model-Driven)에서 사용

● NETCONF○ XML base configuration○ Network management protocol

■ Application layer(NorthBound) managing■ Data plane Elements layer(SouthBoud) managing

● *(New)AMQP(Advanced Message Queueing Protocol)○ 모듈간 통신 protocol

Page 11: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

11

1) Base Network Functions

Page 12: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

12

1) Base Network Functions

● Host Tracker○ Network에 속해 있는 host의 위치를 추적

● L2 Switch○ Layer 2 switch 기능 제공

● OpenFlow Forwarding Rules Mgr○ network forwarding rule managing

● OpenFlow Stats Manager○ network 통계 Managing

● OpenFlow Switch Manager○ switch managing

● Topology Processing○ underlay topology가 변경 될 때마다 processing

Page 13: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

13

2) Enhanced Network Services(add service = yellow box)

Page 14: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

14

2) Enhanced Network Services

● *(New)Messaging For Transport○ AMQP와 함께 message 중심 미들웨어 MD-SAL에 binding○ https://wiki.opendaylight.org/view/Messaging4Transport:Main

● *(New)Centinel-Streaming Data Hdlr○ 스트리밍 데이터의 수집, 집계, 분석하여 신뢰성있는 분산을 제공하는 프레임 워크○ https://wiki.opendaylight.org/view/Centinel:Main

● *(New)NetIDE○ NetIDE network 엔진은 다수의 Client SDN Controller(Application plane)가 NetIDE core(AMQP)를 통해서 하나의 Server SDN Controller(Controller Plane)와 통신하여 네트워크를 관리할 수 있도록 한다.

○ https://wiki.opendaylight.org/view/NetIDE:Main● *(New)Controller Shield

○ Controller 공격 통계 및 보안 정보를 northbound 및 east/west application에게 제공하는 interface○ https://wiki.opendaylight.org/view/Controller_Shield:Main

● *(New)User Network Interface Mgr○ User Network와 연결되는 Interface를 구성하는 플러그인○ https://wiki.opendaylight.org/view/Unimgr:Main

Page 15: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

15

3) Network Abstractions(Policy/Intent)

Page 16: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

16

3) Network Abstractions(Policy/Intent)

● *(New)Fabric as a Service(FaaS)○ physical network 상단에 common abstraction layer를 생성○ Northbound APIs 또는 services가 physical network에 보다 쉽게 구체적인 장치 구성을 mapping○ https://wiki.opendaylight.org/view/FaaS:Main

● *(New)NEMO○ Network 사용을 단순화 하는 것이 목적○ https://wiki.opendaylight.org/view/NEMO:Main

Page 17: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

17

4) Service Abstraction Layer/Core

Page 18: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

18

4) Service Abstraction Layer/Core

● MD-SAL(Model-Driven Service Abstraction Layer)○ MD-SAL의 기능

■ Data(Config & Operational) 저장소 기능■ Services 기능들과 plug-in들간의 RPC Routing 기능■ Data Store에 저장된 Data 변화 시 이를 알려주는 Notification 기능

○ 특징■ Services 기능과 plug-in 간의 Routing 경로가 plugin 추가 또는 삭제시 compile 또는 build 없이 변경

■ YANG으로 모델링 되어 Data 저장소 공유■ 독립된 프로토콜과 서비스들이 결합

○ 용어■ Provider : plug-in 또는 service가 MD-SAL 계층에 자신들이 제공하는 RPC를 Registry에 등록 할 경우

■ Consummer : 다른 plug-in 이나 service가 등록한(제공하는) RPC를 호출하고자 하는 plug-in 또는 service인 경우

■ Binding-Aware Broker(BAB) : application interface■ Binding-Independent Broker(BIB) : Provider insterface

Page 19: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Controller Platform Services/Applications

19

4) Service Abstraction Layer/Core

● MD-SAL(Model-Driven Service Abstraction Layer)○ 동작

■ Application이 RESTCONF를 통하여 GET(add flow)요청■ Controller SAL의 BAB가 BIB에게 RPC를 이용하여 전달■ BIB역시 RPC를 이용하여 OpenFlow Plugin에게 전달■ OpenFlow Plugin은 OpenFlow library를 이용하여 Data Plane의 switch에게 설정■ 해당 결과를 역순으로 Application에게 전달

Page 20: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Southbound Interfaces & Protocol Plugins

20

● Data plane 제어 Protocol 제공(Southbound Interface)○ OpenFlow, OVSDB, NETCONF, ..

● *(New)OF-Config(OpenFlow Configuration Protocol)○ RESTCONF interface를 통해 controller의 switch에 access 구현○ https://wiki.opendaylight.org/view/OF-CONFIG:Beryllium:Release_Notes

Page 21: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Data Plane Elements

21

● Data Plane Elements○ Physical 또는 Virtual Network device

Page 22: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

2. Platform - Project Dependencies

22

Page 23: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

3. ODL Multi Controller Distributed

● Multi Controller ODL distribute data store○ 서로 다른 Controller에 data를 분산 저장

■ YANG 모듈 단위의 슈평적 데이터 분할 기능을 제공■ Controller간의 데이터 복제 및 동기화는 Raft 프로토콜을 사용■ Raft 프로토콜에서 선출되는 Leader Controller만이 Read/Wirte 동작

● 모듈 별 Leader 선출 가능● Leader 선출 시, 다른 Controller는 자동으로 Follower로 동작● Client가 Follower에게 data read 요청시 Follower는 Leader에게 전달● Leader가 data를 Follower에게 전달하고 다시 Floower가 Client에게 전달● Write 동작 동일

■ Leader Controller 장애시 재 선정 과정을 수행 장애를 자동으로 복구● 재 선정 시간 동안 접근 서비스는 중단● Leader 재 선정시 서비스 재개

○ Remote RPC Routing■ MD-SAL 계층에서 RPC Routing기능을 제공■ 기존 단일 Controller Consumer, Provider외에

23

Page 24: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

3. ODL Multi Controller Distributed

● Multi Controller Remote RPC Routing○ 서로 다른 Controller plug-in 또는 Service간의 RPC Routing

■ MD-SAL 계층에서 RPC Routing기능을 제공■ 기존 단일 Controller Consumer, Provider가 서로 다른 Controller에 위치할 경우 호출 기능이 Remote RPC Routing

■ Remote RPC Routing 기능을 수행하기 위해 인스턴스별 RPC Registry 정보를 MAP<Key, Value> 데이터 구조로 유지

● Key : Controller 주소● Value : Controller의 RPC Registry정보● RPC Registry 정보에 timestamp 기반 버전 정보를 포함

■ Controller끼리 RPC Registry 정보를 주기적으로 교환하며 update● Gossip 프로토콜을 이용 GossipStatus메시지를 통해 다른 Controller에게 전송● 받은 GossipStatus 메시지의 버전 정보가 자신이 낮을 경우 업데이트 요청● 받은 GossipStatus 메시지의 버전 정보가 자신이 높을 경우 자신의 RPC

Registry 정보를 전송

24

Page 25: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

4. Release Note - beryllium

● Target Environment○ 실행을 위해서

■ Java 7 - or Java 8 - compliant JVM■ Oracle JDK 사용시 1.7.0_45 이상 사용■ 64bit linux 필요■ TSDR - 외부 데이터베이스에 대한 요구사항 확장■ SFC - 특정 구성을 위한 추가 기능 필요■ DLUX - web browser 필요■ AAA - 외부 도구에 대한 추가 요구사항 확인

○ 알려진 문제점 및 제한 사항■ 리튬에서 베릴륨으로 마이그레이션에 대해 광범위하게 테스트 되지 않았다.■ 프로젝트 릴리즈 노트에는 마이그레이션 및 호환성 정보가 포함되어 있다.■ OpenFlow 스위치에서 흐름 통계를 수집 할 때 매우 높은 신뢰성을 가진다.■ OpenFlow 스위치의 수천을 관리할 수 있지만, 결과는 배포 및 사용 사례에 따라 달라 질 수 있다.

○ 특정 릴리스 노트■ https://wiki.opendaylight.

org/view/Simultaneous_Release/Beryllium/Release_Notes○ 다음 프로젝트

■ 다음 프로젝트인 Boron에는 릴리스 노트가 없다.■ https://wiki.opendaylight.org/view/Simultaneous_Release:Boron_Release_Plan

25

Page 26: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - ODL install

● ODL 설치 구조○ OSGi(Open Services Gateway initiative)

■ 완전한 동적인 SOA(Service Oriented Architecture)기반의 컴포넌트 모델을 구현■ 응용 프로그램 또는 구성 요소(Bundle)의 재시동 과정 없이 설치, 시작, 정지, 업데이트, 제거가 가능

■ OSGi프로젝트중 Karaf 플랫폼을 통해 ODL Controller를 설치

26

Page 27: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - ODL install

● ODL Install○ ODL Download

○ asdf

○ Karaf 관련 Package 설치

27

cmlee@cmlee:~$ mkdir odl

cmlee@cmlee:~$ cd odl

cmlee@cmlee:~$ wget https://nexus.opendaylight.org/content/repositories/opendaylight.

release/org/opendaylight/integration/distribution-karaf/0.4.1-Beryllium-SR1/distribution-karaf-0.4.1-Beryllium-SR1.zip

cmlee@cmlee:~$ sudo apt-get install git

cmlee@cmlee:~$ sudo apt-get install python-dev python-virtualenv

cmlee@cmlee:~$ sudo apt-get install build-essential

cmlee@cmlee:~$ sudo apt-get install openjdk-7-jdk

cmlee@cmlee:~$ sudo apt-get install maven

Page 28: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - ODL install

● ODL Install○ Java, maven 환경변수 설정

○ asdf

28

cmlee@cmlee:~$ vi ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

export MAVEN_OPTS='-Xmx1048m -XX:MaxPermSize=512m'

cmlee@cmlee:~$ source ~/.bashrc

Page 29: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - ODL install

● ODL Install○ ODL 설치 및 설정

■ 설치

■ 설정

29

cmlee@cmlee:~$ unzip distribution-karaf-0.4.1-Beryllium-SR1.zip

cmlee@cmlee:~$ cd distribution-karaf-0.4.1-Beryllium-SR1/

cmlee@cmlee:~$ cd etc

cmlee@cmlee:~$ cp org.apache.karaf.management.cfg org.apache.karaf.management.cfg.original

cmlee@cmlee:~$ vi org.apache.karaf.management.cfg

rmiRegistryHost = 192.168.224.170

rmiServerHost = 192.168.224.170

(karaf가 설치 된 머신 IP 또는 local IP 인 127.0.0.1)

rmiRegistryPort = 1099

rmiServerPort = 44444

(service port 확인)

Page 30: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - ODL install

● ODL Install○ 실행 및 feature 설치

■ 실행

■ feature 설치

■ 설치 확인● chrome 실행● http://192.168.224.170:8181/index.html● login admin/admin

30

cmlee@cmlee:~$ cd ..

cmlee@cmlee:~$ ./bin/karaf

opendaylight-user@root> feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-core odl-

openflowplugin-all

Page 31: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - Tool (Open vSwitch & Mininet) Install

31

● Open vSwitch Install○ ovs download

○ ovs 관련 package 설치

○ ovs 설치 및 설정■ 설치

cmlee@cmlee:~$ git clone https://github.com/openvswitch/ovs

cmlee@cmlee:~$ sudo apt-get install git

cmlee@cmlee:~$ sudo apt-get install automake autoconf

cmlee@cmlee:~$ sudo apt-get install uml-utilities libtool build-essential

cmlee@cmlee:~$ cd ovs

cmlee@cmlee:~$ ./boot.sh

cmlee@cmlee:~$ ./configure --with-linux=/lib/modules/$(uname -r)/build

cmlee@cmlee:~$ make

cmlee@cmlee:~$ sudo make install

cmlee@cmlee:~$ sudo make modules_install

Page 32: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - Tool (Open vSwitch & Mininet) Install

32

● Open vSwitch Install○ ovs 설치 및 설정

■ 설정

○ ovs 실행 및 확인■ 실행

■ 확인

cmlee@cmlee:~$ sudo modprobe openvswitchcmlee@cmlee:~$ mkdir -p /usr/local/etc/openvswitchcmlee@cmlee:~$ sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema

cmlee@cmlee:~$ sudo ovsdb-server \--remote=punix:/usr/local/var/run/openvswitch/db.sock \--remote=db:Open_vSwitch,Open_vSwitch,manager_options \--private-key=db:Open_vSwitch,SSL,private_key \--certificate=db:Open_vSwitch,SSL,certificate \--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \--pidfile \--detacmlee@cmlee:~$ sudo ovs-vswitchd --log-file --pidfile --detach

cmlee@cmlee:~$ sudo ovs-vsctl show

cmlee@cmlee:~$ sudo ovs-ofctl dump-flows ovsschema

Page 33: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - Tool (Open vSwitch & Mininet) Install

33

● Mininet Install○ mininet install

cmlee@cmlee:~$ sudo apt-get install mininet

Page 34: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

5. ODL & Tools Install - Tool (Open vSwitch & Mininet) Install

34

● Mininet Install■ 구성할 topo script(ex_topo.py)

cmlee@cmlee:~$ vi ex_topo.pyfrom mininet.topo import Topofrom mininet.net import Mininetfrom mininet.node import CPULimitedHostfrom mininet.link import TCLinkfrom mininet.util import dumpNodeConnectionsfrom mininet.log import setLogLevel

class ExTopo(Topo): def __init__(self, **opts): Topo.__init__(self, **opts) # host add h1 = self.addHost( 'h1' ) h2 = self.addHost( 'h2' ) h3 = self.addHost( 'h3' ) h4 = self.addHost( 'h4' ) # switch add s1 = self.addSwitch( 's1' ) s2 = self.addSwitch( 's2' ) # make link self.addLink(s1,h1) self.addLink(s1,h2) self.addLink(s2,h3) self.addLink(s2,h4) self.addLink(s1,s2)

topos = { 'extopo': (lambda: ExTopo() ) }

Page 35: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

● Mininet Install○ topology 구성

■ topo 구성

■ ping test

5. ODL & Tools Install - Tool (Open vSwitch & Mininet) Install

35

cmlee@cmlee:~$ sudo mn --custom ./ex_topo.py --topo extopo --controller=remote,ip=192.168.224.170,port=6633

mininet> h1 ping h2

mininet> h1 ping h3

mininet> h1 ping h4

mininet> h2 ping h3

mininet> h2 ping h4

mininet> h3 ping h4

Page 36: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

6. Simulation

● ODL dlux 접속

36

Page 37: Opendaylight beryllium

© PIOLINK, Inc. SDN No.1

6. ODL View

● ODL 확인

37

Page 38: Opendaylight beryllium

감사합니다.㈜파이오링크

서울시 금천구 가산디지털2로 98

(가산동 550-1) IT캐슬 1동 401호TEL: 02-2025-6900FAX: 02-2025-6901www.PIOLINK.com

38


Recommended