calico 網絡模型pod如何收發報文

本文主要介紹calico作爲kubernetes網絡模型時,創建的pod內流量如何進出?

我們先看pod內的網絡狀況。

1,ip地址。在pod的有一個eth0接口,配置了地址。

2.再看路由表

可以看到有一條169.254.1.1的默認路由,以及一條明細路由。

我們先來回顧一下正常報文的收發原理:

針對二層報文,會先去查arp表,沒有arp表項,就會arp request廣播,進而來獲取目的mac,獲取後進行封裝發送。

針對三層報文,就會在arp表查網關的mac,沒有arp表項,就會發網關地址的arp request,獲取到網關mac後,封裝報文發送。

查詢arp表,可以查看到

但是我們在host主機上沒有看到有169.254.1.1的相關信息,那這個arp信息是如何獲取的呢?

回答:

       首先我們知道calico會創建一個veth-pair對,一端映射成了pod內的eth0, 另一端則在host主機上,caliXXXX。在caliXXXX設備上開啓了proxy-arp功能,即pod內eth0發出的arp-request到達caliXX後,直接回復的caliXX的mac地址。因此pod內無論發出的二層報文還是三層報文,即無論是去往同網段的pod,還是跨網段的pod,報文的目的mac都是對應caliXX的mac地址。最終無論是二層報文還是三層報文都巧妙的轉化成了三層報文。進而通過主機的路由進行相應處理。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章