[Int-area] Review of draft-ietf-intarea-provisioning-domains

Ted Lemon <mellon@fugue.com> Sat, 24 March 2018 23:38 UTC

Return-Path: <mellon@fugue.com>
X-Original-To: int-area@ietfa.amsl.com
Delivered-To: int-area@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A34C3127010 for <int-area@ietfa.amsl.com>; Sat, 24 Mar 2018 16:38:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=fugue-com.20150623.gappssmtp.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 ihzfFjpy4KLn for <int-area@ietfa.amsl.com>; Sat, 24 Mar 2018 16:38:56 -0700 (PDT)
Received: from mail-yw0-x235.google.com (mail-yw0-x235.google.com [IPv6:2607:f8b0:4002:c05::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 81B2712025C for <int-area@ietf.org>; Sat, 24 Mar 2018 16:38:56 -0700 (PDT)
Received: by mail-yw0-x235.google.com with SMTP id v68so5097231ywg.13 for <int-area@ietf.org>; Sat, 24 Mar 2018 16:38:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fugue-com.20150623.gappssmtp.com; s=20150623; h=from:mime-version:date:subject:resent-date:resent-from:to:resent-to :message-id; bh=plxoHjsAiPn0mYBShG567u9Wl/tlVGgc0vFDSFBlq5g=; b=WzaNpEa9aCegPZnPaIULbA5qG1JC0D9O0HiEHfxgUki+eZcUuQEZvJABqW70Eczpzc tDkEha0E4Z53FnYgiRgYV/rS3UAJYVO5LOFDkLADYyztFSB13sdcCcFARQjp47b/S5GT RikBBL3xWURV3kqjjykAE+79Jt43DhHcko8yYXGmK7tc3/GNGPQs1n1WTJU3KcuypWZ9 pJGIIL0aakO49Yzq8WjLGP5DMxRLSWelgz1LMTpUPFQQN9l7EJUXPIf3cmXEF+/jFR6F oCh8FnUetWhp0wXl0GL+aDK36gLsFb23FPqONXbnNPFiSxNJ0UqE+40PFWWg/EtMvyu5 vYww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:date:subject:resent-date :resent-from:to:resent-to:message-id; bh=plxoHjsAiPn0mYBShG567u9Wl/tlVGgc0vFDSFBlq5g=; b=KAUDMls5VwADu4RimFBDCvWUD7vI8dLy1Cq5kRLmaVmlEnIN7gADNo2zBXtPZpLLtg RbVXWVWtY6rWLiVGVdpw3SqjMFl9ZVrizOc+/ey283ryuh0aueVd/IOSJ/PTfDtdtBHt u6s0GQ0dBNUVxfLGUUVaNgeU21p6yE2ykNq7g3kE72GZR3nBzpMwy/M1EY78Z2WUYSFV FVV3IGOZxNqVai+gbMfRXXYcM+1Tjo1fkhtKzF/wn3zPu1R2t8KTRYdaADgH/Z6bnSqz j1h3YrRruTCF13J6MmUGQQ+rkDn5m5/EXekmKhqRVihCsBfHlfgOiUsadUDK/U8diHNv Qd0g==
X-Gm-Message-State: AElRT7FN+XVOl/Jm6W1PpuG0l82kjEkMB5e/KttlX4FWyhek+wrpyaDL Qs50x9KcJUiMATYUJohVl3Vbnpo7MLo=
X-Google-Smtp-Source: AG47ELsB9NR0hbXqmpdaxQHwDNDWGQpBt5pIZS98Tuvk2NWlM7NteM/lhvShQH8YsCbOOnC+ql0Caw==
X-Received: by 10.129.41.146 with SMTP id p140mr21029034ywp.497.1521934735320; Sat, 24 Mar 2018 16:38:55 -0700 (PDT)
Received: from [172.20.0.124] ([12.245.46.170]) by smtp.gmail.com with ESMTPSA id d202sm4720177ywb.102.2018.03.24.16.38.54 for <int-area@ietf.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 24 Mar 2018 16:38:55 -0700 (PDT)
From: Ted Lemon <mellon@fugue.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_AD27456A-57F6-4A95-8167-521E1109A7CA"
Mime-Version: 1.0 (Mac OS X Mail 11.2 \(3445.5.20\))
Date: Sat, 24 Mar 2018 19:33:00 -0400
Resent-Date: Sat, 24 Mar 2018 19:38:54 -0400
Resent-From: Ted Lemon <mellon@fugue.com>
To: internet-drafts@ietf.org
Resent-To: int-area@ietf.org
Message-Id: <EFB0BDF4-594A-44C5-BAA7-CBB8AEBADA41@fugue.com>
X-Mailer: Apple Mail (2.3445.5.20)
Resent-Message-Id: <20180324233856.81B2712025C@ietfa.amsl.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/int-area/nUUAz9-Scry3toqos7b-ZZVAUSw>
Subject: [Int-area] Review of draft-ietf-intarea-provisioning-domains
X-BeenThere: int-area@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: IETF Internet Area Mailing List <int-area.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/int-area>, <mailto:int-area-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/int-area/>
List-Post: <mailto:int-area@ietf.org>
List-Help: <mailto:int-area-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/int-area>, <mailto:int-area-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 24 Mar 2018 23:38:58 -0000

As requested, I'm doing a review of the document.   Executive summary: I don't think the document is ready.   I don't actually think the proposed model for doing multiple RAs makes sense.   I don't think it makes sense to tie in the HTTP/JSON stuff.   It feels vague and underspecified.   I think that an RA option for specifying PvD IDs is a good idea, and I will admit that I missed some of the discussion that I think resulted in the changes that I'm complaining about.   I think the tie to DHCP is pretty half-baked, particularly the IPv4 part.   I realize that this is partly because of some IPR issues, but I don't think this is the right way to address that.   I think this needs further discussion.

On to the detailed comments:

I think that the Abstract isn't going to make much sense to anyone who isn't already familiar with the problem space, so I have some suggestions for addressing that.

OLD:
   An increasing number of hosts access the Internet via multiple
   interfaces or, in IPv6 multi-homed networks, via multiple IPv6 prefix
   configurations.
NEW:
   An increasing number of hosts access the Internet simultaneously through
   networks managed by different providers.  This is true of devices with mobile
   and fixed interfaces, and also of devices connected to networks that are
   multihomed—that are connected to more than one internet service provider.

OLD:
   This document describes a way for hosts to identify such means,
   called Provisioning Domains (PvDs), with Fully Qualified Domain Names
   (FQDN).  Those identifiers are advertised in a new Router
   Advertisement (RA) option and, when present, are associated with the
   set of information included within the RA.
NEW:
   This document describes a way to signal to hosts that have access
   to one or more provisioning domains (PvDs), using Fully Qualified Domain Names
   (FQDN) as identifiers.  These identifiers are advertised in a new Router
   Advertisement (RA) option and, when present, identify information in the RA
   that is specific to a particular provisioning domain.

OLD:
   Based on this FQDN, hosts can retrieve additional information about
   their network access characteristics via an HTTP over TLS query.
   This allows applications to select which Provisioning Domains to use
   as well as to provide configuration parameters to the transport layer
   and above.
NEW:
   This allows applications to select which Provisioning Domains to use
   as well as to provide configuration parameters to the transport layer
   and above.      Based on this FQDN, hosts can retrieve additional information about
   their network access characteristics using an HTTP over TLS query.

Even this might not really be the right set of changes, though.  I have a bit of a bias toward very brief abstracts, because the abstract is basically an elevator pitch for the document, and this abstract is more detailed, like a brief introduction.   As an alternative, you might consider this text:

This document defines a mechanism for signaling to hosts that they are connected to more than one service provider.  This can be used for example if a host has two interfaces with different providers, like the mobile and fixed interfaces of a smart phone.  It can also be used on multi-homed networks, where the network to which the host is connected may have available service from more than one provider.  It further defines a naming scheme for these provisioning domains, a router advertisement extension for announcing them, and a schema for acquiring additional information using HTTP.

I think this conveys everything that the reader needs to know in order to decide whether to read the document.   They can find out how these mechanisms work by reading the document (I hope!).

OLD:
   It has become very common in modern networks for hosts to access the
   internet through different network interfaces, tunnels, or next-hop
   routers.  To describe the set of network configurations associated
   with each access method, the concept of Provisioning Domain (PvD) was
   defined in [RFC7556].
NEW:
   It has become very common in modern networks for hosts to have available
   more than one way of accessing the Internet at the same time, and for these
   access methods to have different and sometimes incompatible configuration
   information.  To describe the set of network configuration information associated
   with each access method, the concept of Provisioning Domain (PvD) was
   defined in [RFC7556].

OLD:
   This document also introduces a way for hosts to retrieve additional
   information related to a specific PvD by means of an HTTP over TLS
   query using an URI derived from the PvD ID.  The retrieved JSON
   object contains additional information that would typically be
   considered unfit, or too large, to be directly included in the Router
   Advertisement, but might be considered useful to the applications, or
   even sometimes users, when choosing which PvD and transport should be
   used.
NEW:
   This document also introduces a way for hosts to retrieve additional
   information related to a specific PvD by means of an HTTP over TLS
   query using an URI derived from the PvD ID.  The retrieved JSON
   object is used to convey information that either would not fit, or for which
   no encoding is available, in a router advertisement.   This information
   can be used by applications, or presented to users, when choosing
   which PvD and transport should be used.

On page 6:
   RA message header :   (16 octets) When the A-flag is set, a full
      Router Advertisement message header as specified in [RFC4861].
      The 'Type', 'Code' and 'Checksum' fields (i.e. the first 32 bits),
      MUST be set to zero by the sender and ignored by the receiver.
      The other fields are to be set and parsed as specified in
      [RFC4861] or any updating documents.

I don't know if this has already been discussed—I'm sure there's some rationale behind this decision.  But why burn 32 bits on this?

In section 3.2:
   A router MAY send RAs containing at most one PvD ID RA option, but
   MUST NOT include more than one PvD ID RA option in each RA.  In
   particular, the PvD ID RA option MUST NOT contain further PvD ID RA
   options.

I don't think you should say "in particular" here.   I don't think the particular example given is more important than the other case. :)

Then:
   Whenever an RA, for a single PvD, would need to be sent via multiple
   packets, the PvD ID RA option header (i.e., all fields except the
   'Options' field) MUST be repeated in all the transmitted RAs.  But
   the options within the 'Options' field, MAY be transmitted only once,
   included in one of the transmitted PvD ID RA options.

When would an RA for a single PvD need to be sent in multiple packets?   I'm not saying it wouldn't—I just mean that this scenario needs to be explained.

In 3.3:
   Hosts MUST associate received RAs and included configuration
   information (e.g., Router Valid Lifetime, Prefix Information
   [RFC4861], Recursive DNS Server [RFC8106], Routing Information
   [RFC4191] options) with the explicit PvD identified by the first PvD
   ID Option present in the received RA, if any, or with the implicit
   PvD identified by the host interface and the source address of the
   received RA otherwise.

What's the point of encapsulating options in a PvD if options that aren't encapsulated in the PvD are also part of the PvD?   What's the behavior if an option appears in the RA outside of the PvD option, and the same type of option appears inside of the PvD option?

Then:
   In case multiple PvD ID options are found in a given RA, hosts MUST
   ignore all but the first PvD ID option.

It seems like this is a programming error, and attempting to proceed is probably a mistake.   Such packets should be silently dropped.

There is no specification of host behavior, which is great.   However, the examples here don't feel very clear, and I don't think they really help.   If we want to talk about how hosts use PvDs, the text here isn't enough.   If we don't, this section would be made clearer by removing this text and making the description of what winds up in what PvD more explicit.   I'd be happy to discuss this, but I don't want to propose specific text without a discussion first.

Sections 3.3.1 and 3.3.2

The DHCPv6 and DHCPv4 behaviors specified here seem like they aren't very clear, and it's hard to imagine that implementors will know what is intended.   I do not know what is intended.   It might be worth sitting down and gaming out the possible combinations, so that a more clear specification can be made.   However, I think it's also likely that section 3.3.2 should just say "Configuration information received via DHCPv4 SHOULD NOT be treated as part of an explicit or implicit PvD received through an RA."   Is there a reason not to do that?

I really do not like the PvD additional information feature.   I think this should be considered as a separate document.   The problem isn't so much that it's a bad idea, but that it really muddies the water—it makes this document harder to understand, because it adds essentially unrelated additional complexity.   Why is this in the same document with the RA option?

Section 5 makes me feel pretty uncomfortable about this proposal—you're changing the behavior of the host stack if it supports PvDs in a way that doesn't really make sense, but rather is just an artifact of the fact that this document requires the sending of redundant RAs. What's the rationale for doing this?