[art] Re: Artart last call review of draft-ietf-tsvwg-sctp-z ero-checksum-09

Bernard Aboba <[email protected]> Mon, 13 May 2024 17:54:40 -0700
Newsgroups gmane.ietf.apps-discuss,gmane.ietf.tsvwg
Message-ID <CAOW+2dtCbs1cQG6HNY-2G__v1huk3bUOuxn_gYPPgG=SxTU6cQ@mail.gmail.com>
Comments below.

On Tue, May 7, 2024 at 7:18 AM Michael Tuexen <
[email protected]> wrote:

> > On 3. May 2024, at 07:23, Bernard Aboba via Datatracker <
> [email protected]> wrote:
> >
> > Reviewer: Bernard Aboba
> > Review result: Ready with Issues
> >
> > Reviewer: Bernard Aboba
> > Document: draft-ietf-tsvwg-sctp-zero-checksum
> > Status: Ready with (minor) Issues
> >
> Hi Bernard,
>
> thank you very much for the review. See my comments in-line.
>
> Best regards
> Michael
> > The document is well written and allowing a zero checksum for SCTP over
> DTLS makes sense.
> > In order to allow for other potential protection mechanisms, the
> document sets up an
> > IANA registry and associated documentation requirements. However, I am
> not sure
> > that the registration criteria are clear enough.
> >
> > At present the document does not talk about implementation status,
> although I believe it
> > has been implemented in Pion, dcSCTP and perhaps other WebRTC data
> channel implementations.
> It is also implemented in the FreeBSD implementation and therefore in
> usrsctp.
> There are also test cases available at:
> https://github.com/tsvwg/zero-checksum/tree/main/packetdrill-tests
> which have been used to test the FreeBSD implementation.
> I think all of this is covered in the shepherds write-up.
> Do you think it would be better to write the information up in a
> "Implementation Status Section"?



> > Have any issues arisen during implementation?
> The implementer of dcSCTP did not report any issues, he explicitly said
> that
> allowing sending packets with correct checksums where using a zero checksum
> would be allowed was simplifying the initial implementation.
>
> The Pion stack implementer implemented a feature negotiation instead of
> feature declaration. Not sure why. I think the document is very clear
> about this. But this has been fixed in the Pion implementation now.
>

[BA] Thanks for the pointers and summary.  I don't think you need to add an
implementation section, but you might want to note that the specification
has been implemented and deployed widely.


> >
> > NITs
> > ----
> >
> > 3.  Alternate Error Detection Methods
> >
> >   SCTP uses a CRC32c checksum to provide some level of data integrity.
> >   The CRC32c checksum is computed based on the SCTP common header and
> >   the chunks contained in the packet.  In particular, the computation
> >   of the CRC32c checksum does not involve a pseudo header for IPv4 or
> >   IPv6 like the computation of the TCP checksum, as specified in
> >   [RFC9293], or the UDP checksum, as specified in [RFC0768].
> >
> > [BA] Would it be appropriate to advise against turning off the UDP
> checksum as well?
> I think using a zero checksum for UDP when using SCTP/DTLS/UDP/IP
> or SCTP/UDP/IP is independent of using the zero checksum for SCTP
> as discussed in this document. So I think there is no need to discuss
> it here.
> In case you are referring to SCTP/UDP/IP, this is discussed in
> RFC 6951 and this document does not change anything.
> The reference to the UDP and TCP checksum is only given, to
> stress the difference between the these and the SCTP checksum.
> The use of the pseudo-header for UDP and TCP.
>

[BA] Makes sense.


> >
> >   Alternate error detection methods have two requirements:
> >
> >   1.  An alternate error detection method MUST provide an equal or
> >       better level of data integrity than the one provided by using the
> >       CRC32c checksum algorithm.  This MAY only apply to packets
> >       satisfying some method specific constraints.
> >
> > [BA] I think you may need to define the meaning of "equal or better" more
> > exactly.  For example, that the alternative provides the same coverage
> > as the CRC32c checksum, with a lower probability of a false negative.
> Well, I intentionally used a vague term. The critical part in your
> definition is the "same coverage".
> The CRC32c covers the from the common header the port numbers and the
> verification tag and then all chunks.
> The authors of
> *
> https://www.ietf.org/archive/id/draft-ietf-tsvwg-dtls-over-sctp-bis-08.html
> *
> https://www.ietf.org/archive/id/draft-westerlund-tsvwg-sctp-crypto-chunk-02.html
> *
> https://www.ietf.org/archive/id/draft-westerlund-tsvwg-sctp-dtls-chunk-01.html
> suggest that you can also use an incorrect checksum of zero for
> all packets which have the AUTH, CRYPTO, or DTLS chunk as its first chunk.
> Then the coverage would only be over the chunks, not the fields contained
> in the common header.
> The protection would also work for these fields, since you would use
> these fields to lookup the association and check the verification
> tag. So if there would be an error in the port numbers, most likely
> the lookup will result in no association or one with different
> key material, such that the AUTH, CRYPTO, or DTLS chunk check would
> fail. If the transmission error is in the verification tag, the
> packet would be dropped anyway.
>
> So if you prefer, we could say
>
> An alternate error detection method MUST provide an equal or
> lower probability of false negatives than the one provided by using the
> CRC32c checksum algorithm.
>
> Would that address your concern?
>

[BA] Yes.


> >
> >   2.  Using an alternate error detection method MUST NOT result in a
> >       path failure for more than two retransmission timeouts (RTO) due
> >       to middleboxes on the path expecting correct CRC32c checksums.
> >
> > [BA] This requirement depends on the behavior of middleboxes, so it's
> > not clear to me how adherence to the MUST NOT can be tested.
> My understanding is that an implementation must not fail a path for longer
> than 2 RTOs if the path starts to drop all packets with an incorrect
> checksum of zero at any time. The next sentence gives a hint how
> this could be done.
> You might want to combine this with some probing when you initially
> confirm the path. But since all of this is not needed for WebRTC,
> we wanted to keep this out of this document and put that into
> any upcoming document, where this is relevant.
>

[BA]  OK, that makes sense.


> >
> >   To fulfill the second requirement, alternate error detection methods
> >   MAY use a heuristic to detect the existence of such middleboxes and
> >   use correct CRC32c checksums on these affected paths.
> >
> > [BA] The "MAY" here seems to be somewhat in conflict with the much
> > stronger MUST NOT, particularly since we are talking about middlebox
> > detection. At present the document only allocates a code point for
> > DTLS, to which this requirement doesn't apply.
> Would it be less confusing to write:
>
> To fulfill the second requirement, alternate error detection methods
> could use a heuristic to detect the existence of such middleboxes and
> use correct CRC32c checksums on these affected paths.
>
> [BA] Yes, that would help.


> >   One example fulfilling the first requirement is using DTLS as the
> >   lower layer of SCTP as specified in [RFC8261].  Another example is
> >   using SCTP Authentication as specified in [RFC4895].  Of course, this
> >   only applies to all SCTP packets having an AUTH chunk as its first
> >   chunk.  However, using SCTP Authentication without any heuristic does
> >   not fulfill the second requirement.  Since using DTLS as the lower
> >   layer of SCTP as specified in [RFC8261] also fulfills the second
> >   requirement, it can be used as an alternate error detection method
> >   (see Section 6).
> >
> > [BA] SCTP Authentication is not allocated a code point. So not sure
> > why this is mentioned as "another example" - is this just to indicate
> > why it is not acceptable (e.g. not meeting the second requirement)?
> Yes.
> Basically, SCTP/DTLS is an example fulfilling both requirements and
> not have any addition method specific constraints.
> The document is just using SCTP AUTH is an example fulfilling the first,
> but not the second requirement. It is also an example, which has a method
> specific constraint: "The AUTH chunk must be the first chunk".
> If you can suggest an improvement to the wording to make this clearer,
> I'm happy to take it.
>

[BA]  The text is clear as it is; was just unsure of why it was there.


> >
> > 5.1.  Declaration of Feature Support
> >
> >   An endpoint willing to accept SCTP packets with an incorrect checksum
> >   of zero MUST include the Zero Checksum Acceptable Chunk Parameter
> >   indicating the alternate error detection method it is willing to use
> >   in the INIT or INIT ACK chunk it sends.
> >
> >   An SCTP implementation MAY also require the upper layer to indicate
> >   that it is fine to use a specific alternate error detection method
> >   before including the corresponding Zero Checksum Acceptable Chunk
> >   Parameter.
> >
> > [BA] What if the alternate error detection method is not consistent
> > with what has been established? For example, SCTP over DTLS/UDP has
> > been established, but some other method (not yet allocated a code point)
> > is negotiated?
> Please note that there is no negotiation. Each side declared what it
> is willing to accept.
> Packets received with an incorrect checksum of zero are accepted if
> they fulfill the additional requirements of the error detection method
> announced. If that is not true they are dropped.
>
> The text in 5.3 contains:
>
> If an endpoint has sent the Zero Checksum Acceptable Chunk Parameter
> indicating the support of an alternate error detection method in an
> INIT or INIT ACK chunk, it MUST accept SCTP packets fulfilling the
> requirements of the announced alternate error detection method using
> an incorrect checksum value of zero in addition to SCTP packets
> containing the correct CRC32c checksum value for this association.
>
> Should it be stated explicitly that if the is not true, packets are
> dropped?
>

[BA] Yes.


> >
> > Section 5.2
> >
> >   4.  Alternate error detection methods might have some additional
> >       conditions requiring that the sender MUST include a correct
> >       CRC32c checksum in the packet.
> >
> > [BA] The combination of "might" and MUST is an odd one. Is this
> normative language needed?
> An alternate error detection method can have additional requirements.
> Like in the SCTP AUTH case "the AUTH chunk must the first chunk". Not
> all packets can fulfill this requirement. In this case, the sender
> MUST use a correct CRC32c checksum.
> Whether an alternate error detection method has such additional
> requirements
> depends on the alternate error detection method.
> Would you prefer something like:
>
> If an alternate error detection method has some method specific
> constraints,
> the sender MUST include a correct CRC32c checksum in all packets not
> fulfilling
> these method specific constraints.
>

[BA] Yes.


> >
> >   An SCTP end point MAY require that the upper layer allowed the use of
> >   the alternate error detection method that was announced by the peer
> >   before sending packets with an incorrect checksum of zero.
> >
> > [BA] MAY? In the case of DTLS, the alternate error detection method
> > was setup prior to initiation of the SCTP association. So why would this
> > be optional?
> If an SCTP stack implements this MAY (as the FreeBSD stack does), it gives
> the upper layer control whether the method is needed or not. See the
> sentence
>
> An implementation might only send packets with an incorrect checksum of
> zero,
> if the alternate error detection method announced by the peer is also
> enabled
> locally via this socket option.
>
> in the Socket API section. For example, if there are any problems with
> using this feature, the upper layer can disable this.
> But it is a MAY. So if an SCTP implementation doesn't want to allow
> this level of control, it is fine.
>

[BA] OK.


> >
> > Section 8 IANA Considerations
> >
> >   2.  A reference to a specification describing:
> >
> >       (a)  the alternate error detection method,
> >
> >       (b)  why the alternate error detection method provides an equal
> >            or better level of data integrity protection than the one
> >            provided by using the CRC32c checksum,
> >
> > [BA] It might help to sharpen the definition of "equal or better".
> This needs to be handled consistently with the above text. See discussion
> there.
> >
> >
> >
> >
> > _______________________________________________
> > art mailing list
> > [email protected]
> > https://www.ietf.org/mailman/listinfo/art
>
>

_______________________________________________
art mailing list -- [email protected]
To unsubscribe send an email to [email protected]