Re: [dtn] Barry Leiba's No Objection on draft-ietf-dtn-tcpclv4-18: (with COMMENT)

Brian Sipos <BSipos@rkf-eng.com> Sat, 29 February 2020 03:42 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 D19EA3A0AA3; Fri, 28 Feb 2020 19:42:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, 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 4YQaqjZ8ZdRj; Fri, 28 Feb 2020 19:41:58 -0800 (PST)
Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 46FF93A0A9F; Fri, 28 Feb 2020 19:41:56 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BIze2Q4/gbjBUeXA0fSKsouclqGo1x0Rh6Js7lzMGFcYWfFSbD2EFarxPc6ze12uz3aDYOJEU2axLIoTENs0MdffrOPKg9KdStcWiU1VZ8MMIFy5dp8nXQ3S80K8bysRrxbeDsgSUrHVzMdD9HPPcx4JABZW8iqAxKzhL8P/MCLqErE+RQdAUlcpiwZIFOwCNWb18QPe1tFosIYkC321NaAnUIDKmf0e52VVZSgXaXdzhhTCC+JS0vgVkXubSs7G0viyH/T2HgZxssR5sPHZrrkcQOXmy9xE1xEADBvqudxA32k8w2gzStsflEsZDzA0piWtvjh5zcGpCd8uAGYBog==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MjuOdqE8JHkWaiMUhAepVJqdNItf+TqsE/454l0GSwk=; b=IJOjojQtwV4zzFprho74CJ7Uowp36RTfmfkMAejgyDLpPvly71iupF8+m21G0yx3WwM6jDlllby+W7Dy2+WlFQX3/NbXN4S7nLf6qQaQoOKh3WkKJgMruqP1Ylz/BsOnrBgGQNLxC+weCU29rXVMf/cfgeWx/AM/T8750s1SD/EjY9vm1fjGPWBTtjs1jYfrr2mOxd//Kmjga/Jmzm1dkj5DhRWF+EnHeJgETO5GqRriy28g28nQZ3M7wVgdd6DFKwMX9CAFRr0cQ6NYNM2pebiv4KjKO/D7kMqabdyfa2sSdQ4bAVHQqayK+o2MYT1jj22q+J68F9iIhFwChmOXJA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=rkf-eng.com; dmarc=pass action=none header.from=rkf-eng.com; dkim=pass header.d=rkf-eng.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rkfeng.onmicrosoft.com; s=selector2-rkfeng-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MjuOdqE8JHkWaiMUhAepVJqdNItf+TqsE/454l0GSwk=; b=Y0fQMQLeNePXPF4jnNxk8quvUWIMtAXfQvdwtdzgfdVueGbpOQm+vrk1aF2/fOY8wUm4fLqEM+1pTbEKnixBt15ucxmAi7lO3Mag3vDiJtVDaxJZDq2aHHnxVTUy99O+mLF24bQcO1kJ66cw9TdB0rcJQ8ab/AQLj/SG/0CSPeY=
Received: from MN2PR13MB3520.namprd13.prod.outlook.com (2603:10b6:208:16c::29) by MN2PR13MB3214.namprd13.prod.outlook.com (2603:10b6:208:155::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2772.11; Sat, 29 Feb 2020 03:41:53 +0000
Received: from MN2PR13MB3520.namprd13.prod.outlook.com ([fe80::69eb:6eb6:b373:f292]) by MN2PR13MB3520.namprd13.prod.outlook.com ([fe80::69eb:6eb6:b373:f292%2]) with mapi id 15.20.2793.009; Sat, 29 Feb 2020 03:41:53 +0000
From: Brian Sipos <BSipos@rkf-eng.com>
To: "barryleiba@computer.org" <barryleiba@computer.org>, "iesg@ietf.org" <iesg@ietf.org>
CC: "dtn-chairs@ietf.org" <dtn-chairs@ietf.org>, "draft-ietf-dtn-tcpclv4@ietf.org" <draft-ietf-dtn-tcpclv4@ietf.org>, "dtn@ietf.org" <dtn@ietf.org>, "edward.birrane@jhuapl.edu" <edward.birrane@jhuapl.edu>
Thread-Topic: Barry Leiba's No Objection on draft-ietf-dtn-tcpclv4-18: (with COMMENT)
Thread-Index: AQHV4sMre/IPjw7MPkK0zAk1qD8krKgxntSA
Date: Sat, 29 Feb 2020 03:41:52 +0000
Message-ID: <a751efc27d9b5c6a561f7c0dd7601b4f404b2fc3.camel@rkf-eng.com>
References: <158163559251.20564.15042284700274126090.idtracker@ietfa.amsl.com>
In-Reply-To: <158163559251.20564.15042284700274126090.idtracker@ietfa.amsl.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
user-agent: Evolution 3.32.5 (3.32.5-1.fc30)
authentication-results: spf=none (sender IP is ) smtp.mailfrom=BSipos@rkf-eng.com;
x-originating-ip: [2601:543:c000:c550::8aa7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 859bf523-84b5-4d88-36a5-08d7bcc9513b
x-ms-traffictypediagnostic: MN2PR13MB3214:
x-microsoft-antispam-prvs: <MN2PR13MB3214D4CFA33CF86077E734189FE90@MN2PR13MB3214.namprd13.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:8273;
x-forefront-prvs: 03283976A6
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(346002)(136003)(366004)(39830400003)(396003)(199004)(189003)(86362001)(316002)(54906003)(110136005)(30864003)(8676002)(5660300002)(66946007)(66446008)(81156014)(81166006)(76116006)(66476007)(8936002)(66616009)(66556008)(64756008)(2906002)(186003)(508600001)(6486002)(6512007)(6506007)(36756003)(966005)(2616005)(71200400001)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR13MB3214; H:MN2PR13MB3520.namprd13.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1;
received-spf: None (protection.outlook.com: rkf-eng.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: cI4XGnlENvb715NT1WCA8QfiJkvGraXPc4P+V8mkK21c+9hM6eUcfqDuEbR0+Vs/OvY05Q+SyTUpqGkhrni4LirNIFru+cNRMLfmBYaGIjbyGEEHMdeS0kR8Z4vzlmpcZTFNpsEukvKkCyc4KtagJQTde5qwiFmeBCkLvuB6iRxEvY9kSyLtf7HA99VQ00gotrDZph2Di9/fbO8+CLS0e5bsfdrLohCiEKv+Nsl0KWWpqB4hhbyr8vLeqmCxR/0pcB/e13S2XrsvFZ99qMNcSFDxG9gvfSOCmVKQ3Cc2ET3RrYnZwln2msuLRfMS1QgbsXawEy1yWfQKSbbCWr4IJTJyF6IPkmegDasTNHB1gsvxXOD0zA/mPd9iKVRWpQj4EDCH15VO59rNLJQuOhYK+vS+c8c6uUNYDIwp33R8q6vOSAqSaW6HD1t1QoM31pEUqXhEXrzhS3Sq6usI4rs91txxatDJ2mkHWN5zpKa6K4HKFIfCGJfZtR9gvVs0e5k/4sdsjZ4k8sHzxEj5bTYPew==
x-ms-exchange-antispam-messagedata: SltJ6Z7Sb39cwWmKZWGFVJL8PnP8FMzIlAkiCw8UtdbWWLpWOHGLNTpTKNDpDdGbfZt6/3DlF7pnVEi1h2A+ZW4sXZ5xdzttTH8gffCZeCC/jBunCUHpsEtrTmsBZ5nyMfr3fHDKRWBjfQyLgNUHOo6E17cUb15U6nwoY7L9ZXNk8UEzjbR+APtQXxwuqJoZ
x-ms-exchange-transport-forked: True
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/x-pkcs7-signature"; boundary="=-myqan5LEj1OuznPLBJMT"
MIME-Version: 1.0
X-OriginatorOrg: rkf-eng.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 859bf523-84b5-4d88-36a5-08d7bcc9513b
X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Feb 2020 03:41:52.9960 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4ed8b15b-911f-42bc-8524-d89148858535
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: ZtFDJUpjycfVlcPyR/BE4SRpI5daVsemgjKfocOTOG02efzAmGFEGZmWfFlFYH+e3BaRiN+i0kuhBoXraeIbkA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB3214
Archived-At: <https://mailarchive.ietf.org/arch/msg/dtn/-9meEHh83bW_zHTFsfASA0Jhgy8>
Subject: Re: [dtn] Barry Leiba's No Objection on draft-ietf-dtn-tcpclv4-18: (with COMMENT)
X-BeenThere: dtn@ietf.org
X-Mailman-Version: 2.1.29
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: Sat, 29 Feb 2020 03:42:05 -0000

Barry,
I'm including responses below with prefix "BS: "

On Thu, 2020-02-13 at 15:13 -0800, Barry Leiba via Datatracker wrote:
> Barry Leiba has entered the following ballot position for
> draft-ietf-dtn-tcpclv4-18: No Objection
> 
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
> 
> 
> Please refer to 
> https://www.ietf.org/iesg/statement/discuss-criteria.html
> 
> for more information about IESG DISCUSS and COMMENT positions.
> 
> 
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-dtn-tcpclv4/
> 
> 
> 
> 
> ----------------------------------------------------------------------
> 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.)
> 
BS: This text should read as "The TCPCL entity indicates ..." and this section
should more clearly use nouns "TCPCL entity" and "BP agent" to distinguish
between the implementation (entity) vs. the specification.
I will clarify mandatory vs. optional for each of the session and transfer state
changes.

> — 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.
> 
BS: CH timeout guidance will be added similar to the KEEPALIVE guidance of 10
minutes.

> — 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
> 
BS: I agree that this is not a recommended procedure, and since it involves
agent behavior outside of a TCPCL session (and the spec doesn't have any real
requirements about how and when sessions are established) I am going to strike
the second half of this paragraph and leave the statement about "... no
mechanism ..."

> — 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?
> 
BS: The phrasing is a bit ambiguous. I'm going to tie those requirements to the
TCPCL session being in the Ending state and give a concrete definition of the
Ending state based on the earlier state diagrams.

> - - - - - - - -
> 
> 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
> 
BS: Makes sense and I will update the spec.

> — 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...”
> 
BS: Makes sense and I will update this phrasing to be consistent with other
areas of the spec. The state is not about messages but about in-progress
transfers.

> — 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”
> 
BS: Will fix these typos and use the term "normal".

> — 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.
> 
BS: Makes sense and I am rephrasing this to "TCP throughput" to be more
specific.

> — 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”).
> 
BS: Agreed, I'm removing the requirement terms from these statements.

> — 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
> 
BS: Agreed and going to rephrase this.

> — 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
BS: Agreed and edited.

>    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
> 
BS: Agreed and edited.

> 
> — 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”).
> 
BS: This is actually a requirement for implementations to not assume that order
is insignificant. I'm going to change this from a "MAY be" to an "is" statement
of fact.

> — Section 4.7 —
> 
>       If the
>       either Transfer MRU or Segment MRU is unacceptable
> 
> “If either the” — words swapped.
> 
BS: Agreed and fixed.

>    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”.
> 
BS: Agreed and fixed.

>       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”.
> 
BS: Agreed and fixed.

> — 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.
BS: Agreed and fixed.

> 
> — 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”).
> 
BS: Agreed and fixed.

> — 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”.
> 
BS: Agreed and fixed.

> — 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”).
> 
BS: Will apply same treatment as earlier transfer items.

> — 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”).
> 
BS: Agreed and fixed.

>    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”).
> 
BS: Agreed and fixed.

>    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”?
> 
BS: Changed to "does not" as statement of fact.

> — 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.
> 
BS: Agreed and fixed.