VPP支持VXLAN和ARP代答

ARP代答和VXLAN配置

转发拓扑

image.png

创建loopback口做vtep地址

ip route add 100.69.23.2/32 via 100.69.12.64
ip route add 100.69.23.2/32 via 100.69.12.80

create loopback interface
set int ip address loop0 100.69.23.1/32
set int state loop0 up

创建bridge-domain

create bridge-domain 10 learn 1 forward 1 uu-flood 1 flood 1 arp-term 1

创建vxlan隧道并关联bridge-domain

create vxlan tunnel src 100.69.23.1 dst  100.69.23.2 vni 1000 decap-next l2
set interface l2 bridge vxlan_tunnel0 10

创建和HOST直连的veth并关联bridge-domain

create host-interface name vpp1out
set int state host-vpp1out up
set interface l2 bridge host-vpp1out 10

创建静态ARP表项

set bridge-domain arp entry 10 192.168.1.2 ff:ff:ee:ee:ff:ff

ARP请求验证

[图片上传失败...(image-1332b8-1661245487986)]

其他

如果VPP中没有arp信息,则按照协议标准广播

L2网关以及ARP代答方案

总体拓扑

image.png

最终需求

10.1.0.102能够ping通10.1.0.5, 二层通信,二层使用正确的源MAC和目的MAC。

报文转发过程

ARP请求

vm不知道10.1.0.5的mac地址是多少,所以会发送arp请求,arp请求的目的mac是ff:ff:ff:ff:ff:ff,会通过vxlan隧道发送到VPP中,vpp配置了arp代答,会通过vxlan隧道返回arp响应。
经过此arp请求响应,在TEST-HOST的mac地址表中,会增加一行,ff:ff:ee:ee:ff:ff 对应出口vxlan-interface。在VPP的mac地址表中会有11:22:33:44:55:66对应出口vxlan-interface-02。

MAC地址学习

经过上述arp请求。vm知道了10.1.0.5的mac地址是ff:ff:ee:ee:ff:ff, 而且TEST_HOST的mac地址表中也有了ff:ff:ee:ee:ff:ff 对应vxlan-interface。发送的第一个ICMP报文会加上vxlan头部,以单播的方式从vxlan隧道发送到VPP中,注意这个过程不会泛洪,因为有mac地址表。
第一个ICMP request发送到VPP中以后,VPP从bridge-domain关联的除了入接口以外的所有接口泛洪该ICMP request。因为VPP的mac地址表中没有ff:ff:ee:ee:ff:ff的匹配项。
BCC收到ICMP request以后,发送ICMP reply。报文经过VPP, VPP就可以学习到MAC地址的出接口对应vxlan-interface-01。有了该mac地址表项,后面的报文就不用泛洪。
最终VPP的mac地址表会有如下配置:

MAC地址 Interface
ff:ff:ee:ee:ff:ff vxlan-interface-01
11:22:33:44:55:66 vxlan-interface-02
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容