Hi- I just moved my router VM from a bridge + virtio setup to using a VF (virtual function) on my Chelsio T520-LL-CR to improve performance. It’s working beautifully for the most part, but I have noticed two things that aren’t, both related to multicast.
First, when using dhcpcd to assign IPv6 addresses to my LAN VLAN interfaces, I get this spammed repeatedly on the console for both VLANs where I use prefix delegation: kernel: cxlv0.2: a looped back NS message is detected during DAD for [address]. Another DAD probes are being sent I was able to work around that (I think?) by setting "net.inet6.ip6.dad_count=0” in /etc/sysctl.conf (as hinted in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270859 talking about an mlx5 VF). Second, CARP no longer works. At all. I turned off the peer completely but the interfaces never came out of the BACKUP state. For now I have removed CARP from the setup. Both IPv6 address assignment and CARP were working correctly in the previous setup. Is the VF receiving its own multicast packets back from the PF or virtual switch in the T5? That would explain both issues. In any case, is there anything I can do about it? Both host and guest are FreeBSD 14-stable. In addition to the T5 VF the host passes through an em interface to the guest entirely. Config excerpts from both machines below. Any help/insight appreciated. Thanks! -John On the host I have: #/boot/loader.conf vmm_load="YES" hw.vmm.amdvi.enable="1" pptdevs="14/0/0” #em0 hw.cxgbe.tx_vm_wr=“1” #allow PF to talk to VF #/etc/rc.conf ifconfig_cxl0="up" vlans_cxl0="2 104" ifconfig_cxl0_2="inet ${ADDR2}/24" ifconfig_cxl0_2_ipv6="inet6 accept_rtadv auto_linklocal" ifconfig_cxl0_104="inet ${ADDR104}/24" iovctl_files="/etc/iov/cxl0.conf" #/etc/iov/cxl0.conf PF { device : cxl0 num_vfs : 1 } VF-0 { passthrough : true; } On the guest I have: #/boot/loader.conf if_cxgbev_load="YES" net.inet.ip.fw.default_to_accept=“1” #allow dhcp6 before ipfw ruleset is loaded #/etc/rc.conf ifconfig_cxlv0="up" vlans_cxlv0="2 98 103" ifconfig_cxlv0_2="inet ${MY_IP}/24" ifconfig_cxlv0_2_ipv6="inet6 auto_linklocal" # set from dhcpcd via prefix delegation #ifconfig_cxlv0_2_alias0="inet vhid 1 advskew ${MY_SKEW} pass ${PASS} alias 192.168.2.1/32" ifconfig_cxlv0_2_alias0="inet alias 192.168.2.1/32" #ifconfig_cxlv0_103="inet vhid 2 advskew ${MY_SKEW} pass ${PASS} 192.168.103.1/24" ifconfig_cxlv0_103="inet 192.168.103.1/24" #ifconfig_cxlv0_98="inet vhid 3 advskew ${MY_SKEW} pass ${PASS} 192.168.98.1/24" ifconfig_cxlv0_98="inet 192.168.98.1/24" ifconfig_cxlv0_98_ipv6="inet6 auto_linklocal" rtadvd_interfaces="cxlv0.2 cxlv0.98" dhclient_program="/usr/local/sbin/dhcpcd" #/etc/sysctl.conf net.inet.carp.preempt=1 net.inet6.ip6.dad_count=0 #/usr/local/etc/dhcpcd.conf duid persistent vendorclassid option classless_static_routes option interface_mtu option rapid_commit require dhcp_server_identifier slaac hwaddr allowinterfaces em0 waitip 4 waitip 6 nodelay timeout 10 interface em0 ia_na ia_pd 1/::/64 cxlv0.2/0/64/1 ia_pd 2/::/64 cxlv0.98/0/64/1