Re: [babel] Example configuration

Mahesh Jethanandani <mjethanandani@gmail.com> Wed, 07 August 2019 18:05 UTC

Return-Path: <mjethanandani@gmail.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 7F04612068D for <babel@ietfa.amsl.com>; Wed, 7 Aug 2019 11:05:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.997
X-Spam-Level:
X-Spam-Status: No, score=-1.997 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 uzwA2VIt-_nU for <babel@ietfa.amsl.com>; Wed, 7 Aug 2019 11:05:11 -0700 (PDT)
Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) (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 208881202E1 for <babel@ietf.org>; Wed, 7 Aug 2019 11:05:11 -0700 (PDT)
Received: by mail-pl1-x636.google.com with SMTP id y8so41964264plr.12 for <babel@ietf.org>; Wed, 07 Aug 2019 11:05:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=2T554cNh3Smu726jqBKhhD8R/KMMbx2k79EaPeRnWvA=; b=IVoHYad7lwzobZYKiMIcgPVax97eK1wFLdV+moSm/l+kIiqMBg4JlF9NVCpFbpU8Eg XEgiCIPrC7Dt15VprE4ImKeNBrz+I7FjK/nfiBY2eWDEkX38HZSFD06+t1AGBsMA3POq KrlUikEpLml9QAtqJiMB9QKK+rQpcyQs//yKcEhPATRLtTMLUcf23KoPja2DVSVraLmj Do6ueviHnDdIYXdbliFbN2JWElAnz5qkMkjELkLC9yPaVApSUl9zV6gOBi8p5A7a12+I um7X0x3bH7OYVg90XEulKH0NaIp8aKCNlo8TRo3hI0wSBsaA+lDCKD+TA67jcJ7WjA83 Zi3w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=2T554cNh3Smu726jqBKhhD8R/KMMbx2k79EaPeRnWvA=; b=bhrl2660QsW9/Qrpw+AevLCNCGe9S87X4qkTS17YzomZJjO/FgmnGjBB8978W1lWvR ua5HpKCJ+YjWQvUDrC2jpnbSs2KGwfUqNt85LDRUVH0SkZ2UHXtP38tg1Mc+UfBHvpFW U8eReyXnB9M3XPmJVrDN7dtR+HZQuEPTs4pcYOYpnQQ2geHVYQC6dT7LbECAlAOHp87U W/48SPeZJRCjUVPD7jQRU7CheSztKrT6776gp4/OTZXAJ4RiLKwagvtvmSGRh9RlbT3c IVjiXTsY6MiiYYHg1FbTm5joRn744O75QrtM0FHoLldArvFcfGccim3MPULkqCrGYPpY D+1A==
X-Gm-Message-State: APjAAAVX4aUmbqR3uHdBIyTg+Vwkg6974c8vVl+VdukCYvHwOMAHM6P6 gIMAcosluU7yqnBgINI//zE=
X-Google-Smtp-Source: APXvYqzINgGw3Ei4rcwTOpgB8Gi4R5bAazkX5Hf3hPkJQ7KgRDDZA5ho6asaTNI/D2xRUIQrSnBSNA==
X-Received: by 2002:aa7:92cb:: with SMTP id k11mr10786029pfa.126.1565201110586; Wed, 07 Aug 2019 11:05:10 -0700 (PDT)
Received: from [10.33.122.240] ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id z4sm140386177pfg.166.2019.08.07.11.05.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Aug 2019 11:05:10 -0700 (PDT)
From: Mahesh Jethanandani <mjethanandani@gmail.com>
Message-Id: <0B28A1FA-32B4-41E6-B646-C6A3907E9CCC@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_F79A4954-00C2-40C8-BDFC-7801F2BE450D"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Date: Wed, 07 Aug 2019 11:05:09 -0700
In-Reply-To: <2D09D61DDFA73D4C884805CC7865E6114E257961@GAALPA1MSGUSRBF.ITServices.sbc.com>
Cc: Juliusz Chroboczek <jch@irif.fr>, Babel at IETF <babel@ietf.org>
To: "STARK, BARBARA H" <bs7652@att.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>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/babel/z6jcSnPtbK_hyBCZ-C46Bs50luA>
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:05:14 -0000

Hi Barbara,

> On Aug 7, 2019, at 6:25 AM, STARK, BARBARA H <bs7652@att.com> wrote:
> 
>>>> 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.

What I was referring to as “optional property” is more like (4), minus the need to deviate away from the YANG model. They are optional in the sense that a particular Babel implementation will work just fine without having to configure the optional parameters. As an example, if the user/operator wants to change the particular behavior on a particular interface would they need to configure the (optional) link properties. 

BTW, leafs such as link properties are optional to configure, but not optional to support/implement. If the implementation does not want to support/implement, e.g. a particular link property, they would need to deviate what they do not support from the model. 

Hope the distinction between “optional property” and deviation is clear.

> 
>> 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.

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

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?

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

Mahesh Jethanandani
mjethanandani@gmail.com