Kubernetes中Pod之間使用虛擬二層網絡連接引起的調研
傳統的三層網絡
-
在傳統的大型數據中心,網絡通常是三層結構。這個模型包含了以下三層:
- Access Layer(接入層):有時也稱為Edge Layer。接入交換機通常位於機架頂部,所以它們也被稱為ToR(Top of Rack)交換機,它們物理連接服務器。
- Aggregation Layer(匯聚層):有時候也稱為Distribution Layer。匯聚交換機連接Access交換機,同時提供其他的服務,例如防火牆,SSL offload,入侵檢測,網絡分析等。
- Core Layer(核心層):核心交換機為進出數據中心的包提供高速的轉發,為多個匯聚層提供連接性,核心交換機為通常為整個網絡提供一個彈性的L3路由網絡。
-
三層網絡框架示意圖如下:

其中:匯聚交換機以上的為L2網絡,以上是L3網絡。每組匯聚交換機管理一個POD(Point Of Delivery),每個POD內都是獨立的VLAN網絡。服務器在POD內遷移不必修改IP地址和默認網關,因為一個POD對應一個L2廣播域。
比如:同一機櫃的連接的交換機叫接入交換機,連接多個接入交換機的叫匯聚交換機,它們處於同一個vlan網絡。(在計算機網絡中,一個二層網絡可以被划分為多個不同的廣播域,一個廣播域對應了一個特定的用戶組,默認情況下這些不同的廣播域是相互隔離的。不同的廣播域之間想要通信,需要通過一個或多個路由器。這樣的一個廣播域就稱為VLAN,報文中使用12位來表示VLAN,因此VLAN只能分配4096個)
核心交換機是解決不同數據中心之間的聯通
南北流向和東西流向
- 南北向流量:數據中心之外的客戶端到數據中心服務器之間的流量,或者數據中心服務器訪問互聯網的流量。
- 東西向流量:數據中心內的服務器之間的流量。
- 東西向流量分為L2和L3流量:
- L2流量:
(1)東西向的L2流量,如果源和目的主機都在同一個接入層交換機下,那么可以達到全速,因為接入交換機就能完成轉發。
(2)如果需要跨機架,但仍然是在一個匯聚層POD內,則需要通過匯聚層交換機進行轉發,帶寬取決於匯聚層交換機的轉發速率,端口帶寬和同時有多少個接入層交換機共享匯聚層交換機。匯聚層和接入層之間一般使用STP(后面會提到),這使得一個匯聚層POD只能有一個匯聚層交換機在工作。為了滿足跨機架的L2轉發,匯聚層交換機的性能,例如帶寬,轉發速率必然要大於接入層交換機。
(3)如果L2流量需要跨匯聚層POD(大二層架構),那必須經過核心交換機。同樣的問題仍然存在,對核心交換機的要求會更高。
- L3流量:
東西向的L3流量,不論是不是在一個接入層交換機下,都需要走到具有L3功能的核心交換機才能完成轉發。如下圖所示:

STP
為什么要用STP
廣播風暴:

前提:node1找node3,但node3網絡有問題
過程:
- node1->Access Lay1;
- Access Lay1->Aggregation Lay1; Access Lay1->Aggregation Lay2;
- Aggregation Lay1->Access Lay2(node3網絡有問題,Access Lay2會將node3對應的mac刪除);Aggregation Lay2->Access Lay2 ;
- Access Lay2 ->Aggregation Lay1;
- Aggregation Lay1->Access Lay1;
- 掉轉到第二步
STP:
匯聚交換機和接入交換機之間通常使用STP(Spanning Tree Protocol)。STP使得對於一個VLAN網絡只有一個匯聚層交換機可用,其他的匯聚層交換機在出現故障時才被使用(三層框架中的虛線)。也就是說匯聚層是一個active-passive的HA模式。這樣在匯聚層,做不到水平擴展,因為就算加入多個匯聚層交換機,仍然只有一個在工作。
大二層網絡
隨着雲計算的發展,計算資源被池化,為了使得計算資源可以任意分配,需要一個大二層的網絡架構。即整個數據中心網絡都是一個L2廣播域,這樣,服務器可以在任意地點創建,遷移,而不需要對IP地址或者默認網關做修改。大二層網絡架構,L2/L3分界在核心交換機,核心交換機以下,也就是整個數據中心,是L2網絡(當然,可以包含多個VLAN,VLAN之間通過核心交換機做路由進行連通)。大二層的網絡架構如下圖所示:

不存在STP問題的原因:
服務器->接入層->匯聚層->核心層->匯聚層->接入層
