溫馨提示×

Ubuntu Overlay網絡的工作原理是什么

小樊
48
2025-10-05 14:05:08
欄目: 智能運維

Ubuntu Overlay網絡的工作原理
Overlay網絡是一種基于底層物理網絡(Underlay)構建的虛擬邏輯網絡,其核心目標是通過網絡虛擬化技術,在不修改底層物理網絡架構的前提下,實現跨主機、跨子網的容器或虛擬機通信。Ubuntu系統中的Overlay網絡主要依賴VXLAN(Virtual Extensible LAN)等隧道技術,結合控制平面數據平面的協同工作,為容器提供隔離的虛擬網絡環境。

1. 核心組件

Overlay網絡的運行依賴三大核心組件的協同:

  • 邊緣設備(VTEP):負責數據報文的封裝解封,是Overlay網絡與Underlay網絡的連接點。在Ubuntu環境中,VTEP通常由軟件交換機(如Open vSwitch)Docker引擎實現——例如,當容器發送數據時,VTEP會將容器內部的以太網幀封裝成VXLAN報文(添加外層IP頭部和UDP頭部);當接收Underlay網絡轉發的VXLAN報文時,VTEP會解封外層頭部,將原始以太網幀交付給目標容器。
  • 控制平面:負責虛擬網絡的管理與協調,包括網絡拓撲的建立、主機可達性信息的通告(如容器IP與VTEP地址的映射)、隧道端點的發現等。Ubuntu中的Overlay網絡(如Docker的overlay驅動)通常依賴**key-value數據庫(如Consul、Etcd)**作為控制平面——Docker守護進程會將網絡配置(如Overlay網絡的子網、網關、容器IP分配)同步到Consul中,各主機通過查詢Consul獲取其他主機的VTEP地址,實現跨主機的通信。
  • 數據平面:負責虛擬網絡中的數據轉發。Overlay網絡的數據轉發基于隧道技術——源主機的VTEP將容器數據封裝成VXLAN報文后,通過Underlay網絡(如物理以太網、IP網絡)轉發到目標主機的VTEP;目標主機的VTEP解封報文,將原始數據交付給目標容器。數據平面的轉發規則由控制平面動態維護,確保數據能夠準確到達目標。

2. 關鍵技術:VXLAN封裝

VXLAN是Ubuntu Overlay網絡最常用的隧道技術,其核心是通過MAC-in-UDP的封裝方式,將二層以太網幀轉換為可以在Underlay網絡中傳輸的三層報文。具體流程如下:

  • 封裝過程:當容器A(位于主機1,IP為10.0.0.2)向容器B(位于主機2,IP為10.0.0.3)發送數據時,主機1的VTEP(如Open vSwitch)會獲取容器B的MAC地址(通過ARP協議解析),然后將容器A的以太網幀(包含源MAC、目標MAC、IP等字段)封裝成VXLAN報文。封裝后的報文結構為:原始以太網幀(內層)→ VXLAN頭部(包含VNI,即VXLAN網絡標識符,用于區分不同的Overlay網絡)→ UDP頭部(目標端口為4789,VXLAN標準端口)→ 外層IP頭部(源IP為主機1的物理接口IP,目標IP為主機2的物理接口IP)→ 外層以太網頭部(源MAC為主機1的物理接口MAC,目標MAC為主機2的物理接口MAC)。
  • 解封過程:主機2的VTEP收到VXLAN報文后,首先驗證外層以太網頭部的目標MAC是否為自己的MAC地址(確保報文是發給自己的),然后解析UDP頭部(確認目標端口為4789),提取VXLAN頭部中的VNI(驗證是否屬于自己的Overlay網絡),最后解封原始以太網幀,根據幀中的目標MAC地址將數據交付給主機2上的容器B。

3. 網絡發現與配置同步

為了實現跨主機通信,Ubuntu Overlay網絡需要解決兩個關鍵問題:主機可達性(如何找到目標容器所在主機的VTEP地址)和網絡配置一致性(如何確保所有主機的Overlay網絡配置一致)。其解決流程如下:

  • 配置同步:Docker守護進程啟動時,會讀取/etc/docker/daemon.json中的cluster-store(如Consul地址)和cluster-advertise(如主機1的IP和端口)參數,將自身注冊到Consul中。當創建Overlay網絡(如docker network create -d overlay my_overlay)時,Docker會將網絡信息(如網絡ID、子網、網關、容器IP分配范圍)同步到Consul中,所有加入集群的主機都能從Consul獲取該網絡的配置信息。
  • 主機可達性:當主機1上的容器A要訪問主機2上的容器B時,容器A會發送ARP請求(詢問容器B的MAC地址)。主機1的Docker引擎會攔截該請求,查詢Consul獲取容器B所在主機(主機2)的VTEP地址(即主機2的物理接口IP),然后通過ICMP PingARP請求驗證主機2的可達性。若主機2可達,主機1的VTEP會將容器B的MAC地址與主機2的VTEP地址關聯起來,后續容器A發送給容器B的數據會直接通過VXLAN隧道轉發到主機2。

4. 數據轉發流程

Ubuntu Overlay網絡的跨主機數據轉發流程可分為以下步驟:

  1. 容器發送數據:容器A(主機1)向容器B(主機2)發送以太網幀,幀中包含目標容器B的MAC地址。
  2. VTEP封裝:主機1的VTEP收到容器A的數據,查詢本地MAC表(或通過控制平面獲?。┑玫饺萜鰾的VTEP地址(主機2的IP),將原始以太網幀封裝成VXLAN報文(添加VXLAN頭部、UDP頭部、外層IP頭部和以太網頭部)。
  3. Underlay轉發:封裝后的VXLAN報文通過Underlay網絡(如物理以太網)轉發到主機2的物理接口。
  4. VTEP解封:主機2的VTEP收到VXLAN報文,解封外層頭部,提取原始以太網幀,根據幀中的目標MAC地址將數據交付給主機2上的容器B。

通過上述機制,Ubuntu Overlay網絡實現了跨主機容器的通信,且容器之間仿佛處于同一局域網中,無需關心底層物理網絡的拓撲結構。這種架構不僅提高了網絡的靈活性和擴展性(如VXLAN支持1600萬個虛擬網絡標識符,遠超過傳統VLAN的4096個),還能與底層Underlay網絡解耦,便于網絡管理員統一管理物理與虛擬網絡。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女