ARP代答和VXLAN配置
转发拓扑
创建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代答方案
总体拓扑
最终需求
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 |