Host A:
sudo ip link add bond0 type bond
sudo ip link set dev bond0 type bond mode 4
sudo ip link set enp130s0f0 down
sudo ip link set enp130s0f0 master bond0
sudo ip link set enp130s0f0 up
sudo ip link set bond0 up
sudo ip link add link enp130s0f1 name enp130s0f1.690 type vlan id 690
sudo ip link set enp130s0f1.690 up
sudo ip addr add 30.0.0.2/24 dev bond0
sudo ip addr add 3000::2/64 dev bond0
ip link add vtep_500100 type vxlan id 500100 dstport 4789 local 30.0.0.2 nolearning
brctl addbr br_500100
brctl addif br_500100 vtep_500100
brctl stp br_500100 off
sudo ip link set vtep_500100 up
sudo ip link set br_500100 up
sudo ip addr add 100.0.0.2/24 dev br_500100
sudo ip addr add 100::2/64 dev br_500100
ip link add vtep_500101 type vxlan id 500101 dstport 4789 local 30.0.0.2 nolearning
brctl addbr br_500101
brctl addif br_500101 vtep_500101
brctl stp br_500101 off
sudo ip link set vtep_500101 up
sudo ip link set br_500101 up
sudo ip addr add 101.0.0.2/24 dev br_500101
sudo ip addr add 101::2/64 dev br_500101
echo "timeout 10;" > dhclient.conf
sudo ip -6 -j address
Host B:
sudo ip link add bond0 type bond
sudo ip link set dev bond0 type bond mode 4
sudo ip link set enp131s0f1 down
sudo ip link set enp131s0f1 master bond0
sudo ip link set enp131s0f1 up
sudo ip link set bond0 up
sudo ip link add link bond0 name bond0.69 type vlan id 69
sudo ip link set bond0.69 up
sudo ip addr add 69.0.0.2/24 dev bond0.69
sudo ip addr add 6900::2/64 dev bond0.69
sudo ip route add 69.0.1.0/24 via 69.0.0.1
sudo ip route add 6900:1::/64 via 6900::1
ip link add vtep_500100 type vxlan id 500100 dstport 4789 local 40.0.0.3 nolearning
brctl addbr br_500100
brctl addif br_500100 vtep_500100
brctl stp br_500100 off
sudo ip link set vtep_500100 up
sudo ip link set br_500100 up
sudo ip addr add 100.0.0.3/24 dev br_500100
sudo ip addr add 100::3/24 dev br_500100
sed -e "s/INTERFACESv4=\"\"/INTERFACESv4=\"bond0.69\"/g" -i /etc/default/isc-dhcp-server
sed -e "s/INTERFACESv6=\"\"/INTERFACESv6=\"bond0.69\"/g" -i /etc/default/isc-dhcp-server
/etc/init.d/isc-dhcp-server restart
send packet from host b to host A
from interface bond0.69 to enp130s0f1.690
SRC MAC cat /sys/class/net/enp131s0f1/address 0c:42:a1:88:0a:0d
expect to receive packet on client on interface enp130s0f1.690 with the following tcpdump_filter:
udp dst port 546 and ip6[44:2] == 25 and ip6[48:1] == 0x02
Describe the results you received:
the client is indeed receiving the reply packet, but the UDP payload mismatch (i.e. because an extra dhcpv6 option is seen on the client)
Describe the results you expected:
Packet should pass the tcpdump filter defined, there should be no UDP payload mismatch
Description
Steps to reproduce the issue: on canonical setup configure:
DUT: DUT mac address is: 1c:34:da:bd:fe:00 sudo config interface speed Ethernet128 10000 sudo config interface speed Ethernet124 10000 sudo config portchannel add PortChannel0001 sudo config portchannel member add PortChannel0001 Ethernet128 sudo config portchannel add PortChannel0002 sudo config portchannel member add PortChannel0002 Ethernet124 sudo config vlan add 69 sudo config vlan member add 69 PortChannel0002 sudo config vlan add 690 sudo config vlan member add 690 Ethernet252 sudo config interface ip add PortChannel0001 30.0.0.1/24 sudo config interface ip add PortChannel0001 3000::1/64 sudo config interface ip add Vlan69 69.0.0.1/24 sudo config interface ip add Vlan69 6900::1/64 sudo config interface ip add Vlan690 69.0.1.1/24 sudo config interface ip add Vlan690 6900:1::1/64 sudo config interface ip add Loopback0 10.1.0.32/32 sudo config vxlan add vtep101032 10.1.0.32 sudo config vxlan evpn_nvo add my-nvo vtep101032 sudo config vxlan map add vtep101032 69 76543 sudo config vxlan map add vtep101032 100 500100 sudo config vxlan map add vtep101032 101 500101 sudo config save -y sudo config vlan dhcp_relay add 690 69.0.0.2 sudo sonic-db-cli CONFIG_DB HGETALL "DHCP_RELAY|Vlan690" sudo sonic-db-cli CONFIG_DB HSET "DHCP_RELAY|Vlan690" "dhcpv6_servers@" "6900::2,6900::2" sudo config save -y sudo systemctl reset-failed dhcp_relay sudo systemctl restart dhcp_relay
Host A: sudo ip link add bond0 type bond sudo ip link set dev bond0 type bond mode 4 sudo ip link set enp130s0f0 down sudo ip link set enp130s0f0 master bond0 sudo ip link set enp130s0f0 up sudo ip link set bond0 up sudo ip link add link enp130s0f1 name enp130s0f1.690 type vlan id 690 sudo ip link set enp130s0f1.690 up sudo ip addr add 30.0.0.2/24 dev bond0 sudo ip addr add 3000::2/64 dev bond0 ip link add vtep_500100 type vxlan id 500100 dstport 4789 local 30.0.0.2 nolearning brctl addbr br_500100 brctl addif br_500100 vtep_500100 brctl stp br_500100 off sudo ip link set vtep_500100 up sudo ip link set br_500100 up sudo ip addr add 100.0.0.2/24 dev br_500100 sudo ip addr add 100::2/64 dev br_500100 ip link add vtep_500101 type vxlan id 500101 dstport 4789 local 30.0.0.2 nolearning brctl addbr br_500101 brctl addif br_500101 vtep_500101 brctl stp br_500101 off sudo ip link set vtep_500101 up sudo ip link set br_500101 up sudo ip addr add 101.0.0.2/24 dev br_500101 sudo ip addr add 101::2/64 dev br_500101 echo "timeout 10;" > dhclient.conf sudo ip -6 -j address
Host B: sudo ip link add bond0 type bond sudo ip link set dev bond0 type bond mode 4 sudo ip link set enp131s0f1 down sudo ip link set enp131s0f1 master bond0 sudo ip link set enp131s0f1 up sudo ip link set bond0 up sudo ip link add link bond0 name bond0.69 type vlan id 69 sudo ip link set bond0.69 up sudo ip addr add 69.0.0.2/24 dev bond0.69 sudo ip addr add 6900::2/64 dev bond0.69 sudo ip route add 69.0.1.0/24 via 69.0.0.1 sudo ip route add 6900:1::/64 via 6900::1 ip link add vtep_500100 type vxlan id 500100 dstport 4789 local 40.0.0.3 nolearning brctl addbr br_500100 brctl addif br_500100 vtep_500100 brctl stp br_500100 off sudo ip link set vtep_500100 up sudo ip link set br_500100 up sudo ip addr add 100.0.0.3/24 dev br_500100 sudo ip addr add 100::3/24 dev br_500100 sed -e "s/INTERFACESv4=\"\"/INTERFACESv4=\"bond0.69\"/g" -i /etc/default/isc-dhcp-server sed -e "s/INTERFACESv6=\"\"/INTERFACESv6=\"bond0.69\"/g" -i /etc/default/isc-dhcp-server /etc/init.d/isc-dhcp-server restart
send packet from host b to host A from interface bond0.69 to enp130s0f1.690
SRC MAC cat /sys/class/net/enp131s0f1/address 0c:42:a1:88:0a:0d
packet: 'Ether(src="0c:42:a1:88:0a:0d", dst="1c:34:da:bd:fe:00")/IPv6(src="6900::2", dst="6900:1::1")/UDP(sport=547, dport=547)/DHCP6_RelayReply(linkaddr="6900:1::1", peeraddr="fe80::e42:a1ff:fe75:197f")/DHCP6OptIAAddress()/DHCP6OptRelayMsg(message=[DHCP6_Advertise(trid=12345)/DHCP6OptDNSDomains(dnsdomains=["abc.com"])])'
expect to receive packet on client on interface enp130s0f1.690 with the following tcpdump_filter: udp dst port 546 and ip6[44:2] == 25 and ip6[48:1] == 0x02
Describe the results you received: the client is indeed receiving the reply packet, but the UDP payload mismatch (i.e. because an extra dhcpv6 option is seen on the client)
Describe the results you expected: Packet should pass the tcpdump filter defined, there should be no UDP payload mismatch
Additional information you deem important:
Output of
show version
:Attach debug file
sudo generate_dump
:sonic_dump_r-liger-02_20230209_143126.tar.gz