張 俊,沈蘇彬
(南京郵電大學 計算機學院,江蘇 南京 210003)
互聯網的蓬勃發展,驅動著網絡應用的不斷創新與豐富,從高清視頻會議到健康監測,以及一些遠程控制系統,如森林防火系統等,對于網絡延遲、帶寬和可用性等方面都有著嚴格的要求。并且隨著互聯網規模的不斷擴大,在多數情況下,應用流都需要進行跨域傳輸,這將會給IP骨干網帶來艱巨的挑戰。然而,目前針對多管理域場景,域間路由信息交互的協議大多采用BGP[1],該協議的分布式部署,雖然滿足了可擴展性和可靠性,但是由于缺乏集中控制,使得策略表達及配置相對比較困難。同時,由于在選路過程中缺乏域間協商,各管理域域內的局部最優路由算法無法保證全局最優,使得應用流的QoS需求在目前這種“盡力而為”的網絡傳輸中難以得到保障,從而造成用戶的QoE下降。
為了改善網絡性能,以及保障應用的QoS約束與終端用戶的QoE,學術界和工業界提出了一些解決方法。對于單個管理域,有IntServ[2]、DiffServ[3]、MPLS[4]等;對于多個管理域,有BandwidthBrokers[5]等。互聯網中對于服務質量保證的問題,根據現有網絡狀態進行約束路徑計算是一個關鍵組成部分,然而在當今互聯網分布式體系中卻難以實現。并且,現有網絡協議的多樣化,以及每個路由器為了保證E2E流量工程和應用業務QoS所需承載的計算量,使得當前網絡中的路由器工作過于繁忙,不利于未來網絡的持續發展與創新。
針對傳統網絡所呈現的相關問題,SDN(software defined networking)[6-7]作為一種新型網架構與技術應運而生。其突出特點包括:
(1)轉控分離:解耦傳統網絡設備的控制平面與轉發平面,轉發平面只具備數據流量轉發的能力,控制平面通過南向控制協議(如OpenFlow、NetConf、OVSDB等)控制轉發平面的流量行為。
(2)集中管控:控制器擁有全局網絡信息,如拓撲和網絡資源等。網絡管理員能夠根據這些信息完成資源的合理分配與調度,解決負載均衡、網絡資源分配不均等問題,簡化網絡管理。
(3)網絡可編程:通過控制器北向接口(如REST API),應用平面告知控制平面如何進行網絡資源管理才能更好地滿足應用約束。并且,因特網服務提供商能夠調用開放的北向接口,實現網絡服務的定制,加快業務的動態部署。
OpenFlow[8-9]作為SDN網絡架構的一種實現方式,由斯坦福大學提出,其規范由ONF(開放網絡基金會)制定。其設計理念為:無需設計新的硬件,只對現有硬件更新其軟件。這在很大程度上降低了部署網絡應用所需的成本。在傳統網絡中,二層交換機主要采用MAC地址和VLAN標簽對數據包進行處理與轉發,而在SDN網絡中,OpenFlow作為構建網絡的一種標準南向協議與規范,通過解析數據包或幀的包頭域,將其MAC地址、VLAN標簽、IP地址、TCP/UDP端口號等特征作為“Flow”進行處理,通過在交換機中添加流表進行匹配,就能夠靈活便捷地決定應用流的轉發路徑。
針對大規模多管理域(SDN域)應用場景,業界提出了一些解決方案,主要是對控制平面進行了擴展,大致分為兩類:分層分布式和完全分布式。
對于分層分布式控制平面(如圖1(a)所示),其域內控制器管控各個管理域域內網絡,包括網絡抽象、鏈路發現等,負責域內路由,并且向域間控制器上傳特定的拓撲信息和主機信息。域間控制器通過獲取來自域內控制器的信息,計算域間路由。例如,OXP[10]針對異構控制器間無法直接交互和目前接口協議效率較低的問題,設計了一種高效的、支持多種模式的東西向協議。OXP采用分層分布式的控制平面來解決SDN網絡中單一控制平面遇到瓶頸的問題,域間控制器負責域間路由,域內控制器只負責域內路由。當發現應用流的目的IP地址不屬于當前管理域時,域內控制器將數據包包頭轉發至域間控制器。域間控制器基于全局網絡信息計算跨域路徑,最后由各域內控制器完成流表的下發。

圖1 控制平面架構
對于完全分布式控制平面(如圖1(b)所示),每個管理域的控制器同時負責其域內路由,以及到下一管理域的域間路由,各管理域控制器之間進行信息的交互與協商,從而進行路由的決策。例如,HyperFlow[11]采用WheelFS實現分布式的發布/訂閱系統,該系統保證了發布事件的存儲是永久的,并且保證事件的觸發順序與源控制器一致,在網絡劃分時具備良好的可伸縮性。但是由于所有事件的處理都需要全局信息,造成控制器間交互的信息量巨大,此外,還會造成網絡狀態不一致等問題。因此,這種模式只能處理一些發生率較低的事件,而不適用于大規模多管理域網絡。WE-Bridge[12-13],雖然可實現異構控制器之間的協同工作,但是當網絡視圖發生改變時,由于控制器間采用全連接的方式,需要在所有同類節點中同步數據,導致消耗大量帶寬,效率低下。SDNi雖然作為一種控制器間信息交互的協議,但是草案中并沒有對網絡如何存儲這些信息以及如何在多個域之間共享這些信息給出具體的描述。DISCO[14]采用基于消息導向的通信總線,提供一個分布式控制平面。DISCO將整個網絡分成多個域,用多個控制器進行管理。每個控制器管理一個域,并提供唯一輕量級的可管理的控制通道,每個控制器上的代理動態嵌入通道來獲取其他域的信息。代理間互相共享全網信息,因此可以為應用提供端到端的網絡服務。其缺點在于全局事件的處理需要一致的全局信息,控制器之間交互的信息過多。
針對現有域間路由技術存在的相關問題及不足,文中提出一種基于SDN的多管理域路由機制(SDNMDR),以及相關的實現和實驗方案,并通過實驗進行驗證。
雖然現有SDN域間路由技術在一定程度上解決了網絡擴展性的問題,但是大多數方案都只是針對單一網絡提供商實體而言的,并且域間交互的信息量過大,將會給網絡負載帶來巨大的壓力。此外,當多個管理域由不同的網絡提供商實體進行管控時,出于安全性考慮,大家都不愿公開其內部網絡信息。因此,上文所列舉的現有SDN域間路由技術將不再適用。
針對BGP分布式部署存在的諸多問題,以及現有SDN域間路由技術的不足,結合SDN網絡可編程帶來的優勢,設計了SDNMDR機制。該機制采用完全分布式控制平面,主要通過控制器上的三個模塊來實現,如圖2所示。

圖2 控制器功能模塊
(1)域內監控模塊(Intra_Monitor)。該模塊根據SDN域內集中管控的思想,采用LLDP協議獲取域內交換機信息,以及網絡的實時情況,包括網絡資源和網絡流量信息等,從而分別為域間交互模塊和路由模塊提供協商和選路依據。
(2)域間交互模塊(Inter_Negotiation)。對于網絡應用流的傳輸,可達性是最基本的要求。首先,該模塊參照BGP[15]協議交互網絡可達性信息,在目的網絡可達的情況下,為了滿足應用流的端到端需求約束,相鄰管理域再通過該模塊進行應用需求的請求與協商。
(3)路由模塊(Routing)。主要完成兩項工作:第一,對于跨域的應用流,結合網絡可達性信息和域內網絡資源信息,進行域內路徑以及到相鄰管理域的域間路徑的計算;第二,根據計算結果,通知域間交互模塊與相鄰管理域進行協商,協商完成后再由該模塊完成流表的下發。
目前業界大多數開源控制器,如Ryu、OpenDaylight、Floodlight、ONOS等,都已經實現域內監控和域內路由。由于SDN的初衷在于單個管理域內的集中控制,所以對于SDN域間如何交互與協商的問題,即東西向接口問題,仍是當前將SDN應用于大規模網絡中亟需解決的一個熱點問題。以下為文中提出的一種解決方案。
實現端到端服務質量約束路由的基礎是多管理域間的互聯互通,在SDN網絡中,為了構建跨域的流表,相鄰管理域控制器間需要進行通信,交互網絡層可達性信息。文中控制器之間的交互參照了BGP,在域間交互模塊中實現,域間控制器的通信流程如圖3中①~④所示,具體過程如下:
(1)使控制器具備BGP speaker的能力,每個BGP speaker包含狀態機邏輯,并且當控制器啟動時,BGP功能體觸發連接事件。每個管理域的BGP信息由網絡管理員進行配置,控制器與鄰居控制器建立TCP連接。
(2)BGP使用TCP作為其傳輸層協議,當TCP連接建立后,BGP speaker將會互相發送OPEN消息,并且狀態將會變成OPEN。
(3)BGP speaker在OPEN狀態下協商會話能力,控制器通過OpenFlow南向協議獲取其管理域網絡能力信息。
(4)成為BGP Peers后,控制器進入ESTABLISHED狀態,雙方在這個狀態下互換BGP UPDATE消息,如NLRI和帶寬等。

圖3 控制器建立連接及協商過程
為了給用戶帶來良好的網絡體驗,應用流在跨域傳輸的過程中,需要加以服務質量約束。由于各管理域只能夠決定其域內路由,彼此間缺乏協商機制,使得業務的QoS約束難以得到保障。針對該問題,文中設計了一種域間協商協議,通過協商來實現應用流的端到端QoS約束路由。協商協議交互過程如圖3中⑤~⑦所示。域間協商協議的消息如表1所示。

表1 域間協商消息
域間協商協議具體過程如下:
(1)控制器A發現應用流的目的地址是在域外,基于BGP信息,選擇最佳下一域B,從本地數據存儲中檢索邊界信息,并且發送一個包含端到端應用約束的協商請求給控制器B。
(2)控制器B收到這樣的消息,與域內策略作比較,如果符合域內策略且有能夠滿足應用需求的配置路徑,則更新這些路徑以滿足額外需求,否則將通過路由模塊計算新的路徑。此外,還會檢查域間鏈路的統計,如果有可用的資源,然后會回復控制器A一個包含相應的代價ACCEPT協商響應,否則回復REJECT。
(3)如果控制器A收到一個ACCEPT,則表示協商成功。
(4)如果目的IP不在B,則重復以上步驟,采用遞歸的方式。
根據協商結果,各管理域中的控制器根據路由模塊中計算好的路徑,采用OpenFlow協議對沿路的交換機通過下發流表進行配置。
OpenFlow流表的匹配域能夠匹配數據包包頭的二層至四層地址信息。首先,分別對源主機和目的主機所連接的交換機配置,通過控制器中存儲的MAC-PORT映射表,采用匹配源目的MAC地址的方式構建流表;對非源目主機所在管理域的邊界交換機配置,采用匹配目的IP地址的方式構建流表,使得經過該交換機的應用流能夠轉發至協商好的下一管理域的入口交換機,如圖3中⑧~⑨所示。此外,各管理域還需周期性檢查域間鏈路狀態以及相關QoS參數,確保能滿足應用流的服務質量約束和管理域間所約定的SLA參數,當不滿足時,重新進行協商與配置。
為了滿足應用流的跨域傳輸,首先需要實現的是多管理域的互聯互通。實驗選取Ryu開源控制器,通過Quagga使其具備BGP speaker的能力,采用Mininet仿真實驗環境。實驗拓撲如圖4(a)所示,各管理域控制器采用BGP消息進行交互,獲取NLRI后,通過OpenFlow配置交換機,執行pingall命令,H1~H6主機間能夠互相ping通。通過測試,驗證了該多SDN域實驗平臺的可行性。

圖4 實驗拓撲
當源管理域控制器收到多條關于目的地址前綴的路由通告時(即在源節點與目的節點之間存在多條物理鏈路),模擬抽象網絡拓撲如圖4(b)所示。在該場景下,應用流需要從D1中的主機s(172.16.1.1)傳輸至D6中的主機t(172.16.6.1),此時存在多條域間鏈路(①D1-D2-D6;②D1-D3-D4-D6;③D1-D3-D4-D5-D6)。假設該應用流的總時延約束為100 ms,為了保障端到端約束路由,控制器間需要進行協商,并且根據協商的結果下發流表,配置各自域內交換機和邊界交換機。
假設域間鏈路時延均為10 ms,代價均為10。各管理域域內聚合鏈路(邊界路由器之間的鏈路)的時延及代價如圖5所示。
首先根據BGP交互的網絡層可達性信息以及從域內監控模塊獲取的域內拓撲和資源信息,D1中控制器結合應用流服務質量約束與路由模塊中的路由算法(文中采用最小代價算法),選擇可以到達目的IP地址的下一管理域,通過交互模塊發送協商請求,相鄰管理域根據請求消息返回請求結果和所需代價。測試結果如下:
(1)D1選擇時延20 ms,D1-D2時延為10 ms,D2選擇時延20 ms,D2-D6時延10 ms,D6選擇時延20 ms。共80 ms,滿足約束。遞歸返回代價70。

D110 ms(10) , 20 ms(5)10 ms(10) , 15 ms(5)D210 ms(35), 20 ms(30)D315 ms(15), 20 ms(10)D410 ms(15), 15 ms(8)10 ms(20), 30 ms(5)D520 ms(20), 30 ms(10)D610 ms(20), 20 ms(15)5 ms(20), 10 ms(15)10 ms(20), 20 ms(15)
圖5 域內鏈路(時延(代價))
(2)D1選擇時延15 ms,D1-D3時延為10 ms,D3選擇時延20 ms,D3-D4時延10 ms,D4選擇時延30 ms,D4-D5時延10 ms,D5選擇時延30 ms和20 ms均不滿足約束。
(3)D1選擇時延15 ms,D1-D3時延為10 ms,D3選擇時延20 ms,D3-D4時延10 ms,D4選擇時延15 ms,D4-D6時延10 ms,D6時延10 ms,共90 ms,滿足約束。遞歸返回代價68。
(4)D1中控制器的交互模塊比較1和2中的代價,選擇D1-D3-D4-D6這條鏈路,并且發送確認消息。
(5)各管理域根據協商結果,通知路由模塊下發流表配置交換機。
配置完成后,通過ovs-ofctl dump-flows命令查看D1與D3相連的邊界交換機流表,可以看到包含“ip, nw_dst=172.16.6.1, actions=output:4”字段信息的流表,查看D6中與主機t相連的交換機流表,可以看到包含“in_port=3, dl_dst=00:00:00:00:00:02,actions=output:3”字段信息的流表。
實驗結果表明,SDNMDR能夠實現多管理域間的互聯互通,并且當源目的主機間存在多條可選域間路徑時,以及各管理域網絡資源允許的情況下,服務提供商能夠根據管理域間的協商,綜合考慮應用需求與傳輸過程中所需代價,選擇滿足約束的端到端路由。
通過擴展標準Ryu開源控制器的功能模塊,結合Mininet網絡仿真工具,實現了一種基于SDN的多管理域路由機制。通過模擬與測試,驗證了該機制能夠在滿足應用需求,為用戶提供良好體驗的前提下,降低服務提供商的所需成本。并且該方案采用完全分布式控制平面,可縮放性較強,能夠適應當前互聯網快速發展的迫切需求。