Date post: | 08-Jan-2017 |
Category: |
Technology |
Upload: | cheolmin-lee |
View: | 440 times |
Download: | 17 times |
© 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
© 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
© 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
© PIOLINK, Inc. SDN No.1
1. INTRODUCE
● SDN(Software Defined Networking)?○ network에 존재하는 모든 switch를 관리
■ 최적 경로 연산■ network device monitoring■ 중앙 집중식 관리
5
© 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
© PIOLINK, Inc. SDN No.1
2. Platform
7
© 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 미 지원
© PIOLINK, Inc. SDN No.1
2. Platform - Northboud app & Interfaces
9
2) AAA AuthN Filter
● Authentication(인증), Authorization(권한), Accounting(계정) Filter
© 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
© PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
11
1) Base Network Functions
© 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
© PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
13
2) Enhanced Network Services(add service = yellow box)
© 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
© PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
15
3) Network Abstractions(Policy/Intent)
© 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
© PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
17
4) Service Abstraction Layer/Core
© 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
© 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에게 전달
© 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
© PIOLINK, Inc. SDN No.1
2. Platform - Data Plane Elements
21
● Data Plane Elements○ Physical 또는 Virtual Network device
© PIOLINK, Inc. SDN No.1
2. Platform - Project Dependencies
22
© 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
© 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
© 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
© 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
© 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
© 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
© 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 확인)
© 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
© 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
© 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
© 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
© 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() ) }
© 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
© PIOLINK, Inc. SDN No.1
6. Simulation
● ODL dlux 접속
36
© PIOLINK, Inc. SDN No.1
6. ODL View
● ODL 확인
37
감사합니다.㈜파이오링크
서울시 금천구 가산디지털2로 98
(가산동 550-1) IT캐슬 1동 401호TEL: 02-2025-6900FAX: 02-2025-6901www.PIOLINK.com
38