[vpp][testbed] Disable virtio ctrl_vlan on VPP KVM DUTs#26035
[vpp][testbed] Disable virtio ctrl_vlan on VPP KVM DUTs#26035aaronber0614 wants to merge 1 commit into
Conversation
qemu virtio-net defaults ctrl_vlan=on, which drops all VLAN-tagged frames before they reach VPP (VPP/DPDK registers no VLANs with the virtio device). Add -global virtio-net-pci.ctrl_vlan=off for asic_type==vpp DUTs so tagged L3 sub-interface traffic is delivered; fixes VLAN sub-port RIF forwarding on t1-lag-vpp. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Aaron Bernardino <aaronber@microsoft.com>
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
lolyu
left a comment
There was a problem hiding this comment.
✅ What's Good
Tightly-scoped testbed fix. The {% if asic_type == 'vpp' %} gate means non-VPP DUTs get byte-identical libvirt XML — zero blast radius. The inline comment clearly explains why (VPP/DPDK drives the NIC directly and never registers VLANs on the virtio control plane, so qemu's default ctrl_vlan=on silently drops tagged frames before they reach VPP), which is exactly the context a future reader needs.
📝 Review Findings
⚠️ Major
None.
📝 Minor
- The
qemu:commandline/qemu:argelements require thexmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0"namespace on the root<domain>element. Please confirm the domain template already declares it (it must, if any otherqemu:override exists) — otherwise libvirt rejects the XML at define time. Worth a quick sanityvirsh defineon a VPP KVM DUT if not already covered by your verification. -global virtio-net-pci.ctrl_vlan=offapplies to all virtio-net-pci devices on the domain, not just the dataplane NICs (mgmt included). That's harmless here (mgmt doesn't rely on the guest virtio VLAN filter), but noting it since it's a global, not per-device, override.
Recommendations
- Confirm the
qemuXML namespace is declared on<domain>and that a VPP DUT actually boots with this template (your tagged-vs-untagged counter test covers the functional side).
Status
✅ Approved with suggestions — correct, VPP-gated, well-documented. Just verify the qemu namespace/define step if not already done.
|
Thanks @lolyu! Both points addressed: 1. qemu namespace - confirmed present. The 2. |
Why I did it
On VPP DUTs, the qemu virtio-net-pci NICs default to ctrl_vlan on and drop every VLAN-tagged frame before it reaches VPP or DPDK (which registers no VLANs). As a result, L3 sub-interface RIFs never work on the KVM testbed, so the iface_loopback_action test cannot pass for sub-port RIFs.
Feature tracking issue: sonic-net/sonic-buildimage#25788
How I did it
For asic_type equal to vpp DUTs only, add "-global virtio-net-pci.ctrl_vlan=off" via the qemu commandline in sonic.xml.j2, with an explanatory comment. There are no resource changes, and non-VPP DUTs are unaffected.
How to verify it
On a VPP KVM DUT, run a tagged versus untagged counter test: before the change, tagged frames do not arrive at VPP; after the change, they do. Confirm non-VPP DUTs are unchanged.
Which release branch to backport (provide reason below if selected)
None.
Description for the changelog
Disable virtio ctrl_vlan on VPP KVM DUTs so VLAN-tagged frames reach VPP.
Part of sonic-net/sonic-buildimage#25788.
PR series (landing order)
Tracking issue: sonic-net/sonic-buildimage#25788