1. 程式人生 > >OpenDaylight架構分析

OpenDaylight架構分析

大廠 part 優化 alias 帶寬 oca with 城域網 -h

基本介紹

OpenDaylight(ODL) 是一個基於SDN開發的模塊化、可擴展、可升級、支持多協議的控制器框架。北向接口可擴展性強,REST型API用於松耦合應用,OSGI型用於緊耦合應用。引入SAL屏蔽不同協議的差異性。南向支持多種協議插件,如OpenFlow 1.0、 OpenFlow 1.3、OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等。底層支持傳統交換機、純Openflow交換機、混合模式的交換機。ODL控制平臺采用了OSGI框架,實現了模塊化和可擴展化,為OSGI模塊和服務提供了版本和周期管理。ODL靠社區的力量驅動發,支持工業級最廣的SDN和NFV使用用例。ODL每6個月推出一個版本,經歷的版本為Hydrogen、Helium、Lithium、Beryllium。

OpenDaylight 設計時候遵循六個基本架構原則:

  • Runtime Modularity and Extensibility:支持控制器運行時進行服務模塊的安裝、刪除和更新。
  • Multiprotocol Southbound:南向支持多種協議。
  • Service Abstraction Layer:南向多種協議對上提供統一的北向服務接口,MD-SAL(Model Driven Service Abstraction Layer)是opendaylight 的一個主要feature。
  • Open Extensible Northbound API:提供可擴展的應用API,通過REST或者函數調用方式。
  • Support for Multitenancy/Slicing:允許網絡邏輯上(或物理上)劃分成不同的切片或租戶,控制器的部分功能和模塊可以管理指定切片,控制器根據所管理的分片來呈現不同的控制觀測面。
  • Consistent Clustering:提供細粒度復制的聚合和確保網絡一致性的橫向擴展(scale-out)。

架構分析

ODL控制器可以運行在任何支持JAVA的平臺上,如架構圖1所示,大體分為三部分,網絡APP/業務流程層、控制器平臺層、物理/虛擬網絡設備層,北向接口與南向接口將三者連接。控制器向應用層提供北向接口,應用使用控制器收集信息,利用控制器做分析,部署新的網絡規則等。南向接口可支持多種協議,openflow1.0、openflow1.3、BGP等,這些協議插件動態地連接在SAL上。

技術分享

OpenDaylight(Beryllium)架構 圖-1

物理和虛擬網絡設備層

最底層由物理、虛擬設備組成。例如交換機、路由器等在網絡端點間建立連接。底層支持傳統交換機、純Openflow交換機、混合模式的交換機。

南向接口和協議模塊

南向接口

ODL向下層提供的接口稱之為南向接口,南向接口支持多種協議。如OpenFlow 1.0、 OpenFlow 1.3,OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等。這些協議模塊以插件的方式動態掛在SAL上。南向接口使用Netty來管理底層的並發IO。Netty是提供異步的、事件驅動的網絡應用框架,該框架健壯性、可擴展性良好,還具有延時低、節省資源等特點。Netty使用簡單,功能強大,支持多種主流協議。定制性強,可以通過channelHandler對通信框架進行靈活擴展,適用於支持多種協議的南向接口。

協議模塊

協議模塊主要有OpenFlow、OVSDB、NETCONF、LISP、BGP、PCEP和SNMP等協議模塊。其中OF最具代表性,OF是控制器與交換機之間的通信準則,管理網絡設備會話連接以及協議交互,一方面監聽底層設備的消息,另一方面將上層請求下發到底層設備,此外還支持鏈路發現服務。

為了用以太網交換機建SDN,提出一個南向接口插件。如圖2所示,可通過這個插件中的SNMP和CLI把流配置安裝到以太網交換機的轉發表、ACL 和VLAN表中,此外需要拓展SAL的API去支持一些設置。

技術分享

SNMP協議插件-圖-2

OVSDB插件用於實現open VSwitch數據庫管理協議,允許南向接口配置虛擬交換機。而LISP插件與LISP服務相互協作,為數據平臺設備提供映射服務。BGP協議用於支持BGP鏈路狀態分布,作為網絡層拓撲信息來源。而PCEP協議用於支持路徑計算單元協議,為底層網絡實例化路徑。

功能模塊

基本網絡服務功能:

拓撲管理、統計管理模塊、交換機管理模塊、轉發管理模塊、主機追蹤模塊、ARPHandler模塊

拓展服務功能(基礎版之後添加):

Affinity service、OpenStack service、LISP service、OVSDB Neutron、VTN Manager、oDMC

OpenDaylight有很多重要的技術需要了解,每種技術都需要花一段時間研究,例如OSGI框架的使用,OSGI服務的註冊和調度,maven工程中bundle的編寫方法,sal,YANG,config等,

packet分發流程

為加深對ODL架構理解,以ARP packet為例來分析packet分發流程。如圖-3 所示,OSGI 框架動態管理Bundle,綁定一起的Bundle可以相互通信,如SAL將packet 分發到實現IListenDataPacket接口的ArpHandler,同時ArpHandler調用SAL實現的IDataPacketService。

技術分享

圖-3

如圖-4所示,交換機(openflow)通過OpenFlowJava、OpenFlowPlugin、protocal_plugin與SAL進行信息,SAL將Packet-In分發到上層應用。

技術分享

圖-4

如圖-5所示,1.OpenFlowPlugin調用IPluginOutDataPacketService將ARP請求分發到SAL

2.SAL調用IListenDataPacket將ARP請求上層應用

3.上層應用調用IDataPacketService將ARP應答分發到SAL

4.SAL調用IPluginInDataPacketService將ARP應答分發到OpenFlowPlugin

技術分享

圖-5

控制器集群

ODL提供集群功能保證服務的高可用,集群中的多個實例對外表現出一個實例,NorthBound可以請求集群中任意一個實例。

集群的作用:

? Scaling: If you have multiple controllers running, you can potentially do more work with or store more data on those controllers if they are clustered. You can also break up your data into smaller chunks (known as shards) and either distribute that data across the cluster or perform certain operations on certain members of the cluster.

? High Availability: If you have multiple controllers running and one of them crashes, you would still have the other instances working and available.

? Data Persistence: You will not lose any data gathered by your controller after a manual restart or a crash.

集群使用的核心技術:

Infinispan(High Avaliable,Key/Value NoSQL datastore)提供高可用緩存服務

Raft算法保證多副本數據的一致性

Akka處理並發的請求

集群中數據如下圖所示,

技術分享

圖-6

技術分享

圖-7

技術分享

圖-8

參考文檔:

http://www.sdnlab.com/15390.html

https://wiki.opendaylight.org/images/8/88/ODL-Clustering-ONS-2016-ckd.pdf

https://nexus.opendaylight.org/content/sites/site/org.opendaylight.docs/master/userguide/manuals/userguide/bk-user-guide/content/_clustering_overview.html

集成OpenStack

ODL通過北向接口Neutron Bound與Neutron Server通信,ODL利用OpenFlow和OVSDB 管理OpenStack計算節點的OpenVSwitch(組織table內的flow entry),提供L2、L3、LoadBalanceService、FirewallService。

註:Kilo -> 開始支持L3 Liberty 依然不支持LoadBalance 等其它服務

技術分享

組織邏輯 圖-9

技術分享

ODL與OpenStack集成 圖-10

技術分享

圖-11

技術分享

圖-12

參考文檔:

http://www.flaviof.com/blog/work/how-to-odl-with-openstack-part1.html

https://wiki.opendaylight.org/images/5/55/Integrating-opendaylight-with-openstack-published.pdf

應用案例

企業認識到雲計算技術是提高自己的競爭力的核心技術,混合雲和公有雲提高業務靈活性並降低總成本的潛力,但對傳統網絡的需求依舊非常顯著。通信服務提供商(CSP)利用雲技術來增強其龐大的網絡基礎設施的可管理性和成本效益,同時提高服務靈活性。SDN體系結構的核心是SDN控制器,其主要優點為:開放API便於實現多樣化的應用;支持各大廠商的不同設備;通過可編程網絡提供了智能的控制和管理系統。

隨著網絡設備線性速率成倍增長,網絡越來越低效,網絡優化需求越來越急迫。由於帶寬和網絡延遲優先級很高,運營商和他們的用戶都在尋求方法優化網絡開銷、網絡彈性和其他跨異構網絡技術和設備的QoS指標。網絡優化對於昂貴的網絡帶寬,例如WAN(對於企業和雲提供商)、海纜網絡和傳輸網(對於運營商),是最重要的。沒有運營商可以奢侈到推翻一切從頭再來,網絡資源優化方案利用創新方案從現有的基礎設施上實施。

網絡資源優化方案應該提供:

  • 具有優化一系列參數的能力(帶寬,延遲,開銷和可用性等)
  • 具有執行一系列優化算法的能力
  • 健壯的拓撲和網絡狀態,包括多層次拓撲(對於運營商網絡而言)
  • 支持多種技術和應用
  • 策略加強
  • 具有操作多廠商設備的能力,包括不支持SDN(non-SDN-enabled)的硬件

選擇OpenDaylight

通過統一維護網絡拓撲和配置連同告警和性能狀態,OpenDaylight為網絡資源優化(NRO)提供了一套豐富的基礎網絡服務和擴展網絡服務。利用OpenDaylight的邏輯集中網絡狀態、數據分析和異構基礎設施的流量工程策略的NRO算法,提高網絡設備的利用率。運營商正在實現基於OpenDaylight融合分組光網絡的多層控制,來優化帶寬使用、保護帶寬和動態服務環境的服務布局。

OpenDaylight提供的一個開放式SDN平臺:

  • 模型驅動服務抽象層(MD-SAL)利用業界標準的YANG模型將網絡應用映射到底層設備支持的格式。
  • 模塊化、插件南向接口方法(例如,控制器到設備)廣泛支持標準的網絡管理接口(例如BGP,PCEP),OpenFlow以及專用的接口和設備。
  • 基於Intent的北向(例如,網絡應用到控制器)接口將SDN能力暴露給不同的網絡應用同時將底層基礎設備的細節抽象化。
  • 提供的服務,包括路徑計算、資源管理、針對虛擬域和物理域的數據分析。
  • 多種內置的策略規範。
  • 業界廣泛認可,包括最大的控制器社區。

通過允許運營商組合網絡應用和設備,OpenDaylight提供了一個強有力的支持自動化和操作智能化的服務交付平臺,也支持運營商根據自身情況進行SDN遷移。

示例

騰訊基於OpenDaylight的控制器,用以優化帶寬使用從而解決其在大量的數據中心間傳輸服務的問題。

中國移動NovoNet,NovoNet描繪了2020年基於SDN和NFV的企業網絡的願景,其中一個重要用例就是圍繞“自配置、自管理、智能流量規劃和實時感知”實現的流量優化。

技術分享

圖-13

多層次傳輸控制器解決方案 SDN在電信行業一個重要的用例就是Transport-SDN,專註於解決城域網和長距離連接的光分組設施的控制問題。很多主流的原始設備制造商已經基於OpenDaylight開發出了Transport SDN控制器,用來控制多層次設備。愛立信的Transport SDN產品提供了一個網絡資源和拓撲端到端、優化的資源位置以及跨IP層和光層的網絡引擎的抽象視圖。

技術分享

圖-14

OpenDaylight架構分析