fabric-tna
fabric-tna copied to clipboard
Consider decapsulating GTPU packets in the parser to reduce pipeline complexity
The current approach of maintaining two copies of inner/outer L4 headers adds annoying complexity and hogs PHV resources. An alternative approach is to resubmit packets that require decapsulation, and simply skip the outer headers in the parser. This will greatly simplify the pipeline and parser at the cost of reducing bandwidth, which should be ok given the heckin' fat maximum bandwidth of tofino. It is also currently unclear how much resubmit really reduces maximum bandwidth, and needs further investigation.
Or using parser value sets to match on IP dst and ingress port? Similarly to how we use the interface table for uplink traffic. If IP dst is the UPF one, and the ingress port matches an enb-facing one, and GTP header is valid, then store TEID in metadata and skip extracting GTP headers.