Contenu connexe Similaire à Opendaylight beryllium (20) Opendaylight beryllium2. © PIOLINK, Inc. SDN No.1
목차
1. INTRODUCE
2. Platform
a. 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 Install
a. ODL install
b. Tool (Open vSwitch & Mininet) Install
6. ODL view
2
3. © 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
4. © 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
5. © PIOLINK, Inc. SDN No.1
1. INTRODUCE
● SDN(Software Defined Networking)?
○ network에 존재하는 모든 switch를 관리
■ 최적 경로 연산
■ network device monitoring
■ 중앙 집중식 관리
5
6. © 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
8. © 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 미 지원
9. © PIOLINK, Inc. SDN No.1
2. Platform - Northboud app & Interfaces
9
2) AAA AuthN Filter
● Authentication(인증), Authorization(권한), Accounting(계정) Filter
10. © 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
11. © PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
11
1) Base Network Functions
12. © 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
13. © PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
13
2) Enhanced Network Services(add service = yellow box)
14. © 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
15. © PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
15
3) Network Abstractions(Policy/Intent)
16. © 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
17. © PIOLINK, Inc. SDN No.1
2. Platform - Controller Platform Services/Applications
17
4) Service Abstraction Layer/Core
18. © 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
19. © 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에게 전달
20. © 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
21. © PIOLINK, Inc. SDN No.1
2. Platform - Data Plane Elements
21
● Data Plane Elements
○ Physical 또는 Virtual Network device
23. © 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
24. © 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
25. © 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
26. © 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
27. © 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
28. © 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
29. © 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 확인)
30. © 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
31. © 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
32. © PIOLINK, Inc. SDN No.1
5. ODL & Tools Install - Tool (Open vSwitch & Mininet) Install
32
● Open vSwitch Install
○ ovs 설치 및 설정
■ 설정
○ ovs 실행 및 확인
■ 실행
■ 확인
cmlee@cmlee:~$ sudo modprobe openvswitch
cmlee@cmlee:~$ mkdir -p /usr/local/etc/openvswitch
cmlee@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
--deta
cmlee@cmlee:~$ sudo ovs-vswitchd --log-file --pidfile --detach
cmlee@cmlee:~$ sudo ovs-vsctl show
cmlee@cmlee:~$ sudo ovs-ofctl dump-flows ovsschema
33. © 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
34. © 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.py
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from 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() ) }
35. © 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