Passa al contenuto principale

Appendix B. Further Augmentations: IP Connectivity and IS-IS Subservices (Appendice B. Ulteriori Aumenti: Sottoservizi Connettività IP e IS-IS)

Appendix B. Further Augmentations: IP Connectivity and IS-IS Subservices (Appendice B. Ulteriori Aumenti: Sottoservizi Connettività IP e IS-IS)​

In this section, we provide two additional YANG modules to completely cover the example in Figure 2 from Section 3.1 of [RFC9417]. The two missing subservice types are IP connectivity and the Intermediate System to Intermediate System (IS-IS) routing protocol. These modules are presented as examples; some future work is needed to propose a more complete version.

In questa sezione, forniamo due moduli YANG aggiuntivi per coprire completamente l'esempio in Figura 2 dalla Sezione 3.1 di [RFC9417]. I due tipi di sottoservizi mancanti sono la connettività IP e il protocollo di routing Intermediate System to Intermediate System (IS-IS). Questi moduli sono presentati come esempi; è necessario un lavoro futuro per proporre una versione più completa.

B.1. IP Connectivity Module Tree View (B.1. Visualizzazione ad Albero del Modulo Connettività IP)​

That subservice represents the unicast connectivity between two IP addresses located on two different devices. Such a subservice could report symptoms such as "No route found". The following tree diagram [RFC8340] provides an overview of the "example-service-assurance-ip-connectivity" module.

Quel sottoservizio rappresenta la connettività unicast tra due indirizzi IP situati su due dispositivi diversi. Tale sottoservizio potrebbe riportare sintomi come "No route found". Il seguente diagramma ad albero [RFC8340] fornisce una panoramica del modulo "example-service-assurance-ip-connectivity".

module: example-service-assurance-ip-connectivity

augment /sain:subservices/sain:subservice/sain:parameter:
+--rw parameters
+--rw device1 string
+--rw address1 inet:ip-address
+--rw device2 string
+--rw address2 inet:ip-address

To specify the connectivity that we are interested in, we specify two IP addresses and two devices. The subservice assures that the connectivity between IP address 1 on device 1 and IP address 2 on device 2 is healthy.

Per specificare la connettività che ci interessa, specifichiamo due indirizzi IP e due dispositivi. Il sottoservizio assicura che la connettività tra l'indirizzo IP 1 sul dispositivo 1 e l'indirizzo IP 2 sul dispositivo 2 sia sana.

B.2. IS-IS Module Tree View (B.2. Visualizzazione ad Albero del Modulo IS-IS)​

The following tree diagram [RFC8340] provides an overview of the "example-service-assurance-is-is" module.

Il seguente diagramma ad albero [RFC8340] fornisce una panoramica del modulo "example-service-assurance-is-is".

module: example-service-assurance-is-is

augment /sain:subservices/sain:subservice/sain:parameter:
+--rw parameters
+--rw instance-name string

The parameter of this subservice is the name of the IS-IS instance to assure.

Il parametro di questo sottoservizio è il nome dell'istanza IS-IS da assicurare.

B.3. Global Tree View (B.3. Visualizzazione ad Albero Globale)​

The following tree diagram [RFC8340] provides an overview of the "ietf-service-assurance", "ietf-service-assurance-device", "example-service-assurance-device-acme", "example-service-assurance-ip-connectivity", and "example-service-assurance-is-is" modules.

Il seguente diagramma ad albero [RFC8340] fornisce una panoramica dei moduli "ietf-service-assurance", "ietf-service-assurance-device", "example-service-assurance-device-acme", "example-service-assurance-ip-connectivity" e "example-service-assurance-is-is".

module: ietf-service-assurance
  +--ro assurance-graph-last-change    yang:date-and-time
  +--rw subservices
  |  +--rw subservice* [type id]
  |     +--rw type                                        identityref
  |     +--rw id                                          string
  |     +--ro last-change?
  |     |       yang:date-and-time
  |     +--ro label?                                      string
  |     +--rw under-maintenance!
  |     |  +--rw contact    string
  |     +--rw (parameter)
  |     |  +--:(service-instance-parameter)
  |     |  |  +--rw service-instance-parameter
  |     |  |     +--rw service          string
  |     |  |     +--rw instance-name    string
  |     |  +--:(example-ip-connectivity:parameters)
  |     |  |  +--rw example-ip-connectivity:parameters
  |     |  |     +--rw example-ip-connectivity:device1     string
  |     |  |     +--rw example-ip-connectivity:address1
  |     |  |     |       inet:ip-address
  |     |  |     +--rw example-ip-connectivity:device2     string
  |     |  |     +--rw example-ip-connectivity:address2
  |     |  |             inet:ip-address
  |     |  +--:(example-is-is:parameters)
  |     |  |  +--rw example-is-is:parameters
  |     |  |     +--rw example-is-is:instance-name    string
  |     |  +--:(sain-device:parameters)
  |     |  |  +--rw sain-device:parameters
  |     |  |     +--rw sain-device:device    string
  |     |  +--:(example-device-acme:parameters)
  |     |  |  +--rw example-device-acme:parameters
  |     |  |     +--rw example-device-acme:device
  |     |  |     |       string
  |     |  |     +--rw example-device-acme:acme-specific-parameter
  |     |  |             string
  |     |  +--:(sain-interface:parameters)
  |     |     +--rw sain-interface:parameters
  |     |        +--rw sain-interface:device       string
  |     |        +--rw sain-interface:interface    string
  |     +--ro health-score                                int8
  |     +--ro symptoms-history-start?
  |     |       yang:date-and-time
  |     +--ro symptoms
  |     |  +--ro symptom* [start-date-time agent-id symptom-id]
  |     |     +--ro symptom-id             leafref
  |     |     +--ro agent-id               -> /agents/agent/id
  |     |     +--ro health-score-weight?   uint8
  |     |     +--ro start-date-time        yang:date-and-time
  |     |     +--ro stop-date-time?        yang:date-and-time
  |     +--rw dependencies
  |        +--rw dependency* [type id]
  |           +--rw type
  |           |       -> /subservices/subservice/type
  |           +--rw id                 leafref
  |           +--rw dependency-type?   identityref
  +--ro agents
  |  +--ro agent* [id]
  |     +--ro id          string
  |     +--ro symptoms* [id]
  |        +--ro id             string
  |        +--ro description    string
  +--ro assured-services
     +--ro assured-service* [service]
        +--ro service      leafref
        +--ro instances* [name]
           +--ro name           leafref
           +--ro subservices* [type id]
              +--ro type    -> /subservices/subservice/type
              +--ro id      leafref

B.4. IP Connectivity YANG Module (B.4. Modulo YANG Connettività IP)​

module example-service-assurance-ip-connectivity {
yang-version 1.1;
namespace "urn:example:example-service-assurance-ip-connectivity";
prefix example-ip-connectivity;

import ietf-inet-types {
prefix inet;
reference
"RFC 6991: Common YANG Data Types";
}
import ietf-service-assurance {
prefix sain;
reference
"RFC 9418: YANG Modules for Service Assurance";
}

organization
"IETF OPSAWG Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/opsawg/>
WG List: <mailto:[email protected]>
Author: Benoit Claise <mailto:[email protected]>
Author: Jean Quilbeuf <mailto:[email protected]>";
description
"This example module augments the ietf-service-assurance module
to add support for the subservice ip-connectivity.

It checks whether the IP connectivity between two IP addresses
belonging to two network devices is healthy.";

revision 2023-07-11 {
description
"Initial version.";
reference
"RFC 9418: YANG Modules for Service Assurance";
}

identity ip-connectivity-type {
base sain:subservice-base;
description
"Checks connectivity between two IP addresses.";
}

augment "/sain:subservices/sain:subservice/sain:parameter" {
when "derived-from-or-self(sain:type, 'ip-connectivity-type')";
description
"Augments the parameter choice from the ietf-service-assurance
module with a case specific to the ip-connectivity
subservice.";
container parameters {
description
"Parameters for the ip-connectivity subservice type.";
leaf device1 {
type string;
mandatory true;
description
"Device at the first end of the connection.";
}
leaf address1 {
type inet:ip-address;
mandatory true;
description
"Address at the first end of the connection.";
}
leaf device2 {
type string;
mandatory true;
description
"Device at the second end of the connection.";
}
leaf address2 {
type inet:ip-address;
mandatory true;
description
"Address at the second end of the connection.";
}
}
}
}

B.5. IS-IS YANG Module (B.5. Modulo YANG IS-IS)​

module example-service-assurance-is-is {
yang-version 1.1;
namespace "urn:example:example-service-assurance-is-is";
prefix example-is-is;

import ietf-service-assurance {
prefix sain;
reference
"RFC 9418: YANG Modules for Service Assurance";
}

organization
"IETF OPSAWG Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/opsawg/>
WG List: <mailto:[email protected]>
Author: Benoit Claise <mailto:[email protected]>
Author: Jean Quilbeuf <mailto:[email protected]>";
description
"This example module augments the ietf-service-assurance module
to add support for the subservice is-is.

It checks whether an IS-IS instance is healthy.";

revision 2023-07-11 {
description
"Initial version.";
reference
"RFC 9418: YANG Modules for Service Assurance";
}

identity is-is-type {
base sain:subservice-base;
description
"Health of IS-IS routing protocol.";
}

augment "/sain:subservices/sain:subservice/sain:parameter" {
when "derived-from-or-self(sain:type, 'is-is-type')";
description
"Augments the parameter choice from the ietf-service-assurance
module with a case specific to the is-is subservice.";
container parameters {
description
"Parameters for the is-is subservice type.";
leaf instance-name {
type string;
mandatory true;
description
"The instance to monitor.";
}
}
}
}