Re: [dtn-interest] IRSG review of draft-irtf-dtnrg-tcp-clayer-06.txt
Simon Perreault <simon.perreault@viagenie.ca> Wed, 17 July 2013 11:33 UTC
Return-Path: <simon.perreault@viagenie.ca>
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 13AC821F999C; Wed, 17 Jul 2013 04:33:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.2
X-Spam-Level:
X-Spam-Status: No, score=-2.2 tagged_above=-999 required=5 tests=[AWL=-0.399, BAYES_00=-2.599, NO_RELAYS=-0.001, 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 cHRkIpTRoTzV; Wed, 17 Jul 2013 04:33:04 -0700 (PDT)
Received: from jazz.viagenie.ca (jazz.viagenie.ca [IPv6:2620:0:230:8000::2]) by ietfa.amsl.com (Postfix) with ESMTP id 6C5E121F9133; Wed, 17 Jul 2013 04:33:04 -0700 (PDT)
Received: from [IPv6:::1] (unknown [IPv6:2001:660:3001:4012:5b8:1f9e:c21b:48d7]) by jazz.viagenie.ca (Postfix) with ESMTPSA id 2B622403EE; Wed, 17 Jul 2013 07:33:03 -0400 (EDT)
Message-ID: <51E680ED.6070004@viagenie.ca>
Date: Wed, 17 Jul 2013 13:33:01 +0200
From: Simon Perreault <simon.perreault@viagenie.ca>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7
MIME-Version: 1.0
To: Dirk Kutscher <Dirk.Kutscher@neclab.eu>
References: <82AB329A76E2484D934BBCA77E9F5249553A5FE9@DAPHNIS.office.hd>
In-Reply-To: <82AB329A76E2484D934BBCA77E9F5249553A5FE9@DAPHNIS.office.hd>
X-Enigmail-Version: 1.5.1
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
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: Wed, 17 Jul 2013 11:33:07 -0000
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