Google B4網絡閱讀記錄(翻譯)

三、設計算法

這一章咱們描述軟件定義廣域網架構的細節。服務器

3.一、概述網絡

咱們的軟件定義網絡從邏輯上能夠看作三層,如圖所示,架構

B4服務於多個廣域網節點,每一個節點都有不少服務器集羣。在每一個B4節點內,交換機硬件層主要用來轉發數據,不運行復雜的控制軟件,站點控制層包括網絡控制服務器,託管OpenFlow控制器和網絡控制應用。負載均衡

這些服務器支持分佈式路由和流量工程做爲路由覆蓋。OpenFlow控制器根據網絡控制應用指令和切換時間,並指示交換機根據此變化的網絡狀態設置轉發條目數。對於單個服務器和控制進程的錯誤容忍度。Paxos的每一個站點實例選擇多個可用軟件副本中的一個做爲主要實例。分佈式

全局層由邏輯上的中心的應用(包括SDN Gateway和中心TE服務器)組成,經過站點級網絡控制應用實現對整個網絡的控制。SDN網關將中央TE服務器的OpenFlow細節和硬件交換。咱們使用獨立的領導者選舉在多個廣域網站點上覆制全局層應用程序,用以設置主領導者。函數

咱們網絡中的每一個服務器集羣都是一個具備一組IP前綴的邏輯「自治系統」(AS)。每一個集羣包含一組BGP路由器(在Fig.2中沒有表示)路由器與每一個廣域網站點的B4交換機對等。即便在引入SDN以前,咱們也運行B4做爲一個單一的自治系統,提供運行傳統BGP/ISIS網絡協議的集羣之間的傳輸。咱們之因此選擇BGP是由於它在域之間的隔離性和操做員對協議的熟悉程度。基於SDN的B4必須支持現有的分佈式路由協議,以實現與非SDN廣域網實施的互操做性,並逐步推出。性能

咱們考慮了將現有路由歇息與集中式流量工程集成的一些選擇。以積極地方式,咱們將創建一個綜合的,集中地服務,結合路由(例如,ISIS功能)和傳輸工程。咱們選擇將路由和流量工程部署爲獨立的服務,最初部署標準路由服務,隨後部署中央TE做爲覆蓋。這種分離提供了許多好處。它使咱們可以專一於構建SDN基礎架構的初始工做,例如OFC和代理,路由等。並且,因爲咱們最初部署了咱們的網絡,沒有像TE這樣的新的外部課件功能,所以在嘗試實現諸如TE之類的心功能以前,給了開發和調試SDN架構的時間。優化

也許最重要的是,咱們使用有線交換轉發表條目在基線路由協議紙上分層傳輸工程。這種隔離給了咱們的網絡一個「大紅按鈕」;面對流量工程,咱們能夠禁用該服務並回退到最短路徑轉發。這種故障恢復機制已被證實是很是寶貴的(第六節)。網站

每一個B4站點由多個交換機組成,可能有數百個單獨的端口鏈接到遠程站點。爲了擴展,TE將每一個站點抽象爲具備給定容量的單個邊緣的單個節點到每一個遠程站點。爲了實現這種拓撲抽象,全部跨站點到站點邊界的流量必須均勻分佈在全部組成的鏈路上。B4路由器使用ECMP三列的自定義辯題來實現必要的負載均衡。

在剩餘的章節裏面,咱們描述瞭如何將在單獨的控制服務器上運行的現有路由協議與支持OpenFlow的硬件交換機集成在一塊兒。第四節咱們描述瞭如何在這個基線路由實現紙上分層TE。

 

3.二、交換機設計

傳統的觀點認爲,廣域路由器必須具備深度的buffers,很是大的轉發表以及對高可用性的硬件支持。全部這些功能增長了硬件成本和複雜性。咱們假設,經過仔細的斷電管理,咱們能夠調整傳輸速率,來避免較高的丟包率。此外,咱們的交換機運行在相對較小的一組數據中心,因此咱們不須要大的轉發表。最後,咱們發現交換故障一般是由軟件產生的,而不是硬件的問題。經過移動交換機硬件上的大多數軟件功能,咱們能夠經過現有分佈式系統普遍採用的已知技術來管理這種軟件容錯。

即使如此,咱們選擇構建本身的硬件的主要緣由是,現有的平臺沒法支持SDN部署,便可以導出對交換機轉發行爲的低級控制。使用定製交換機硬件所帶來的二外成本不只僅是經過支持注入集中式TE之類的新型服務所帶來的效率提高來償還的。考慮到各個站點所需的帶寬,咱們須要一個高基數交換機;部署更少,更大的交換機將產生管理和軟件可擴展性的好處。

爲了擴大單個家還擊芯片的容量,咱們在銅底板的兩個階段Clos拓撲中構建了多個商用硅交換機芯片的B4交換機。下圖展現了使用24個獨立的16*10GE非阻塞交換機芯片組成的128端口的10GE交換機。咱們肯定每一個入口芯片將輸入數據包彈回到spine幹層,除非目的地在同一入口芯片上。這些spine芯片根據書籍報的目的地將數據包轉發到適當的輸出芯片。

 交換機包含一個運行Linux的嵌入式處理器。最初,咱們直接在交換機上運行全部路由協議。咱們能夠吧交換機放到一系列現有的部署中來得到硬件和軟件的使用經驗。接下來,咱們開發了一個OpenFlow代理(OFA),一個用戶級的進程運行在咱們的交換機硬件上實現了OpenFlow協議的稍微擴展版本,以利用咱們交換機的硬件流水線。OpenFlow代理鏈接一個遠程的OpenFlow控制器,接受OpenFlow(OF)命令並將適當的分組和轉發事件轉發給OpenFlow控制器。例如,咱們配置硬件交換機將路由協議數據包轉發到這個路徑。

OpenFlow代理收到例如BGP數據包,並將它們轉發給OpenFlow控制器,而後OpenFlow控制器將它們傳遞給咱們的BGP堆棧。

OpenFlow代理將OpenFlow消息轉換爲驅動程序命令來設置芯片轉發表項。這裏有兩個挑戰。第一,咱們必須在OpenFlow架構中立版本的轉發表條目和現代商業交換芯片的複雜包處理流水線之間架起一座橋樑,這個流水線擁有許多連接不一樣大小和語義的轉發表。OpenFlow代理將轉發狀態的高級視圖轉換爲底層硬件的高校映射規範。第二,OpenFlow代理導出一個帶有幾百個10Gb/s端口的單個無阻塞交換機的抽象。然而,底層交換機由多個物理交換芯片組成,每一個物理交換芯片都具備單獨管理的轉發表項。

 

3.三、網絡控制功能

大多數B4功能都在位於交換機硬件上的站點控制層的網絡控制服務器上。網絡控制服務器和交換機共享一個專門的帶外控制平面網絡。

Paxos爲全部控制功能處理領導選舉。每一個站點上的Paxos實例在預先配置好的一組可用副本之間執行應用程序級別的故障檢測,以實現給定的控制功能。當大多數Paxos服務器檢測到故障時,他們會在剩餘的可用服務器組中選擇出新的領導者。而後Paxos以單調遞增的新ID向選舉的領導者提供回叫。領導者使用這新的ID來明確的向客戶代表本身的身份。

咱們使用修改版本的Onix來控制OpenFlow。從這項工做的角度來看,OpenFlow控制器最有趣的方面就是網絡信息庫(NIB)。網絡信息庫包括網絡的當前拓撲,中繼線配置和鏈路狀態(運行,消耗等)狀態。OpenFlow 控制器是熱備用。雖然OpenFlow代理保持與多個OpenFlow控制器的有效鏈接,可是一次只有一個OpenFlow控制器通訊是活動的,而且對於給定的一組交換機,只有一個OpenFlow控制器保持狀態。在啓動或者新領導選舉時,OpenFlow控制器從本地配置讀取網絡的預期靜態狀態,而後與各個交換機同步以得到動態網絡狀態。

 

3.四、路由

B4網絡的一個主要挑戰是整合基於OpenFlow的交換機控制和當前現存的路由協議來支持混合的網絡部署。爲了集中注意力於OpenFlow或者SDN,咱們在網絡控制服務器上爲BGP/ISIS選擇開源的Quagga棧。咱們寫了一個Routing Application Proxy(RAP)做爲SDN應用,來提供Quagga和OpenFlow交換機的鏈接。RAP負責三件事:(1)BGP/ISIS的路由更新(2)交換機和Quagga的路由協議包流(3)從交換機到Quagga的接口更新。

下圖簡要描述這個整合。

 

 

 

四、流量工程

流量工程的目標是在可能使用多個路徑的競爭應用程序之間共享帶寬。咱們系統的目標功能是爲應用程序提供最大最小公平分配。一個最大最小公平的解決方案最大限度的利用利用率,只要進一步的利用手藝不是懲罰公平份額的應用。

4.一、集中式流量工程架構

下圖表示了咱們流量工程的架構。

 

流量工程服務器按照下面狀態來操做:

 網絡拓撲圖將站點表示爲頂點,將站點到站點鏈接表示爲邊緣。SDN網關未來自多個站點和各個交換機的拓撲事件合併爲流量工程。流量工程聚合中級來計算站點邊緣。這種抽象顯著減小了流量工程優化算法輸入圖的大小。

流組(FG):對於可擴展性,流量工程不能以單個應用程序的粒度進行操做。所以,咱們將應用程序集合到一個流組中,定義爲{源站點,目標站點,QoS}元組。

一個隧道(Tunnel)表示網絡中的站點級路徑,例如站點序列(A->B->C)。B4在IP封裝中使用IP實現隧道。

一個隧道組(Tunnel Group)將流組映射到一組隧道和相應的權重。這個權重製定了沿每一個隧道轉發的流組流量的比例。

流量工程服務器輸出隧道組,並經過引用將隧道好流組輸出到SDN網關。網關將這些隧道和流組轉發給OpenFlow控制器,OpenFlow控制器又將其安裝在使用OpenFlow的交換機中。

4.二、帶寬函數

爲了得到相對優先級,咱們將帶寬函數與每一個應用程序相關聯(例如,下圖),其實是應用程序與B4之間的契約。

這個函數指定給與應用程序的帶寬分配一個任意的無量綱規模的流量相對優先級,咱們稱之爲公平份額。咱們從管理員指定的靜態權重(函數的斜率)中指定相關的應用程序優先級。在這個例子中,App1,App2,App3的權重分別爲10,1,0.5.帶寬函數經過帶寬強制器進行配置,測量並提供給流量工程。

每一個流組將多個應用程序需求從一個站點複用到另外一個站點。所以,流組的帶寬函數是每一個應用帶寬函數的分段線性加法組合。流量工程的最大-最小目標函數就是這個每流組公平份額維度。帶寬強制器(Bandwidth Enforcer)還彙總了應用程序的帶寬函數。

例如,給定下圖

帶寬強制器測量在站點A和站點B之間App1的流量是15Gbps,App2的流量是5Gbps。獲得以下圖的帶寬函數。

這裏能夠看到FG1的函數爲:

FG2的函數爲:

流組2的帶寬函數包含只有App3的10Gbps的流量。咱們將測量需求中配置的應用帶寬功能進行平滑處理,由於分配測量的需求至關於一個流組接受的無線公平份額。

帶寬強制實施器還計算在邊緣執行的帶寬限制。帶寬強制器的細節超出了本文的範圍。爲了簡單起見,咱們不進一步討論流組的QoS方面的內容。

4.三、流量優化算法

在全部流組中分配公平份額的LP最優解決方案是昂貴的,而且不能很好地擴展。所以咱們設計了一個算法,實現了類似的公平性和至少99%的帶寬利用率,相對於咱們部署的LP,性能提升了25倍。

流量工程優化算法有兩個主要組成部分:(1)隧道組生成爲使用帶寬功能的流組分配帶寬以優化處理瓶頸;(2)隧道組量化改變每一個TG中的分流比以匹配交換機硬件表支持的粒度。

咱們經過一個實例來介紹算法是如何操做的:

下圖表示了一個包含4個節點的拓撲圖,成本是附加到邊緣的抽象數量,一般表明邊緣延遲。隧道的花費是他的邊 的總和。

 上圖中A->D邊的花費指望是1,可是是10,。上圖中有兩個流組,FG1(A->B)須要20Gbps的流量,FG2(A->C)須要10Gbps流量。

上圖中表示這些流組的帶寬函數,做爲當前測量的需求和配置優先級的函數。

隧道組的生成

隧道組生成根據需求和優先級爲FG分配帶寬。它根據帶寬函數在流組之間分配邊緣容量,使得邊緣上全部競爭的流組都能得到相等的公平份額或者徹底知足其需求。當它填充全部流組時,經過增長他們在其首選隧道上的公平份額來找到瓶頸(以最小的公平份額)。流組的首選隧道是不包含瓶頸邊緣的最小成本路徑。

隧道組的生成不會進一步使用瓶頸。因此咱們凍結了全部會經過它的隧道。對於全部的流組,咱們移動到下一個首選隧道,繼續增長流組的公平份額,並找到下一個瓶頸。當每一個流組都知足或者咱們找不到一個優選的隧道時,算法終止。

咱們用T_x^y來表示流組FG_x的第y個最首選的隧道。在咱們的例子中,開始時咱們分別對流組FG1和流組FG2的首選通道填充:咱們經過給每一個流組分配平等的公平份額來在流組之間分配帶寬。在公平份額爲0.9時,經過帶寬函數給流組GF1分配10Gbps,流組FG2分配0.45Gbps。在這種狀況下,邊A->B變滿了,也就是成爲瓶頸了。這使得T_1^1變成自由狀態。算法繼續分配帶寬到流組FG1上,它的下個首選隧道是。公平份額是3.33,流組FG1多收到8.33Gbps流量流組FG2多收到1.22Gbps流量,使A->C成爲下一個瓶頸。流組FG1如今必須強制下一個首選隧道,流組FG2也強制實行第二次首選通道。流組FG1多收到1.67Gbps的流量,變成滿的狀態。流組2收到剩餘的3.33Gbps流量。

流組FG2的兩個隧道比是1.67:3.33(約等於0.3:0.7,正則化因此他們的和爲1)。分配到流組FG1的三個隧道的比值爲10:8.33:1.67(約等於0.5:0.4:0.1)流組2分配的平均份額是10,流組FG1分配的平均份額是無窮由於它是滿的狀態。

我本身根據理解畫出以下圖:

在公平份額爲0.9時流量分配以下:

這個時候A->B就滿了。而後在公平份額爲3.33時,流量以下圖:

這個時候能夠看到A->C這條線路滿了,而後下一步的流圖以下:

這個時候能夠看到C->B也滿了。

隧道組量化

隧道組量化將分割調整爲底層硬件支持的粒度,至關於解決整數線性規劃問題。鑑於肯定最佳分割量化的複雜性,咱們再次使用貪婪方法。咱們的算法使用啓發式算法來保持公平性和吞吐效率,與理想的非量化隧道組至關。

回到咱們的例子,咱們將上面的分配分紅0.5的倍數。咱們從FG2開始,咱們把它的分化比率減到0.0:0.5.咱們須要在兩個隧道中的一個上添加0.5來完成量化。在T_2^1上增長0.5來減小流組FG1低於5,讓這個方法不那麼最大最小均衡。然而,在T_2^2上增長0.5使得流組FG1滿了,並且把流組FG2的公平份額到達10。所以,咱們計算流組FG2新的比例爲0:1,類似的,咱們計算流組FG1的比例爲0.5:0.5:0。這些隧道組就是就是流量工程算法的最後輸出。注意,具備較高帶寬功能的流組如何將具備較低帶寬功能的流組推向較長和較低容量的隧道。

五、流量工程協議和OpenFlow協議

5.一、流量工程狀態和OpenFlow

原站點交換機實現流組。當交換機的目的IP地址與流組相關的前綴之一匹配時,交換機將數據包映射到流組上。與流組匹配的入包經過相應的隧道組轉發。每一個輸入數據包以指望的比例三列到與隧道組相關聯的隧道之一。隧道路徑中的每一個站點都維護每一個隧道的轉發規則。原站點交換機封裝數據包是包含IP地址,IP地址能惟一標識隧道。外部目標IP地址是隧道ID而不是實際目標地址。流量工程預配置封裝交換機中的表以建立正確的封裝,傳輸站點交換機中的表根據其隧道ID正確轉發數據包,並對站點交換機進行解封裝,以識別哪些隧道ID應該終止。所以,安裝隧道須要在多個站點配置交換機。

5.二、例子

相關文章
相關標籤/搜索