flannel網路的VXLAN及host gw

2022-03-04 10:37:50 字數 2647 閱讀 9871

flannel network

實現原理

flannel為每個主機提供獨立的子網,整個集群的網路資訊儲存在etcd上。對於跨主機的**,目標容器的ip位址,需要從etcd獲取。

先上圖,比較直觀:

步驟:(1)ip資料報被封裝並通過容器的eth0傳送。

(2)container1的eth0通過veth對與docker0互動並將資料報傳送到docker0。然後docker0**包。

(3)docker0確定container3的ip位址,通過查詢本地路由表到外部容器,並將資料報傳送到虛擬nic flannel0。

(4)flannel0收到的資料報被**到flanneld程序。 flanneld程序封裝了資料報通過查詢etcd維護的路由表並傳送資料報通過主機的eth0。

(5)資料報確定網路中的目標主機主機。

(6)目的主機的flanneld程序監聽8285埠,負責解封包。

(7)解封裝的資料報將**到虛擬nicflannel0。

(8)flannel0查詢路由表,解封包,並將資料報傳送到docker0。

(9)docker0確定目標容器並傳送包到目標容器。

在常用的vxlan模式中,涉及到上面步驟提到的封包和拆包,這也是flannel網路傳輸效率相對低的原因。

描述

vxlan是linux核心本身支援的一種網路虛擬化技術,是核心的乙個模組,在核心態實現封裝解封裝,構建出覆蓋網路,其實就是乙個由各宿主機上的flannel.1裝置組成的虛擬二層網路。

由於vxlan由於額外的封包解包,導致其效能較差,所以flannel就有了host-gw模式,即把宿主機當作閘道器,除了本地路由之外沒有額外開銷,效能和calico差不多,由於沒有疊加來實現報文**,這樣會導致路由表龐大。因為乙個節點對應乙個網路,也就對應一條路由條目。

下面重點說一下host-gw模式。

hostgw是最簡單的backend,它的原理非常簡單,直接新增路由,將目的主機當做閘道器,直接路由原始封包。

例如,我們從etcd中監聽到乙個eventadded事件subnet為10.1.15.0/24被分配給主機public ip 192.168.0.100,hostgw要做的工作就是在本主機上新增一條目的位址為10.1.15.0/24,閘道器位址為192.168.0.100,輸出裝置為上文中選擇的集群間互動的網絡卡即可。對於eventremoved事件,只需刪除對應的路由。

因為沒有了封包和拆包,host-gw的效能是最好的。

配置host-gw:(在etcd集群中任意節點)

host-gw雖然vxlan網路效能要強很多。,但是種方式有個缺陷:要求各宿主機node節點必須在同乙個二層網路中。

物理節點必須在同一網段中。這樣會使得乙個網段中的主機量會非常多,萬一發乙個廣播報文就會產生干擾。

在私有雲場景下,宿主機不在同一網段是很常見的狀態,所以就不能使用host-gw了。

#flnnel的vxlan模式有兩種:

vxlan: 原生的vxlan,即擴充套件的虛擬lan

directrouting:直接路由型

使用vxlan模式flanneld建立了乙個flannel.1介面,它是專門用來封裝隧道協議的

(1)配置vxlan模式:

修改後記得重啟flanneld

route -n  是沒有路由的,有乙個flannel.1網絡卡,通過flannel.1建立虛擬隧道通訊

(2)配置directrouting直接路由模式:((智慧型判定)推薦)

'}'修改後記得重啟flanneld

vxlan支援host-gw,如果兩個節點在同一網段時使用host-gw通訊,如果不在同一網段中,即 當前pod所在節點與目標pod所在節點中間有路由器,就使用vxlan這種方式,使用疊加網路。

結合了host-gw和vxlan,這就是vxlan的directrouting模式

flannel網路的VXLAN及host gw

vxlan是linux核心本身支援的一種網路虛擬化技術,是核心的乙個模組,在核心態實現封裝解封裝,構建出覆蓋網路,其實就是乙個由各宿主機上的flannel.1裝置組成的虛擬二層網路。由於vxlan由於額外的封包解包,導致其效能較差,所以flannel就有了host gw模式,即把宿主機當作閘道器,除...

flannel網路設定

目錄 flannel網路模式 vxlan 1.vxlan 在資料報外層封裝vxlan首部,進行傳輸 2.directrouting vxlan中的host gw模式 host gw host gateway 在主機的路由表中建立到其他主機的路由條目,從而實現容器網路跨主機通訊。udp 早期linux...

利用ODL建立VxLAN網路

說明 mininet1 192.168.1.209 mininet2 192.168.1.211 odl 192.168.1.217 為三颱虛機,在同一網段,其中odl虛機安裝了opendaylight boron sr3,mininet1和mininet2都安裝了mininet 1.讓minine...