Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ISIS graceful-restart timers and planned restart toggle #1058

Merged
merged 23 commits into from
Mar 26, 2024

Conversation

rszarecki
Copy link
Contributor

@rszarecki rszarecki commented Feb 28, 2024

Change Scope

  • add ISIS graceful-restart timer parameters - T2 (restart-time), T1 (interface-time), and number of T1 expirations after which adjacency is considered GR not capable.
  • adding graceful-restart container under level, as per RFC5306/8706 timers and capabilities as well as GR procedures are on per-level basis.
  • toggle to enable/disable support for RFC8706 planned restart.

Changes to ISIS global configuration:

module: openconfig-network-instance
module: openconfig-network-instance
  +--rw network-instances
     +--rw network-instance* [name]
        +--rw protocols
           +--rw protocol* [identifier name]
              +--rw isis
                 +--rw global
                    +--rw graceful-restart
                       +--rw config
                       |  +--rw enabled?                      boolean
                       |  +--rw helper-only?                  boolean
                       |  +--rw non-planed-only?              boolean                        <<< NEW
                       |  +--rw restart-time?                 int64                          <<< NEW
                       |  +--rw interface-timer?              int64                          <<< NEW
                       |  +--rw interface-time-expirations?   int64                          <<< NEW
                       +--ro state
                          +--ro enabled?                      boolean
                          +--ro helper-only?                  boolean
                          +--ro non-planed-only?              boolean                        <<< NEW
                          +--ro restart-time?                 int64                          <<< NEW
                          +--ro interface-timer?              int64                          <<< NEW
                          +--ro interface-time-expirations?   int64                          <<< NEW

Changes to ISIS level configuration. Allows distinct timer per LSDB.

module: openconfig-network-instance
  +--rw network-instances
     +--rw network-instance* [name]
        +--rw protocols
           +--rw protocol* [identifier name]
              +--rw isis
                 +--rw levels
                    +--rw level* [level-number]
                       +--rw graceful-restart                          <<< NEW
                          +--rw config
                          |  +--rw enabled?        boolean
                          |  +--rw restart-time?   int64
                          +--ro state
                             +--ro enabled?        boolean
                             +--ro restart-time?   int64

Changes to ISIS interface configuration. Allows distinct timer per interface.

module: openconfig-network-instance
  +--rw network-instances
     +--rw network-instance* [name]
        +--rw protocols
           +--rw protocol* [identifier name]
              +--rw isis
                 +--rw interfaces
                    +--rw interface* [interface-id]
                       +--rw graceful-restart                          <<< NEW
                          +--rw config
                          |  +--rw interface-timer?              int64
                          |  +--rw interface-time-expirations?   int64
                          +--ro state
                             +--ro interface-timer?              int64
                             +--ro interface-time-expirations?   int64

change is non-breaking

Platform Implementations

RP/0/RP0/CPU0:router# configure
RP/0/RP0/CPU0:router(config)# router isis isp
RP/0/RP0/CPU0:router(config-isis)# nsf ietf
RP/0/RP0/CPU0:router(config-isis)# nsf interface-expires 1
RP/0/RP0/CPU0:router(config-isis) nsf interface-timer 3
RP/0/RP0/CPU0:router(config-isis)# nsf lifetime 30
protocols {
    isis {
        graceful-restart {
            disable;
            helper-disable;
            restart-duration seconds;
        }
    }
}

@rszarecki rszarecki requested a review from a team as a code owner February 28, 2024 16:21
@rszarecki rszarecki changed the title Isis gr timers ISIS graceful-restart timers and planed restart toggle Feb 28, 2024
@dplore
Copy link
Member

dplore commented Feb 28, 2024

/gcbrun

@OpenConfigBot
Copy link

OpenConfigBot commented Feb 28, 2024

No major YANG version changes in commit 0be94bb

@dplore
Copy link
Member

dplore commented Feb 28, 2024

/gcbrun

@dplore
Copy link
Member

dplore commented Mar 1, 2024

Will review on next OC operators call 2024-03-05

@dplore dplore changed the title ISIS graceful-restart timers and planed restart toggle ISIS graceful-restart timers and planned restart toggle Mar 5, 2024
@dplore
Copy link
Member

dplore commented Mar 11, 2024

/gcbrun

@dplore
Copy link
Member

dplore commented Mar 19, 2024

@rszarecki does it make sense to add the same leafs within each level of hierarchy?

ie: shouldn't these be at global, isis level and interface level?

                          +--ro enabled?                      boolean
                          +--ro helper-only?                  boolean
                          +--ro non-planed-only?              boolean                        <<< NEW
                          +--ro restart-time?                 int64                          <<< NEW
                          +--ro interface-timer?              int64                          <<< NEW
                          +--ro interface-time-expirations?   int64                          <<< NEW

@rszarecki
Copy link
Contributor Author

@dplore
No.

  • restart-time is LSDB (level) attribute. Can't be interface attribute.
  • On P2P links restart can distinguish among level. So, enabled may not be implemented on levels level.
  • helper-only could be interface attributes, but it has little sense. It implys that it is can be active restarter, but not inform peer about it. The way RFC5306 is working, restarter can signal restart to peer. If peer do not support GR-helper. it will ignore.
  • non-planed-only is just toggle between RFC5306 and newer one, which is backward compatible. I do not see value in doing it per peer. Of peer do not support planned restart, is ignores restart time hint. I add it mainly to allow operator to set all systems in network to behave the same - unification. to lowest common denominator
  • interface-timer/expiration can be per level, because on P2P links levels are not disseminated (one IIH for both).

@dplore
Copy link
Member

dplore commented Mar 26, 2024

/gcbrun

@dplore
Copy link
Member

dplore commented Mar 26, 2024

/gcbrun

Copy link
Member

@dplore dplore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dplore dplore merged commit 33bd040 into openconfig:master Mar 26, 2024
14 checks passed
romeyod pushed a commit to romeyod/aftNextHop that referenced this pull request Sep 19, 2024
)

* Extending ISIS GR to support configuration of RFC5306/REFC8706 timers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

5 participants