So in investgiating this further, there is a further problem.
I’ve checked on 4 different linux boxes with 4 different network cards.
Linux by default offloads TX checksumming on a lot of network cards.
If you originate a packet with a microsid and no SRH – and the linux
box offloads the checksum generation – the checksum generated by the
NIC will be incorrect – and when the packet arrives at the end host –
if that end host is running RX checksumming – the checksum will fail
and the packet will be dropped.
If you disable TX checksumming – the kernel will have no way to tell
if the packet is an Ipv6 or a microsid packet, it will therefore use
the DA – and generate an incorrect checksum. Again – if RX
checksumming is enabled on the receiving end point – the packet will
get dropped.
Effectively this does NOT just affect middle boxes – it effects
anything generating a packet directed to a microsid that either
offloads the tx to hardware (whichi will have no clue this is a
microsid) or in the alternative is generating tx checksums itself via
kernel mechanisms that will treat these packets as standard Ipv6
packets.
This is broken – severely broken.
Andrew
*
*
*
Internal All Employees
From: *spring <spring-boun...@ietf.org> on behalf of Francois Clad
<fclad.i...@gmail.com>
*Date: *Thursday, 4 April 2024 at 14:49
*To: *Joel Halpern <jmh.dir...@joelhalpern.com>
*Cc: *SPRING WG List <spring@ietf.org>, Robert Raszuk <rob...@raszuk.net>
*Subject: *Re: [spring] C-SIDs and upper layer checksums
(draft-ietf-spring-srv6-srh-compression)
Some people who received this message don't often get email from
fclad.i...@gmail.com. Learn why this is important
<https://aka.ms/LearnAboutSenderIdentification>
CAUTION: This email has originated from a free email service commonly
used for personal email services, please be guided accordingly
especially if this email is asking to click links or share information.
Hi all,
Section 6.5 of draft-ietf-spring-srv6-srh-compression specifies how
an SR source node originating a packet with an upper layer checksum
determines the Destination Address for use in the IPv6 pseudo-header.
As a co-author, I’d say that the current text of 6.5 is good.
This text is aligned with RFC 8200. It only indicates how the text in
Section 8.1 of RFC 8200 applies to the SIDs of
draft-ietf-spring-srv6-srh-compression. This is necessary since RFC
8200 does not specify the format nor behavior of any source routing
scheme.
Thanks,
Francois
On 4 Apr 2024 at 00:10:55, Joel Halpern <jmh.dir...@joelhalpern.com>
wrote:
I can not speak to the "norm" for other working groups. The
SPRING charter is very specific about what we have to do if we
want to change an underlying protocol. We have to go back to the
WG which owns that protocol.
6man gets to decide if the change is acceptable, and if it is
acceptable how it is to be represented. SPRINGs job is to make
sure we are asking the question we intend.
Yours,
Joel
On 4/3/2024 6:05 PM, Robert Raszuk wrote:
Ok Joel,
Thank you for this clarification.
To me the actual spirit of RFC8200 8.1 is to say that it is
ok to compute the checksum by the src such that it comes out
right at the final destination.
But I guess we can have different opinions about that.
But what I find specifically surprising here is that it is a
norm in IETF to have new specifications defining protocol
extensions and their behaviour and never go back to the
original protocol RFC to check if this is ok or not. If that
would not be a normal process I bet we would still be using
classful IPv4 routing all over the place.
Regards,
Robert
On Wed, Apr 3, 2024 at 11:28 PM Joel Halpern
<j...@joelhalpern.com> wrote:
The concern with regard to the text that the chairs are
asking about is not about intermediate nodes verifying
the checksum. The text does not talk aabout that, so we
are not asking about that.
But, the text in 8200 specifies how the originating node
is to compute the upper layer checksum. It doesn't say
"do whatever you need to do to make the destination come
out right". It provides specific instructions. Yes, it
is understandable that those instructions do not cover
the compressed container cases. Which is why the
compression document specifies changes to those procedures.
Thus, we need to ask 6man how they want to handle the
change in the instructions in 8200.
the question we are asking SPRING is whether there is any
clarification people want to the text in the compression
draft before we send the question over to 6man.
Yours,
Joel
On 4/3/2024 5:15 PM, Robert Raszuk wrote:
Hi Joel,
My interpretation of text from RFC8200 is that it
allows discrepancy between the header and the upper
layer checksum as long as final packet's destination
sees the correct one.
The last condition is met.
So I see no issue.
Sure RFC8200 does not talk about SRH nor cSIDs, but
provides a hint on how to handle such future situations.
With that being said I would like to still understand
what real problem are we hitting here ...
Kind regards,
Robert
On Wed, Apr 3, 2024 at 11:09 PM Joel Halpern
<j...@joelhalpern.com> wrote:
There are two cases covered in section 6.5 of the
compression draft that appear to be at variance
with secton 8.1 of RFC 8200.
First, if the final destination in the routing
header is a compressed container, then the
ultimate destination address will not be the same
as the final destination shown in the routing header.
Second, if a uSID container is used as the
destination address and no SRH is present, then
in addition to the above problem there is no
routing header to trigger the behavior described.
Yours,
Joel
On 4/3/2024 4:22 PM, Robert Raszuk wrote:
Hi Alvaro,
Section 6.5 of
draft-ietf-spring-srv6-srh-compression
describes the
behavior when an originating node inside
an SRv6 domain creates a
packet with a C-SID as the final
destination. _This description differs
from the text in Section 8.1 of RFC8200._
I would like you to clarify the above
statement - specifically of the last sentence.
Reason for this that after looking at both
drafts I find section 6.5 of the subject
draft to be exactly in line with RFC8200
section 8.1 especially with the paragraf
which says:
* If the IPv6 packet contains a
Routing header, the Destination
Address used in the pseudo-header is that of
the final
destination. At the originating node, that
address will be in
the last element of the Routing
header; at the recipient(s),
that address will be in the
Destination Address field of the
IPv6 header.*
So before we dive into solutions (as Andrew
has already provided a few of) I think we
should first agree on what precise problem
are we solving here ?
Many thx,
Robert
PS. As a side note I spoke with my hardware
folks - just to check if validation of
upper-layer checksum is even an option for
transit nodes. The answer is NO as most data
plane hardware can read at most 256 bytes of
packets. So unless there is some specialized
hardware processing up to 9K packets in
hardware at line rates this entire discussion
about checksum violations, fears of firing
appeals is just smoke.
_______________________________________________
spring mailing list
spring@ietf.org
https://www.ietf.org/mailman/listinfo/spring