Skip to content

IS-IS Graceful Support #423

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

Open
wants to merge 33 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
97ab9a0
IS-IS Graceful Support
SuryyaKrJana Apr 21, 2025
3f71708
Update auto generated content
actions-user Apr 21, 2025
1b6e286
changing towards open config
SuryyaKrJana Apr 22, 2025
18aca5d
Update auto generated content
actions-user Apr 22, 2025
6bb1ee6
adding starting trigger
SuryyaKrJana Apr 22, 2025
6af7c4c
Merge branch 'isis-gr' of https://github.com/open-traffic-generator/m…
SuryyaKrJana Apr 22, 2025
503fe79
Update auto generated content
actions-user Apr 22, 2025
94b6561
updating after changing the model in configuration and get state
SuryyaKrJana May 2, 2025
515ea84
Update auto generated content
actions-user May 2, 2025
b9d7a63
minor reference correction in Get state IIH
SuryyaKrJana May 2, 2025
f71ec60
Merge branch 'isis-gr' of https://github.com/open-traffic-generator/m…
SuryyaKrJana May 2, 2025
72d6707
Update auto generated content
actions-user May 2, 2025
4fb74dd
isis IIH Get state name change
SuryyaKrJana May 2, 2025
91ad035
Update auto generated content
actions-user May 2, 2025
d5f6404
merging from master
SuryyaKrJana May 2, 2025
b31c4c3
Update auto generated content
actions-user May 2, 2025
fc218c3
more clarify on get gracefull restart get state
SuryyaKrJana May 6, 2025
93a9bdf
Update auto generated content
actions-user May 6, 2025
7e13610
cleanup
SuryyaKrJana May 6, 2025
bb50993
Merge branch 'isis-gr' of https://github.com/open-traffic-generator/m…
SuryyaKrJana May 6, 2025
633fdc6
Update auto generated content
actions-user May 6, 2025
1308161
further improvement of the model
SuryyaKrJana May 6, 2025
72ba9a9
Merge branch 'isis-gr' of https://github.com/open-traffic-generator/m…
SuryyaKrJana May 6, 2025
d886383
Update auto generated content
actions-user May 6, 2025
d48fd13
adding stats for gr
SuryyaKrJana May 7, 2025
1d0f9ad
Merge branch 'isis-gr' of https://github.com/open-traffic-generator/m…
SuryyaKrJana May 7, 2025
363573b
Update auto generated content
actions-user May 7, 2025
45b03be
updated get stats
SuryyaKrJana May 8, 2025
eee7ab2
Merge branch 'isis-gr' of https://github.com/open-traffic-generator/m…
SuryyaKrJana May 8, 2025
f23f839
Update auto generated content
actions-user May 8, 2025
de68ca2
updated some description
SuryyaKrJana May 8, 2025
c007e21
Merge branch 'isis-gr' of https://github.com/open-traffic-generator/m…
SuryyaKrJana May 8, 2025
b3513ea
Update auto generated content
actions-user May 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions artifacts/openapi.html

Large diffs are not rendered by default.

509 changes: 509 additions & 0 deletions artifacts/openapi.yaml

Large diffs are not rendered by default.

355 changes: 355 additions & 0 deletions artifacts/otg.proto

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions control/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ components:
bgp:
$ref: './bgp.yaml#/components/schemas/Action.Protocol.Bgp'
x-field-uid: 4
isis:
$ref: './isis.yaml#/components/schemas/Action.Protocol.Isis'
x-field-uid: 5

Action.Response.Protocol:
description: >-
Response for actions associated with protocols on configured resources.
Expand Down
112 changes: 112 additions & 0 deletions control/isis.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
openapi: 3.0.3
info:
title: IS-IS Control models
description: >-
All IS-IS control schemas
version: ^0.0.0
components:
schemas:
Action.Protocol.Isis:
description: >-
Actions associated with IS-IS on configured resources.
type: object
properties:
initiate_restart:
description: >-
Configuration for the initiation of the IS-IS Graceful Restart.
$ref: "#/components/schemas/Isis.Action.Protocol.Isis.InitiateRestart"
x-field-uid: 2

Isis.Action.Protocol.Isis.InitiateRestart:
description: |-
Container of the configuration for the initiation of IS-IS Graceful Restart.
Timers T1 and T2 are used both by a restarting router and a starting router. Timer T3 is used only by a restarting router.
Copy link
Contributor

Choose a reason for hiding this comment

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

This line is not needed.

- Timer T1 is maintained per interface and indicates the time after which an unacknowledged (re)start attempt will be repeated. Its value is 3 seconds.
- Timer T2 is maintained for each LSP database (LSPDB) for Level 1 and Level 2. Default value is 60 seconds.
Copy link
Contributor

Choose a reason for hiding this comment

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

LSPDB -> LSDB

Copy link
Contributor

Choose a reason for hiding this comment

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

If this expired, what should the impl. do ?

- Timer T3 is maintained for the entire system fter which the router will declare that it has failed to achieve database synchronization
(by setting the overload bit in its own LSP). Its initial value is 65535 seconds and is set to minimum of the remaining times of received IIHs
containing a Restart TlV with the RA set.
type: object
properties:
router_names:
description: >-
The names of device objects to control.
type: array
items:
type: string
x-constraint:
- /components/schemas/Device.IsisRouter/properties/name
x-field-uid: 1
choice:
type: string
default: unplanned
x-field-uid: 2
x-enum:
unplanned:
x-field-uid: 1
subpress_adjacency:
x-field-uid: 3
unplanned:
$ref: "#/components/schemas/Isis.Action.Protocol.Isis.UnplannedRestart"
x-field-uid: 3
supress_adjacency:
$ref: "#/components/schemas/Isis.Action.Protocol.Isis.SupressAdjacency"
Copy link
Contributor

Choose a reason for hiding this comment

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

suppress

x-field-uid: 5

Isis.Action.Protocol.Isis.UnplannedRestart:
description: >-
Initiates IS-IS Unplanned Graceful Restart process for the selected IS-IS routers.
If no name is specified then Graceful Restart will be sent to all configured IS-IS routers.
When an emulated IS-IS router is in the unplanned "Restarting" mode,
it sends to the neighbor router (DUT) an IIH containing a Restart TLV with the RR (Restart Request) bit set.
Copy link
Contributor

Choose a reason for hiding this comment

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

sit and hold_time updated to as specified by user to indicate the maximum time within which this router or routers will complete the graceful restart.

type: object
properties:
holding_time:
description: >-
This is the estimated duration (in seconds) it will take for the
IS-IS session to be re-established after a restart.
The hold-timer in the IIH is updated with this time.
type: integer
format: uint32
maximum: 4096
default: 30
minimum: 10
x-field-uid: 1
restart_after:
description: >-
Time (in seconds) after which the actually restart will be initiated in IIH with Restart Tlv having RR bit set.
type: integer
format: uint32
maximum: 4096
default: 10
minimum: 10
x-field-uid: 2

Isis.Action.Protocol.Isis.SupressAdjacency:
description: >-
Initiates IS-IS Suppress adjacency advertisement process for the selected IS-IS routers.
If no name is specified then Start will be sent to all configured IS-IS routers.
When an emulated IS-IS router is in the unplanned "Restarting" mode,
it sends to the neighbor router (DUT) an IIH containing a Restart TLV with the SA (Suppress adjacency advertisement) bit set.
type: object
properties:
holding_time:
description: >-
This is the estimated duration (in seconds) it will take for
the IS-IS session to be re-established after a start by initiating Restart TLV having SA bit set in IIH.
The hold-timer in the IIH is updated with this time.
type: integer
format: uint32
maximum: 4096
default: 30
minimum: 10
x-field-uid: 1
restart_after:
description: >-
Time (in seconds) after which the actually Restart TLV will be initiated in IIH with Restart TLV having SA bit set.
type: integer
format: uint32
maximum: 4096
default: 10
minimum: 10
x-field-uid: 2
19 changes: 19 additions & 0 deletions device/isis/gracefulrestart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
components:
schemas:
Isis.GracefulRestart:
description: |-
Contains IS-IS Graceful configuration parameters.
The emulated IS-IS router that supports Graceful Restart capability MUST include Restart TLV in all transmitted IIHs.
- If this router is to be acting as the "Helper" mode for a Restarting Router.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this can be excluded.

- If this router is to be acting as the "Restarting" mode then "Restart" trigger should be initiated by set_control_action for "isis" under "protocol" choice.
In that case, "helper_mode" can be configured as true or false for the "Helper" mode as well "Restarting" mode or only "Restaring" router respectively.
Copy link
Contributor

Choose a reason for hiding this comment

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

Can also be probably removed.

Reference: https://datatracker.ietf.org/doc/html/rfc8706
type: object
properties:
helper_mode:
description: >-
The emulated IS-IS router will act as the "Helper" for the DUT that is restarting.
It acknowledges the Restart TLV sent by the DUT by sending an IIH containing a Restart TLV with the RA (Restart Acknowledgment) bit set.
type: boolean
default: true
x-field-uid: 1
5 changes: 5 additions & 0 deletions device/isis/isis.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,10 @@ components:
Optional Segment Routing (SR).
$ref: './segmentrouting.yaml#/components/schemas/Isis.SegmentRouting'
x-field-uid: 10
graceful_restart:
description: >-
Optional IS-IS Graceful Restart Configuration.
$ref: './gracefulrestart.yaml#/components/schemas/Isis.GracefulRestart'
x-field-uid: 11


90 changes: 90 additions & 0 deletions result/isis.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,30 @@ components:
x-field-uid: 25
l2_lsp_received:
x-field-uid: 26
l1_rr_sent:
Copy link
Contributor

Choose a reason for hiding this comment

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

Will these stats , if needing to be exposed , be separate for l1 and l2 on a l1+l2 link ?

x-field-uid: 27
l1_rr_received:
x-field-uid: 28
l1_ra_sent:
x-field-uid: 29
l1_ra_received:
x-field-uid: 30
l1_sa_sent:
x-field-uid: 31
l1_sa_received:
x-field-uid: 32
l2_rr_sent:
x-field-uid: 33
l2_rr_received:
x-field-uid: 34
l2_ra_sent:
x-field-uid: 35
l2_ra_received:
x-field-uid: 36
l2_sa_sent:
x-field-uid: 37
l2_sa_received:
x-field-uid: 38
x-field-uid: 2
Isis.Metric:
description: >-
Expand Down Expand Up @@ -248,3 +272,69 @@ components:
type: integer
format: uint64
x-field-uid: 27
l1_rr_sent:
description: >-
Number of Level 1 (L1) Restart Request (RR) sent.
type: integer
format: uint64
x-field-uid: 28
l1_rr_received:
description: >-
Number of Level 1 (L1) Restart Request (RR) received.
type: integer
format: uint64
x-field-uid: 29
l1_ra_sent:
description: >-
Number of Level 1 (L1) Restart Acknowledgement (RA) sent.
type: integer
format: uint64
x-field-uid: 30
l1_ra_received:
description: >-
Number of Level 1 (L1) Restart Acknowledgement (RA) received.
type: integer
format: uint64
x-field-uid: 31
l1_sa_sent:
description: >-
Number of Level 1 (L1) Suppress adjacency advertisement (SA) sent.
type: integer
format: uint64
x-field-uid: 32
l1_sa_received:
description: >-
Number of Level 1 (L1) Suppress adjacency advertisement (SA) received.
type: integer
format: uint64
x-field-uid: 33
l2_rr_received:
description: >-
Number of Level 2 (L2) Restart Request (RR) received.
type: integer
format: uint64
x-field-uid: 34
l2_ra_sent:
description: >-
Number of Level 2 (L2) Restart Acknowledgement (RA) sent.
type: integer
format: uint64
x-field-uid: 35
l2_ra_received:
description: >-
Number of Level 2 (L2) Restart Acknowledgement (RA) received.
type: integer
format: uint64
x-field-uid: 36
l2_sa_sent:
description: >-
Number of Level 2 (L2) Suppress adjacency advertisement (SA) sent.
type: integer
format: uint64
x-field-uid: 37
l2_sa_received:
description: >-
Number of Level 2 (L2) Suppress adjacency advertisement (SA) received.
type: integer
format: uint64
x-field-uid: 38
Loading