當前,SDN(Software-Defined Networking,軟件定義網絡)正在成為整個ICT行業都在重點關注和津津樂道的話題,在本文中首先我想談談對SDN誕生的幾點思考,以及經過5年研發后,我們現在對SDN的看法。
控制面抽象化
一直以來,“網絡管理難”都是我們不得不解決的問題。比如,一臺交換機所需的系統管理員支持工作量比一個計算節點高一個數量級。相比其它計算機科學技術,很難通過新增功能來實現網絡技術的演進。要構建高效的系統,就需要抽象化地將“網絡管理難”問題分模塊處理。
數據面的運行速度達到納秒級,而且完全是本地的。控制面負責決定如何配置轉發狀態(包括算法或手工方式)。這個過程的處理時間從幾十毫秒到幾天不等,并且依賴于外部的信息輸入。因此,控制面從本質上來說是非本地的。
這種分層方式是互聯網取得如此巨大成功的原因,并且讓各層獨立創新成為現實。比如,在網絡中部署一項新的光學技術后,網絡堆棧中其它功能都將保持不變,無須重寫整個網絡堆棧。這就是為什么互聯網可以在架構幾乎不變的情況下,在速度、規模和使用多樣性方面提高了6~7個數量級。
作為SDN社區的成員,我們將數據面抽象化的做法是對的。另一方面,由于控制面只是基于各種協議,沒有可重用的抽象,因此對SDN的需求與日俱增。
在我們的定義中,SDN采用兩種控制面抽象化方式:(1)提供系統實施信息的網絡全局視圖;(2)采用OpenFlow等轉發模型的網絡操作系統(這些模型在網絡控制層的服務器上運行)。這種定義帶來了重大變化,原因在于控制機制現在只不過是使用網絡操作系統API的圖算法。
如今,網絡管理和演進變得越來越簡單。數據面完全在交換機中進行運作,而控制面在使用商用硬件和第三方軟件的網絡服務器上運作。此外,可以獨立對控制面進行測試,無須依賴底層硬件。這讓網絡呈現IT化趨勢。
虛擬化:SDN的殺手級應用
我們不斷探索新的、更高級的模塊化類型。我們曾認為,控制程序將計算出所有網絡交換機的轉發狀態配置數據。此外,我們還曾認為數據面非常簡單,而且交換機在角色和功能上變得趨同。
操作員通過控制程序下發網絡需求和策略。然而,控制程序不應該負責實施這些需求。這是因為模塊化的目標之一是使系統的可重用部分變得復雜化,并且讓每個應用程序的待寫內容變得簡單。
我們正在推出一種新的、純邏輯的虛擬拓撲抽象和新的SDN層。操作員可以通過配置邏輯交換機來下發流表項需求和策略。SDN Hypervisor層將這些需求進行轉化后,發送給物理交換機(可當做虛擬拓撲的編譯器)。
我們已經簡化了控制程序的編寫方式。同時,我們讓本來就很難的編譯器編寫工作更加困難了。
新的SDN層就是指網絡Hypervisor及其虛擬拓撲。首先,根據拓撲和待完成任務來編寫控制程序。然后網絡Hypervisor把虛擬拓撲的匯編信息融入物理網絡全局視圖。最后,網絡操作系統把全局視圖的配置信息下發給物理交換機。
實施網絡Hypervisor后,虛擬化成為SDN的殺手級應用。多租戶云中心(如Rackspace、亞馬遜)的大量客戶正在把網絡遷移到云中。為確保數據中心能夠提供滿足策略和需求的虛擬拓撲,網絡Hypervisor需匯編數千條底層配置信息,以滿足各租戶的需求。SDN出現以前,對數千個虛擬網絡進行動態更改是不可能的。通過簡化網絡管理,虛擬化為我們帶來了增值,讓人們愿意投資SDN。
一般而言,虛擬拓撲僅僅是實施轉發的邏輯網絡。融入高級功能(如鑒權)后,虛擬拓撲能傳達應用層面的語義(比如,允許誰和誰通話),并且允許網絡Hypervisor在網絡層面實施這些策略。
如今,操作員可以通過抽象方式下發需求,網絡Hypervisor可完全自行決定如何滿足這些需求。這一點非常重要。
起初,我們曾認為交換機在角色和功能上是相似的。目前,網絡使用報文頭來讓主機與網絡通信,或者讓報文與路由器或交換機通信。收到報文后,交換機首先會問:“主機需要我把這條報文發到哪里?”之后,各個交換機會說:“根據上個問題的答案來查找轉發站,決定下發路徑”。
SDN為操作員提供一個清晰的全可編程方式來控制網絡。然而,SDN不會分離主機網絡和報文路由器接口。報文頭仍用于查找路由器或交換機。
將MPLS融入SDN
多協議標簽交換(MPLS)在區分網絡邊界和核心方面起到重要作用。報文到達第一個上層路由器時,邊界路由器會問:“主機想干什么?”,然后在報文中加入標簽,這個標簽只有在本地網絡中有意義。網絡核心無須了解報文頭,只是說:“從現在起,MPLS標簽足以讓我了解如何轉發報文”。
早在5年前,我們就應該把MPLS融入SDN,讓邊界路由器來讀取整個報文頭并將MPLS標簽嵌入報文,讓核心路由器來讀取報文。我們目前正在努力將MPLS融入SDN。
融入MPLS后,整個網絡被分解成模塊。在模塊化網絡中,各項任務只執行一次:網絡邊界完全負責主機接口;網絡核心通過標簽管理報文路由器接口;SDN管理操作員接口。
我們提出分離網絡邊界和網絡核心的理由之一,是讓網絡核心專注于報文發送,而訪問控制和隔離功能則由網絡邊界來完成。顯然,網絡核心必須負責報文發送,包括組播和服務質量(QoS),而其它工作由網絡邊界來完成。
經過簡化后,網絡核心只用負責一項任務,即在網絡邊界之間發送報文。這樣一來,網絡核心的工作性能得到大幅提升。
試想一下,一旦分離了網絡邊界和網絡核心,為什么不讓主機靠近網絡邊界呢?要實現這點,就得在主機上安裝可信的硬件和軟件(如主機網絡接口卡)以及大量分布式系統和安全措施。不過,我們可以想象把網絡部署在只看得見由主機生成的標簽的位置。
過去,網絡完全由硬件交換機組成。如今,軟件交換機成為了常見的網絡組成部分。在部署包括邊界和核心部分的網絡時,所有邊界交換機都應該是軟件交換機。這是我們的第二個激進的觀點。
數據中心已經在使用虛擬交換機和Hypervisor。Verizon、AT&T和德電等大型互聯網服務提供商的所有帶寬都經過網絡邊界。為了轉發這些流量,他們要花多少錢才能買到足夠的網絡核心設備呢?答案是他們需要花15萬美元,不及一臺中型路由器的價格。縱觀其他企業的網絡,我認為在網絡邊界采用軟件轉發這種方式并非行不通。
當然硬件轉發和軟件轉發在速度上存在兩個數量級的差別,我認為可以用軟件來滿足邊界轉發需求,提高邊界軟件的靈活性讓我們受益;無需在網絡核心實施軟件交換,因為核心只負責根據標簽來進行流量轉發,而硬件就能實現轉發。
邊界軟件轉發讓網絡架構演進和多樣化成為可能。整個網絡中,只有網絡邊界的軟件需要了解本領域的協議,其它網絡部分無須了解協議。只需更改SDN控制程序,就能實現網絡架構更新(如IPv4到IPv6)。一切就這么簡單。
可以在一個域中并行運行多個架構。“在一個主機中并行支持多個架構”這種想法看似很激進,但所需要的改變都非常簡單,都在我們的技術能力范圍內。關鍵在于要說服人們,讓他們覺得落實這個想法是值得的。
邊界軟件的中間件功能
最后我還要提一點。一直以來我們都認為網絡數據面是平的,很簡單。但現在我們應該改變這種看法。
互聯網數據面只是實現“盡力而為”的數據轉發。而實際上,很多中間件或網絡設備都能擴大數據面,讓數據面實現各種功能,如防火墻、LAN優化、網關、VPN、負載均衡和入侵檢測。數據面一點也不簡單。大中小型和超大型網絡中,中間件的數量比得上路由器和交換機的數量。
有4個重要的事實值得我們注意:第一,大多數報文是由多個中間件處理的,這些中間件檢查各個報文并作出決定,如“這個報文的內容與我無關,要把它扔掉”、“需要檢查報文,明確是否有人在攻擊我”,或者“需要實施防火墻功能以控制鏈接”;第二,中間件通常部署在網絡邊界;第三,中間件通常使用x86處理架構,但并非所有情況都如此;第四,中間件的報文處理流程比單純的報文轉發流程要復雜得多。
接受這4個事實后,還需要面對一個絕對無法回避的結論:SDN應該加強邊界軟件的中間件功能。
邊界軟件代表了從硬件到軟件的徹底轉變。硬件網絡退化成為“啞管道”——當初沒有中間件的時候,網絡就是啞管道。SDN控制下的邊界軟件帶來了有趣的轉變。
SDN的顛覆性本質就體現在這個轉變中。
SDN對控制面實施精細的模塊化,讓交換機、網絡操作系統和控制程序各司其職。虛擬化讓控制程序和物理網絡實現解耦。作為虛擬拓撲,SDN平臺能完全控制實施需求的方式,如把功能放在網絡邊界,讓網絡核心進行流量轉發。
軟件交換并非易事,無法一蹴而就。需要采取新的思維方式和方法來制定軟件架構。新產品將會出現,如目前尚不存在的高端口密度軟件交換機。新的市場參與者將填補利基市場的空白。軟件交換正在進行中。如果擔心時延問題,你可以算算目前中間件導致的時延。總之,要利用軟件交換這一趨勢來靈活定義功能——就像虛擬數據中心領域一樣。這場轉變正在改變網絡行業的性質,促進創新,強化競爭并改善客戶體驗。