16、網絡--實驗四(搭建多播模式VXLAN網絡)
這個實驗和前面一個非常相似,只不過主機之間不是點對點的連接,而是通過多播組成一個虛擬的整體。最終的網絡架構也很相似(為了簡單圖中只有兩個namespace,但這個模型可以容納多個主機組成 vxlan 網絡):
1) NS01刪除vxlan0配置
2) NS02刪除vxlan0配置
3) vxlan0配置模板
這裏最重要的參數是 group 239.1.1.1 表示把 vtep 加入到這個多播組。關於多播的原理和使用不是這篇文章的重點,這裏選擇的多播 IP 地址也沒有特殊的含義,關於多播的內容可以自行了解。
4) NS01 vxlan0配置
5) NS02 vxlan0配置
默認表項的 dst 字段的值變成了多播地址 239.1.1.1,而不是之前對方的 VETP 地址。同理給所有需要通信的節點進行上述配置,可以驗證他們能通過 10.20.1.0/24 網絡互相訪問。
1. 發送 ping 報文到 192.168.1.3,查看路由表,報文會從 vxlan0 發出去
2. 內核發現 vxlan0 的 IP 是 192.168.1.3/24,和目的 IP 在同一個網段,所以在同一個局域網,需要知道對方的 MAC 地址,因此會發送 ARP 報文查詢
3. ARP 報文源 MAC 地址為 vxlan0 的 MAC 地址,目的 MAC 地址為全 1 的廣播地址
4. vxlan 根據配置(VNI 42)添加上頭部
5. 因為不知道對方 vtep 在哪臺主機上,根據配置,vtep 會往多播地址 239.1.1.1 發送多播報文
6. 多播組中所有的主機都會受到這個報文,內核發現是 vxlan 報文,會根據 VNI 發送給對應的 vtep
7. vtep 去掉 vxlan 頭部,取出真正的 ARP 請求報文。同時 vtep 會記錄 <源 MAC 地址 - vtep 所在主機 IP 地址> 信息到 fdb 表中
8. 如果發現 ARP 不是發送給自己的,直接丟棄;如果是發送給自己的,則生成 ARP 應答報文
9. 應答報文目的 MAC 地址是發送方 vtep 的 MAC 地址,而且 vtep 已經通過源報文學習到了 vtep 所在的主機,因此會直接單播發送給目的 vtep。因此 vtep 不需要多播,就能填充所有的頭部信息
10. 應答報文通過 underlay 網絡直接返回給發送方主機,發送方主機根據 VNI 把報文轉發給 vtep,vtep 解包取出 ARP 應答報文,添加 arp 緩存到內核。並根據報文學習到目的 vtep 所在的主機地址,添加到 fdb 表中
11. vtep 已經知道了通信需要的所有信息,後續 ICMP 的 ping 報文都是單播進行的
16、網絡--實驗四(搭建多播模式VXLAN網絡)