近兩年來SDN的概念被越來越廣泛地宣傳與接受,咨詢與研究機構也頻頻調高其對SDN領域市場規模的預期。全球分析機構Dell'Oro集團的預測數據顯示:SDN的市場價值在2016年之前將達到15.9億英鎊,5年內將實現17倍的增長;IDC也預測,到2016年,SDN產業產值將達到37億美元以上。從研究機構到高校,從企業到網絡廠商,越來越多的人和組織都參與到SDN的宣傳推廣與使用中來。如成立于2011年3月份的開放網絡基金會(ONF)就致力于推動SDN的發展,同時負責制定與維護OpenFlow協議。又比如IETF最近新提交了I2RS的草案,其面向的目標直指OpenFlow協議。其他的如NETCONFTCL/Python/等可能是用戶很熟悉的通信協議或接口,也已經開始在SDN中有所應用。面對蓬勃發展的SDN技術,最終用戶是否會感到無所適從呢?本文將為您將揭開SDN技術的神秘面紗,帶您了解目前主流的SDN技術。
目前業界通用的SDN架構主要包括以下特征:控制與數據平面解耦合,網絡智能與控制邏輯集中,抽象的底層網絡基礎設施。因此不少SDN實踐者是從將控制與數據平面解耦合入手,將原來固化于網絡設備當中的控制層抽取到設備之外,并進行邏輯上的集中處理;同時,在SDN的發展過程中,還發展出一種折衷的方案,在網絡設備中抽取控制層時仍保留部分控制能力,以求做到類似混合(Hybrid)的方式,以期可以帶來更大的靈活性:按用戶需要對控制進行集中管理,或者仍按原有控制方式運行。
上面介紹了目前主流的SDN實現方案的形態,其主要思路還是將控制層提到設備外面來以便進行統一的控制與管理,這里涉及到一個概念就是Controller與Agent,提取出來的控制層被定義為Controller(控制器),而被抽離了控制層的網絡設備的數據層被定義為Agent(代理),剛剛提到的解耦合的控制層如何與原有的數據層通信的問題也就轉化為Controller如何與Agent通信,具體到實現技術涉及到OpenFlow/I2RS等協議,下面分別進行簡單的介紹。

OpenFlow協議最早的思想是出現在Stanford里的實驗項目Clean Slate中,后來被Stanford的Nick McKeown教授發現并進行了更通用化的設計,在2008年同其他人共同發表了題為《OpenFlow: Enabling Innovation in Campus Networks》的論文,首次提出了OpenFlow的概念,將傳統的網絡設備的數據轉發平面與控制平面進行了分離,通過將控制平面集中為Controller(控制器)并以標準化的接口對網絡設備進行管理與配置,因此OpenFlow會將傳統網絡設備分離為數據轉發平面的交換機(也可以是路由器)與控制器(Controller),他們之間通過OpenFlow協議進行通信。在OpenFlow交換機中存在一個流表,用于接收控制器發來的流轉發策略。

(上圖摘自ONF的OpenFlow白皮書)
與目前網絡設備所采用的二層(MAC)與三層(IP)轉發不同,OpenFlow從軟件(控制器)層面支持了比傳統硬件更多的控制轉發的能力,包括網絡報文中從1層到4層的關鍵信息,如MAC地址、IP地址、端口、VLAN、IP協議號等。

(上圖摘自ONF的OpenFlow白皮書)
通過支持OpenFlow協議可以將傳統網絡設備的控制平面與數據轉發平面進行解耦合,同時將控制器集中,這樣用戶就可以通過集中的控制器來對整個網絡的數據轉發行為進行全局的控制,而不是按網絡設備自己的協議來進行處理,同時由于每一臺網絡設備都需要同控制器通信,控制器可以很容易就得到全局的拓撲信息,進而在控制器向上再提供開放API接口,供最終用戶在此基礎上開發針對自己網絡業務的應用,為網絡資源的管理與使用提供更多的選擇,從而讓用戶擁有更多對自己網絡的編程與定制化能力。
目前OpenFlow的標準化工作是由ONF組織進行維護與發展,最新的OpenFlow協議版本為1.3.1。很多廠商已經推出支持OpenFlow的交換機與Controller,不少大型企業用戶也開始嘗試使用OpenFlow/SDN來解決他們的網絡問題,但目前仍存在一些問題制約著OpenFlow的發展,比如傳統設備硬件及芯片對OpenFlow流表的支持程度及流表數量的問題,都是需要針對OpenFlow的芯片及硬件設計來解決的,這些問題都在限制著OpenFlow的大規模應用。
除了在針對OpenFlow的芯片上的努力外,業界還有人提出在現有的路由系統基礎上設計新的通信協議,這也就是我們下面要介紹的I2RS(Interface to the Routing System),這一協議是由IETF制定的標準,目前還處于草案階段。I2RS的核心思想是在目前傳統網絡設備的路由及轉發系統基礎上開放新的接口來與外部控制層通信,外部控制層通過設備反饋的事件、拓撲變化、流量統計等信息來動態地下發路由狀態、策略等到各個設備上去。從上面的介紹中可以看出I2RS與OpenFlow最大的區別是I2RS并沒有像OpenFlow提出流那樣較新的概念,而是延用了傳統網絡設備中正在使用的路由、轉發等結構與功能,并在此基礎上進行功能的擴展與豐富。
就目前SDN應用來看,除了新部署的網絡,還有大量的現存網絡,這些現存網絡如何應用SDN也是眾企業、用戶所關心的。不少網絡設備廠商適時地推出了可以幫助用戶平滑演進SDN的開放API方案即是為解決此問題而出現的。
相對于Controller & Agent結構,開放API方案直接在設備層面上提供新的開放的API接口,包括NETCONF/RESTful等基于XML結構化標記語言的接口,也有基于TCL/Python/Javascript等基于腳本語言的接口,更有的直接開放更為底層的Java/C++/C語言接口,讓用戶可以深入到設備操作系統底層對硬件進行更深入地管理與操作,從而取得設備更大的控制權限。這種開放API的方案省略掉了Controller控制層,等于在用戶的應用程序中直接嵌入了控制層的接口,從而實現了結構的簡化,減少了用戶在Controller層的技術負擔;同時由于對現有設備的改動小(只需要更新軟件以支持新的開放API接口即可),更利于保護用戶的投資。當然,這種方案的缺點也是有的,主要在于目前開放API沒有形成業界統一的標準,可能會出現不同廠商設備提供的開放API接口不兼容的問題,這可能還需要漫長的時間才會有公司或組織出面進行相關的標準化工作。
隨著SDN在用戶中應用的展開,當前各種協議、接口、方案必將會碰到更多的問題,可能哪種方案或協議都無法完全符合每一個用戶的具體需求,我們有理由猜測,最后SDN的支撐技術可能會包含多種不同的協議與方案,他們既相互競爭,又互為補充,互相啟發,并呈現出一個螺旋上升的發展趨勢,這實際上也是我們所接觸到的大多數技術的演進方式。 