You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[sidecar/pipeline] P4 cleanup and a return to 18 stages
*P4/sidecar pipeline changes*:
* Unify route_result_t struct for Router4/Router6 to prevent PHV liverange divergence
* Unify nexthop: replace separate nexthop_ipv4/nexthop_ipv6 with single nexthop (ipv6_addr_t) plus nexthop_is_v6 flag
* Add TTL compound key (idx, route_ttl_is_1) to route tables for TTL offload
- This includes Rust updates and a larger routing table for the compound key
* Add @pa_no_init pragmas for metadata fields to guard against compiler init bugs
* Add @pa_container_type("normal") pragmas for all ingress booleans and wider metadata fields to prevent mocha container corruption (whole-container writes clobbering neighboring fields)
* Extend @pa_container_type to egress bridge header fields and drop_reason
* Zero sc_pad at every sc_code write site (was uninitialized before)
* Bridge header now includes is_mcast_routed for CPU copy detection
*EgressFilter*:
* Moves EgressFilter from ingress to egress pipeline to free one ingress stage for NatEgressFilter
* Adds nat_egress_hit to bridge header to carry NAT state across TM boundary
* Control Plane: updates table path and match key (egress_port instead of ucast_egress_port)
*Egress MacRewrite*:
* Creates separate unicast_mac_rewrite and mcast_mac_rewrite instances of MacRewrite
* Unicast instance: rewrites src_mac only (dst_mac already correct from ARP/NDP)
* Multicast instance: derives dst_mac from group address per RFC 1112/2464
*Multicast Egress changes*:
* Checks egress_rid != 0 first to identify PRE-replicated packets
* Validates is_mcast_routed for CPU copies (egress_rid == 0 but routed to multicast)
* Drops any CPU copies with DROP_MULTICAST_CPU_COPY reason
*Counters*:
* Moves Unicast, MulticastLL, EgressDropPort, EgressDropReason counters from multicast to base
* Adds a Forwarded counter (for every packet copy that egresses the pipeline)
* Removes Egress counter (from ingress pipe, replaced by per-port counters)
* Removes MulticastDrop from MULTICAST_COUNTERS, as it's covered in general drop w/ reason
* Handles link-local multicast counting in both MULTICAST and non-MULTICAST paths
*Build*:
* Configures TOFINO_STAGES where there's 15 for base, 18 for multicast (the win!)
0 commit comments