隨著互聯網的普及,用戶數量不斷攀升,網絡不堪重負。移動終端發展勢如破竹,智能手機不斷更新換代,各種手機軟件層出不窮,手機控隨時隨地上網,導致流量需求與日俱增,負荷過度的網絡無法滿足用戶需求。網絡體系龐大,架構臃腫,不夠靈活,不能適應不斷涌現出的新業務需求,服務質量得不到保證。網絡體系復雜,網絡操作需要與其他IT操作的集成與協作,導致網絡部署困難。網絡更新麻煩,動手操作過多,網絡管理員分身乏術。改良已經無法解決現有的網絡問題,網絡改革勢在必行,于是SDN應運而生。
SDN是美國斯坦福大學clean slate研究組提出的一種新型網絡架構。傳統網絡采用分布式策略工作,由設備制定轉發策略,而SDN架構中設備不運行任何協議,轉發表由控制器下發給設備,實現數據平臺與控制平臺的分離。SDN的核心思想就是控制與轉發分離,將軟件應用到網絡控制中,并起到主導作用,而不是由固定模式的協議控制網絡。SDN的目的是提高網絡的可控性與可編程性,可以根據用戶需求靈活地提供不同質量等級的服務。
二、ODL誕生的利益分析SDN的提出立刻就在業界引起了軒然大波,尤其是一直被網絡設備商壓制的網絡用戶,將其視為擺脫網絡設備商牽制,翻身做主人的機會,于是2011年一個以網絡用戶為主導的非營利性組織ONF就此誕生了。ONF宗旨是制定SDN統一標準,推動SDN產業化。ONF的工作重點是制定唯一的南向接口標準openflow,制定硬件行為轉發標準,并且推出了一系列openflow 協議,其中較為穩定的是openflow1.0和openflow1.3版本。ONF從用戶的角度制定協議,必然可以維護用戶的利益,但是其間也出一些問題。
網絡設備的研發十分復雜,是一個系統化工程,需要結合方方面面考慮,需要豐富的實戰經驗,而這些正是網絡用戶所缺乏的,因此直接導致openflow協議過于理想化,只能在實驗及簡單網絡環境中應用,無法實現大規模商用。這種情況下ONF不得不接受網絡設備商的參與,2013以設備商和軟件商為主導的另一SDN組織ODL騰空出世,網絡設備商出于自身利益出發,也加入到SDN大軍中。并不是網絡設備商都不計較利益,不計得失地貢獻自己的技術,設備商也有自己的考量,越來越多的人看好SDN,這是一股不可逆轉的趨勢,與其坐等網絡用戶擺脫自己,不如化被動為主動積極參與其中,眾多設備商聯手研發出統一的控制框架,其中可以嵌入一些服務與應用模塊,各大設備商都爭相在大框架中融入更多的自己的技術,因為貢獻越多意味著影響越大,在ODL中爭得一席之地,才能為以后的發展留下生機。換句話說,置之死地而后生,貢獻出自己的核心技術,這些技術隨著SDN的推廣被推向世界,說不定柳暗花明又一村呢!無論各自的目的是什么,ODL與ONF有共同的目的,推動SDN和網絡功能虛擬化發展,打造統一開放的SDN平臺,推動SDN產業化。
由此看來,ODL是SDN大環境下的必然產物,不僅僅得到網絡用戶的認可,還受到網絡設備商的鼎力支持,注定在SDN發展中脫穎而出,成為SDN的靈魂產物之一。
三、ODL開源社區ODL是由Linux基金會推出的一個開源項目,集聚了行業中領先的供應商和Linux基金會的一些成員。其目的在于通過開源的方式創建共同的供應商支持框架,不依賴于某一個供應商,竭力創造一個供應商中立的開放環境,每個人都可以貢獻自己的力量,從而不斷推動SDN的部署和創新。打造一個共同開放的SDN平臺,在這個平臺上進行SDN普及與創新,供開發者來利用、貢獻和構建商業產品及技術。ODL的終極目標是建立一套標準化軟件,幫助用戶以此為基礎開發出具有附加值的應用程序。
為了促進SDN發展,讓更多的人認可SDN思想,開源社區開發者、開源代碼、以及項目管理者組成了ODL開源社區,無論是有進取心的IT人士,網絡服務供應商還是云服務供應商都可以加入ODL社區,ODL社區采用開放的管理模式,無論什么人都可以貢獻代碼,參選加入技術指導委員會,以多種途徑參與項目方向走勢討論。
社區領導層主要包括董事會和TSC,董事會和TSC在不違反社區規章制度的條件下有權逐漸改變管理方式。董事會負責項目管理、運行以及市場相關決策。TSC主要負責項目選擇、技術決定,保證項目透明度,以及項目生命周期管理。ODL廠商成員分別分為鉑金成員、黃金成員、白銀成員,會員等級越高會費也就越高。其中鉑金會員有Brocade、Cisco、Citrix、Dell、Ericsson、HPE、Intel、Red Hat,黃金會員有NEC,白銀會員有6WIND、A10networks、ADVA、Arista Networks等。下圖羅列出了會員的圖標:
大型社區通常有兩類管理模式:業務管理和技術管理,ODL也不例外,其技術指導包含技術指導委員會和主要組件的項目管理者,而業務領導實例化為董事會。
OpenDaylight社區通過“技術指導委員會章程”規定兩者的職責和權限,董事會主要負責設定ODL的策略方向(包括ODL的范圍、技術愿景、方向),并對TSC提出的項目發布計劃進行指導。而TSC則在董事會設定的策略方向內提供技術指導,制定發布規劃、確立發布質量標準、挑選最佳的開發程序、監控技術進程,如果提交者和項目負責人之間出現技術沖突,TSC還需要負責調停。不僅如此,TSC還是ODL與其他聯盟和組織之間的接口人。
任何組織和個人都有可能成為TSC成員。TSC最初有白金會員分別指定一個代表組成,TSC組織成立后,將會通過投票的方式將一些活躍的代碼提交者選舉為TSC成員。為了保證ODL的公平性和中立性,任何廠商都不可以控制投票權,如果發現與白金會員有關的非指定TSC成員(新選舉出的TSC成員),該白金會員指定的TSC會員代表必須馬上辭職。對于TSC成員(包括主席)的選舉辦法,董事會每年都會重新評估。
ODL包括多個小項目,每個項目的運營都離不開以下幾類角色:貢獻者(Contributor)、提交者(committer)和項目管理者(project leader)
貢獻者負責開發代碼或貢獻其他成果,通過貢獻高質量修補程序和功能優化代碼有可能被選舉為提交者。提交者負責控制技術方向,決定項目的設計、代碼和修補等,具有將代碼提交到源代碼管理系統的權限,但其權限僅限項目本身,一個項目的提交者通常沒有其他項目的提交權限。項目管理者負責制定項目的整體方向并向TSC匯報,項目管理者通常從提交者中通過投票的方式選出。五、ODL社區運營模式ODL社區的運行模式自主、開放,奉行協作原則,只要你有能力就能參與其中。這是一個開源組織,并不是只有會員才能使用里面的代碼,每個人都可以使用ODL的代碼,為它做出貢獻。這種運行方式激勵了更多人參與ODL代碼編寫,ODL為大家合作、探究、討論提供了良好的平臺。雖然代碼本身非常重要,但人們創建這些代碼的方式、彼此協作的途徑以及代碼部署的操作機制同樣不容忽視。
ODL的項目并不是一成不變的,而是不斷地提出新項目,待項目成熟后即可加入ODL核心項目。項目提出后進入生命周期,做出相對應的模型,解釋每個部分實現什么功能,根據模型寫代碼,用這種方式將項目模塊化,大家協同合作,查缺補漏。每個項目需要包括貢獻者、社區成員以及一個共同推選出的項目負責人,規定項目負責人是ODL項目的創始成員,這些最熟悉源代碼的專家可以給其他項目參與者更好的引導。一個新項目不僅僅需要資深成員,還需要新成員的加入,資深成員需要在項目啟動三個月內選拔新成員參與項目,項目才能獲得TSC的批準。采取這種方式不但鼓勵新成員更加深入地參與進社區項目,同時為社區注入源源不斷的新生力量。核心項目的負責人不僅是項目的領導者,也是TSC的組成成員,在TSC中代表自己的項目團隊。
ODL董事會與TSC都采用投票制度,無論什么等級的成員最多只有投一票的權利,并且在董事會中任何一個供應商都不可以掌握控制性投票權,沒有一家公司可以擁有2個及以上的董事會席位。公開、透明、開放的運行模式保證ODL項目一直沿著SDN的方向發展,而不是取決于某個供應商。
SDN成為網絡改革的焦點。與此同時,ODL開源社區愈加受到行業內人士的青睞,ODL集聚了最好的文化資源和最好的人力資源,為社區獲得可持續優勢提供了有利條件。ODL社區以開源形式推出ODL控制器,具有風險低、產品透明、行業適應能力強等特點,人們可以根據自己的意愿決定是否配置這個框架,以此減小接受新技術的風險,同時,人們可以利用已有的基礎設備,實現新的SDN功能。ODL社區的開放性促進了SDN的廣泛傳播,讓更多的人有機會接觸到SDN,見證SDN的發展。
六、ODL控制器ODL擁有一套模塊化、可插拔靈活地控制平臺作為核心,這個控制平臺基于Java開發,理論上可以運行在任何支持Java的平臺上,從Helium版本開始其官方文檔推薦的最佳運行環境是最新的Linux(Ubuntu 12.04+)及JVM1.7+。
ODL控制器采用OSGi框架,OSGi框架是面向Java的動態模型系統,它實現了一個優雅、完整和動態的組件模型,應用程序(Bundle)無需重新引導可以被遠程安裝、啟動、升級和卸載,通過OSGi捆綁可以靈活地加載代碼與功能,實現功能隔離,解決了功能模塊可擴展問題,同時方便功能模塊的加載與協同工作。自Helium版本開始使用Karaf架構,作為輕量級的OSGi架構,相較于早前版本的OSGi提升了交互體驗和效率,當然其特性遠不僅僅于此。
ODL控制平臺引入了SAL(服務抽象層 ),SAL北向連接功能模塊,以插件的形式為之提供底層設備服務,南向連接多種協議,屏蔽不同協議的差異性,為上層功能模塊提供一致性服務,使得上層模塊與下層模塊之間的調用相互隔離。SAL可自動適配底層不同設備,使開發者專注于業務應用的開發。
此外,ODL從Helium開始也逐漸完成了從AD-SAL(Application Driven Service Abstraction Layer)向MD-SAL(Model Driven Service Abstraction Layer)的演進工作,早前的AD-SAL,ODL控制平臺采用了Infinispan技術,In nispan是一個高擴展性、高可靠性、鍵值存儲的分布式數據網格平臺,選用Infinispan來實現數據的存儲、查找及監聽,用開源網格平臺實現controller的集群。MD-SAL架構中采用Akka實現分布式messageing。
七、ODL控制器設計原則ODL在設計的時候遵循了六個基本的架構原則(以下來自opendaylight官方文檔):
1、運行時模塊化和擴展化(Runtime Modularity and Extensibility):支持在控制器運行時進行服務的安裝、刪除和更新。
2、多協議的南向支持(Multiprotocol Southbound):南向支持多種協議。
3、服務抽象層(Service Abstraction Layer):南向多種協議對上提供統一的北向服務接口。Hydrogen中全線采用AD-SAL,Helium版本AD-SAL和MD-SAL共存,Lithium和Beryllium中已基本使用MD-SAL架構。
4、開放的可擴展北向API(Open Extensible Northbound API):提供可擴展的應用API,通過REST或者函數調用方式。兩者提供的功能要一致。
5、支持多租戶、切片(Support for Multitenancy/Slicing):允許網絡在邏輯上(或物理上)劃分成不同的切片或租戶。控制器的部分功能和模塊可以管理指定切片??刂破鞲鶕芾淼姆制瑏沓尸F不同的控制觀測面。
6、一致性聚合(Consistent Clustering):提供細粒度復制的聚合和確保網絡一致性的橫向擴展(scale-out)。
八、ODL控制器架構如圖1.2所示,ODL控制器主要包括開放的北向API,控制器平面,以及南向接口和協議插件。北向API有OSGI和REST兩類,同一地址空間應用使用OSGI類,而不同地址空間的應用則使用REST類。OSGI是有狀態的連接,有注冊機制,而rest是無狀態鏈接。上層應用程序利用這些北向API獲得網絡智能信息、運行算法進行分析并且設計部署新的網絡策略。
控制器平臺包括一系列功能模塊,可動態組合提供不同服務。其中主要包括拓撲管理、轉發管理、主機監測、交換機管理等模塊。服務抽象層SAL是控制器模塊化的核心,自動適配底層不同的設備,使開發者專注于業務應用的開發。SAL北向連接功能模塊,以插件的形式為之提供底層設備服務。南向連接多種協議插件,屏蔽不同協議的差異性,為北向功能模塊提供一致性服務,SAL起到中間調度作用。
南向接口支持多種不同協議,如openflow1.0、openflow1.3、BEG-LS等。底層支持混合模式交換機和經典openflow交換機。
九、ODL的發展ODL成立不到一年就推出了首個開源版本氫(hydrogen),氫計劃中有多個項目,大概有五、六個項目里程碑,發布了基本版,虛擬化版和服務提供商版?;景嬗幸粋€標準的控制平臺,包括Open Flow的設備,插件覆蓋范圍很廣,有一些可選的設備可以加入進去,可以做交換機的管理,還有其他的功能都能夠覆蓋到。
虛擬化版增加了一些服務,主要運用了虛擬化技術,主要添加了VTN和open DOVE的相關模塊。最大化利用物理設備資源的同時,提高服務人性化程度,用戶可以部署自己的虛擬網絡而無需了解底層復雜的物理拓撲。
服務提供商版在基本的版本上面增加了一些功能,增加了SNMP、PCEP的協議,在控制器平臺里面還加入了一些其他的功能。
2014年9月29日發布了Helium版本,這里面不再需要三層代理,而是OpenDaylight處理三層的路由功能,Lithium版本在2015年發行,2016年2月也發布了Be版本的OpenDaylight。