Subject: [multipathtcp] Reconsidering MPTCP connection establishement

From: Olivier Bonaventure <[email-masked]>
Date: Tue, 31 Aug 2010 20:35:37 +0200

Hello,

Current TCP stacks implement different variants of TCP syn cookies and
these SYN cookies are important on servers. The current proposed MPTCP
specification is not friendly with syn cookies as there is additional
state to be stored by the passive listener (tokens, initial data
sequence numbers).

In order to preserve the ability of supporting syn cookies with MTCP,
I'd suggest the following change to the MPTCP specification :

1- remove the initial data sequence number from the MPTCP_CAPABLE
option. This option would become

                           1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +---------------+---------------+-------------------------------+
      |Kind=MP_CAPABLE|   Length=6    |       Sender Token            :
      +---------------+---------------+-------------------------------+
      : Sender Token (4 bytes total)  |
      +-------------------------------+

2- Force the initiator and the passive listener to put a DSN_MAP option
in the first segment that they sent.

3- a- Choose the initial data sequence number of the initiator as the
concatenation of the sender token followed by the receiver token (or any
easily invertible function of these two tokens)
   b- Choose the initial data sequence number of the passive listener as
the concatenation of the receiver token followed by the sender token (or
any easily invertible function of these two tokens)

By using this, a MPTCP capable implementation that wants to support syn
cookies only need to store one additional bit of information, the fact
that MPTCP has been requested. This can be easily added to the linux and
freebsd stacks and should be easy on other stacks as well.

When a passive listener receives a syn segment, it chooses a token at
random (or by using some special computation with a secret if it wants
to) and returns it in the syn+ack. It does not need to store it since it
will be able to easily recover it from the DSN_MAP found in the first
segment sent by the initiator. The passive listener uses the
acknowledgement field to verify that the initiator has correctly
received the initial sequence number that it choose and sent in the SYN+ACK.

It seems to me that this change simplifies mptcp and preserves the
ability of using syn cookies on servers which is very important.

Olivier

---

From: Yoshifumi Nishida <[email-masked]>
Date: Tue, 31 Aug 2010 23:55:57 -0700

Hello,

I think It's an interesting idea.
My little concern is that this seems to require the initiator and the
passive listener to have a common function to convert token from
initial data seqnum,
Does this imply we need to have a common function for all mptcp
implementations?

Thanks,
--
Yoshifumi Nisihda
[email-masked]

2010/8/31 Olivier Bonaventure <[email-masked]>:
> _______________________________________________
> multipathtcp mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/multipathtcp
>