Re: [babel] Example configuration

"STARK, BARBARA H" <bs7652@att.com> Wed, 07 August 2019 13:25 UTC

Return-Path: <bs7652@att.com>
X-Original-To: babel@ietfa.amsl.com
Delivered-To: babel@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id ADB36120086 for <babel@ietfa.amsl.com>; Wed, 7 Aug 2019 06:25:24 -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, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 fCg_yYHo9wbJ for <babel@ietfa.amsl.com>; Wed, 7 Aug 2019 06:25:23 -0700 (PDT)
Received: from mx0a-00191d01.pphosted.com (mx0b-00191d01.pphosted.com [67.231.157.136]) (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 51D8F12004E for <babel@ietf.org>; Wed, 7 Aug 2019 06:25:23 -0700 (PDT)
Received: from pps.filterd (m0049458.ppops.net [127.0.0.1]) by m0049458.ppops.net-00191d01. (8.16.0.27/8.16.0.27) with SMTP id x77DJ7fi040414; Wed, 7 Aug 2019 09:25:21 -0400
Received: from alpi154.enaf.aldc.att.com (sbcsmtp6.sbc.com [144.160.229.23]) by m0049458.ppops.net-00191d01. with ESMTP id 2u7v2tmhg4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 07 Aug 2019 09:25:21 -0400
Received: from enaf.aldc.att.com (localhost [127.0.0.1]) by alpi154.enaf.aldc.att.com (8.14.5/8.14.5) with ESMTP id x77DPKVd028344; Wed, 7 Aug 2019 09:25:21 -0400
Received: from zlp30485.vci.att.com (zlp30485.vci.att.com [135.47.91.178]) by alpi154.enaf.aldc.att.com (8.14.5/8.14.5) with ESMTP id x77DPDZx028127 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 7 Aug 2019 09:25:13 -0400
Received: from zlp30485.vci.att.com (zlp30485.vci.att.com [127.0.0.1]) by zlp30485.vci.att.com (Service) with ESMTP id 0264B4009E78; Wed, 7 Aug 2019 13:25:13 +0000 (GMT)
Received: from GAALPA1MSGHUBAE.ITServices.sbc.com (unknown [130.8.218.154]) by zlp30485.vci.att.com (Service) with ESMTPS id DE3274009E74; Wed, 7 Aug 2019 13:25:12 +0000 (GMT)
Received: from GAALPA1MSGUSRBF.ITServices.sbc.com ([169.254.5.84]) by GAALPA1MSGHUBAE.ITServices.sbc.com ([130.8.218.154]) with mapi id 14.03.0439.000; Wed, 7 Aug 2019 09:25:12 -0400
From: "STARK, BARBARA H" <bs7652@att.com>
To: 'Juliusz Chroboczek' <jch@irif.fr>, 'Mahesh Jethanandani' <mjethanandani@gmail.com>
CC: 'Babel at IETF' <babel@ietf.org>
Thread-Topic: [babel] Example configuration
Thread-Index: AQHVQysP27rmDxHNmE+dOkameIFP66bcIv6AgBKtMoCAAAmwgIAACWOAgAAV/4CAAC8QgIAAC2UAgABwxXA=
Date: Wed, 07 Aug 2019 13:25:12 +0000
Message-ID: <2D09D61DDFA73D4C884805CC7865E6114E257961@GAALPA1MSGUSRBF.ITServices.sbc.com>
References: <E726ED50-6D90-4537-B237-6E52D375F50B@gmail.com> <8736itu6j8.wl-jch@irif.fr> <0E0A89B7-3D7A-4605-8776-2CF685B268B0@gmail.com> <877e7qaxte.wl-jch@irif.fr> <1C6F628C-7A3C-4D66-9930-9F0244A20722@gmail.com> <8736ieasm6.wl-jch@irif.fr> <EF249683-1BB0-4686-A77A-847E64E4EA50@gmail.com> <87pnlhaixh.wl-jch@irif.fr>
In-Reply-To: <87pnlhaixh.wl-jch@irif.fr>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [135.70.248.192]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-08-07_03:, , 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=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1906280000 definitions=main-1908070145
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/KigsNKiWfddps5vf36-zEpKRJko>
Subject: Re: [babel] Example configuration
X-BeenThere: babel@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "A list for discussion of the Babel Routing Protocol." <babel.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/babel>, <mailto:babel-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/babel/>
List-Post: <mailto:babel@ietf.org>
List-Help: <mailto:babel-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/babel>, <mailto:babel-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Aug 2019 13:25:25 -0000

> >> The protocol doesn't know about interface types.  From the point of
> >> view of the protocol, there are a number of algorithms that can
> >> optionally be selected or enabled on a given interface.  These include:
> >>
> >> - link-quality estimation (2-out-of-3 or ETX);
> >> - split-horizon (on or off);
> >> - RTT estimation (draft-ietf-babel-rtt);
> >> - use of unicast instead of multicast;
> >> - ...
> 
> > In -08 version of the draft, all references to wired, wireless, tunnel
> > and others are gone. That in addition to babel-link-properties. If
> > they are underlying parameters, they are truly invisible :-).
> 
> Wired, wireless etc. are the UI interface types.  The underlying properties are
> link-quality and split-horizon (in RFC 6126bis) and the RTT estimation
> parameters (in draft-ietf-babel-rtt).
> 
> > I understand that it is difficult for an operatori without intimate
> > knowledge to know how to configure these properties. And that is why
> > these should be optional properties. However, without them, there is
> > no way for an operator to influence how the protocol works.

"Optional property" has different meanings to different people and different data modeling schemes. I've started trying to be very explicit: (1) Does a parameter (YANG leaf) have a universally-agreed default value (e.g., the UDP port)? (2) Can the management system cause an object (YANG leaf-list) instance to be created and some of the parameters (leafs) will be implicitly set to known default values (e.g., the hmac-keys and dtls-certs Booleans)? (3) Are the allowed values for some parameters (leafs) constrained to a specific range, cannot be null, are an enumeration, etc. (e.g., interface metric-algorithm)? (4) If an implementation does not include a particular parameter (leaf), can it still be considered compliant with the info model (in YANG terms: Can a specific Babel implementation have a YANG deviation statement for something and still be compliant with the info model) [this is not directly reflected in the YANG model]?

In the context of interface metric-algorithm and split-horizon, the management system will never "create" these parameters (because all interface instances are created by the Babel implementation and cannot be created by the management system), and there are no universally-agreed defaults. So (1) and (2) don't apply. The models allow the management system to overwrite the value the implementation chose for the interface. We're constraining the allowed values the management system can use when overwriting these. So (3) applies. The YANG model needs to constrain the value of these sorts of parameters to being in the enumeration, but doesn't need a default.

> I think we're not understanding each other.  I am not arguing about hiding
> any information, quite the opposite, I am in favour of exporting the
> underlying properties and leaving the link type to the UI.
> 
> >> I don't think we have the manpower to do a good job.
> 
> > Ok. Let me follow up on the separate e-mail thread that you started
> > with describing Babel filtering and routing policies. If it becomes
> > too complex, we can drop it.
> 
> Sure, but please keep my comment about manpower in mind.

I think the problem we're facing is that Babel implementations are perfectly capable of operating well without being explicitly configured (other than enabling/disabling it). Babel is specifically designed that way. But that doesn't necessitate "hiding" things.

Here is what I think would be common "configuration" scenarios:
 - The most common "configuration" would be to simply enable Babel. 
 - The next most common configuration would be to enable/disable it on specific interfaces (using the enable parameter in babel-interfaces). This may be done at the same time Babel is enabled (if the Babel implementation creates the interfaces instances even though Babel isn't enabled). Or later. It may need to be a separate configuration call, because the Babel implementation may not create the interfaces instances unless it is enabled. If it is a separate configuration call, the operator will probably need to read the configuration first, to see what interfaces Babel has identified it can run on, and which of these it has auto-enabled / auto-disabled.
 - The next thing someone would want to do is not configuration, but just reading info about the status of Babel. Some of the expressed status is the metric-algorithm (not link-quality, which is not a parameter) and split-horizon (true/false as to whether it's used) that was selected by the implementation for use on each interface. The Babel model is small enough that the person would probably find it easiest just to ask for everything.
 - It's possible that in looking at the status, the operator doesn't like the choices the implementation made wrt metric-algorithm or split-horizon, for an interface. The operator needs to have the ability to change those choices. The values the operator can change to are constrained. 
 - It's possible that in looking at the status, the operator thinks things don't look right and wants to troubleshoot by getting more detailed statistics and maybe even a message log. So the operator enables statistics and message log. The operator waits a few seconds and reads statistics and the message log. Maybe the operator does something that fixes the problem. The operator then disables statistics and message log.

So maybe the "example configuration" is a sequence of YANG messages:
1. Enable Babel
2. Read the interfaces leaf-list.
3. Enable/disable Babel on specific interfaces, as desired.
4. Read everything.
5. Update metric-algorithm and split-horizon values for a specific interface.

For troubleshooting:
6. Enables statistics and message log.
7. Read statistics and message log.
8. Disable statistics and message log.

Barbara