[dcp] Comments and Question Re: DCP drafts

"Patrick R. McManus" <mcmanus@ducksong.com> Wed, 17 April 2002 19:31 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA03275 for <dcp-archive@odin.ietf.org>; Wed, 17 Apr 2002 15:31:25 -0400 (EDT)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id PAA10866 for dcp-archive@odin.ietf.org; Wed, 17 Apr 2002 15:31:28 -0400 (EDT)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id PAA10720; Wed, 17 Apr 2002 15:31:03 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id PAA10675 for <dcp@ns.ietf.org>; Wed, 17 Apr 2002 15:31:00 -0400 (EDT)
Received: from book.ducksong.com (pool-141-154-200-65.bos.east.verizon.net [141.154.200.65]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id PAA03242 for <dcp@ietf.org>; Wed, 17 Apr 2002 15:30:56 -0400 (EDT)
Received: (from mcmanus@localhost) by book.ducksong.com (8.11.6/8.11.6) id g3HJWOE01482 for dcp@ietf.org; Wed, 17 Apr 2002 15:32:24 -0400
Date: Wed, 17 Apr 2002 15:32:24 -0400
From: "Patrick R. McManus" <mcmanus@ducksong.com>
To: dcp@ietf.org
Message-ID: <20020417193224.GA1460@ducksong.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
User-Agent: Mutt/1.3.28i
Subject: [dcp] Comments and Question Re: DCP drafts
Sender: dcp-admin@ietf.org
Errors-To: dcp-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Datagram Control Protocol <dcp.ietf.org>
X-BeenThere: dcp@ietf.org

Hi All,

I've read through the dcp drafts (dcp-02, ccids, and the problem
document) and have a collection of questions, observations, and
editorial comments to make.

First, the easy stuff (editorial comments):

p 14, # NDP - "A non-data packet is simply any packet not containing
        user data; Data-Ack packets are the canonical example."
	
	I believe this should be "DCP-Ack packets are the canonical
        example."

p 7, sec 3.3 - "reasonable time, allowing old segments to
        clear".. this is the only time in the document that the word
        segment occurs. DCP lingo seems to be packet (else segment
        needs to be defined).

-----

observation - acks of acks are a pretty non-intuitive concept if
you're starting with TCP as your knowledge base (likely the case if
people use the rfc to implement the protocol). While reading the
drafts I wondered for a very long time if an established DCP session
under CCID 2 could ever go totally idle - or if the hosts would have
to be sending dcp-ack back and forth every rtt. I now understand why
this is not so, but the heavy dusting of "acks for acks" language
throughout the document before discussion of this at the very end was
the most confusing part of a document that, overall, was very clear
and useful. There are a number of references to "at least one ack per
round trip time" that can imply this case for the sloppy (or perhaps
just first-time) reader (aka me). 

It became clear for me in section 4.3 of the ccid2 document, after I'd
read the whole dcp doc as well. My a-ha moment was realizing that the
purpose of acking an ack was to shrink a stored ack vector state - and
if the sender was quiet then the corresponding vector couldn't be
growing and therefore doesn't really need to be shrunk.

Perhaps some high level discussion of the way acks differ from dhcp
needs to make it earlier in the document - my first question mark
appeared in section 4.1.1 where it said "Some of these data packets
are DCP-DataAck packets acknowledging data and/or ack packets from the
client.", and there were many more big question marks in the margin
before it sunk in.

--

observation 2 - I like the service name addition to the rcp-request
packet. This greatly expands the namespace at a well known service
point.

--

observation 3 - This is really an API comment, and I know dealing with
API issues is tricky and/or inappropriate - but I think this comment
can be dealt with in the sense that the PMTU section does. Its going
to take me a couple paragraphs to get to my point.

It seems obvious to me that one API for DCP looks a lot like
UDP.. socket(AF_INET, SOCK_DCP, 0), recv(), send(), setsockopt(),
close(), etc.. This is particularly impt for 'reluctant applications'
currently using udp but not using cong control.

one of the reasons that apps avoid tcp today is its in-order property
wherein a sequence of 1,2,4 that is recvd will only give the
application pkts 1 and 2 until 3 is obtained. By the time 3 arrives 4
may have lost its value alltogether. DCP solves that nicely.

However, if cwnd is limiting the sending rate a similar q'ing problem
can result inside the dcp-sender's buffer. If the sender is only able
to trickle data out - the application may wish to throw away pending data
and just move on to more current stuff. 

I mention this because when programming with UDP you don't really
consider the case of send() to be signifcantly delayed at your
host. Creating a large q of data (where you had been counting on a
fraction of those packets to be dropped due to congestion you
induced!) could be a real problem. Under UDP the message might be
dropped, but not delayed beyond the needs of the transmission
medium. So this could really inhibit porting of applications that just
blast N kbit/s of data, expecting the bottleneck bandwidth to get
through and the backlog to simply be dropped as you go along.

A setsockopt() that causes send() to fail or block (or one for each!)
if new writes would be delayed by the ccid would seem to be critical
to porting current UDP based programs. Providing a mechanism to
determine if writes would be delayed by a cc policy could be a MUST in
the same sense that section 10 makes it a MUST to "allow the
application to discover DCP's current PMTU"

-----

question - for experimentation purposes is this envisioned as being
built on top of udp, IP, or ???? - has a convention been established
for port numbers or protocol numbers?

-Patrick







_______________________________________________
dcp mailing list
dcp@ietf.org
https://www1.ietf.org/mailman/listinfo/dcp