Skip to content

[Cisco][P200] Fix for the AgentAclTableGroupTrafficTest - #1904

Draft
itskittycisco wants to merge 1 commit into
meta:mainfrom
itskittycisco:p200_aclgrp_traffictest
Draft

itskittycisco wants to merge 1 commit into
meta:mainfrom
itskittycisco:p200_aclgrp_traffictest

Conversation

@itskittycisco

Copy link
Copy Markdown

Pre-submission checklist

  • I've ran the linters locally and fixed lint errors related to the files I modified in this PR. You can install the linters by running pip install -r requirements-dev.txt && pre-commit install
  • pre-commit run

Summary

This is a fix for the test to make it compatible for port RIF instead of SVI - AgentAclTableGroupTrafficTests.cpp for VerifyDscpMarkingAndTtlAclTable.

The test was written for SVI. Ebro keeps the original SVI behavior. The P200-only traffic and count changes run only when the ASIC is P200.
grouptraffictest-flow

Destination and neighbor were on the wrong subnet. On P200, interface 2000 is a port RIF. The virtual default VLAN RIF is created first and takes 1::/64, so interface 2000 is programmed as 2::/64. An SVI still has 1::/64. The test used fixed addresses 1::10 and 1.0.0.10, so the traffic missed the port-RIF neighbor. The fix reads the prefix programmed on this interface and places hosts 10 through 14, the destination (host 10), and the source (host 1) on that prefix. Host 1 keeps the source off the interface address when that address is host 0.

The frame was tagged and addressed as if it were on an SVI. The source MAC was taken from the VLAN, and the frame carried the test VLAN tag. On a port RIF that tag is the virtual CPU RIF, and the punt shows up on port 0, which is not a configured port. The fix sends the port-RIF frame untagged and uses the interface MAC. An SVI still uses the VLAN MAC and the VLAN tag.

The DSCP 0 frame never reached the ACL lookup. On a port RIF the destination MAC has to be the router MAC. With the host MAC, the frame is dropped for no L3 termination before the DSCP 26 lookup. The fix programs the neighbor as the interface MAC for the DSCP 0 send, then puts the host MAC back before the DSCP 26 send.

The DSCP 0 packet returns once, and it misses the TTL entry. A port RIF does not loop this packet the way the SVI does. The send uses hop limit 2 and is injected out the second master port, which bypasses the pipeline, so the injected copy itself is not a lookup. It returns once as hop limit 1 with DSCP 26, and that return is the DSCP count. The next transmit is dropped because the hop limit is 1. Hop limit 2 also misses the TTL entry, which matches 64 and 128, so the first TTL increase is 0. The first DSCP increase stays the original single-pass count.

The DSCP 26 packet is counted once. This send uses the host neighbor again and hop limits 64 and 128. On a port RIF the routed copy is dropped, so P200 adds one pass to the DSCP counter. Ebro still loops that frame and adds two passes. The TTL increase in this phase is the same on both ASICs, because hop limits 64 and 128 match the TTL entry.
Front-panel traffic left the ECMP port before the source MAC was learned. The fix learns the source MAC on the ECMP transmit port before a front-panel send.

Result-ctr

Test Plan

Manually verified - VerifyDscpMarkingAndTtlAclTable

@meta-cla meta-cla Bot added the CLA Signed label Nov 3, 2026
@github-actions github-actions Bot added the cisco label Nov 3, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant