接下來我將分幾次說一說自己對數據中心網絡架構的認識,想到哪說到哪,不對的地方請大家指正。
傳統數據中心網絡架構
在傳統的大型數據中心,網絡通常是三層結構。Cisco稱之為:分級的互連網絡模型(hierarchical inter-networking model)。這個模型包含了以下三層:
Access Layer(接入層):有時也稱為Edge Layer。接入交換機通常位于機架頂部,所以它們也被稱為ToR(Top of Rack)交換機,它們物理連接服務器。
Aggregation Layer(匯聚層):有時候也稱為Distribution Layer。匯聚交換機連接Access交換機,同時提供其他的服務,例如防火墻,SSL offload,入侵檢測,網絡分析等。
Core Layer(核心層):核心交換機為進出數據中心的包提供高速的轉發,為多個匯聚層提供連接性,核心交換機為通常為整個網絡提供一個彈性的L3路由網絡。
一個三層網絡架構示意圖如下所示:
通常情況下,匯聚交換機是L2和L3網絡的分界點,匯聚交換機以下的是L2網絡,以上是L3網絡。每組匯聚交換機管理一個POD(Point Of Delivery),每個POD內都是獨立的VLAN網絡。服務器在POD內遷移不必修改IP地址和默認網關,因為一個POD對應一個L2廣播域。
匯聚交換機和接入交換機之間通常使用STP(Spanning Tree Protocol)。STP使得對于一個VLAN網絡只有一個匯聚層交換機可用,其他的匯聚層交換機在出現故障時才被使用(上圖中的虛線)。也就是說匯聚層是一個active-passive的HA模式。這樣在匯聚層,做不到水平擴展,因為就算加入多個匯聚層交換機,仍然只有一個在工作。一些私有的協議,例如Cisco的vPC(Virtual Port Channel)可以提升匯聚層交換機的利用率,但是一方面,這是私有協議,另一方面,vPC也不能真正做到完全的水平擴展。下圖是一個匯聚層作為L2/L3分界線,且采用vPC的網絡架構。
隨著云計算的發展,計算資源被池化,為了使得計算資源可以任意分配,需要一個大二層的網絡架構。即整個數據中心網絡都是一個L2廣播域,這樣,服務器可以在任意地點創建,遷移,而不需要對IP地址或者默認網關做修改。大二層網絡架構,L2/L3分界在核心交換機,核心交換機以下,也就是整個數據中心,是L2網絡(當然,可以包含多個VLAN,VLAN之間通過核心交換機做路由進行連通)。大二層的網絡架構如下圖所示:
大二層網絡架構雖然使得虛機網絡能夠靈活創建,但是帶來的問題也是明顯的。共享的L2廣播域帶來的BUM(Broadcast·,Unknown Unicast,Multicast)風暴隨著網絡規模的增加而明顯增加,最終將影響正常的網絡流量。
傳統三層網絡架構已經存在幾十年,并且現在有些數據中心中仍然使用這種架構。這種架構提出的最初原因是什么?一方面是因為早期L3路由設備比L2橋接設備貴得多。即使是現在,核心交換機也比匯聚接入層設備貴不少。采用這種架構,使用一組核心交換機可以連接多個匯聚層POD,例如上面的圖中,一對核心交換機連接了多個匯聚層POD。另一方面,早期的數據中心,大部分流量是南北向流量。例如,一個服務器上部署了WEB應用,供數據中心之外的客戶端使用。使用這種架構可以在核心交換機統一控制數據的流入流出,添加負載均衡器,為數據流量做負載均衡等。
技術發展對網絡架構的影響
數據中心是為了數據服務。隨著技術的發展,數據的內容和形式也發生了變化。
虛擬化的流行。傳統的數據中心中,服務器的利用率并不高,采用三層網絡架構配合一定的超占比(oversubscription),能夠有效的共享利用核心交換機和一些其他網絡設備的性能。但是虛擬化的流行使得服務器的利用率變高,一個物理服務器可以虛擬出多個虛擬機,分別運行各自的任務,走自己的網絡路徑。因此,高的服務器利用率要求更小的超占比。Gartner的一份報告:Forecast: x86 Server Virtualization, Worldwide, 2012-2018, 2014 Update指出,在2018年,82%的服務器將是虛擬服務器。虛擬化對數據中心網絡架構的影響是巨大的。
軟件架構的解耦。傳統的軟件架構,采用專用模式進行部署,軟件系統通常跑在一個物理服務器,與其他的系統做物理隔離。但是,模塊化,分層的軟件架構設計已經成為了現在的主流。一個系統的多個組件通常分布在多個虛機/容器中。最典型的就是三層WEB應用,包含了Client/Application/DB。一次請求,不再是由一個虛機/物理機完成,而是由多個服務器協同完成。這對網絡的影響是,東西向流量變多了。
新的應用的興起。傳統數據中心是為.com應用設計的,這些流量大多是客戶端和服務器之間的通信。而分布式計算,大數據漸漸興起,這些應用會在數據中心的服務器之間產生大量的流量。例如Hadoop,將數據分布在數據中心中成百上千個服務器中,進行并行計算。據說Facebook的一個Hadoop集群有著超過100 petabytes的數據??梢妼τ谀承?,數據中心的東西向流量是巨大的。
軟件定義數據中心(SDDC,Software Defined Data Center)的提出。SDDC提出軟件定義的數據中心,這要求數據中心的計算存儲網絡都是可以軟件定義的。對應于網絡,就是SDN。傳統的三層網絡架構在設計之初并沒有考慮SDN。
總結起來,技術發展要求新的數據中心有更小的超占比,甚至沒有超占比;更高的東西向流量帶寬;支持SDN。
在這些需求里面,更高的東西向流量支持尤為重要。前面說了南北向流量,東西向流量,這些分別是什么東東?數據中心的流量總的來說可以分為以下幾種:
南北向流量:數據中心之外的客戶端到數據中心服務器之間的流量,或者數據中心服務器訪問互聯網的流量。
東西向流量:數據中心內的服務器之間的流量。
跨數據中心流量:跨數據中心的流量,例如數據中心之間的災備,私有云和公有云之間的通訊。
根據Cisco Global Cloud Index: Forecast and Methodology, 2015–2020,到2020年77%的數據中心流量將會是數據中心內部的流量,也就是東西向流量,這與上面的技術發展對網絡架構的影響分析相符,這也是為什么東西向流量尤其重要。