Subject: [multipathtcp] Extending the MPTCP option space

From: Olivier Bonaventure <[email-masked]>
Date: Thu, 13 Nov 2014 21:51:29 +0100

Hello,

There are currently various discussions on the TCPM mailing on how to 
extend the limited TCP option space to be able to place more TCP options 
in the SYN segment and inside regular segments. One of the motivations 
often mentioned for this discussion in the TCPM working group is that 
longer TCP options would be beneficial for Multipath TCP. This is 
correct, but we should also remember that MPTCP provides more 
flexibility than regular TCP for this. In particular, the DSS option 
used by Multipath TCP allows to map data. This option could be extended 
to support other usages.

In https://tools.ietf.org/html/draft-paasch-mptcp-control-stream-00, we 
have shown that it was possible to modify the DSS option to support two 
different bytestreams on a single MPTCP connection. One of these 
bytestreams is the regular bytestream used by the application. The other 
could be devoted to the (reliable) transport of any control information, 
including TCP options.

If we consider that having two separate bytestreams is too complex, we 
could use one of the spare bits in the DSS option to indicate that a DSS 
mapping contains TCP options and possibly normal data. A typical segment 
would then become :

<tcp header><outer tcp options><dss><inner tcp options><tcp EOL option> 
<payload>

The outer tcp options are the options that cannot be transported 
reliably, all the others should be placed inside the dss-mapped data and 
the EOL option defined in RFC793 serves as a marker to separate the TCP 
options from the payload.

This solution seems to me reasonably clean and has the advantage of 
supporting large options (the hard limit for each option becomes its 
length field and all the options must fit inside a single mapping - up 
to 64 kbytes). It does not solve the problem of the SYN segment, but in 
this case using a TFO solution to encode options instead of data inside 
the payload could work in many environments and 
https://tools.ietf.org/html/draft-barre-mptcp-tfo-00 has shown that TFO 
and MPTCP could be coupled together

Olivier