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