Subject: [multipathtcp] Questions on draft-handley-mptcp-routing-00.txt

From: Erik Nordmark <[email-masked]>
Date: Fri, 26 Mar 2010 20:41:45 -0700

Mark,

I have two questions around this draft.

First one is is that draft-handley-mptcp-routing-00.txt has a
description of strong host which is different than what I recall from
RFC 1122. mptcp-routing says:
    If B initiates a TCP connection to A and sends the SYN to address a1,
    then routing will route the incoming packet via R1 and hence to a1.
    If A's best route to B is via R1, then there is no problem.  However,
    if A's best route to B is via R2, then what happens next depends on
    the host stack implementation.  Two common models are in use:

    o  If A implements a strong host model, the connection will be
       rejected because the incoming packet arrived on the incorrect
       network interface.

    o  If A implements a weak host model, the connection will be accepted
       and the SYN/ACK from A to be will be sent via router R2, but with
       source address a1.  As this address does not come from the address
       prefix allocated by ISP 2, then there is a good chance that ISP 2
       will drop the packet in its ingress filter, believing the source
       address to be spoofed.

RFC 1122's description of strong ES  does more or less what I think you
need for mptcp. RFC 1122 says:

             There are two key requirement issues related to multihoming:

             (A)  A host MAY silently discard an incoming datagram whose
                  destination address does not correspond to the physical
                  interface through which it is received.

             (B)  A host MAY restrict itself to sending (non-source-
                  routed) IP datagrams only through the physical
                  interface that corresponds to the IP source address of
                  the datagrams.

If a host behaves as a strong ES in RFC 1122, then in the above text
(with MAY replaced by MUST), the SYN would be accepted since it arrived
on the interface on which the destination address is configured. And
the SYN|ACK would be routed out an interface on which its source address
is configured. Thus as long as there exists a route (default or other)
out via R1, then even if there is a better route via R2 the strong host
would pick the route via R1.

Hence the two descriptions are quite different.
Is the above description in mptcp-routing based on observing the real
behavior of strong host implementations, i.e., did you survey existing
implementations?

The other issue is related, but slightly different.
mptcp-routing describes the desired behavior as including a match on the
subnet prefix between the source address and the gateway address (with a
different way to do things for IPv6 where the gateway address is
normally a link-local address). What is the use case that requires this?

The wifi+cellular interface on the host doesn't need this - it is
sufficient to do the interface matching (i.e., the strong ES behavior in
RFC 1122).

I don't know of a practical IPv4 configuration when a host would see two
or more gateways on the same interface, and the gateways would have
different subnet prefixes. Thus it would seem simpler do just do the
interface match suggested in RFC 1122 for strong hosts. But I'm curious
to find out the motivation for putting the subnet match requirement in
mptcp-routing.

    Erik