Re: [multipathtcp] draft terminology: MPTCP control block variable SND.NXT

Christoph Paasch <christoph.paasch@uclouvain.be> Wed, 14 November 2012 09:48 UTC

Return-Path: <christoph.paasch@uclouvain.be>
X-Original-To: multipathtcp@ietfa.amsl.com
Delivered-To: multipathtcp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 591CC21F860D for <multipathtcp@ietfa.amsl.com>; Wed, 14 Nov 2012 01:48:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.999
X-Spam-Level:
X-Spam-Status: No, score=-5.999 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, J_CHICKENPOX_33=0.6, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oUvF8OZ1TZ-q for <multipathtcp@ietfa.amsl.com>; Wed, 14 Nov 2012 01:48:53 -0800 (PST)
Received: from smtp6.sgsi.ucl.ac.be (smtp.sgsi.ucl.ac.be [130.104.5.67]) by ietfa.amsl.com (Postfix) with ESMTP id 1B84C21F8621 for <multipathtcp@ietf.org>; Wed, 14 Nov 2012 01:48:52 -0800 (PST)
Received: from cpaasch-mac.localnet (unknown [172.17.0.12]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: cpaasch@smtp6.sgsi.ucl.ac.be) by smtp6.sgsi.ucl.ac.be (Postfix) with ESMTPSA id C0ED51C6194; Wed, 14 Nov 2012 10:48:47 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.8.3 smtp6.sgsi.ucl.ac.be C0ED51C6194
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=uclouvain.be; s=selucl; t=1352886527; bh=IY360Wa9mtA+x05F6l4wl72w/MYm3+/Z2EndbomjkEQ=; h=From:To:Reply-To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:Content-Type; b=dggoBaIz9ryXCPR/RSai/zh5Uk+yWx+RRAgR2uoyVTRhzdZJbWA/yl4V7yEfG5tZt BYCR/q1i1mDhGZCQPeHiOwWbcs65A5mqalaCz03b8wEQCvRiHgAXq95dn+XPCCZCdT 4hiakPyaLpIUJbxB03eSbqvDelUsU6vQNIkA87cI=
From: Christoph Paasch <christoph.paasch@uclouvain.be>
To: Nigel Williams <njwilliams@swin.edu.au>
Date: Wed, 14 Nov 2012 10:48:44 +0100
Message-ID: <2084870.5phkxIDxER@cpaasch-mac>
Organization: Université Catholique de Louvain
User-Agent: KMail/4.9.3 (Linux/3.5.0-18-generic; KDE/4.9.3; x86_64; ; )
In-Reply-To: <50A2DE86.1080703@swin.edu.au>
References: <50A09CF1.2060302@swin.edu.au> <1434931.3sf8zDIuhj@cpaasch-mac> <50A2DE86.1080703@swin.edu.au>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"
X-Virus-Scanned: clamav-milter 0.97.3-exp at smtp-6.sipr-dc.ucl.ac.be
X-Virus-Status: Clean
X-Sgsi-Spamcheck: SASL authenticated,
X-SGSI-MailScanner-ID: C0ED51C6194.A1868
X-SGSI-MailScanner: Found to be clean
X-SGSI-From: christoph.paasch@uclouvain.be
X-SGSI-Spam-Status: No
Cc: multipathtcp@ietf.org
Subject: Re: [multipathtcp] draft terminology: MPTCP control block variable SND.NXT
X-BeenThere: multipathtcp@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
Reply-To: Christoph Paasch <christoph.paasch@uclouvain.be>
List-Id: Multi-path extensions for TCP <multipathtcp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/multipathtcp>
List-Post: <mailto:multipathtcp@ietf.org>
List-Help: <mailto:multipathtcp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/multipathtcp>, <mailto:multipathtcp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 14 Nov 2012 09:48:54 -0000

Hi Nigel,

On Wednesday 14 November 2012 10:57:58 Nigel Williams wrote:

[...]

> > Is the data leaving the sender out-of-order on the data-sequence number
> > space in your implementation?
> 
> In our implementation, depending on the scheduler, for certain scenarios
> where there are multiple subflows and DS mappings that cover multiple
> packets, it would be possible for packets to leave the sender
> out-of-order (DS-wise). A quick explanation of how our send buffer works
> might help demonstrate this.
> 
> Given that the subflows share a send buffer, in order to minimise
> locking of the send buffer and mptcp control structure a scheduler might
> pre-allocate 'chunks' of data to each subflow. The subflow knows the
> DS-number at the start of the chunk and is able to send the entire chunk
> without needing to call into the mptcp layer/sendbuffer. We do not
> strictly increment a DS-level snd.nxt at this time, our equivalent might
> be called the 'ds_unmapped' (i.e. the highest sequence number that has
> been mapped to a subflow + 1). Each subflow maintains its own snd.nxt
> pointer into the mapping (as per standard tcp).
> 
> At the subflow level, DSS maps can be used for the first packet of the
> mapping. For example, in the case where we have two subflows
> transmitting data at the same time, they are each allocated a contiguous
> chunk from the send buffer (Subflows A and B in Figure 1). Each subflow
> then will attempt to transmit the bytes it has been allocated from the
> send buffer, and does not call back into the ds-level until the map is
> exhausted (ideally). Given that subflow A and B start from different
> DS-numbers, and they are transmitting at the same time, the segments
> leave the sender out-of-order at the DS level.
> 
> 
>       <--------- increasing DS
> +=========+========+=========+
> 
> |uuuuuuuuuubbbbbbbbbaaaaaaaaaa
> |uuuuuuuuuubbbbbbbbbaaaaaaaaaa
> 
> +=========+========+=========+
> 
>       ds_unmapped   B       | A
> 
>                      ds_una (for e.g.)
> 
> Figure 1: Maps allocated to subflows A and B from the send buffer.
> Assume maps are greater than 1-MSS. ds_una is increased based on D-ACKS.
> 
> So from the implementation perspective, the variable represents the next
> unmapped byte in the DS-space, rather than the next DS byte to be sent.

ok, I understand now what you mean. Thanks for the clarifications.

The DS-snd.nxt must be seen from the MPTCP-level point-of-view, where the 
subflow-level is one layer below the MPTCP-level.
As soon as a subflow has been allocated to a chunk of the data, this chunk has 
"moved" from the MPTCP-level to the subflow-level, and thus the send-next must 
increase. "moving" the chunk to the subflow-level can be seen as sending the 
data.

It is the same as for the TCP-level snd-nxt. Pushing a segment from the TCP-
layer down to the IP-layer, and thus increasing snd-nxt, does not necessarily 
mean that the segment is "physically" leaving the machine. It may be delayed 
for a long time in underlying queues (e.g., inside a tc qdisc) of the 
operating system.

So, in general I would say that "send" just means that the data is "moved" one 
layer further down the stack.

> > In our implementation, even if the mapping would be > 1-MSS, the SND.NXT
> > is
> > simply increasing as new data is pushed out on the network.
> 
> I can't picture how this works, would you be able to provide a similar
> explanation (as above) as to how you are able to transmit packets in
> DS-order with multiple concurrent subflows with mappings > 1-MSS?
> Perhaps we could schedule a Skype chat to discuss some of these points?

For me, "sending" at the MPTCP-layer simply means that the data is pushed one 
level further - thus down to the subflow-level. So, the packets may be leaving 
the machine out-of-order at the DS-level, but we anyways can't control this.


Cheers,
Christoph

> cheers,
> nigel
> 
> > I believe that. sending the data in-order on the DS-level allows an easier
> > handling of the meta-level retransmission timer.
> > 
> > 
> > Cheers,
> > Christoph
> > 
> >> The interesting variable at the
> >> DS level is really the largest DS value mapped to a subflow i.e. the
> >> right most edge of the TX socket buffer which designates the boundary
> >> between bytes which have been mapped into subflows and bytes which have
> >> not. This is not analogous to an individual TCP flow's SND.NXT though,
> >> hence the point of discussion.
> >> 
> >> cheers,
> >> nigel
> >> 
> >> 
> >> [1] http://www.ietf.org/id/draft-ietf-mptcp-multiaddressed-12.txt
> >> _______________________________________________
> >> multipathtcp mailing list
> >> multipathtcp@ietf.org
> >> https://www.ietf.org/mailman/listinfo/multipathtcp
-- 
IP Networking Lab --- http://inl.info.ucl.ac.be
MultiPath TCP in the Linux Kernel --- http://mptcp.info.ucl.ac.be
Université Catholique de Louvain
--