Hello,

I was looking into DTLS/SCTP as a carrier for Diameter.  Lengths in
Diameter are 24 bit to avoid ever having to bother about that, but when
run over the preferred DTLS/SCTP carrier this may yet be a concern, so
that its only option is to fallback to a _separate_ TLS/TCP connection:

   *  For DTLS over TCP or SCTP, which automatically fragment and
      reassemble datagrams, there is no PMTU limitation.  However, the
      upper layer protocol MUST NOT write any record that exceeds the
      maximum record size of 2^14 bytes.

SCTP can offer better guarantees than UDP; this relaxation may provide
leverage to split a large application message into a sequence of DTLS
frames carried under specific guarantees.

 1. To handle a larger application message, it is split into pieces
    of 2^14 bytes, followed by one that has <2^14 (possibly 0) bytes.
    Fragments are sent to the same stream, without interleaving other
    content, and in-order.  Upon reception, the DTLS frames are each
    decoded and the result concatenated to recover the message.

 2. Since delivery is reliable for SCTP, it would (also) be possible
    to send the same sequence number for the fragments.  The sequence
    number field is not as useful for SCTP as it is for UDP.

 3. It may be an idea to allocate one stream for all fragmentation.
    But even within a stream, it is possible to combine in-order and
    out-of-order.  It is probably good to continue in-order sending
    until the <2^14 sized DTLS frame is acknowledged.  The application
    or DTLS handshake may further constrain this.

These are three possible ways of relaxing this.  If we pick a simple
one, like the 1st, we might pass more SCTP semantics over to the
application that wants DTLS but not its size constraints.  What DTLS
does to Diameter is best resolved.


I hope this is useful,

Cheers,

Rick van Rein

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to