Re: [babel] Example configuration

"STARK, BARBARA H" <bs7652@att.com> Wed, 07 August 2019 18:56 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 2144012028B for <babel@ietfa.amsl.com>; Wed, 7 Aug 2019 11:56:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
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_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 Ll2CaRR8duhN for <babel@ietfa.amsl.com>; Wed, 7 Aug 2019 11:56:05 -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 5EFF0120275 for <babel@ietf.org>; Wed, 7 Aug 2019 11:56:05 -0700 (PDT)
Received: from pps.filterd (m0049463.ppops.net [127.0.0.1]) by m0049463.ppops.net-00191d01. (8.16.0.27/8.16.0.27) with SMTP id x77IokZY009505; Wed, 7 Aug 2019 14:56:02 -0400
Received: from alpi154.enaf.aldc.att.com (sbcsmtp6.sbc.com [144.160.229.23]) by m0049463.ppops.net-00191d01. with ESMTP id 2u849dr5ty-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 07 Aug 2019 14:56:02 -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 x77Iu11B024342; Wed, 7 Aug 2019 14:56:01 -0400
Received: from zlp30488.vci.att.com (zlp30488.vci.att.com [135.47.91.93]) by alpi154.enaf.aldc.att.com (8.14.5/8.14.5) with ESMTP id x77Itvmg024280 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 7 Aug 2019 14:55:57 -0400
Received: from zlp30488.vci.att.com (zlp30488.vci.att.com [127.0.0.1]) by zlp30488.vci.att.com (Service) with ESMTP id 0B114400A0AA; Wed, 7 Aug 2019 18:55:57 +0000 (GMT)
Received: from GAALPA1MSGHUBAG.ITServices.sbc.com (unknown [130.8.218.156]) by zlp30488.vci.att.com (Service) with ESMTPS id E6955400A0A8; Wed, 7 Aug 2019 18:55:56 +0000 (GMT)
Received: from GAALPA1MSGUSRBF.ITServices.sbc.com ([169.254.5.84]) by GAALPA1MSGHUBAG.ITServices.sbc.com ([130.8.218.156]) with mapi id 14.03.0439.000; Wed, 7 Aug 2019 14:55:56 -0400
From: "STARK, BARBARA H" <bs7652@att.com>
To: 'Mahesh Jethanandani' <mjethanandani@gmail.com>
CC: 'Juliusz Chroboczek' <jch@irif.fr>, 'Babel at IETF' <babel@ietf.org>
Thread-Topic: [babel] Example configuration
Thread-Index: AQHVQysP27rmDxHNmE+dOkameIFP66bcIv6AgBKtMoCAAAmwgIAACWOAgAAV/4CAAC8QgIAAC2UAgABwxXCAAK2IgP//vsCA
Date: Wed, 07 Aug 2019 18:55:55 +0000
Message-ID: <2D09D61DDFA73D4C884805CC7865E6114E258CF7@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> <2D09D61DDFA73D4C884805CC7865E6114E257961@GAALPA1MSGUSRBF.ITServices.sbc.com> <0B28A1FA-32B4-41E6-B646-C6A3907E9CCC@gmail.com>
In-Reply-To: <0B28A1FA-32B4-41E6-B646-C6A3907E9CCC@gmail.com>
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: multipart/alternative; boundary="_000_2D09D61DDFA73D4C884805CC7865E6114E258CF7GAALPA1MSGUSRBF_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-08-07_05:, , 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-1908070170
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/tpH4jsntXPNVdgzQSFORKSz1oOo>
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 18:56:08 -0000



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.

This is a perfectly valid sequence of RPC (not YANG) messages that are exchanged.

<bhs> Not necessarily RPC. I was thinking of it more in terms of what a user might be trying to do, independent of how the thing the user wants to do is communicated or transported.

What I had in mind for the updates to the information model are step 5. If the operator needs to update link-quality, or flip on split-horizon, or set a RTT estimate value, or specify whether they want to use unicast instead of multicast, or any combination thereof for a particular interface, they would create a new babel-link-properties object and associate that with the interface.

Can we agree on the changes to the information model I suggested yesterday?

<bhs> Let me see if I understand... Does it have to be a “new” babel-link-properties instance, or can it be one that exists?

That is, if we had an object called babel-link-properties
     object {
          string                rw babel-link-properties-name;
          string                rw babel-interface-metric-algorithm;
          boolean               rw babel-interface-split-horizon;
          boolean               rw babel-interface-rtt;
          boolean               rw babel-interface-unicast
      } babel-hmac-keys-obj;

Where the implementation may create some set of initial entries that its developers have decided to e.g. name “wired”, “wireless”, “tunnel” (but some other implementation may give a different name to the same group of parameter values). link-properties-name must be unique (and not empty or NULL), but also no 2 instances are allowed to have the same set of values for the latter 4 parameters. Once an instance is created it cannot be modified. If it is referenced from an interface or was created by the implementation, it cannot be deleted. This makes instances created by the implementation immutable.
This object can be written (new instances created with different combinations of values and a different name, like “unicast-wired”).
An interface will have a reference to one of these instances, to identify the set of link-properties it uses. It’s allowed to modify which set of link-properties is used/referenced by an interface.

Is that right? And did you say you wanted it under interface or under the base? I think it would make sense under base. Juliusz, I think this approach (if it’s what Mahesh meant) would provide the benefits of allowing users to use more meaningful names for groups of link properties, allow use of names that babeld has already popularized among its users while allowing other implementations to use different names (names aren’t standardized), and isn’t very complicated. It does make it harder if the user wants to just change one of the link properties and not others (they might have to create a new instance). But it makes it easier for the user who wants to change from one grouping of properties to another.
Barbara