Re: [dtn] draft-ietf-dtn-tcpclv4-02 comments

Brian Sipos <BSipos@rkf-eng.com> Wed, 19 July 2017 12:50 UTC

Return-Path: <BSipos@rkf-eng.com>
X-Original-To: dtn@ietfa.amsl.com
Delivered-To: dtn@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 06EDA131CFE for <dtn@ietfa.amsl.com>; Wed, 19 Jul 2017 05:50:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.921
X-Spam-Level:
X-Spam-Status: No, score=-1.921 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=rkfeng.onmicrosoft.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1dThnAecO0Ie for <dtn@ietfa.amsl.com>; Wed, 19 Jul 2017 05:50:16 -0700 (PDT)
Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0087.outbound.protection.outlook.com [104.47.34.87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 475B51288B8 for <dtn@ietf.org>; Wed, 19 Jul 2017 05:50:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rkfeng.onmicrosoft.com; s=selector1-rkfeng-com0i; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+cAWjZfvooq8+p01BsfKXMNrHbpLqffdocyQeD4Hdgc=; b=PhwQT8bplX5ZTnCSe/zVlv9aFO5rdgdIuxpnOJu1Ut/ZSQ+QOussUQvV/Q6jcwyj22iFvNOsqQQ4HVtIDI6XH4kqbC5jsQ96LAc0f1go8rwMfPh0xS8TiNkUWKVUn60cv/QBT7kFTQCg5RfvJuu71qUNbDP5nI4mCLhzALPY1bQ=
Received: from BN6PR05MB3634.namprd05.prod.outlook.com (10.174.235.18) by BN6PR05MB3090.namprd05.prod.outlook.com (10.172.145.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.4; Wed, 19 Jul 2017 12:50:15 +0000
Received: from BN6PR05MB3634.namprd05.prod.outlook.com ([10.174.235.18]) by BN6PR05MB3634.namprd05.prod.outlook.com ([10.174.235.18]) with mapi id 15.01.1282.008; Wed, 19 Jul 2017 12:50:15 +0000
From: Brian Sipos <BSipos@rkf-eng.com>
To: "dtn@ietf.org" <dtn@ietf.org>, "wronkiew@gmail.com" <wronkiew@gmail.com>
Thread-Topic: draft-ietf-dtn-tcpclv4-02 comments
Thread-Index: AQHS/5dzyMsPiqxEMU2y//mA1VnTiKJbG/GA
Date: Wed, 19 Jul 2017 12:50:14 +0000
Message-ID: <1500468613.27258.19.camel@rkf-eng.com>
References: <CAGQjfBoyDo_Jw5o1dkRF59CBtuVX+QhGAU+tmVFH-CFVL254tw@mail.gmail.com>
In-Reply-To: <CAGQjfBoyDo_Jw5o1dkRF59CBtuVX+QhGAU+tmVFH-CFVL254tw@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Evolution 3.20.5 (3.20.5-1.fc24)
authentication-results: ietf.org; dkim=none (message not signed) header.d=none;ietf.org; dmarc=none action=none header.from=rkf-eng.com;
x-originating-ip: [38.100.63.114]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BN6PR05MB3090; 7:0GOIZsGjuB04pynLsRFW/Hb+Z49SkLRe2vdLONpz4Hf14plYw2L4rM8HOP7zbBAET8bBToODUoeMCL3SgkNmXlekvOD1kaOwDNH4ebr2/WVK3HGEZh0Gdmb5JXMHBZtNXcjA94CSzdQ9zrf7Jpr3zZcblKqUOsFgV1stEtYVpcidbCSb8nZH+OB3kKwiPNki/RV7pGVFurqSmFkt4B4bbaEnpzkQLS5B2PEqig34je4fdqDw+zSWGaHX6Ws2IRJ5QBN/vXogDJBvJJkZMoneaMr00hYZYIXEz0P/8gF8cWS60jcP1JForFELEHHIzy5Ttl020HICAstOMIuj1UI7MPILbAm5Ql1ri5YhrKJaOdiz8IiNcex2vfOoUzuR7h9CpQCknX/5gqQ9rRbqSpjva5b7kq3w2mFU21bgutNf24iqWF+RWKrmG1ftorVJbbhqXqqC2NloYNRnN8tTYNrrr6KL4zNQgxWqmLCeErNWcU2d4qRbDFkUCF88hBkheM0tGp5eRePEv+UIcHvZgeSYjViitlY5Lp6vTIGfJVCCq3NMy32IPx3eFoh8V2oRpzNY4Swmt3sZBZDvSqg6KZ6uD7iYE8LeWzYnqlwi2352HgoPGsaOk9su/QmzaCBHsK6i7N1bUria0Z84Wwy39xmDGf7Q4K6S49wNYbtspJ6XF6GiUW9l+9nXDXVQust9DLRbBM+U0itMjIi+ps9lXozgctd75dt9VIDiewiIQ63w+BE3qsXQ7MPmj/WwYzlvb25eUT5N/DWVmCosGu6HfIl4ZLyi9xEQYwzc4YYV9JR4WcE=
x-ms-office365-filtering-correlation-id: 547cdc5f-37f7-4408-333f-08d4cea4b3a6
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BN6PR05MB3090;
x-ms-traffictypediagnostic: BN6PR05MB3090:
x-exchange-antispam-report-test: UriScan:(158342451672863)(236129657087228)(48057245064654)(148574349560750)(209349559609743)(256282310955234)(247924648384137);
x-microsoft-antispam-prvs: <BN6PR05MB3090D61B84DBB04A20F0DF8C9FA60@BN6PR05MB3090.namprd05.prod.outlook.com>
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(2017060910075)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123555025)(2016111802025)(20161123562025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6043046)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR05MB3090; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR05MB3090;
x-forefront-prvs: 0373D94D15
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(39400400002)(39410400002)(39450400003)(39830400002)(377424004)(24454002)(2900100001)(2950100002)(189998001)(66066001)(33646002)(2906002)(305945005)(25786009)(80792005)(2501003)(5660300001)(6486002)(103116003)(86362001)(6246003)(6436002)(6512007)(6306002)(478600001)(6506006)(38730400002)(77096006)(99286003)(53936002)(76176999)(229853002)(39060400002)(50986999)(72206003)(3280700002)(230783001)(3846002)(102836003)(6116002)(7736002)(345774005)(3660700001)(8936002)(36756003)(8676002)(50226002)(81166006)(14454004)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR05MB3090; H:BN6PR05MB3634.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en;
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="utf-8"
Content-ID: <0BCB2248DF300447A38DFE128BF9D539@namprd05.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: rkf-eng.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jul 2017 12:50:14.9585 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4ed8b15b-911f-42bc-8524-d89148858535
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR05MB3090
Archived-At: <https://mailarchive.ietf.org/arch/msg/dtn/NkEH0Q_9lfj3kwWqNZulqwTOEu0>
Subject: Re: [dtn] draft-ietf-dtn-tcpclv4-02 comments
X-BeenThere: dtn@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Delay Tolerant Networking \(DTN\) discussion list at the IETF." <dtn.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dtn>, <mailto:dtn-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dtn/>
List-Post: <mailto:dtn@ietf.org>
List-Help: <mailto:dtn-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dtn>, <mailto:dtn-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 19 Jul 2017 12:50:19 -0000

Matt,
This is some great feedback, I've in-lined responses below and also
copied the DTN mailing list for their consideration.

On Tue, 2017-07-18 at 00:28 -0700, Matt Wronkiewicz wrote:
> DTN WG team,
> 
> I read your draft for TCPCLv4 and look forward to implementing it.
> Listed are some comments on the version at
> <https://tools.ietf.org/html/draft-ietf-dtn-tcpclv4-02>:
> 
> 
> 1. The contact header does not specify its total length. This may
> cause a problem with header extensions because it is unclear at what
> point a node should stop waiting for additional data, set the session
> parameters, and start sending messages or upgrade security. The
> contact header should include a length field that counts the
> remaining
> bytes including extensions.
> 
> If it does not include a length field, there are some additional
> ambiguities.

This was definitely an oversight and needs to be added in. The contact
header is supposed to be fully self-contained data, which right now it
is not. We could add in an extension item count or an all-extension
octet size. The size may be more helpful.
I also didn't catch this earlier because I added extension handling to
the spec but did not include this in the test implementation; oops!

> 
> 1.a. A critical header extension with no other flags could be
> misinterpreted as a XFER_SEGMENT message, and vice versa. An
> implementation must reject XFER_SEGMENT messages that do not follow
> XFER_INIT with the same transfer id. It must not send them before
> sending XFER_INIT. This should be clarified in 5.4.3. Data
> Transmission (XFER_SEGMENT).
> 
> 1.b. In Table 2: Header Extension Item Flags, several reserved bits
> must be zero, or the header extension would collide with other
> message
> types that are allowed after the session is established.
> 
> 
> 2. In Section 4.2. Validation and Parameter Negotiation, 3rd
> paragraph, if two nodes send different version numbers in the contact
> header, it is specified that one of the nodes must send a SHUTDOWN
> with a version mismatch. There is no opportunity for the other side
> to
> downgrade to the older version. There is also no way for the older
> version to negotiate a session, because it has not received the
> connection flags and cannot interpret the remote EID.
> 
I can add some guidance to this section. There is no mechanism for in-
TCP-connection downgrade, so the recommended behavior is to re-connect
on the same TCP port but then provide a TCPCLv3 contact header and see
if the listening agent accepts that instead. A similar procedure could
be use to try TCPCLv3 first then v4 after. The listener (TCP server)
has discretion to look at the start of the contact header before
sending its only reply header.

> 
> 3. The inability for two nodes supporting multiple TCPCL versions to
> handshake is concerning. There are very few TCPCLv3 installations, so
> backward compatibility is less of a worry. But if TCPCLv4 is
> successful it will be widely deployed when there is a need for a new
> version. It would be good to provide some mechanism for nodes that
> implement both TCPCLv4 and v5 to establish a connection with a node
> that only implements v4.
> 
> One way to allow forward compatibility would be to require v4 nodes
> to
> send a VERSION_MISMATCH in response to a newer version, after which
> the newer node may send a compatible contact header or disconnect.
> 
Similar to above, do you think the one-version-per-connection-attempt
is acceptable? Some additional informational language could be added to
explain this situation.

> 
> 4. Nodes implementing TCPCLv4 will presumably already have functions
> for CBOR encoding and decoding. Restructuring the messages to use it
> would remove a lot of padding. It would also provide more flexibility
> and robustness for adding header extensions and new protocol
> versions.
> I recognize this is a drastic change that you have probably already
> discussed.
> 
We definitely had discussed the original proposed SDNV vs. CBOR vs.
fixed-length-fields and settled on current fixed-length due to the
convergence layer being a lower-level protocol than BP itself. This was
due to concern about complexity in a TCPCL implementation. There is
also the possibility, I believe, of a pure bundle forwarder which
speaks TCPCL but does not actually examine the bundle contents and
simply forwards bundle, as opaque data, to some actual BP node.

> 
> 5. Table 13: SHUTDOWN Reason Codes is missing "Resource Exhaustion",
> listed in Table 8: SHUTDOWN Reason Codes.
> 
> 
> 6. In Table 8: SHUTDOWN Reason Codes, in the description for Resource
> Exhaustion, the word "resource" is misspelled.
> 
These will be corrected.

> 
> 7. The shutdown procedure is not specified when one node requires TLS
> and the other does not set USE_TLS. It is unclear whether the
> strict-TLS node should send SHUTDOWN with "Contact Failure" or "TLS
> Failure". A more descriptive "TLS Required" failure code could be
> added.
> 
I agree that we should distinguish between "TLS Agreement Failure" when
the endpoint policy disallows the agreed Enable TLS state, and "TLS
Handshake Failure" where TLS is enabled and attempted but the handshake
itself fails.

> 
> 8. In section 4.1.1. Header Extension Items, in the entry for Flags,
> the word "unknown" is misspelled.
> 
This will be corrected.

> 
> Thank you for your work on the DTN WG, and for considering my
> feedback.
> 
> Matt Wronkiewicz