Messages in this thread | | | Date | Wed, 25 Apr 2018 13:03:04 -0400 (EDT) | Subject | Re: [net-next v3] ipv6: sr: Compute flowlabel for outer IPv6 header of seg6 encap mode | From | David Miller <> |
| |
From: Ahmed Abdelsalam <amsalam20@gmail.com> Date: Tue, 24 Apr 2018 20:23:16 +0200
> ECMP (equal-cost multipath) hashes are typically computed on the packets' > 5-tuple(src IP, dst IP, src port, dst port, L4 proto). > > For encapsulated packets, the L4 data is not readily available and ECMP > hashing will often revert to (src IP, dst IP). This will lead to traffic > polarization on a single ECMP path, causing congestion and waste of network > capacity. > > In IPv6, the 20-bit flow label field is also used as part of the ECMP hash. > In the lack of L4 data, the hashing will be on (src IP, dst IP, flow > label). Having a non-zero flow label is thus important for proper traffic > load balancing when L4 data is unavailable (i.e., when packets are > encapsulated). > > Currently, the seg6_do_srh_encap() function extracts the original packet's > flow label and set it as the outer IPv6 flow label. There are two issues > with this behaviour: > > a) There is no guarantee that the inner flow label is set by the source. > b) If the original packet is not IPv6, the flow label will be set to > zero (e.g., IPv4 or L2 encap). > > This patch adds a function, named seg6_make_flowlabel(), that computes a > flow label from a given skb. It supports IPv6, IPv4 and L2 payloads, and > leverages the per namespace 'seg6_flowlabel" sysctl value. > > The currently support behaviours are as follows: > -1 set flowlabel to zero. > 0 copy flowlabel from Inner paceket in case of Inner IPv6 > (Set flowlabel to 0 in case IPv4/L2) > 1 Compute the flowlabel using seg6_make_flowlabel() > > This patch has been tested for IPv6, IPv4, and L2 traffic. > > Signed-off-by: Ahmed Abdelsalam <amsalam20@gmail.com>
Applied.
Please submit a patch which adds appropriate documentation for this new sysctl to Documentation/networking/ip-sysctl.txt
Thank you.
| |