


對計算機網絡或者Kubernetes 網絡稍有了解的工程師都應該聽說過延展網絡(Overlay Network),Overlay 網絡其實并不是一門新技術,它是指構建在另一個網絡上的計算機網絡,這是一種網絡虛擬化技術的形式,近年來云計算虛擬化技術的演進促進了網絡虛擬化技術的應用。
因為 Overlay 網絡是建立在另一個計算機網絡之上的虛擬網絡,所以它不能獨立出現,Overlay 底層依賴的網絡就是 Underlay 網絡,這兩個概念也經常成對出現。
Underlay 網絡是專門用來承載用戶IP 流量的基礎架構層,它與Overlay 網絡之間的關系有點類似物理機和虛擬機。Underlay 網絡和物理機都是真正存在的實體,它們分別對應著真實存在的網絡設備和計算設備,而Overlay 網絡和虛擬機都是依托在下層實體使用軟件虛擬出來的層級。
一、虛擬機遷移
Kuberentes 目前已經是容器編排領域的事實標準了,雖然很多傳統行業仍然在使用物理機部署服務,但是越來越多的計算任務在未來都會運行在虛擬機上。虛擬機遷移是將虛擬機從一個物理硬件設備移到另一個設備的過程,因為日常的更新維護,集群中的大規模虛擬機遷移是比較常見的事情,上千臺物理機組成的大集群使得集群內的資源調度變得更加容易,我們可以通過虛擬機遷移來提高資源的利用率、容忍虛擬機的錯誤并提高節點的可移植性。
當虛擬機所在的宿主機因為維護或者其他原因宕機時,當前實例就需要遷移到其他的宿主機上,為了保證業務不中斷,我們需要保證遷移過程中的IP 地址不變,因為 Overlay 是在網絡層實現二層網絡,所以多個物理機之間只要網絡層可達就能組建虛擬的局域網,虛擬機或者容器遷移后仍然處于同一個二層網絡,也就不需要改變IP 地址。
遷移后的虛擬機與其他的虛擬機雖然位于不同的數據中心,但是由于上述兩個數據中心之間可以通過IP 協議連通,所以遷移后的虛擬機仍然可以通過 Overlay 網絡與原集群的虛擬機組成二層網絡,集群內部的主機也完全不清楚底層的網絡架構,它們只知道不同虛擬機之間是可以連通的。
二、虛擬機規模
目前,Kuberentes 官方支持的最大集群為5000 節點,如果這5000 個節點中的每個節點都僅僅包含一個容器,這對于內部的網絡設備其實沒有太大的壓力,但是在實際情況下5000 節點的集群中都包含幾萬甚至幾十萬個容器,當某個容器向集群中發送ARP 請求,集群中的全部容器都會收到ARP 請求,這時會帶來極高的網絡負載。
在使用VxLAN 搭建的Overlay 網絡中,網絡會將虛擬機發送的數據重新封裝成IP 數據包,這樣網絡只需要知道不同VTEP 的MAC 地址,由此可以將MAC 地址表項中的幾十萬條數據降低到幾千條,ARP 請求也只會在集群中的VTEP 之間擴散,遠端的VTEP 將數據拆包后也僅會在本地廣播,不會影響其他的VTEP,雖然這對于集群中的網絡設備仍然有較高的要求,但是已經極大地降低了核心網絡設備的壓力。
Overlay 網絡其實與軟件定義網絡(Software-defined networking、SDN)密切相關,而SDN 引入了數據平面和控制平面,其中數據平面負責轉發數據,而控制平面負責計算并分發轉發表。VxLAN 的 RFC7348 中只定義了數據平面的內容,由該技術組成的網絡可以通過傳統的自學習模式學習網絡中的 MAC 與ARP 表項,但是在大規模的集群中,我們仍然需要引入控制平面分發路由轉發表。
三、網絡隔離
大規模的數據中心往往都會對外提供云計算服務,同一個物理集群可能會被拆分成多個小塊分配給不同的租戶(Tenant),因為二層網絡的數據幀可能會進行廣播,所以出于安全的考慮這些不同的租戶之間需要進行網絡隔離,避免租戶之間的流量互相影響甚至惡意攻擊。傳統的網絡隔離會使用虛擬局域網技術(Virtual LAN、VLAN),VLAN 會使用12 比特表示虛擬網絡ID,虛擬網絡的上限是4096 個。
4096 個虛擬網絡對于大規模的數據中心來說遠遠不夠,VxLAN 會使用24 比特的VNI 表示虛擬網絡個數,總共可以表示16,777,216 個虛擬網絡,這也就能滿足數據中心多租戶網絡隔離的需求了。
更多的虛擬網絡其實是VxLAN 帶來的好處,它不應該成為使用VxLAN 的決定性因素。VLAN 協議的擴展協議IEEE 802.1ad 允許我們在以太網幀中加入兩個802.1Q 的協議頭,兩個VLAN ID 組成的24 比特也可以表示16,777,216 個虛擬網絡,所以想要解決網絡隔離不是使用 VxLAN 或者Overlay 網絡的充分條件。
四、總結
目前的數據中心包含多個集群以及海量的物理機,Overlay 網絡是虛擬機和底層網絡設備之間的中間層,通過Overlay 網絡這一個中間層,我們可以解決虛擬機的遷移問題、降低二層核心網絡設備的壓力并提供更大規模的虛擬網絡數量。
在使用VxLAN 構成二層網絡中,虛擬機在不同集群、不同可用區和不同數據中心遷移后,仍然可以保證二層網絡的可靠性,這能夠幫助我們保證線上業務的可用性、提升集群的資源利用率、容忍虛擬機和節點的故障。
集群中虛擬機的規模可能是物理機是幾十倍,與物理機構成的傳統集群相比,虛擬機構成的集群包含的MAC 地址數量龐大,網絡設備很難承擔如此大規模的二層網絡請求,Overlay 網絡通過IP封包和控制平面可以減少集群中的MAC 地址表項和ARP 請求。
VxLAN 的協議頭使用24 位的VNI 表示虛擬網絡,總共可以表示1600 萬的虛擬網絡,我們可以為不同的虛擬網絡單獨分配網絡帶寬,滿足多租戶的網絡隔離需求。
需要注意的是,Overlay 網絡只是一種在物理網絡上的虛擬網絡,使用該技術并不能直接解決集群中的規模性等問題,而VxLAN 也不是組建Overlay 網絡的唯一方法,在不同場景中我們可以考慮使用不同的技術,例如:NVGRE、GRE 等。