谷歌運行著一個龐大的網絡,在2010年Arbor Networks公司在其研究中總結道:“如果谷歌是一個互聯網服務供應商,它將是發展最快的全球第三大網絡運營商。只有兩家公司比谷歌貢獻更多的跨域流量,這兩家供應商都承載著谷歌龐大的流量。”
在開放網絡峰會上,谷歌杰出工程師Amin Vahdat介紹了谷歌如何結合Quagga開源軟件以及OpenFlow來優化其數據中心互連,他還介紹了谷歌在其內部數據中心使用OpenFlow的細節信息,谷歌稱其SDN網絡為“B4”。
谷歌為何選擇SDN?
Vahdat指出,谷歌后端(東西)網絡的增長迅速超越了其前端面向用戶的網絡。這種增長非常昂貴,因為網絡并不能像存儲和計算一樣以符合成本效益的方式來擴展。計算和存儲的運營成本會隨著規模的擴展而更加便宜,但網絡并不是如此。
Vahdat介紹了谷歌選擇軟件定義網絡的理由。首先,通過從軟件分離硬件,該公司可以基于所需的功能選擇硬件,同時能夠對軟件時間線進行創新和部署。其次,它提供邏輯上的集中控制,這將會更具確定性、更高效以及更容錯。第三,自動化允許谷歌分離、監控、管理和操作。所有這些元素能夠提供靈活性以及創新性。
在這個項目開始時,谷歌使用商用芯片建立了自己的交換機(見圖片)。谷歌構建自己的硬件,因為當時市場上并沒有硬件能夠滿足其需求。
▲B4網絡硬件
Vahdat并沒有提到現在市場上是否存在滿足于谷歌部署SDN硬件需求的交換機,這通常涉及供應商固件升級到納入OpenFlow代理。
然而,Vahdat指出,雖然OpenFlow并不是且仍然部署完美的協議,但谷歌將繼續使用OpenFlow用于流量實例,因為它受到各種廠商的支持。筆者認為,這意味著谷歌并不打算推出其自己的硬件,并且,OpenFlow支持將會是未來硬件購買的采購要求。
谷歌B4網絡的混合遷移分三個階段
Vahdat接著討論了谷歌的SDN遷移路徑,從完全分布式的單片控制和數據平面硬件架構轉移到物理分散的(盡管邏輯上集中)控制平面架構。
谷歌B4網絡的混合遷移分三個階段進行:
▲傳統混合SDN部署
▲混合綜合SDN部署
▲最終:混合SDN部署
在下面的圖中,你可以看到,谷歌已經在交換機旁邊部署了網絡控制器服務器(NCS),這個NCS包含針對一定數量網絡元素的提取的控制平面。這些交換機運行具有低水平控制的OpenFlow代理,所有真正重要的元件運行在外部服務器(但仍位于同一位置)的一套控制器上,NCS是32核服務器。
▲B4架構
在NCS上面是OpenFlow控制器,用于高可用性故障切換。Vahdat談到的主要應用程序是流量工程應用程序—將政策實例化到控制協議,包括BGP、ISIS和OpenFlow。
作者總結
筆者對谷歌的混合部署戰略很感興趣。這筆者看來,在對網絡狀態的丟失和機械地繼續轉發數據包方面,谷歌相當受限。網絡可能會回落到低優先級,實例化流量規則。流量表中,不符合流量規則的數據包將會流入到正常的轉發管道或者預先安裝的捕捉全部的流量規則,來到達出口網關。雖然自定義轉發將會回落到最短路徑或者靜態路徑,但它會保持流量轉發,直到控制元件恢復。
這些圖表明控制元件是按照多層層次來部署。分層和模塊化是我們現在擴展大型網絡的方法。通過將NIB(網絡信息庫)分成模塊,谷歌的方法類似于現在的網絡架構從每個數據平面減去專用控制平面的方法。這些模塊然后可在所有模塊中再分發哈希表和NIB,并提供整體視圖。