Delay-Tolerant Networking TCP Convergence-Layer Protocol Version 4
RFC 9174
Revision differences
Document history
Date | Rev. | By | Action |
---|---|---|---|
2022-02-04
|
28 | (System) | IANA registries were updated to include RFC9174 |
2022-01-31
|
28 | (System) | Received changes through RFC Editor sync (created alias RFC 9174, changed title to 'Delay-Tolerant Networking TCP Convergence-Layer Protocol Version 4', changed abstract to 'This … Received changes through RFC Editor sync (created alias RFC 9174, changed title to 'Delay-Tolerant Networking TCP Convergence-Layer Protocol Version 4', changed abstract to 'This document describes a TCP convergence layer (TCPCL) for Delay-Tolerant Networking (DTN). This version of the TCPCL protocol resolves implementation issues in the earlier TCPCL version 3 as defined in RFC 7242 and provides updates to the Bundle Protocol (BP) contents, encodings, and convergence-layer requirements in BP version 7 (BPv7). Specifically, TCPCLv4 uses BPv7 bundles encoded by the Concise Binary Object Representation (CBOR) as its service data unit being transported and provides a reliable transport of such bundles. This TCPCL version also includes security and extensibility mechanisms.', changed pages to 62, changed standardization level to Proposed Standard, changed state to RFC, added RFC published event at 2022-01-31, changed IESG state to RFC Published) |
2022-01-31
|
28 | (System) | RFC published |
2022-01-24
|
28 | (System) | RFC Editor state changed to AUTH48-DONE from AUTH48 |
2021-11-24
|
28 | (System) | RFC Editor state changed to AUTH48 |
2021-11-24
|
28 | (System) | IANA Action state changed to In Progress from On Hold |
2021-11-23
|
28 | (System) | IANA Action state changed to On Hold from RFC-Ed-Ack |
2021-10-06
|
28 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-28.txt |
2021-10-06
|
28 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2021-10-06
|
28 | Brian Sipos | Uploaded new revision |
2021-10-04
|
27 | (System) | RFC Editor state changed to RFC-EDITOR from EDIT |
2021-09-24
|
27 | Rick Taylor | Changed document external resources from: None to: github_repo https://github.com/BrianSipos/dtn-bpbis-tcpcl |
2021-09-22
|
27 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-27.txt |
2021-09-22
|
27 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2021-09-22
|
27 | Brian Sipos | Uploaded new revision |
2021-08-02
|
26 | (System) | RFC Editor state changed to EDIT from MISSREF |
2021-02-23
|
26 | (System) | IANA Action state changed to RFC-Ed-Ack from Waiting on RFC Editor |
2021-02-23
|
26 | (System) | IANA Action state changed to Waiting on RFC Editor from In Progress |
2021-02-23
|
26 | (System) | IANA Action state changed to In Progress from Waiting on Authors |
2021-02-22
|
26 | (System) | IANA Action state changed to Waiting on Authors from In Progress |
2021-02-18
|
26 | Tero Kivinen | Closed request for Telechat review by SECDIR with state 'Overtaken by Events' |
2021-02-18
|
26 | Tero Kivinen | Assignment of request for Telechat review by SECDIR to Christopher Wood was marked no-response |
2021-02-17
|
26 | (System) | RFC Editor state changed to MISSREF from EDIT |
2021-02-17
|
26 | (System) | RFC Editor state changed to EDIT |
2021-02-17
|
26 | (System) | IESG state changed to RFC Ed Queue from Approved-announcement sent |
2021-02-17
|
26 | (System) | Announcement was received by RFC Editor |
2021-02-17
|
26 | (System) | IANA Action state changed to In Progress |
2021-02-17
|
26 | Cindy Morgan | IESG state changed to Approved-announcement sent from Approved-announcement to be sent |
2021-02-17
|
26 | Cindy Morgan | IESG has approved the document |
2021-02-17
|
26 | Cindy Morgan | Closed "Approve" ballot |
2021-02-17
|
26 | Cindy Morgan | Ballot approval text was generated |
2021-02-17
|
26 | Magnus Westerlund | IESG state changed to Approved-announcement to be sent from Waiting for AD Go-Ahead |
2021-02-17
|
26 | Magnus Westerlund | Ballot approval text was generated |
2021-02-15
|
26 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-26.txt |
2021-02-15
|
26 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2021-02-15
|
26 | Brian Sipos | Uploaded new revision |
2021-02-01
|
25 | (System) | IANA Review state changed to Version Changed - Review Needed from IANA OK - Actions Needed |
2021-02-01
|
25 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-25.txt |
2021-02-01
|
25 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2021-02-01
|
25 | Brian Sipos | Uploaded new revision |
2021-01-27
|
24 | Benjamin Kaduk | [Ballot comment] The new text on TLS usage and the certificate profile is really solid. A huge thanks for getting that put together. I just … [Ballot comment] The new text on TLS usage and the certificate profile is really solid. A huge thanks for getting that put together. I just have a few minor comments left after looking it over: Section 3.4 has some nice discussion in the last paragraph of SNI usage for "virtual host" behavior. It ends with a note that when distinct per DNS name/Node ID certificate are present, operation proceeds "using the SNI value from the peer to select which certificate to use". This is true, but perhaps leaves a bit of subtlety unsaid when Node IDs are involved, since the SNI content is nominally just a DNS name. If it is to be used to select (say) a certificate with only a Node ID, any mapping between DNS name and Node ID used to pick the Node ID based on the provided DNS name would necessarily be conveyed out of band from this protocol. That may be obvious, in which case it should be left as is, but if not it might be worth a note that any relationship between DNS name (SNI) and Node ID used in certificate selection is out of scope of this protocol. The certificate profile in Section 4.4.2 notes that the full certification chain SHOULD be included; it is common (but not universal) that when we provide such guidance, we call out what is to be done with the root CA/trust anchor. (Usually it is not sent, since the receiving party needs to have it already in order to validate the chain.) Also relating to the certificate profile in Section 4.4.2, we list the three potentially relevant key usage values of digitalSignature, keyEncipherment, and keyAgreement. The latter two are (IIUC) only relevant for TLS versions prior to 1.3, since in TLS 1.3 certificates are only used to sign the CertificateVerify message, with key exchange being performed in a separate dedicated mechanism. That said, it may still make sense to mention them here, since TCPCL really only requires the properties of TLS and does not make specific use (that I recall) of TLS 1.3. Section 5.1.1 still seems to talk about the Keepalive Interval as being in the contact header, but it is actually in the SESS_INIT. |
2021-01-27
|
24 | Benjamin Kaduk | [Ballot Position Update] Position for Benjamin Kaduk has been changed to Yes from Discuss |
2021-01-19
|
24 | Sabrina Tanamal | Yes, this is approved. However, I ask the authors to add a reference to the ASN.1 specification in Section 9.9 to be clearly specify object … Yes, this is approved. However, I ask the authors to add a reference to the ASN.1 specification in Section 9.9 to be clearly specify object identifier: [X.680] ITU-T, "Information technology -- Abstract Syntax Notation One (ASN.1): Specification of basic notation", ITU-T Recommendation X.680, ISO/IEC 8824-1:2015, August 2015, . |
2021-01-19
|
24 | Sabrina Tanamal | IANA Experts State changed to Expert Reviews OK from Reviews assigned |
2021-01-19
|
24 | Sabrina Tanamal | IANA Review state changed to IANA OK - Actions Needed from IANA - Not OK |
2021-01-18
|
24 | (System) | IESG state changed to Waiting for AD Go-Ahead from In Last Call |
2021-01-15
|
24 | Sabrina Tanamal | IANA Experts State changed to Reviews assigned |
2021-01-15
|
24 | (System) | IANA Review state changed to IANA - Not OK from Version Changed - Review Needed |
2021-01-15
|
24 | Sabrina Tanamal | (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has completed its review of draft-ietf-dtn-tcpclv4-24. If any part of this review is inaccurate, please let … (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has completed its review of draft-ietf-dtn-tcpclv4-24. If any part of this review is inaccurate, please let us know. The IANA Functions Operator understands that, upon approval of this document, there are nine actions which we must complete. First, in the Service Name and Transport Protocol Port Number Registry located at: https://www.iana.org/assignments/service-names-port-numbers/ the registration for port number 4556 will have the reference changed for the TCP port. The TCP port number 4556 will have its reference changed to [ RFC-to-be ]. The UDP and DCCP port number 4556 references will remain unchanged. NOTE: According to Section 8.1.1 of RFC 6335, the contact listed for the port in Section 9.1 should be the IETF Chair rather than the IESG. Second, in the Bundle Protocol TCP Convergence-Layer Version Numbers registry on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ a single, new version number will be added as follows: Value: 4 Description: TCPCLv4 Reference: [ RFC-to-be ] Third, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 Session Extension Types registry. The new registry will be located on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ The range of values in the registry are from 0x0000 to 0xFFFF. The new registry will be managed via Expert Review as defined in RFC 8126 for values from 0x0001--0x7FFF. Values from 0x8000-0xFFFF are for private/experimental use as defined in RFC 8126. The value 0x0000 is to be marked reserved. Fourth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 Transfer Extension Types registry. The new registry will be located on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ The range of values in the registry are from 0x0000 to 0xFFFF. The new registry will be managed via Expert Review as defined in RFC 8126 for values from 0x0001--0x7FFF. Values from 0x8000-0xFFFF are for private/experimental use as defined in RFC 8126. The value 0x0000 is to be marked reserved. There is a single, new registration in the new registry as follows: Code: 0x0001 Transfer Extension Type: Transfer Length Extension Reference: [ RFC-to-be ] Fifth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 Message Types registry. The new registry will be located on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ The range of values in the registry are from 0x00 to 0xFF. The new registry will be managed via Expert Review as defined in RFC 8126 for values from 0x0001--0xEF. Values from 0xF0-0xFF are for private/experimental use as defined in RFC 8126. The value 0x00 is to be marked reserved. There are initial registrations in the new registry as follows: +============+==========================+===============+ | Code | Message Type | Reference | +============+==========================+===============+ | 0x00 | Reserved | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x01 | XFER_SEGMENT | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x02 | XFER_ACK | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x03 | XFER_REFUSE | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x04 | KEEPALIVE | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x05 | SESS_TERM | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x06 | MSG_REJECT | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x07 | SESS_INIT | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x08--0xEF | Unassigned | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0xF0--0xFF | Private/Experimental Use | [ RFC-to-be ] | +------------+--------------------------+===============+ Sixth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 XFER_REFUSE Reason Codes registry. The new registry will be located on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ The range of values in the registry are from 0x00 to 0xFF. The new registry will be managed via Expert Review as defined in RFC 8126 for values from 0x0001--0xEF. Values from 0xF0-0xFF are for private/experimental use as defined in RFC 8126. The value 0x00 is to be marked reserved. There are initial registrations in the new registry as follows: +============+==========================+===============+ | Code | Refusal Reason | Reference | +============+==========================+===============+ | 0x00 | Unknown | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x01 | Completed | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x02 | No Resources | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x03 | Retransmit | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x04 | Not Acceptable | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x05 | Extension Failure | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x06 | Session Terminating | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x07--0xEF | Unassigned | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0xF0--0xFF | Private/Experimental Use | [ RFC-to-be ] | +------------+--------------------------+===============+ Seventh, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 SESS_TERM Reason Codes registry. The new registry will be located on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ The range of values in the registry are from 0x00 to 0xFF. The new registry will be managed via Expert Review as defined in RFC 8126 for values from 0x0001--0xEF. Values from 0xF0-0xFF are for private/experimental use as defined in RFC 8126. The value 0x00 is to be marked reserved. There are initial registrations in the new registry as follows: +============+==========================+===============+ | Code | Termination Reason | Reference | +============+==========================+===============+ | 0x00 | Unknown | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x01 | Idle timeout | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x02 | Version mismatch | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x03 | Busy | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x04 | Contact Failure | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x05 | Resource Exhaustion | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x06--0xEF | Unassigned | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0xF0--0xFF | Private/Experimental Use | [ RFC-to-be ] | +------------+--------------------------+===============+ Eighth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 MSG_REJECT Reason Codes registry. The new registry will be located on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ The range of values in the registry are from 0x00 to 0xFF. The new registry will be managed via Expert Review as defined in RFC 8126 for values from 0x0001--0xEF. Values from 0xF0-0xFF are for private/experimental use as defined in RFC 8126. The value 0x00 is to be marked reserved. There are initial registrations in the new registry as follows: +============+==========================+===============+ | Code | Rejection Reason | Reference | +============+==========================+===============+ | 0x00 | reserved | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x01 | Message Type Unknown | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x02 | Message Unsupported | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x03 | Message Unexpected | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0x04--0xEF | Unassigned | [ RFC-to-be ] | +------------+--------------------------+===============+ | 0xF0--0xFF | Private/Experimental Use | [ RFC-to-be ] | +------------+--------------------------+===============+ Ninth, in the SMI Security for PKIX Extended Key Purpose registry on the Structure of Management Information (SMI) Numbers (MIB Module Registrations) registry page located at: https://www.iana.org/assignments/smi-numbers/ a single, new registration will be made as follows: Decimal: [ TBD-at-Registration ] Description: id-kp-bundleSecurity Reference: [ RFC-to-be ] As this document requests registrations in a Specification Required (see RFC 8126) registry, we will initiate the required Expert Review via a separate request. This review must be completed before the document's IANA state can be changed to "IANA OK." The IANA Functions Operator understands that these are the only actions required to be completed upon approval of this document. Note: The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is meant only to confirm the list of actions that will be performed. Thank you, Sabrina Tanamal Senior IANA Services Specialist |
2020-12-17
|
24 | Cindy Morgan | The following Last Call announcement was sent out (ends 2021-01-18): From: The IESG To: IETF-Announce CC: Edward Birrane , magnus.westerlund@ericsson.com, dtn-chairs@ietf.org, draft-ietf-dtn-tcpclv4@ietf.org, … The following Last Call announcement was sent out (ends 2021-01-18): From: The IESG To: IETF-Announce CC: Edward Birrane , magnus.westerlund@ericsson.com, dtn-chairs@ietf.org, draft-ietf-dtn-tcpclv4@ietf.org, edward.birrane@jhuapl.edu, dtn@ietf.org Reply-To: last-call@ietf.org Sender: Subject: Last Call: (Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4) to Proposed Standard The IESG has received a request from the Delay/Disruption Tolerant Networking WG (dtn) to consider the following document: - 'Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4' as Proposed Standard This is a second IETF last call due to extensive changes since previous IETF last call. The IESG plans to make a decision in the next few weeks, and solicits final comments on this action. Please send substantive comments to the last-call@ietf.org mailing lists by 2021-01-18. Exceptionally, comments may be sent to iesg@ietf.org instead. In either case, please retain the beginning of the Subject line to allow automated sorting. Abstract This document describes a TCP-based convergence layer (TCPCL) for Delay-Tolerant Networking (DTN). This version of the TCPCL protocol resolves implementation issues in the earlier TCPCL Version 3 of RFC7242 and updates to the Bundle Protocol (BP) contents, encodings, and convergence layer requirements in BP Version 7. Specifically, the TCPCLv4 uses CBOR-encoded BPv7 bundles as its service data unit being transported and provides a reliable transport of such bundles. This version of TCPCL also includes security and extensibility mechanisms. The file can be obtained via https://datatracker.ietf.org/doc/draft-ietf-dtn-tcpclv4/ No IPR declarations have been submitted directly on this I-D. |
2020-12-17
|
24 | Cindy Morgan | IESG state changed to In Last Call from Last Call Requested |
2020-12-17
|
24 | Magnus Westerlund | Last call was requested |
2020-12-17
|
24 | Magnus Westerlund | IESG state changed to Last Call Requested from IESG Evaluation::AD Followup |
2020-12-17
|
24 | Magnus Westerlund | Last call announcement was changed |
2020-12-17
|
24 | Magnus Westerlund | Last call announcement was generated |
2020-12-07
|
24 | (System) | IANA Review state changed to Version Changed - Review Needed from IANA OK - Actions Needed |
2020-12-07
|
24 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-24.txt |
2020-12-07
|
24 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-12-07
|
24 | Brian Sipos | Uploaded new revision |
2020-12-02
|
23 | Benjamin Kaduk | [Ballot discuss] [retaining discuss section unchanged from the -21 in order to update the comment section, even though much progress has been made on this … [Ballot discuss] [retaining discuss section unchanged from the -21 in order to update the comment section, even though much progress has been made on this front at IETF 109 and via email. IIRC we have a thread open with the PKIX extended key purpose DE for how to modify the TLS certificate validation procedures.] ========================== discuss section from -21 below ==================== [This is essentially a restatement of the comments at https://mailarchive.ietf.org/arch/msg/dtn/jnafmsDt0OXUhYlBwT_U9PuNV5c/ but rephrased to be a standalone review rather than continuation of an existing conversation.] I'm really impressed by the new text about PKIX environments/CA policy, and entity identification; thank you! I suspect that, with one exception, we have similar understandings of what is supposed to happen, but may need to wrangle the actual text on the page a little more to get to the right place. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The one exception relates to the security properties of having the certificate validation procedure be a prioritized list of steps with which steps to use being dependent on the contents of the received certificate. Specifically, if we will end up letting a peer with a DNS-ID cert authenticate as any node ID, then there is no security gain from having the node ID in the cert in the first place, since the attacker will just skip that step. The value of NODE-ID comes into play when we know, before we go into the validation procedure, that the legitimate peer will have the expected NODE-ID in their certificate. Obviously we cannot expect that to always be the case, given that we aim to be compatible with DTN-Ignorant CAs, so we will need to specify some granularity for when we do or do not require the NODE-ID to be present. There are a number of possibilities here and I don't know which is going to be best for the broadest group of deployments. Some simple ideas for consideration include: (a) any given node either always or never requires NODE-ID (b) any given interface either always or never requires NODE-ID (c) push it to the discovery protocol/"out of band configuration" (d) a trust-on-first-use-like option of "once you've seen a NODE-ID for a given node ID, always require NODE-ID in the future for that node ID. (This has pretty significant risks without a way to "undo the latch" but if generating a new node ID is cheap they may be tolerable.) (e) define new URI scheme(s) that have similar semantics to the current ones but require NODE-ID for authentication. (f) similar to (e), apply additional granularity based on URI scheme or scheme-specific structure (e.g., certain prefixes/suffixes of names but not others In theory there are similar considerations between DNS-ID and NETWORK-ID (see below for comment about the "NETWORK-ID" name), but since they are both expected to be coming from the Web PKI and both have similarly weak models for node authentication it's not clear to me that we should spend much effort on a complicated procedure for there. Something simple like "if you have a (stable) name for the peer, expect DNS-ID; if you only have an IP address, use NETWORK-ID" should work quite well (and may even be what you intended anyway). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The main place where I'm still seeing a need for wordsmithing is in the authentication procedures in Section 4.4.3. I see from the previous discussion that the intent of "SHALL attempt to authenticate [...] If and security policy disallows an unauthenticated , the entity SHALL terminate the session" is for security policy to be able to say "yes, there's no -ID and I'm fine with that (or potentially even "the -ID that is present failed validation and I'm fine with that"), which is a surprising wording to me but I guess technically okay. (The current wording strongly implies, to me, that if validation fails, the session gets terminated; maybe it's something about the double negative in "disallows an unauthenticated" that makes the "security policy" aspect feel very weak.) What seems significantly problematic to me, though, is the requirement as-written to attempt validation of all three types of ID (NODE-ID, DNS-ID, and NETWORK-ID). In the expected case where a peer's certificate contains only one of the three (or, perhaps, a NODE-ID and one other name type), this means that security policy would have to be some complex matrix with interdependencies between the various types (allow unauthenticated host by DNS-ID if NETWORK-ID present and valid, etc.) that prevents validation of each type of name being performed independently. In particular, this "must attempt all three types" logic seems at odds with the first paragraph of the section that says that attempting host name validation is optional. So, I would have expected the text to flow more along the lines of (but written less hastily) "security policy determines, for a given connection, which identity type(s) is expected, and validation is attempted for those specific type(s). Failed authentication results in session termination." It is okay with me for security policy to allow continuing with the connection even when validation is attempted but fails, but I'm not sure that we currently have a fully consistent picture about how/when this happens. In particular, I see a note in Section 8.10.1 that using TLS in a way which does not authenticate both peers is out of scope of this document" along with a mention of similarities to opportunistic security, yet letting security policy proceed with an unauthenticated peer seems at odds with that "out of scope". We should have a clearer picture of whether opportunistic security with no or failed authentication of one or both peers is permitted by this document. I think we can also wordsmith the setting of CAN_TLS a little more; previous discussion indicated a desire to (e.g.) not require TLS when operating over IPsec, but that's a different criterion than "capable of exchanging messages [with TLS]". It's also inconsistent with a desire to make TLS support mandatory to implement (but not mandatory to use), since mandatory to implement implies mandatory to be "capable of exchanging messages with TLS", thus mandatory to use. |
2020-12-02
|
23 | Benjamin Kaduk | [Ballot comment] Section 4.6 When the active entity initiates a TCPCL session, it is likely based on routing information which binds a Node … [Ballot comment] Section 4.6 When the active entity initiates a TCPCL session, it is likely based on routing information which binds a Node ID to CL parameters. If the active entity receives a SESS_INIT with different Node ID than was intended for the TCPCL session, the session MAY be allowed to be established. If allowed, such a session SHALL be associated with the Node ID provided in the SESS_INIT message rather than any intended value. I would prefer if we could find some way to reiterate that the Node ID in question must still pass the NODE-ID verification procedures from Section 4.4.3, though everything I've come up with so far feels a bit clunky. Section 5.1.1 As described in Section 4.3, a negotiated parameter of each session is the Session Keepalive interval. If the negotiated Session Keepalive is zero (i.e., one or both contact headers contains a zero Keepalive Interval), then the keepalive feature is disabled. There This is SESS_INIT, not contact header. (I'm pretty sure this is the last one to change.) |
2020-12-02
|
23 | Benjamin Kaduk | Ballot comment and discuss text updated for Benjamin Kaduk |
2020-12-02
|
23 | Erik Kline | [Ballot comment] I'll not disagree with my predecessor, but "[[ discuss ]]" has some random thoughts that were rattling around in my head. [[ discuss … [Ballot comment] I'll not disagree with my predecessor, but "[[ discuss ]]" has some random thoughts that were rattling around in my head. [[ discuss ]] [ section 4.* ] * Instead of upgrading in-session to TLS after CH version and magic field verification, Can the TLS session be negotiated first and perhaps quickly closed based on some DTN-specific ALPN (perhaps "dtn")? Can the use of a DTN-specific ALPN be any help even with in-session TLS upgrade (as currently described)? [ section 4.7 ] * Selecting the minimum of the two session keepalive parameters, in the case where one side uses a value of zero, allows one side to disable all keepalives altogether. I think this might not be the best negotiated outcome if one node knows that it is behind a NAT gateway: that node might need to send session keepalives in order to maintain NAT binding state. [[ nits ]] [ section 3.4 ] * "This situation not ideal" -> "This situation is not ideal" [ section 4.4 ] * "entity MAY attempt use" -> "entity MAY attempt to use" |
2020-12-02
|
23 | Erik Kline | [Ballot Position Update] New position, No Objection, has been recorded for Erik Kline |
2020-12-02
|
23 | Amanda Baber | IANA Review state changed to IANA OK - Actions Needed from Version Changed - Review Needed |
2020-12-02
|
23 | Warren Kumari | [Ballot Position Update] New position, No Objection, has been recorded for Warren Kumari |
2020-12-02
|
23 | Robert Wilton | [Ballot Position Update] New position, No Objection, has been recorded for Robert Wilton |
2020-11-30
|
23 | Alvaro Retana | [Ballot Position Update] New position, No Objection, has been recorded for Alvaro Retana |
2020-11-23
|
23 | Martin Duke | [Ballot comment] Thanks for addressing my DISCUSS. Sec 6.1 is much clearer now. I am not sure what "Any delay between request to close the … [Ballot comment] Thanks for addressing my DISCUSS. Sec 6.1 is much clearer now. I am not sure what "Any delay between request to close the TCP connection and actual closing of the connection (a "half-closed" state) MAY be ignored by the TCPCL entity." means. Presumably if it gets a XFER_ACK, it should pay attention to it. |
2020-11-23
|
23 | Martin Duke | [Ballot Position Update] Position for Martin Duke has been changed to No Objection from Discuss |
2020-11-16
|
23 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-23.txt |
2020-11-16
|
23 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-11-16
|
23 | Brian Sipos | Uploaded new revision |
2020-11-07
|
22 | Martin Duke | [Ballot discuss] Sec 6.1. I read this sentence several times and could not figure out what it is saying, and fear there could be interoperability … [Ballot discuss] Sec 6.1. I read this sentence several times and could not figure out what it is saying, and fear there could be interoperability problems. "When performing an unclean termination, a transmitting node SHALL treat either sending or receiving a SESS_TERM message (i.e., before the final acknowledgment) as a failure of the transfer. Any delay between request to close the TCP connection and actual closing of the connection (a "half-closed" state) MAY be ignored by the TCPCL entity." First of all, "failure of the transfer" is ambiguous because there may be two transfers going on, one in each direction. Second, I would like further clarity on what it means that nodes "SHALL" consider it "a failure of the transfer". What is actionable if it's a failure? If nothing is actionable, it shouldn't be a SHALL. Does this mean that in subsequent sessions I must resend the whole bundle? Can you list some reasons why an endpoint would choose to close uncleanly? Some motivation might provide helpful context. Moreover the "sending or receiving" bit is confusing. - So one option is that I'm a session that has decided to do an unclean termination rather than a clean one. So I send SESS_TERM and then close (FIN? RST?) the TCP connection. So if it's a FIN, I might very well get the last XFER_ACK. If I RST or don't get that ACK, then I do think it's clear that the transfer is a failure, whatever that means. - But as a receiver, how do I know that the termination is unclean? Have I made an independent decision to close uncleanly? Am I to take the receipt of a SESS_TERM without my having sent XFER_ACK as an unclean close? If I sent XFER_ACK, how do I know that the sender sent it? And what does it mean, as a receiver, that the transfer "failed" if I have all the data? |
2020-11-07
|
22 | Martin Duke | [Ballot comment] Thanks for this document. I have numerous minor concerns: Sec 4.3. "the TCP connection SHALL be closed." Can you clarify if this is … [Ballot comment] Thanks for this document. I have numerous minor concerns: Sec 4.3. "the TCP connection SHALL be closed." Can you clarify if this is a clean close (FIN) or abort (RST)? In fact, if you always mean FIN, it might be good to clarify that in the terminology section to indicate that there are no RSTs anywhere. Sec 4.3. VERSION_MISMATCH would benefit from being split into VERSION_TOO_HIGH and VERSION_TOO_LOW. For example, if the passive is at v4 only and the active supports v1, v2, and v3, it will take three tries to figure out that there is no way for these nodes to communicate. Even better would be a QUIC-style Version Negotiation message that would communicate the options in 1 RTT. There are few items that seem to be artifacts of TLS happening after session negotiation in v3: Sec 4.4.3. "If certificate validation fails or if security policy disallows a certificate for any reason, the entity SHALL terminate the session" I don't understand this; certificate validation generally occurs during the TLS handshake, where there is no session? Sec 4.4.3 "the active entity SHALL authenticate the DNS name (of the passive entity) used to initiate the TCP connection" s/TCP Connection/TLS session. TCP connections don't consider DNS at all. Sec 4.5. "After the initial exchange of a Contact Header, all messages transmitted over the session are identified by a one-octet header with the following structure:" Obviously, TLS handshake messages are after the Contact Header and are not prepended by these headers. Perhaps this is an artifact from v3? Sec 4.7 "Once this process of parameter negotiation is completed (which includes a possible completed TLS handshake of the connection to use TLS)," The TLS handshake occurs before parameter negotiation. Sec 5.2.4 I find it odd that each CL would have its own set of reason codes that it will simply pass to the bundle layer. Far better for it to be a common set of CL-agnostic errors that the bundle layer implements, as they literally do not matter to the CL at all. |
2020-11-07
|
22 | Martin Duke | [Ballot Position Update] Position for Martin Duke has been changed to Discuss from No Objection |
2020-11-07
|
22 | Martin Duke | [Ballot comment] Thanks for this document. I have numerous minor concerns: Sec 4.3. "the TCP connection SHALL be closed." Can you clarify if this is … [Ballot comment] Thanks for this document. I have numerous minor concerns: Sec 4.3. "the TCP connection SHALL be closed." Can you clarify if this is a clean close (FIN) or abort (RST)? In fact, if you always mean FIN, it might be good to clarify that in the terminology section to indicate that there are no RSTs anywhere. Sec 4.3. VERSION_MISMATCH would benefit from being split into VERSION_TOO_HIGH and VERSION_TOO_LOW. For example, if the passive is at v4 only and the active supports v1, v2, and v3, it will take three tries to figure out that there is no way for these nodes to communicate. Even better would be a QUIC-style Version Negotiation message that would communicate the options in 1 RTT. There are few items that seem to be artifacts of TLS once happening after session negotiation: Sec 4.4.3. "If certificate validation fails or if security policy disallows a certificate for any reason, the entity SHALL terminate the session" I don't understand this; certificate validation generally occurs during the TLS handshake, where there is no session? Sec 4.4.3 "the active entity SHALL authenticate the DNS name (of the passive entity) used to initiate the TCP connection" s/TCP Connection/TLS session. TCP connections don't consider DNS at all. Sec 4.5. "After the initial exchange of a Contact Header, all messages transmitted over the session are identified by a one-octet header with the following structure:" Obviously, TLS handshake messages are after the Contact Header and are not prepended by these headers. Perhaps this is an artifact from v3? Sec 4.7 "Once this process of parameter negotiation is completed (which includes a possible completed TLS handshake of the connection to use TLS)," The TLS handshake occurs before parameter negotiation. Sec 5.2.4 I find it odd that each CL would have its own set of reason codes that it will simply pass to the bundle layer. Far better for it to be a common set of CL-agnostic errors that the bundle layer implements, as they literally do not matter to the CL at all. Sec 6.1. I read this sentence several times and could not figure out what it is saying: "When performing an unclean termination, a transmitting node SHALL treat either sending or receiving a SESS_TERM message (i.e., before the final acknowledgment) as a failure of the transfer. Any delay between request to close the TCP connection and actual closing of the connection (a "half-closed" state) MAY be ignored by the TCPCL entity." First of all, "failure of the transfer" is ambiguous because there may be two transfers going on, one in each direction. Second, I would like further clarity on what it means that nodes "SHALL" consider it "a failure of the transfer". Does this mean that in subsequent sessions I must resend the whole bundle? Can you list some reasons why an endpoint would choose to close uncleanly? Some motivation might provide helpful context. Moreover the "sending or receiving" bit is confusing. So one option is that I'm a session that has decided to do an unclean termination rather than a clean one. So I send SESS_TERM and then close (FIN? RST?) the TCP connection. So if it's a FIN, I might very well get the last XFER_ACK. If I RST or don't get that ACK, then I do think it's clear that the transfer is a failure, whatever that means. But as a receiver, how do I know that the termination is unclean? Have I made an independent decision to close uncleanly? Am I to take the receipt of a SESS_TERM without my having sent XFER_ACK as an unclean close? If I sent XFER_ACK, how do I know that the sender sent it? And what does it mean, as a receiver, that the transfer "failed" if I have all the data? |
2020-11-07
|
22 | Martin Duke | [Ballot Position Update] New position, No Objection, has been recorded for Martin Duke |
2020-11-05
|
22 | Tero Kivinen | Request for Telechat review by SECDIR is assigned to Christopher Wood |
2020-11-05
|
22 | Tero Kivinen | Request for Telechat review by SECDIR is assigned to Christopher Wood |
2020-11-02
|
22 | Amy Vezza | Telechat date has been changed to 2020-12-03 from 2020-02-20 |
2020-10-26
|
22 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-22.txt |
2020-10-26
|
22 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-10-26
|
22 | Brian Sipos | Uploaded new revision |
2020-09-30
|
21 | Benjamin Kaduk | [Ballot discuss] [This is essentially a restatement of the comments at https://mailarchive.ietf.org/arch/msg/dtn/jnafmsDt0OXUhYlBwT_U9PuNV5c/ but rephrased to be a standalone review rather than continuation of an existing … [Ballot discuss] [This is essentially a restatement of the comments at https://mailarchive.ietf.org/arch/msg/dtn/jnafmsDt0OXUhYlBwT_U9PuNV5c/ but rephrased to be a standalone review rather than continuation of an existing conversation.] I'm really impressed by the new text about PKIX environments/CA policy, and entity identification; thank you! I suspect that, with one exception, we have similar understandings of what is supposed to happen, but may need to wrangle the actual text on the page a little more to get to the right place. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The one exception relates to the security properties of having the certificate validation procedure be a prioritized list of steps with which steps to use being dependent on the contents of the received certificate. Specifically, if we will end up letting a peer with a DNS-ID cert authenticate as any node ID, then there is no security gain from having the node ID in the cert in the first place, since the attacker will just skip that step. The value of NODE-ID comes into play when we know, before we go into the validation procedure, that the legitimate peer will have the expected NODE-ID in their certificate. Obviously we cannot expect that to always be the case, given that we aim to be compatible with DTN-Ignorant CAs, so we will need to specify some granularity for when we do or do not require the NODE-ID to be present. There are a number of possibilities here and I don't know which is going to be best for the broadest group of deployments. Some simple ideas for consideration include: (a) any given node either always or never requires NODE-ID (b) any given interface either always or never requires NODE-ID (c) push it to the discovery protocol/"out of band configuration" (d) a trust-on-first-use-like option of "once you've seen a NODE-ID for a given node ID, always require NODE-ID in the future for that node ID. (This has pretty significant risks without a way to "undo the latch" but if generating a new node ID is cheap they may be tolerable.) (e) define new URI scheme(s) that have similar semantics to the current ones but require NODE-ID for authentication. (f) similar to (e), apply additional granularity based on URI scheme or scheme-specific structure (e.g., certain prefixes/suffixes of names but not others In theory there are similar considerations between DNS-ID and NETWORK-ID (see below for comment about the "NETWORK-ID" name), but since they are both expected to be coming from the Web PKI and both have similarly weak models for node authentication it's not clear to me that we should spend much effort on a complicated procedure for there. Something simple like "if you have a (stable) name for the peer, expect DNS-ID; if you only have an IP address, use NETWORK-ID" should work quite well (and may even be what you intended anyway). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The main place where I'm still seeing a need for wordsmithing is in the authentication procedures in Section 4.4.3. I see from the previous discussion that the intent of "SHALL attempt to authenticate [...] If and security policy disallows an unauthenticated , the entity SHALL terminate the session" is for security policy to be able to say "yes, there's no -ID and I'm fine with that (or potentially even "the -ID that is present failed validation and I'm fine with that"), which is a surprising wording to me but I guess technically okay. (The current wording strongly implies, to me, that if validation fails, the session gets terminated; maybe it's something about the double negative in "disallows an unauthenticated" that makes the "security policy" aspect feel very weak.) What seems significantly problematic to me, though, is the requirement as-written to attempt validation of all three types of ID (NODE-ID, DNS-ID, and NETWORK-ID). In the expected case where a peer's certificate contains only one of the three (or, perhaps, a NODE-ID and one other name type), this means that security policy would have to be some complex matrix with interdependencies between the various types (allow unauthenticated host by DNS-ID if NETWORK-ID present and valid, etc.) that prevents validation of each type of name being performed independently. In particular, this "must attempt all three types" logic seems at odds with the first paragraph of the section that says that attempting host name validation is optional. So, I would have expected the text to flow more along the lines of (but written less hastily) "security policy determines, for a given connection, which identity type(s) is expected, and validation is attempted for those specific type(s). Failed authentication results in session termination." It is okay with me for security policy to allow continuing with the connection even when validation is attempted but fails, but I'm not sure that we currently have a fully consistent picture about how/when this happens. In particular, I see a note in Section 8.10.1 that using TLS in a way which does not authenticate both peers is out of scope of this document" along with a mention of similarities to opportunistic security, yet letting security policy proceed with an unauthenticated peer seems at odds with that "out of scope". We should have a clearer picture of whether opportunistic security with no or failed authentication of one or both peers is permitted by this document. I think we can also wordsmith the setting of CAN_TLS a little more; previous discussion indicated a desire to (e.g.) not require TLS when operating over IPsec, but that's a different criterion than "capable of exchanging messages [with TLS]". It's also inconsistent with a desire to make TLS support mandatory to implement (but not mandatory to use), since mandatory to implement implies mandatory to be "capable of exchanging messages with TLS", thus mandatory to use. |
2020-09-30
|
21 | Benjamin Kaduk | [Ballot comment] Section 4.4.1 I probably would not have picked the name "NETWORK-ID" for the iPAddress SAN (since identifying a "network" would call to mind … [Ballot comment] Section 4.4.1 I probably would not have picked the name "NETWORK-ID" for the iPAddress SAN (since identifying a "network" would call to mind an IP prefix or similar). If you're not tied to it, I would propose "IPADDR-ID". (Full disclosure: I also asked the saag@ietf.org about this topic; responses so far seem to support IPADDR-ID.) Section 4.4.2 Apparently I didn't find this remarkable the first time around, but "the SNI text" is not a common phrase in the TLS community; we would typically refer to 'the contents of the "server_name" extension' or perhaps the 'HostName in the "server_name" extension'. In this context such verbosity may not be needed, with "the SNI contents holds the network-layer name for the passive entity" seeming to suffice. Section 4.6 Keepalive Interval: A 16-bit unsigned integer indicating the minimum interval, in seconds, to negotiate the Session Keepalive using the method of Section 4.7. nit: maybe "to negotiate as"? (The current wording sounds like the Session Keepalive is negotiated periodically at some interval.) Section 4.7 This still has some stale "contact header" references that should be switched to SESS_INIT (for Keeplive Interval and the MTUs), as does section 5.1.1. Section 8.7 We mention "renegotiation of the TLS connection", which is only defined for TLS 1.2 and older, but we now seem to only be referencing TLS 1.3, so renegotiation is in that sense undefined. |
2020-09-30
|
21 | Benjamin Kaduk | Ballot comment and discuss text updated for Benjamin Kaduk |
2020-09-30
|
21 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to Yes from No Objection |
2020-06-23
|
21 | Magnus Westerlund | [Ballot comment] So the core of the issues have been addressed. |
2020-06-23
|
21 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to No Objection from Discuss |
2020-06-23
|
21 | Magnus Westerlund | [Ballot discuss] Mirja's discuss is now resolved except for a single item regarding the aspect of session policies for TCPclv4. |
2020-06-23
|
21 | Magnus Westerlund | Ballot discuss text updated for Magnus Westerlund |
2020-06-12
|
21 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-21.txt |
2020-06-12
|
21 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-06-12
|
21 | Brian Sipos | Uploaded new revision |
2020-05-15
|
20 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-20.txt |
2020-05-15
|
20 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-05-15
|
20 | Brian Sipos | Uploaded new revision |
2020-05-13
|
19 | Magnus Westerlund | Some bug has made this document lose its AD Follow up sub-state. Still waiting for WG to resolve discuss points. |
2020-05-13
|
19 | Magnus Westerlund | IESG state changed to IESG Evaluation::AD Followup from IESG Evaluation |
2020-03-13
|
19 | Suresh Krishnan | [Ballot comment] Thanks for addressing my DISCUSS points. |
2020-03-13
|
19 | Suresh Krishnan | Ballot comment text updated for Suresh Krishnan |
2020-03-13
|
19 | Suresh Krishnan | [Ballot comment] Thanks for addressing my DISCUSS. |
2020-03-13
|
19 | Suresh Krishnan | [Ballot Position Update] Position for Suresh Krishnan has been changed to No Objection from Discuss |
2020-03-13
|
19 | Magnus Westerlund | IESG state changed to IESG Evaluation from Waiting for Writeup |
2020-03-07
|
19 | (System) | Sub state has been changed to AD Followup from Revised ID Needed |
2020-03-07
|
19 | (System) | IANA Review state changed to Version Changed - Review Needed from IANA OK - Actions Needed |
2020-03-07
|
19 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-19.txt |
2020-03-07
|
19 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-03-07
|
19 | Brian Sipos | Uploaded new revision |
2020-03-04
|
18 | Magnus Westerlund | [Ballot discuss] Need to resolve Mirja's discuss. |
2020-03-04
|
18 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to Discuss from Yes |
2020-02-25
|
18 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to Yes from Discuss |
2020-02-20
|
18 | Cindy Morgan | IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation |
2020-02-20
|
18 | Magnus Westerlund | [Ballot discuss] Need to confirm that reassigning the TCP Port 4556 is okay with the official assigne Simon Perreault. |
2020-02-20
|
18 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to Discuss from Yes |
2020-02-20
|
18 | Éric Vyncke | [Ballot comment] Thank you for the work put into this document. Due to too many documents for today IESG telechat (and one week of vacations … [Ballot comment] Thank you for the work put into this document. Due to too many documents for today IESG telechat (and one week of vacations to be honest...), I am balloting "No objection" trusting the ballots of my IESG colleagues/friends. I only quickly browsed the document with my internet area glasses. And I support Suresh's issue around TLS 1.2. -éric |
2020-02-20
|
18 | Éric Vyncke | [Ballot Position Update] New position, No Objection, has been recorded for Éric Vyncke |
2020-02-20
|
18 | Mirja Kühlewind | [Ballot discuss] Thanks for this well-written document. I have a couple of thing in the comment section below that should be clarified. But there is … [Ballot discuss] Thanks for this well-written document. I have a couple of thing in the comment section below that should be clarified. But there is one point which does not seem correct to me and therefore I'm raising it at thee discuss level: Sec 5.1.1: "Both sides SHALL send a KEEPALIVE message whenever the negotiated interval has elapsed with no transmission of any message (KEEPALIVE or other). If no message (KEEPALIVE or other) has been received in a session after some implementation-defined time duration, then the node SHALL terminate the session by transmitting a SESS_TERM message (as described in Section 6.1) with reason code "Idle Timeout". " It is not necessary that both endpoints send keepalives when TCP is used underneath as data is transmitted reliably. If one end sends keepalives and transmission fails it will close the TCP connection no matter what. Therefore the case where no keepalive is received, can only happen if no keepalive was send by the application, however, if the own keepalives are send successfully it is also received and the TCP connection is alive. If this is only to test liveness of the TCP connection, why don't you use TCP keepalives instead? Further what happens when a keepalive fails? Should one endpoint try to reconnect, immediately or later when new data is available? And one more small thing: sec 6.1: "However, an entity MUST always send the contact header to its peer before sending a SESS_TERM message." This normative requirement seems contradicting the way version failures are handled earlier on in the doc. |
2020-02-20
|
18 | Mirja Kühlewind | [Ballot comment] 1) Sec 4.1: "Therefore, the entity MUST retry the connection setup no earlier than some delay time from the last attempt." … [Ballot comment] 1) Sec 4.1: "Therefore, the entity MUST retry the connection setup no earlier than some delay time from the last attempt." It would be good to provide a recommended value or at least a minimum value. 2) Similar here in sec 4.1: " If the passive entity does not receive a Contact Header after some implementation-defined time duration after TCP connection is established, the entity SHALL close the TCP connection." It would be good to provide some default value or at least some more discussion about ranges of values. In any case this value should be larger than X times the RTT as TCP segments can get lost any might need to be transmitted. I guess something in the order of second would be appropriate? 3) Sec 4.3: " To prevent a flood of repeated connections from a misconfigured application, an entity MAY elect to hold an invalid connection open and idle for some time before ending it." Not sure why you need to hold it open...? All you need is to not accept but ignore new connections from that peer/IP address for some time. And more questions: - When kept open and you suddenly received a valid message, should you process it? - And when you finally decide to close the connection, how do you do that? TCP RST, or FIN? - Do you send (TCP) keepalives? 4) Also 4.3: " The first negotiation is on the TCPCL protocol version to use. The active entity always sends its Contact Header first and waits for a response from the passive entity. The active entity can repeatedly attempt different protocol versions..." If you read on in this section it seems like the receiver always sends a SESS_TERM if the version is not compatible. So I assume you mean the active entity can open a TCP and try again. And I assume it should do it immediately after the SESS_TERM is received. I believe that's what the following paragraphs say but this part confused me a bit. So might be only an editorial issue. Please clarify! However, if there would be any attempt to send another CH on the same TCP connection, that could lead to ambiguity and would need to be further specified. Also more point, the text does not specify what the receiver's response to the CH is. The figure shows that it will also send a CH, however, that should also be spelled out in the text! 5) sec 4.4.1: "When present, the SNI SHALL contain the same host name used to establish the TCP connection." Not sure what this means... how do you use an host name in an TCP connection? Do you mean the same host name that has been used in name resolution to get the IP address that is used to establish the TCP connection? Or something else? 6) sec 5.1.2: What is the entity receiving the MSG_REJECT supposed to do? 7) sec 5.2.3: General question on the ACK mechanism: As you say correctly the fact that you don't get a notification is not a TCP protocol matter but only an interface matter. E.g. if taps would be used, this information would be available. Was it considered to make the ACK mechanism optional, e.g. by using a flag in the XFER_SEGMENT to request an ACK per segment? Also more questions: - Why are the message flags reflected? - Why is the Acknowledged length field needed if there needs to be one ACK (send in order) for each segment anyway? 8) sec 5.2.4: Can you maybe explain why the XFER_REFUSE is a message/feature of the CL and not the BP? 9) sec 5.2.4: "If a sender receives a XFER_REFUSE message, the sender MUST complete the transmission of any partially sent XFER_SEGMENT message. There is no way to interrupt an individual TCPCL message partway through sending it." Not sure if use of normative language is appropriate here, because I believe what you mean is that as soon as the data/message is given to the TCP connection, you can't call it back. That's just a fact and nothing the sender may or can enforce. However, it could reset the TCP connection effectively but that probably not what is desired. Please clarify or remove normative language! 10) sec 5.2.5.1: Can you further explain what the use case ifs for the Transfer Length Extension? When do you expect the actual length to be different? 11) sec 6.1: " After sending a SESS_TERM message, an entity MAY continue a possible in-progress transfer in either direction." Why is this necessary? Why can the entity not just send the SESS_TERM after the end of the transfer? Please clarify in the doc! 12) 6.1: " When performing an unclean shutdown, a receiving node SHOULD acknowledge all received data segments before closing the TCP connection." What do you mean here? TCP acknowledgements? If so, this should not be normative as TCP will do that not matter what. However, you can not send any new application data/CL ACK after a TCP FIN was sent. Please clarify! 13) sec 6.1: " If a session is to be terminated before a protocol message has completed being sent, then the node MUST NOT transmit the SESS_TERM message but still SHALL close the TCP connection. " Not sure how this case is supposed to happen. When give a message to your TCP stack it will send it. If sending fails on the TCP level, the connection will be closed automatically. Or do I misunderstand the intended scenario here? |
2020-02-20
|
18 | Mirja Kühlewind | [Ballot Position Update] New position, Discuss, has been recorded for Mirja Kühlewind |
2020-02-20
|
18 | Alexey Melnikov | [Ballot comment] [Updated. See the new text at the end.] Thank you for this well written document. It was a pleasure to read! I agree … [Ballot comment] [Updated. See the new text at the end.] Thank you for this well written document. It was a pleasure to read! I agree with Suresh, text about TLS 1.2 compatibility looks dodgy. I also have some comments I would really like to see replies to: The document never states byte order for 16/32/64 bit fields. As you are not using CBOR (or any other format), this can't be presumed to be known. 4.7. Session Parameter Negotiation Enable TLS: Negotiation of the Enable TLS parameter is performed by taking the logical AND of the two contact headers' CAN_TLS flags. A local security policy is then applied to determine of the negotiated value of Enable TLS is acceptable. It can be a reasonable security policy to both require or disallow the use of TLS depending upon the desired network flows. Because this state is negotiated over an unsecured medium, there is a risk of a TLS Stripping as described in Section 8. If the Enable TLS state is unacceptable, the node SHALL terminate the session with a reason code of "Contact Failure". Note that this contact failure reason is different than a failure of TLS handshake or TLS authentication after an agreed-upon and acceptable Enable TLS state. If the negotiated Enable TLS value is true and acceptable then TLS negotiation feature (described in Section 4.4) begins immediately following the contact header exchange. While this text is not wrong, I think it is in a wrong section. The rest of Section 4.7 talks about SESS_INIT message, while the TLS flag was sent in Contact Header and was already negotiated by this point. 9.1. Port Number Within the port registry of [IANA-PORTS], TCP port number 4556 has been previously assigned as the default port for the TCP convergence layer in [RFC7242]. This assignment is unchanged by TCPCL version 4, but the assignment reference is updated to this specification. Each TCPCL entity identifies its TCPCL protocol version in its initial contact (see Section 9.2), so there is no ambiguity about what protocol is being used. The related assignments for UDP and DCCP port 4556 (both registered by [RFC7122]) are unchanged. +------------------------+----------------------------+ | Parameter | Value | +------------------------+----------------------------+ | Service Name: | dtn-bundle | | | | | Transport Protocol(s): | TCP | Is there another document that will define use over DCCP? 9.6. XFER_REFUSE Reason Codes 9.7. SESS_TERM Reason Codes In both of these sections: I don't think the document say anywhere how recipients of unrecognized reason codes should handle them. I think the document should say that they must be treated as "Unknown". ********************************************************************** * Note, that I am conducting an experiment when people aspiring to be* * Area Directors get exposed to AD work ("AD shadowing experiment"). * * As a part of this experiment they get to review documents on IESG * * telechats according to IESG Discuss criteria document and their * * comments get relayed pretty much verbatim to relevant editors/WGs. * * As an AD I retain responsibility in defending their position when * * I agree with it. * * Recipients of these reviews are encouraged to reply to me directly * * about perceived successes or failures of this experiment. * ********************************************************************** I also have some comments on Benjamin's comments below marked with "[[Alexey]]:" The following comments were provided by Benjamin Schwartz : Benjamin would have balloted *No Objections* on this document. He wrote: ## Abstract This version of the TCPCL protocol is based on implementation issues in the earlier TCPCL Version 3 of RFC7242 and updates to the Bundle Protocol (BP) contents This would be better phrased as “This version of the TCPCL protocol resolves implementation issues in …” or similar. ## Section 2.1 The paragraph labeled “TCP Connection” might be better labeled “Connection”, since that is the term being defined. Additionally, it might be clearer to define the “connection” as being the TLS connection when TLS is in use. ## Section 3.1 Terminology: “overlaying” isn’t really a word. Please rephrase. ## Section 3.2 TCP already provides segmentation and ACKs, so why does TCPCL replicate this functionality? The draft should mention the rationale. (I imagine it’s because the Berkeley Sockets API doesn’t surface TCP ACKs in a clear way, or because TLS doesn’t provide authenticated ACKs.) TCP already provides keepalive functionality. Why is it replicated in TCPCL? [[Alexey: I think it was observed that keepalive at the protocol level (or in TLS) work better than TCP keepalives when NATs are used. I am wondering if there is any up-to-date information on this.]] # Section 3.4 “MRU” appears here for the first time without being defined. Similarly, reference is made to a “Transfer MRU”, which also has not yet been defined. Please add forward references or reorder the definitions. # Section 4.4.1 Making compliance with BCP 195 (or any successor) “mandatory” seems too strong, especially since existing implementations will be instantly noncompliant whenever such a successor is published. I would limit the requirement strength to SHOULD when referring to a BCP. [[Alexey: it might be better to use MUST for BCP 195 (maybe reference a specific RFC) and SHOULD for successors?]] # Section 8.9 There is the possibility of a "data dribble" attack in which an entity presents a very small Segment MRU which causes transfers to be split among an large number of very small segments and causes the segmentation overhead to overwhelm the network througput. I’m not sure what it means to “overwhelm the network throughput”, but surely TCP congestion control is already a sufficient mitigation against this concern? Similarly for keepalive spam. |
2020-02-20
|
18 | Alexey Melnikov | Ballot comment text updated for Alexey Melnikov |
2020-02-19
|
18 | Martin Vigoureux | [Ballot Position Update] New position, No Objection, has been recorded for Martin Vigoureux |
2020-02-19
|
18 | Benjamin Kaduk | [Ballot discuss] In Section 4.2 we say that "If an entity is capable of [...] TLS 1.2 or any successors [...], the CAN_TLS flag within … [Ballot discuss] In Section 4.2 we say that "If an entity is capable of [...] TLS 1.2 or any successors [...], the CAN_TLS flag within its contanct [sic] header SHALL be set to 1." I don't understand why we should allow in the spec for an entity to not be capable of TLS 1.2+. Can you give me some examples of situations when you would want to use a TCPCL but cannot use TLS with it? A new major version of TCPCL would be the least-bad time to make a clean break and mandate TLS... There's some good discussion in Section 4.4.2 of the mechanics of TLS X.509 certificate authentication; thanks for that! I do think that there's a fairly critical omission, though, namely that the BP agent needs to provide to the TCPCL Entity the Node ID of the expected next hop from the routing decision (in addition to the hostname/IP address to which to initiate a TCP connection), and this Node ID must also be validated against the TLS certificate and the SESS_INIT from the peer. Otherwise we are in effect falling back to an authorization policy of "anyone with a cert with a uniformResourceIdentifier SAN of the expected scheme is authorized to do anything", which is a pretty weak policy. (In some sense, if we require this, then the Node ID in the SESS_INIT becomes redundant, though I think there are some edge cases where it would still be needed in order for both endpoints to agree on the communicating identities.) I also think we need to discuss the TLS X.509 authentication model that will be used, i.e., "what PKI is being used?". (To be clear, I don't know that any changes to the text will be required, but do think we should be sure we have a clear picture of what the expected deployment strategies are.) The usage of SNI to pick a cert and the DNS-ID (RFC 6125) to authenticate a hostname might imply that the typical "Web PKI" (that deals in hostnames) is intended, but the URIs we need to authenticate Node IDs are not commonly certified by that PKI. Since the server has to present a single certificate even if it is attempting to authenticate as both DNS-ID and the NodeID URI, it seems like it would be challenging to use this scheme in practice against the Web PKI roots. This hybrid of hostname and Node-ID authentication also suffers from an awkward ordering issue when the TLS handshake occurs before the SESS_INIT messages that convey what Node ID is intended to be authenticated -- this requires implementations to use a TLS stack that preserves the peer's certificate and perform name validation after a completed TLS handshake, which is moving more of the complications out of the TLS stack and into the application logic (which introduces risk of security-relevant bugs). It also means that certificate selection must be based solely on SNI hostname and cannot involve the requested Node ID. [There is in theory the selectable name_type field in the TLS server_name extension, but in practice that joint has rusted shut and it seems unlikely that there would be much implementation traction to define a name type for DTN Node ID; RFC 6066 also fails to give a clear indication of the intended semantics when multiple name types are present.] Please double-check for lingering text that assumes the RFC 7242 behaviors where all parameters are in the contact header (vs. SESS_INIT) and use of SDNV encoding vs. fixed-lengths. I noted several instances in the COMMENT section, but do not claim to have made an exhaustive review. |
2020-02-19
|
18 | Benjamin Kaduk | [Ballot comment] Please consider the comments from the secdir telechat review. Abstract This document describes a TCP-based convergence layer (TCPCL) for Delay-Tolerant Networking … [Ballot comment] Please consider the comments from the secdir telechat review. Abstract This document describes a TCP-based convergence layer (TCPCL) for Delay-Tolerant Networking (DTN). This version of the TCPCL protocol is based on implementation issues in the earlier TCPCL Version 3 of RFC7242 and updates to the Bundle Protocol (BP) contents, encodings, and convergence layer requirements in BP Version 7. Specifically, nit: I would hope that it's the changes in this version that are intended to resolve implementation issues from the previous version, and not some explicitly-operations-unfriendly protocol that seeks to maximize implementation issues in deployment ;) Section 1.1 o Mechanisms for locating or identifying other bundle entities (peers) within a network or across an internet. The mapping of Node ID to potential CL protocol and network address is left to nit: I don't think even draft-ietf-dtn-bpbis even really defines "CL" as an acronym (just "CLA"), so we should probably expand it somewhere. o Policies or mechanisms for assigning X.509 certificates, provisioning, deploying, or accessing certificates and private keys, deploying or accessing certificate revocation lists (CRLs), or configuring security parameters on an individual entity or across a network. In a similar vein to my Discuss points, I think I'm going to need some more convincing that (some of) these are best left out of scope. To help me understand the current ecosystem, could you give me some pointers to what has actually been used for deployments? The security of the system as a whole rests on the criteria used by CAs on whether to certify a given public key as being associated with a Node ID (or host name) and the trustworthiness of the CAs to apply those rules accurately and without error. (Perhaps this is not what you meant by "assigning X.509 certificates", though.) o Uses of TLS which are not based on X.509 certificate authentication (see Section 8.10.2) or in which authentication is not available (see Section 8.10.1). Section 4.2 seems to describe "opportunistic TLS" and reference RFC 7435, so I don't think we need to say "or in which authentication is not available" here. Section 2.1 A TCPCL Entity MAY support zero or more passive listening elements that listen for connection requests from other TCPCL Entities operating on other entitys in the network. nit: "entities" A TCPCL Entity MAY passivley initiate any number of TCPCL Sessions from requests received by its passive listening element(s) if the entity uses such elements. I'm not sure what "passively initiate" is supposed to mean. Is this a session initiation that's triggered by an incoming message in some fashion? Also, nit: "passively" TCPCL Session: A TCPCL session (as opposed to a TCP connection) is a TCPCL communication relationship between two TCPCL entities. Within a single TCPCL session there are two possible transfer streams; one in each direction, with one stream from each entity being the outbound stream and the other being the inbound stream. The lifetime of a TCPCL session is bound to the lifetime of an underlying TCP connection. A TCPCL session is terminated when the TCP connection ends, due either to one or both entities actively closing the TCP connection or due to network errors causing a failure of the TCP connection. For the remainder of this document, the term "session" without the prefix "TCPCL" refers to a TCPCL session. This leaves me confused as to whether there is one TCP connection or two between interacting entities ("two possible transfer streams" vs. "the TCP connection ends") -- are the two transfer streams just the two directions of the single TCP connection? Idle Session: A TCPCL session is idle while the only messages being transmitted or received are KEEPALIVE messages. Live Session: A TCPCL session is live while any messages are being transmitted or received. nit: any messages other than KEEPALIVE, I presume. In Figure 2, are any of the respective sessions 1 through n targetting the same "other TCPCL Entity's Listener" or is the idea that they're 1:1 session:other-entity? If they're 1:1, it might be worth trying to make the arrow from #n go to the box in the background instead of the one in the foreground. (This potentially holds true whether the Acks are TCP ACKs or XFER_ACKs.) In Figure 3, if there's actually only one (bidirectional) TCP connection, we might want to think about indicating the sequencing between Acks and Segments in the same direction. Section 3.1 Session State Changed: The TCPCL supports indication when the session state changes. The top-level session states indicated are: Is this an indication from the TCPCL Entity to the BP agent? (Similarly for "Idle Changed", etc.) ongoing transfer. Because TCPCL transmits serially over a TCP connection, it suffers from "head of queue blocking" this indication provides information about when a session is available for immediate transfer start. nit: run-on sentence. Begin Transmission: The principal purpose of the TCPCL is to allow a BP agent to transmit bundle data over an established TCPCL session. Transmission request is on a per-session basis, the CL does not necessarily perform any per-session or inter-session queueing. Any queueing of transmissions is the obligation of the nit: comma splice. Transmission Failure: The TCPCL supports positive indication of certain reasons for bundle transmission failure, notably when the peer entity rejects the bundle or when a TCPCL session ends before transfer success. The TCPCL itself does not have a notion of transfer timeout. I'm sure there is a subtle distinction here between a "TCPCL notion of transfer timeout" and the underlying TCP connection timing out on retransmissions, but I'm not sure what it is, yet. Section 3.2 negotiate the use of TLS security (as described in Section 4). Once contact negotiation is complete, TCPCL messaging is available and the session negotiation is used to set parameters of the TCPCL session. One of these parameters is a Node ID of each TCPCL Entity. This is used to assist in routing and forwarding messages by the BP Agent and is part of the authentication capability provided by TLS. I might phrase this as "the Node ID that each TCPCL Entity is acting as". Once negotiated, the parameters of a TCPCL session cannot change and if there is a desire by either peer to transfer data under different parameters then a new session must be established. This makes CL logic simpler but relies on the assumption that establishing a TCP connection is lightweight enough that TCP connection overhead is negligable compared to TCPCL data sizes. (I assume this assumption holds true ~universally for DTN TCPCL consumers?) There is no fundamental limit on the number of TCPCL sessions which a single node can establish beyond the limit imposed by the number of available (ephemeral) TCP ports of the passive entity. "epehemeral TCP ports" on the passive entity seems like a typo, as Section 4.1 suggests that the passive entity usually uses the assigned port 4556 and the source port on the active entity is an ephemeral one. Section 4.3). Regardless of the reason, session termination is initiated by one of the entities and responded-to by the other as illustrated by Figure 13 and Figure 14. Even when there are no transfers queued or in-progress, the session termination procedure allows each entity to distinguish between a clean end to a session and the TCP connection being closed because of some underlying network issue. [This is also useful for TLS connections, as proper usage of bidirectional "close_notify" alerts is far from universal.] Section 3.3 It would probably be worth expanding "PCH" and "PSI" on first use rather than last use. Contact negotiation involves exchanging a Contact Header (CH) in both directions and deriving a negotiated state from the two headers. The contact negotiation sequencing is performed either as the active or passive entity, and is illustrated in Figure 5 and Figure 6 respectively which both share the data validation and analyze final states of the "[PCH]" activity of Figure 7 and the "[TCPCLOSE]" activity which indicates TCP connection close. Successful I'm not sure what "analyze final states" is intended to mean. (It shows up again later, in discussion of Figure 10.) Where does [PCH] occur in Figure 6? (Should the "[PSI]" be changed to "[PCH]"?) Several of the figures have "negotiate " steps that do not have possible paths for failure of negotiation; only Figure 4 seems to have a disclaimer that it only shows the "nominal" case. Session termination involves one entity initiating the termination of the session and the other entity acknowledging the termination. For either entity, it is the sending of the SESS_TERM message which transitions the session to the ending substate. While a session is being terminated only in-progress transfers can be completed and no new transfers can be started. Would it be more clear to say "is in the ending substate" than the current "is being terminated"? Section 3.4 Each TCPCL session allows a negotiated transfer segmentation polcy to nit: "policy" be applied in each transfer direction. A receiving node can set the Segment MRU in its contact header to determine the largest acceptable nit: this is in SESS_INIT now, not the contact header. attempt, and it SHOULD use a (binary) exponential back-off mechanism Thank you for specifying the base of the exponent! Section 4.1 established, the entity SHALL close the TCP connection. The ordering of the contact header exchange allows the passive entity to avoid allocating resources to a potential TCPCL session until after a valid contact header has been received from the passive entity. This I'm pretty sure that the passive entity is not going to get a contact header from itself. Section 4.2 It might be worth discussing the invariants of the contact header/protocol, akin to https://tools.ietf.org/html/rfc8446#section-9.3 (though presumably less complicated!), since we are changing how things work between TCPCLv3 and TCPCLv4. If an entity is capable of exchanging messages according to TLS 1.2 [RFC5246] or any successors [RFC8446] that are compatible with TLS 1.2, the CAN_TLS flag within its contanct header SHALL be set to 1. This behavor prefers the use of TLS when possible, even if security policy does not allow or require authentication. This follows the opportunistic security model of [RFC7435]. When possible and there is not an active attack, which is an important difference! Section 4.3 The first negotiation is on the TCPCL protocol version to use. The active entity always sends its Contact Header first and waits for a response from the passive entity. The active entity can repeatedly attempt different protocol versions in descending order until the passive entity accepts one with a corresponding Contact Header reply. Only upon response of a Contact Header from the passive entity is the TCPCL protocol version established and parameter negotiation begun. Is this on the same TCP connection or successive new ones? (The next paragraph implies the same one, but it would be good to be explicit about this.) Section 4.4 session to non-TLS operation. If this is desired, the entire TCPCL session MUST be terminated and a new non-TLS-negotiated session established. Absent some reason why this might be desired, I don't think we need to have this last sentence. Once established, the lifetime of a TLS session SHALL be bound to the lifetime of the underlying TCP connection. Immediately prior to As the secdir reviewer notes, "TLS session" is an existing term of art for TLS-related state that can be persisted across underlying TCP connections by means of "resumption". Given my current understanding of TCPCL (possibly flawed), I suggest avoiding the phrase and sticking with the current TCPCL session semantics that are bound to the TCP connection. actively ending a TLS session after TCPCL session termination, the peer which sent the original (non-reply) SESS_TERM message SHOULD follow the Closure Alert procedure of [RFC5246] to cleanly terminate the TLS session. Because each TCPCL message is either fixed-length RFC 8446 is the current reference (https://tools.ietf.org/html/rfc8446#section-6.1). Section 4.4.1 session entities SHALL begin a TLS handshake in accordance with TLS 1.2 [RFC5246] or any successors that are compatible with TLS 1.2. By I think we can just say "begin a TLS handshake", citing RFC 8446, drop the "in accordance with..." text, and say that version 1.2 or higher MUST be negotiated. convention, this protocol uses the node which initiated the underlying TCP connection as the "client" role of the TLS handshake request. That is to say, the "active" endpoint is the TLS client? Server Certificate: The passive entity SHALL supply a certificate within the TLS handshake to allow authentication of its side of the session. When assigned a stable host name or address, the passive entity certificate SHOULD contain a subjectAltName entry which authenticates that host name or address. The passive entity The current best practice is to reference RFC 6125 and talk about the "DNS-ID" of the certificate. certificate SHOULD contain a subjectAltName entry of type uniformResourceIdentifier which authenticates the Node ID of the Is this "SHOULD" a "MUST (unless using opportunistic TLS)"? I might suggest a different phrasing if so. peer. The passive entity MAY use the SNI host name to choose an appropriate server-side certificate which authenticates that host name and corresponding Node ID. I'm not sure on how often there will be a unique "corresponding Node ID" for a given hostname. This seems like a new requirement that might be worth documenting in a management considerations section. Client Certificate: The active entity SHALL supply a certificate [ditto about RFC 6125, even though technically it only claims to apply to server certificates -- since the situation here is symmetric, I think it's okay to reuse the terminology.] All certificates supplied during TLS handshake SHALL conform with the profile of [RFC5280], or any updates or successors to that profile. nit: "profile of [RFC5280]" sounds like it's RFC 5280 that's being profiled, not that RFC 5280 is itself a profile of X.509. So, I'd say either just "conform with [RFC5280]" or "confirm with the X.509 profile of [RFC5280]". (Well, I'd probably s/conform with/conform to/, too...) When a certificate is supplied during TLS handshake, the full certification chain SHOULD be included unless security policy indicates that is unnecessary. Is this intended to say that the root (trust anchor) certificate should also be sent, even when the peer is assumed to already have a copy? (This is not typical in TLS usage in other scenarios.) If a TLS handshake cannot negotiate a TLS session, both entities of the TCPCL session SHALL close the TCP connection. At this point the TCPCL session has not yet been established so there is no TCPCL session to terminate. This also avoids any potential security issues assoicated with further TCP communication with an untrusted peer. I'm not entirely sure what's intended by "potential security issues" here -- how is this different from any other TCP connection not using TLS? Section 4.4.2 The procedure that we describe here has a fairly convoluted description and may be a little hard to follow (roughly, it seems to be "try really hard to validate Node ID, and try somewhat less hard to validate hostname/IP, but if you can do the former but not the latter it's still okay"). It might be worth restructuring to have something of a prioritized list/procedure, along the lines of "attempt to validate the Node ID; if that succeeds, you're done and all is good. If all fields for validation is present but validation still fails, abort. Otherwise (not all fields for Node-ID validation are present), if policy allows, validate the hostname (possibly limited to some set known from out-of-band information to be "trusted" to a higher extent than just having a certificate might indicate). Fallback to opportunistic TLS can be allowed by local policy." Using X.509 certificates exchanged during the TLS handshake, each of the entities can attempt to authenticate its peer at the network layer (host name and address) and at the application layer (BP Node ID). The Node ID exchanged in the Session Initialization is likely I think it's perhaps subjective or controversial to say that the network address is authenticated by the X.509 validation process (barring iPAddress certificates) and would suggest just using "host name" if there is no specific reason to also list address. By using the SNI host name (see Section 4.4.1) a single passive entity can act as a convergence layer for multiple BP agents with distinct Node IDs. When this "virtual host" behavior is used, the host name is used as the indication of which BP Node the passive entity is attempting to communicate with. A virtual host CL entity nit: either "communicate as" or "active entity is attempting". entity is attempting to communicate with. A virtual host CL entity can be authenticated by a certificate containing all of the host names and/or Node IDs being hosted or by several certificates each authenticating a single host name and/or Node ID. I suggest to append ", using the SNI value from the client to select which certificate to use". of the TCP connection. The passive entity SHALL attempt to authenticate the IP address of the other side of the TCP connection. The passive entity MAY use the IP address to resolve one or more host names of the active entity and attempt to authenticate those. If Er, is this saying that we basically expect everyone to have IP-address certificates? Also, using reverse DNS like this is pretty risky security posture in the absence of DNSSEC on the reverse zone. I might note in the caption for Figure 17 that the closure procedures can be initiated by either entity. Section 4.5 | SESS_TERM | 0x05 | Indicates that one of the | | | | entities participating in the session | | | | wishes to cleanly terminate the session, as | | | | described in Section 6. | Is section 6.1 a better reference? Section 4.6 Keepalive Interval: A 16-bit unsigned integer indicating the interval, in seconds, between any subsequent messages being transmitted by the peer. The peer receiving this contact header uses this interval to determine how long to wait after any last- message transmission and a necessary subsequent KEEPALIVE message transmission. It might be worth giving more clarity as to whether this is an indication of "this is what I will do" vs. "this is what you should do when talking to me". Node ID Length and Node ID Data: Together these fields represent a [...] message. Every Node ID SHALL be a URI consistent with the requirements of [RFC3986] and the URI schemes of [I-D.ietf-dtn-bpbis]. The Node ID itself can be authenticated as It may be better to refer to the "Bundle Protocol URI scheme types" registry established by bpbis than the hardcoded list of URI schemes contained within bpbis. Section 4.7 An entity calculates the parameters for a TCPCL session by negotiating the values from its own preferences (conveyed by the contact header it sent to the peer) with the preferences of the peer node (expressed in the contact header that it received from the peer). The negotiated parameters defined by this specification are Aren't these from the SESS_INIT message rather than the contact header? Session Keepalive: Negotiation of the Session Keepalive parameter is performed by taking the minimum of this two contact headers' Keepalive Interval. The Session Keepalive interval is a parameter for the behavior described in Section 5.1.1. If the Session Keepalive interval is unacceptable, the node SHALL terminate the session with a reason code of "Contact Failure". It's probably worth mentioning that a value of zero means "keepalives are disabled". The procedure given here does seem consistent with the discussion in Section 5.1.1 that indicates that either peer can unilaterally disable keepalives (as opposed to the behavior one might naively expect by having the encoded value zero reflect an effective interval of "infinity"). Section 4.8 Item Type: A 16-bit unsigned integer field containing the type of the extension item. This specification does not define any extension types directly, but does allocate an IANA registry for such codes (see Section 9.3). nit: I think we typically say that we "allocate" codepoints from registries but "create" registries themselves. choose a keepalive interval no shorter than 30 seconds. There is no logical maximum value for the keepalive interval, but an idle TCP It's a fixed-width field; there's a maximum. Note: The Keepalive Interval SHOULD NOT be chosen too short as TCP retransmissions MAY occur in case of packet loss. Those will have to be triggered by a timeout (TCP retransmission timeout (RTO)), which is dependent on the measured RTT for the TCP connection so that KEEPALIVE messages MAY experience noticeable latency. nit: s/MAY/may/; this statement is describing a property of TCP and not granting implementations permission to engage in a particular behavior. Section 5.2.1 Each transfer entails the sending of a sequence of some number of XFER_SEGMENT and XFER_ACK messages; all are correlated by the same Transfer ID. Transfer IDs from each node SHALL be unique within a single TCPCL session. The initial Transfer ID from each node SHALL have value zero. Subsequent Transfer ID values SHALL be incremented from the prior Transfer ID value by one. Upon exhaustion of the entire 64-bit Transfer ID space, the sending node SHALL terminate the session with SESS_TERM reason code "Resource Exhaustion". I'd suggest adding some discussion that the sender of the XFER_SEGMENTs allocates the Transfer ID and the XFER_ACKs respond to it; the current text is potentially confusing since the ID in an XFER_ACK could be considered to be a "transfer ID from [each] node" but is really in the peer node's namespace. Also, it's not entirely clear that there's a need for predictable IDs starting from zero; https://tools.ietf.org/html/draft-gont-numeric-ids-sec-considerations-04 has some further discussion about potential pitfalls of such predictable identifiers. Section 5.2.2 The flags portion of the message contains two optional values in the two low-order bits, denoted 'START' and 'END' in Table 5. The I'm always a little wary of using "optional" for situations like these, since "optional" can imply that they appear subject to the whims of the implementation/higher-layer, but when they do/don't appear here is actually tightly constrained by the protocol specification. Perhaps it's better to talk of information being conveyed by the value of these bits than them containing optional values. Section 5.2.3 A receiving TCPCL node SHALL send an XFER_ACK message in response to each received XFER_SEGMENT message. The flags portion of the XFER_ACK header SHALL be set to match the corresponding DATA_SEGMENT message being acknowledged. The acknowledged length of each XFER_ACK I don't think there is a DATA_SEGMENT (vs. XFER_SEGMENT) message defined. Also, is the receiver expected to echo flags from the XFER_SEGMENT that it does not comprehend? Section 5.2.4 | Extension | 0x01 | A failure processing the Transfer Extension | | Failure | | Items ha occurred. | nit: "has" Note: If a bundle transmission is aborted in this way, the receiver MAY not receive a segment with the 'END' flag set to 1 for the aborted bundle. The beginning of the next bundle is identified by nit: I think "might not" is more appropriate here, as this is describing expectations and not some active choice the receiver can make. Section 5.2.5.1 Total Length: A 64-bit unsigned integer indicating the size of the data-to-be-transferred. The Total Length field SHALL be treated as authoritative by the receiver. If, for whatever reason, the actual total length of bundle data received differs from the value indicated by the Total Length value, the receiver SHALL treat the transmitted data as invalid. It seems like this might be setting things up for information skew between endpoints, where the receiver has discarded a bundle but the sender thinks it was successfully transmitted. Would it make sense to require an XFER_REFUSE in such a case? Section 6.1 Instead of following a clean shutdown sequence, after transmitting a SESS_TERM message an entity MAY immediately close the associated TCP connection. When performing an unclean shutdown, a receiving node SHOULD acknowledge all received data segments before closing the TCP connection. Not acknowledging received segments can result in unnecessary retransmission. When performing an unclean shutodwn, a I'm not sure I understand the nature of this indicated "unnecessary retransmission". My first thought was that there would be a way to reestablish a new session between the same endpoints and reuse the Transaction ID to "start in the middle" of the bundle, but I don't see any mechanisms designed to allow that or to assign semantics to transaction IDs across sessions. So the only thing I can come up with would be ordinary TCP-layer retransmissions, but those are within the TCP stack's abstraction boundary, so I'm not sure if it makes sense to talk about them. | Contact | 0x04 | The node cannot interpret or negotiate | | Failure | | contact header option. | nit: I think there's a singular/plural mismatch here. connection without sending a SESS_TERM message. If the content of the Session Extension Items data disagrees with the Session Extension Length (i.e. the last Item claims to use more octets than are present in the Session Extension Length), the reception of the contact header is considered to have failed. nit: is it reception of the contact header or the SESS_INIT that is to have failed? Section 8 Thanks for the throrough security considerations; I really appreciate the work that went into the discussion with the secdir reviewer. Section 8.2 I think this text implies that a malicious or compromised node can view bundle contents (which to some extent is a consideration for the core bundle protocol and not the convergence layer anyway), so it's probably okay to leave it as-is. Section 8.3 I suggest noting that an active on-path attacker can also cause use of an older/different TCPCL version. of TCPCL which does not support transport security. It is up to security policies within each TCPCL node to ensure that the TCPCL version in use meets transport security requirements. I'm not sure whether it's worth noting this in the document, but a consequence of this is that if the security policy allows more than one TCPCL version, the on-path attacker has control over which of those versions gets used, even if that protocol itself nominally operats in a secure fashion. Section 8.4 The purpose of the CAN_TLS flag is to allow the use of TCPCL on entities which simply do not have a TLS implementation available. When TLS is available on an entity, it is strongly encouraged that the security policy disallow non-TLS sessions. This requires that Is it only "strongly encouraged" or a "SHALL-level requirement" (per Section 4.2)? Section 8.6 or using it after it has been revoked by its CA. Validating a certificate is a complex task and may require network connectivity if a mechanism such as the Online Certificate Status Protocol (OCSP) is used by the CA. The configuration and use of particular certificate nit: I suggest "external network connectivity"; some level of network connectivity has to be present in order for TCPCL to be used at all... Section 8.7 When permitted by the negotiated TLS version (see [RFC8446]), it is advisable to take advantage of session key updates to avoid those limits. When key updates are not possible, establishing new TCPCL/ TLS session is an alternative to limit session key use. This is not necessarily a question that needs to be answered in the RFC, but do you consider TLS 1.2 renegotiation to be a "session key update mechanism"? Section 8.8 certificates can be guaranteed to validate the peer's Node ID. In circumstances where certificates can only be issued to network host names, Node ID validation is not possible but it could be reasonable to assume that a trusted host is not going to present an invalid Node ID. I think we should also say that determination of whether a given host is trusted in this fashion is out of scope for this document (since it's a very important consideration but we cannot give universal guidance on it). Section 8.9 TCP RST injection is also a DoS vector (potentially from off-path), as boring as it is... Section 8.10 This specification makes use of public key infrastructure (PKI) certificate validation and authentication within TLS. There are alternate uses of TLS which are not necessarily incompatible with the security goals of this specification, but are outside of the scope of this document. There are other PKIs than X.509 PKIs, so I'd suggest "X.509 public key infrastructure". Also, I think it would be reasonable to give some examples of other modes of using TLS ("e.g., non-X.509 certificates or raw public keys") if you want. Section 9 Should we make registries for the various flag words (vs. requiring an RFC updating this one in order to allocate new values)? Section 9.1 The IESG should perhaps talk (again) about updating the port registration made by an IRTF-stream document. Section 11.2 One could perhaps argue that [AEAD-LIMITS] is more properly normative, but I don't feel very strongly about it. |
2020-02-19
|
18 | Benjamin Kaduk | [Ballot Position Update] New position, Discuss, has been recorded for Benjamin Kaduk |
2020-02-19
|
18 | Adam Roach | [Ballot comment] Balloting "No Objection" in the sense of "I trust the sponsoring AD, and have no time this ballot cycle to read the document." … [Ballot comment] Balloting "No Objection" in the sense of "I trust the sponsoring AD, and have no time this ballot cycle to read the document." I have skimmed the document for typical ART-area gotchas, and found none. |
2020-02-19
|
18 | Adam Roach | [Ballot Position Update] New position, No Objection, has been recorded for Adam Roach |
2020-02-19
|
18 | Roman Danyliw | [Ballot comment] Thanks for all of the changes made in response to the LC SECDIR review. Also, thank you for the LC SECDIR review, Chris … [Ballot comment] Thanks for all of the changes made in response to the LC SECDIR review. Also, thank you for the LC SECDIR review, Chris (Wood)! A reference implementation (as noted in [github-dtn-bpbis-tcpcl]) that includes a Wireshark dissector is phenomenal (and a bar we should all strive towards when making a new protocol) ** Section 2.1. In the definition of the TCPCL Session, “there are two possible transfer streams; one in each direction, with one stream from each entity being the outbound stream and the other being the inbound stream.”, what does this imply about the underlying TCP connections? It would be worth being clearer on the relationship between a given stream and the TCP connection. ** Section 3.1. Is the list of provided convergence layer services enumerated in this section unique to the TCPCL, or would it be expected that all CLs would implement it? If the latter, then why isn’t it in the draft-ietf-dtn-bpbis? ** Section 3.2. Per “Each transfer is performed by an sequence of logical segments of data …”, what is the relationship between a “logical segment” and a “transfer segment” (defined in Section 2.1)? ** Section 3.3. Figure 4. What is the state transition from “Established Session Live” to “Established Session Ending”? Wouldn’t a session go from live to idle when the transfer is done (and then session ending)? Is the Session live to Session ending perhaps due to an interrupt or termination request while the transfer is underway? ** Section 4.2. Given that this new version of the convergence layer is a “green field” (judging from the list if implementations), why not require TLS v1.3 as the minimum (rather than TLS v1.2)? ** Section 8.6. (as suggested by Chris in his telechat SECDIR review) This section isn’t clear on the threat. It seems to cover material relevant to validation better aligned with Section 4.4.2. In particular, the reference to RFC5280 and reminder to check CRLs would be needed guidance to added to the Section 4.4.2 paragraph, “Any certificate received during TLS handshake SHALL be validated up to one or more trusted certificate authority (CA) certificates …” ** Editorial Section 2.1. Typo. s/entitys/entities/ Section 2.1. Typo. s/passivley/passively/ Section 2.1. Typo. s/trasnfer/transfer/ Section 2.1. Typo. s/Inititated/Initiated/g Section 3.1. Typo. s/defintion/definition/ Section 3.1. Typo. s/reciver/receiver/ Section 3.1. Typo. s/transmssion/transmission/ Section 3.2. Typo. s/negligable/negligible/ Section 3.2. Typo. s/by an sequence/by a sequence/ Section 3.3. Typo. s/reeiving/receiving/ Section 3.3. Typo. s/Recevied/Received/ Section 3.4. Typo. s/polcy/policy/ Section 4.2. Typo. s/contanct/contact/ Section 4.2. Typo. s/behavor/behavior/ Section 4.4.1. Typo. s/assoicated/associated/ Section 4.4.2. Typo. s/unauthticate/unauthenticated/ Section 4.4.3. s/Connnection/Connection/ Section 4.6. Typo. s/ mulitplicity/ multiplicity/ Please run a spell-check on the document. Additional typos were found past Section 4.6 but were not documented here |
2020-02-19
|
18 | Roman Danyliw | [Ballot Position Update] New position, No Objection, has been recorded for Roman Danyliw |
2020-02-19
|
18 | Alexey Melnikov | [Ballot comment] Thank you for this well written document. It was a pleasure to read! I agree with Suresh, text about TLS 1.2 compatibility looks … [Ballot comment] Thank you for this well written document. It was a pleasure to read! I agree with Suresh, text about TLS 1.2 compatibility looks dodgy. I also have some comments I would really like to see replies to: The document never states byte order for 16/32/64 bit fields. As you are not using CBOR (or any other format), this can't be presumed to be known. 4.7. Session Parameter Negotiation Enable TLS: Negotiation of the Enable TLS parameter is performed by taking the logical AND of the two contact headers' CAN_TLS flags. A local security policy is then applied to determine of the negotiated value of Enable TLS is acceptable. It can be a reasonable security policy to both require or disallow the use of TLS depending upon the desired network flows. Because this state is negotiated over an unsecured medium, there is a risk of a TLS Stripping as described in Section 8. If the Enable TLS state is unacceptable, the node SHALL terminate the session with a reason code of "Contact Failure". Note that this contact failure reason is different than a failure of TLS handshake or TLS authentication after an agreed-upon and acceptable Enable TLS state. If the negotiated Enable TLS value is true and acceptable then TLS negotiation feature (described in Section 4.4) begins immediately following the contact header exchange. While this text is not wrong, I think it is in a wrong section. The rest of Section 4.7 talks about SESS_INIT message, while the TLS flag was sent in Contact Header and was already negotiated by this point. 9.1. Port Number Within the port registry of [IANA-PORTS], TCP port number 4556 has been previously assigned as the default port for the TCP convergence layer in [RFC7242]. This assignment is unchanged by TCPCL version 4, but the assignment reference is updated to this specification. Each TCPCL entity identifies its TCPCL protocol version in its initial contact (see Section 9.2), so there is no ambiguity about what protocol is being used. The related assignments for UDP and DCCP port 4556 (both registered by [RFC7122]) are unchanged. +------------------------+----------------------------+ | Parameter | Value | +------------------------+----------------------------+ | Service Name: | dtn-bundle | | | | | Transport Protocol(s): | TCP | Is there another document that will define use over DCCP? 9.6. XFER_REFUSE Reason Codes 9.7. SESS_TERM Reason Codes In both of these sections: I don't think the document say anywhere how recipients of unrecognized reason codes should handle them. I think the document should say that they must be treated as "Unknown". |
2020-02-19
|
18 | Alexey Melnikov | [Ballot Position Update] Position for Alexey Melnikov has been changed to No Objection from No Record |
2020-02-19
|
18 | Deborah Brungard | [Ballot Position Update] New position, No Objection, has been recorded for Deborah Brungard |
2020-02-19
|
18 | Alexey Melnikov | [Ballot comment] 4.7. Session Parameter Negotiation Enable TLS: Negotiation of the Enable TLS parameter is performed by taking the logical AND … [Ballot comment] 4.7. Session Parameter Negotiation Enable TLS: Negotiation of the Enable TLS parameter is performed by taking the logical AND of the two contact headers' CAN_TLS flags. A local security policy is then applied to determine of the negotiated value of Enable TLS is acceptable. It can be a reasonable security policy to both require or disallow the use of TLS depending upon the desired network flows. Because this state is negotiated over an unsecured medium, there is a risk of a TLS Stripping as described in Section 8. If the Enable TLS state is unacceptable, the node SHALL terminate the session with a reason code of "Contact Failure". Note that this contact failure reason is different than a failure of TLS handshake or TLS authentication after an agreed-upon and acceptable Enable TLS state. If the negotiated Enable TLS value is true and acceptable then TLS negotiation feature (described in Section 4.4) begins immediately following the contact header exchange. While this text is not wrong, I think it is in a wrong section. The rest of Section 4.7 talks about SESS_INIT message, while the TLS flag was sent in Contact Header and was already negotiated by this point. |
2020-02-19
|
18 | Alexey Melnikov | Ballot comment text updated for Alexey Melnikov |
2020-02-18
|
18 | Suresh Krishnan | [Ballot discuss] * Section 4.2: " TLS 1.2 [RFC5246] or any successors [RFC8446] that are compatible with TLS 1.2" Hopefully this … [Ballot discuss] * Section 4.2: " TLS 1.2 [RFC5246] or any successors [RFC8446] that are compatible with TLS 1.2" Hopefully this is easy to resolve but I am not sure what exactly you intended to say with this phrase "that are compatible with TLS 1.2". Can you please expand and clarify? (I think going through Appendix D of RFC8446 may bring up specific things you might be looking for). A similar construct is also used in Section 4.4.1. |
2020-02-18
|
18 | Suresh Krishnan | Ballot discuss text updated for Suresh Krishnan |
2020-02-18
|
18 | Suresh Krishnan | [Ballot discuss] * Section 4.2: " TLS 1.2 [RFC5246] or any successors [RFC8446] that are compatible with TLS 1.2" Hopefully this … [Ballot discuss] * Section 4.2: " TLS 1.2 [RFC5246] or any successors [RFC8446] that are compatible with TLS 1.2" Hopefully this is easy to resolve but I am not sure what exactly you intended to say with this phrase "that are compatible with TLS 1.2". Can you please clarify? (I think going through Appendix D of RFC8446 may bring up specific things you might be looking for). A similar construct is also used in Section 4.4.1. |
2020-02-18
|
18 | Suresh Krishnan | [Ballot Position Update] New position, Discuss, has been recorded for Suresh Krishnan |
2020-02-14
|
18 | Amanda Baber | IANA Review state changed to IANA OK - Actions Needed from Version Changed - Review Needed |
2020-02-13
|
18 | Christopher Wood | Request for Telechat review by SECDIR Completed: Has Nits. Reviewer: Christopher Wood. Sent review to list. |
2020-02-13
|
18 | Barry Leiba | [Ballot comment] TCPCL: I’ve chosen to mentally pronounce this as “tee cee pickle”. Just so you know... Thank you for the work on this stuff. … [Ballot comment] TCPCL: I’ve chosen to mentally pronounce this as “tee cee pickle”. Just so you know... Thank you for the work on this stuff. I have a number of comments, a few of which are substantive but minor; the rest are editorial and don’t need explicit responses. The substantive ones: — Section 3.1 — Session State Changed: The TCPCL supports indication when the session state changes. What does “supports indication” mean? Are you saying that the TCPCL “indicates when the session state changes”? Or does some other entity provide those indications? If the latter, it would be better to say what entity or entities do that, something like, “The TCPCL supports indications of session state changes from the BP agent.” It should also be clear, whatever entity provides the indications, whether they always happen or are optional. For example, can we *rely* on getting “Sesson Negotiating” and “Established” indications, or is it an implementation/deployment/configuration choice that they’re produced? (Same comment for Session Idle Changed, and all other items in this section that talk about indications.) — Section 4.1 — If the passive entity does not receive a Contact Header after some implementation-defined time duration after TCP connection is established, the entity SHALL close the TCP connection. Should there be any recommendation about that implementation-defined time duration, as there is in the previous paragraph? No judgment here, but just a question. I’ll note that if I never close the TCP connection I can say that I’m obeying the “SHALL”, and it’s just that my implementation defines the time duration at 17 years. — Section 4.4 — Once established, there is no mechanism available to downgrade a TCPCL session to non-TLS operation. If this is desired, the entire TCPCL session MUST be terminated and a new non-TLS-negotiated session established. I suggest that it’s unlikely that this will be necessary, and I suggest being stronger about not doing it. Does this work for you?: NEW Once established, there is no mechanism available to downgrade a TCPCL session to non-TLS operation. If such a downgrade is necessary, the entire TCPCL session would have to be terminated and a new non-TLS-negotiated session established. This is NOT RECOMMENDED. END — Section 6.1 — After sending a SESS_TERM message, an entity MAY continue a possible in-progress transfer in either direction. After sending a SESS_TERM message, an entity SHALL NOT begin any new outgoing transfer for the remainder of the session. After receving a SESS_TERM message, an entity SHALL NOT accept any new incoming transfer for the remainder of the session. Checking something here… according to this, if A sends SESS_TERM to B: - A MUST NOT begin a new transfer to B - B MUST NOT accept a new transfer from A - But B is allowed to begin a new transfer to A, and A can accept it Is that as intended? - - - - - - - - Editorial comments: — Section 1.1 — o Policies or mechanisms for assigning X.509 certificates, provisioning, deploying, or accessing certificates and private keys, deploying or accessing certificate revocation lists (CRLs), or configuring security parameters on an individual entity or across a network. When a list item contains commas, it’s customary to use semicolons to delimit the outer list, in order to avoid confusion. So: NEW o Policies or mechanisms for assigning X.509 certificates; provisioning, deploying, or accessing certificates and private keys; deploying or accessing certificate revocation lists (CRLs); or configuring security parameters on an individual entity or across a network. END — Section 2.1 — Idle Session: A TCPCL session is idle while the only messages being transmitted or received are KEEPALIVE messages. It would be useful to have a forward reference here, “(see Section 5.1.1)”. Live Session: A TCPCL session is live while any messages are being transmitted or received. Maybe “while any messages other than KEEPALIVEs are being...” — Section 3.3 — The states of a nominal TCPCL session (i.e. without session failures) are indicated in Figure 4. Why “nominal”? Or do you mean to say “normal”? (And “i.e.” needs a comma after it throughout the document, as does “e.g.”.) Session "Live" means transmitting or reeiving over a transfer Typo: “receiving” — Section 3.4 — In a situation where network "goodput" is dynamic, the transfer segmentation size can also be dynamic It may be cute, but is there really a need to make up that word and use it just once? Will everyone understand it, or will it just make some people (whose grasp of English isn’t as good as ours) pause and wonder for an unnecessary moment? I don’t feel strongly about it — just asking the question. — Section 4 — For example, some sessions MAY be opened proactively and maintained for as long as is possible given the network conditions, while other sessions MAY be opened only when there is a bundle that I think these are not BCP 14 “MAY”, but just plain English “may” (or “might”). — Section 4.1 — Therefore, the entity MUST retry the connection setup no earlier than some delay time from the last attempt This starts to look as though “the entity MUST retry the connection setup”, which is not what you mean. You can avoid this by moving the negative, and I think it reads more cleanly that way: NEW Therefore, the entity MUST NOT retry the connection setup without some delay time from the last attempt END — Section 4.3 — The first negotiation is on the TCPCL protocol version to use. The active entity always sends its Contact Header first and waits for a response from the passive entity. The active entity can repeatedly attempt different protocol versions in descending order until the passive entity accepts one with a corresponding Contact Header reply. Only upon response of a Contact Header from the passive entity is the TCPCL protocol version established and parameter negotiation begun. During contact initiation, the active TCPCL node SHALL send the highest TCPCL protocol version on a first session attempt for a TCPCL peer. If the active entity receives a Contact Header with a different protocol version than the one sent earlier on the TCP connection, the TCP connection SHALL be closed. If the active entity receives a SESS_TERM message with reason of "Version Mismatch", that node MAY attempt further TCPCL sessions with the peer using earlier protocol version numbers in decreasing order. Managing multi-TCPCL- session state such as this is an implementation matter. The latter paragraph repeats some of what’s in the former, as though they were written separately and pasted together. May I suggest merging them this way?: NEW The first negotiation is on the TCPCL protocol version to use. The active entity always sends its Contact Header first and waits for a response from the passive entity. During contact initiation, the active TCPCL node SHALL send the highest acceptable TCPCL protocol version on a first session attempt to a TCPCL peer. If the active entity receives a Contact Header with a different protocol version than the one it had sent, the TCP connection SHALL be closed. If the active entity receives a SESS_TERM message with reason of "Version Mismatch", that node MAY attempt further TCPCL sessions with the peer, using earlier protocol version numbers in decreasing order. Managing multi-TCPCL-session state such as this is an implementation matter. Only upon response of an acceptable Contact Header from the passive entity is the TCPCL protocol version established and parameter negotiation begun. END the node MAY either terminate the session (with a reason code of "Version mismatch") or the node MAY adapt its operation to conform to the older version of the protocol. The first “the node MAY” is already factored out of the “either”, so you can strike the second instance: NEW the node MAY either terminate the session (with a reason code of "Version mismatch") or adapt its operation to conform to the older version of the protocol. END — Section 4.6 — The order and mulitplicity of these Session Extension Items MAY be significant, as defined in the associated type specification(s). This is not a BCP 14 “MAY”, but just a plain English “may” (or “might”). — Section 4.7 — If the either Transfer MRU or Segment MRU is unacceptable “If either the” — words swapped. Session Keepalive: Negotiation of the Session Keepalive parameter is performed by taking the minimum of this two contact headers' Keepalive Interval. “of the two” and “Intervals”. It can be a reasonable security policy to both require or disallow the use of TLS depending upon the desired network flows. You can’t both require and disallow at the same time. You mean “either”, not “both”. — Section 4.8 — Flags: A one-octet field containing generic bit flags This field is called “Item Flags” in the diagram, and should be called that here as well. — Section 5.1.1 — Note: The Keepalive Interval SHOULD NOT be chosen too short as TCP retransmissions MAY occur in case of packet loss. … KEEPALIVE messages MAY experience noticeable latency. These are not BCP 14 “MAY”, but just plain English “may” (or “might”). — Section 5.2 — The choice of the length to use for segments is an implementation matter, but each segment MUST be no larger than the As I recommended earlier, I think MUST NOT is clearer than MUST in sentences such as this, so I suggest, “but each segment MUST NOT be larger than”. — Section 5.2.2 — The order and mulitplicity of these transfer extension items MAY be significant, as defined in the associated type specification(s). This is not a BCP 14 “MAY”, but just a plain English “may” (or “might”). — Section 5.2.4 — As data segments and acknowledgments MAY cross on the wire This is not a BCP 14 “MAY”, but just a plain English “may” (or “might”). bundle after transmitting a XFER_REFUSE message since messages MAY cross on the wire; This is not a BCP 14 “MAY”, but just a plain English “may” (or “might”). Note: If a bundle transmission is aborted in this way, the receiver MAY not receive a segment with the 'END' flag set to 1 for the aborted bundle. This is not a BCP 14 “MAY”, but just a plain English “may” (or “might”). But, perhaps what you really want here is “will not”? — Section 5.2.5 — Flags: A one-octet field containing generic bit flags This field is called “Item Flags” in the diagram, and should be called that here as well. |
2020-02-13
|
18 | Barry Leiba | [Ballot Position Update] New position, No Objection, has been recorded for Barry Leiba |
2020-02-13
|
18 | Tero Kivinen | Request for Telechat review by SECDIR is assigned to Christopher Wood |
2020-02-13
|
18 | Tero Kivinen | Request for Telechat review by SECDIR is assigned to Christopher Wood |
2020-02-12
|
18 | Magnus Westerlund | IESG state changed to IESG Evaluation from Waiting for Writeup |
2020-02-12
|
18 | Amy Vezza | Placed on agenda for telechat - 2020-02-20 |
2020-02-12
|
18 | Magnus Westerlund | Ballot has been issued |
2020-02-12
|
18 | Magnus Westerlund | [Ballot Position Update] New position, Yes, has been recorded for Magnus Westerlund |
2020-02-12
|
18 | Magnus Westerlund | Created "Approve" ballot |
2020-02-12
|
18 | Magnus Westerlund | Ballot writeup was changed |
2020-01-28
|
18 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-18.txt |
2020-01-28
|
18 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-01-28
|
18 | Brian Sipos | Uploaded new revision |
2020-01-19
|
17 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-17.txt |
2020-01-19
|
17 | (System) | New version accepted (logged-in submitter: Brian Sipos) |
2020-01-19
|
17 | Brian Sipos | Uploaded new revision |
2020-01-16
|
16 | Jean Mahoney | Closed request for Last Call review by GENART with state 'Overtaken by Events' |
2019-11-29
|
16 | Jean Mahoney | Assignment of request for Last Call review by GENART to Suhas Nandakumar was withdrawn |
2019-11-22
|
16 | (System) | IANA Review state changed to Version Changed - Review Needed from IANA - Not OK |
2019-11-22
|
16 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-16.txt |
2019-11-22
|
16 | (System) | New version approved |
2019-11-22
|
16 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2019-11-22
|
16 | Brian Sipos | Uploaded new revision |
2019-11-06
|
15 | Christopher Wood | Request for Last Call review by SECDIR Completed: Has Issues. Reviewer: Christopher Wood. Sent review to list. |
2019-11-06
|
15 | (System) | IANA Review state changed to IANA - Not OK from IANA - Review Needed |
2019-11-06
|
15 | Sabrina Tanamal | (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has completed its review of draft-ietf-dtn-tcpclv4-15. If any part of this review is inaccurate, please let … (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has completed its review of draft-ietf-dtn-tcpclv4-15. If any part of this review is inaccurate, please let us know. The IANA Functions Operator has a question about one of the actions requested in the IANA Considerations section of this document. The IANA Functions Operator understands that, upon approval of this document, there are eight actions which we must complete. First, IANA understands that port 4556 will continue to be used for TCPCL version 4. IANA Question --> the reference for port 4556 for TCP, UDP, and DCCP is [RFC7242]. Should [ RFC-to-be ] be added to the reference for port 4556 in the port and service name registry? Second, in the Bundle Protocol TCP Convergence-Layer Version Numbers registry on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ a single value will be added to the registry as follows: Value: 4 Description: TCPCLv4 Reference: [ RFC-to-be ] Third, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 Session Extension Types. The new registry will be created n the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ Values will range between 0x0000 and 0xFFFF. For values between 0x001 and 0x7FFF the registry bill be managed via Expert Review as defined in RFC 8126. Values in the range 0x8000 and 0xFFFF are reserved for Private Use as defined in RFC 8126. There are no initial registrations in the new registry. The initial registry is: +----------------+--------------------------+ | Code | Session Extension Type | +----------------+--------------------------+ | 0x0000 | Reserved | | 0x0001--0x7FFF | Unassigned | | 0x8000--0xFFFF | Private/Experimental Use | +----------------+--------------------------+ Fourth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 Transfer Extension Types. The new registry will be created on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ Values will range between 0x0000 and 0xFFFF. For values between 0x001 and 0x7FFF the registry bill be managed via Expert Review as defined in RFC 8126. Values in the range 0x8000 and 0xFFFF are reserved for Private Use as defined in RFC 8126. There are initial registrations in the new registry as follows: +----------------+---------------------------+---------------+ | Code | Transfer Extension Type | Reference | +----------------+---------------------------+---------------+ | 0x0000 | Reserved | [ RFC-to-be ] | | 0x0001 | Transfer Length Extension | [ RFC-to-be ] | | 0x0002--0x7FFF | Unassigned | | | 0x8000--0xFFFF | Private/Experimental Use | | +----------------+---------------------------+---------------+ Fifth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 Message Types. The new registry will be created on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ Values will range between 0x00 and 0xFF. Values between 0x01 and 0xEF are registered via RFC Required as defined in RFC 8126. Values in the range 0xF0 and 0xFF are reserved for private use as defined in RFC 8126. There are initial registrations in the new registry as follows: +------------+--------------------------+---------------+ | Code | Message Type | Reference | +------------+--------------------------+---------------+ | 0x00 | Reserved | [ RFC-to-be ] | | 0x01 | XFER_SEGMENT | [ RFC-to-be ] | | 0x02 | XFER_ACK | [ RFC-to-be ] | | 0x03 | XFER_REFUSE | [ RFC-to-be ] | | 0x04 | KEEPALIVE | [ RFC-to-be ] | | 0x05 | SESS_TERM | [ RFC-to-be ] | | 0x06 | MSG_REJECT | [ RFC-to-be ] | | 0x07 | SESS_INIT | [ RFC-to-be ] | | 0x08--0xEF | Unassigned | | | 0xF0--0xFF | Private/Experimental Use | | +------------+--------------------------+---------------+ Sixth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 XFER_REFUSE Reason Codes. The new registry will be created on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ Values will range between 0x00 and 0xFF. Values between 0x00 and 0xEF are registered via RFC Required as defined in RFC 8126. Values in the range 0xF0 and 0xFF are reserved for private use as defined in RFC 8126. There are initial registrations in the new registry as follows: +------------+--------------------------+---------------+ | Code | Refusal Reason | Reference | +------------+--------------------------+---------------+ | 0x00 | Unknown | [ RFC-to-be ] | | 0x01 | Extension Failure | [ RFC-to-be ] | | 0x02 | Completed | [ RFC-to-be ] | | 0x03 | No Resources | [ RFC-to-be ] | | 0x04 | Retransmit | [ RFC-to-be ] | | 0x05--0xEF | Unassigned | | | 0xF0--0xFF | Private/Experimental Use | | +------------+--------------------------+---------------+ Seventh, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 SESS_TERM Reason Codes. The new registry will be created on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ Values will range between 0x00 and 0xFF. Values between 0x00 and 0xEF are registered via RFC Required as defined in RFC 8126. Values in the range 0xF0 and 0xFF are reserved for private use as defined in RFC 8126. There are initial registrations in the new registry as follows: +------------+--------------------------+---------------+ | Code | Termination Reason | Reference | +------------+--------------------------+---------------+ | 0x00 | Unknown | [ RFC-to-be ] | | 0x01 | Idle timeout | [ RFC-to-be ] | | 0x02 | Version mismatch | [ RFC-to-be ] | | 0x03 | Busy | [ RFC-to-be ] | | 0x04 | Contact Failure | [ RFC-to-be ] | | 0x05 | Resource Exhaustion | [ RFC-to-be ] | | 0x06--0xEF | Unassigned | | | 0xF0--0xFF | Private/Experimental Use | | +------------+--------------------------+---------------+ Eighth, a new registry is to be created called the Bundle Protocol TCP Convergence-Layer Version 4 MSG_REJECT Reason Code. The new registry will be created on the Bundle Protocol registry page located at: https://www.iana.org/assignments/bundle/ Values will range between 0x00 and 0xFF. Values between 0x00 and 0xEF are registered via RFC Required as defined in RFC 8126. Values in the range 0xF0 and 0xFF are reserved for private use as defined in RFC 8126. There are initial registrations in the new registry as follows: +------------+--------------------------+---------------+ | Code | Rejection Reason | Reference | +------------+--------------------------+---------------+ | 0x00 | reserved | | | 0x01 | Message Type Unknown | [ RFC-to-be ] | | 0x02 | Message Unsupported | [ RFC-to-be ] | | 0x03 | Message Unexpected | [ RFC-to-be ] | | 0x04--0xEF | Unassigned | | | 0xF0--0xFF | Private/Experimental Use | | +------------+--------------------------+---------------+ The IANA Functions Operator understands that these are the only actions required to be completed upon approval of this document. Note: The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is meant only to confirm the list of actions that will be performed. Thank you, Sabrina Tanamal Senior IANA Services Specialist |
2019-11-06
|
15 | (System) | IESG state changed to Waiting for Writeup from In Last Call |
2019-11-03
|
15 | Mehmet Ersue | Request for Last Call review by OPSDIR Completed: Has Nits. Reviewer: Mehmet Ersue. Review has been revised by Mehmet Ersue. |
2019-11-03
|
15 | Mehmet Ersue | Request for Last Call review by OPSDIR Completed: Has Nits. Reviewer: Mehmet Ersue. Sent review to list. |
2019-10-28
|
15 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Mehmet Ersue |
2019-10-28
|
15 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Mehmet Ersue |
2019-10-25
|
15 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Christopher Wood |
2019-10-25
|
15 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Christopher Wood |
2019-10-24
|
15 | Jean Mahoney | Request for Last Call review by GENART is assigned to Suhas Nandakumar |
2019-10-24
|
15 | Jean Mahoney | Request for Last Call review by GENART is assigned to Suhas Nandakumar |
2019-10-23
|
15 | Amy Vezza | IANA Review state changed to IANA - Review Needed |
2019-10-23
|
15 | Amy Vezza | The following Last Call announcement was sent out (ends 2019-11-06): From: The IESG To: IETF-Announce CC: magnus.westerlund@ericsson.com, dtn-chairs@ietf.org, edward.birrane@jhuapl.edu, Edward Birrane , … The following Last Call announcement was sent out (ends 2019-11-06): From: The IESG To: IETF-Announce CC: magnus.westerlund@ericsson.com, dtn-chairs@ietf.org, edward.birrane@jhuapl.edu, Edward Birrane , draft-ietf-dtn-tcpclv4@ietf.org, dtn@ietf.org Reply-To: last-call@ietf.org Sender: Subject: Last Call: (Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4) to Proposed Standard The IESG has received a request from the Delay/Disruption Tolerant Networking WG (dtn) to consider the following document: - 'Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4' as Proposed Standard The IESG plans to make a decision in the next few weeks, and solicits final comments on this action. Please send substantive comments to the last-call@ietf.org mailing lists by 2019-11-06. Exceptionally, comments may be sent to iesg@ietf.org instead. In either case, please retain the beginning of the Subject line to allow automated sorting. Abstract This document describes a revised protocol for the TCP-based convergence layer (TCPCL) for Delay-Tolerant Networking (DTN). The protocol revision is based on implementation issues in the original TCPCL Version 3 of RFC7242 and updates to the Bundle Protocol contents, encodings, and convergence layer requirements in Bundle Protocol Version 7. Specifically, the TCPCLv4 uses CBOR-encoded BPv7 bundles as its service data unit being transported and provides a reliable transport of such bundles. Several new IANA registries are defined for TCPCLv4 which define some behaviors inherited from TCPCLv3 but with updated encodings and/or semantics. The file can be obtained via https://datatracker.ietf.org/doc/draft-ietf-dtn-tcpclv4/ IESG discussion can be tracked via https://datatracker.ietf.org/doc/draft-ietf-dtn-tcpclv4/ballot/ No IPR declarations have been submitted directly on this I-D. |
2019-10-23
|
15 | Amy Vezza | IESG state changed to In Last Call from Last Call Requested |
2019-10-23
|
15 | Magnus Westerlund | Last call was requested |
2019-10-23
|
15 | Magnus Westerlund | Ballot approval text was generated |
2019-10-23
|
15 | Magnus Westerlund | Ballot writeup was generated |
2019-10-23
|
15 | Magnus Westerlund | IESG state changed to Last Call Requested from AD Evaluation::AD Followup |
2019-10-23
|
15 | Magnus Westerlund | Last call announcement was generated |
2019-10-16
|
15 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-15.txt |
2019-10-16
|
15 | (System) | New version approved |
2019-10-16
|
15 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2019-10-16
|
15 | Brian Sipos | Uploaded new revision |
2019-09-19
|
14 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-14.txt |
2019-09-19
|
14 | (System) | New version approved |
2019-09-19
|
14 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2019-09-19
|
14 | Brian Sipos | Uploaded new revision |
2019-08-20
|
13 | (System) | Sub state has been changed to AD Followup from Revised ID Needed |
2019-08-20
|
13 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-13.txt |
2019-08-20
|
13 | (System) | New version approved |
2019-08-20
|
13 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2019-08-20
|
13 | Brian Sipos | Uploaded new revision |
2019-08-07
|
12 | Edward Birrane | Document Shepherd Write-Up for Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 Ed Birrane 19 June 2019 (1) What type of RFC is being requested? … Document Shepherd Write-Up for Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 Ed Birrane 19 June 2019 (1) What type of RFC is being requested? Why is this the proper type of RFC? Is this type of RFC indicated in the title page header? A Proposed Standard is being requested. This is the appropriate type of RFC because the specification documented in the current Internet Draft describes a protocol that is being implemented and used on the Internet. The title page header indicates that the intended status is Standards Track. (2) The IESG approval announcement includes a Document Announcement Write-Up. Please provide such a Document Announcement Write-Up. DOCUMENT ANNOUNCEMENT ------------------------------------------------------------------------------- Document Announcement Write-Up for Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 Ed Birrane 18 June 2019 Technical Summary: This document describes the Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 (TCPCLv4) for use with the Bundle Protocol Version 7 (BPv7) [I-D.ietf-dtn-bpbis]. The BPv7 implements a store-and-forward overlay network suitable for delay-tolerant message exchange. The protocol data unit for the BPv7 is the "bundle". BPv7 agents require convergence layer adapters (CLAs) to send and receive "bundles" using the service of some "native" link, network, or Internet protocol. Both the BPv7 and its CLAs reside at the application layer of the Internet model protocol stack [RFC1122]. The TCPCLv4 describes a CLA that sends and received bundles using the well-known Transmission Control Protocol (TCP). This specification describes the format and processing of the protocol data units passed between entities participating in TCPCLv4 communications. Working Group Summary: TCPCLv4 is descended from an experimental IRTF specification TCPCLv3 [RFC7242]. Implementation experience with TCPCLv3 identified limitations such as ambiguity in bundle acknowledgment and refusal, non-normative discussion on how to incorporate TLS, and minor inefficiencies associated with sequencing. TCPCLv4 was created to address those limitations and prepare the specification for non-experimental use. Technical discussions over the last 3 years have been well informed and focused on TLS negotiations, overall protocol agent state machines, and a protocol extension mechanism. There is no controversy related to the adoption of the specification; DTNWG consensus on the draft is strong. Document Quality: The workflow for TCPCLv4 remained largely unchanged from that of TCPCLv3 for which reference implementations exist. Co-author B. Sipos has created a reference implementation of TCPCLv4 to demonstrate features and ensure the clarity of the draft. Much of the recent review provided by the DTNWG focused on increasing the overall clarity of the specification to ensure no ambiguities exist for implementers. There have been no problems discovered with the reference implementation for this draft. Personnel: The Document Shepherd is Ed Birrane. The Responsible Area Director is Magnus Westerlund. ------------------------------------------------------------------------------- (3) Briefly describe the review of this document that was performed by the Document Shepherd. The Document Shepherd has been reviewing and commenting on drafts of this specification since March of 2017 (IETF 98). The current edition of the specification is considered ready for publication. (4) Does the document Shepherd have any concerns about the depth or breadth of the reviews that have been performed? No. Reviews have been performed by persons with a good understanding of the Bundle Protocol and the concept of convergence layer adapters. Original authors of the TCPCLv3 also reviewed and refined this specification, as have implementers in the context of a reference implementation. (5) Do portions of the document need review from a particular or from broader perspective, e.g., security, operational complexity, AAA, DNS, DHCP, XML, or internationalization? If so, describe the review that took place. The Document Shepherd does not perceive any need for review from additional perspectives. The DTNWG reviews have covered Bundle Protocol concepts, and the use of TCP and TLS in this specification follows established norms. (6) Describe any specific concerns or issues that the Document Shepherd has with this document that the Responsible Area Director and/or the IESG should be aware of. The Document Shepherd has no specific concerns or issues with this document. Technical questions have been discussed at length and resolved by consensus within the WG. Much of the recent discussion in the WG has focused on ensuring that concepts are clear and this current revision of the specification has accomplished that clarity. (7) Has each author confirmed that any and all appropriate IPR disclosures required for full conformance with the provisions of BCP 78 and BCP 79 have already been filed. If not, explain why? All authors have indicated no known IPR disclosures for this work. (8) Has an IPR disclosure been filed that references this document? If so, summarize any WG discussion and conclusion regarding the IPR disclosures. There is no known IPR disclosure that directly references this document. However, the DTNWG mailing list indicated the existence of a patent (USPTO #7,930,379)that may or may not have applicability to DTN systems in general. This was brought to the attention of the DTNWG, DTNWG chairs, and responsible AD. The responsible AD has responded that unless additional IPR disclosures are provided this document can progress. (9) How solid is the WG consensus behind this document? Does it represent the strong concurrence of a few individuals, with others being silent, or does the WG as a whole understand and agree with it? This document appears to the Document Shepherd to represent the solid consensus of the WG. There have been no dissenting opinions relating to its most recent specifications in the WG itself or on the WG mailing list. Several WG members have experience with the preexisting TCPCLv3 that this specification replaces, with using Bundle Protocol, and with the concept and use of convergence layer adapters. The WG as a whole understands the intent, capabilities, design, and approach presenting in this specification. (10) Has anyone threatened an appeal or otherwise indicated extreme discontent? No threatened appeal or extreme discontent has been evident in the WG meetings or on the mailing list. (11) Identify any ID nits the Document Shepherd has found in this document. There are some nits in the document, but nothing serious and nothing than cannot be easily remedied. According to ID Nits check: 1 ERROR: 1) Obsolete normative reference: RFC 5246 has been obsoleted by RFC 8446. 8 WARNINGS: 1-6) Warnings identify a "missing reference" for items that are not meant to be references. These warning are considered false positives and refer to labels used in examples and illustrations. 7) Warning for out of date reference to bpbis. The specification refers to draft-ietf-dtn-bpbis-12 and should refer to draft-ietf-dtn-bpbis-13. 8) Warning for out of date reference to bpsec. The specification refers to draft-ietf-dtn-bpsec-09 and should refer to draft-ietf-dtn-bpsec-10. 2 COMMENTS: 1) The draft header indicates this specification obsoletes RFC7242 (IRTF experimental specification of TCPClv3) but the abstract does not directly say this. The absence of Updates or Supersedes language in the Abstract seems appropriate because the superseded document was experimental. 2) The document date (March 31, 2019) is 80 days in the past. This date references the publication date of the current version of the specification. According to the Internet-Draft Checklist: Checklist 2.2.10: Verbatim replication of the IPR Disclosure is not provided. Checklist 2.2.11: Verbatim replication of the IPR Notice, and Copyright Notice and Disclosure are not provided. Checklist 3.8: The specification includes a section 7 "Implementation status" which details the TCPCLv4 reference implementation. This section should be removed prior to publication. Checklist 3.7.A: The specification includes an informative reference to a GitHub link hosting the reference implementation. This reference should be removed at the same time Section 7 "Implementation Status" is removed. (12) Describe how the document meets any required formal review criteria, such as the MIB Doctor, media type, and URI type reviews. No formal review criteria are known to be applicable. (13) Have all references within this document been identified as either normative or informative? Yes, with one error (detected by ID nits) as noted in section 11. (14) Are there normative references to documents that are not ready for advancement or are otherwise in an unclear state? If such normative references exist, what is the plan for their completion? The Internet-Draft for Bundle Protocol Version 7 (bpbis) is referenced as a normative document. The bpbis document is being forwarded to the IESG at the same time as the TCPCLv4 document itself. (15) Are there downward normative references (see RFC 3967)? If so, list these downward references to support the Area Director in the Last Call procedure. There are no downward normative references, aside from the error (detected by ID Nits) as noted in section 11. (16) Will publication of this document change the status of any existing RFCs? No. (17) Describe the Document Shepherd's review of the IANA considerations section, especially with regard to its consistency with the body of the document. Confirm that all protocol extensions that the document makes are associated with the appropriate reservations in IANA registries. Confirm that any referenced IANA registries have been clearly identified. Confirm that newly created IANA registries include a detailed specification of the initial contents for the registry, that allocations procedures for future registrations are defined, and a reasonable name for the new registry has been suggested (see RFC 8126). The IANA considerations section is consistent with the body of the document. Referenced IANA registries are identified and new registries detailed to include their initial contents. Registry names appear reasonable. Registration procedures are provided. (18) List any new IANA registries that require Expert Review for future allocations. Provide any public guidance that the IESG would find useful in selecting the IANA Experts for these new registries. The session extension and transfer extension type sub-registries defined in this specification would benefit from expert review for future allocations. Expert review by people familiar with TCP and TLS would be useful to ensure that extensions are not added that would impact the efficient operation of this convergence layer adapter. (19) Describe reviews and automated checks performed by the Document Shepherd to validate sections of the document written in a formal language, such as XML code, BNF rules, MIB definitions, etc. No sections of the TCPCLv4 specification are written in any formal language. |
2019-08-01
|
12 | Magnus Westerlund | AD review sent to mailing list and authors. |
2019-08-01
|
12 | Magnus Westerlund | IESG state changed to AD Evaluation::Revised I-D Needed from AD Evaluation |
2019-07-16
|
12 | Magnus Westerlund | IESG state changed to AD Evaluation from Publication Requested |
2019-06-23
|
12 | Edward Birrane | Document Shepherd Write-Up for Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 Ed Birrane 19 June 2019 (1) What type of RFC is being requested? … Document Shepherd Write-Up for Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 Ed Birrane 19 June 2019 (1) What type of RFC is being requested? Why is this the proper type of RFC? Is this type of RFC indicated in the title page header? A Proposed Standard is being requested. This is the appropriate type of RFC because the specification documented in the current Internet Draft describes a protocol that is being implemented and used on the Internet. The title page header indicates that the intended status is Standards Track. (2) The IESG approval announcement includes a Document Announcement Write-Up. Please provide such a Document Announcement Write-Up. DOCUMENT ANNOUNCEMENT ------------------------------------------------------------------------------- Document Announcement Write-Up for Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 Ed Birrane 18 June 2019 Technical Summary: This document describes the Delay-Tolerant Networking TCP Convergence Layer Protocol Version 4 (TCPCLv4) for use with the Bundle Protocol Version 7 (BPv7) [I-D.ietf-dtn-bpbis]. The BPv7 implements a store-and-forward overlay network suitable for delay-tolerant message exchange. The protocol data unit for the BPv7 is the "bundle". BPv7 agents require convergence layer adapters (CLAs) to send and receive "bundles" using the service of some "native" link, network, or Internet protocol. Both the BPv7 and its CLAs reside at the application layer of the Internet model protocol stack [RFC1122]. The TCPCLv4 describes a CLA that sends and received bundles using the well-known Transmission Control Protocol (TCP). This specification describes the format and processing of the protocol data units passed between entities participating in TCPCLv4 communications. Working Group Summary: TCPCLv4 is descended from an experimental IRTF specification TCPCLv3 [RFC7242]. Implementation experience with TCPCLv3 identified limitations such as ambiguity in bundle acknowledgment and refusal, non-normative discussion on how to incorporate TLS, and minor inefficiencies associated with sequencing. TCPCLv4 was created to address those limitations and prepare the specification for non-experimental use. Technical discussions over the last 3 years have been well informed and focused on TLS negotiations, overall protocol agent state machines, and a protocol extension mechanism. There is no controversy related to the adoption of the specification; DTNWG consensus on the draft is strong. Document Quality: The workflow for TCPCLv4 remained largely unchanged from that of TCPCLv3 for which reference implementations exist. Co-author B. Sipos has created a reference implementation of TCPCLv4 to demonstrate features and ensure the clarity of the draft. Much of the recent review provided by the DTNWG focused on increasing the overall clarity of the specification to ensure no ambiguities exist for implementers. There have been no problems discovered with the reference implementation for this draft. Personnel: The Document Shepherd is Ed Birrane. The Responsible Area Director is Magnus Westerlund. ------------------------------------------------------------------------------- (3) Briefly describe the review of this document that was performed by the Document Shepherd. The Document Shepherd has been reviewing and commenting on drafts of this specification since March of 2017 (IETF 98). The current edition of the specification is considered ready for publication. (4) Does the document Shepherd have any concerns about the depth or breadth of the reviews that have been performed? No. Reviews have been performed by persons with a good understanding of the Bundle Protocol and the concept of convergence layer adapters. Original authors of the TCPCLv3 also reviewed and refined this specification, as have implementers in the context of a reference implementation. (5) Do portions of the document need review from a particular or from broader perspective, e.g., security, operational complexity, AAA, DNS, DHCP, XML, or internationalization? If so, describe the review that took place. The Document Shepherd does not perceive any need for review from additional perspectives. The DTNWG reviews have covered Bundle Protocol concepts, and the use of TCP and TLS in this specification follows established norms. (6) Describe any specific concerns or issues that the Document Shepherd has with this document that the Responsible Area Director and/or the IESG should be aware of. The Document Shepherd has no specific concerns or issues with this document. Technical questions have been discussed at length and resolved by consensus within the WG. Much of the recent discussion in the WG has focused on ensuring that concepts are clear and this current revision of the specification has accomplished that clarity. (7) Has each author confirmed that any and all appropriate IPR disclosures required for full conformance with the provisions of BCP 78 and BCP 79 have already been filed. If not, explain why? 3 of 4 authors have indicated no known IPR disclosures for this work. (8) Has an IPR disclosure been filed that references this document? If so, summarize any WG discussion and conclusion regarding the IPR disclosures. There is no known IPR disclosure that directly references this document. However, the DTNWG mailing list indicated the existence of a patent (USPTO #7,930,379)that may or may not have applicability to DTN systems in general. This was brought to the attention of the DTNWG, DTNWG chairs, and responsible AD. (9) How solid is the WG consensus behind this document? Does it represent the strong concurrence of a few individuals, with others being silent, or does the WG as a whole understand and agree with it? This document appears to the Document Shepherd to represent the solid consensus of the WG. There have been no dissenting opinions relating to its most recent specifications in the WG itself or on the WG mailing list. Several WG members have experience with the preexisting TCPCLv3 that this specification replaces, with using Bundle Protocol, and with the concept and use of convergence layer adapters. The WG as a whole understands the intent, capabilities, design, and approach presenting in this specification. (10) Has anyone threatened an appeal or otherwise indicated extreme discontent? No threatened appeal or extreme discontent has been evident in the WG meetings or on the mailing list. (11) Identify any ID nits the Document Shepherd has found in this document. There are some nits in the document, but nothing serious and nothing than cannot be easily remedied. According to ID Nits check: 1 ERROR: 1) Obsolete normative reference: RFC 5246 has been obsoleted by RFC 8446. 8 WARNINGS: 1-6) Warnings identify a "missing reference" for items that are not meant to be references. These warning are considered false positives and refer to labels used in examples and illustrations. 7) Warning for out of date reference to bpbis. The specification refers to draft-ietf-dtn-bpbis-12 and should refer to draft-ietf-dtn-bpbis-13. 8) Warning for out of date reference to bpsec. The specification refers to draft-ietf-dtn-bpsec-09 and should refer to draft-ietf-dtn-bpsec-10. 2 COMMENTS: 1) The draft header indicates this specification obsoletes RFC7242 (IRTF experimental specification of TCPClv3) but the abstract does not directly say this. The absence of Updates or Supersedes language in the Abstract seems appropriate because the superseded document was experimental. 2) The document date (March 31, 2019) is 80 days in the past. This date references the publication date of the current version of the specification. According to the Internet-Draft Checklist: Checklist 2.2.10: Verbatim replication of the IPR Disclosure is not provided. Checklist 2.2.11: Verbatim replication of the IPR Notice, and Copyright Notice and Disclosure are not provided. Checklist 3.8: The specification includes a section 7 "Implementation status" which details the TCPCLv4 reference implementation. This section should be removed prior to publication. Checklist 3.7.A: The specification includes an informative reference to a GitHub link hosting the reference implementation. This reference should be removed at the same time Section 7 "Implementation Status" is removed. (12) Describe how the document meets any required formal review criteria, such as the MIB Doctor, media type, and URI type reviews. No formal review criteria are known to be applicable. (13) Have all references within this document been identified as either normative or informative? Yes, with one error (detected by ID nits) as noted in section 11. (14) Are there normative references to documents that are not ready for advancement or are otherwise in an unclear state? If such normative references exist, what is the plan for their completion? The Internet-Draft for Bundle Protocol Version 7 (bpbis) is referenced as a normative document. The bpbis document is being forwarded to the IESG at the same time as the TCPCLv4 document itself. (15) Are there downward normative references (see RFC 3967)? If so, list these downward references to support the Area Director in the Last Call procedure. There are no downward normative references, aside from the error (detected by ID Nits) as noted in section 11. (16) Will publication of this document change the status of any existing RFCs? No. (17) Describe the Document Shepherd's review of the IANA considerations section, especially with regard to its consistency with the body of the document. Confirm that all protocol extensions that the document makes are associated with the appropriate reservations in IANA registries. Confirm that any referenced IANA registries have been clearly identified. Confirm that newly created IANA registries include a detailed specification of the initial contents for the registry, that allocations procedures for future registrations are defined, and a reasonable name for the new registry has been suggested (see RFC 8126). The IANA considerations section is consistent with the body of the document. Referenced IANA registries are identified and new registries detailed to include their initial contents. Registry names appear reasonable. Registration procedures are provided. (18) List any new IANA registries that require Expert Review for future allocations. Provide any public guidance that the IESG would find useful in selecting the IANA Experts for these new registries. The session extension and transfer extension type sub-registries defined in this specification would benefit from expert review for future allocations. Expert review by people familiar with TCP and TLS would be useful to ensure that extensions are not added that would impact the efficient operation of this convergence layer adapter. (19) Describe reviews and automated checks performed by the Document Shepherd to validate sections of the document written in a formal language, such as XML code, BNF rules, MIB definitions, etc. No sections of the TCPCLv4 specification are written in any formal language. |
2019-06-12
|
12 | Marc Blanchet | Responsible AD changed to Magnus Westerlund |
2019-06-12
|
12 | Marc Blanchet | IETF WG state changed to Submitted to IESG for Publication from In WG Last Call |
2019-06-12
|
12 | Marc Blanchet | IESG state changed to Publication Requested from I-D Exists |
2019-06-12
|
12 | Marc Blanchet | IESG process started in state Publication Requested |
2019-06-12
|
12 | Marc Blanchet | Changed consensus to Yes from Unknown |
2019-06-12
|
12 | Marc Blanchet | Intended Status changed to Proposed Standard from None |
2019-03-31
|
12 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-12.txt |
2019-03-31
|
12 | (System) | New version approved |
2019-03-31
|
12 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2019-03-31
|
12 | Brian Sipos | Uploaded new revision |
2019-03-26
|
11 | Rick Taylor | Added to session: IETF-104: dtn Tue-1610 |
2019-02-28
|
11 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-11.txt |
2019-02-28
|
11 | (System) | New version approved |
2019-02-28
|
11 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2019-02-28
|
11 | Brian Sipos | Uploaded new revision |
2019-02-26
|
11 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2019-02-26
|
11 | Brian Sipos | Uploaded new revision |
2018-11-06
|
10 | Marc Blanchet | Added to session: IETF-103: dtn Thu-0900 |
2018-11-06
|
10 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-10.txt |
2018-11-06
|
10 | (System) | New version approved |
2018-11-06
|
10 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2018-11-06
|
10 | Brian Sipos | Uploaded new revision |
2018-07-19
|
09 | Marc Blanchet | Added to session: IETF-102: dtn Thu-1330 |
2018-06-24
|
09 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-09.txt |
2018-06-24
|
09 | (System) | New version approved |
2018-06-24
|
09 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2018-06-24
|
09 | Brian Sipos | Uploaded new revision |
2018-05-21
|
08 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-08.txt |
2018-05-21
|
08 | (System) | New version approved |
2018-05-21
|
08 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2018-05-21
|
08 | Brian Sipos | Uploaded new revision |
2018-03-20
|
07 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-07.txt |
2018-03-20
|
07 | (System) | New version approved |
2018-03-20
|
07 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2018-03-20
|
07 | Brian Sipos | Uploaded new revision |
2018-03-07
|
06 | Rick Taylor | Added to session: IETF-101: dtn Fri-0930 |
2018-01-28
|
06 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-06.txt |
2018-01-28
|
06 | (System) | New version approved |
2018-01-28
|
06 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2018-01-28
|
06 | Brian Sipos | Uploaded new revision |
2017-12-14
|
05 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-05.txt |
2017-12-14
|
05 | (System) | New version approved |
2017-12-14
|
05 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2017-12-14
|
05 | Brian Sipos | Uploaded new revision |
2017-12-11
|
04 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-04.txt |
2017-12-11
|
04 | (System) | New version approved |
2017-12-11
|
04 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2017-12-11
|
04 | Brian Sipos | Uploaded new revision |
2017-11-28
|
03 | Marc Blanchet | Notification list changed to Edward Birrane <edward.birrane@jhuapl.edu> |
2017-11-28
|
03 | Marc Blanchet | Document shepherd changed to Edward J. Birrane |
2017-11-15
|
03 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-03.txt |
2017-11-15
|
03 | (System) | New version approved |
2017-11-15
|
03 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2017-11-15
|
03 | Brian Sipos | Uploaded new revision |
2017-11-14
|
02 | Marc Blanchet | Added to session: IETF-100: dtn Thu-0930 |
2017-05-21
|
02 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-02.txt |
2017-05-21
|
02 | (System) | New version approved |
2017-05-21
|
02 | (System) | Request for posting confirmation emailed to previous authors: Joerg Ott , Simon Perreault , dtn-chairs@ietf.org, Brian Sipos , Michael Demmer |
2017-05-21
|
02 | Brian Sipos | Uploaded new revision |
2017-03-25
|
01 | Marc Blanchet | Added to session: IETF-98: dtn Wed-0900 |
2017-01-06
|
01 | Marc Blanchet | IETF WG state changed to In WG Last Call from WG Document |
2016-11-27
|
01 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-01.txt |
2016-11-27
|
01 | (System) | New version approved |
2016-11-27
|
01 | (System) | Request for posting confirmation emailed to previous authors: "Simon Perreault" , "Joerg Ott" , dtn-chairs@ietf.org, "Michael Demmer" , "Brian Sipos" |
2016-11-27
|
01 | Brian Sipos | Uploaded new revision |
2016-10-19
|
00 | Marc Blanchet | This document now replaces draft-sipos-dtn-tcpclv4 instead of None |
2016-10-19
|
00 | Brian Sipos | New version available: draft-ietf-dtn-tcpclv4-00.txt |
2016-10-19
|
00 | (System) | WG -00 approved |
2016-10-19
|
00 | Brian Sipos | Set submitter to "Brian Sipos ", replaces to draft-sipos-dtn-tcpclv4 and sent approval email to group chairs: dtn-chairs@ietf.org |
2016-10-19
|
00 | Brian Sipos | Uploaded new revision |