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地址。最终无论是二层报文还是三层报文都巧妙的转化成了三层报文。进而通过主机的路由进行相应处理。

 

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