Re: [mpls] Review of draft-ietf-mpls-ldp-yang-09

Renato Westphal <renato@opensourcerouting.org> Mon, 24 January 2022 21:59 UTC

Return-Path: <renato@opensourcerouting.org>
X-Original-To: mpls@ietfa.amsl.com
Delivered-To: mpls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C8CE13A1132 for <mpls@ietfa.amsl.com>; Mon, 24 Jan 2022 13:59:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=opensourcerouting-org.20210112.gappssmtp.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 U_TaX9qW60H3 for <mpls@ietfa.amsl.com>; Mon, 24 Jan 2022 13:59:26 -0800 (PST)
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) (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 F1F753A1134 for <mpls@ietf.org>; Mon, 24 Jan 2022 13:59:25 -0800 (PST)
Received: by mail-ej1-x631.google.com with SMTP id o12so25304112eju.13 for <mpls@ietf.org>; Mon, 24 Jan 2022 13:59:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=opensourcerouting-org.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Q6XcEvPmwtqf3nQGKKdp7tULTnDp9uPnZj5GaZRV6nY=; b=Vtm4igZKvTlCs3B+/atkxp0LdjavX0ZDU8RSY2OvUpbJ+XIEtI0bwIpwiqBnt1Ea9r RaHJQPPNpTeD9CD/eANKW0BxXENuZXRto2j+Lyhu4N9YxH0N9n6iEAlopUAXa1aFpesP RMCepdmGU6ODti3lK+4ksLBoo5/vIOa+Lk3qKHCP9pDHqOAE94kfNzJAxuIgHGLs5Z4D vLCUP0PvGeAn8k1FCyGXDY5aFwGystGltVhuQZ05L4gDhfkXvR1BQy5472oWW2AckWHW kQ5fHLJ8MurcM5ybTTZviX9tmsypwjLokQWXqH8aGTEwT88cBgL2chgg92SV2XQB7mmn AO0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Q6XcEvPmwtqf3nQGKKdp7tULTnDp9uPnZj5GaZRV6nY=; b=4KDmcfSTR42oyS4Z9fowaE7oTBblxLl3vF/03e7TuBPHUyYyQs5ipUqOMocum2RjBA FNhSyXyjfsxj6b50mKZtvdHQSxYK4uboWsslLz36Ud4u0Wyi+xV3usBvcqZKWx0dn2w6 NowFpUexUtHyeZbPYJtCQ/uyVq6Sd0leGWA9VEQ5ikc9Iat4QRVPrK+vkJCoey95qWdO wBjF+uGdxXi9ZDie18WNt7AQFXoX5iNyrYv3cQwXRz0j7T+PqSfL5FpWF+YkCvkgZpd3 x8IGwAfzl5XjhPixk1jsWvZpem+fKsTAd8YRBcTEduQ+UEkR36UvrpKUl3Zr/TL9jHmz UhSw==
X-Gm-Message-State: AOAM532SgwXhqDPV1fEb9oOmCYzUNt6+O2ZTuhqq6GlmqAhMNosP9+jA t0wB4FNtc29YMkjLhaNCqikSQ+KrRm82NoJKZ9AEEA==
X-Google-Smtp-Source: ABdhPJzT+ie1Hot6qP5XdgjdFy/OGJYC/Gix1rCSzTsynOt4JMyrzezFB8eJvEoVNMpthX8CDJ3sLRfveCEWs07X82w=
X-Received: by 2002:a17:907:7244:: with SMTP id ds4mr6084200ejc.208.1643061563142; Mon, 24 Jan 2022 13:59:23 -0800 (PST)
MIME-Version: 1.0
References: <CAB6ZmXEzijShLEHkNQuhFchvpZ8GRTuzf=76WMxF-PqRX5xQeQ@mail.gmail.com> <66F8F012-E804-49CE-8890-4941CC10AB61@cisco.com>
In-Reply-To: <66F8F012-E804-49CE-8890-4941CC10AB61@cisco.com>
From: Renato Westphal <renato@opensourcerouting.org>
Date: Mon, 24 Jan 2022 18:59:11 -0300
Message-ID: <CAB6ZmXEtbS3ci_5QY97Gphzz2PAM27JGa-c3ZZmz24d0bNjpAw@mail.gmail.com>
To: "Rajiv Asati (rajiva)" <rajiva@cisco.com>
Cc: "draft-ietf-mpls-ldp-yang.all@ietf.org" <draft-ietf-mpls-ldp-yang.all@ietf.org>, "mpls@ietf.org" <mpls@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000d0da7405d65b144e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/mpls/79hkHvArVQoiqS10KERbbMjr2XU>
Subject: Re: [mpls] Review of draft-ietf-mpls-ldp-yang-09
X-BeenThere: mpls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Multi-Protocol Label Switching WG <mpls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mpls>, <mailto:mpls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mpls/>
List-Post: <mailto:mpls@ietf.org>
List-Help: <mailto:mpls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mpls>, <mailto:mpls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Jan 2022 21:59:32 -0000

Thank you for taking the time to answer my questions Rajiv. Please see my
comments inline.

Em qui., 20 de jan. de 2022 às 20:09, Rajiv Asati (rajiva) <rajiva@cisco.com>
escreveu:

> Hi Renato,
>
>
>
> Thanks for the feedback to the WG document. This really helps us to build
> a solid spec.
>
>
>
> 1. You are right about adjacency configuration (RW) and adjacency state
> (RO). The spec well covers all of those.
>
>
>
> The flag you referred to is defined as ReadOnly (RO) for operational
> state, exactly as you pointed out, to capture the neighbor being active or
> passive. Not for config. Hello-adjacencies below is a container, btw, that
> includes both tx and rx adjacencies.
>
>
>
>           |  |     |  |  +--ro hello-adjacencies
>
>           |  |     |  |  |  +--ro hello-adjacency* [adjacent-address]
>
>
>
>           |        |  |     +--ro flag*               identityref
>
> < >
>
>
>
>          container hello-adjacencies {
>
>                …
>
>              uses ldp:adjacency-state-attributes;
>
>
>
> Config (RW) for targeted neighbor covers what you suggested well -
>
>           |  +--rw targeted
>
>           |     +--rw hello-holdtime?     uint16
>
>           |     +--rw hello-interval?     uint16
>
>           |     +--rw hello-accept
>
>           |     |  +--rw enabled?                 boolean
>
>           |     |  +--rw ldp-ext:neighbor-list?   neighbor-list-ref
>

Ack. If I understood correctly, an active adjacency means that hello
messages are both being sent and received, whereas a passive adjacency is
only receiving but not sending hellos (can only happen for targeted
adjacencies).

While a find the adjacency-flag descriptions a bit confusing, the
distinction between active and passive adjacencies makes sense.


> 2.  Targeted neighbor is not bound to an interface (per RFC5036), so that
> interface leaf you referred to is actually not part of targeted discovery
> container, rather basic discovery container (which indeed allows for one or
> more interfaces per neighbor).
>
>
>
>          container hello-adjacencies {
>
>            config false;
>
>            description
>
>              "Containing a list of Hello adjacencies.";
>
>                                 . . . . . .
>
>              leaf interface {
>
>                type if:interface-ref;
>
>                description "Interface for this adjacency.";
>

That leaf lies indirectly under the peer list:
/ietf-routing:routing/control-plane-protocols/control-plane-protocol/ietf-mpls-ldp:mpls-ldp/peers/peer/address-families/ipv4/hello-adjacencies/hello-adjacency/interface

That means it's present for both basic and extended adjacencies as far as I
understand it.


> 3. You are right that a neighbor can be discovered via both basic and
> extended discovery. What you point out is well covered in the tree in two
> distinct places – one for basic and the other for extended/targeted. Pls
> see section 6.1 and figure 5.
>
>
>
>          +--rw discovery
>
>             +--rw interfaces
>
>             |  +--rw interface* [interface]
>
>             |     +--rw address-families
>
>             |        +--rw ipv4
>
>             |           +--ro hello-adjacencies
>
>             |              +--ro hello-adjacencies* [adjacent-address]
>
>             |                 +--ro adjacent-address
>
>             |                    . . . .
>
>             |                    . . . .
>
>             +--rw targeted
>
>                +--rw address-families
>
>                   +--rw ipv4
>
>                      +--ro hello-adjacencies
>
>                         +--ro hello-adjacencies*
>
>                         |                  [local-address adjacent-address]
>
>                         +--ro local-address
>
>                            +--ro adjacent-address
>
>                               . . . .
>
>                               . . . .
>

The problem is that there's also a hello-adjacency list within the peer
list. There interface and targeted adjacencies are displayed together, and
their keys might collide and overlap one another.


> Also, page#52 clarifies the following for local-address -
>
>
>
>                    leaf local-address {
>
>                      type inet:ipv4-address;
>
>                      description
>
>                        "The local address used as the source address to
>
>                         send targeted Hello messages.
>
>                         If the value is not specified, the
>
>                         transport-address is used as the source
>
>                         address.";
>

That's the description of the local-address configuration leaf for targeted
neighbors. In my previous comment, I was referring to the local-address
state leaf from lines 1167 and 1276.

Upon further thought, I think those leafs descriptions are actually fine.
It should only make sense to display the IP source address as the transport
address would be the same for all adjacencies.


> 4. Good point about a good “deployment” practice for different protocols
> to leverage the same router-id. However, LDP protocol (RFC5036) specifies
> LSR-ID and allows it to be different, if/as needed (independent of that,
> one can choose different LSR ID for different VRFs on a node).
>
>
>
> Thankfully, the team agreed to keep the default along the line of what you
> pointed.
>
>
>
Ack, thanks for the clarification.

The fact that RFC5036 doesn't mandate the LSR-ID to use the Router-ID (for
the first four bytes) is a good argument to preserve the lsr-id leaf.
Regarding your second point, I think one should be able to use YANG schema
mount to set different ietf-routing's Router-IDs for different VRFs. If it
wasn't for that, all IGP models would need to have a router-id leaf as well
(which they don't).


> 5. Well, think of IPv6-only node, which unfortunately needs to have IPv4
> for OOB management access. That would result in LDP IPv4 AFI being enabled
> by default, and hence, would need to be explicitly disabled via this
> container.
>
>
>
> I will let my co-authors add further clarification.
>
>
I think that makes sense for the ipv4 presence container within
"global/address-families". For LDP neighbors, I can see no use for an
"ipv4" presence container (instead of a regular container).


> 6. Yes, it does apply.
>
> And  that configuration will allow for the targeted adjacency to be
> created for 1.1.1.1, but peering relationship will be denied.  If the
> intent is to not let the targeted adjacency be created, then policy could
> be created to deny 1.1.1.1.
>

Ack. Thanks for the clarification!


> Wrt custom hello/hold timers per targeted neighbors, AFAIK, RFC5036
> doesn’t specify that, nor do any of the implementations.
>
> Only custom hello/hold timers global config.
>

Ack.


> 7. AFAIK, this is because of RFC5036 that specifies 5s to be the lowest
> hello interval.  😊
>
>
>
> https://datatracker.ietf.org/doc/html/rfc5036#section-3.5.2
>

I couldn't find in that RFC section any reference to a minimum allowed
hello interval. Could you precise which excerpt you're using as a reference?

For what it's worth, I've seen numerous vendors supporting smaller hello
interval and holdtime values.

Also, maybe it would be a good idea to support infinite hold-time values
(0xffff) as they are specified by RFC 5036. It doesn't seem like they are
widely implemented though.


> 8. Thanks for reviewing so diligently and pointing these typos out.
>
> Thankfully, our amazing RFC Editor team has fixed all of them (I just
> checked their version) except interface’s counters (within the statistics
> container), which I believe is correct (since it is about the node, not
> about the peer).
>

I was referring to the statistics container within the peer-state-derived
grouping [1]. There I think "interface’s counters" was a copy and paste
error.

I'm happy to know the other typos were already fixed :)

[1] Full path to be precise:
/ietf-routing:routing/control-plane-protocols/control-plane-protocol/ietf-mpls-ldp:mpls-ldp/peers/peer/statistics

Regards,
-- 
Renato Westphal