Re: [Idr] 2 Week WG last call for draft-ietf-idr-bgp-enhanced-route-refresh

"John G. Scudder" <jgs@juniper.net> Wed, 18 September 2013 15:41 UTC

Return-Path: <jgs@juniper.net>
X-Original-To: idr@ietfa.amsl.com
Delivered-To: idr@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4DCA911E82F1 for <idr@ietfa.amsl.com>; Wed, 18 Sep 2013 08:41:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.442
X-Spam-Level:
X-Spam-Status: No, score=-2.442 tagged_above=-999 required=5 tests=[AWL=0.556, BAYES_00=-2.599, J_CHICKENPOX_14=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SVE1OYwc36EQ for <idr@ietfa.amsl.com>; Wed, 18 Sep 2013 08:41:28 -0700 (PDT)
Received: from ch1outboundpool.messaging.microsoft.com (ch1ehsobe005.messaging.microsoft.com [216.32.181.185]) by ietfa.amsl.com (Postfix) with ESMTP id A680611E82FB for <idr@ietf.org>; Wed, 18 Sep 2013 08:40:04 -0700 (PDT)
Received: from mail2-ch1-R.bigfish.com (10.43.68.238) by CH1EHSOBE013.bigfish.com (10.43.70.63) with Microsoft SMTP Server id 14.1.225.22; Wed, 18 Sep 2013 15:40:01 +0000
Received: from mail2-ch1 (localhost [127.0.0.1]) by mail2-ch1-R.bigfish.com (Postfix) with ESMTP id BBEF62602CD; Wed, 18 Sep 2013 15:40:01 +0000 (UTC)
X-Forefront-Antispam-Report: CIP:157.56.240.101; KIP:(null); UIP:(null); IPV:NLI; H:BL2PRD0510HT005.namprd05.prod.outlook.com; RD:none; EFVD:NLI
X-SpamScore: -20
X-BigFish: VPS-20(zz98dI9371I146fI1432I1453I4015I168aJzz1f42h208ch1ee6h1de0h1fdah2073h1202h1e76h1d1ah1d2ah1fc6h1082kzz1de098h1033IL17326ah1de097h186068h8275bh8275dhz2fh2a8h839h944hd25he5bhf0ah1220h1288h12a5h12a9h12bdh137ah139eh13b6h1441h1504h1537h162dh1631h1662h1758h1898h18e1h1946h19b5h19ceh1ad9h1b0ah1d0ch1d2eh1d3fh1dfeh1dffh1e23h1fe8h1ff5h2052h20b3m1155h)
Received-SPF: pass (mail2-ch1: domain of juniper.net designates 157.56.240.101 as permitted sender) client-ip=157.56.240.101; envelope-from=jgs@juniper.net; helo=BL2PRD0510HT005.namprd05.prod.outlook.com ; .outlook.com ;
X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(57704003)(377454003)(199002)(189002)(24454002)(52034003)(164054003)(51704005)(52314003)(50226001)(49866001)(36756003)(15975445006)(47976001)(76796001)(50986001)(66066001)(82746002)(81816001)(81686001)(69226001)(77156001)(56816003)(81542001)(33656001)(23726002)(47736001)(77096001)(15202345003)(81342001)(51856001)(80022001)(74706001)(46102001)(57306001)(31966008)(74662001)(42186004)(77982001)(79102001)(65816001)(74876001)(53806001)(76786001)(74366001)(74502001)(4396001)(47446002)(46406003)(63696002)(80976001)(62966002)(76482001)(54316002)(50466002)(83072001)(59766001)(56776001)(19580405001)(19580395003)(47776003)(83322001)(83716001)(42262001); DIR:OUT; SFP:; SCL:1; SRVR:DM2PR05MB527; H:[172.28.131.154]; CLIP:66
Received: from mail2-ch1 (localhost.localdomain [127.0.0.1]) by mail2-ch1 (MessageSwitch) id 1379518799862763_22229; Wed, 18 Sep 2013 15:39:59 +0000 (UTC)
Received: from CH1EHSMHS004.bigfish.com (snatpool1.int.messaging.microsoft.com [10.43.68.240]) by mail2-ch1.bigfish.com (Postfix) with ESMTP id C4A2D2004A; Wed, 18 Sep 2013 15:39:59 +0000 (UTC)
Received: from BL2PRD0510HT005.namprd05.prod.outlook.com (157.56.240.101) by CH1EHSMHS004.bigfish.com (10.43.70.4) with Microsoft SMTP Server (TLS) id 14.16.227.3; Wed, 18 Sep 2013 15:39:59 +0000
Received: from DM2PR05MB527.namprd05.prod.outlook.com (10.141.99.151) by BL2PRD0510HT005.namprd05.prod.outlook.com (10.255.100.40) with Microsoft SMTP Server (TLS) id 14.16.359.1; Wed, 18 Sep 2013 15:39:59 +0000
Received: from [172.28.131.154] (66.129.232.2) by DM2PR05MB527.namprd05.prod.outlook.com (10.141.99.151) with Microsoft SMTP Server (TLS) id 15.0.775.9; Wed, 18 Sep 2013 15:39:55 +0000
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0 (Mac OS X Mail 6.6 \(1510\))
From: "John G. Scudder" <jgs@juniper.net>
In-Reply-To: <02b901ceb0b7$e1d74b90$a585e2b0$@ndzh.com>
Date: Wed, 18 Sep 2013 11:39:40 -0400
Content-Transfer-Encoding: 7bit
Message-ID: <15455006-B087-43D4-9D4D-6F7E7B45D545@juniper.net>
References: <02b901ceb0b7$e1d74b90$a585e2b0$@ndzh.com>
To: Hares Susan <shares@ndzh.com>, "Keyur Patel (keyupate)" <keyupate@cisco.com>
X-Mailer: Apple Mail (2.1510)
X-Originating-IP: [66.129.232.2]
X-ClientProxiedBy: BLUPR02CA009.namprd02.prod.outlook.com (10.255.223.157) To DM2PR05MB527.namprd05.prod.outlook.com (10.141.99.151)
X-Forefront-PRVS: 09730BD177
X-OriginatorOrg: juniper.net
X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn%
Cc: idr wg <idr@ietf.org>
Subject: Re: [Idr] 2 Week WG last call for draft-ietf-idr-bgp-enhanced-route-refresh
X-BeenThere: idr@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Inter-Domain Routing <idr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/idr>, <mailto:idr-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/idr>
List-Post: <mailto:idr@ietf.org>
List-Help: <mailto:idr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/idr>, <mailto:idr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Sep 2013 15:41:33 -0000

<co-chair hat = off>

Summary: based on the below review, I think the document is not yet done.

- The document needs an "Updates: RFC2918" header

- "   A BGP speaker that support the message subtypes for the ROUTE-REFRESH"
  s/support/supports/
  This was previously noted by Randy Bush, IIRC. BTW, I don't claim to 
  be an expert grammarian but other than what I've noted in this review 
  I don't see any problems.

- "   Before the speaker starts a route refresh that is either initiated
   locally, or in response to a "normal route refresh request" from the
   peer, the speaker MUST send a ROUTE-REFRESH message with the
   specified message subtype to mark the beginning of the route refresh.
   After the speaker completes the re-advertisement of the entire Adj-
   RIB-Out to the peer, it MUST send a ROUTE-REFRESH message with the
   specified message subtype to mark the ending of the route refresh."

  Presumably in the first case, the "specified message subtype" is 
  the "Demarcation of the beginning of a route refresh" subtype 1, and
  in the second case, the "specified message subtype" is the 
  "Demarcation of the ending of a route refresh" subtype 2. Say that 
  explicitly (either by the name, the type code, or both). See also 
  the second-last point in this review, about short symbolic names.

- "   Conceptually the "entire ADJ-RIB-Out" for a peer in this section
   refers to all the route entries in the "ADJ-RIB-Out" for the peer at
   the start of the route refresh.  When a route entry in the "ADJ-RIB-
   Out" changes, the advertisement of the modified route entry (instead
   of the snapshot entry) would suffice."

  (By the way, s/ADJ/Adj/g)

  As Qin Wu's message suggests, this text isn't clear enough. Part of
  the problem is that you haven't defined "snapshot" but I think it
  goes beyond that. One way I can think of to fix it would be to
  simply remove the paragraph, on the assumption that "advertise the
  entire Adj-RIB-Out" is sufficiently obvious to an implementor, and
  that's all you're really trying to specify here. Otherwise, I think
  you're going to have to specify more rigorously what you mean by
  "advertise the entire Adj-RIB-Out". In particular, I suspect you're
  trying to bound the time you have to spend before you send the
  subcode 2 message to be O(size of Adj-RIB-Out when you started), so
  that you're not tripped up by pathological cases?

  I don't have text to offer for this case, but I do think the authors
  and WG need to consider it.

- I don't think this text is right:

  "   In processing a ROUTE-REFRESH message from a peer, the BGP speaker
   MUST examine the "message subtype" field of the message and take the
   appropriate actions."

  I mean, it's OK, except it basically says "do the right thing" ("take
  the appropriate actions"). The spec either needs to say unambiguously 
  what the right thing is (if it's a MUST) or adopt some more relaxed 
  tone. Likewise,

  "The BGP speaker SHALL use the demarcations of
   the beginning and the ending of a route refresh to perform
   consistency validations of the updates received from the peer."

  At most, the speaker MAY do that. If we wanted to mandate it (and I
  don't think we do) we would need to say what "perform consistency
  validations" means. I would be OK with either striking the text, or
  changing the SHALL to a MAY.

  Here is a possible rewrite of the paragraph:

   When a BGP speaker receives a Route Refresh message from a peer
   with subtype 1 it MUST mark all routes with the given AFI/SAFI 
   from that peer as stale. As it receives routes from its peer's 
   subsequent Adj-RIB-Out readvertisement, these replace any
   corresponding stale routes. When the BGP speaker receives a 
   Route Refresh message from the peer with subtype 2, it MUST 
   immediately remove any routes from the peer that are still marked 
   as stale for that address family. Such routes MAY be logged for
   further analysis. (It can be observed that this procedure is 
   substantially the same as for the Restarting Speaker in Section 
   4.2 of [RFC4724].)

- RFC 4724 has a timer to deal with the case where the Restarting
  Speaker forgets to send the EoR. Subcode 2 is basically an EoR, but
  we have no timer. Is this a problem? Do we need some other kind of
  safety mechanism? Or are we happy to just rely on the correctness
  of the implementation (ahem).

- During the initial Adj-RIB-Out advertisement, can normal withdraws
  be sent? I assume so. Not sure if anything need be said about this.

- The Error Handling section of the draft assumes traditional RFC 4271
  style error handling, namely if you see something wrong, reset the
  session. Is this the right thing to do in light of the other work the 
  WG has been doing with draft-ietf-idr-error-handling? For that 
  matter, is this the right thing to do in light of the fact that 
  regular route-refresh messages aren't specified to behave in this 
  way? I don't *necessarily* propose that malformed refresh messages 
  should be ignored, but it seems worth discussing. If this stricter
  approach is adopted, should it be considered for regular Route 
  Refresh too, and if so, should that go in this document?

  Also, assuming the current error approach is kept, why not go whole 
  hog and finish enumerating the possible error conditions? I think 
  there's only one other: Invalid Subtype. (See also my final point
  below.)

- What is the expected behavior if the peer sends another Route Refresh
  request when the first request is still in progress (subtype 2 has
  not yet been sent)? One option is that you could cancel the old
  refresh, send another subtype 1, then the new refresh, then close it
  with a subtype 2. But this implies there would be two subtype 1's
  followed by only one subtype 2. Another way of asking this question
  is whether there are any restrictions on the interleaving of subtype
  1 and 2, and what error handling (if any) is to be applied if the
  restrictions (if any) are violated.  

- In the Acks, you need to capitalize Jeff Hass's last name.

- In writing this review I've had to choose several times between 
  referring to "subcode 1" and "subcode 2" (not very descriptive) and
  "Demarcation of the beginning of a route refresh" and "Demarcation 
  of the ending of a route refresh" (verbose). This leads me to think
  it might be handy for the document to provide short symbolic names
  for the subtypes, such as BoRR and EoRR.

- By the way, now that you've turned the "reserved" field into a 
  "subtype" field, you need to decide what to do with the rest of the
  values. Right now we have 0 which means either route-refresh or
  ORF (disambiguated by length) and 1 and 2 defined in this document.
  The obvious thing to do would be to make this a registry, though
  then you have to say what to do with unrecognized values. Come to
  think of it, you have to say that anyway, right now the Error 
  Handling section doesn't cover it. 

</hat>

Thanks,

--John

On Sep 13, 2013, at 3:31 PM, Susan Hares <shares@ndzh.com> wrote:

> This begins a 2 week working group last call for (ending 9/27)
> Enhanced Route Refresh Capability for BGP-4
> http://tools.ietf.org/html/draft-ietf-idr-bgp-enhanced-route-refresh-04
> 
> This WG last call is in parallel with the 2 week 
> implementation report adoption call. 
> 
> The implementation report is at: 
> http://datatracker.ietf.org/doc/draft-keyupate-idr-enhanced-refresh-impl/
> 
> We will read both threads in considering the last call.  If the
> implementation report is accepted, we will do a last call on the
> implementation report. 
> 
> Sue Hares and John Scudder
> Idr co-chairs 
> 
> 
> 
> 
>