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