macvlan容器網絡方案
macvlan是Linux自帶的虛擬網卡,基於同一個底層網卡的macvlan設備會形成一個邏輯的交換機,提供交換能力,性能優化linux bridge。
macvlan方案
macvlan數據面如下:
同節點容器通信
容器A訪問容器B,數據面流程如下:
- 容器A和容器B在相同網絡,直接發送
- 容器A向容器B發送ARP請求
- macvlan交換機flood ARP請求
- 容器B收到ARP請求後,會響應ARP請求
- eth0接口收到ARP請求後,向節點網絡發送ARP請求,但是並沒有節點響應
- macvlan交換機轉發ARP響應給容器A
- 容器A接收到ARP響應,封裝二層報文併發出
- macvlan交換機直接轉發報文到容器B
- 容器B接收到報文
跨節點容器通信
容器A訪問容器D,數據面流程如下:
- 容器A和容器D在相同網絡,直接發送
- 容器A向容器D發送ARP請求
- macvlan交換機flood ARP請求
- 容器B收到ARP請求後,不會響應ARP請求
- eth0接口收到ARP請求後,向節點網絡發送ARP請求
- Host2接收到ARP請求
- macvlan交換機flood該ARP請求
- 容器D接收到ARP請求,並響應
- macvlan交換機轉發ARP響應到eth0
- Host1接收到ARP響應
- macvlan交換機轉發ARP請求給容器A
- 容器A接收到ARP響應,封裝二層報文併發出
- 容器A封裝報文二層頭,併發送
- macvlan交換機轉發報文到eth0口
- Host2接收此報文,macvlan交換機轉發報文給容器D
- 容器D接收到報文
macvlan方案總結
- 典型的大二層網絡方案,依賴節點網絡支持廣播功能
- 純二層容器網絡方案,性能幾乎與host網絡持平