Repository navigation
[Cisco][P200] Fix for the AgentAclTableGroupTrafficTest - #1904
Draft
itskittycisco wants to merge 1 commit into
Draft
itskittycisco wants to merge 1 commit into
itskittycisco wants to merge 1 commit into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pre-submission checklist
pip install -r requirements-dev.txt && pre-commit installpre-commit runSummary
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.

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.
Test Plan
Manually verified - VerifyDscpMarkingAndTtlAclTable