Re: [dtn-interest] IRSG review of draft-irtf-dtnrg-tcp-clayer-06.txt
Dirk Kutscher <Dirk.Kutscher@neclab.eu> Sun, 28 July 2013 11:19 UTC
Return-Path: <Dirk.Kutscher@neclab.eu>
X-Original-To: dtn-interest@ietfa.amsl.com
Delivered-To: dtn-interest@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1785A21F9D24; Sun, 28 Jul 2013 04:19:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.125
X-Spam-Level:
X-Spam-Status: No, score=-3.125 tagged_above=-999 required=5 tests=[AWL=-0.325, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1, SARE_SUB_RAND_LETTRS4=0.799]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tBHuDmHsh-bC; Sun, 28 Jul 2013 04:18:54 -0700 (PDT)
Received: from mailer1.neclab.eu (mailer1.neclab.eu [195.37.70.40]) by ietfa.amsl.com (Postfix) with ESMTP id 16A3E21F9CF2; Sun, 28 Jul 2013 04:18:46 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by mailer1.neclab.eu (Postfix) with ESMTP id 2302F104D25; Sun, 28 Jul 2013 13:18:01 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1]) by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08m05kXneSct; Sun, 28 Jul 2013 13:18:01 +0200 (CEST)
Received: from METHONE.office.hd (methone.office.hd [192.168.24.54]) by mailer1.neclab.eu (Postfix) with ESMTP id ED3B2104C82; Sun, 28 Jul 2013 13:17:40 +0200 (CEST)
Received: from DAPHNIS.office.hd ([169.254.2.153]) by METHONE.office.hd ([192.168.24.54]) with mapi id 14.01.0323.003; Sun, 28 Jul 2013 13:18:24 +0200
From: Dirk Kutscher <Dirk.Kutscher@neclab.eu>
To: Simon Perreault <simon.perreault@viagenie.ca>
Thread-Topic: IRSG review of draft-irtf-dtnrg-tcp-clayer-06.txt
Thread-Index: Ac6CZIKNiiftB+vCR2Sn9UxRX98B/gAbB6uAAizaJhA=
Date: Sun, 28 Jul 2013 11:18:23 +0000
Message-ID: <82AB329A76E2484D934BBCA77E9F5249553BBACF@DAPHNIS.office.hd>
References: <82AB329A76E2484D934BBCA77E9F5249553A5FE9@DAPHNIS.office.hd> <51E680ED.6070004@viagenie.ca>
In-Reply-To: <51E680ED.6070004@viagenie.ca>
Accept-Language: de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.7.0.207]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "draft-irtf-dtnrg-tcp-clayer@tools.ietf.org" <draft-irtf-dtnrg-tcp-clayer@tools.ietf.org>, "dtn-interest@irtf.org" <dtn-interest@irtf.org>, "Internet Research Steering Group (irsg@irtf.org)" <irsg@irtf.org>
Subject: Re: [dtn-interest] IRSG review of draft-irtf-dtnrg-tcp-clayer-06.txt
X-BeenThere: dtn-interest@irtf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Announce." <dtn-interest.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/dtn-interest>, <mailto:dtn-interest-request@irtf.org?subject=unsubscribe>
List-Archive: <http://www.irtf.org/mail-archive/web/dtn-interest>
List-Post: <mailto:dtn-interest@irtf.org>
List-Help: <mailto:dtn-interest-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/dtn-interest>, <mailto:dtn-interest-request@irtf.org?subject=subscribe>
X-List-Received-Date: Sun, 28 Jul 2013 11:19:00 -0000
Hi Simon, Very good -- I agree with what you proposed in your reply -- looking forward to the new revision. Best regards, Dirk > -----Original Message----- > From: Simon Perreault [mailto:simon.perreault@viagenie.ca] > Sent: Mittwoch, 17. Juli 2013 13:33 > To: Dirk Kutscher > Cc: Internet Research Steering Group (irsg@irtf.org); draft-irtf-dtnrg-tcp- > clayer@tools.ietf.org; dtn-interest@irtf.org > Subject: Re: IRSG review of draft-irtf-dtnrg-tcp-clayer-06.txt > > Thanks for your very detailed review! I agree with almost all your proposed > changes. I'll publish a new revision. > > Le 2013-07-16 22:41, Dirk Kutscher a écrit : > > - section 3: > > <comment> > > The protocol overview needs to say that a TCPCL can be used to > > transmit several bundles, but that multiple bundles MUST be > > transmitted consecutively (i.e., no inter-leaving of bundle > > segments). In addition, I think, you also have to say that the > > blocks of a particular bundle MUST be sent sequentially (no change > > of block order). > > </comment> > > Agreed. I would also add that interleaving can be accomplished with bundle > fragmentation. > > > - section 3: > > <oldtext> > > This protocol provides bundle conveyance over a TCP connection and > > specifies the encapsulation of bundles as well as procedures for TCP > > connection setup and teardown. > > </oldtext> > > > > <comment> > > "The service of this protocol is the transmission of DTN bundles > > over TCP. This document specifies the encapsulation of bundles, > > procedures for TCP setup and teardown, and a set of messages and > > node requirements."? > > </comment> > > Agreed. > > > - section 3.1: > > > > <comment> > > The first paragraph is not very clear. You want to say that there > > are different specific messages for sending and receiving > > operations (in addition to connection setup/teardown). TCPCL is > > symmetric, i.e., both sides can start sending data segments in a > > connection, and one side's bundle transfer does not have to > > complete before the other side can start sending data segments on > > its own. Hence, the protocol allows for a bi-directional mode of > > communication. > > </comment> > > Agreed. > > > - section 3.2: > > > > <oldtext> > > Note that the sending node may transmit multiple > > DATA_SEGMENT messages without necessarily waiting for the > > corresponding ACK_SEGMENT responses. This enables pipelining of > > messages on a channel. > > </oldtext> > > > > <comment> > > This is a too important property to just mention it on the side of > > an example description. You should mention this in the protocol > > overview. You should also mention that there is no explicit flow > > control on the TCPCL layer. > > </comment> > > Agreed. > > > - section 3.2: > > > > <oldtext> > > However, interleaving data segments from different bundles is not > > allowed. > > </oldtext> > > > > <comment> > > Again, this is too important to not mention it earlier. > > </comment> > > Agreed. > > > -section 4: > > > > <oldtext> > > The manner in which a bundle node makes the decision to establish > > such a connection is implementation-dependent. > > </oldtext> > > > > <comment> > > I think you want to say that the implementation can decide, possibly > > case-by-case, at runtime (unless it is fixed). Perhaps better so > > say: "It is up to the implementation to decide how and when > > connection setup is triggered. For example..." > > </comment> > > Agreed. > > > -section 4: > > <oldtext> > > Therefore, the node MUST retry > > the connection setup only after some delay and it SHOULD use a > > (binary) exponential backoff mechanism to increase this delay in case > > of repeated failures. > > </oldtext> > > > > <comment> > > You should specify what is meant by "some delay". Is it completely > > up to the implementation? Do you want to RECOMMEND a minimum > delay? > > </comment> > > How about recommending 1 second minimum? > > > - section 4.1: > > > > <oldtext> > > magic: A four byte field that always contains the byte sequence 0x64 > > 0x74 0x6e 0x21, i.e., the text string "dtn!". > > </oldtext> > > > > > > <newtext> > > magic: A four byte field that always contains the byte sequence 0x64 > > 0x74 0x6e 0x21, i.e., the text string "dtn!" in US-ASCII. > > </newtext> > > Agreed. > > > - section 4.1: > > > > <oldtext> > > version: A one byte field value containing the current version of > > the protocol. > > </oldtext> > > > > > > <newtext> > > version: A one byte field value containing the value 3 (current version of > > the protocol). > > </newtext> > > Agreed. > > > - section 5.2 > > > > <oldtext> > > However, a node MUST be able to receive a bundle that has been > > transmitted in any segment size. > > </oldtext> > > > > <comment> > > > > How feasible is this, for example for constrained devices? Even if a > > node does not intend to store and reassemble bundles, there may be > > certain limits for the maximum size of segments that it can > > receive. Has there been a discussion to make this > > negotiable/configurable? How should a node react if it cannot > > receive/process any more bytes for a transmitted segment? > > </comment> > > The intent here is not to override a node's intrinsic limitation on bundle sizes. > The intent is that if a node is able to receive, over TCP, a bundle of size X with > segment size Y, then it MUST also be able to do it with any segment size <= X. > I'll adjust the text. > > > - section 5.2 > > > > <oldtext> > > Following the message header, the length field is an SDNV containing > > the number of bytes of bundle data that are transmitted in this > > segment. Following this length is the actual data contents. > > </oldtext> > > > > > > <comment> > > This should be mentioned earlier in section 5.2 </comment> > > Agreed. > > > - section 5.3 > > > > <oldtext> > > To transmit an acknowledgment, a node first transmits a message > > header with the ACK_SEGMENT type code and all flags set to zero, then > > transmits an SDNV containing the cumulative length of the received > > segment(s) of the current bundle. > > </oldtext> > > > > > > <newtext> > > To transmit an acknowledgment, a node first transmits a message > > header with the ACK_SEGMENT type code and all flags set to zero, > > then transmits an SDNV containing the cumulative length in bytes of > > the received segment(s) of the current bundle. > > </newtext> > > Agreed. > > > - section 5.4 > > > > <oldtext> > > Note: If a bundle transmission if aborted in this way, the receiver > > may not receive a segment with the 'E' flag set to '1' for the > > aborted bundle. The beginning of the next bundle is identified by > > the 'S' bit set to '1', indicating the start of a new bundle. > > </oldtext> > > > > <comment> > > > > Should this be turned into a general rule? I.e.: "if a receiver > > receives a segment for a new bundle without having seen the final > > segment of a previous bundle, it SHOULD disregard all segments of > > the incompletely received bundle." > > I don't think so. The received segments are valid. The receiver can do > whatever it wants with them. > > > (wording may need some work) > > > > It's probably good to use "SHOULD" here, because the node may > > already have forwarded the segments... > > </comment> > > > > > > - section 6.1 > > > > <oldtext> > > The format of the shutdown message is as follows: > > > > 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 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 > > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ > > | 0x5 |0|0|R|D| reason (opt) | reconnection delay (opt) | > > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ > > > > Figure 8: Format of bundle shutdown messages > > > > </oldtext> > > > > <comment> > > Is it really efficient to have variable length messages here by > > making the reason code optional? How about always requiring it and > > then allow for a default value (0x00)? > > </comment> > > I think it's a backward compatibility wart that we need to live with. > That is, earlier versions of the protocol did not send those two fields. > (not 100% sure) > > > - section 6.1 > > > > <oldtext> > > If either node terminates a connection prematurely in this manner, it > > SHOULD send a SHUTDOWN message and MUST indicate a reason code > unless > > the incoming connection did not include the magic string. > > </oldtext> > > > > <comment> > > Why not send a reason like "illegal syntax"? > > </comment> > > Wasn't there talks of a draft registering a bunch of additional reason codes? > > > - section 6.7 > > > > <comment> > > > > Regarding the peer entity authentication issue, I think you have to > > use a stronger statement, like "a node SHALL NO" use the endpoint > > identifier conveyed in the TCPCL connection message to derive a peer > > node's entity unless it can ascertain it via other means." > > Agreed. > > > If it is possible to do that through the Bundle Security Protocol, > > you could be a bit more specific on how the Bundle Authentication > > Block would be used. I assume one TCPCL peer node would become a > > security source in an RFC 6257 sense? > > > > BTW, you are using the term "Bundle Authentication Header" -- I > > think it's "Bundle Authentication Block". > > > > In general, it could be worthwhile stating that TCPCL does not > > provide any security services and that RFC 6257's mechanisms should > > be used. > > Agreed. > > > BTW, is the use of TLS for TCPCL defined or excluded? You may want > > to say something about why it's not applicable > > </comment> > > Why wouldn't it be applicable? I think we *want* it to be applicable! > > > - section 10.2 > > > > <oldtext> > > [RFC6256] Eddy, W. and E. Davies, "Using Self-Delimiting Numeric > > Values in Protocols", RFC 6256, May 2011. > > </oldtext> > > > > <comment> > > Isn't that a normative reference for this spec? > > </comment> > > No, because that's an informational RFC. > > > EDITORIAL COMMENTS > > ------------------ > > > > General: > > > > - make usage and capitalization of Bundle Protocol (sometimes referred > > to as "Bundling Protocol", "bundle protocol" etc.) consistent > > Agreed. > > > - section 2.1 > > <oldtext> > > Bundle payload -- A bundle payload (or simply "payload") is the > > application data whose conveyance to the bundle's destination is > > the purpose for the transmission of a given bundle. > > </oldtext> > > > > <comment> > > IMO this can be said in a clearer way: "... application > > data that is transmitted to a BP application at a Bundle > > Endpoint"? > > </comment> > > We should just remove this and refer to RFC 5050 section 3.1. > > > - section 2.1: > > <oldtext> > > Bundle node -- A bundle node (or simply a "node") is any entity that > > can send and/or receive bundles. The particular instantiation > > of this entity is deliberately unconstrained, allowing for > > implementations in software libraries, long-running processes, > > or even hardware. One component of the bundle node is the > > implementation of a convergence layer adapter. > > </oldtext> > > > > <comment> > > I don't think the second sentence ("The particular > > instantiation...") is really needed. This holds for most network > > elements these days. > > </comment> > > We should just remove this and refer to RFC 5050 section 3.1. > > > - section 2.1: > > <oldtext> > > Convergence layer adapter -- A convergence layer adapter (CLA) sends > > and receives bundles utilizing the services of some 'native' > > link, network, or internet protocol. This document describes > > the manner in which a CLA sends and receives bundles when using > > the TCP protocol for inter-node communication. > > </oldtext> > > > > <comment> > > Does it make make sense to define "Convergence Layer" first, > > before defining CLA? Is the CLA definition needed at all > > (assuming CL is defined)? > > </comment> > > We should just remove this and refer to RFC 5050 section 3.1. > > > - section 2.2: > > <oldtext> > > TCPCL Connection -- [...] The lifetime of a TCPCL connection is one-to-one > > with the lifetime of an underlying TCP connection. > > [...] > > </oldtext> > > > > <comment> > > "The lifetime of a TCPCL connection is bound to the > > lifetime of the underlying TCP connection."? > > </comment> > > Agreed. > > > -section 4: > > > > <oldtext> > > Once a TCP connection is established, each node MUST immediately > > transmit a contact header over the TCP connection. The format of the > > contact header is described in Section 4.1). > > </oldtext> > > > > <newtext> > > Once a TCP connection is established, each node MUST immediately > > transmit a contact header over the TCP connection. The format of the > > contact header is described in Section 4.1. > > </newtext> > > Agreed. > > > - section 4.1: > > > > <oldtext> > > local EID: An octet string containing the EID of some singleton > > endpoint in which the sending node is a member, in the canonical > > format of <scheme name>:<scheme-specific part>. A eight byte > > EID is shown the clarity of the figure. > > </oldtext> > > > > > > <newtext> > > local EID: An octet string containing the EID of some singleton > > endpoint in which the sending node is a member, in the canonical > > format of <scheme name>:<scheme-specific part>. A eight byte > > EID is shown for clarity of the figure. > > </newtext> > > Agreed. > > > - section 4.2: > > > > > > <oldtext> > > The reactive fragmentation enabled parameter is set to true iff > > the corresponding flag is set in both contact headers. > > > > The bundle refusal capability may only be used iff both peers > > indicate support for it in their contact header and segment > > acknowledgement has been enabled. > > </oldtext> > > > > > > <newtext> > > The reactive fragmentation enabled parameter is set to true iff > > the corresponding flag is set in both contact headers. > > > > The bundle refusal capability is set to true if the > > corresponding flag is set in both contact headers and if > > segment acknowledgment has been enabled. > > </newtext> > > > > <comment> > > I'd raher use the same or similar wording to not irritate the implementer. > > </comment> > > Agreed. > > > - section 5.1 > > > > <oldtext> > > Table 2: TCPCL Header Types > > </oldtext> > > > > > > <newtext> > > Table 2: TCPCL Message Types > > </newtext> > > Agreed. > > > - section 5 > > > > <comment> > > For the different subsections for the individual messages, please > > use the message type names from table 2 in the headings, for > > example: "Bundle Data Transmission (DATA_SEGMENT)". Also, I'd > > recommend to align the order of the subsections with the order of > > message types in table 2. > > </comment> > > Agreed. > > > <comment> > > I would also recommend to use a consistent structure for each of > > the subsections, i.e., perhaps > > - purpose > > - syntax > > - procedures / node requirements > > </comment> > > Agreed. > > > - section 5.3 > > > > <oldtext> > > If so, then > > the receiver MUST transmit a bundle acknowledgment header when it > > successfully receives each data segment. > > </oldtext> > > > > > > <oldtext> > > If so, then > > the receiver MUST transmit a bundle acknowledgment message when it > > successfully receives each data segment. > > </oldtext> > > Agreed. > > > - section 5.6 > > > > <oldtext> > > If no message (keepalive or other) has been received for at least > > twice the keepalive interval, then either party may terminate the > > session by transmitting a one byte message type code of SHUTDOWN (as > > described in Table 2) and closing the TCP connection. > > </oldtext> > > > > > > <newtext> > > If no message (keepalive or other) has been received for at least > > twice the keepalive interval, then either party MAY terminate the > > session by transmitting a one byte SHUTDOWN message (as > > described in Table 2) and by closing the TCP connection. > > </newtext> > > Agreed. > > > - section 6.1 > > > > <oldtext> > > In case acknowledgments have been > > negotiated, it is advisable to acknowledge all received data segments > > first and then shut down the connection. > > </oldtext> > > > > > > <newtext> > > In case acknowledgments have been > > negotiated, a node SHOULD acknowledge all received data segments > > first and then shut down the connection. > > </newtext> > > Agreed. > > > - section 6.1 > > > > <oldtext> > > This may, for example, be used to notify > > that the node is currently not capable of or willing to communicate. > > </oldtext> > > > > <newtext> > > This may, for example, be used to notify > > that the node is currently not able or willing to communicate. > > </newtext> > > Agreed. > > > - section 10.2 > > > > <oldtext> > > [refs.dtnsecurity] > > Symington, S., Farrell, S., and H. Weiss, "Bundle Security > > Protocol Specification", Internet Draft, work in progress > > draft-irtf-dtnrg-bundle-security-03.txt, April 2007. > > </oldtext> > > > > <comment> > > This is RFC 6257. > > </comment> > > Agreed. > > Simon
- [dtn-interest] IRSG review of draft-irtf-dtnrg-tc… Dirk Kutscher
- Re: [dtn-interest] IRSG review of draft-irtf-dtnr… Simon Perreault
- Re: [dtn-interest] IRSG review of draft-irtf-dtnr… Dirk Kutscher
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Eggert, Lars
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Eggert, Lars
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Eggert, Lars
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Simon Perreault
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Eggert, Lars
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Simon Perreault
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Eggert, Lars
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Dirk Kutscher
- Re: [dtn-interest] [irsg] IRSG review of draft-ir… Eggert, Lars