Re: [babel] Early Routing Directory Review of draft-ietf-babel-information-model-03.txt

"STARK, BARBARA H" <> Tue, 09 October 2018 21:02 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7356E130DE2; Tue, 9 Oct 2018 14:02:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id cI6o-yPHnM2N; Tue, 9 Oct 2018 14:02:49 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 34FBE130DE1; Tue, 9 Oct 2018 14:02:46 -0700 (PDT)
Received: from pps.filterd ( []) by ( with SMTP id w99JZYeV004939; Tue, 9 Oct 2018 15:39:51 -0400
Received: from ( []) by with ESMTP id 2n11ay3beh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 09 Oct 2018 15:39:49 -0400
Received: from (localhost []) by (8.14.5/8.14.5) with ESMTP id w99JdlAp000368; Tue, 9 Oct 2018 15:39:48 -0400
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id w99JdfsR032665; Tue, 9 Oct 2018 15:39:41 -0400
Received: from ( []) by (Service) with ESMTP id F1B8A4014055; Tue, 9 Oct 2018 19:39:40 +0000 (GMT)
Received: from (unknown []) by (Service) with ESMTPS id C34344014051; Tue, 9 Oct 2018 19:39:40 +0000 (GMT)
Received: from ([]) by ([]) with mapi id 14.03.0415.000; Tue, 9 Oct 2018 15:39:40 -0400
To: "'Acee Lindem (acee)'" <>, "" <>, Routing ADs <>
CC: Routing Directorate <>, "" <>
Thread-Topic: Early Routing Directory Review of draft-ietf-babel-information-model-03.txt
Thread-Index: AQHUVBdiKwnasY6ScU2SFCbuFJw9u6UXK7fQ
Date: Tue, 9 Oct 2018 19:39:39 +0000
Message-ID: <>
References: <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_2D09D61DDFA73D4C884805CC7865E6114DEDB994GAALPA1MSGUSRBF_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-10-09_13:, , signatures=0
X-Proofpoint-Spam-Details: rule=outbound_policy_notspam policy=outbound_policy score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1031 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1810090186
Archived-At: <>
Subject: Re: [babel] Early Routing Directory Review of draft-ietf-babel-information-model-03.txt
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "A list for discussion of the Babel Routing Protocol." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 09 Oct 2018 21:02:55 -0000

Hi Acee,
Thanks so much for your review. My responses are inline, marked with <bhs>.

From: Acee Lindem (acee) <>
Sent: Monday, September 24, 2018 11:01 AM
To:; Routing ADs <>
Cc: Routing Directorate <>rg>;
Subject: Early Routing Directory Review of draft-ietf-babel-information-model-03.txt

I have been selected as the Routing Directorate reviewer for this draft. The Routing Directorate seeks to review all routing or routing-related drafts as they pass through IETF last call and IESG review, and sometimes on special request. The purpose of the review is to provide assistance to the Routing ADs. For more information about the Routing Directorate, please see ​<>

Although these comments are primarily for the use of the Routing ADs, it would be helpful if you could consider them along with any other IETF Last Call comments that you receive, and strive to resolve them through discussion or by updating the draft.

Document: draft-ietf-babel-information-model-03.txt
Reviewer: Acee Lindem
Review Date: September 24th, 2018
IETF LC End Date: Not started yet.
Intended Status: Informational

    I don’t believe the document should be continued. Given the lack of precision in the definitions, I’d recommend abandoning the work and going directly to the YANG model. I also have some major concerns.

<bhs> My personal interest is in having a BBF TR-181 data model (DM). I believe it is in the best interest of the overall industry if the TR-181 DM (which I’ve already submitted to BBF for consideration in the next TR-181 issue) and any potential YANG DM were consistent. It is for this reason I’m creating an information model. Personally, I have no intention of spending my effort creating a YANG DM, because all devices my employer would consider managing Babel in are currently managed by BBF TR-069. If I were to abandon this information model effort, I would then only create the TR-181 DM, and leave it to others to figure out how or whether to create a YANG DM. I’m always happy not to do work where others see no value; but I do believe there is value in having consistency between my TR-181 DM and any YANG model that someone else might choose to create. I will soon be putting my draft TR-181 DM on my github site. If the WG did want to abandon this information model effort, it would still be possible to get consistency if whoever creates a YANG DM wanted to simply base the YANG DM on my TR-181 DM. I do think that approach is a bit awkward, though. I also think that approach would make it more difficult to get good review of the information elements. BTW, a couple of the Babel implementations have implemented the information model as an HTML web page (with no configuration of parameters supported). This has provided very useful feedback. These implementers are not experienced in YANG or reading YANG DMs (and neither am I).

    The summary says it all.

Major Issues:

  1.  The abstraction of babel-security-obj is too abstract to be useful. Furthermore, babel-security-trust alludes to certificates signed by CAs. However, if you are using these for routing, it is not clear how the PKI is accessed. It would be infinitely more useful to define what is used for the extant security mechanism (e.g., HMAC).
<bhs> Babel WG has recently adopted WG drafts for a DTLS and an HMAC security mechanism. Both were adopted after the information-model draft you reviewed was published. Both security solutions require credentials, but the types of credentials and how they are used and treated are specific to each solution. Creating information model elements without knowing the details of the eventual security mechanisms was indeed challenging, and was the reason the object was so abstract. It is not the responsibility of the info model to define the security mechanisms – rather the info model must reflect the needs of the security mechanisms the WG selects. Per the drafts, HMAC will use a shared key (no certificate authority or PKI), and DTLS will allow for all credentials allowed by DTLS best practices (RFC 7525). How the PKI is accessed in the case of DTLS-protected Babel is described in the new (as of yesterday) draft-ietf-babel-dtls WG draft. Looking over the babel-security-obj elements in the context of these 2 drafts that now exist, I do think some more descriptive/clarifying detail is needed specific to each of the 2 solutions. However, I want to avoid creating a dependency on either solution, and still think there is value in modeling credential management in a manner that could work for any credential system (used by any security mechanism).

  1.  While the descriptive text says that some objects MUST be configured, there is no precise specification of which are configurable and which are not.

<bhs> The Overview section provides a complete (non-normative) list of all (potentially) configurable data elements. Each of these data elements has normative language as the last sentence in the description of the data element (either “MAY be configurable” or “MUST be configurable if implemented”). It’s been suggested to me that people used to YANG may find this a confusing way of expressing configurability, and that the meaning of “MAY/MUST be configurable” is not obvious to them. “MAY/MUST be configurable” for me meant that a generic DM would define it as read/write. If it “MAY be configurable”, then a specific protocol implementation could choose to make it read-only, even though the generic DM defines it as read/write. The suggestion was to change how this is expressed by adding a column to the objects with “ro” or “rw” for each parameter. Explain in the Notation section that “ro” means the parameter is read-only, and “rw” means the parameter is read-write. Where an implementation can choose to expose a “rw” parameter as “ro”, this will be noted in that parameter’s description as “An implementation MAY choose to expose this parameter as read-only (ro).” In the Overview, I would change “Following is a list of the data elements that an implementation can choose to allow to be configurable:” to “Most parameters are read-only. Following is a list of the data elements that are not required to be read-only:”.

  1.  The contents and structure of babel-hello-ucast-history and babel-hello-mcast-history is incomprehensible. Why aren’t these objects represented as lists with the format of the list elements defined?
<bhs> Agreed. The description is being improved in the next draft revision, based on feedback already received from the WG. They aren’t lists because they are precisely reflecting the mechanism described in babel-rfc6126bis (the protocol specification). The implementers felt this already-implemented history was useful and thought it would be good to allow it to be expressed via the info model. Not all implementers implement this.

  1.  The “Security Considerations” section discussion is woefully inadequate – it basically says that configuration must be secured. This is another reason to go to the YANG model where all this is defined.
<bhs> TR-069 and TR-369 also secure configuration of TR-181 data elements. When someone else creates a YANG DM, I expect it will have whatever security is provided by YANG (or NETCONF/RESTCONF). The current implementations that provide read-only display of data elements via HTML are not securing their web pages – but that is not an issue in a prototype. I would certainly suggest that all HTML pages in commercial products require users to login prior to display. The information model is not in a position to require or guarantee this, however. A YANG DM and its security capabilities would have no applicability to TR-069/TR-181/TR-369 or HTML web pages, so I’m not sure I understand how a YANG model would provide security for any of these other mechanisms.

Minor Issues:

  1.  The format for the object descriptions is hard to consume. It would be preferable to use complete sentences and mixed rather than a continuous stream of lowercase separate by semi-colons.
<bhs> OK. Will do.

  1.  Why isn’t there an IPv4 multicast address in babel-constant-obj?
<bhs> It was removed per request of babel routing protocol authors and implementers. No-one was implementing IPv4 transport of babel, and everyone felt it was completely unnecessary.

  1.  It is unclear how babel-txcost and babel-rxcost are derived. This should either be specified or there should be an appropriate reference to the section in the base specification.
<bhs> OK. Will provide reference to base spec (section 3.4.3 of the current babel-rfc6126bis draft).

  1.  It is unclear how ECMP routes are supported in babel-routes-obj.
<bhs> I don’t think ECMP routing has been discussed in the context of Babel, or that any of the implementations support it. This might be an interesting discussion to have. But I think ECMP routes are supported in babel-routes-obj as is. For ECMP, I would expect to see multiple babel-routes-obj entries with the same babel-route-prefix (prefix for which this route is advertised) to have babel-route-selected = true (route is currently being used for forwarding and is being advertised). I’m not sure what else would need to be expressed specific to Babel. Since ECMP isn’t dependent on which (if any) routing protocol is being used, I would expect most aspects of ECMP (e.g, ECMP supported and enabled) to be modeled external to Babel or any other routing protocol. If my thinking on ECMP modeling is too simplistic, please point me to references for education.

  1.  If is implementation-specific how babel-route-calculated-metric is calculated, shouldn’t there be some indication of the algorithm used? It seems all Babel routers in the domain should be using a similar algorithm.
<bhs> Agree, an indication is needed. There’s no requirement for all Babel routers to use the same or even similar algorithm. At the top level babel-information-obj is the babel-metric-comp-algorithms list, which identifies the supported algorithms. But I think there needs to be a parameter per interface that identifies which of the supported algorithms is being used for that interface. Note that different algorithms are likely to be used depending on whether the link is wireless, ethernet, or other. Another possible way to model would be to have a separate object that says which algorithm is used for which link type. Perhaps I should ask the WG which model they prefer.


  1.  Inconsistent uppercase and lowercase reference to “Babel”. See diff.
<bhs> OK. Will do.

  1.  Use US English spelling of “neighbor” consistently.
<bhs> OK. Will do.

ACEE-M-G2HR:Desktop acee$ diff draft-ietf-babel-information-model-03.txt.orig draft-ietf-babel-information-model-03.txt
<    implementation (via a management protocol such as netconf) to report
>    implementation (via a management protocol such as NETCONF) to report
<    that can be used to created management protocol data models (such as
<    a netconf [RFC6241] YANG data model).
>    that can be used to create management protocol data models (such as
>    a NETCONF [RFC6241] YANG data model).
<    model is focused on reporting status of the Babel protocol, and very
<    little of that is considered mandatory to implement (conditional on a
>    model is focused on reporting Babel protocol operational state, and very
>    little of that is considered mandatory to implement (contingent on a
<    parameters may be configurable; however, it is up to the Babel
>    parameters may be configurable. However, it is up to the Babel
<    the minimal number of values, and n is the maximum.  The symbol * for
<    n means no upper bound.
>    the minimun number of list elements and n indicates the maximum number
>    of list elements.  The symbol * for n means there no defined limit on
>    the number of list elements.
<    o  enable/disable babel
>    o  enable/disable Babel
<    o  Interface: enable/disable babel on this interface
>    o  Interface: enable/disable Babel on this interface
<          }babel-information-obj;
>          } babel-information-obj;
<       babel-enable: if true, the babel implementation is running; if
<       false, the babel implementation is not currently running; MAY be
<       configurable to allow babel to be started or stopped
>       babel-enable: if true, the Babel implementation is running; if
>       false, the Babel implementation is not currently running; MAY be
>       configurable to allow Babel to be started or stopped
<          }babel-constants-obj;
>          } babel-constants-obj;
<          }babel-interfaces-obj;
>          } babel-interfaces-obj;
<       babel-interface-enable: if true, babel sends and receives messages
<       on this interface; if false, babel messages received on this
>       babel-interface-enable: if true, Babel sends and receives messages
>       on this interface; if false, Babel messages received on this
<       babel-message-log-enable: if true, logging of babel messages
<       received on this interface is enabled; if false, babel messages
>       babel-message-log-enable: if true, logging of Babel messages
>       received on this interface is enabled; if false, Babel messages
<       link layer; the rxcost is sent to a neighbour in each IHU
>       link layer; the rxcost is sent to a neighbor in each IHU
<       the neighbour table: the statistics kept in the neighbour table
>       the neighbor table: the statistics kept in the neighbor table
<          }babel-security-obj;
>          } babel-security-obj;
<          }babel-routes-obj;
>          } babel-routes-obj;
<        }babel-credential-obj;
>        } babel-credential-obj;
<        }babel-log-obj;
>        } babel-log-obj;
<    expose babel route filtering rules by adding a route filtering object
>    expose Babel route filtering rules by adding a route filtering object