[golden_config]: enable SWSS ZMQ on T2 and DRH topologies#26043
[golden_config]: enable SWSS ZMQ on T2 and DRH topologies#26043deepak-singhal0408 wants to merge 1 commit into
Conversation
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
e2a8ffd to
eac3176
Compare
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Inject SYSTEM_DEFAULTS|swss_zmq|status=enabled into the golden config for the T2 family (t2 chassis, pizzabox, t2_single_node/UT2, lt2, ft2) and the disaggregated Regional Hub family (lrh, urh, drh), for both single-asic (top-level) and multi-asic (per-asic namespace) DUTs. The injection model is selected purely by multi_asic.is_multi_asic(), so any multi-asic member of either family lands the entry in each asicN namespace identically. Signed-off-by: Deepak Singhal <deepsinghal@microsoft.com>
eac3176 to
09940aa
Compare
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
T2 Elastictest failure — root cause (fix-ordering)The T2 check fails on teardown LogAnalyzer, all matches being the same fpmsyncd error: Why: this PR enables the route-perf ZMQ producer (fpmsyncd) end-to-end via The mechanism is platform-independent — same producer/consumer code path on real HW T2 — so this is not a KVM/vs-only artifact and shouldn't be masked with a LogAnalyzer ignore or a vs-only gate. In-flight consumer redesign that resolves it (burst-coalesced route ingress):
Suggestion: sequence this enablement to land after the above consumer PRs are merged and present in the target T2/DRH baseline images. |
Description of PR
Summary: Re-enable SWSS ZMQ on all T2 and DRH (disaggregated Regional Hub) topologies by injecting
SYSTEM_DEFAULTS|swss_zmqstatus=enabledinto the golden config generated bygenerate_golden_config_db.py.ZMQ was globally disabled in the golden-config path by sonic-mgmt PR 25083, which removed the old
update_zmq_config()that wrote the now-removedDEVICE_METADATA|localhost|orch_northbond_route_zmq_enabledleaf. The image-side knob has since been consolidated into a singleSYSTEM_DEFAULTS|swss_zmqentry (sonic-buildimage 27674, sonic-swss 4630, sonic-sairedis 1922). This PR selectively re-enables ZMQ for the route-scaling roles (T2 family and disaggregated Regional Hub) using the new consolidated schema. The singleswss_zmqknob drives BOTH the northbound (fpmsyncd ↔ orchagent ROUTE) and southbound (orchagent ↔ syncd SAI) route ZMQ channels.Fixes # (N/A — internal test-infra follow-up; no GitHub issue)
Type of change
Back port request
Tracking issue/work item for backport/cherry-pick request: N/A — not backported, master only.
Approach
What is the motivation for this PR?
ZMQ is the route-performance datapath between fpmsyncd/orchagent/syncd and is required for T2-scale route programming. It was turned off in the golden-config path while the northbound and southbound knobs were consolidated into a single
SYSTEM_DEFAULTS|swss_zmqentry. Now that the consolidated schema is in the image, this restores ZMQ for all T2 topologies (T2 chassis, pizzaboxes, UT2, LT2, FT2) and the disaggregated Regional Hub topologies (LRH, URH, DRH tgen route-convergence), covering both single-ASIC and multi-ASIC platforms.How did you do it?
Added
update_swss_zmq_config()togenerate_golden_config_db.py, called fromgenerate()right afterupdate_zebra_nexthop_config(). Behavior:t2/lrh/urh/drh— covers the T2 family (t2,ft2,lt2,t2_single_node/UT2) and the DRH family (lrh_min,urh_min,drh_tgen_route_conv).device_info.is_supervisor()): they hold no BGP sessions and do no per-ASIC route programming, so the ZMQ knob does not apply.multi_asic.is_multi_asic(), independent of topo family, so any current or future multi-ASIC member of either family is handled identically:asic{N}for N inrange(multi_asic.get_num_asics())) and setSYSTEM_DEFAULTS|swss_zmq|status=enabledunder each namespace, because the ZMQ channels run per ASIC and the entry must land in each ASIC's CONFIG_DB.multi_asic.get_num_asics()rather than the module'snum_asicsargument, which is not passed on the generaldeploy-mggolden-config path.How did you verify/test it?
Unit-level (offline, monkeypatched
multi_asic):swss_zmqinjected underasic0/asic1; siblingFEATUREandDEVICE_METADATAtables untouched.tunnel_qos_remappreserved.py_compileandflake8 --max-line-length=120clean.Multi-ASIC CONFIG_DB injection on a KVM T2 chassis (
vms-kvm-t2, topot2_2lc_min_ports-masic; 2 line cards x 2 ASIC + supervisor):deploy-mg(config load_minigraph --override_config -y) applied withfailed=0on all three DUTs, soSYSTEM_DEFAULTS|swss_zmqpasses YANG validation.swss_zmq status=enabledunderasic0andasic1;DEVICE_METADATA/FEATUREnot corrupted.SYSTEM_DEFAULTS|swss_zmq -> status=enabled.swss_zmqin its golden config or CONFIG_DB, confirming the supervisor guard.End-to-end ZMQ datapath on a
masternightly VS image (master.1160429, which carries the image-side consolidation), single-ASIC branch:SYSTEM_DEFAULTS|swss_zmq -> status=enabled.orchagent:/usr/bin/orchagent -d /var/log/swss -b 1024 -z zmq_sync -m ...syncd:/usr/bin/syncd -u -z zmq_sync -B null -l -p .../sai.profile ...swss_zmqentry emitted by this PR drives BOTH orchagent and syncd onto the ZMQ route datapath (-z zmq_sync).masterorchagent.shreads.swss_zmqfrom the per-namespaceSWSS_VARS; the202605image predates this, which is why the-zproof is shown onmaster.The multi-ASIC run proves the per-ASIC CONFIG_DB injection; the
masterrun proves the consolidated knob drives the orchagent/syncd ZMQ datapath.orchagent.sh/syncdreadswss_zmqper namespace identically, so multi-ASIC per-ASIC-z zmq_synccomposes from the two.Any platform specific information?
Applies to the T2 and DRH (disaggregated Regional Hub) route-scaling topologies, single- and multi-ASIC. Chassis supervisors are excluded. Not backported — master only.
Supported testbed topology if it's a new test case?
N/A — test-infrastructure change, not a new test case.
Documentation
N/A