public icon indicating copy to clipboard operation
public copied to clipboard

Add enabled leaf into isis multi-topology config

Open xandrorel opened this issue 1 year ago • 5 comments

Change Scope

This change adds a leaf node to enable isis multi-topology configuration. For some reason the enabled leaf node was not defined under config and some implementations use proprietary leaf nodes to enable isis multi-topology.

module: openconfig-network-instance
  +--rw network-instances
     +--rw network-instance* [name]
        +--rw protocols
           +--rw protocol* [identifier name]
              +--rw isis
                 +--rw global
                    +--rw afi-safi
                       +--rw af* [afi-name safi-name]
                          +--rw multi-topology
                             +--rw config
                             |  +--rw afi-name?    identityref
                             |  +--rw safi-name?   identityref
                             |  +--rw enabled?     boolean      <<< new
                             +--ro state
                                +--ro afi-name?    identityref
                                +--ro safi-name?   identityref
                                +--ro enabled?     boolean

Platform Implementations

Juniper ISIS multi-topology reference

[edit protocols isis]
user@R1# set topologies ipv6-unicast

Arista ISIS config guide

switch(config)# router isis 1
switch(config-router-isis)# address-family ipv6 unicast
switch(config-router-isis-af)# multi-topology

Cisco IOS XR config guide In Cisco IOS XR isis multi-topology is enabled by default. It can be disabled by single-topology command.

  router isis isp
   net 49.0000.0000.0001.00
   address-family ipv6 unicast
    single-topology

xandrorel avatar Oct 23 '24 20:10 xandrorel

/gcbrun

dplore avatar Oct 23 '24 20:10 dplore

No major YANG version changes in commit 2a3e9e5dd85dfcb4edf32385811996d2e7883f4f

OpenConfigBot avatar Oct 23 '24 20:10 OpenConfigBot

/gcbrun

dplore avatar Oct 24 '24 21:10 dplore

/gcbrun

dplore avatar Oct 25 '24 20:10 dplore

/gcbrun

dplore avatar Oct 25 '24 21:10 dplore

Hi @xandrorel , We reviewed this in the Oct 29, 2024 OC operators meeting.

It seems the intent of the current OC model is configuring the ISIS afi/safi implies enabling single topology.

ie: /network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/config/afi-name

If one configures the ISIS multitopology afi/safi, then multi-topology is implicitly enabled.
ie: ``/network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/multi-topology/config/afi-name`

This seems "roughly" aligned with the vendor CLI references provided. In each case, there is a configuration for the multitopology and the address family. If configured, it is in use.

Is there any operational use case to configure multi-topology and have it disabled? (as is the case for things like interfaces and bgp sessions).

@s19nal pointed out that the existing model might be more elegant if there was a boolean for multi-topology inside the container /network-instances/network-instance/protocols/protocol/isis/global/afi-safi/af/config. But I am not sure it's worth changing the model to add this since it doesn't create any new, needed functionality?

dplore avatar Oct 29 '24 16:10 dplore

Adding the enabled leaf will not add any new functionality but it will make the YANG tree consistent with the state container.

The current tree already looks weird with afi-name and safi-name leaf under the multi-topology container, these are redundant as this container is already under the afi-safi container which has these two leafs. We may not want to remove these leafs now but we should add the enabled leaf under it.

nikhil2553 avatar Nov 05 '24 07:11 nikhil2553

Quote reply

Ugh, you are correct, there is redundancy in this (git blame shows it goes all the way back to the original model 8 years ago).

I also see the point that the state leaf for enabled already exists which is inconsistent with the config container.

The problem with introducing this enabled leaf is that it is probably in effect, a breaking change. If a existing config doesn't specify this leaf and a device OS update is performed to a new OC release which has this leaf, what will the behavior be? It is ambiguous.

If we leave things as is, it seems clear that if

                          +--rw multi-topology
                             +--rw config
                             |  +--rw afi-name?    identityref
                             |  +--rw safi-name?   identityref

are not present, then multi-topology is not enabled.

dplore avatar Nov 06 '24 05:11 dplore

We can add a new leaf here to resolve this issue -- I think deprecating these afi-name and safi-name leaves sounds like the right thing to do.

If we add:

leaf mt-enabled {
  type boolean;
  description
    "When set to true indicates that multi-topology is enabled for this <AFI, SAFI>.";
}

Then we can introduce this safely -- if an operator sets (afi-name && safi-name) || (mt-enabled) then we know that MT is enabled for the <AFI,SAFI>. OSes can accept both for some time, and remove the afi-name and safi-name. The state/enabled leaf can be deprecated at some point too -- in favour of state/mt-enabled.

WDYT?

robshakir avatar Dec 18 '24 03:12 robshakir