Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Opendaylight beryllium

799 views

Published on

목차
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

Published in: Technology
  • Be the first to comment

Opendaylight beryllium

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

×