stratum/fabric-tna

ECMP hashing for GTP-U traffic should be TEID-based

Closed this issue · 2 comments

With the current design, when processing GTP-U packets, we use the inner headers to compute the hash used by the next action selector. GTP-U tunnels are used to aggregate traffic with the same QoS policy. Having flows belonging to the same GTP tunnel but taking different paths might have implications on the perceived QoS, e.g., different e2e latencies because one spine is more congested than the other. It looks like commercial routers from Cisco and Juniper use the outer Ipv4 header plus the TEID when hashing GTP-U traffic:
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipswitch_cef/configuration/15-mt/isw-cef-15-mt-book/isw-cef-load-balancing.html#concept_3C8798DC060D459F8605C293F4834D3A
https://www.juniper.net/documentation/en_US/junos/topics/concept/hash-computation-mpcs-understanding.html

For 5G NG-RAN, where the same GTP tunnel is used for different QoS policies, we could add the QoS Flow identifier (QFI) to the hash. Support for QFI is being added in #224. We can start by adding support for 4G (TEID only), 5G can come later.

Done in #232.