Re: [PATCH] seg6: using DSCP of inner IPv4 packets

From: Ahmed Abdelsalam
Date: Thu Aug 06 2020 - 02:43:16 EST


Hi David,

SRv6 as defined in [1][2] does not mandate that the hop_limit of the outer IPv6 header has to be copied from the inner packet.

The only thing that is mandatory is that the hop_limit of the inner packet has to be decremented [3]. This complies with the specification defined in the Generic Packet Tunneling in IPv6 [4]. This part is actually missing in the kernel.

For the hop_limit of the outer IPv6 header, the other SRv6 implementations [5][6] by default uses the default ipv6 hop_limit. But they allow also to use a configurable hop_limit for the outer header.

In conclusion the hop limit behavior in this patch is intentional and in my opnion correct.

If you agree I can send two patches to:
- decrement hop_limit of inner packet
- allow a configurable hop limit of outer IPv6 header


[1] https://tools.ietf.org/html/rfc8754
[2] https://tools.ietf.org/html/draft-ietf-spring-srv6-network-programming-16
[3] https://tools.ietf.org/html/draft-ietf-spring-srv6-network-programming-16#section-5
[4] https://tools.ietf.org/html/rfc2473#section-3.1
[5]https://github.com/FDio/vpp/blob/8bf80a3ddae7733925a757cb1710e25776eea01c/src/vnet/srv6/sr_policy_rewrite.c#L110
[6] https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k-r6-6/segment-routing/configuration/guide/b-segment-routing-cg-asr9000-66x/b-segment-routing-cg-asr9000-66x_chapter_011.html#id_94209


On 06/08/2020 02:40, David Miller wrote:
From: Ahmed Abdelsalam <ahabdels@xxxxxxxxx>
Date: Tue, 4 Aug 2020 07:40:30 +0000

This patch allows copying the DSCP from inner IPv4 header to the
outer IPv6 header, when doing SRv6 Encapsulation.

This allows forwarding packet across the SRv6 fabric based on their
original traffic class.

Signed-off-by: Ahmed Abdelsalam <ahabdels@xxxxxxxxx>

You have changed the hop limit behavior here and that neither seems
intentional nor correct.

When encapsulating ipv6 inside of ipv6 the inner hop limit should be
inherited. You should only use the DST hop limit when encapsulating
ipv4.

And that's what the existing code did.