From 20d2c4df2a2873b0dbd469f93f191d9169b29b44 Mon Sep 17 00:00:00 2001 From: lcampos01 Date: Thu, 4 Sep 2025 09:43:18 +0200 Subject: [PATCH 1/4] L2NMEmulated Functionality --- .../L2NMEmulatedServiceHandler.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/service/service/service_handlers/l2nm_emulated/L2NMEmulatedServiceHandler.py b/src/service/service/service_handlers/l2nm_emulated/L2NMEmulatedServiceHandler.py index 007deca8d..e84ff44e0 100644 --- a/src/service/service/service_handlers/l2nm_emulated/L2NMEmulatedServiceHandler.py +++ b/src/service/service/service_handlers/l2nm_emulated/L2NMEmulatedServiceHandler.py @@ -24,6 +24,8 @@ from service.service.service_handler_api.SettingsHandler import SettingsHandler from service.service.task_scheduler.TaskExecutor import TaskExecutor from .ConfigRules import setup_config_rules, teardown_config_rules +import requests + LOGGER = logging.getLogger(__name__) METRICS_POOL = MetricsPool('Service', 'Handler', labels={'handler': 'l2nm_emulated'}) @@ -47,6 +49,7 @@ class L2NMEmulatedServiceHandler(_ServiceHandler): settings = self.__settings_handler.get('/settings') results = [] + dynamic_nodes = [] for endpoint in endpoints: try: device_uuid, endpoint_uuid = get_device_endpoint_uuids(endpoint) @@ -79,6 +82,13 @@ class L2NMEmulatedServiceHandler(_ServiceHandler): str(device_uuid), str(device_name), str(endpoint_uuid), str(endpoint_name), str_endpoint_settings )) + + try: + dynamic_nodes.append(f"{device_name}") + except Exception as e: + LOGGER.error(f"Error extracting endpoint info: {e}") + + json_config_rules = setup_config_rules( service_uuid, connection_uuid, device_uuid, endpoint_uuid, endpoint_name, settings, endpoint_settings, endpoint_acls) @@ -100,6 +110,42 @@ class L2NMEmulatedServiceHandler(_ServiceHandler): LOGGER.exception('Unable to SetEndpoint({:s})'.format(str(endpoint))) results.append(e) + + try: + STATIC_BW = 2000000 + STATIC_BW_AVAILABLE = '0x1.e84p+20' + + src = dynamic_nodes[0] # R1 + dst = dynamic_nodes[-1] # R4 + path = [src, "R2", dst] + + for i in range(len(path) - 1): + link_id = f"{path[i]}=={path[i+1]}" + LOGGER.info(f"[EMULATED] Setting BW {STATIC_BW} ({STATIC_BW_AVAILABLE}) on link {link_id}") + + + URL = "http://192.168.165.44:8080/set_path_bw" + payload = { + "bandwidth": STATIC_BW, + "segment-list": [ + {"node-uuid": "R1"}, + {"node-uuid": "R2"}, + {"node-uuid": "R4"} + ] + } + + resp = requests.post(URL, json=payload) + LOGGER.info(f"Status: {resp.status_code}") + try: + LOGGER.info(f"Response: {resp.json()}") + except Exception: + LOGGER.info(f"Response text: {resp.text}") + + except Exception as e: + LOGGER.error(f"Error updating emulated BW: {e}") + + + return results @metered_subclass_method(METRICS_POOL) -- GitLab From dc405d139bce3ed88697ab509dcaace010016de1 Mon Sep 17 00:00:00 2001 From: lcampos01 Date: Thu, 4 Sep 2025 09:45:05 +0200 Subject: [PATCH 2/4] NBI --- deploy/all.sh | 4 +- quick_deploy.sh | 438 ++ .../ietf_network_bw/NameMapping.py | 46 + .../ietf_network_bw/NetworkTypeEnum.py | 23 + .../ietf_network_bw/Networks_bw.py | 85 + .../nbi_plugins/ietf_network_bw/README.md | 14 + .../ietf_network_bw/YangHandler.py | 183 + .../nbi_plugins/ietf_network_bw/__init__.py | 44 + .../ietf_network_bw/_docs/test_commands.txt | 26 + .../yang/iana-bfd-types@2025-04-16.yang | 188 + .../yang/iana-routing-types@2017-12-04.yang | 473 ++ .../yang/iana-routing-types@2022-08-19.yang | 644 +++ .../yang/ietf-bfd-types@2022-09-22.yang | 690 +++ .../yang/ietf-eth-te-topology@2023-09-28.yang | 2275 +++++++++ .../ietf-eth-tran-service@2023-10-23.yang | 1004 ++++ .../yang/ietf-eth-tran-types@2023-10-23.yang | 457 ++ .../yang/ietf-inet-types@2013-07-15.yang | 458 ++ .../yang/ietf-interfaces@2018-02-20.yang | 1123 +++++ .../yang/ietf-isis@2022-10-19.yang | 4455 ++++++++++++++++ .../yang/ietf-key-chain@2017-06-15.yang | 382 ++ .../yang/ietf-l3-te-topology@2024-06-08.yang | 208 + .../ietf-l3-unicast-topology@2018-02-26.yang | 359 ++ .../yang/ietf-layer1-types@2022-10-14.yang | 1414 ++++++ .../yang/ietf-netconf-acm@2018-02-14.yang | 464 ++ .../ietf-network-topology@2018-02-26.yang | 294 ++ .../yang/ietf-network@2018-02-26.yang | 193 + .../yang/ietf-otn-topology@2023-07-06.yang | 2405 +++++++++ .../yang/ietf-routing-types@2017-12-04.yang | 771 +++ .../yang/ietf-routing@2018-03-13.yang | 684 +++ .../yang/ietf-te-packet-types@2025-01-24.yang | 835 +++ .../ietf-te-topology-packet@2024-06-08.yang | 734 +++ .../yang/ietf-te-topology@2020-08-06.yang | 1952 +++++++ .../yang/ietf-te-types@2025-01-24.yang | 4473 +++++++++++++++++ .../ietf-trans-client-service@2023-10-23.yang | 325 ++ ...etf-trans-client-svc-types@2023-10-23.yang | 63 + .../yang/ietf-yang-types@2013-07-15.yang | 474 ++ .../L3NMEmulatedServiceHandler.py | 5 +- src/ztp_server/service/__main__.py | 27 + 38 files changed, 28689 insertions(+), 3 deletions(-) create mode 100755 quick_deploy.sh create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang diff --git a/deploy/all.sh b/deploy/all.sh index a284287bc..101eabdd8 100755 --- a/deploy/all.sh +++ b/deploy/all.sh @@ -117,7 +117,7 @@ export CRDB_DEPLOY_MODE=${CRDB_DEPLOY_MODE:-"single"} # WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! # If CRDB_DROP_DATABASE_IF_EXISTS is "YES", the databases starting with "tfs_" will be dropped while # checking/deploying CockroachDB. -export CRDB_DROP_DATABASE_IF_EXISTS=${CRDB_DROP_DATABASE_IF_EXISTS:-""} +export CRDB_DROP_DATABASE_IF_EXISTS=${CRDB_DROP_DATABASE_IF_EXISTS:-"YES"} # If not already set, disable flag for re-deploying CockroachDB from scratch. # WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! @@ -202,7 +202,7 @@ export QDB_TABLE_SLICE_GROUPS=${QDB_TABLE_SLICE_GROUPS:-"tfs_slice_groups"} # If QDB_DROP_TABLES_IF_EXIST is "YES", the tables pointed by variables # QDB_TABLE_MONITORING_KPIS and QDB_TABLE_SLICE_GROUPS will be dropped while # checking/deploying QuestDB. -export QDB_DROP_TABLES_IF_EXIST=${QDB_DROP_TABLES_IF_EXIST:-""} +export QDB_DROP_TABLES_IF_EXIST=${QDB_DROP_TABLES_IF_EXIST:-"YES"} # If not already set, disable flag for re-deploying QuestDB from scratch. # WARNING: ACTIVATING THIS FLAG IMPLIES LOOSING THE DATABASE INFORMATION! diff --git a/quick_deploy.sh b/quick_deploy.sh new file mode 100755 index 000000000..57c196184 --- /dev/null +++ b/quick_deploy.sh @@ -0,0 +1,438 @@ +#!/bin/bash +# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +######################################################################################################################## +# Read deployment settings +######################################################################################################################## + + +# ----- TeraFlowSDN ------------------------------------------------------------ + +# If not already set, set the URL of the Docker registry where the images will be uploaded to. +# By default, assume internal MicroK8s registry is used. +export TFS_REGISTRY_IMAGES=${TFS_REGISTRY_IMAGES:-"http://localhost:32000/tfs/"} + +# If not already set, set the list of components, separated by spaces, you want to build images for, and deploy. +# By default, only basic components are deployed +export TFS_COMPONENTS=${TFS_COMPONENTS:-"context device pathcomp service slice nbi webui"} + +# If not already set, set the tag you want to use for your images. +export TFS_IMAGE_TAG=${TFS_IMAGE_TAG:-"dev"} + +# If not already set, set the name of the Kubernetes namespace to deploy TFS to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +# If not already set, set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS=${TFS_EXTRA_MANIFESTS:-""} + +# If not already set, set the new Grafana admin password +export TFS_GRAFANA_PASSWORD=${TFS_GRAFANA_PASSWORD:-"admin123+"} + +# If not already set, disable skip-build flag to rebuild the Docker images. +# If TFS_SKIP_BUILD is "YES", the containers are not rebuilt-retagged-repushed and existing ones are used. +export TFS_SKIP_BUILD=${TFS_SKIP_BUILD:-"YES"} + +# If TFS_SKIP_BUILD is "YES", select the containers to be build +# Any other container will use previous docker images +export TFS_QUICK_COMPONENTS="nbi" + +# ----- CockroachDB ------------------------------------------------------------ + +# If not already set, set the namespace where CockroackDB will be deployed. +export CRDB_NAMESPACE=${CRDB_NAMESPACE:-"crdb"} + +# If not already set, set the database username to be used by Context. +export CRDB_USERNAME=${CRDB_USERNAME:-"tfs"} + +# If not already set, set the database user's password to be used by Context. +export CRDB_PASSWORD=${CRDB_PASSWORD:-"tfs123"} + +# If not already set, set the database name to be used by Context. +export CRDB_DATABASE=${CRDB_DATABASE:-"tfs"} + + +# ----- NATS ------------------------------------------------------------------- + +# If not already set, set the namespace where NATS will be deployed. +export NATS_NAMESPACE=${NATS_NAMESPACE:-"nats"} + + +# ----- QuestDB ---------------------------------------------------------------- + +# If not already set, set the namespace where QuestDB will be deployed. +export QDB_NAMESPACE=${QDB_NAMESPACE:-"qdb"} + +# If not already set, set the database username to be used for QuestDB. +export QDB_USERNAME=${QDB_USERNAME:-"admin"} + +# If not already set, set the database user's password to be used for QuestDB. +export QDB_PASSWORD=${QDB_PASSWORD:-"quest"} + +# If not already set, set the table name to be used by Monitoring for KPIs. +export QDB_TABLE_MONITORING_KPIS=${QDB_TABLE_MONITORING_KPIS:-"tfs_monitoring_kpis"} + +# If not already set, set the table name to be used by Slice for plotting groups. +export QDB_TABLE_SLICE_GROUPS=${QDB_TABLE_SLICE_GROUPS:-"tfs_slice_groups"} + + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +# Constants +GITLAB_REPO_URL="labs.etsi.org:5050/tfs/controller" +TMP_FOLDER="./tmp" + +# Create a tmp folder for files modified during the deployment +TMP_MANIFESTS_FOLDER="$TMP_FOLDER/manifests" +mkdir -p $TMP_MANIFESTS_FOLDER +TMP_LOGS_FOLDER="$TMP_FOLDER/logs" +mkdir -p $TMP_LOGS_FOLDER + +echo "Deleting and Creating a new namespace..." +kubectl delete namespace $TFS_K8S_NAMESPACE --ignore-not-found +kubectl create namespace $TFS_K8S_NAMESPACE +printf "\n" + +echo "Create secret with CockroachDB data" +CRDB_SQL_PORT=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') +kubectl create secret generic crdb-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ + --from-literal=CRDB_NAMESPACE=${CRDB_NAMESPACE} \ + --from-literal=CRDB_SQL_PORT=${CRDB_SQL_PORT} \ + --from-literal=CRDB_DATABASE=${CRDB_DATABASE} \ + --from-literal=CRDB_USERNAME=${CRDB_USERNAME} \ + --from-literal=CRDB_PASSWORD=${CRDB_PASSWORD} \ + --from-literal=CRDB_SSLMODE=require +printf "\n" + +echo "Create secret with NATS data" +NATS_CLIENT_PORT=$(kubectl --namespace ${NATS_NAMESPACE} get service nats -o 'jsonpath={.spec.ports[?(@.name=="client")].port}') +kubectl create secret generic nats-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ + --from-literal=NATS_NAMESPACE=${NATS_NAMESPACE} \ + --from-literal=NATS_CLIENT_PORT=${NATS_CLIENT_PORT} +printf "\n" + +echo "Create secret with QuestDB data" +QDB_HTTP_PORT=$(kubectl --namespace ${QDB_NAMESPACE} get service questdb-public -o 'jsonpath={.spec.ports[?(@.name=="http")].port}') +QDB_ILP_PORT=$(kubectl --namespace ${QDB_NAMESPACE} get service questdb-public -o 'jsonpath={.spec.ports[?(@.name=="ilp")].port}') +QDB_SQL_PORT=$(kubectl --namespace ${QDB_NAMESPACE} get service questdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') +METRICSDB_HOSTNAME="questdb-public.${QDB_NAMESPACE}.svc.cluster.local" +kubectl create secret generic qdb-data --namespace ${TFS_K8S_NAMESPACE} --type='Opaque' \ + --from-literal=QDB_NAMESPACE=${QDB_NAMESPACE} \ + --from-literal=METRICSDB_HOSTNAME=${METRICSDB_HOSTNAME} \ + --from-literal=METRICSDB_REST_PORT=${QDB_HTTP_PORT} \ + --from-literal=METRICSDB_ILP_PORT=${QDB_ILP_PORT} \ + --from-literal=METRICSDB_SQL_PORT=${QDB_SQL_PORT} \ + --from-literal=METRICSDB_TABLE_MONITORING_KPIS=${QDB_TABLE_MONITORING_KPIS} \ + --from-literal=METRICSDB_TABLE_SLICE_GROUPS=${QDB_TABLE_SLICE_GROUPS} \ + --from-literal=METRICSDB_USERNAME=${QDB_USERNAME} \ + --from-literal=METRICSDB_PASSWORD=${QDB_PASSWORD} +printf "\n" + +echo "Deploying components and collecting environment variables..." +ENV_VARS_SCRIPT=tfs_runtime_env_vars.sh +echo "# Environment variables for TeraFlowSDN deployment" > $ENV_VARS_SCRIPT +PYTHONPATH=$(pwd)/src +echo "export PYTHONPATH=${PYTHONPATH}" >> $ENV_VARS_SCRIPT + +for COMPONENT in $TFS_COMPONENTS; do + echo "Processing '$COMPONENT' component..." + + if [ "$TFS_SKIP_BUILD" != "YES" ]; then + echo " Building Docker image..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log" + + if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then + docker build -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG" + elif [ "$COMPONENT" == "pathcomp" ]; then + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-frontend.log" + docker build -t "$COMPONENT-frontend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/frontend/Dockerfile . > "$BUILD_LOG" + + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-backend.log" + docker build -t "$COMPONENT-backend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/backend/Dockerfile . > "$BUILD_LOG" + # next command is redundant, but helpful to keep cache updated between rebuilds + IMAGE_NAME="$COMPONENT-backend:$TFS_IMAGE_TAG-builder" + docker build -t "$IMAGE_NAME" --target builder -f ./src/"$COMPONENT"/backend/Dockerfile . >> "$BUILD_LOG" + elif [ "$COMPONENT" == "dlt" ]; then + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-connector.log" + docker build -t "$COMPONENT-connector:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/connector/Dockerfile . > "$BUILD_LOG" + + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-gateway.log" + docker build -t "$COMPONENT-gateway:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/gateway/Dockerfile . > "$BUILD_LOG" + else + docker build -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG" + fi + + echo " Pushing Docker image to '$TFS_REGISTRY_IMAGES'..." + + if [ "$COMPONENT" == "pathcomp" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-frontend.log" + docker tag "$COMPONENT-frontend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-frontend.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-backend.log" + docker tag "$COMPONENT-backend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-backend.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + elif [ "$COMPONENT" == "dlt" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-connector.log" + docker tag "$COMPONENT-connector:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-connector.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-gateway.log" + docker tag "$COMPONENT-gateway:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-gateway.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + else + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log" + docker tag "$COMPONENT:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + fi + else + for QUICK_COMPONENT in $TFS_QUICK_COMPONENTS; do + if [ "$COMPONENT" == "$QUICK_COMPONENT" ]; then + + echo " Building Docker image..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${QUICK_COMPONENT}.log" + + docker build -t "$QUICK_COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$QUICK_COMPONENT"/Dockerfile . > "$BUILD_LOG" + echo " Pushing Docker image to '$TFS_REGISTRY_IMAGES'..." + + + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$QUICK_COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${QUICK_COMPONENT}.log" + docker tag "$QUICK_COMPONENT:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${QUICK_COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + fi + done + fi + + echo " Adapting '$COMPONENT' manifest file..." + MANIFEST="$TMP_MANIFESTS_FOLDER/${COMPONENT}service.yaml" + cp ./manifests/"${COMPONENT}"service.yaml "$MANIFEST" + + if [ "$COMPONENT" == "pathcomp" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-frontend:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-frontend:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-backend:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-backend:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + elif [ "$COMPONENT" == "dlt" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-connector:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-connector:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-gateway:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-gateway:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + else + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f4) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + fi + + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST" + + # TODO: harmonize names of the monitoring component + + echo " Deploying '$COMPONENT' component to Kubernetes..." + DEPLOY_LOG="$TMP_LOGS_FOLDER/deploy_${COMPONENT}.log" + kubectl --namespace $TFS_K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG" + COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") + #kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=0 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + #kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=1 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + + echo " Collecting env-vars for '$COMPONENT' component..." + + SERVICE_DATA=$(kubectl get service ${COMPONENT_OBJNAME}service --namespace $TFS_K8S_NAMESPACE -o json) + if [ -z "${SERVICE_DATA}" ]; then continue; fi + + # Env vars for service's host address + SERVICE_HOST=$(echo ${SERVICE_DATA} | jq -r '.spec.clusterIP') + if [ -z "${SERVICE_HOST}" ]; then continue; fi + ENVVAR_HOST=$(echo "${COMPONENT}service_SERVICE_HOST" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_HOST}=${SERVICE_HOST}" >> $ENV_VARS_SCRIPT + + # Env vars for service's 'grpc' port (if any) + SERVICE_PORT_GRPC=$(echo ${SERVICE_DATA} | jq -r '.spec.ports[] | select(.name=="grpc") | .port') + if [ -n "${SERVICE_PORT_GRPC}" ]; then + ENVVAR_PORT_GRPC=$(echo "${COMPONENT}service_SERVICE_PORT_GRPC" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_PORT_GRPC}=${SERVICE_PORT_GRPC}" >> $ENV_VARS_SCRIPT + fi + + # Env vars for service's 'http' port (if any) + SERVICE_PORT_HTTP=$(echo ${SERVICE_DATA} | jq -r '.spec.ports[] | select(.name=="http") | .port') + if [ -n "${SERVICE_PORT_HTTP}" ]; then + ENVVAR_PORT_HTTP=$(echo "${COMPONENT}service_SERVICE_PORT_HTTP" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_PORT_HTTP}=${SERVICE_PORT_HTTP}" >> $ENV_VARS_SCRIPT + fi + + printf "\n" +done + +echo "Deploying extra manifests..." +for EXTRA_MANIFEST in $TFS_EXTRA_MANIFESTS; do + echo "Processing manifest '$EXTRA_MANIFEST'..." + if [[ "$EXTRA_MANIFEST" == *"servicemonitor"* ]]; then + kubectl apply -f $EXTRA_MANIFEST + else + kubectl --namespace $TFS_K8S_NAMESPACE apply -f $EXTRA_MANIFEST + fi + printf "\n" +done +printf "\n" + +for COMPONENT in $TFS_COMPONENTS; do + echo "Waiting for '$COMPONENT' component..." + COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") + kubectl wait --namespace $TFS_K8S_NAMESPACE \ + --for='condition=available' --timeout=300s deployment/${COMPONENT_OBJNAME}service + printf "\n" +done + +if [[ "$TFS_COMPONENTS" == *"webui"* ]] && [[ "$TFS_COMPONENTS" == *"monitoring"* ]]; then + echo "Configuring WebUI DataStores and Dashboards..." + sleep 5 + + # Exposed through the ingress controller "tfs-ingress" + GRAFANA_URL="127.0.0.1:80/grafana" + + # Default Grafana credentials + GRAFANA_USERNAME="admin" + GRAFANA_PASSWORD="admin" + + # Configure Grafana Admin Password + # Ref: https://grafana.com/docs/grafana/latest/http_api/user/#change-password + GRAFANA_URL_DEFAULT="http://${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}@${GRAFANA_URL}" + + echo ">> Updating Grafana 'admin' password..." + curl -X PUT -H "Content-Type: application/json" -d '{ + "oldPassword": "'${GRAFANA_PASSWORD}'", + "newPassword": "'${TFS_GRAFANA_PASSWORD}'", + "confirmNew" : "'${TFS_GRAFANA_PASSWORD}'" + }' ${GRAFANA_URL_DEFAULT}/api/user/password + echo + echo + + # Updated Grafana API URL + GRAFANA_URL_UPDATED="http://${GRAFANA_USERNAME}:${TFS_GRAFANA_PASSWORD}@${GRAFANA_URL}" + echo "export GRAFANA_URL_UPDATED=${GRAFANA_URL_UPDATED}" >> $ENV_VARS_SCRIPT + + echo ">> Installing Scatter Plot plugin..." + curl -X POST -H "Content-Type: application/json" -H "Content-Length: 0" \ + ${GRAFANA_URL_UPDATED}/api/plugins/michaeldmoore-scatter-panel/install + echo + + # Ref: https://grafana.com/docs/grafana/latest/http_api/data_source/ + QDB_HOST_PORT="${METRICSDB_HOSTNAME}:${QDB_SQL_PORT}" + echo ">> Creating datasources..." + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ + "access" : "proxy", + "type" : "postgres", + "name" : "questdb-mon-kpi", + "url" : "'${QDB_HOST_PORT}'", + "database" : "'${QDB_TABLE_MONITORING_KPIS}'", + "user" : "'${QDB_USERNAME}'", + "basicAuth": false, + "isDefault": true, + "jsonData" : { + "sslmode" : "disable", + "postgresVersion" : 1100, + "maxOpenConns" : 0, + "maxIdleConns" : 2, + "connMaxLifetime" : 14400, + "tlsAuth" : false, + "tlsAuthWithCACert" : false, + "timescaledb" : false, + "tlsConfigurationMethod": "file-path", + "tlsSkipVerify" : true + }, + "secureJsonData": {"password": "'${QDB_PASSWORD}'"} + }' ${GRAFANA_URL_UPDATED}/api/datasources + echo + + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ + "access" : "proxy", + "type" : "postgres", + "name" : "questdb-slc-grp", + "url" : "'${QDB_HOST_PORT}'", + "database" : "'${QDB_TABLE_SLICE_GROUPS}'", + "user" : "'${QDB_USERNAME}'", + "basicAuth": false, + "isDefault": false, + "jsonData" : { + "sslmode" : "disable", + "postgresVersion" : 1100, + "maxOpenConns" : 0, + "maxIdleConns" : 2, + "connMaxLifetime" : 14400, + "tlsAuth" : false, + "tlsAuthWithCACert" : false, + "timescaledb" : false, + "tlsConfigurationMethod": "file-path", + "tlsSkipVerify" : true + }, + "secureJsonData": {"password": "'${QDB_PASSWORD}'"} + }' ${GRAFANA_URL_UPDATED}/api/datasources + printf "\n\n" + + echo ">> Creating dashboards..." + # Ref: https://grafana.com/docs/grafana/latest/http_api/dashboard/ + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_db_mon_kpis_psql.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_db_slc_grps_psql.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + printf "\n\n" + + echo ">> Staring dashboards..." + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-l3-monit" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-slice-grps" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + printf "\n\n" +fi diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py new file mode 100644 index 000000000..03d052afd --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py @@ -0,0 +1,46 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Dict, Tuple +from common.proto.context_pb2 import Device, DeviceId, EndPoint, EndPointId + +class NameMappings: + def __init__(self) -> None: + self._device_uuid_to_name : Dict[str, str] = dict() + self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict() + + def store_device_name(self, device : Device) -> None: + device_uuid = device.device_id.device_uuid.uuid + device_name = device.name + self._device_uuid_to_name[device_uuid] = device_name + self._device_uuid_to_name[device_name] = device_name + + def store_endpoint_name(self, device : Device, endpoint : EndPoint) -> None: + device_uuid = device.device_id.device_uuid.uuid + device_name = device.name + endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid + endpoint_name = endpoint.name + self._endpoint_uuid_to_name[(device_uuid, endpoint_uuid)] = endpoint_name + self._endpoint_uuid_to_name[(device_name, endpoint_uuid)] = endpoint_name + self._endpoint_uuid_to_name[(device_uuid, endpoint_name)] = endpoint_name + self._endpoint_uuid_to_name[(device_name, endpoint_name)] = endpoint_name + + def get_device_name(self, device_id : DeviceId) -> str: + device_uuid = device_id.device_uuid.uuid + return self._device_uuid_to_name.get(device_uuid, device_uuid) + + def get_endpoint_name(self, endpoint_id : EndPointId) -> str: + device_uuid = endpoint_id.device_id.device_uuid.uuid + endpoint_uuid = endpoint_id.endpoint_uuid.uuid + return self._endpoint_uuid_to_name.get((device_uuid, endpoint_uuid), endpoint_uuid) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py new file mode 100644 index 000000000..849252b99 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py @@ -0,0 +1,23 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from enum import Enum +from typing import Optional + +class NetworkTypeEnum(Enum): + TE_OTN_TOPOLOGY = 'otn' + TE_ETH_TRAN_TOPOLOGY = 'eth-tran' + +def get_network_topology_type(topology_id : str) -> Optional[NetworkTypeEnum]: + return NetworkTypeEnum._value2member_map_.get(topology_id) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py new file mode 100644 index 000000000..39a36338d --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py @@ -0,0 +1,85 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import enum, json, logging +import pyangbind.lib.pybindJSON as pybindJSON +from flask import request +from flask.json import jsonify +from flask_restful import Resource +from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.Settings import get_setting +from common.proto.context_pb2 import ContextId, Empty +from common.tools.context_queries.Topology import get_topology_details +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH +from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR +from .YangHandler import YangHandler + +LOGGER = logging.getLogger(__name__) + +TE_TOPOLOGY_NAMES = [ + 'providerId-10-clientId-0-topologyId-1', + 'providerId-10-clientId-0-topologyId-2' +] + +class Renderer(enum.Enum): + LIBYANG = 'LIBYANG' + PYANGBIND = 'PYANGBIND' + +DEFAULT_RENDERER = Renderer.LIBYANG +USE_RENDERER = get_setting('IETF_NETWORK_RENDERER', default=DEFAULT_RENDERER.value) + + +class Networks_bw(Resource): + @HTTP_AUTH.login_required + def get(self): + LOGGER.info('Request: {:s}'.format(str(request))) + topology_id = '' + try: + context_client = ContextClient() + + if USE_RENDERER == Renderer.LIBYANG.value: + yang_handler = YangHandler() + json_response = [] + + contexts = context_client.ListContexts(Empty()).contexts + context_names = [context.name for context in contexts] + LOGGER.info(f'Contexts detected: {context_names}') + + for context_name in context_names: + topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies + topology_names = [topology.name for topology in topologies] + LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}') + + for topology_name in topology_names: + topology_details = get_topology_details(context_client, topology_name, context_name) + if topology_details is None: + raise Exception(f'Topology({context_name}/{topology_name}) not found') + + network_reply = yang_handler.compose_network(topology_name, topology_details) + json_response.append(network_reply) + + yang_handler.destroy() + else: + raise Exception('Unsupported Renderer: {:s}'.format(str(USE_RENDERER))) + + response = jsonify(json_response) + response.status_code = HTTP_OK + + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id))) + response = jsonify({'error': str(e)}) + response.status_code = HTTP_SERVERERROR + return response diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md new file mode 100644 index 000000000..8d808a45b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md @@ -0,0 +1,14 @@ +# IETF Network + +This NBI plugin implements a basic skeleton for the IETF Network data model. + +## DISCLAIMER +__USE WITH CARE! This plugin is NOT production ready, it contains many hardcodings based on ongoing tests.__ + +## IETF RFCs/drafts: +- RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies (https://datatracker.ietf.org/doc/html/rfc8795) +- RFC 8776 - Common YANG Data Types for Traffic Engineering (https://datatracker.ietf.org/doc/html/rfc8776) +- RFC 8345 - A YANG Data Model for Network Topologies (https://datatracker.ietf.org/doc/html/rfc8345) +- RFC 6991 - Common YANG Data Types (https://datatracker.ietf.org/doc/html/rfc6991) +- RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology (https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/) +- RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals (https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py new file mode 100644 index 000000000..fe655f01b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py @@ -0,0 +1,183 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import libyang, logging, os +from typing import Any +from common.proto.context_pb2 import TopologyDetails, Device, Link +from .NameMapping import NameMappings +from context.client.ContextClient import ContextClient +from common.tools.object_factory.Device import json_device_id +from common.proto.context_pb2 import DeviceId +import requests + + + +LOGGER = logging.getLogger(__name__) + +YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') +YANG_MODULES = ['ietf-network', 'ietf-network-topology', 'ietf-l3-unicast-topology', 'ietf-te-types', 'ietf-te-packet-types', 'ietf-te-topology', 'ietf-l3-te-topology','ietf-te-topology-packet' ] + +current_dir = os.path.dirname(__file__) +data_path = os.path.join(current_dir, "linksdata.json") + +class YangHandler: + def __init__(self) -> None: + self._yang_context = libyang.Context(YANG_DIR) + for yang_module_name in YANG_MODULES: + LOGGER.info('Loading module: {:s}'.format(str(yang_module_name))) + self._yang_context.load_module(yang_module_name).feature_enable_all() + + + + + + def compose_network(self, te_topology_name: str, topology_details: TopologyDetails) -> dict: + networks = self._yang_context.create_data_path('/ietf-network:networks') + network = networks.create_path(f'network[network-id="{te_topology_name}"]') + network.create_path('network-id', te_topology_name) + + network_types = network.create_path('network-types') + network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') + + name_mappings = NameMappings() + + for device in topology_details.devices: + self.compose_node(device, name_mappings, network) + + for link in topology_details.links: + self.compose_link(link, name_mappings, network) + + return json.loads(networks.print_mem('json')) + + def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any) -> None: + device_name = dev.name + name_mappings.store_device_name(dev) + + node = network.create_path(f'node[node-id="{device_name}"]') + node.create_path('node-id', device_name) + node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes') + node_attributes.create_path('name', device_name) + + context_client = ContextClient() + device = context_client.GetDevice(DeviceId(**json_device_id(device_name))) + + for endpoint in device.device_endpoints: + name_mappings.store_endpoint_name(dev, endpoint) + + self._process_device_config(device, node) + + def _process_device_config(self, device: Device, node: Any) -> None: + for config in device.device_config.config_rules: + if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key: + continue + + for endpoint in device.device_endpoints: + endpoint_name = endpoint.name + if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key: + interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0] + self._create_termination_point(node, interface_name, endpoint_name, config.custom.resource_value) + + def _create_termination_point(self, node: Any, interface_name: str, endpoint_name: str, resource_value: str) -> None: + ip_addresses = self._extract_ip_addresses(json.loads(resource_value)) + if ip_addresses: + tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]') + tp.create_path('tp-id', interface_name) + tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes') + + for ip in ip_addresses: + tp_attributes.create_path('ip-address', ip) + tp_attributes.create_path('interface-name', endpoint_name) + + @staticmethod + def _extract_ip_addresses(resource_value: dict) -> list: + ip_addresses = [] + if 'address_ip' in resource_value: + ip_addresses.append(resource_value['address_ip']) + if 'address_ipv6' in resource_value: + ip_addresses.append(resource_value['address_ipv6']) + return ip_addresses + + def compose_link(self, link_specs: Link, name_mappings: NameMappings, network: Any) -> None: + link_name = link_specs.name + links = network.create_path(f'ietf-network-topology:link[link-id="{link_name}"]') + links.create_path('link-id', link_name) + + self._create_link_endpoint(links, 'source', link_specs.link_endpoint_ids[0], name_mappings) + self._create_link_endpoint(links, 'destination', link_specs.link_endpoint_ids[-1], name_mappings) + + + + # Cargar los datos del archivo JSON una sola vez + try: + response = requests.get("http://192.168.165.44:8080/linksdata.json") + response.raise_for_status() + link_data = response.json() + LOGGER.debug(f"Link data loaded from external API for {link_specs.name}") + + # Obtener los datos específicos para este enlace + data = link_data.get(link_name) + + te = links.create_path('ietf-te-topology:te') + te_link_attributes = te.create_path('te-link-attributes') + + # Asignar valores predeterminados si no se encuentran en el JSON + max_bw = data.get("Maximum link bandwidth", 10000000000) + max_resv_bw = data.get("Max. Reservable link bandwidth", 10000000000) + te_link_attributes.create_path('max-link-bandwidth', max_bw) + te_link_attributes.create_path('max-resv-link-bandwidth', max_resv_bw) + + te_data = data.get("ietf-te-topology:te", {}).get("te-link-attributes", {}) + + # Unreserved bandwidth por prioridad + for priority in range(8): + key = f"Unreserved bandwidth (priority {priority})" + value = te_data.get(key, 0) + + entry = te_link_attributes.create_path(f'unreserved-bandwidth[priority="{priority}"]') + entry.create_path('priority', priority) + bw = entry.create_path('te-bandwidth') + bw.create_path('generic', value) + + # Métricas de rendimiento unidireccional + perf_data = data["ietf-te-topology:te"]["te-link-attributes"]["ietf-te-topology-packet:performance-metrics-one-way"] + performance_metrics = te_link_attributes.create_path('ietf-te-topology-packet:performance-metrics-one-way') + performance_metrics.create_path('one-way-delay', perf_data.get("one-way-delay", 0)) + performance_metrics.create_path('one-way-residual-bandwidth', perf_data.get("one-way-residual-bandwidth", "0x0p0")) + performance_metrics.create_path('one-way-available-bandwidth', perf_data.get("one-way-available-bandwidth", "0x0p0")) + performance_metrics.create_path('one-way-utilized-bandwidth', perf_data.get("one-way-utilized-bandwidth", "0x0p0")) + performance_metrics.create_path('one-way-min-delay', perf_data.get("one-way-min-delay", 0)) + performance_metrics.create_path('one-way-max-delay', perf_data.get("one-way-max-delay", 0)) + performance_metrics.create_path('one-way-delay-variation', perf_data.get("one-way-delay-variation", 0)) + + + + + + except Exception as e: + LOGGER.error(f"Failed to fetch link data from external API: {e}") + link_data = {} + + + + def _create_link_endpoint(self, links: Any, endpoint_type: str, endpoint_id: Any, name_mappings: NameMappings) -> None: + endpoint = links.create_path(endpoint_type) + if endpoint_type == 'destination': endpoint_type = 'dest' + endpoint.create_path(f'{endpoint_type}-node', name_mappings.get_device_name(endpoint_id.device_id)) + endpoint.create_path(f'{endpoint_type}-tp', name_mappings.get_endpoint_name(endpoint_id)) + + + + def destroy(self) -> None: + self._yang_context.destroy() diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py new file mode 100644 index 000000000..1c021de9e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py @@ -0,0 +1,44 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies +# Ref: https://datatracker.ietf.org/doc/html/rfc8795 + +# RFC 8776 - Common YANG Data Types for Traffic Engineering +# Ref: https://datatracker.ietf.org/doc/html/rfc8776 + +# RFC 8345 - A YANG Data Model for Network Topologies +# Ref: https://datatracker.ietf.org/doc/html/rfc8345 + +# RFC 6991 - Common YANG Data Types +# Ref: https://datatracker.ietf.org/doc/html/rfc6991 + +# RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology +# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/ + +# RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals +# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/ + +from flask_restful import Resource +from nbi.service.rest_server.RestServer import RestServer +from .Networks_bw import Networks_bw + +URL_PREFIX = '/restconf/data/ietf-network:networks-bw' + +def _add_resource(rest_server : RestServer, resource : Resource, *urls, **kwargs): + urls = [(URL_PREFIX + url) for url in urls] + rest_server.add_resource(resource, *urls, **kwargs) + +def register_ietf_network_bw(rest_server : RestServer): + _add_resource(rest_server, Networks_bw, '/') diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt new file mode 100644 index 000000000..78b2dd246 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt @@ -0,0 +1,26 @@ +cd ~/tfs-ctrl/src/nbi/service/rest_server/nbi_plugins/ietf_network + +python + +from bindings import ietf_network +import pyangbind.lib.pybindJSON as pybindJSON + +ietf_nets_obj = ietf_network() +ietf_net_obj = ietf_nets_obj.networks.network.add('my-topo') + +ietf_node_obj = ietf_net_obj.node.add('my-node') +ietf_tp_obj = ietf_node_obj.termination_point.add('my-tp') + +ietf_link_obj = ietf_net_obj.link.add('my-link') + +ietf_link_obj.te._set_oper_status('up') +print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) + +ietf_link_obj.te.te_link_attributes.admin_status = 'down' +print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) + + +ietf_link_obj.te.te_link_attributes.max_link_bandwidth.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps +unresv_bw = ietf_link_obj.te.te_link_attributes.unreserved_bandwidth.add(7) +unresv_bw.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps +print(pybindJSON.dumps(ietf_link_obj, mode='ietf')) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang new file mode 100644 index 000000000..e7e13e1c2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang @@ -0,0 +1,188 @@ +module iana-bfd-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; + prefix iana-bfd-types; + + organization + "IANA"; + contact + "Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + Tel: +1 310 301 5800 + "; + description + "This module defines YANG data types for IANA-registered + BFD parameters. + + This YANG module is maintained by IANA and reflects the + 'BFD Diagnostic Codes' and 'BFD Authentication Types' + registries. + + Copyright (c) 2021 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + The initial version of this YANG module is part of RFC 9127; + see the RFC itself for full legal notices."; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + + revision 2025-04-16 { + description + "Add NULL and Meticulous ISAAC authentication type."; + reference + "RFC XXXX: Optimizing BFD Authentication, + I-D.ietf-bfd-stability: BFD Stability."; + } + + revision 2021-10-21 { + description + "Initial revision."; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + + /* + * Type definitions + */ + + typedef diagnostic { + type enumeration { + enum none { + value 0; + description + "No Diagnostic."; + } + enum control-expiry { + value 1; + description + "Control Detection Time Expired."; + } + enum echo-failed { + value 2; + description + "Echo Function Failed."; + } + enum neighbor-down { + value 3; + description + "Neighbor Signaled Session Down."; + } + enum forwarding-reset { + value 4; + description + "Forwarding Plane Reset."; + } + enum path-down { + value 5; + description + "Path Down."; + } + enum concatenated-path-down { + value 6; + description + "Concatenated Path Down."; + } + enum admin-down { + value 7; + description + "Administratively Down."; + } + enum reverse-concatenated-path-down { + value 8; + description + "Reverse Concatenated Path Down."; + } + enum mis-connectivity-defect { + value 9; + description + "Mis-connectivity defect."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 6428: Proactive Connectivity Verification, Continuity + Check, and Remote Defect Indication for the MPLS + Transport Profile"; + } + } + description + "BFD diagnostic codes as defined in RFC 5880. Values are + maintained in the 'BFD Diagnostic Codes' IANA registry. + Range is 0 to 31."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + typedef auth-type { + type enumeration { + enum reserved { + value 0; + description + "Reserved."; + } + enum simple-password { + value 1; + description + "Simple Password."; + } + enum keyed-md5 { + value 2; + description + "Keyed MD5."; + } + enum meticulous-keyed-md5 { + value 3; + description + "Meticulous Keyed MD5."; + } + enum keyed-sha1 { + value 4; + description + "Keyed SHA1."; + } + enum meticulous-keyed-sha1 { + value 5; + description + "Meticulous Keyed SHA1."; + } + enum null { + value 6; + description + "NULL Auth. Used for stability measurement."; + } + enum optimized-md5-meticulous-keyed-isaac { + value 7; + description + "BFD Optimized Authentication using Meticulous Keyed + MD5 as the strong authentication and Meticulous Keyed + ISAAC as the 'optimized' authentication."; + } + enum optimized-sha1-meticulous-keyed-isaac { + value 8; + description + "BFD Optimized Authentication using Meticulous Keyed + SHA-1 as the strong authentication and Meticulous Keyed + ISAAC as the 'optimized' authentication."; + } + } + description + "BFD authentication type as defined in RFC 5880. Values are + maintained in the 'BFD Authentication Types' IANA registry. + Range is 0 to 255."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + I-D.ietf-bfd-optimizing-authentication: + Optimizing BFD Authentication, + I-D.ietf-bfd-stability: BFD Stability."; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang new file mode 100644 index 000000000..250cba4b6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang @@ -0,0 +1,473 @@ + module iana-routing-types { + namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; + prefix iana-rt-types; + + organization + "IANA"; + contact + "Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + Tel: +1 310 301 5800 + "; + + description + "This module contains a collection of YANG data types + considered defined by IANA and used for routing + protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 4."; + } + + /*** Collection of IANA types related to routing ***/ + /*** IANA Address Family enumeration ***/ + + typedef address-family { + type enumeration { + enum ipv4 { + value 1; + description + "IPv4 Address Family."; + } + + enum ipv6 { + value 2; + description + "IPv6 Address Family."; + } + + enum nsap { + value 3; + description + "OSI Network Service Access Point (NSAP) Address Family."; + } + + enum hdlc { + value 4; + description + "High-Level Data Link Control (HDLC) Address Family."; + } + + enum bbn1822 { + value 5; + description + "Bolt, Beranek, and Newman Report 1822 (BBN 1822) + Address Family."; + } + + enum ieee802 { + value 6; + description + "IEEE 802 Committee Address Family + (aka Media Access Control (MAC) address)."; + } + + enum e163 { + value 7; + description + "ITU-T E.163 Address Family."; + } + + enum e164 { + value 8; + description + "ITU-T E.164 (Switched Multimegabit Data Service (SMDS), + Frame Relay, ATM) Address Family."; + } + + enum f69 { + value 9; + description + "ITU-T F.69 (Telex) Address Family."; + } + + enum x121 { + value 10; + description + "ITU-T X.121 (X.25, Frame Relay) Address Family."; + } + + enum ipx { + value 11; + description + "Novell Internetwork Packet Exchange (IPX) + Address Family."; + } + + enum appletalk { + value 12; + description + "Apple AppleTalk Address Family."; + } + + enum decnet-iv { + value 13; + description + "Digital Equipment DECnet Phase IV Address Family."; + } + + enum vines { + value 14; + description + "Banyan Vines Address Family."; + } + + enum e164-nsap { + value 15; + description + "ITU-T E.164 with NSAP sub-address Address Family."; + } + + enum dns { + value 16; + description + "Domain Name System (DNS) Address Family."; + } + + enum distinguished-name { + value 17; + description + "Distinguished Name Address Family."; + } + + enum as-num { + value 18; + description + "Autonomous System (AS) Number Address Family."; + } + + enum xtp-v4 { + value 19; + description + "Xpress Transport Protocol (XTP) over IPv4 + Address Family."; + } + + enum xtp-v6 { + value 20; + description + "XTP over IPv6 Address Family."; + } + + enum xtp-native { + value 21; + description + "XTP native mode Address Family."; + } + + enum fc-port { + value 22; + description + "Fibre Channel (FC) World-Wide Port Name Address Family."; + } + + enum fc-node { + value 23; + description + "FC World-Wide Node Name Address Family."; + } + + enum gwid { + value 24; + description + "ATM Gateway Identifier (GWID) Number Address Family."; + } + + enum l2vpn { + value 25; + description + "Layer 2 VPN (L2VPN) Address Family."; + } + + enum mpls-tp-section-eid { + value 26; + description + "MPLS Transport Profile (MPLS-TP) Section Endpoint + Identifier Address Family."; + } + + enum mpls-tp-lsp-eid { + value 27; + description + "MPLS-TP Label Switched Path (LSP) Endpoint Identifier + Address Family."; + } + + enum mpls-tp-pwe-eid { + value 28; + description + "MPLS-TP Pseudowire Endpoint Identifier Address Family."; + } + + enum mt-v4 { + value 29; + description + "Multi-Topology IPv4 Address Family."; + } + + enum mt-v6 { + value 30; + description + "Multi-Topology IPv6 Address Family."; + } + + enum eigrp-common-sf { + value 16384; + description + "Enhanced Interior Gateway Routing Protocol (EIGRP) + Common Service Family Address Family."; + } + + enum eigrp-v4-sf { + value 16385; + description + "EIGRP IPv4 Service Family Address Family."; + } + + enum eigrp-v6-sf { + value 16386; + description + "EIGRP IPv6 Service Family Address Family."; + } + + enum lcaf { + value 16387; + description + "Locator/ID Separation Protocol (LISP) + Canonical Address Format (LCAF) Address Family."; + } + + enum bgp-ls { + value 16388; + description + "Border Gateway Protocol - Link State (BGP-LS) + Address Family."; + } + + enum mac-48 { + value 16389; + description + "IEEE 48-bit MAC Address Family."; + } + + enum mac-64 { + value 16390; + description + "IEEE 64-bit MAC Address Family."; + } + + enum trill-oui { + value 16391; + description + "Transparent Interconnection of Lots of Links (TRILL) + IEEE Organizationally Unique Identifier (OUI) + Address Family."; + } + + enum trill-mac-24 { + value 16392; + description + "TRILL final 3 octets of 48-bit MAC Address Family."; + } + + enum trill-mac-40 { + value 16393; + description + "TRILL final 5 octets of 64-bit MAC Address Family."; + } + + enum ipv6-64 { + value 16394; + description + "First 8 octets (64 bits) of IPv6 address + Address Family."; + } + + enum trill-rbridge-port-id { + value 16395; + description + "TRILL Routing Bridge (RBridge) Port ID Address Family."; + } + + enum trill-nickname { + value 16396; + description + "TRILL Nickname Address Family."; + } + } + + description + "Enumeration containing all the IANA-defined + Address Families."; + + } + + /*** Subsequent Address Family Identifiers (SAFIs) ***/ + /*** for multiprotocol BGP enumeration ***/ + + typedef bgp-safi { + type enumeration { + enum unicast-safi { + value 1; + description + "Unicast SAFI."; + } + + enum multicast-safi { + value 2; + description + "Multicast SAFI."; + } + + enum labeled-unicast-safi { + value 4; + description + "Labeled Unicast SAFI."; + } + + enum multicast-vpn-safi { + value 5; + description + "Multicast VPN SAFI."; + } + + enum pseudowire-safi { + value 6; + description + "Multi-segment Pseudowire VPN SAFI."; + } + + enum tunnel-encap-safi { + value 7; + description + "Tunnel Encap SAFI."; + } + + enum mcast-vpls-safi { + value 8; + description + "Multicast Virtual Private LAN Service (VPLS) SAFI."; + } + + enum tunnel-safi { + value 64; + description + "Tunnel SAFI."; + } + + enum vpls-safi { + value 65; + description + "VPLS SAFI."; + } + + enum mdt-safi { + value 66; + description + "Multicast Distribution Tree (MDT) SAFI."; + } + + enum v4-over-v6-safi { + value 67; + description + "IPv4 over IPv6 SAFI."; + } + + enum v6-over-v4-safi { + value 68; + description + "IPv6 over IPv4 SAFI."; + } + + enum l1-vpn-auto-discovery-safi { + value 69; + description + "Layer 1 VPN Auto-Discovery SAFI."; + } + + enum evpn-safi { + value 70; + description + "Ethernet VPN (EVPN) SAFI."; + } + + enum bgp-ls-safi { + value 71; + description + "BGP-LS SAFI."; + } + + enum bgp-ls-vpn-safi { + value 72; + description + "BGP-LS VPN SAFI."; + } + + enum sr-te-safi { + value 73; + description + "Segment Routing - Traffic Engineering (SR-TE) SAFI."; + } + + enum labeled-vpn-safi { + value 128; + description + "MPLS Labeled VPN SAFI."; + } + + enum multicast-mpls-vpn-safi { + value 129; + description + "Multicast for BGP/MPLS IP VPN SAFI."; + } + + enum route-target-safi { + value 132; + description + "Route Target SAFI."; + } + + enum ipv4-flow-spec-safi { + value 133; + description + "IPv4 Flow Specification SAFI."; + } + + enum vpnv4-flow-spec-safi { + value 134; + description + "IPv4 VPN Flow Specification SAFI."; + } + + enum vpn-auto-discovery-safi { + value 140; + description + "VPN Auto-Discovery SAFI."; + } + } + description + "Enumeration for BGP SAFI."; + reference + "RFC 4760: Multiprotocol Extensions for BGP-4."; + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang new file mode 100644 index 000000000..fcad71351 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang @@ -0,0 +1,644 @@ +module iana-routing-types { + namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; + prefix iana-rt-types; + + organization + "IANA"; + contact + "Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + Tel: +1 310 301 5800 + "; + + description + "This module contains a collection of YANG data types + considered defined by IANA and used for routing + protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + + revision 2022-08-19 { + description "Added SAFI value 85."; + } + + revision 2022-04-13 { + description "Added SAFI values 83 and 84."; + } + + revision 2022-02-11 { + description "Added SAFI value 80."; + } + + revision 2021-10-19 { + description "Added Address Family Number value 16399."; + } + + revision 2021-09-08 { + description "Added SAFI value 79."; + } + + revision 2021-05-26 { + description "Added ‘OBSOLETE’ to description field for SAFI value 7."; + } + + revision 2021-05-18 { + description "Added Address Family Number value 31, + SAFI value 9."; + } + + revision 2021-03-23 { + description "Added SAFI value 78."; + } + + revision 2020-12-31 { + description "Non-backwards-compatible change of SAFI names + (SAFI values 133, 134)."; + reference + "RFC 8955: Dissemination of Flow Specification Rules."; + } + + revision 2020-11-19 { + description "Added SAFI value 77."; + } + + revision 2020-07-02 { + description "Added SAFI value 76."; + } + + revision 2020-05-12 { + description "Added Address Family Number value 16398, + SAFI value 75."; + } + + revision 2019-11-04 { + description "Added Address Family Number value 16397."; + } + + revision 2018-10-29 { + description "Added SAFI value 74."; + } + + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 4."; + } + + + + + /*** Collection of IANA types related to routing ***/ + /*** IANA Address Family enumeration ***/ + + typedef address-family { + type enumeration { + enum ipv4 { + value 1; + description + "IPv4 Address Family."; + } + + enum ipv6 { + value 2; + description + "IPv6 Address Family."; + } + + enum nsap { + value 3; + description + "OSI Network Service Access Point (NSAP) Address Family."; + } + + enum hdlc { + value 4; + description + "High-Level Data Link Control (HDLC) Address Family."; + } + + enum bbn1822 { + value 5; + description + "Bolt, Beranek, and Newman Report 1822 (BBN 1822) + Address Family."; + } + + enum ieee802 { + value 6; + description + "IEEE 802 Committee Address Family + (aka Media Access Control (MAC) address)."; + } + + enum e163 { + value 7; + description + "ITU-T E.163 Address Family."; + } + enum e164 { + value 8; + description + "ITU-T E.164 (Switched Multimegabit Data Service (SMDS), + Frame Relay, ATM) Address Family."; + } + + enum f69 { + value 9; + description + "ITU-T F.69 (Telex) Address Family."; + } + + enum x121 { + value 10; + description + "ITU-T X.121 (X.25, Frame Relay) Address Family."; + } + + enum ipx { + value 11; + description + "Novell Internetwork Packet Exchange (IPX) + Address Family."; + } + + enum appletalk { + value 12; + description + "Apple AppleTalk Address Family."; + } + + enum decnet-iv { + value 13; + description + "Digital Equipment DECnet Phase IV Address Family."; + } + + enum vines { + value 14; + description + "Banyan Vines Address Family."; + } + + + + + + enum e164-nsap { + value 15; + description + "ITU-T E.164 with NSAP sub-address Address Family."; + } + + enum dns { + value 16; + description + "Domain Name System (DNS) Address Family."; + } + + enum distinguished-name { + value 17; + description + "Distinguished Name Address Family."; + } + + enum as-num { + value 18; + description + "Autonomous System (AS) Number Address Family."; + } + + enum xtp-v4 { + value 19; + description + "Xpress Transport Protocol (XTP) over IPv4 + Address Family."; + } + + enum xtp-v6 { + value 20; + description + "XTP over IPv6 Address Family."; + } + + enum xtp-native { + value 21; + description + "XTP native mode Address Family."; + } + + enum fc-port { + value 22; + description + "Fibre Channel (FC) World-Wide Port Name Address Family."; + } + enum fc-node { + value 23; + description + "FC World-Wide Node Name Address Family."; + } + + enum gwid { + value 24; + description + "ATM Gateway Identifier (GWID) Number Address Family."; + } + + enum l2vpn { + value 25; + description + "Layer 2 VPN (L2VPN) Address Family."; + } + + enum mpls-tp-section-eid { + value 26; + description + "MPLS Transport Profile (MPLS-TP) Section Endpoint + Identifier Address Family."; + } + + enum mpls-tp-lsp-eid { + value 27; + description + "MPLS-TP Label Switched Path (LSP) Endpoint Identifier + Address Family."; + } + + enum mpls-tp-pwe-eid { + value 28; + description + "MPLS-TP Pseudowire Endpoint Identifier Address Family."; + } + + enum mt-v4 { + value 29; + description + "Multi-Topology IPv4 Address Family."; + } + + + + + + enum mt-v6 { + value 30; + description + "Multi-Topology IPv6 Address Family."; + } + + enum bgp-sfc { + value 31; + description + "BGP SFC Address Family."; + reference + "RFC 9015: BGP Control Plane for the Network Service Header in Service Function Chaining."; + } + + enum eigrp-common-sf { + value 16384; + description + "Enhanced Interior Gateway Routing Protocol (EIGRP) + Common Service Family Address Family."; + } + + enum eigrp-v4-sf { + value 16385; + description + "EIGRP IPv4 Service Family Address Family."; + } + + enum eigrp-v6-sf { + value 16386; + description + "EIGRP IPv6 Service Family Address Family."; + } + + enum lcaf { + value 16387; + description + "Locator/ID Separation Protocol (LISP) + Canonical Address Format (LCAF) Address Family."; + } + + enum bgp-ls { + value 16388; + description + "Border Gateway Protocol - Link State (BGP-LS) + Address Family."; + } + + enum mac-48 { + value 16389; + description + "IEEE 48-bit MAC Address Family."; + } + + + + + enum mac-64 { + value 16390; + description + "IEEE 64-bit MAC Address Family."; + } + + enum trill-oui { + value 16391; + description + "Transparent Interconnection of Lots of Links (TRILL) + IEEE Organizationally Unique Identifier (OUI) + Address Family."; + } + + enum trill-mac-24 { + value 16392; + description + "TRILL final 3 octets of 48-bit MAC Address Family."; + } + + enum trill-mac-40 { + value 16393; + description + "TRILL final 5 octets of 64-bit MAC Address Family."; + } + + enum ipv6-64 { + value 16394; + description + "First 8 octets (64 bits) of IPv6 address + Address Family."; + } + + enum trill-rbridge-port-id { + value 16395; + description + "TRILL Routing Bridge (RBridge) Port ID Address Family."; + } + + enum trill-nickname { + value 16396; + description + "TRILL Nickname Address Family."; + } + + enum universally-unique-identifier { + value 16397; + description + "Universally Unique Identifier (UUID)."; + } + + enum routing-policy { + value 16398; + description + "Routing Policy Address Family."; + } + + enum mpls-namespaces { + value 16399; + description + "MPLS Namespaces Address Family."; + } + + } + + + + description + "Enumeration containing all the IANA-defined + Address Families."; + + } + + /*** Subsequent Address Family Identifiers (SAFIs) ***/ + /*** for multiprotocol BGP enumeration ***/ + + typedef bgp-safi { + type enumeration { + enum unicast-safi { + value 1; + description + "Unicast SAFI."; + } + + enum multicast-safi { + value 2; + description + "Multicast SAFI."; + } + + enum labeled-unicast-safi { + value 4; + description + "Labeled Unicast SAFI."; + } + + enum multicast-vpn-safi { + value 5; + description + "Multicast VPN SAFI."; + } + + enum pseudowire-safi { + value 6; + description + "Multi-segment Pseudowire VPN SAFI."; + } + + enum tunnel-encap-safi { + value 7; + description + "Tunnel Encap SAFI (OBSOLETE)."; + } + + + enum mcast-vpls-safi { + value 8; + description + "Multicast Virtual Private LAN Service (VPLS) SAFI."; + } + + enum bgp-sfc-safi { + value 9; + description + "BGP SFC SAFI."; + reference + "RFC 9015: BGP Control Plane for the Network Service Header in Service Function Chaining."; + } + + enum tunnel-safi { + value 64; + description + "Tunnel SAFI."; + } + + enum vpls-safi { + value 65; + description + "VPLS SAFI."; + } + + enum mdt-safi { + value 66; + description + "Multicast Distribution Tree (MDT) SAFI."; + } + + enum v4-over-v6-safi { + value 67; + description + "IPv4 over IPv6 SAFI."; + } + + enum v6-over-v4-safi { + value 68; + description + "IPv6 over IPv4 SAFI."; + } + + enum l1-vpn-auto-discovery-safi { + value 69; + description + "Layer 1 VPN Auto-Discovery SAFI."; + } + + enum evpn-safi { + value 70; + description + "Ethernet VPN (EVPN) SAFI."; + } + + enum bgp-ls-safi { + value 71; + description + "BGP-LS SAFI."; + } + + enum bgp-ls-vpn-safi { + value 72; + description + "BGP-LS VPN SAFI."; + } + + enum sr-te-safi { + value 73; + description + "Segment Routing - Traffic Engineering (SR-TE) SAFI."; + } + + enum sd-wan-capabilities-safi { + value 74; + description + "SD-WAN Capabilities SAFI."; + } + + enum routing-policy-safi { + value 75; + description + "Routing Policy SAFI."; + } + + enum classful-transport-safi { + value 76; + description + "Classful-Transport SAFI."; + } + + enum tunneled-traffic-flowspec-safi { + value 77; + description + "Tunneled Traffic Flowspec SAFI."; + } + + enum mcast-tree-safi { + value 78; + description + "MCAST-TREE SAFI."; + } + + enum bgp-dps-safi { + value 79; + description + "BGP-DPS (Dynamic Path Selection) SAFI."; + } + + enum bgp-ls-spf-safi { + value 80; + description + "BGP-LS-SPF SAFI."; + } + + enum bgp-car-safi { + value 83; + description + "BGP CAR SAFI."; + } + + enum bgp-vpn-car-safi { + value 84; + description + "BGP VPN CAR SAFI."; + } + + enum bgp-mup-safi { + value 85; + description + "BGP-MUP SAFI."; + } + + enum labeled-vpn-safi { + value 128; + description + "MPLS Labeled VPN SAFI."; + } + + enum multicast-mpls-vpn-safi { + value 129; + description + "Multicast for BGP/MPLS IP VPN SAFI."; + } + + enum route-target-safi { + value 132; + description + "Route Target SAFI."; + } + + enum flow-spec-safi { + value 133; + description + "Dissemination of Flow Specification rules SAFI."; + } + + enum l3vpn-flow-spec-safi { + value 134; + description + "L3VPN Dissemination of Flow Specification rules SAFI."; + } + + enum vpn-auto-discovery-safi { + value 140; + description + "VPN Auto-Discovery SAFI."; + } + } + description + "Enumeration for BGP SAFI."; + reference + "RFC 4760: Multiprotocol Extensions for BGP-4."; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang new file mode 100644 index 000000000..82799ea03 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang @@ -0,0 +1,690 @@ +module ietf-bfd-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; + prefix bfd-types; + + import iana-bfd-types { + prefix iana-bfd-types; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-routing { + prefix rt; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)"; + } + import ietf-key-chain { + prefix key-chain; + reference + "RFC 8177: YANG Data Model for Key Chains"; + } + + organization + "IETF BFD Working Group"; + contact + "WG Web: + WG List: + + Editor: Reshad Rahman + + + Editor: Lianshu Zheng + + + Editor: Mahesh Jethanandani + "; + description + "This module contains a collection of BFD-specific YANG data type + definitions, as per RFC 5880, and also groupings that are common + to other BFD YANG modules. + + Copyright (c) 2022 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 9314; see the + RFC itself for full legal notices."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + + revision 2022-09-22 { + description + "This revision is not backwards compatible with the + previous version of this model. + + This revision adds an 'if-feature' statement called + 'client-base-cfg-parms' for client configuration parameters. + Clients expecting to use those parameters now need to + verify that the server declares support of the feature + before depending on the presence of the parameters. + + The change was introduced for clients that do not need + them and have to deviate to prevent them from being + included."; + reference + "RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)."; + } + revision 2021-10-21 { + description + "Initial revision."; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + + /* + * Feature definitions + */ + + feature single-minimum-interval { + description + "This feature indicates that the server supports configuration + of one minimum interval value that is used for both transmit + and receive minimum intervals."; + } + + feature authentication { + description + "This feature indicates that the server supports BFD + authentication."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.7"; + } + + feature demand-mode { + description + "This feature indicates that the server supports BFD Demand + mode."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.6"; + } + + feature echo-mode { + description + "This feature indicates that the server supports BFD Echo + mode."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.4"; + } + + feature client-base-cfg-parms { + description + "This feature allows protocol models to configure BFD client + session parameters."; + reference + "RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)."; + } + + /* + * Identity definitions + */ + + identity bfdv1 { + base rt:control-plane-protocol; + description + "BFD protocol version 1."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + + identity path-type { + description + "Base identity for the BFD path type. The path type indicates + the type of path on which BFD is running."; + } + + identity path-ip-sh { + base path-type; + description + "BFD on IP single-hop."; + reference + "RFC 5881: Bidirectional Forwarding Detection (BFD) + for IPv4 and IPv6 (Single Hop)"; + } + + identity path-ip-mh { + base path-type; + description + "BFD on IP multihop paths."; + reference + "RFC 5883: Bidirectional Forwarding Detection (BFD) for + Multihop Paths"; + } + + identity path-mpls-te { + base path-type; + description + "BFD on MPLS Traffic Engineering."; + reference + "RFC 5884: Bidirectional Forwarding Detection (BFD) + for MPLS Label Switched Paths (LSPs)"; + } + + identity path-mpls-lsp { + base path-type; + description + "BFD on an MPLS Label Switched Path."; + reference + "RFC 5884: Bidirectional Forwarding Detection (BFD) + for MPLS Label Switched Paths (LSPs)"; + } + + identity path-lag { + base path-type; + description + "Micro-BFD on LAG member links."; + reference + "RFC 7130: Bidirectional Forwarding Detection (BFD) on + Link Aggregation Group (LAG) Interfaces"; + } + + identity encap-type { + description + "Base identity for BFD encapsulation type."; + } + + identity encap-ip { + base encap-type; + description + "BFD with IP encapsulation."; + } + + /* + * Type definitions + */ + + typedef discriminator { + type uint32; + description + "BFD Discriminator as described in RFC 5880."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + + typedef state { + type enumeration { + enum adminDown { + value 0; + description + "'adminDown' state."; + } + enum down { + value 1; + description + "'Down' state."; + } + enum init { + value 2; + description + "'Init' state."; + } + enum up { + value 3; + description + "'Up' state."; + } + } + description + "BFD states as defined in RFC 5880."; + } + + typedef multiplier { + type uint8 { + range "1..255"; + } + description + "BFD multiplier as described in RFC 5880."; + } + + typedef hops { + type uint8 { + range "1..255"; + } + description + "This corresponds to Time To Live for IPv4 and corresponds to + the hop limit for IPv6."; + } + + /* + * Groupings + */ + + grouping auth-parms { + description + "Grouping for BFD authentication parameters + (see Section 6.7 of RFC 5880)."; + container authentication { + if-feature "authentication"; + presence "Enables BFD authentication (see Section 6.7 + of RFC 5880)."; + description + "Parameters for BFD authentication."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.7"; + leaf key-chain { + type key-chain:key-chain-ref; + description + "Name of the 'key-chain' as per RFC 8177."; + } + leaf meticulous { + type boolean; + description + "Enables a meticulous mode as per Section 6.7 of + RFC 5880."; + } + } + } + + grouping base-cfg-parms { + description + "BFD grouping for base configuration parameters."; + leaf local-multiplier { + type multiplier; + default "3"; + description + "Multiplier transmitted by the local system."; + } + choice interval-config-type { + default "tx-rx-intervals"; + description + "Two interval values or one value used for both transmit and + receive."; + case tx-rx-intervals { + leaf desired-min-tx-interval { + type uint32; + units "microseconds"; + default "1000000"; + description + "Desired minimum transmit interval of control packets."; + } + leaf required-min-rx-interval { + type uint32; + units "microseconds"; + default "1000000"; + description + "Required minimum receive interval of control packets."; + } + } + case single-interval { + if-feature "single-minimum-interval"; + leaf min-interval { + type uint32; + units "microseconds"; + default "1000000"; + description + "Desired minimum transmit interval and required + minimum receive interval of control packets."; + } + } + } + } + + grouping client-cfg-parms { + description + "BFD grouping for configuration parameters + used by BFD clients, e.g., IGP or MPLS."; + leaf enabled { + type boolean; + default "false"; + description + "Indicates whether BFD is enabled."; + } + uses base-cfg-parms { + if-feature "client-base-cfg-parms"; + } + } + + grouping common-cfg-parms { + description + "BFD grouping for common configuration parameters."; + uses base-cfg-parms; + leaf demand-enabled { + if-feature "demand-mode"; + type boolean; + default "false"; + description + "To enable Demand mode."; + } + leaf admin-down { + type boolean; + default "false"; + description + "Indicates whether the BFD session is administratively + down."; + } + uses auth-parms; + } + + grouping all-session { + description + "BFD session operational information."; + leaf path-type { + type identityref { + base path-type; + } + config false; + description + "BFD path type. This indicates the path type that BFD is + running on."; + } + leaf ip-encapsulation { + type boolean; + config false; + description + "Indicates whether BFD encapsulation uses IP."; + } + leaf local-discriminator { + type discriminator; + config false; + description + "Local discriminator."; + } + leaf remote-discriminator { + type discriminator; + config false; + description + "Remote discriminator."; + } + leaf remote-multiplier { + type multiplier; + config false; + description + "Remote multiplier."; + } + leaf demand-capability { + if-feature "demand-mode"; + type boolean; + config false; + description + "Local Demand mode capability."; + } + leaf source-port { + when "../ip-encapsulation = 'true'" { + description + "Source port valid only when IP encapsulation is used."; + } + type inet:port-number; + config false; + description + "Source UDP port."; + } + leaf dest-port { + when "../ip-encapsulation = 'true'" { + description + "Destination port valid only when IP encapsulation + is used."; + } + type inet:port-number; + config false; + description + "Destination UDP port."; + } + container session-running { + config false; + description + "BFD 'session-running' information."; + leaf session-index { + type uint32; + description + "An index used to uniquely identify BFD sessions."; + } + leaf local-state { + type state; + description + "Local state."; + } + leaf remote-state { + type state; + description + "Remote state."; + } + leaf local-diagnostic { + type iana-bfd-types:diagnostic; + description + "Local diagnostic."; + } + leaf remote-diagnostic { + type iana-bfd-types:diagnostic; + description + "Remote diagnostic."; + } + leaf remote-authenticated { + type boolean; + description + "Indicates whether incoming BFD control packets are + authenticated."; + } + leaf remote-authentication-type { + when "../remote-authenticated = 'true'" { + description + "Only valid when incoming BFD control packets are + authenticated."; + } + if-feature "authentication"; + type iana-bfd-types:auth-type; + description + "Authentication type of incoming BFD control packets."; + } + leaf detection-mode { + type enumeration { + enum async-with-echo { + value 1; + description + "Async with echo."; + } + enum async-without-echo { + value 2; + description + "Async without echo."; + } + enum demand-with-echo { + value 3; + description + "Demand with echo."; + } + enum demand-without-echo { + value 4; + description + "Demand without echo."; + } + } + description + "Detection mode."; + } + leaf negotiated-tx-interval { + type uint32; + units "microseconds"; + description + "Negotiated transmit interval."; + } + leaf negotiated-rx-interval { + type uint32; + units "microseconds"; + description + "Negotiated receive interval."; + } + leaf detection-time { + type uint32; + units "microseconds"; + description + "Detection time."; + } + leaf echo-tx-interval-in-use { + when "../../path-type = 'bfd-types:path-ip-sh'" { + description + "Echo is supported for IP single-hop only."; + } + if-feature "echo-mode"; + type uint32; + units "microseconds"; + description + "Echo transmit interval in use."; + } + } + container session-statistics { + config false; + description + "BFD per-session statistics."; + leaf create-time { + type yang:date-and-time; + description + "Time and date when this session was created."; + } + leaf last-down-time { + type yang:date-and-time; + description + "Time and date of the last time this session went down."; + } + leaf last-up-time { + type yang:date-and-time; + description + "Time and date of the last time this session went up."; + } + leaf down-count { + type yang:counter32; + description + "The number of times this session has transitioned to the + 'down' state."; + } + leaf admin-down-count { + type yang:counter32; + description + "The number of times this session has transitioned to the + 'admin-down' state."; + } + leaf receive-packet-count { + type yang:counter64; + description + "Count of received packets in this session. This includes + valid and invalid received packets."; + } + leaf send-packet-count { + type yang:counter64; + description + "Count of sent packets in this session."; + } + leaf receive-invalid-packet-count { + type yang:counter64; + description + "Count of invalid received packets in this session."; + } + leaf send-failed-packet-count { + type yang:counter64; + description + "Count of packets that failed to be sent in this session."; + } + } + } + + grouping session-statistics-summary { + description + "Grouping for session statistics summary."; + container summary { + config false; + description + "BFD session statistics summary."; + leaf number-of-sessions { + type yang:gauge32; + description + "Number of BFD sessions."; + } + leaf number-of-sessions-up { + type yang:gauge32; + description + "Number of BFD sessions currently in the 'Up' state + (as defined in RFC 5880)."; + } + leaf number-of-sessions-down { + type yang:gauge32; + description + "Number of BFD sessions currently in the 'Down' or 'Init' + state but not 'adminDown' (as defined in RFC 5880)."; + } + leaf number-of-sessions-admin-down { + type yang:gauge32; + description + "Number of BFD sessions currently in the 'adminDown' state + (as defined in RFC 5880)."; + } + } + } + + grouping notification-parms { + description + "This group describes common parameters that will be sent + as part of BFD notifications."; + leaf local-discr { + type discriminator; + description + "BFD local discriminator."; + } + leaf remote-discr { + type discriminator; + description + "BFD remote discriminator."; + } + leaf new-state { + type state; + description + "Current BFD state."; + } + leaf state-change-reason { + type iana-bfd-types:diagnostic; + description + "Reason for the BFD state change."; + } + leaf time-of-last-state-change { + type yang:date-and-time; + description + "Calendar time of the most recent previous state change."; + } + leaf dest-addr { + type inet:ip-address; + description + "BFD peer address."; + } + leaf source-addr { + type inet:ip-address; + description + "BFD local address."; + } + leaf session-index { + type uint32; + description + "An index used to uniquely identify BFD sessions."; + } + leaf path-type { + type identityref { + base path-type; + } + description + "BFD path type."; + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang new file mode 100644 index 000000000..b182f7f5a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang @@ -0,0 +1,2275 @@ + module ietf-eth-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology"; + prefix "etht"; + + import ietf-network { + prefix "nw"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering + (TE) Topologies"; + } + + import ietf-yang-types { + prefix "yang"; + reference + "RFC 6991: Common YANG Data Types"; + } + + import ietf-eth-tran-types { + prefix "etht-types"; + reference + "RFC YYYY: A YANG Data Model for Transport Network Client + Signals"; + } + // RFC Ed.: replace YYYY with actual RFC number, update date + // information and remove this note + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Aihua Guo + + + Editor: Yunbin Xu + + + Editor: Yang Zhao + + + Editor: Xufeng Liu + "; + + description + "This module defines a YANG data model for describing + layer-2 Ethernet transport topologies. The model fully + conforms to the Network Management Datastore + Architecture (NMDA). + + Copyright (c) 2023 IETF Trust and the persons identified + as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here."; + + revision 2023-09-28 { + description + "Initial Revision"; + reference + "RFC XXXX: A YANG Data Model for Ethernet TE Topology"; + // RFC Ed.: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Groupings + */ + + grouping label-range-info { + description + "Ethernet technology-specific label range related + information with a presence container indicating that the + label range is an Ethernet technology-specific label range. + + This grouping SHOULD be used together with the + eth-label and eth-label-step groupings to provide Ethernet + technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + + container ethernet-label-range { + presence + "Indicates the label range is an Ethernet label range. + + This container must not be present if there are other + presence containers or attributes indicating another type + of label range."; + description + "Ethernet-specific label range related information."; + + uses etht-types:eth-label-restriction; + } + } + + grouping eth-tran-topology-type { + description + "Identifies the Ethernet Transport topology type"; + + container eth-tran-topology { + presence "indicates a topology type of + Ethernet Transport Network."; + description "Eth transport topology type"; + } + } + + grouping ltp-bandwidth-profiles { + description + "A grouping which represents the bandwidth profile(s) + for the ETH LTP."; + + choice direction { + description + "Whether the bandwidth profiles are symmetrical or + asymmetrical"; + case symmetrical { + description + "The same bandwidth profile is used to describe the ingress + and the egress bandwidth profile."; + + container ingress-egress-bandwidth-profile { + description + "The bandwith profile used in the ingress and egress + direction."; + uses etht-types:etht-bandwidth-profiles; + } + } + case asymmetrical { + description + "Different ingress and egress bandwidth profiles + can be specified."; + container ingress-bandwidth-profile { + description + "The bandwidth profile used in the ingress direction."; + uses etht-types:etht-bandwidth-profiles; + } + container egress-bandwidth-profile { + description + "The bandwidth profile used in the egress direction."; + uses etht-types:etht-bandwidth-profiles; + } + } + } + } + grouping eth-ltp-attributes { + description + "Ethernet transport Link Termination Point (LTP) attributes"; + + leaf ltp-mac-address { + type yang:mac-address; + description + "The MAC address of the Ethernet LTP."; + } + leaf port-vlan-id { + type etht-types:vlanid; + description + "The Port VLAN ID of the Ethernet LTP."; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + leaf maximum-frame-size { + type uint16 { + range "64 .. 65535"; + } + description + "Maximum frame size"; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + uses ltp-bandwidth-profiles; + } + + grouping svc-vlan-classification { + description + "Grouping defining the capabilities for VLAN classification."; + + leaf-list supported-tag-types { + type etht-types:eth-tag-classify; + description + "List of VLAN tag types that can be used for the VLAN + classification. In case VLAN classification is not + supported, the list is empty."; + } + leaf vlan-bundling { + type boolean; + description + "In case VLAN classification is supported, indicates whether + VLAN bundling classification is also supported."; + reference + "MEF 10.3: Ethernet Services Attributes Phase 3"; + } + leaf vlan-range { + type etht-types:vid-range-type; + description + "In case VLAN classification is supported, indicates the + of available VLAN ID values."; + } + } + + grouping svc-vlan-push { + description + "Grouping defining the capabilities for VLAN push or swap + operations."; + + leaf-list supported-tag-types { + type etht-types:eth-tag-type; + description + "List of VLAN tag types that can be used to push or swap a + VLAN tag. In case VLAN push/swap is not supported, the list + is empty."; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + leaf vlan-range { + type etht-types:vid-range-type; + description + "In case VLAN push/swap operation is supported, the range + of available VLAN ID values."; + } + } + + grouping eth-svc-attributes { + description + "Ethernet Link Termination Point (LTP) service attributes."; + + container supported-classification { + description + "Service classification capability supported by the + Ethernet Link Termination Point (LTP)."; + + leaf port-classification { + type boolean; + description + "Indicates that the ETH LTP support port-based service + classification."; + } + container vlan-classification { + description + "Service classification capabilities based on the VLAN + tag(s) supported by the ETH LTP."; + leaf vlan-tag-classification { + type boolean; + description + "Indicates that the ETH LTP supports VLAN service + classification."; + } + container outer-tag { + description + "Service classification capabilities based on the outer + VLAN tag, supported by the ETH LTP."; + uses svc-vlan-classification; + } + container second-tag { + description + "Service classification capabilities based on the second + VLAN tag, supported by the ETH LTP."; + leaf second-tag-classification { + type boolean; + must ". = 'false' or " + + "../../vlan-tag-classification = 'true'" { + description + "VLAN service classification based on the second + VLAN tag can be supported only when VLAN service + classification"; + } + description + "Indicates that the ETH LTP support VLAN service + classification based on the second VLAN tag."; + } + uses svc-vlan-classification; + } + } + } + + container supported-vlan-operations { + description + "Reports the VLAN operations supported by the ETH LTP."; + + leaf asymmetrical-operations { + type boolean; + description + "Indicates whether the ETH LTP supports also asymmetrical + VLAN operations.It is assumed that symmetrical VLAN + operations are alwyas supported."; + } + leaf transparent-vlan-operations { + type boolean; + description + "Indicates that the ETH LTP supports transparent + operations."; + } + container vlan-pop { + description + "Indicates VLAN pop or swap operations capabilities."; + + leaf vlan-pop-operations { + type boolean; + description + "Indicates that the ETH LTP supports VLAN pop or + swap operations."; + } + leaf max-pop-tags { + type uint8 { + range "1..2"; + } + description + "Indicates the maximum number of tags that can be + popped/swapped."; + } + } + container vlan-push { + description + "Indicates VLAN push or swap operations capabilities."; + + leaf vlan-push-operation { + type boolean; + description + "Indicates that the ETH LTP supports VLAN push or + swap operations."; + } + container outer-tag { + description + "Indicates the supported VLAN operation capabilities + on the outer VLAN tag."; + uses svc-vlan-push; + } + container second-tag { + description + "Indicates the supported VLAN operation capabilities + on the second VLAN tag."; + leaf push-second-tag { + type boolean; + description + "Indicates that the ETH LTP supports VLAN push or swap + operations for the second VLAN tag."; + } + uses svc-vlan-push; + } + } + } + } + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + description + "Augment network types to include ETH transport newtork"; + + uses eth-tran-topology-type; + } + + augment "/nw:networks/nw:network/nw:node/tet:te" + + "/tet:te-node-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description "Augment TE node attributes."; + container eth-node { + presence "The TE node is an Ethernet node."; + description + "Presence container used only to indicate that the TE node + is an Ethernet node."; + } + } + + augment "/nw:networks/nw:network/nt:link" { + when "../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description "Augment link configuration"; + + container eth-svc { + presence + "When present, indicates that the Link supports Ethernet + client signals."; + description + "Presence container used only to indicate that the link + supports Ethernet client signals."; + } + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point" { + when "../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description + "Augment ETH LTP attributes"; + + container eth-svc { + presence + "When present, indicates that the Link Termination Point + (LTP) supports Ethernet client signals."; + description + "ETH LTP Service attributes."; + + uses eth-svc-attributes; + } + container eth-link-tp { + description + "Attributes of the Ethernet Link Termination Point (LTP)."; + uses eth-ltp-attributes; + } + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case eth { + uses etht-types:eth-bandwidth; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum TE bandwidth the TE link template"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment unreserved TE bandwidth the TE link template"; + uses etht-types:eth-bandwidth; + } + + /* + * Augment TE label range information + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivities."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivity entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE link."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE link + information source."; + uses label-range-info; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + description + "Augment TE label range information for the TE link template."; + uses label-range-info; + } + + /* + * Augment TE label. + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-step/" + + "tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path of the + TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path of the + TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity + matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity + matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE node connectivity matrices of the information + source entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE node connectivity matrices of the information + source entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity matrices + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity matrices + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology"{ + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology"{ + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE link."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE link + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE link + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE link + information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay primary path + of the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay backup path + of the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + description + "Augment TE label range start for the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + description + "Augment TE label range end for the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + description + "Augment TE label range step for the TE link template."; + case eth { + uses etht-types:eth-label-step; + } + } + + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang new file mode 100644 index 000000000..222066adf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang @@ -0,0 +1,1004 @@ + module ietf-eth-tran-service { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service"; + + prefix "ethtsvc"; + import ietf-yang-types { + prefix "yang"; + reference "RFC 6991 - Common YANG Data Types"; + } + + import ietf-network { + prefix "nw"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference "RFC 8776 - Traffic Engineering Common YANG Types"; + } + + import ietf-eth-tran-types { + prefix "etht-types"; + reference "RFC XXXX - A YANG Data Model for Transport + Network Client Signals"; + } + + import ietf-routing-types { + prefix "rt-types"; + reference "RFC 8294 - Common YANG Data Types for the + Routing Area"; + + } + + import ietf-te { + prefix "te"; + reference "RFC YYYY - A YANG Data Model for Traffic + Engineering Tunnels and Interfaces"; + } + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + WG List: + + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Italo Busi (italo.busi@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Anton Snitser (antons@sedonasys.com);0 + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (xufeng.liu.ietf@gmail.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com) + "; + + description + "This module defines a YANG data model for describing + the Ethernet services. The model fully conforms to the + Network Management Datastore Architecture (NMDA). + + Copyright (c) 2021 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -04 as an WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Groupings + */ + + grouping vlan-classification { + description + "A grouping which represents classification + on an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-classify; + description + "The tag type used for VLAN classification."; + } + choice individual-bundling-vlan { + description + "VLAN based classification can be individual + or bundling."; + + case individual-vlan { + leaf vlan-value { + type etht-types:vlanid; + description + "VLAN ID value."; + } + } + + case vlan-bundling { + leaf vlan-range { + type etht-types:vid-range-type; + description + "List of VLAN ID values."; + } + } + } + } + + grouping vlan-write { + description + "A grouping which represents push/pop operations + of an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-type; + description + "The VLAN tag type to push/swap."; + } + leaf vlan-value { + type etht-types:vlanid; + description + "The VLAN ID value to push/swap."; + } + /* + * To be added: this attribute is used when: + * a) the ETH service has only one CoS (as in current version) + * b) as a default when a mapping between a given CoS value + * and the PCP value is not defined (in future versions) + */ + leaf default-pcp { + type uint8 { + range "0..7"; + } + description + "The default Priority Code Point (PCP) value to push/swap"; + } + } + + grouping vlan-operations { + description + "A grouping which represents VLAN operations."; + + leaf pop-tags { + type uint8 { + range "1..2"; + } + description + "The number of VLAN tags to pop (or swap if used in + conjunction with push-tags)"; + } + container push-tags { + description + "The VLAN tags to push (or swap if used in + conjunction with pop-tags)"; + + container outer-tag { + presence + "Indicates existence of the outermost VLAN tag to + push/swap"; + + description + "The outermost VLAN tag to push/swap."; + + uses vlan-write; + } + container second-tag { + must + '../outer-tag/tag-type = "etht-types:s-vlan-tag-type" and ' + + 'tag-type = "etht-types:c-vlan-tag-type"' + { + + error-message + " + When pushing/swapping two tags, the outermost tag must + be specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when pushing/swapping + two tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + + presence + "Indicates existence of a second outermost VLAN tag to + push/swap"; + + description + "The second outermost VLAN tag to push/swap."; + uses vlan-write; + } + } + } + + grouping named-or-value-bandwidth-profile { + description + "A grouping to configure a bandwdith profile either by + referencing a named bandwidth profile or by + configuring the values of the bandwidth profile attributes."; + choice style { + description + "Whether the bandwidth profile is named or defined by value"; + + case named { + description + "Named bandwidth profile."; + leaf bandwidth-profile-name { + type leafref { + path "/ethtsvc:etht-svc/ethtsvc:globals/" + + "ethtsvc:named-bandwidth-profiles/" + + "ethtsvc:bandwidth-profile-name"; + } + description + "Name of the bandwidth profile."; + } + } + case value { + description + "Bandwidth profile configured by value."; + uses etht-types:etht-bandwidth-profiles; + } + } + } + + grouping bandwidth-profiles { + description + "A grouping which represent bandwidth profile configuration."; + + choice direction { + description + "Whether the bandwidth profiles are symmetrical or + asymmetrical"; + case symmetrical { + description + "The same bandwidth profile is used to describe both + the ingress and the egress bandwidth profile."; + container ingress-egress-bandwidth-profile { + description + "The bandwdith profile used in both directions."; + uses named-or-value-bandwidth-profile; + } + } + case asymmetrical { + description + "Ingress and egress bandwidth profiles can be specified."; + container ingress-bandwidth-profile { + description + "The bandwdith profile used in the ingress direction."; + uses named-or-value-bandwidth-profile; + } + container egress-bandwidth-profile { + description + "The bandwdith profile used in the egress direction."; + uses named-or-value-bandwidth-profile; + } + } + } + } + + grouping etht-svc-access-parameters { + description + "ETH services access parameters"; + + leaf access-node-id { + type te-types:te-node-id; + description + "The identifier of the access node in + the ETH TE topology."; + } + + leaf access-node-uri { + type nw:node-id; + description + "The identifier of the access node in the network."; + } + + leaf access-ltp-id { + type te-types:te-tp-id; + description + "The TE link termination point identifier, used + together with access-node-id to identify the + access LTP."; + } + + leaf access-ltp-uri { + type nt:tp-id; + description + "The link termination point identifier in network topology, + used together with access-node-uri to identify the + access LTP."; + } + + leaf access-role { + type identityref { + base etht-types:access-role; + } + description + "Indicate the role of access, e.g., working or protection. "; + } + + container pm-config { + uses pm-config-grouping; + description + "This grouping is used to set the threshold value for + performance monitoring. "; + } + + container state { + config false; + description + "The state is used to monitor the status of service. "; + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + description + "Indicating the operational state of client signal. "; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + description + "Indicating the provisional state of client signal, + especially when there is a change, i.e., revise, create. "; + } + } + + leaf performance { + type identityref { + base etht-types:performance; + } + config false; + description + "Performance Monitoring for the service. "; + } + + } + + grouping etht-svc-tunnel-parameters { + description + "ETH services tunnel parameters."; + choice technology { + description + "Service multiplexing is optional and flexible."; + + case native-ethernet { + /* + placeholder to support proprietary multiplexing + (for further discussion) + */ + list eth-tunnels { + key name; + description + "ETH Tunnel list in native Ethernet scenario."; + uses tunnels-grouping; + } + } + + case frame-base { + list otn-tunnels { + key name; + description + "OTN Tunnel list in Frame-based scenario."; + uses tunnels-grouping; + } + } + + case mpls-tp { + container pw { + description + "Pseudowire information for Ethernet over MPLS-TP."; + uses pw-segment-grouping; + } + } + } + + /* + * Open issue: can we constraints it to be used only with mp services? + */ + leaf src-split-horizon-group { + type string; + description + "Identify a split horizon group at the Tunnel source TTP"; + } + leaf dst-split-horizon-group { + type string; + description + "Identify a split horizon group at the Tunnel destination TTP"; + } + } + + grouping etht-svc-pm-threshold-config { + description + "Configuraiton parameters for Ethernet service PM thresholds."; + + leaf sending-rate-high { + type uint64; + description + "High threshold of packet sending rate in kbps."; + } + leaf sending-rate-low { + type uint64; + description + "Low threshold of packet sending rate in kbps."; + } + leaf receiving-rate-high { + type uint64; + description + "High threshold of packet receiving rate in kbps."; + } + leaf receiving-rate-low { + type uint64; + description + "Low threshold of packet receiving rate in kbps."; + } + } + + grouping etht-svc-pm-stats { + description + "Ethernet service PM statistics."; + + leaf sending-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the + sending rate is above the high threshold"; + } + leaf sending-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the + sending rate is below the low threshold"; + } + leaf receiving-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the + receiving rate is above the high threshold"; + } + leaf receiving-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the + receiving rate is below the low threshold"; + } + } + + grouping etht-svc-instance-config { + description + "Configuraiton parameters for Ethernet services."; + + leaf etht-svc-name { + type string; + description + "Name of the ETH service."; + } + + leaf etht-svc-title { + type string; + description + "The Identifier of the ETH service."; + } + + leaf user-label { + type string; + description + "Alias of the ETH service."; + } + + leaf etht-svc-descr { + type string; + description + "Description of the ETH service."; + } + + leaf etht-svc-customer { + type string; + description + "Customer of the ETH service."; + } + + leaf etht-svc-type { + type etht-types:service-type; + description + "Type of ETH service (p2p, mp2mp or rmp)."; + /* Add default as p2p */ + } + + leaf etht-svc-lifecycle { + type etht-types:lifecycle-status; + description + "Lifecycle state of ETH service."; + /* Add default as installed */ + } + uses te-types:te-topology-identifier; + + uses resilience-grouping; + list etht-svc-end-points { + key etht-svc-end-point-name; + description + "The logical end point for the ETH service. "; + uses etht-svc-end-point-grouping; + } + + container alarm-shreshold { + description "threshold configuration for the E2E client signal"; + uses alarm-shreshold-grouping; + } + + container underlay { + description + "The unterlay tunnel information that carrying the + ETH service. "; + uses etht-svc-tunnel-parameters; + } + + leaf admin-status { + type identityref { + base te-types:tunnel-admin-state-type; + } + default te-types:tunnel-admin-state-up; + description "ETH service administrative state."; + } + } + + grouping etht-svc-instance-state { + description + "State parameters for Ethernet services."; + + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + default te-types:tunnel-state-up; + description "ETH service operational state."; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + description "ETH service provisioning state."; + } + leaf creation-time { + type yang:date-and-time; + description + "Time of ETH service creation."; + } + leaf last-updated-time { + type yang:date-and-time; + description + "Time of ETH service last update."; + } + + leaf created-by { + type string; + description + "The client signal is created by whom, + can be a system or staff ID."; + } + leaf last-updated-by { + type string; + description + "The client signal is last updated by whom, + can be a system or staff ID."; + } + leaf owned-by { + type string; + description + "The client signal is last updated by whom, + can be a system ID."; + } + container pm-state { + description + "PM data of E2E Ethernet service"; + uses pm-state-grouping; + } + container error-info { + description "error messages of configuration"; + uses error-info-grouping; + } + } + + grouping pm-state-grouping { + leaf latency { + description + "latency value of the E2E Ethernet service"; + type uint32; + units microsecond; + } + } + + grouping error-info-grouping { + leaf error-code { + description "error code"; + type uint16; + } + + leaf error-description { + description "detail message of error"; + type string; + } + + leaf error-timestamp { + description "the date and time error is happened"; + type yang:date-and-time; + } + } + + grouping alarm-shreshold-grouping { + leaf latency-threshold { + description "a threshold for the E2E client signal service's + latency. Once the latency value exceed this threshold, an alarm + should be triggered."; + type uint32; + units microsecond; + } + } + + /* + * Data nodes + */ + + container etht-svc { + description + "ETH services."; + + container globals { + description + "Globals Ethernet configuration data container"; + list named-bandwidth-profiles { + key bandwidth-profile-name; + description + "List of named bandwidth profiles used by + Ethernet services."; + + leaf bandwidth-profile-name { + type string; + description + "Name of the bandwidth profile."; + } + uses etht-types:etht-bandwidth-profiles; + } + } + list etht-svc-instances { + key etht-svc-name; + description + "The list of p2p ETH service instances"; + + uses etht-svc-instance-config; + + container state { + config false; + description + "Ethernet Service states."; + + uses etht-svc-instance-state; + } + } + } + + grouping resilience-grouping { + description + "Grouping for resilience configuration. "; + container resilience { + description + "To configure the data plane protection parameters, + currently a placeholder only, future candidate attributes + include, Revert, WTR, Hold-off Timer, ..."; + uses te:protection-restoration-properties; + } + } + + grouping etht-svc-end-point-grouping { + description + "Grouping for the end point configuration."; + leaf etht-svc-end-point-name { + type string; + description + "The name of the logical end point of ETH service. "; + } + + leaf etht-svc-end-point-id { + type string; + description + "The identifier of the logical end point of ETH service."; + } + + leaf etht-svc-end-point-descr { + type string; + description + "The description of the logical end point of ETH service. "; + } + + leaf topology-role { + type identityref { + base etht-types:topology-role; + } + description + "Indicating the underlay topology role, + e.g., hub,spoke, any-to-any "; + } + + container resilience { + description + "Placeholder for resilience configuration, for future study. "; + } + + list etht-svc-access-points { + key access-point-id; + min-elements "1"; + /* + Open Issue: + Is it possible to limit the max-elements only for p2p services? + max-elements "2"; + */ + description + "List of the ETH trasport services access point instances."; + + leaf access-point-id { + type string; + description + "ID of the service access point instance"; + } + uses etht-svc-access-parameters; + } + + leaf service-classification-type { + type identityref { + base etht-types:service-classification-type; + } + description + "Service classification type."; + } + + choice service-classification { + description + "Access classification can be port-based or + VLAN based."; + case port-classification { + /* no additional information */ + } + + case vlan-classification { + container outer-tag { + presence "The outermost VLAN tag exists"; + description + "Classifies traffic using the outermost VLAN tag."; + + uses vlan-classification; + } + container second-tag { + must + '../outer-tag/tag-type = "etht-types:classify-s-vlan" and ' + + 'tag-type = "etht-types:classify-c-vlan"' + { + error-message + " + When matching two tags, the outermost tag must be + specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when matching two + tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + presence "The second outermost VLAN tag exists"; + + description + "Classifies traffic using the second outermost VLAN tag."; + + uses vlan-classification; + } + } + } + + /* + * Open issue: can we constraints it to be used only with mp services? + */ + leaf split-horizon-group { + type string; + description "Identify a split horizon group"; + } + uses bandwidth-profiles; + + container vlan-operations { + description + "Configuration of VLAN operations."; + choice direction { + description + "Whether the VLAN operations are symmetrical or + asymmetrical"; + case symmetrical { + container symmetrical-operation { + uses vlan-operations; + description + "Symmetrical operations. + Expressed in the ingress direction, but + the reverse operation is applied to egress traffic"; + } + } + case asymmetrical { + container asymmetrical-operation { + description "Asymmetrical operations"; + container ingress { + uses vlan-operations; + description "Ingress operations"; + } + container egress { + uses vlan-operations; + description "Egress operations"; + } + } + } + } + } + } + + grouping pm-config-grouping { + description + "Grouping used for Performance Monitoring Configuration. "; + leaf pm-enable { + type boolean; + description + "Whether to enable the performance monitoring."; + } + + leaf sending-rate-high { + type uint64; + description + "The upperbound of sending rate."; + } + + leaf sending-rate-low { + type uint64; + description + "The lowerbound of sending rate."; + } + + leaf receiving-rate-high { + type uint64; + description + "The upperbound of receiving rate."; + } + + leaf receiving-rate-low { + type uint64; + description + "The lowerbound of receiving rate."; + } + } + + grouping pw-segment-grouping { + description + "Grouping used for PW configuration. "; + leaf pw-id { + type string; + description + "The Identifier information of pseudowire. "; + } + + leaf pw-name { + type string; + description + "The name information of pseudowire."; + } + + leaf transmit-label { + type rt-types:mpls-label; + description + "Transmit label information in PW. "; + } + + leaf receive-label { + type rt-types:mpls-label; + description + "Receive label information in PW. "; + } + leaf encapsulation-type { + type identityref { + base etht-types:encapsulation-type; + } + description + "The encapsulation type, raw or tag. "; + } + + leaf oper-status { + type identityref { + base te-types:tunnel-state-type; + } + config false; + description + "The operational state of the PW segment. "; + } + + container ingress-bandwidth-profile { + description + "Bandwidth Profile for ingress. "; + uses pw-segment-named-or-value-bandwidth-profile; + } + + list pw-paths { + key path-id; + description + "A list of pw paths. "; + + leaf path-id { + type uint8; + description + "The identifier of pw paths. "; + + } + + list tp-tunnels { + key name; + description + "Names of TP Tunnel underlay"; + leaf name { + type string; + description + "Names of TP Tunnel underlay"; + } + } + } + + } + grouping pw-segment-named-or-value-bandwidth-profile { + description + "A grouping to configure a bandwdith profile either by + referencing a named bandwidth profile or by + configuring the values of the bandwidth profile attributes."; + choice style { + description + "Whether the bandwidth profile is named or defined by value"; + case named { + description + "Named bandwidth profile."; + leaf bandwidth-profile-name { + type leafref { + path "/ethtsvc:etht-svc/ethtsvc:globals/" + + "ethtsvc:named-bandwidth-profiles/" + + "ethtsvc:bandwidth-profile-name"; + } + description + "Name of the bandwidth profile."; + } + } + case value { + description + "Bandwidth profile configured by value."; + uses etht-types:pw-segement-bandwidth-profile-grouping; + } + } + } + + grouping tunnels-grouping { + description + "A group of tunnels. "; + leaf name { + type leafref { + path "/te:te/te:tunnels/te:tunnel/te:name"; + require-instance false; + } + description "Dependency tunnel name"; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description "LSP encoding type"; + reference "RFC3945"; + } + leaf switching-type { + type identityref { + base te-types:switching-capabilities; + } + description "LSP switching type"; + reference "RFC3945"; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang new file mode 100644 index 000000000..f46908b34 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang @@ -0,0 +1,457 @@ + module ietf-eth-tran-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types"; + + prefix "etht-types"; + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + WG List: + + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Italo Busi (italo.busi@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (xufeng.liu.ietf@gmail.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com) + "; + + description + "This module defines the ETH types. + The model fully conforms to the Network Management + Datastore Architecture (NMDA). + + Copyright (c) 2019 IETF Trust and the persons + identified as authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -05 as a WG draft"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Identities + */ + + identity eth-vlan-tag-type { + description + "ETH VLAN tag type."; + } + + identity c-vlan-tag-type { + base eth-vlan-tag-type; + description + "802.1Q Customer VLAN"; + } + + identity s-vlan-tag-type { + base eth-vlan-tag-type; + description + "802.1Q Service VLAN (QinQ)"; + } + + identity service-classification-type { + description + "Service classification."; + } + + identity port-classification { + base service-classification-type; + description + "Port classification."; + } + identity vlan-classification { + base service-classification-type; + description + "VLAN classification."; + } + + identity eth-vlan-tag-classify { + description + "VLAN tag classification."; + } + + identity classify-c-vlan { + base eth-vlan-tag-classify; + description + "Classify 802.1Q Customer VLAN tag. + Only C-tag type is accepted"; + } + + identity classify-s-vlan { + base eth-vlan-tag-classify; + description + "Classify 802.1Q Service VLAN (QinQ) tag. + Only S-tag type is accepted"; + } + + identity classify-s-or-c-vlan { + base eth-vlan-tag-classify; + description + "Classify S-VLAN or C-VLAN tag-classify. + Either tag is accepted"; + } + + identity bandwidth-profile-type-ir { + description + "Bandwidth Profile Types"; + } + + identity mef-10-bwp { + base bandwidth-profile-type-ir; + description + "MEF 10 Bandwidth Profile"; + } + + identity rfc-2697-bwp { + base bandwidth-profile-type-ir; + description + "RFC 2697 Bandwidth Profile"; + } + identity rfc-2698-bwp { + base bandwidth-profile-type-ir; + description + "RFC 2698 Bandwidth Profile"; + } + + identity rfc-4115-bwp { + base bandwidth-profile-type-ir; + description + "RFC 4115 Bandwidth Profile"; + } + + identity service-type-ir { + description + "Type of Ethernet service."; + } + + identity p2p-svc { + base service-type-ir; + description + "Ethernet point-to-point service (EPL, EVPL)."; + } + + identity rmp-svc { + base service-type-ir; + description + "Ethernet rooted-multitpoint service (E-TREE, EP-TREE)."; + } + + identity mp2mp-svc { + base service-type-ir; + description + "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN)."; + } + + identity lifecycle-status-ir { + description + "Lifecycle Status."; + } + + identity installed { + base lifecycle-status-ir; + description + "Installed."; + } + + identity planned { + base lifecycle-status-ir; + description + "Planned."; + } + + identity pending-removal { + base lifecycle-status-ir; + description + "Pending Removal."; + } + + /* + * Type Definitions + */ + + typedef eth-tag-type { + type identityref { + base eth-vlan-tag-type; + } + description + "Identifies a specific ETH VLAN tag type."; + } + + typedef eth-tag-classify { + type identityref { + base eth-vlan-tag-classify; + } + description + "Identifies a specific VLAN tag classification."; + } + + typedef vlanid { + type uint16 { + range "1..4094"; + } + description + "The 12-bit VLAN-ID used in the VLAN Tag header."; + } + + typedef vid-range-type { + type string { + pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" + + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of VLAN Ids, or non overlapping VLAN ranges, in + ascending order, between 1 and 4094. + This type is used to match an ordered list of VLAN Ids, or + contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the + range 1 to 4094, and included in the list in non overlapping + ascending order. + + For example: 1,10-100,50,500-1000"; + } + + typedef bandwidth-profile-type { + type identityref { + base bandwidth-profile-type-ir; + } + description + "Identifies a specific Bandwidth Profile type."; + } + + typedef service-type { + type identityref { + base service-type-ir; + } + description + "Identifies the type of Ethernet service."; + } + + typedef lifecycle-status { + type identityref { + base lifecycle-status-ir; + } + description + "Identifies the lLifecycle Status ."; + } + + /* + * Grouping Definitions + */ + + grouping etht-bandwidth-profiles { + description + "Bandwidth profile configuration paramters."; + + leaf bandwidth-profile-type { + type etht-types:bandwidth-profile-type; + description + "The type of bandwidth profile."; + } + leaf CIR { + type uint64; + description + "Committed Information Rate in Kbps"; + } + leaf CBS { + type uint64; + description + "Committed Burst Size in in KBytes"; + } + leaf EIR { + type uint64; + /* Need to indicate that EIR is not supported by RFC 2697 + + must + '../bw-profile-type = "mef-10-bwp" or ' + + '../bw-profile-type = "rfc-2698-bwp" or ' + + '../bw-profile-type = "rfc-4115-bwp"' + + must + '../bw-profile-type != "rfc-2697-bwp"' + */ + description + "Excess Information Rate in Kbps + In case of RFC 2698, PIR = CIR + EIR"; + } + leaf EBS { + type uint64; + description + "Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS"; + } + leaf color-aware { + type boolean; + description + "Indicates weather the color-mode is + color-aware or color-blind."; + } + leaf coupling-flag { + type boolean; + /* Need to indicate that Coupling Flag is defined only for MEF 10 + + must + '../bw-profile-type = "mef-10-bwp"' + */ + description + "Coupling Flag."; + } + } + + identity topology-role { + description + "The role of underlay topology: e.g., hub, spoke, + any-to-any."; + } + + identity resilience { + description + "Placeholder for resilience information in data plane, + for future study. "; + } + + identity access-role { + description + "Indicating whether the access is a working or protection access."; + } + + identity root-primary { + base access-role; + description + "Designates the primary root UNI of an E-Tree service, and may also + designates the UNI access role of E-LINE and E-LAN service."; + } + + identity root-backup { + base access-role; + description + "Designates the backup root UNI of an E-Tree service."; + } + + identity leaf-access { + base access-role; + description + "Designates the leaf UNI of an E-Tree service."; + } + + identity leaf-edge { + base access-role; + description ""; + } + + identity performance { + description + "Placeholder for performance information, for future study."; + } + + identity encapsulation-type { + description + "Indicating how the service is encapsulated (to PW), e.g, raw or tag. "; + } + grouping pw-segement-bandwidth-profile-grouping { + description + "bandwidth profile grouping for PW segment. "; + leaf bandwidth-profile-type { + type etht-types:bandwidth-profile-type; + description + "The type of bandwidth profile."; + } + leaf CIR { + type uint64; + description + "Committed Information Rate in Kbps"; + } + leaf CBS { + type uint64; + description + "Committed Burst Size in in KBytes"; + } + leaf EIR { + type uint64; + /* Need to indicate that EIR is not supported by RFC 2697 + + must + '../bw-profile-type = "mef-10-bwp" or ' + + '../bw-profile-type = "rfc-2698-bwp" or ' + + '../bw-profile-type = "rfc-4115-bwp"' + + must + '../bw-profile-type != "rfc-2697-bwp"' + */ + description + "Excess Information Rate in Kbps + In case of RFC 2698, PIR = CIR + EIR"; + } + leaf EBS { + type uint64; + description + "Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS"; + } + } + grouping eth-bandwidth { + description + "Available bandwith for ethernet."; + leaf eth-bandwidth { + type uint64{ + range "0..10000000000"; + } + units "Kbps"; + description + "Available bandwith value expressed in kilobits per second"; + } + } + + grouping eth-label-restriction { + description + "Label Restriction for ethernet."; + leaf tag-type { + type etht-types:eth-tag-type; + description "VLAN tag type."; + } + leaf priority { + type uint8; + description "priority."; + } + } + grouping eth-label { + description + "Label for ethernet."; + leaf vlanid { + type etht-types:vlanid; + description + "VLAN tag id."; + } + } + + grouping eth-label-step { + description "Label step for Ethernet VLAN"; + leaf eth-step { + type uint16 { + range "1..4095"; + } + default 1; + description + "Label step which represent possible increments for + an Ethernet VLAN tag."; + reference + "IEEE 802.1ad: Provider Bridges."; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang new file mode 100644 index 000000000..eacefb636 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang @@ -0,0 +1,458 @@ +module ietf-inet-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; + prefix "inet"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types for Internet addresses and related things. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - ip-address-no-zone + - ipv4-address-no-zone + - ipv6-address-no-zone"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of types related to protocol fields ***/ + + typedef ip-version { + type enumeration { + enum unknown { + value "0"; + description + "An unknown or unspecified version of the Internet + protocol."; + } + enum ipv4 { + value "1"; + description + "The IPv4 protocol as defined in RFC 791."; + } + enum ipv6 { + value "2"; + description + "The IPv6 protocol as defined in RFC 2460."; + } + } + description + "This value represents the version of the IP protocol. + + In the value set and its semantics, this type is equivalent + to the InetVersion textual convention of the SMIv2."; + reference + "RFC 791: Internet Protocol + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + typedef dscp { + type uint8 { + range "0..63"; + } + description + "The dscp type represents a Differentiated Services Code Point + that may be used for marking packets in a traffic stream. + In the value set and its semantics, this type is equivalent + to the Dscp textual convention of the SMIv2."; + reference + "RFC 3289: Management Information Base for the Differentiated + Services Architecture + RFC 2474: Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers + RFC 2780: IANA Allocation Guidelines For Values In + the Internet Protocol and Related Headers"; + } + + typedef ipv6-flow-label { + type uint32 { + range "0..1048575"; + } + description + "The ipv6-flow-label type represents the flow identifier or Flow + Label in an IPv6 packet header that may be used to + discriminate traffic flows. + + In the value set and its semantics, this type is equivalent + to the IPv6FlowLabel textual convention of the SMIv2."; + reference + "RFC 3595: Textual Conventions for IPv6 Flow Label + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; + } + + typedef port-number { + type uint16 { + range "0..65535"; + } + description + "The port-number type represents a 16-bit port number of an + Internet transport-layer protocol such as UDP, TCP, DCCP, or + SCTP. Port numbers are assigned by IANA. A current list of + all assignments is available from . + + Note that the port number value zero is reserved by IANA. In + situations where the value zero does not make sense, it can + be excluded by subtyping the port-number type. + In the value set and its semantics, this type is equivalent + to the InetPortNumber textual convention of the SMIv2."; + reference + "RFC 768: User Datagram Protocol + RFC 793: Transmission Control Protocol + RFC 4960: Stream Control Transmission Protocol + RFC 4340: Datagram Congestion Control Protocol (DCCP) + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + /*** collection of types related to autonomous systems ***/ + + typedef as-number { + type uint32; + description + "The as-number type represents autonomous system numbers + which identify an Autonomous System (AS). An AS is a set + of routers under a single technical administration, using + an interior gateway protocol and common metrics to route + packets within the AS, and using an exterior gateway + protocol to route packets to other ASes. IANA maintains + the AS number space and has delegated large parts to the + regional registries. + + Autonomous system numbers were originally limited to 16 + bits. BGP extensions have enlarged the autonomous system + number space to 32 bits. This type therefore uses an uint32 + base type without a range restriction in order to support + a larger autonomous system number space. + + In the value set and its semantics, this type is equivalent + to the InetAutonomousSystemNumber textual convention of + the SMIv2."; + reference + "RFC 1930: Guidelines for creation, selection, and registration + of an Autonomous System (AS) + RFC 4271: A Border Gateway Protocol 4 (BGP-4) + RFC 4001: Textual Conventions for Internet Network Addresses + RFC 6793: BGP Support for Four-Octet Autonomous System (AS) + Number Space"; + } + + /*** collection of types related to IP addresses and hostnames ***/ + + typedef ip-address { + type union { + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "The ip-address type represents an IP address and is IP + version neutral. The format of the textual representation + implies the IP version. This type supports scoped addresses + by allowing zone identifiers in the address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '(%[\p{N}\p{L}]+)?'; + } + description + "The ipv4-address type represents an IPv4 address in + dotted-quad notation. The IPv4 address may include a zone + index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format for the zone index is the numerical + format"; + } + + typedef ipv6-address { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(%[\p{N}\p{L}]+)?'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(%.+)?'; + } + description + "The ipv6-address type represents an IPv6 address in full, + mixed, shortened, and shortened-mixed notation. The IPv6 + address may include a zone index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format of IPv6 addresses uses the textual + representation defined in Section 4 of RFC 5952. The + canonical format for the zone index is the numerical + format as described in Section 11.2 of RFC 4007."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-address-no-zone { + type union { + type inet:ipv4-address-no-zone; + type inet:ipv6-address-no-zone; + } + description + "The ip-address-no-zone type represents an IP address and is + IP version neutral. The format of the textual representation + implies the IP version. This type does not support scoped + addresses since it does not allow zone identifiers in the + address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address-no-zone { + type inet:ipv4-address { + pattern '[0-9\.]*'; + } + description + "An IPv4 address without a zone index. This type, derived from + ipv4-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + } + + typedef ipv6-address-no-zone { + type inet:ipv6-address { + pattern '[0-9a-fA-F:\.]*'; + } + description + "An IPv6 address without a zone index. This type, derived from + ipv6-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-prefix { + type union { + type inet:ipv4-prefix; + type inet:ipv6-prefix; + } + description + "The ip-prefix type represents an IP prefix and is IP + version neutral. The format of the textual representations + implies the IP version."; + } + + typedef ipv4-prefix { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; + } + description + "The ipv4-prefix type represents an IPv4 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 32. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The canonical format of an IPv4 prefix has all bits of + the IPv4 address set to zero that are not part of the + IPv4 prefix."; + } + + typedef ipv6-prefix { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(/.+)'; + } + + description + "The ipv6-prefix type represents an IPv6 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 128. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The IPv6 address should have all bits that do not belong + to the prefix set to zero. + + The canonical format of an IPv6 prefix has all bits of + the IPv6 address set to zero that are not part of the + IPv6 prefix. Furthermore, the IPv6 address is represented + as defined in Section 4 of RFC 5952."; + reference + "RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + /*** collection of domain name and URI types ***/ + + typedef domain-name { + type string { + pattern + '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' + + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' + + '|\.'; + length "1..253"; + } + description + "The domain-name type represents a DNS domain name. The + name SHOULD be fully qualified whenever possible. + + Internet domain names are only loosely specified. Section + 3.5 of RFC 1034 recommends a syntax (modified in Section + 2.1 of RFC 1123). The pattern above is intended to allow + for current practice in domain name use, and some possible + future expansion. It is designed to hold various types of + domain names, including names used for A or AAAA records + (host names) and other records, such as SRV records. Note + that Internet host names have a stricter syntax (described + in RFC 952) than the DNS recommendations in RFCs 1034 and + 1123, and that systems that want to store host names in + schema nodes using the domain-name type are recommended to + adhere to this stricter standard to ensure interoperability. + + The encoding of DNS names in the DNS protocol is limited + to 255 characters. Since the encoding consists of labels + prefixed by a length bytes and there is a trailing NULL + byte, only 253 characters can appear in the textual dotted + notation. + + The description clause of schema nodes using the domain-name + type MUST describe when and how these names are resolved to + IP addresses. Note that the resolution of a domain-name value + may require to query multiple DNS records (e.g., A for IPv4 + and AAAA for IPv6). The order of the resolution process and + which DNS record takes precedence can either be defined + explicitly or may depend on the configuration of the + resolver. + + Domain-name values use the US-ASCII encoding. Their canonical + format uses lowercase US-ASCII characters. Internationalized + domain names MUST be A-labels as per RFC 5890."; + reference + "RFC 952: DoD Internet Host Table Specification + RFC 1034: Domain Names - Concepts and Facilities + RFC 1123: Requirements for Internet Hosts -- Application + and Support + RFC 2782: A DNS RR for specifying the location of services + (DNS SRV) + RFC 5890: Internationalized Domain Names in Applications + (IDNA): Definitions and Document Framework"; + } + + typedef host { + type union { + type inet:ip-address; + type inet:domain-name; + } + description + "The host type represents either an IP address or a DNS + domain name."; + } + + typedef uri { + type string; + description + "The uri type represents a Uniform Resource Identifier + (URI) as defined by STD 66. + + Objects using the uri type MUST be in US-ASCII encoding, + and MUST be normalized as described by RFC 3986 Sections + 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide + unique URIs. Note that this normalization is not + sufficient to provide uniqueness. Two URIs that are + textually distinct after this normalization may still be + equivalent. + + Objects using the uri type may restrict the schemes that + they permit. For example, 'data:' and 'urn:' schemes + might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required. + + In the value set and its semantics, this type is equivalent + to the Uri SMIv2 textual convention defined in RFC 5017."; + reference + "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax + RFC 3305: Report from the Joint W3C/IETF URI Planning Interest + Group: Uniform Resource Identifiers (URIs), URLs, + and Uniform Resource Names (URNs): Clarifications + and Recommendations + RFC 5017: MIB Textual Conventions for Uniform Resource + Identifiers (URIs)"; + } + +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang new file mode 100644 index 000000000..f66c205ce --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang @@ -0,0 +1,1123 @@ +module ietf-interfaces { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; + prefix if; + + import ietf-yang-types { + prefix yang; + } + + organization + "IETF NETMOD (Network Modeling) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Martin Bjorklund + "; + + description + "This module contains a collection of YANG definitions for + managing network interfaces. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8343; see + the RFC itself for full legal notices."; + + revision 2018-02-20 { + description + "Updated to support NMDA."; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + + revision 2014-05-08 { + description + "Initial revision."; + reference + "RFC 7223: A YANG Data Model for Interface Management"; + } + + /* + * Typedefs + */ + + typedef interface-ref { + type leafref { + path "/if:interfaces/if:interface/if:name"; + } + description + "This type is used by data models that need to reference + interfaces."; + } + + /* + * Identities + */ + + identity interface-type { + description + "Base identity from which specific interface types are + derived."; + } + + /* + * Features + */ + + feature arbitrary-names { + description + "This feature indicates that the device allows user-controlled + interfaces to be named arbitrarily."; + } + feature pre-provisioning { + description + "This feature indicates that the device supports + pre-provisioning of interface configuration, i.e., it is + possible to configure an interface whose physical interface + hardware is not present on the device."; + } + feature if-mib { + description + "This feature indicates that the device implements + the IF-MIB."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + + /* + * Data nodes + */ + + container interfaces { + description + "Interface parameters."; + + list interface { + key "name"; + + description + "The list of interfaces on the device. + + The status of an interface is available in this list in the + operational state. If the configuration of a + system-controlled interface cannot be used by the system + (e.g., the interface hardware present does not match the + interface type), then the configuration is not applied to + the system-controlled interface shown in the operational + state. If the configuration of a user-controlled interface + cannot be used by the system, the configured interface is + not instantiated in the operational state. + + System-controlled interfaces created by the system are + always present in this list in the operational state, + whether or not they are configured."; + + leaf name { + type string; + description + "The name of the interface. + + A device MAY restrict the allowed values for this leaf, + possibly depending on the type of the interface. + For system-controlled interfaces, this leaf is the + device-specific name of the interface. + + If a client tries to create configuration for a + system-controlled interface that is not present in the + operational state, the server MAY reject the request if + the implementation does not support pre-provisioning of + interfaces or if the name refers to an interface that can + never exist in the system. A Network Configuration + Protocol (NETCONF) server MUST reply with an rpc-error + with the error-tag 'invalid-value' in this case. + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + + When a configured user-controlled interface is created by + the system, it is instantiated with the same name in the + operational state. + + A server implementation MAY map this leaf to the ifName + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifName. The definition of + such a mechanism is outside the scope of this document."; + reference + "RFC 2863: The Interfaces Group MIB - ifName"; + } + + leaf description { + type string; + description + "A textual description of the interface. + + A server implementation MAY map this leaf to the ifAlias + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifAlias. The definition of + such a mechanism is outside the scope of this document. + + Since ifAlias is defined to be stored in non-volatile + storage, the MIB implementation MUST map ifAlias to the + value of 'description' in the persistently stored + configuration."; + reference + "RFC 2863: The Interfaces Group MIB - ifAlias"; + } + + leaf type { + type identityref { + base interface-type; + } + mandatory true; + description + "The type of the interface. + + When an interface entry is created, a server MAY + initialize the type leaf with a valid value, e.g., if it + is possible to derive the type from the name of the + interface. + + If a client tries to set the type of an interface to a + value that can never be used by the system, e.g., if the + type is not supported or if the type does not match the + name of the interface, the server MUST reject the request. + A NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf enabled { + type boolean; + default "true"; + description + "This leaf contains the configured, desired state of the + interface. + + Systems that implement the IF-MIB use the value of this + leaf in the intended configuration to set + IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry + has been initialized, as described in RFC 2863. + + Changes in this leaf in the intended configuration are + reflected in ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf link-up-down-trap-enable { + if-feature if-mib; + type enumeration { + enum enabled { + value 1; + description + "The device will generate linkUp/linkDown SNMP + notifications for this interface."; + } + enum disabled { + value 2; + description + "The device will not generate linkUp/linkDown SNMP + notifications for this interface."; + } + } + description + "Controls whether linkUp/linkDown SNMP notifications + should be generated for this interface. + + If this node is not configured, the value 'enabled' is + operationally used by the server for interfaces that do + not operate on top of any other interface (i.e., there are + no 'lower-layer-if' entries), and 'disabled' otherwise."; + reference + "RFC 2863: The Interfaces Group MIB - + ifLinkUpDownTrapEnable"; + } + + leaf admin-status { + if-feature if-mib; + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "Not ready to pass packets and not in some test mode."; + } + enum testing { + value 3; + description + "In some test mode."; + } + } + config false; + mandatory true; + description + "The desired state of the interface. + + This leaf has the same read semantics as ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf oper-status { + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + + description + "The interface does not pass any packets."; + } + enum testing { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum unknown { + value 4; + description + "Status cannot be determined for some reason."; + } + enum dormant { + value 5; + description + "Waiting for some external event."; + } + enum not-present { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum lower-layer-down { + value 7; + description + "Down due to state of lower-layer interface(s)."; + } + } + config false; + mandatory true; + description + "The current operational state of the interface. + + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + + leaf last-change { + type yang:date-and-time; + config false; + description + "The time the interface entered its current operational + state. If the current state was entered prior to the + last re-initialization of the local network management + subsystem, then this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + + leaf if-index { + if-feature if-mib; + type int32 { + range "1..2147483647"; + } + config false; + mandatory true; + description + "The ifIndex value for the ifEntry represented by this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifIndex"; + } + + leaf phys-address { + type yang:phys-address; + config false; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a Media Access Control (MAC) address. The + interface's media-specific modules must define the bit + and byte ordering and the format of the value of this + object. For interfaces that do not have such an address + (e.g., a serial line), this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; + } + + leaf-list higher-layer-if { + type interface-ref; + config false; + description + "A list of references to interfaces layered on top of this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf-list lower-layer-if { + type interface-ref; + config false; + + description + "A list of references to interfaces layered underneath this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf speed { + type yang:gauge64; + units "bits/second"; + config false; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces that do not vary in + bandwidth or for those where no accurate estimation can + be made, this node should contain the nominal bandwidth. + For interfaces that have no concept of bandwidth, this + node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - + ifSpeed, ifHighSpeed"; + } + + container statistics { + config false; + description + "A collection of interface-related statistics objects."; + + leaf discontinuity-time { + type yang:date-and-time; + mandatory true; + description + "The time on the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + + leaf in-octets { + type yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + + leaf in-unicast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + + leaf in-broadcast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + + leaf in-multicast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + + leaf in-discards { + type yang:counter32; + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + + leaf in-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + + leaf in-unknown-protos { + type yang:counter32; + + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf out-octets { + type yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + + leaf out-unicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + + leaf out-broadcast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + + leaf out-multicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + + leaf out-discards { + type yang:counter32; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + + leaf out-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + } + + } + } + + /* + * Legacy typedefs + */ + + typedef interface-state-ref { + type leafref { + path "/if:interfaces-state/if:interface/if:name"; + } + status deprecated; + description + "This type is used by data models that need to reference + the operationally present interfaces."; + } + + /* + * Legacy operational state data nodes + */ + + container interfaces-state { + config false; + status deprecated; + description + "Data nodes for the operational state of interfaces."; + + list interface { + key "name"; + status deprecated; + + description + "The list of interfaces on the device. + + System-controlled interfaces created by the system are + always present in this list, whether or not they are + configured."; + + leaf name { + type string; + status deprecated; + description + "The name of the interface. + + A server implementation MAY map this leaf to the ifName + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifName. The definition of + such a mechanism is outside the scope of this document."; + reference + "RFC 2863: The Interfaces Group MIB - ifName"; + } + + leaf type { + type identityref { + base interface-type; + } + mandatory true; + status deprecated; + description + "The type of the interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf admin-status { + if-feature if-mib; + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "Not ready to pass packets and not in some test mode."; + } + enum testing { + value 3; + description + "In some test mode."; + } + } + mandatory true; + status deprecated; + description + "The desired state of the interface. + + This leaf has the same read semantics as ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf oper-status { + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "The interface does not pass any packets."; + } + enum testing { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum unknown { + value 4; + description + "Status cannot be determined for some reason."; + } + enum dormant { + value 5; + description + "Waiting for some external event."; + } + enum not-present { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum lower-layer-down { + value 7; + description + "Down due to state of lower-layer interface(s)."; + } + } + mandatory true; + status deprecated; + description + "The current operational state of the interface. + + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + + leaf last-change { + type yang:date-and-time; + status deprecated; + description + "The time the interface entered its current operational + state. If the current state was entered prior to the + last re-initialization of the local network management + subsystem, then this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + + leaf if-index { + if-feature if-mib; + type int32 { + range "1..2147483647"; + } + mandatory true; + status deprecated; + description + "The ifIndex value for the ifEntry represented by this + interface."; + + reference + "RFC 2863: The Interfaces Group MIB - ifIndex"; + } + + leaf phys-address { + type yang:phys-address; + status deprecated; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a Media Access Control (MAC) address. The + interface's media-specific modules must define the bit + and byte ordering and the format of the value of this + object. For interfaces that do not have such an address + (e.g., a serial line), this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; + } + + leaf-list higher-layer-if { + type interface-state-ref; + status deprecated; + description + "A list of references to interfaces layered on top of this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf-list lower-layer-if { + type interface-state-ref; + status deprecated; + description + "A list of references to interfaces layered underneath this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf speed { + type yang:gauge64; + units "bits/second"; + status deprecated; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces that do not vary in + bandwidth or for those where no accurate estimation can + + be made, this node should contain the nominal bandwidth. + For interfaces that have no concept of bandwidth, this + node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - + ifSpeed, ifHighSpeed"; + } + + container statistics { + status deprecated; + description + "A collection of interface-related statistics objects."; + + leaf discontinuity-time { + type yang:date-and-time; + mandatory true; + status deprecated; + description + "The time on the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + + leaf in-octets { + type yang:counter64; + status deprecated; + description + "The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + + leaf in-unicast-pkts { + type yang:counter64; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + + leaf in-broadcast-pkts { + type yang:counter64; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + + leaf in-multicast-pkts { + type yang:counter64; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + + leaf in-discards { + type yang:counter32; + status deprecated; + + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + + leaf in-errors { + type yang:counter32; + status deprecated; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + + leaf in-unknown-protos { + type yang:counter32; + status deprecated; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf out-octets { + type yang:counter64; + status deprecated; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + + leaf out-unicast-pkts { + type yang:counter64; + status deprecated; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + + leaf out-broadcast-pkts { + type yang:counter64; + status deprecated; + + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + + leaf out-multicast-pkts { + type yang:counter64; + status deprecated; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + + leaf out-discards { + type yang:counter32; + status deprecated; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + + leaf out-errors { + type yang:counter32; + status deprecated; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang new file mode 100644 index 000000000..cbbfc0815 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang @@ -0,0 +1,4455 @@ +module ietf-isis { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; + prefix isis; + + import ietf-routing { + prefix rt; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-interfaces { + prefix if; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + import ietf-key-chain { + prefix key-chain; + reference + "RFC 8177: YANG Data Model for Key Chains"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import iana-routing-types { + prefix iana-rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import ietf-bfd-types { + prefix bfd-types; + reference + "RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + + organization + "IETF LSR Working Group"; + contact + "WG Web: + WG List: + + Editor: Stephane Litkowski + + + Author: Derek Yeung + + + Author: Acee Lindem + + + Author: Jeffrey Zhang + + + Author: Ladislav Lhotka + "; + description + "This YANG module defines the generic configuration and + operational states for the IS-IS protocol common to all + vendor implementations. It is intended that the module + will be extended by vendors to define vendor-specific + IS-IS configuration parameters and policies - + for example, route maps or route policies. + + This YANG data model conforms to the Network Management + Datastore Architecture (NMDA) as described in RFC 8342. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2022 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 9130; see the + RFC itself for full legal notices."; + reference + "RFC 8342: Network Management Datastore Architecture (NMDA)"; + + revision 2022-10-19 { + description + "Initial revision."; + reference + "RFC 9130: YANG Data Model for the IS-IS Protocol"; + } + + /* Identities */ + + identity isis { + base rt:routing-protocol; + description + "Identity for the IS-IS routing protocol."; + } + + identity lsp-log-reason { + description + "Base identity for a Link State PDU (LSP) + change log reason."; + } + + identity refresh { + base lsp-log-reason; + description + "Identity used when the LSP log reason is that an LSP + refresh was received."; + } + + identity content-change { + base lsp-log-reason; + description + "Identity used when the LSP log reason is + a change in the contents of the LSP."; + } + + identity frr-protection-method { + description + "Base identity for a Fast Reroute protection method."; + } + + identity frr-protection-method-lfa { + base frr-protection-method; + description + "Loop-Free Alternate as defined in RFC 5286."; + reference + "RFC 5286: Basic Specification for IP Fast Reroute: + Loop-Free Alternates"; + } + + identity frr-protection-method-rlfa { + base frr-protection-method; + description + "Remote Loop-Free Alternate as defined in RFC 7490."; + reference + "RFC 7490: Remote Loop-Free Alternate (LFA) + Fast Reroute (FRR)"; + } + + identity frr-protection-method-rsvpte { + base frr-protection-method; + description + "RSVP-TE as defined in RFC 4090."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for + LSP Tunnels"; + } + + identity frr-protection-available-type { + description + "Base identity for Fast Reroute protection types + provided by an alternate path."; + } + + identity frr-protection-available-node-type { + base frr-protection-available-type; + description + "Node protection is provided by the alternate."; + } + + identity frr-protection-available-link-type { + base frr-protection-available-type; + description + "Link protection is provided by the alternate."; + } + + identity frr-protection-available-srlg-type { + base frr-protection-available-type; + description + "Shared Risk Link Group (SRLG) protection is provided by + the alternate."; + } + + identity frr-protection-available-downstream-type { + base frr-protection-available-type; + description + "The alternate is downstream of the node in the path."; + } + + identity frr-protection-available-other-type { + base frr-protection-available-type; + description + "The level of protection is unknown."; + } + + identity frr-alternate-type { + description + "Base identity for the IP Fast Reroute alternate type."; + } + + identity frr-alternate-type-equal-cost { + base frr-alternate-type; + description + "ECMP-based alternate."; + } + + identity frr-alternate-type-lfa { + base frr-alternate-type; + description + "LFA-based alternate."; + } + + identity frr-alternate-type-remote-lfa { + base frr-alternate-type; + description + "Remote-LFA-based alternate."; + } + + identity frr-alternate-type-tunnel { + base frr-alternate-type; + description + "Tunnel-based alternate (such as RSVP-TE or GRE)."; + } + + identity frr-alternate-mrt { + base frr-alternate-type; + description + "MRT-based alternate."; + } + + identity frr-alternate-tilfa { + base frr-alternate-type; + description + "TI-LFA-based alternate."; + } + + identity frr-alternate-other { + base frr-alternate-type; + description + "Other type of alternate."; + } + + identity unidirectional-link-delay-subtlv-flag { + description + "Base identity for the flag corresponding to the + Unidirectional Link Delay sub-TLV as defined in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + identity unidirectional-link-delay-subtlv-a-flag { + base unidirectional-link-delay-subtlv-flag; + description + "The 'A' bit field represents the Anomalous (A) bit. + The A bit is set when the measured value of + this parameter exceeds its configured + maximum threshold. + The A bit is cleared when the measured value + falls below its configured reuse threshold. + If the A bit is clear, + the value represents steady-state link performance."; + } + + identity min-max-unidirectional-link-delay-subtlv-flag { + description + "Base identity for the flag corresponding to the Min/Max + Unidirectional Link Delay sub-TLV as defined in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + identity min-max-unidirectional-link-delay-subtlv-a-flag { + base min-max-unidirectional-link-delay-subtlv-flag; + description + "The 'A' bit field represents the Anomalous (A) bit. + The A bit is set when the measured value of + this parameter exceeds its configured + maximum threshold. + The A bit is cleared when the measured value + falls below its configured reuse threshold. + If the A bit is clear, + the value represents steady-state link performance."; + } + + identity unidirectional-link-loss-subtlv-flag { + description + "Base identity for the flag corresponding to the + Unidirectional Link Loss sub-TLV as defined in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + identity unidirectional-link-loss-subtlv-a-flag { + base unidirectional-link-loss-subtlv-flag; + description + "The 'A' bit field represents the Anomalous (A) bit. + The A bit is set when the measured value of + this parameter exceeds its configured + maximum threshold. + The A bit is cleared when the measured value + falls below its configured reuse threshold. + If the A bit is clear, + the value represents steady-state link performance."; + } + + identity tlv229-flag { + description + "Base identity for the flag corresponding to TLV 229 + (M-Topologies) as defined in RFC 5120."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + + identity tlv229-overload-flag { + base tlv229-flag; + description + "If set, the originator is overloaded + and must be avoided in the path calculation."; + } + + identity tlv229-attached-flag { + base tlv229-flag; + description + "If set, the originator is attached to + another area using the referred metric."; + } + + identity router-capability-flag { + description + "Base identity for the flag corresponding to the + Router Capability TLV as defined in RFC 7981."; + reference + "RFC 7981: IS-IS Extensions for Advertising Router + Information"; + } + + identity router-capability-flooding-flag { + base router-capability-flag; + description + "Quote from RFC 7981: + 'If the S bit is set(1), the IS-IS Router CAPABILITY TLV + MUST be flooded across the entire routing domain. If the + S bit is not set(0), the TLV MUST NOT be leaked between + levels. This bit MUST NOT be altered during the TLV + leaking.'"; + } + + identity router-capability-down-flag { + base router-capability-flag; + description + "Quote from RFC 7981: + 'When the IS-IS Router CAPABILITY TLV is leaked from + Level 2 (L2) to Level 1 (L1), the D bit MUST be set. + Otherwise, this bit MUST be clear. IS-IS Router + CAPABILITY TLVs with the D bit set MUST NOT be leaked from + Level 1 to Level 2. This is to prevent TLV looping.'"; + } + + identity lsp-flag { + description + "Base identity for LSP attributes as defined in ISO 10589."; + reference + "ISO 10589: Intermediate System to Intermediate System + intra-domain routeing information exchange protocol + for use in conjunction with the protocol for providing + the connectionless-mode network service (ISO 8473)"; + } + + identity lsp-partitioned-flag { + base lsp-flag; + description + "Originator partition repair supported."; + } + + identity lsp-attached-error-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the error metric."; + } + + identity lsp-attached-delay-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the delay metric."; + } + + identity lsp-attached-expense-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the expense metric."; + } + + identity lsp-attached-default-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the default metric."; + } + + identity lsp-overload-flag { + base lsp-flag; + description + "If set, the originator is overloaded + and must be avoided in the path calculation."; + } + + identity lsp-l1-system-flag { + base lsp-flag; + description + "Set when the Intermediate System has an L1 type."; + } + + identity lsp-l2-system-flag { + base lsp-flag; + description + "Set when the Intermediate System has an L2 type."; + } + + /* Feature definitions */ + + feature osi-interface { + description + "Support of OSI-specific parameters on an interface."; + } + + feature poi-tlv { + description + "Support of the Purge Originator Identification (POI) TLV."; + reference + "RFC 6232: Purge Originator Identification TLV for IS-IS"; + } + + feature ietf-spf-delay { + description + "Support for the IETF SPF delay algorithm."; + reference + "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm + for Link-State IGPs"; + } + + feature bfd { + description + "Support for detection of IS-IS neighbor reachability + via BFD."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 5881: Bidirectional Forwarding Detection (BFD) + for IPv4 and IPv6 (Single Hop)"; + } + + feature key-chain { + description + "Support of key chains for authentication."; + reference + "RFC 8177: YANG Data Model for Key Chains"; + } + + feature node-flag { + description + "Support for node flags for IS-IS prefixes."; + reference + "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability"; + } + + feature node-tag { + description + "Support for node administrative tags for IS-IS + routing instances."; + reference + "RFC 7917: Advertising Node Administrative Tags in IS-IS"; + } + + feature ldp-igp-sync { + description + "Support for LDP IGP synchronization."; + reference + "RFC 5443: LDP IGP Synchronization"; + } + + feature fast-reroute { + description + "Support for IP Fast Reroute (IP FRR)."; + } + + feature nsr { + description + "Support for Non-Stop-Routing (NSR). The IS-IS NSR feature + allows a router with redundant control-plane capability + (e.g., dual Route Processor (RP) cards) to maintain its + state and adjacencies during planned and unplanned + IS-IS instance restarts. It differs from graceful restart + or Non-Stop Forwarding (NSF) in that no protocol signaling + or assistance from adjacent IS-IS neighbors is required to + recover control-plane state."; + } + + feature lfa { + description + "Support for Loop-Free Alternates (LFAs)."; + reference + "RFC 5286: Basic Specification for IP Fast Reroute: + Loop-Free Alternates"; + } + + feature remote-lfa { + description + "Support for remote LFAs (R-LFAs)."; + reference + "RFC 7490: Remote Loop-Free Alternate (LFA) + Fast Reroute (FRR)"; + } + + feature overload-max-metric { + description + "Support of overload by setting all links to the maximum + link metric. In IS-IS, the overload bit is usually used to + signal that a node cannot be used as a transit node. The + 'overload-max-metric' feature provides similar behavior, + also setting all the link metrics to MAX_METRIC."; + } + + feature prefix-tag { + description + "Support for 32-bit prefix tags."; + reference + "RFC 5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags"; + } + + feature prefix-tag64 { + description + "Support for 64-bit prefix tags."; + reference + "RFC 5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags"; + } + + feature auto-cost { + description + "Support for an IS-IS interface metric computation + according to a reference bandwidth."; + } + + feature te-rid { + description + "Traffic Engineering router ID."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 6119: IPv6 Traffic Engineering in IS-IS"; + } + + feature max-ecmp { + description + "Sets the maximum number of ECMP paths."; + } + + feature multi-topology { + description + "Support for Multi-Topology (MT) Routing."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + + feature nlpid-control { + description + "Support for the advertisement of a Network Layer + Protocol Identifier within an IS-IS configuration."; + } + + feature graceful-restart { + description + "Support for IS-IS graceful restart."; + reference + "RFC 8706: Restart Signaling for IS-IS"; + } + + feature lsp-refresh { + description + "Configuration of the LSP refresh interval."; + } + + feature maximum-area-addresses { + description + "Support for 'maximum-area-addresses' configuration."; + } + + feature admin-control { + description + "Administrative control of the protocol state."; + } + + /* Type definitions */ + + typedef circuit-id { + type uint8; + description + "This type defines the circuit ID + associated with an interface."; + } + + typedef extended-circuit-id { + type uint32; + description + "This type defines the extended circuit ID + associated with an interface."; + } + + typedef interface-type { + type enumeration { + enum broadcast { + description + "Broadcast interface type."; + } + enum point-to-point { + description + "Point-to-point interface type."; + } + } + description + "This type defines the type of adjacency + to be established for the interface. + 'interface-type' determines the type + of Hello message that is used."; + } + + typedef level { + type enumeration { + enum level-1 { + description + "This enum indicates L1-only capability."; + } + enum level-2 { + description + "This enum indicates L2-only capability."; + } + enum level-all { + description + "This enum indicates capability for both levels."; + } + } + default "level-all"; + description + "This type defines the IS-IS level of an object."; + } + + typedef adj-state-type { + type enumeration { + enum up { + description + "This state indicates that the adjacency is established."; + } + enum down { + description + "This state indicates that the adjacency is + NOT established."; + } + enum init { + description + "This state indicates that the adjacency is being + established."; + } + enum failed { + description + "This state indicates that the adjacency has failed."; + } + } + description + "This type defines the states of an adjacency."; + } + + typedef if-state-type { + type enumeration { + enum up { + description + "'up' state."; + } + enum down { + description + "'down' state."; + } + } + description + "This type defines the state of an interface."; + } + + typedef level-number { + type uint8 { + range "1 .. 2"; + } + description + "This type defines the current IS-IS level."; + } + + typedef lsp-id { + type string { + pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' + + '{4}\.[0-9][0-9]-[0-9][0-9]'; + } + description + "This type defines the IS-IS LSP ID format using a + pattern. An example LSP ID is '0143.0438.AEF0.02-01'."; + } + + typedef area-address { + type string { + pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; + } + description + "This type defines the area address format."; + } + + typedef snpa { + type string { + length "0 .. 20"; + } + description + "This type defines the Subnetwork Point of Attachment (SNPA) + format. The SNPA should be encoded according to the rules + specified for the particular type of subnetwork being used. + As an example, for an Ethernet subnetwork, the SNPA is + encoded as a Media Access Control (MAC) address, such as + '00aa.bbcc.ddee'."; + } + + typedef system-id { + type string { + pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; + } + description + "This type defines the IS-IS system ID by using a pattern. + An example system ID is '0143.0438.AEF0'."; + } + + typedef extended-system-id { + type string { + pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' + + '[0-9][0-9]'; + } + description + "This type defines the IS-IS system ID using a pattern. + 'extended-system-id' contains the pseudonode number + in addition to the system ID. + An example extended system ID is '0143.0438.AEF0.00'."; + } + + typedef wide-metric { + type uint32 { + range "0 .. 16777215"; + } + description + "This type defines the wide-style format of an IS-IS metric."; + } + + typedef std-metric { + type uint8 { + range "0 .. 63"; + } + description + "This type defines the old-style format of the IS-IS metric."; + } + + typedef mesh-group-state { + type enumeration { + enum mesh-inactive { + description + "The interface is not part of a mesh group."; + } + enum mesh-set { + description + "The interface is part of a mesh group."; + } + enum mesh-blocked { + description + "LSPs must not be flooded over this interface."; + } + } + description + "This type describes the mesh group state of an interface."; + } + + /* Grouping for notifications */ + + grouping notification-instance-hdr { + description + "Instance-specific IS-IS notification data grouping."; + leaf routing-protocol-name { + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } + description + "Name of the IS-IS instance."; + } + leaf isis-level { + type level; + description + "IS-IS level of the instance."; + } + } + + grouping notification-interface-hdr { + description + "Interface-specific IS-IS notification data grouping."; + leaf interface-name { + type if:interface-ref; + description + "IS-IS interface name."; + } + leaf interface-level { + type level; + description + "IS-IS level of the interface."; + } + leaf extended-circuit-id { + type extended-circuit-id; + description + "Extended circuit ID of the interface."; + } + } + + /* Groupings for IP Fast Reroute */ + + grouping instance-fast-reroute-config { + description + "This group defines the global configuration of IP + Fast Reroute (FRR)."; + container fast-reroute { + if-feature "fast-reroute"; + description + "This container may be augmented with global + parameters for IP FRR."; + container lfa { + if-feature "lfa"; + description + "This container may be augmented with + global parameters for Loop-Free Alternates (LFAs). + The creation of this container has no effect on + LFA activation."; + } + } + } + + grouping interface-lfa-config { + leaf candidate-enabled { + type boolean; + default "true"; + description + "Enables the interface to be used as a backup."; + } + leaf enabled { + type boolean; + default "false"; + description + "Activates the LFA. Per-prefix LFA computation is assumed."; + } + container remote-lfa { + if-feature "remote-lfa"; + leaf enabled { + type boolean; + default "false"; + description + "Activates the remote LFA (R-LFA)."; + } + description + "Remote LFA configuration."; + } + description + "Grouping for LFA interface configuration."; + } + + grouping interface-fast-reroute-config { + description + "This group defines the interface configuration of IP FRR."; + container fast-reroute { + if-feature "fast-reroute"; + container lfa { + if-feature "lfa"; + uses interface-lfa-config; + container level-1 { + uses interface-lfa-config; + description + "LFA level-1 configuration."; + } + container level-2 { + uses interface-lfa-config; + description + "LFA level-2 configuration."; + } + description + "LFA configuration."; + } + description + "Interface IP FRR configuration."; + } + } + + grouping instance-fast-reroute-state { + description + "IP FRR state data grouping."; + container protected-routes { + config false; + list address-family-stats { + key "address-family prefix alternate"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf prefix { + type inet:ip-prefix; + description + "Protected prefix."; + } + leaf alternate { + type inet:ip-address; + description + "Alternate next hop for the prefix."; + } + leaf alternate-type { + type identityref { + base frr-alternate-type; + } + description + "Type of alternate."; + } + leaf best { + type boolean; + description + "Set when the alternate is the preferred alternate; + clear otherwise."; + } + leaf non-best-reason { + type string { + length "1..255"; + } + description + "Information field that explains why the alternate + is not the best alternate. The length should be + limited to 255 Unicode characters. The expected format + is a single line of text."; + } + container protection-available { + leaf-list protection-types { + type identityref { + base frr-protection-available-type; + } + description + "This list contains a set of protection + types defined as identities. + An identity must be added for each type of + protection provided by the alternate. + As an example, if an alternate provides + SRLG, node, and link protection, three + identities must be added in this list: + one for SRLG protection, one for node + protection, and one for link protection."; + } + description + "Protection types provided by the alternate."; + } + leaf alternate-metric-1 { + type uint32; + description + "Metric from the Point of Local Repair (PLR) to the + destination through the alternate path."; + } + leaf alternate-metric-2 { + type uint32; + description + "Metric from the PLR to the alternate node."; + } + leaf alternate-metric-3 { + type uint32; + description + "Metric from the alternate node to the destination."; + } + description + "Per-address-family protected prefix statistics."; + } + description + "List of prefixes that are protected."; + } + container unprotected-routes { + config false; + list prefixes { + key "address-family prefix"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf prefix { + type inet:ip-prefix; + description + "Unprotected prefix."; + } + description + "Per-address-family unprotected prefix statistics."; + } + description + "List of prefixes that are not protected."; + } + list protection-statistics { + key "frr-protection-method"; + config false; + leaf frr-protection-method { + type identityref { + base frr-protection-method; + } + description + "Protection method used."; + } + list address-family-stats { + key "address-family"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf total-routes { + type yang:gauge32; + description + "Total prefixes."; + } + leaf unprotected-routes { + type yang:gauge32; + description + "Total prefixes that are not protected."; + } + leaf protected-routes { + type yang:gauge32; + description + "Total prefixes that are protected."; + } + leaf link-protected-routes { + type yang:gauge32; + description + "Total prefixes that are link protected."; + } + leaf node-protected-routes { + type yang:gauge32; + description + "Total prefixes that are node protected."; + } + description + "Per-address-family protected prefix statistics."; + } + description + "Global protection statistics."; + } + } + + /* Routing table and local Routing Information Base (RIB) + groupings */ + + grouping local-rib { + description + "Local RIB: RIB for routes computed by the local IS-IS + routing instance."; + container local-rib { + config false; + description + "Local RIB."; + list route { + key "prefix"; + description + "Routes."; + leaf prefix { + type inet:ip-prefix; + description + "Destination prefix."; + } + container next-hops { + description + "Next hops for the route."; + list next-hop { + key "next-hop"; + description + "List of next hops for the route."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + leaf next-hop { + type inet:ip-address; + description + "Next-hop address."; + } + } + } + leaf metric { + type uint32; + description + "Metric for this route."; + } + leaf level { + type level-number; + description + "Level number for this route."; + } + leaf route-tag { + type uint32; + description + "Route tag for this route."; + } + } + } + } + + grouping route-content { + description + "IS-IS protocol-specific route properties grouping."; + leaf metric { + type uint32; + description + "IS-IS metric of a route."; + } + leaf-list tag { + type uint64; + description + "List of tags associated with the route. This list + provides a consolidated view of both 32-bit and 64-bit + tags (RFC 5130) available for the prefix."; + reference + "RFC 5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags"; + } + leaf route-type { + type enumeration { + enum l2-intra-area { + description + "Level-2 internal route. As per RFC 5302, + the prefix is directly connected to the + advertising router. It cannot be + distinguished from an L1->L2 inter-area + route."; + reference + "RFC 5302: Domain-Wide Prefix Distribution with + Two-Level IS-IS"; + } + enum l1-intra-area { + description + "Level-1 internal route. As per RFC 5302, + the prefix is directly connected to the + advertising router."; + } + enum l2-external { + description + "Level-2 external route. As per RFC 5302, + such a route is learned from other IGPs. + It cannot be distinguished from an L1->L2 + inter-area external route."; + } + enum l1-external { + description + "Level-1 external route. As per RFC 5302, + such a route is learned from other IGPs."; + } + enum l1-inter-area { + description + "These prefixes are learned via L2 routing."; + } + enum l1-inter-area-external { + description + "These prefixes are learned via L2 routing + towards a level-2 external route."; + } + } + description + "IS-IS route type."; + } + } + + /* Grouping definitions for configuration and operational states */ + + grouping adjacency-state { + container adjacencies { + config false; + list adjacency { + leaf neighbor-sys-type { + type level; + description + "Level capability of the neighboring system."; + } + leaf neighbor-sysid { + type system-id; + description + "The system ID of the neighbor."; + } + leaf neighbor-extended-circuit-id { + type extended-circuit-id; + description + "The circuit ID of the neighbor."; + } + leaf neighbor-snpa { + type snpa; + description + "The SNPA of the neighbor."; + } + leaf usage { + type level; + description + "Defines the level(s) activated for the adjacency. + On a point-to-point link, this might be level 1 and + level 2, but on a LAN, the usage will be level 1 + between neighbors at level 1 or level 2 between + neighbors at level 2."; + } + leaf hold-timer { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "The holding time (in seconds) for this adjacency. + This value is based on received Hello PDUs and the + elapsed time since receipt."; + } + leaf neighbor-priority { + type uint8 { + range "0 .. 127"; + } + description + "Priority of the neighboring IS for becoming the + Designated Intermediate System (DIS)."; + } + leaf lastuptime { + type yang:timestamp; + description + "When the adjacency most recently entered the + 'up' state, measured in hundredths of a + second since the last reinitialization of + the network management subsystem. + The value is 0 if the adjacency has never + been in the 'up' state."; + } + leaf state { + type adj-state-type; + description + "This leaf describes the state of the interface."; + } + description + "List of operational adjacencies."; + } + description + "This container lists the adjacencies of + the local node."; + } + description + "Adjacency state."; + } + + grouping admin-control { + leaf enabled { + if-feature "admin-control"; + type boolean; + default "true"; + description + "Enables or disables the protocol."; + } + description + "Grouping for administrative control."; + } + + grouping ietf-spf-delay { + leaf initial-delay { + type rt-types:timer-value-milliseconds; + units "msec"; + default "50"; + description + "Delay used while in the QUIET state (milliseconds)."; + } + leaf short-delay { + type rt-types:timer-value-milliseconds; + units "msec"; + default "200"; + description + "Delay used while in the SHORT_WAIT state (milliseconds)."; + } + leaf long-delay { + type rt-types:timer-value-milliseconds; + units "msec"; + default "5000"; + description + "Delay used while in the LONG_WAIT state (milliseconds)."; + } + leaf hold-down { + type rt-types:timer-value-milliseconds; + units "msec"; + default "10000"; + description + "This timer value defines the period without any changes + for the IGP to be considered stable (in milliseconds)."; + } + leaf time-to-learn { + type rt-types:timer-value-milliseconds; + units "msec"; + default "500"; + description + "Duration used to learn all the IGP events + related to a single network event (milliseconds)."; + } + leaf current-state { + type enumeration { + enum quiet { + description + "QUIET state."; + } + enum short-wait { + description + "SHORT_WAIT state."; + } + enum long-wait { + description + "LONG_WAIT state."; + } + } + config false; + description + "Current SPF Back-Off algorithm state."; + } + leaf remaining-time-to-learn { + type rt-types:timer-value-milliseconds; + units "msec"; + config false; + description + "Remaining time until the time-to-learn timer fires."; + } + leaf remaining-hold-down { + type rt-types:timer-value-milliseconds; + units "msec"; + config false; + description + "Remaining time until the hold-down timer fires."; + } + leaf last-event-received { + type yang:timestamp; + config false; + description + "Time of the last IGP event received."; + } + leaf next-spf-time { + type yang:timestamp; + config false; + description + "Time when the next SPF has been scheduled."; + } + leaf last-spf-time { + type yang:timestamp; + config false; + description + "Time of the last SPF computation."; + } + description + "Grouping for IETF SPF delay configuration and state."; + reference + "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm + for Link-State IGPs"; + } + + grouping node-tag-config { + description + "IS-IS node tag configuration state."; + container node-tags { + if-feature "node-tag"; + list node-tag { + key "tag"; + leaf tag { + type uint32; + description + "Node tag value."; + } + description + "List of tags."; + } + description + "Container for node administrative tags."; + } + } + + grouping authentication-global-cfg { + choice authentication-type { + case key-chain { + if-feature "key-chain"; + leaf key-chain { + type key-chain:key-chain-ref; + description + "Reference to a key chain."; + } + } + case password { + leaf key { + type string; + description + "This leaf specifies the authentication key. The + length of the key may be dependent on the + cryptographic algorithm."; + } + leaf crypto-algorithm { + type identityref { + base key-chain:crypto-algorithm; + } + description + "Cryptographic algorithm associated with a key."; + } + } + description + "Choice of authentication."; + } + description + "Grouping for global authentication configuration."; + } + + grouping metric-type-global-cfg { + leaf value { + type enumeration { + enum wide-only { + description + "Advertises the new metric style only (RFC 5305)."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + enum old-only { + description + "Advertises the old metric style only (RFC 1195)."; + reference + "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and + dual environments"; + } + enum both { + description + "Advertises both metric styles."; + } + } + description + "Type of metric to be generated: + + - 'wide-only' means that only a new metric style + is generated. + - 'old-only' means that only an old metric style + is generated. + - 'both' means that both are advertised. + + This leaf only affects IPv4 metrics."; + } + description + "Grouping for global metric style configuration."; + } + + grouping metric-type-global-cfg-with-default { + leaf value { + type enumeration { + enum wide-only { + description + "Advertises the new metric style only (RFC 5305)."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + enum old-only { + description + "Advertises the old metric style only (RFC 1195)."; + reference + "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and + dual environments"; + } + enum both { + description + "Advertises both metric styles."; + } + } + default "wide-only"; + description + "Type of metric to be generated: + + - 'wide-only' means that only a new metric style + is generated. + - 'old-only' means that only an old metric style + is generated. + - 'both' means that both are advertised. + + This leaf only affects IPv4 metrics."; + } + description + "Grouping for global metric style configuration."; + } + + grouping default-metric-global-cfg { + leaf value { + type wide-metric; + description + "Value of the metric."; + } + description + "Global default metric configuration grouping."; + } + + grouping default-metric-global-cfg-with-default { + leaf value { + type wide-metric; + default "10"; + description + "Value of the metric."; + } + description + "Global default metric configuration grouping."; + } + + grouping overload-global-cfg { + leaf status { + type boolean; + default "false"; + description + "This leaf specifies the overload status."; + } + description + "Grouping for overload bit configuration."; + } + + grouping overload-max-metric-global-cfg { + leaf timeout { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Timeout (in seconds) of the overload condition."; + } + description + "Overload maximum metric configuration grouping."; + } + + grouping route-preference-global-cfg { + choice granularity { + case detail { + leaf internal { + type uint8; + description + "Protocol preference for internal routes."; + } + leaf external { + type uint8; + description + "Protocol preference for external routes."; + } + } + case coarse { + leaf default { + type uint8; + description + "Protocol preference for all IS-IS routes."; + } + } + description + "Choice for implementation of route preference."; + } + description + "Global route preference grouping."; + } + + grouping hello-authentication-cfg { + choice authentication-type { + case key-chain { + if-feature "key-chain"; + leaf key-chain { + type key-chain:key-chain-ref; + description + "Reference to a key chain."; + } + } + case password { + leaf key { + type string; + description + "Authentication key specification. The length of the + key may be dependent on the cryptographic algorithm."; + } + leaf crypto-algorithm { + type identityref { + base key-chain:crypto-algorithm; + } + description + "Cryptographic algorithm associated with a key."; + } + } + description + "Choice of authentication."; + } + description + "Grouping for Hello authentication."; + } + + grouping hello-interval-cfg { + leaf value { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Interval (in seconds) between successive Hello + messages."; + } + description + "Interval between Hello messages."; + } + + grouping hello-interval-cfg-with-default { + leaf value { + type rt-types:timer-value-seconds16; + units "seconds"; + default "10"; + description + "Interval (in seconds) between successive Hello + messages."; + } + description + "Interval between Hello messages."; + } + + grouping hello-multiplier-cfg { + leaf value { + type uint16; + description + "Number of missed Hello messages prior to + declaring the adjacency down."; + } + description + "Grouping for the number of missed Hello messages prior to + declaring the adjacency down."; + } + + grouping hello-multiplier-cfg-with-default { + leaf value { + type uint16; + default "3"; + description + "Number of missed Hello messages prior to + declaring the adjacency down."; + } + description + "Grouping for the number of missed Hello messages prior to + declaring the adjacency down."; + } + + grouping priority-cfg { + leaf value { + type uint8 { + range "0 .. 127"; + } + description + "Priority of the interface for DIS election."; + } + description + "Interface DIS election priority grouping."; + } + + grouping priority-cfg-with-default { + leaf value { + type uint8 { + range "0 .. 127"; + } + default "64"; + description + "Priority of the interface for DIS election."; + } + description + "Interface DIS election priority grouping."; + } + + grouping metric-cfg { + leaf value { + type wide-metric; + description + "Metric value."; + } + description + "Interface metric grouping."; + } + + grouping metric-cfg-with-default { + leaf value { + type wide-metric; + default "10"; + description + "Metric value."; + } + description + "Interface metric grouping."; + } + + grouping metric-parameters { + container metric-type { + uses metric-type-global-cfg-with-default; + container level-1 { + uses metric-type-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses metric-type-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Metric style global configuration."; + } + container default-metric { + uses default-metric-global-cfg-with-default; + container level-1 { + uses default-metric-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses default-metric-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Default metric global configuration."; + } + container auto-cost { + if-feature "auto-cost"; + description + "Interface auto-cost configuration state."; + leaf enabled { + type boolean; + description + "Enables or disables interface auto-cost."; + } + leaf reference-bandwidth { + when "../enabled = 'true'" { + description + "Only when auto-cost is enabled."; + } + type uint32 { + range "1..4294967"; + } + units "Mbits"; + description + "Configures the reference bandwidth used to automatically + determine the interface cost (Mbits). The cost is the + reference bandwidth divided by the interface speed, + with 1 being the minimum cost."; + } + } + description + "Grouping for global metric parameters."; + } + + grouping high-availability-parameters { + container graceful-restart { + if-feature "graceful-restart"; + leaf enabled { + type boolean; + default "false"; + description + "Enables graceful restart."; + } + leaf restart-interval { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Interval (in seconds) to attempt graceful restart prior + to failure."; + } + leaf helper-enabled { + type boolean; + default "true"; + description + "Enables a local IS-IS router as a graceful restart + helper."; + } + description + "Configuration of graceful restart."; + } + container nsr { + if-feature "nsr"; + description + "Non-Stop Routing (NSR) configuration."; + leaf enabled { + type boolean; + default "false"; + description + "Enables or disables NSR."; + } + } + description + "Grouping for high-availability parameters."; + } + + grouping authentication-parameters { + container authentication { + uses authentication-global-cfg; + container level-1 { + uses authentication-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses authentication-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Authentication global configuration for + both LSPs and Sequence Number PDUs (SNPs)."; + } + description + "Grouping for authentication parameters."; + } + + grouping address-family-parameters { + container address-families { + if-feature "nlpid-control"; + list address-family-list { + key "address-family"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf enabled { + type boolean; + description + "Activates the address family."; + } + description + "List of address families and whether or not they + are activated."; + } + description + "Address family configuration."; + } + description + "Grouping for address family parameters."; + } + + grouping mpls-parameters { + container mpls { + container te-rid { + if-feature "te-rid"; + description + "Stable IS-IS router IP address used for Traffic + Engineering."; + leaf ipv4-router-id { + type inet:ipv4-address; + description + "Router ID value that would be used in TLV 134."; + } + leaf ipv6-router-id { + type inet:ipv6-address; + description + "Router ID value that would be used in TLV 140."; + } + } + container ldp { + container igp-sync { + if-feature "ldp-igp-sync"; + description + "This container may be augmented with global + parameters for LDP IGP synchronization."; + } + description + "LDP configuration."; + } + description + "MPLS configuration."; + } + description + "Grouping for MPLS global parameters."; + } + + grouping lsp-parameters { + leaf lsp-mtu { + type uint16; + units "bytes"; + default "1492"; + description + "Maximum size of an LSP PDU in bytes."; + } + leaf lsp-lifetime { + type uint16 { + range "1..65535"; + } + units "seconds"; + description + "Lifetime of the router's LSPs in seconds."; + } + leaf lsp-refresh { + if-feature "lsp-refresh"; + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Refresh interval of the router's LSPs in seconds."; + } + leaf poi-tlv { + if-feature "poi-tlv"; + type boolean; + default "false"; + description + "Enables the advertisement of the IS-IS Purge Originator + Identification TLV."; + } + description + "Grouping for LSP global parameters."; + } + + grouping spf-parameters { + container spf-control { + leaf paths { + if-feature "max-ecmp"; + type uint16 { + range "1..65535"; + } + description + "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; + } + container ietf-spf-delay { + if-feature "ietf-spf-delay"; + uses ietf-spf-delay; + description + "IETF SPF delay algorithm configuration."; + } + description + "SPF calculation control."; + } + description + "Grouping for SPF global parameters."; + } + + grouping instance-config { + description + "IS-IS global configuration grouping."; + uses admin-control; + leaf level-type { + type level; + default "level-all"; + description + "Level of an IS-IS node. Can be 'level-1', 'level-2', or + 'level-all'."; + } + leaf system-id { + type system-id; + description + "System ID of the node."; + } + leaf maximum-area-addresses { + if-feature "maximum-area-addresses"; + type uint8; + default "3"; + description + "Maximum areas supported."; + } + leaf-list area-address { + type area-address; + description + "List of areas supported by the protocol instance."; + } + uses lsp-parameters; + uses high-availability-parameters; + uses node-tag-config; + uses metric-parameters; + uses authentication-parameters; + uses address-family-parameters; + uses mpls-parameters; + uses spf-parameters; + uses instance-fast-reroute-config; + container preference { + uses route-preference-global-cfg; + description + "Router preference configuration for IS-IS + protocol instance route installation."; + } + container overload { + uses overload-global-cfg; + description + "Router protocol instance overload state configuration."; + } + container overload-max-metric { + if-feature "overload-max-metric"; + uses overload-max-metric-global-cfg; + description + "Router protocol instance overload maximum + metric advertisement configuration."; + } + } + + grouping instance-state { + description + "IS-IS instance operational state."; + uses spf-log; + uses lsp-log; + uses hostname-db; + uses lsdb; + uses local-rib; + uses system-counters; + uses instance-fast-reroute-state; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one + or more of this IS-IS instance's counters suffered a + discontinuity. If no such discontinuities have occurred + since the IS-IS instance was last reinitialized, then + this node contains the time the IS-IS instance was + reinitialized, which normally occurs when it was + created."; + } + } + + grouping multi-topology-config { + description + "Per-topology configuration."; + container default-metric { + uses default-metric-global-cfg; + container level-1 { + uses default-metric-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses default-metric-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Default metric per-topology configuration."; + } + uses node-tag-config; + } + + grouping interface-config { + description + "Interface configuration grouping."; + uses admin-control; + leaf level-type { + type level; + default "level-all"; + description + "IS-IS level of the interface."; + } + leaf lsp-pacing-interval { + type rt-types:timer-value-milliseconds; + units "milliseconds"; + default "33"; + description + "Interval (in milliseconds) between LSP transmissions."; + } + leaf lsp-retransmit-interval { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Interval (in seconds) between LSP retransmissions."; + } + leaf passive { + type boolean; + default "false"; + description + "Indicates whether the interface is in passive mode (IS-IS + is not running, but the network is advertised)."; + } + leaf csnp-interval { + type rt-types:timer-value-seconds16; + units "seconds"; + default "10"; + description + "Interval (in seconds) between Complete Sequence Number + Packet (CSNP) messages."; + } + container hello-padding { + leaf enabled { + type boolean; + default "true"; + description + "IS-IS Hello padding activation. Enabled by default."; + } + description + "IS-IS Hello padding configuration."; + } + leaf mesh-group-enabled { + type mesh-group-state; + description + "IS-IS interface mesh group state."; + } + leaf mesh-group { + when "../mesh-group-enabled = 'mesh-set'" { + description + "Only valid when 'mesh-group-enabled' equals 'mesh-set'."; + } + type uint8; + description + "IS-IS interface mesh group ID."; + } + leaf interface-type { + type interface-type; + default "broadcast"; + description + "Type of adjacency to be established for the interface. + This dictates the type of Hello messages that are used."; + } + leaf-list tag { + if-feature "prefix-tag"; + type uint32; + description + "List of tags associated with the interface."; + } + leaf-list tag64 { + if-feature "prefix-tag64"; + type uint64; + description + "List of 64-bit tags associated with the interface."; + } + leaf node-flag { + if-feature "node-flag"; + type boolean; + default "false"; + description + "Sets the prefix as a node representative prefix."; + } + container hello-authentication { + uses hello-authentication-cfg; + container level-1 { + uses hello-authentication-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses hello-authentication-cfg; + description + "Configuration specific to level 2."; + } + description + "Authentication type to be used in Hello messages."; + } + container hello-interval { + uses hello-interval-cfg-with-default; + container level-1 { + uses hello-interval-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses hello-interval-cfg; + description + "Configuration specific to level 2."; + } + description + "Interval between Hello messages."; + } + container hello-multiplier { + uses hello-multiplier-cfg-with-default; + container level-1 { + uses hello-multiplier-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses hello-multiplier-cfg; + description + "Configuration specific to level 2."; + } + description + "Hello multiplier configuration."; + } + container priority { + must '../interface-type = "broadcast"' { + error-message "Priority only applies to broadcast " + + "interfaces."; + description + "Checks for a broadcast interface."; + } + uses priority-cfg-with-default; + container level-1 { + uses priority-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses priority-cfg; + description + "Configuration specific to level 2."; + } + description + "Priority for DIS election."; + } + container metric { + uses metric-cfg-with-default; + container level-1 { + uses metric-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses metric-cfg; + description + "Configuration specific to level 2."; + } + description + "Metric configuration."; + } + container bfd { + if-feature "bfd"; + description + "BFD interface configuration."; + uses bfd-types:client-cfg-parms; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 5881: Bidirectional Forwarding Detection + (BFD) for IPv4 and IPv6 (Single Hop) + RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + container address-families { + if-feature "nlpid-control"; + list address-family-list { + key "address-family"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + description + "List of address families."; + } + description + "Interface address families."; + } + container mpls { + container ldp { + leaf igp-sync { + if-feature "ldp-igp-sync"; + type boolean; + default "false"; + description + "Enables IGP/LDP synchronization."; + } + description + "Configuration related to LDP."; + } + description + "MPLS configuration for IS-IS interfaces."; + } + uses interface-fast-reroute-config; + } + + grouping multi-topology-interface-config { + description + "IS-IS interface topology configuration."; + container metric { + uses metric-cfg; + container level-1 { + uses metric-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses metric-cfg; + description + "Configuration specific to level 2."; + } + description + "Metric IS-IS interface configuration."; + } + } + + grouping interface-state { + description + "IS-IS interface operational state."; + uses adjacency-state; + uses event-counters; + uses packet-counters; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one + or more of this IS-IS interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the IS-IS interface was last reinitialized, then + this node contains the time the IS-IS interface was + reinitialized, which normally occurs when it was + created."; + } + } + + /* Grouping for the hostname database */ + + grouping hostname-db { + container hostnames { + config false; + list hostname { + key "system-id"; + leaf system-id { + type system-id; + description + "System ID associated with the hostname."; + } + leaf hostname { + type string { + length "1..255"; + } + description + "Hostname associated with the system ID + as defined in RFC 5301."; + reference + "RFC 5301: Dynamic Hostname Exchange Mechanism + for IS-IS"; + } + description + "List of system ID / hostname associations."; + } + description + "Hostname-to-system-ID mapping database."; + } + description + "Grouping for hostname-to-system-ID mapping database."; + } + + /* Groupings for counters */ + + grouping system-counters { + container system-counters { + config false; + list level { + key "level"; + leaf level { + type level-number; + description + "IS-IS level."; + } + leaf corrupted-lsps { + type uint32; + description + "Number of corrupted in-memory LSPs detected. + LSPs received from the wire with a bad + checksum are silently dropped and not counted. + LSPs received from the wire with parse errors + are counted by 'lsp-errors'."; + } + leaf authentication-type-fails { + type uint32; + description + "Number of authentication type mismatches."; + } + leaf authentication-fails { + type uint32; + description + "Number of authentication key failures."; + } + leaf database-overload { + type uint32; + description + "Number of times the database has become + overloaded."; + } + leaf own-lsp-purge { + type uint32; + description + "Number of times a zero-aged copy of the system's + own LSP is received from some other IS-IS node."; + } + leaf manual-address-drop-from-area { + type uint32; + description + "Number of times a manual address + has been dropped from the area."; + } + leaf max-sequence { + type uint32; + description + "Number of times the system has attempted + to exceed the maximum sequence number."; + } + leaf sequence-number-skipped { + type uint32; + description + "Number of times a sequence number skip has + occurred."; + } + leaf id-len-mismatch { + type uint32; + description + "Number of times a PDU is received with a + different value for the ID field length + than that of the receiving system."; + } + leaf partition-changes { + type uint32; + description + "Number of partition changes detected."; + } + leaf lsp-errors { + type uint32; + description + "Number of LSPs received with errors."; + } + leaf spf-runs { + type uint32; + description + "Number of times SPF was run at this level."; + } + description + "List of supported levels."; + } + description + "List of counters for the IS-IS protocol instance."; + } + description + "Grouping for IS-IS system counters."; + } + + grouping event-counters { + container event-counters { + config false; + leaf adjacency-changes { + type uint32; + description + "The number of times an adjacency state change has + occurred on this interface."; + } + leaf adjacency-number { + type uint32; + description + "The number of adjacencies on this interface."; + } + leaf init-fails { + type uint32; + description + "The number of times initialization of this interface has + failed. This counts events such as Point-to-Point + Protocol (PPP) Network Control Protocol (NCP) failures. + Failures to form an adjacency are counted by + 'adjacency-rejects'."; + } + leaf adjacency-rejects { + type uint32; + description + "The number of times an adjacency has been + rejected on this interface."; + } + leaf id-len-mismatch { + type uint32; + description + "The number of times an IS-IS PDU with an ID + field length different from that for this + system has been received on this interface."; + } + leaf max-area-addresses-mismatch { + type uint32; + description + "The number of times an IS-IS PDU has been + received on this interface with the + max area address field differing from that of + this system."; + } + leaf authentication-type-fails { + type uint32; + description + "Number of authentication type mismatches."; + } + leaf authentication-fails { + type uint32; + description + "Number of authentication key failures."; + } + leaf lan-dis-changes { + type uint32; + description + "The number of times the DIS has changed on this + interface at this level. If the interface type is + 'point-to-point', the count is zero."; + } + description + "IS-IS interface event counters."; + } + description + "Grouping for IS-IS interface event counters."; + } + + grouping packet-counters { + container packet-counters { + config false; + list level { + key "level"; + leaf level { + type level-number; + description + "IS-IS level."; + } + container iih { + leaf in { + type uint32; + description + "Received IS-IS Hello (IIH) PDUs."; + } + leaf out { + type uint32; + description + "Sent IIH PDUs."; + } + description + "Number of IIH PDUs received/sent."; + } + container ish { + leaf in { + type uint32; + description + "Received Intermediate System Hello (ISH) PDUs."; + } + leaf out { + type uint32; + description + "Sent ISH PDUs."; + } + description + "ISH PDUs received/sent."; + } + container esh { + leaf in { + type uint32; + description + "Received End System Hello (ESH) PDUs."; + } + leaf out { + type uint32; + description + "Sent ESH PDUs."; + } + description + "Number of ESH PDUs received/sent."; + } + container lsp { + leaf in { + type uint32; + description + "Received Link State PDU (LSP) PDUs."; + } + leaf out { + type uint32; + description + "Sent LSP PDUs."; + } + description + "Number of LSP PDUs received/sent."; + } + container psnp { + leaf in { + type uint32; + description + "Received Partial Sequence Number PDU (PSNP) PDUs."; + } + leaf out { + type uint32; + description + "Sent PSNP PDUs."; + } + description + "Number of PSNP PDUs received/sent."; + } + container csnp { + leaf in { + type uint32; + description + "Received Complete Sequence Number PDU (CSNP) PDUs."; + } + leaf out { + type uint32; + description + "Sent CSNP PDUs."; + } + description + "Number of CSNP PDUs received/sent."; + } + container unknown { + leaf in { + type uint32; + description + "Received unknown PDUs."; + } + description + "Number of unknown PDUs received."; + } + description + "List of packet counters for supported levels."; + } + description + "Packet counters per IS-IS level."; + } + description + "Grouping for packet counters per IS-IS level."; + } + + /* Groupings for various log buffers */ + + grouping spf-log { + container spf-log { + config false; + list event { + key "id"; + leaf id { + type yang:counter32; + description + "Event identifier. A purely internal value. + The most recent events are expected to have a bigger + ID number."; + } + leaf spf-type { + type enumeration { + enum full { + description + "Full SPF computation."; + } + enum route-only { + description + "SPF computation of route reachability + only."; + } + } + description + "Type of SPF computation performed."; + } + leaf level { + type level-number; + description + "IS-IS level number for the SPF computation."; + } + leaf schedule-timestamp { + type yang:timestamp; + description + "Timestamp of when the SPF computation was + scheduled."; + } + leaf start-timestamp { + type yang:timestamp; + description + "Timestamp of when the SPF computation started."; + } + leaf end-timestamp { + type yang:timestamp; + description + "Timestamp of when the SPF computation ended."; + } + list trigger-lsp { + key "lsp"; + leaf lsp { + type lsp-id; + description + "LSP ID of the LSP that triggered the SPF + computation."; + } + leaf sequence { + type uint32; + description + "Sequence number of the LSP that triggered the SPF + computation."; + } + description + "This list includes the LSPs that triggered the + SPF computation."; + } + description + "List of computation events. Implemented as a + wrapping buffer."; + } + description + "This container lists the SPF computation events."; + } + description + "Grouping for SPF log events."; + } + + grouping lsp-log { + container lsp-log { + config false; + list event { + key "id"; + leaf id { + type yang:counter32; + description + "Event identifier. A purely internal value. + The most recent events are expected to have a bigger + ID number."; + } + leaf level { + type level-number; + description + "IS-IS level number for the LSP."; + } + container lsp { + leaf lsp { + type lsp-id; + description + "LSP ID of the LSP."; + } + leaf sequence { + type uint32; + description + "Sequence number of the LSP."; + } + description + "LSP identification container for either the received + LSP or the locally generated LSP."; + } + leaf received-timestamp { + type yang:timestamp; + description + "This is the timestamp when the LSP was received. + In the case of a local LSP update, the timestamp refers + to the LSP origination time."; + } + leaf reason { + type identityref { + base lsp-log-reason; + } + description + "Type of LSP change."; + } + description + "List of LSP events. Implemented as a wrapping buffer."; + } + description + "This container lists the LSP log. + Local LSP modifications are also included in the list."; + } + description + "Grouping for the LSP log."; + } + + /* Groupings for the Link State Database (LSDB) descriptions */ + /* Unknown TLV and sub-TLV descriptions */ + + grouping tlv { + description + "Type-Length-Value (TLV)."; + leaf type { + type uint16; + description + "TLV type."; + } + leaf length { + type uint16; + description + "TLV length (octets)."; + } + leaf value { + type yang:hex-string; + description + "TLV value."; + } + } + + grouping unknown-tlvs { + description + "Unknown TLVs grouping. Used for unknown TLVs or + unknown sub-TLVs."; + container unknown-tlvs { + description + "All unknown TLVs."; + list unknown-tlv { + description + "Unknown TLV."; + uses tlv; + } + } + } + + /* TLVs and sub-TLVs for prefixes */ + + grouping prefix-reachability-attributes { + description + "Grouping for extended reachability attributes of an + IPv4 or IPv6 prefix."; + leaf external-prefix-flag { + type boolean; + description + "External prefix flag."; + } + leaf readvertisement-flag { + type boolean; + description + "Re-advertisement flag."; + } + leaf node-flag { + type boolean; + description + "Node flag."; + } + } + + grouping prefix-ipv4-source-router-id { + description + "Grouping for the IPv4 source router ID of a prefix + advertisement."; + leaf ipv4-source-router-id { + type inet:ipv4-address; + description + "IPv4 source router ID address."; + } + } + + grouping prefix-ipv6-source-router-id { + description + "Grouping for the IPv6 source router ID of a prefix + advertisement."; + leaf ipv6-source-router-id { + type inet:ipv6-address; + description + "IPv6 source router ID address."; + } + } + + grouping prefix-attributes-extension { + description + "Prefix extended attributes as defined in RFC 7794."; + reference + "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability"; + uses prefix-reachability-attributes; + uses prefix-ipv4-source-router-id; + uses prefix-ipv6-source-router-id; + } + + grouping prefix-ipv4-std { + description + "Grouping for attributes of an IPv4 standard prefix + as defined in RFC 1195."; + reference + "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and + dual environments"; + leaf ip-prefix { + type inet:ipv4-address; + description + "IPv4 prefix address."; + } + leaf prefix-len { + type uint8; + description + "IPv4 prefix length (in bits)."; + } + leaf i-e { + type boolean; + description + "Internal or external (I/E) metric bit value. + Set to 'false' to indicate an internal metric."; + } + container default-metric { + leaf metric { + type std-metric; + description + "Default IS-IS metric for the IPv4 prefix."; + } + description + "IS-IS default metric container."; + } + container delay-metric { + leaf metric { + type std-metric; + description + "IS-IS delay metric for the IPv4 prefix."; + } + leaf supported { + type boolean; + default "false"; + description + "Indicates whether the IS-IS delay metric is supported."; + } + description + "IS-IS delay metric container."; + } + container expense-metric { + leaf metric { + type std-metric; + description + "IS-IS expense metric for the IPv4 prefix."; + } + leaf supported { + type boolean; + default "false"; + description + "Indicates whether the IS-IS expense metric is supported."; + } + description + "IS-IS expense metric container."; + } + container error-metric { + leaf metric { + type std-metric; + description + "This leaf describes the IS-IS error metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "Indicates whether the IS-IS error metric is supported."; + } + description + "IS-IS error metric container."; + } + } + + grouping prefix-ipv4-extended { + description + "Grouping for attributes of an IPv4 extended prefix + as defined in RFC 5305."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + leaf up-down { + type boolean; + description + "Value of the up/down bit. + Set to 'true' when the prefix has been advertised down + the hierarchy."; + } + leaf ip-prefix { + type inet:ipv4-address; + description + "IPv4 prefix address."; + } + leaf prefix-len { + type uint8; + description + "IPv4 prefix length (in bits)."; + } + leaf metric { + type wide-metric; + description + "IS-IS wide metric value."; + } + leaf-list tag { + type uint32; + description + "List of 32-bit tags associated with the IPv4 prefix."; + } + leaf-list tag64 { + type uint64; + description + "List of 64-bit tags associated with the IPv4 prefix."; + } + uses prefix-attributes-extension; + } + + grouping prefix-ipv6-extended { + description + "Grouping for attributes of an IPv6 prefix + as defined in RFC 5308."; + reference + "RFC 5308: Routing IPv6 with IS-IS"; + leaf up-down { + type boolean; + description + "Value of the up/down bit. + Set to 'true' when the prefix has been advertised down + the hierarchy."; + } + leaf ip-prefix { + type inet:ipv6-address; + description + "IPv6 prefix address."; + } + leaf prefix-len { + type uint8; + description + "IPv6 prefix length (in bits)."; + } + leaf metric { + type wide-metric; + description + "IS-IS wide metric value."; + } + leaf-list tag { + type uint32; + description + "List of 32-bit tags associated with the IPv6 prefix."; + } + leaf-list tag64 { + type uint64; + description + "List of 64-bit tags associated with the IPv6 prefix."; + } + uses prefix-attributes-extension; + } + + /* TLVs and sub-TLVs for neighbors */ + + grouping neighbor-link-attributes { + description + "Grouping for link attributes as defined + in RFC 5029."; + reference + "RFC 5029: Definition of an IS-IS Link Attribute Sub-TLV"; + leaf link-attributes-flags { + type uint16; + description + "Flags for the link attributes."; + } + } + + grouping neighbor-gmpls-extensions { + description + "Grouping for GMPLS attributes of a neighbor as defined + in RFC 5307."; + reference + "RFC 5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + leaf link-local-id { + type uint32; + description + "Local identifier of the link."; + } + leaf remote-local-id { + type uint32; + description + "Remote identifier of the link."; + } + leaf protection-capability { + type uint8; + description + "Describes the protection capabilities + of the link. This is the value of the + first octet of the sub-TLV type 20 value."; + } + container interface-switching-capability { + description + "Interface switching capabilities of the link."; + leaf switching-capability { + type uint8; + description + "Switching capability of the link."; + } + leaf encoding { + type uint8; + description + "Type of encoding of the LSP being used."; + } + container max-lsp-bandwidths { + description + "Per-priority maximum LSP bandwidths."; + list max-lsp-bandwidth { + leaf priority { + type uint8 { + range "0 .. 7"; + } + description + "Priority from 0 to 7."; + } + leaf bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Maximum LSP bandwidth."; + } + description + "List of maximum LSP bandwidths for different + priorities."; + } + } + container tdm-specific { + when '../switching-capability = 100'; + description + "Switching-capability-specific information applicable + when the switching type is Time-Division Multiplexing + (TDM)."; + leaf minimum-lsp-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Minimum LSP bandwidth."; + } + leaf indication { + type uint8; + description + "Indicates whether the interface supports Standard + or Arbitrary SONET/SDH (Synchronous Optical Network / + Synchronous Digital Hierarchy)."; + } + } + container psc-specific { + when "../switching-capability >= 1 and + ../switching-capability <= 4"; + description + "Switching-capability-specific information applicable + when the switching type is PSC1, PSC2, PSC3, or PSC4 + ('PSC' stands for 'Packet Switching Capability')."; + leaf minimum-lsp-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Minimum LSP bandwidth."; + } + leaf mtu { + type uint16; + units "bytes"; + description + "Interface MTU."; + } + } + } + } + + grouping neighbor-extended-te-extensions { + description + "Grouping for TE attributes of a neighbor as defined + in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + container unidirectional-link-delay { + description + "Container for the average delay + from the local neighbor to the remote neighbor."; + container flags { + leaf-list unidirectional-link-delay-subtlv-flags { + type identityref { + base unidirectional-link-delay-subtlv-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Unidirectional Link Delay sub-TLV flags."; + } + leaf value { + type uint32; + units "usec"; + description + "Delay value expressed in microseconds."; + } + } + container min-max-unidirectional-link-delay { + description + "Container for the minimum and maximum delay + from the local neighbor to the remote neighbor."; + container flags { + leaf-list min-max-unidirectional-link-delay-subtlv-flags { + type identityref { + base min-max-unidirectional-link-delay-subtlv-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Min/Max Unidirectional Link Delay sub-TLV flags."; + } + leaf min-value { + type uint32; + units "usec"; + description + "Minimum delay value expressed in microseconds."; + } + leaf max-value { + type uint32; + units "usec"; + description + "Maximum delay value expressed in microseconds."; + } + } + container unidirectional-link-delay-variation { + description + "Container for the average delay variation + from the local neighbor to the remote neighbor."; + leaf value { + type uint32; + units "usec"; + description + "Delay variation value expressed in microseconds."; + } + } + container unidirectional-link-loss { + description + "Container for packet loss from the local neighbor to the + remote neighbor."; + container flags { + leaf-list unidirectional-link-loss-subtlv-flags { + type identityref { + base unidirectional-link-loss-subtlv-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Unidirectional Link Loss sub-TLV flags."; + } + leaf value { + type uint32; + units "percent"; + description + "Link packet loss expressed as a percentage of + the total traffic sent over a configurable interval."; + } + } + container unidirectional-link-residual-bandwidth { + description + "Container for the residual bandwidth + from the local neighbor to the remote neighbor."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units "Bps"; + description + "Residual bandwidth."; + } + } + container unidirectional-link-available-bandwidth { + description + "Container for the available bandwidth + from the local neighbor to the remote neighbor."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units "Bps"; + description + "Available bandwidth."; + } + } + container unidirectional-link-utilized-bandwidth { + description + "Container for the utilized bandwidth + from the local neighbor to the remote neighbor."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units "Bps"; + description + "Utilized bandwidth."; + } + } + } + + grouping neighbor-te-extensions { + description + "Grouping for TE attributes of a neighbor as defined + in RFC 5305."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + leaf admin-group { + type uint32; + description + "Administrative Group / Resource Class/Color."; + } + container local-if-ipv4-addrs { + description + "All local interface IPv4 addresses."; + leaf-list local-if-ipv4-addr { + type inet:ipv4-address; + description + "List of local interface IPv4 addresses."; + } + } + container remote-if-ipv4-addrs { + description + "All remote interface IPv4 addresses."; + leaf-list remote-if-ipv4-addr { + type inet:ipv4-address; + description + "List of remote interface IPv4 addresses."; + } + } + leaf te-metric { + type uint32; + description + "TE metric."; + } + leaf max-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Maximum bandwidth."; + } + leaf max-reservable-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Maximum reservable bandwidth."; + } + container unreserved-bandwidths { + description + "All unreserved bandwidths."; + list unreserved-bandwidth { + leaf priority { + type uint8 { + range "0 .. 7"; + } + description + "Priority from 0 to 7."; + } + leaf unreserved-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Unreserved bandwidth."; + } + description + "List of unreserved bandwidths for different + priorities."; + } + } + } + + grouping neighbor-extended { + description + "Grouping for attributes of an IS-IS extended neighbor."; + leaf neighbor-id { + type extended-system-id; + description + "System ID of the extended neighbor."; + } + container instances { + description + "List of all adjacencies between the local + system and the neighbor system ID."; + list instance { + key "id"; + leaf id { + type uint32; + description + "Unique identifier of an instance of a + particular neighbor."; + } + leaf metric { + type wide-metric; + description + "IS-IS wide metric for the extended neighbor."; + } + uses neighbor-gmpls-extensions; + uses neighbor-te-extensions; + uses neighbor-extended-te-extensions; + uses neighbor-link-attributes; + uses unknown-tlvs; + description + "Instance of a particular adjacency."; + } + } + } + + grouping neighbor { + description + "IS-IS standard neighbor grouping."; + leaf neighbor-id { + type extended-system-id; + description + "IS-IS neighbor system ID."; + } + container instances { + description + "List of all adjacencies between the local + system and the neighbor system ID."; + list instance { + key "id"; + leaf id { + type uint32; + description + "Unique identifier of an instance of a + particular neighbor."; + } + leaf i-e { + type boolean; + description + "Internal or external (I/E) metric bit value. + Set to 'false' to indicate an internal metric."; + } + container default-metric { + leaf metric { + type std-metric; + description + "IS-IS default metric value."; + } + description + "IS-IS default metric container."; + } + container delay-metric { + leaf metric { + type std-metric; + description + "IS-IS delay metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "IS-IS delay metric supported."; + } + description + "IS-IS delay metric container."; + } + container expense-metric { + leaf metric { + type std-metric; + description + "IS-IS expense metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "IS-IS expense metric supported."; + } + description + "IS-IS expense metric container."; + } + container error-metric { + leaf metric { + type std-metric; + description + "IS-IS error metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "IS-IS error metric supported."; + } + description + "IS-IS error metric container."; + } + description + "Instance of a particular adjacency as defined in + ISO 10589."; + reference + "ISO 10589: Intermediate System to Intermediate System + intra-domain routeing information exchange protocol + for use in conjunction with the protocol for providing + the connectionless-mode network service (ISO 8473)"; + } + } + } + + /* Top-level TLVs */ + + grouping tlv132-ipv4-addresses { + leaf-list ipv4-addresses { + type inet:ipv4-address; + description + "List of IPv4 addresses of the IS-IS node. The IS-IS + reference is TLV 132."; + } + description + "Grouping for TLV 132."; + } + + grouping tlv232-ipv6-addresses { + leaf-list ipv6-addresses { + type inet:ipv6-address; + description + "List of IPv6 addresses of the IS-IS node. The IS-IS + reference is TLV 232."; + } + description + "Grouping for TLV 232."; + } + + grouping tlv134-ipv4-te-rid { + leaf ipv4-te-routerid { + type inet:ipv4-address; + description + "IPv4 Traffic Engineering router ID of the IS-IS node. + The IS-IS reference is TLV 134."; + } + description + "Grouping for TLV 134."; + } + + grouping tlv140-ipv6-te-rid { + leaf ipv6-te-routerid { + type inet:ipv6-address; + description + "IPv6 Traffic Engineering router ID of the IS-IS node. + The IS-IS reference is TLV 140."; + } + description + "Grouping for TLV 140."; + } + + grouping tlv129-protocols { + leaf-list protocol-supported { + type uint8; + description + "List of supported protocols of the IS-IS node. + The IS-IS reference is TLV 129."; + } + description + "Grouping for TLV 129."; + } + + grouping tlv137-hostname { + leaf dynamic-hostname { + type string; + description + "Hostname of the IS-IS node. The IS-IS reference + is TLV 137."; + } + description + "Grouping for TLV 137."; + } + + grouping tlv10-authentication { + container authentication { + leaf authentication-type { + type identityref { + base key-chain:crypto-algorithm; + } + description + "Authentication type to be used with an IS-IS node."; + } + leaf authentication-key { + type string; + description + "Authentication key to be used. For security reasons, + the authentication key MUST NOT be presented in + a cleartext format in response to any request + (e.g., via get or get-config)."; + } + description + "IS-IS node authentication information container. The + IS-IS reference is TLV 10."; + } + description + "Grouping for TLV 10."; + } + + grouping tlv229-mt { + container mt-entries { + list topology { + description + "List of topologies supported."; + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "Multi-Topology (MT) identifier of the topology."; + } + container attributes { + leaf-list flags { + type identityref { + base tlv229-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "TLV 229 flags."; + } + } + description + "IS-IS node topology information container. The + IS-IS reference is TLV 229."; + } + description + "Grouping for TLV 229."; + } + + grouping tlv242-router-capabilities { + container router-capabilities { + list router-capability { + container flags { + leaf-list router-capability-flags { + type identityref { + base router-capability-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Router Capability flags."; + } + container node-tags { + if-feature "node-tag"; + list node-tag { + leaf tag { + type uint32; + description + "Node tag value."; + } + description + "List of tags."; + } + description + "Container for node administrative tags."; + } + uses unknown-tlvs; + description + "IS-IS node capabilities. This list element may + be extended with detailed information. The IS-IS + reference is TLV 242."; + } + description + "List of Router Capability TLVs."; + } + description + "Grouping for TLV 242."; + } + + grouping tlv138-srlg { + description + "Grouping for TLV 138."; + container links-srlgs { + list links { + leaf neighbor-id { + type extended-system-id; + description + "System ID of the extended neighbor."; + } + leaf flags { + type uint8; + description + "Flags associated with the link."; + } + leaf link-local-id { + type union { + type inet:ip-address; + type uint32; + } + description + "Local identifier of the link. + It could be an IPv4 address or a local identifier."; + } + leaf link-remote-id { + type union { + type inet:ip-address; + type uint32; + } + description + "Remote identifier of the link. + It could be an IPv4 address or a remotely learned + identifier."; + } + container srlgs { + description + "List of SRLGs."; + leaf-list srlg { + type uint32; + description + "SRLG value of the link."; + } + } + description + "SRLG attribute of a link."; + } + description + "List of links with SRLGs."; + } + } + + /* Grouping for LSDB descriptions */ + + grouping lsp-entry { + description + "IS-IS LSP database entry grouping."; + leaf decoded-completed { + type boolean; + description + "The IS-IS LSP body has been fully decoded."; + } + leaf raw-data { + type yang:hex-string; + description + "The hexadecimal representation of the complete LSP + as received or originated, in network byte order."; + } + leaf lsp-id { + type lsp-id; + description + "LSP ID of the LSP."; + } + leaf checksum { + type uint16; + description + "LSP checksum."; + } + leaf remaining-lifetime { + type uint16; + units "seconds"; + description + "Remaining lifetime (in seconds) until LSP expiration."; + } + leaf sequence { + type uint32; + description + "This leaf describes the sequence number of the LSP."; + } + container attributes { + leaf-list lsp-flags { + type identityref { + base lsp-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "LSP attributes."; + } + uses tlv132-ipv4-addresses; + uses tlv232-ipv6-addresses; + uses tlv134-ipv4-te-rid; + uses tlv140-ipv6-te-rid; + uses tlv129-protocols; + uses tlv137-hostname; + uses tlv10-authentication; + uses tlv229-mt; + uses tlv242-router-capabilities; + uses tlv138-srlg; + uses unknown-tlvs; + container is-neighbor { + list neighbor { + key "neighbor-id"; + uses neighbor; + description + "List of neighbors."; + } + description + "Standard IS neighbors container. The IS-IS reference is + TLV 2."; + } + container extended-is-neighbor { + list neighbor { + key "neighbor-id"; + uses neighbor-extended; + description + "List of extended IS neighbors."; + } + description + "Standard IS extended neighbors container. The IS-IS + reference is TLV 22."; + } + container ipv4-internal-reachability { + list prefixes { + uses prefix-ipv4-std; + description + "List of prefixes."; + } + description + "IPv4 internal reachability information container. + The IS-IS reference is TLV 128."; + } + container ipv4-external-reachability { + list prefixes { + uses prefix-ipv4-std; + description + "List of prefixes."; + } + description + "IPv4 external reachability information container. The + IS-IS reference is TLV 130."; + } + container extended-ipv4-reachability { + list prefixes { + uses prefix-ipv4-extended; + uses unknown-tlvs; + description + "List of prefixes."; + } + description + "IPv4 extended reachability information container. The + IS-IS reference is TLV 135."; + } + container mt-is-neighbor { + list neighbor { + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "Multi-Topology (MT) identifier."; + } + uses neighbor-extended; + description + "List of neighbors."; + } + description + "IS-IS MT neighbor container. The IS-IS reference is + TLV 223."; + } + container mt-extended-ipv4-reachability { + list prefixes { + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "MT identifier."; + } + uses prefix-ipv4-extended; + uses unknown-tlvs; + description + "List of extended prefixes."; + } + description + "IPv4 MT extended reachability information container. + The IS-IS reference is TLV 235."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + container mt-ipv6-reachability { + list prefixes { + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "MT identifier."; + } + uses prefix-ipv6-extended; + uses unknown-tlvs; + description + "List of IPv6 extended prefixes."; + } + description + "IPv6 MT extended reachability information container. + The IS-IS reference is TLV 237."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + container ipv6-reachability { + list prefixes { + uses prefix-ipv6-extended; + uses unknown-tlvs; + description + "List of IPv6 prefixes."; + } + description + "IPv6 reachability information container. The IS-IS + reference is TLV 236."; + } + } + + grouping lsdb { + description + "Link State Database (LSDB) grouping."; + container database { + config false; + list levels { + key "level"; + leaf level { + type level-number; + description + "LSDB level number (1 or 2)."; + } + list lsp { + key "lsp-id"; + uses lsp-entry; + description + "List of LSPs in the LSDB."; + } + description + "List of LSPs for the LSDB-level container."; + } + description + "IS-IS LSDB container."; + } + } + + /* Augmentations */ + + augment "/rt:routing/" + + "rt:ribs/rt:rib/rt:routes/rt:route" { + when "derived-from-or-self(rt:source-protocol, 'isis:isis')" { + description + "IS-IS-specific route attributes."; + } + uses route-content; + description + "This augments the route object in the Routing Information + Base (RIB) with IS-IS-specific attributes."; + } + + augment "/if:interfaces/if:interface" { + leaf clns-mtu { + if-feature "osi-interface"; + type uint16; + description + "Connectionless-mode Network Service (CLNS) MTU of the + interface."; + } + description + "ISO-specific interface parameters."; + } + + augment "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol" { + when "derived-from-or-self(rt:type, 'isis:isis')" { + description + "This augmentation is only valid when the routing protocol + instance type is 'isis'."; + } + description + "This augments a routing protocol instance with IS-IS-specific + parameters."; + container isis { + must 'count(area-address) > 0' { + error-message "At least one area address must be " + + "configured."; + description + "Enforces the configuration of at least one area."; + } + uses instance-config; + uses instance-state; + container topologies { + if-feature "multi-topology"; + list topology { + key "name"; + leaf enabled { + type boolean; + description + "Enables the topology configuration."; + } + leaf name { + type leafref { + path "../../../../../../rt:ribs/rt:rib/rt:name"; + } + description + "RIB corresponding to the topology."; + } + uses multi-topology-config; + description + "List of topologies."; + } + description + "MT container."; + } + container interfaces { + list interface { + key "name"; + leaf name { + type if:interface-ref; + description + "Reference to the interface within + the routing instance."; + } + uses interface-config; + uses interface-state; + container topologies { + if-feature "multi-topology"; + list topology { + key "name"; + leaf name { + type leafref { + path "../../../../../../../../" + + "rt:ribs/rt:rib/rt:name"; + } + description + "RIB corresponding to the topology."; + } + uses multi-topology-interface-config; + description + "List of interface topologies."; + } + description + "MT container."; + } + description + "List of IS-IS interfaces."; + } + description + "Configuration container specific to IS-IS interfaces."; + } + description + "IS-IS configuration/state top-level container."; + } + } + + /* RPC methods */ + + rpc clear-adjacency { + description + "This RPC request clears a particular set of IS-IS + adjacencies. If the operation fails for an internal + reason, then the 'error-tag' and 'error-app-tag' should be + set indicating the reason for the failure."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF)"; + input { + leaf routing-protocol-instance-name { + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } + mandatory true; + description + "Name of the IS-IS protocol instance whose IS-IS + adjacency is being cleared. + + If the corresponding IS-IS instance doesn't exist, + then the operation will fail with an 'error-tag' of + 'data-missing' and an 'error-app-tag' of + 'routing-protocol-instance-not-found'."; + } + leaf level { + type level; + description + "IS-IS level of the adjacency to be cleared. If the + IS-IS level is 'level-all', level-1 and level-2 + adjacencies would both be cleared. + + If the value provided is different from the value + authorized in the enum type, then the operation + SHALL fail with an 'error-tag' of 'data-missing' and + an 'error-app-tag' of 'bad-isis-level'."; + } + leaf interface { + type if:interface-ref; + description + "IS-IS interface name. + + If the corresponding IS-IS interface doesn't exist, + then the operation SHALL fail with an 'error-tag' of + 'data-missing' and an 'error-app-tag' of + 'isis-interface-not-found'."; + } + } + } + + rpc clear-database { + description + "This RPC request clears a particular IS-IS database. + Additionally, all neighbor adjacencies will be forced to + the DOWN state and self-originated LSPs will be + reoriginated. If the operation fails for an IS-IS + internal reason, then the 'error-tag' and 'error-app-tag' + should be set indicating the reason for the failure."; + input { + leaf routing-protocol-instance-name { + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } + mandatory true; + description + "Name of the IS-IS protocol instance whose IS-IS + database or databases are being cleared. + + If the corresponding IS-IS instance doesn't exist, + then the operation will fail with an 'error-tag' of + 'data-missing' and an 'error-app-tag' of + 'routing-protocol-instance-not-found'."; + } + leaf level { + type level; + description + "IS-IS level of the adjacency to be cleared. If the + IS-IS level is 'level-all', the databases for both + level 1 and level 2 would be cleared. + + If the value provided is different from the value + authorized in the enum type, then the operation + SHALL fail with an 'error-tag' of 'data-missing' and + an 'error-app-tag' of 'bad-isis-level'."; + } + } + } + + /* Notifications */ + + notification database-overload { + uses notification-instance-hdr; + leaf overload { + type enumeration { + enum off { + description + "Indicates that the IS-IS instance has left the + overload state."; + } + enum on { + description + "Indicates that the IS-IS instance has entered the + overload state."; + } + } + description + "New overload state of the IS-IS instance."; + } + description + "This notification is sent when an IS-IS instance + overload state changes."; + } + + notification lsp-too-large { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf pdu-size { + type uint32; + description + "Size of the LSP PDU."; + } + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when an attempt to propagate + an LSP that is larger than the dataLinkBlockSize (ISO 10589) + for the circuit occurs. The generation of the notification + must be throttled with at least 5 seconds between successive + notifications."; + reference + "ISO 10589: Intermediate System to Intermediate System + intra-domain routeing information exchange protocol + for use in conjunction with the protocol for providing + the connectionless-mode network service (ISO 8473)"; + } + + notification if-state-change { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf state { + type if-state-type; + description + "Interface state."; + } + description + "This notification is sent when an interface + state change is detected."; + } + + notification corrupted-lsp-detected { + uses notification-instance-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when an LSP that was stored in + memory has become corrupted."; + } + + notification attempt-to-exceed-max-sequence { + uses notification-instance-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when the system + wraps the 32-bit sequence counter of an LSP."; + } + + notification id-len-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf pdu-field-len { + type uint8; + description + "Value for the system ID length in the received PDU."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when a PDU with a different value + for the system ID length is received. The generation of the + notification must be throttled with at least 5 seconds + between successive notifications."; + } + + notification max-area-addresses-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf max-area-addresses { + type uint8; + description + "Received number of supported areas."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when a PDU with a different value + for the Maximum Area Addresses has been received. The + generation of the notification must be throttled with + at least 5 seconds between successive notifications."; + } + + notification own-lsp-purge { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when the system receives + a PDU with its own system ID and zero age."; + } + + notification sequence-number-skipped { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when the system receives a + PDU with its own system ID and different contents. The + system has to originate the LSP with a higher sequence + number."; + } + + notification authentication-type-failure { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives a + PDU with the wrong authentication type field. + The generation of the notification must be throttled + with at least 5 seconds between successive notifications."; + } + + notification authentication-failure { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives + a PDU on which authentication fails. The generation of the + notification must be throttled with at least 5 seconds + between successive notifications."; + } + + notification version-skew { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf protocol-version { + type uint8; + description + "Protocol version received in the PDU."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives a + PDU with a different protocol version number. + The generation of the notification must be throttled + with at least 5 seconds between successive notifications."; + } + + notification area-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives a + Hello PDU from an IS that does not share any area + address. The generation of the notification must be + throttled with at least 5 seconds between successive + notifications."; + } + + notification rejected-adjacency { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + leaf reason { + type string { + length "0..255"; + } + description + "The system may provide a reason to reject the + adjacency. If the reason is not available, + the reason string will not be returned. + The expected format is a single line of text."; + } + description + "This notification is sent when the system receives a + Hello PDU from an IS but does not establish an adjacency + for some reason. The generation of the notification + must be throttled with at least 5 seconds between + successive notifications."; + } + + notification protocols-supported-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + leaf-list protocols { + type uint8; + description + "List of protocols supported by the remote system."; + } + description + "This notification is sent when the system receives a + non-pseudonode LSP that has no matching protocols + supported. The generation of the notification must be + throttled with at least 5 seconds between successive + notifications."; + } + + notification lsp-error-detected { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + leaf error-offset { + type uint32; + description + "If the problem is a malformed TLV, the error offset + points to the start of the TLV. If the problem is with + the LSP header, the error offset points to the errant + byte."; + } + leaf tlv-type { + type uint8; + description + "If the problem is a malformed TLV, the TLV type is set + to the type value of the suspicious TLV. Otherwise, + this leaf is not present."; + } + description + "This notification is sent when the system receives an + LSP with a parse error. The generation of the notification + must be throttled with at least 5 seconds between + successive notifications."; + } + + notification adjacency-state-change { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf neighbor { + type string { + length "1..255"; + } + description + "Name of the neighbor. It corresponds to the hostname + associated with the system ID of the neighbor in the + mapping database (RFC 5301). If the name of the neighbor + is not available, it is not returned."; + reference + "RFC 5301: Dynamic Hostname Exchange Mechanism for IS-IS"; + } + leaf neighbor-system-id { + type system-id; + description + "Neighbor system ID."; + } + leaf state { + type adj-state-type; + description + "New state of the IS-IS adjacency."; + } + leaf reason { + type string { + length "1..255"; + } + description + "If the adjacency is going to the 'down' state, this leaf + provides a reason for the adjacency going down. The reason + is provided as text. If the adjacency is going to the 'up' + state, no reason is provided. The expected format is a + single line of text."; + } + description + "This notification is sent when an IS-IS adjacency + moves to the 'up' state or the 'down' state."; + } + + notification lsp-received { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + leaf sequence { + type uint32; + description + "Sequence number of the received LSP."; + } + leaf received-timestamp { + type yang:timestamp; + description + "Timestamp when the LSP was received."; + } + leaf neighbor-system-id { + type system-id; + description + "Neighbor system ID of the LSP sender."; + } + description + "This notification is sent when an LSP is received. + The generation of the notification must be throttled with + at least 5 seconds between successive notifications."; + } + + notification lsp-generation { + uses notification-instance-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + leaf sequence { + type uint32; + description + "Sequence number of the received LSP."; + } + leaf send-timestamp { + type yang:timestamp; + description + "Timestamp when the LSP was regenerated."; + } + description + "This notification is sent when an LSP is regenerated. + The generation of the notification must be throttled with + at least 5 seconds between successive notifications."; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang new file mode 100644 index 000000000..445d1994a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang @@ -0,0 +1,382 @@ +module ietf-key-chain { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain"; + prefix key-chain; + + import ietf-yang-types { + prefix yang; + } + import ietf-netconf-acm { + prefix nacm; + } + + organization + "IETF RTGWG - Routing Area Working Group"; + contact + "WG Web: + WG List: + + Editor: Acee Lindem + + Yingzhen Qu + + Derek Yeung + + Ing-Wher Chen + + Jeffrey Zhang + "; + + description + "This YANG module defines the generic configuration + data for key chains. It is intended that the module + will be extended by vendors to define vendor-specific + key chain configuration parameters. + + Copyright (c) 2017 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8177; + see the RFC itself for full legal notices."; + + reference "RFC 8177"; + + revision 2017-06-15 { + description + "Initial RFC Revision"; + reference "RFC 8177: YANG Data Model for Key Chains"; + } + + feature hex-key-string { + description + "Support hexadecimal key string."; + } + + feature accept-tolerance { + description + "Support the tolerance or acceptance limit."; + } + + feature independent-send-accept-lifetime { + description + "Support for independent send and accept key lifetimes."; + } + + feature crypto-hmac-sha-1-12 { + description + "Support for TCP HMAC-SHA-1 12-byte digest hack."; + } + + feature cleartext { + description + "Support for cleartext algorithm. Usage is + NOT RECOMMENDED."; + } + + feature aes-cmac-prf-128 { + description + "Support for AES Cipher-based Message Authentication + Code Pseudorandom Function."; + } + + feature aes-key-wrap { + description + "Support for Advanced Encryption Standard (AES) Key Wrap."; + } + + feature replay-protection-only { + description + "Provide replay protection without any authentication + as required by protocols such as Bidirectional + Forwarding Detection (BFD)."; + } + identity crypto-algorithm { + description + "Base identity of cryptographic algorithm options."; + } + + identity hmac-sha-1-12 { + base crypto-algorithm; + if-feature "crypto-hmac-sha-1-12"; + description + "The HMAC-SHA1-12 algorithm."; + } + + identity aes-cmac-prf-128 { + base crypto-algorithm; + if-feature "aes-cmac-prf-128"; + description + "The AES-CMAC-PRF-128 algorithm - required by + RFC 5926 for TCP-AO key derivation functions."; + } + + identity md5 { + base crypto-algorithm; + description + "The MD5 algorithm."; + } + + identity sha-1 { + base crypto-algorithm; + description + "The SHA-1 algorithm."; + } + + identity hmac-sha-1 { + base crypto-algorithm; + description + "HMAC-SHA-1 authentication algorithm."; + } + + identity hmac-sha-256 { + base crypto-algorithm; + description + "HMAC-SHA-256 authentication algorithm."; + } + + identity hmac-sha-384 { + base crypto-algorithm; + description + "HMAC-SHA-384 authentication algorithm."; + } + + identity hmac-sha-512 { + base crypto-algorithm; + description + "HMAC-SHA-512 authentication algorithm."; + } + + identity cleartext { + base crypto-algorithm; + if-feature "cleartext"; + description + "cleartext."; + } + + identity replay-protection-only { + base crypto-algorithm; + if-feature "replay-protection-only"; + description + "Provide replay protection without any authentication as + required by protocols such as Bidirectional Forwarding + Detection (BFD)."; + } + + typedef key-chain-ref { + type leafref { + path + "/key-chain:key-chains/key-chain:key-chain/key-chain:name"; + } + description + "This type is used by data models that need to reference + configured key chains."; + } + + grouping lifetime { + description + "Key lifetime specification."; + choice lifetime { + default "always"; + description + "Options for specifying key accept or send lifetimes"; + case always { + leaf always { + type empty; + description + "Indicates key lifetime is always valid."; + } + } + case start-end-time { + leaf start-date-time { + type yang:date-and-time; + description + "Start time."; + } + choice end-time { + default "infinite"; + description + "End-time setting."; + case infinite { + leaf no-end-time { + type empty; + description + "Indicates key lifetime end-time is infinite."; + } + } + case duration { + leaf duration { + type uint32 { + range "1..2147483646"; + } + units "seconds"; + description + "Key lifetime duration, in seconds"; + } + } + case end-date-time { + leaf end-date-time { + type yang:date-and-time; + description + "End time."; + } + } + } + } + } + } + + container key-chains { + description + "All configured key-chains on the device."; + list key-chain { + key "name"; + description + "List of key-chains."; + leaf name { + type string; + description + "Name of the key-chain."; + } + leaf description { + type string; + description + "A description of the key-chain"; + } + container accept-tolerance { + if-feature "accept-tolerance"; + description + "Tolerance for key lifetime acceptance (seconds)."; + leaf duration { + type uint32; + units "seconds"; + default "0"; + description + "Tolerance range, in seconds."; + } + } + leaf last-modified-timestamp { + type yang:date-and-time; + config false; + description + "Timestamp of the most recent update to the key-chain"; + } + list key { + key "key-id"; + description + "Single key in key chain."; + leaf key-id { + type uint64; + description + "Numeric value uniquely identifying the key"; + } + container lifetime { + description + "Specify a key's lifetime."; + choice lifetime { + description + "Options for specification of send and accept + lifetimes."; + case send-and-accept-lifetime { + description + "Send and accept key have the same lifetime."; + container send-accept-lifetime { + description + "Single lifetime specification for both + send and accept lifetimes."; + uses lifetime; + } + } + case independent-send-accept-lifetime { + if-feature "independent-send-accept-lifetime"; + description + "Independent send and accept key lifetimes."; + container send-lifetime { + description + "Separate lifetime specification for send + lifetime."; + uses lifetime; + } + container accept-lifetime { + description + "Separate lifetime specification for accept + lifetime."; + uses lifetime; + } + } + } + } + leaf crypto-algorithm { + type identityref { + base crypto-algorithm; + } + mandatory true; + description + "Cryptographic algorithm associated with key."; + } + container key-string { + description + "The key string."; + nacm:default-deny-all; + choice key-string-style { + description + "Key string styles"; + case keystring { + leaf keystring { + type string; + description + "Key string in ASCII format."; + } + } + case hexadecimal { + if-feature "hex-key-string"; + leaf hexadecimal-string { + type yang:hex-string; + description + "Key in hexadecimal string format. When compared + to ASCII, specification in hexadecimal affords + greater key entropy with the same number of + internal key-string octets. Additionally, it + discourages usage of well-known words or + numbers."; + } + } + } + } + leaf send-lifetime-active { + type boolean; + config false; + description + "Indicates if the send lifetime of the + key-chain key is currently active."; + } + leaf accept-lifetime-active { + type boolean; + config false; + description + "Indicates if the accept lifetime of the + key-chain key is currently active."; + } + } + } + container aes-key-wrap { + if-feature "aes-key-wrap"; + description + "AES Key Wrap encryption for key-chain key-strings. The + encrypted key-strings are encoded as hexadecimal key + strings using the hex-key-string leaf."; + leaf enable { + type boolean; + default "false"; + description + "Enable AES Key Wrap encryption."; + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang new file mode 100644 index 000000000..2bf5402a3 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang @@ -0,0 +1,208 @@ +module ietf-l3-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-l3-te-topology"; + prefix "l3tet"; + + import ietf-network { + prefix "nw"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix "nt"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-l3-unicast-topology { + prefix "l3t"; + reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; + } + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + + contact + "WG Web: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez De Dios + "; + + description + "YANG data model for representing and manipulating Layer 3 TE + Topologies. + + Copyright (c) 2024 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2024-06-08 { + description + "Initial revision"; + reference "RFC XXXX: YANG Data Model for Layer 3 TE Topologies"; + } + + grouping l3-te-topology-type { + description + "Identifies the L3 TE topology type."; + container l3-te { + presence + "Indicates L3 TE Topology"; + description + "Its presence identifies the L3 TE topology type."; + } + } + + augment "/nw:networks/nw:network/nw:network-types/" + + "l3t:l3-unicast-topology" { + description + "Defines the L3 TE topology type."; + uses l3-te-topology-type; + } + + augment "/nw:networks/nw:network/l3t:l3-topology-attributes" { + when "../nw:network-types/l3t:l3-unicast-topology/l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment topology configuration"; + uses l3-te-topology-attributes; + } + + augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" { + when "../../nw:network-types/l3t:l3-unicast-topology/" + + "l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment node configuration"; + uses l3-te-node-attributes; + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "l3t:l3-termination-point-attributes" { + when "../../../nw:network-types/l3t:l3-unicast-topology/" + + "l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment termination point configuration"; + uses l3-te-tp-attributes; + } + + augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" { + when "../../nw:network-types/l3t:l3-unicast-topology/" + + "l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment link configuration"; + uses l3-te-link-attributes; + } + + grouping l3-te-topology-attributes { + description + "L3 TE topology scope attributes"; + container l3-te-topology-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE topology references"; + uses nw:network-ref; + } // l3-te-topology-attributes + } // l3-te-topology-attributes + + grouping l3-te-node-attributes { + description + "L3 TE node scope attributes"; + container l3-te-node-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE node references"; + uses nw:node-ref; + } // l3-te + } // l3-te-node-attributes + + grouping l3-te-tp-attributes { + description + "L3 TE termination point scope attributes"; + container l3-te-tp-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE termination point references"; + uses nt:tp-ref; + } // l3-te + } // l3-te-tp-attributes + + grouping l3-te-link-attributes { + description + "L3 TE link scope attributes"; + container l3-te-link-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE link references"; + uses nt:link-ref; + } + } // l3-te-link-attributes +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang new file mode 100644 index 000000000..39fcebd76 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang @@ -0,0 +1,359 @@ +module ietf-l3-unicast-topology { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; + prefix "l3t"; + import ietf-network { + prefix "nw"; + } + import ietf-network-topology { + prefix "nt"; + } + import ietf-inet-types { + prefix "inet"; + } + import ietf-routing-types { + prefix "rt-types"; + } + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + contact + "WG Web: + WG List: + Editor: Alexander Clemm + + Editor: Jan Medved + + Editor: Robert Varga + + Editor: Xufeng Liu + + Editor: Nitin Bahadur + + Editor: Hariharan Ananthakrishnan + "; + description + "This module defines a model for Layer 3 Unicast + topologies. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of + RFC 8346; see the RFC itself for full legal notices."; + revision "2018-02-26" { + description + "Initial revision."; + reference + "RFC 8346: A YANG Data Model for Layer 3 Topologies"; + } + + identity flag-identity { + description "Base type for flags"; + } + + typedef l3-event-type { + type enumeration { + enum "add" { + description + "A Layer 3 node, link, prefix, or termination point has + been added"; + } + enum "remove" { + description + "A Layer 3 node, link, prefix, or termination point has + been removed"; + } + enum "update" { + description + "A Layer 3 node, link, prefix, or termination point has + been updated"; + } + } + description "Layer 3 event type for notifications"; + } + + typedef prefix-flag-type { + type identityref { + base "flag-identity"; + } + description "Prefix flag attributes"; + } + + typedef node-flag-type { + type identityref { + base "flag-identity"; + } + description "Node flag attributes"; + } + + typedef link-flag-type { + type identityref { + base "flag-identity"; + } + description "Link flag attributes"; + } + + typedef l3-flag-type { + type identityref { + base "flag-identity"; + } + description "L3 flag attributes"; + } + + grouping l3-prefix-attributes { + description + "L3 prefix attributes"; + leaf prefix { + type inet:ip-prefix; + description + "IP prefix value"; + } + leaf metric { + type uint32; + description + "Prefix metric"; + } + leaf-list flag { + type prefix-flag-type; + description + "Prefix flags"; + } + } + grouping l3-unicast-topology-type { + description "Identifies the topology type to be L3 Unicast."; + container l3-unicast-topology { + presence "indicates L3 Unicast topology"; + description + "The presence of the container node indicates L3 Unicast + topology"; + } + } + grouping l3-topology-attributes { + description "Topology scope attributes"; + container l3-topology-attributes { + description "Contains topology attributes"; + leaf name { + type string; + description + "Name of the topology"; + } + leaf-list flag { + type l3-flag-type; + description + "Topology flags"; + } + } + } + grouping l3-node-attributes { + description "L3 node scope attributes"; + container l3-node-attributes { + description + "Contains node attributes"; + leaf name { + type inet:domain-name; + description + "Node name"; + } + leaf-list flag { + type node-flag-type; + description + "Node flags"; + } + leaf-list router-id { + type rt-types:router-id; + description + "Router-id for the node"; + } + list prefix { + key "prefix"; + description + "A list of prefixes along with their attributes"; + uses l3-prefix-attributes; + } + } + } + grouping l3-link-attributes { + description + "L3 link scope attributes"; + container l3-link-attributes { + description + "Contains link attributes"; + leaf name { + type string; + description + "Link Name"; + } + leaf-list flag { + type link-flag-type; + description + "Link flags"; + } + leaf metric1 { + type uint64; + description + "Link Metric 1"; + } + leaf metric2 { + type uint64; + description + "Link Metric 2"; + } + } + } + grouping l3-termination-point-attributes { + description "L3 termination point scope attributes"; + container l3-termination-point-attributes { + description + "Contains termination point attributes"; + choice termination-point-type { + description + "Indicates the termination point type"; + case ip { + leaf-list ip-address { + type inet:ip-address; + description + "IPv4 or IPv6 address."; + } + } + case unnumbered { + leaf unnumbered-id { + type uint32; + description + "Unnumbered interface identifier. + The identifier will correspond to the ifIndex value + of the interface, i.e., the ifIndex value of the + ifEntry that represents the interface in + implementations where the Interfaces Group MIB + (RFC 2863) is supported."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + } + case interface-name { + leaf interface-name { + type string; + description + "Name of the interface. The name can (but does not + have to) correspond to an interface reference of a + containing node's interface, i.e., the path name of a + corresponding interface data node on the containing + node reminiscent of data type interface-ref defined + in RFC 8343. It should be noted that data type + interface-ref of RFC 8343 cannot be used directly, + + as this data type is used to reference an interface + in a datastore of a single node in the network, not + to uniquely reference interfaces across a network."; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + } + } + } + } + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces new network type for L3 Unicast topology"; + uses l3-unicast-topology-type; + } + augment "/nw:networks/nw:network" { + when "nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast for the network as a whole"; + uses l3-topology-attributes; + } + augment "/nw:networks/nw:network/nw:node" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast node-level attributes "; + uses l3-node-attributes; + } + augment "/nw:networks/nw:network/nt:link" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "Augments topology link attributes"; + uses l3-link-attributes; + } + augment "/nw:networks/nw:network/nw:node/" + +"nt:termination-point" { + when "../../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description "Augments topology termination point configuration"; + uses l3-termination-point-attributes; + } + notification l3-node-event { + description + "Notification event for L3 node"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + uses l3-node-attributes; + } + notification l3-link-event { + description + "Notification event for L3 link"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:link-ref; + uses l3-unicast-topology-type; + uses l3-link-attributes; + } + notification l3-prefix-event { + description + "Notification event for L3 prefix"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + container prefix { + description + "Contains L3 prefix attributes"; + uses l3-prefix-attributes; + } + } + notification termination-point-event { + description + "Notification event for L3 termination point"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:tp-ref; + uses l3-unicast-topology-type; + uses l3-termination-point-attributes; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang new file mode 100644 index 000000000..188336931 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang @@ -0,0 +1,1414 @@ + module ietf-layer1-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-layer1-types"; + prefix "l1-types"; + + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + "; + + description + "This module defines Layer 1 types. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2022 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + + + + + they appear in all capitals, as shown here."; + + revision "2022-10-14" { + description + "Initial Version"; + reference + "RFC XXXX: A YANG Data Model for Layer 1 Types"; + // RFC Editor: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Identities + */ + + identity tributary-slot-granularity { + description + "Tributary Slot Granularity (TSG)"; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity tsg-1.25G { + base tributary-slot-granularity; + description + "1.25G tributary slot granularity"; + } + + identity tsg-2.5G { + base tributary-slot-granularity; + description + "2.5G tributary slot granularity"; + } + + identity tsg-5G { + base tributary-slot-granularity; + description + "5G tributary slot granularity"; + } + + identity odu-type { + description + "Base identity from which specific Optical Data Unit (ODU) + type is derived."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU0 { + base odu-type; + description + "ODU0 type (1.24Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU1 { + base odu-type; + description + "ODU1 type (2.49Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU2 { + base odu-type; + description + "ODU2 type (10.03Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU2e { + base odu-type; + description + "ODU2e type (10.39Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU3 { + base odu-type; + description + "ODU3 type (40.31Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU4 { + base odu-type; + description + "ODU4 type (104.79Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODUflex { + base odu-type; + description + "ODUflex type (flexible bit rate, not resizable). + + It could be used for any type of ODUflex, including + ODUflex(CBR), ODUflex(GFP), ODUflex(GFP,n,k), ODUflex(IMP,s), + ODUflex(IMP) and ODUflex(FlexE-aware)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODUflex-resizable { + base odu-type; + description + "ODUflex protocol (flexible bit rate, resizable). + + + + + It could be used only for ODUflex(GFP,n,k)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity protocol { + description + "Base identity from which specific protocol is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity Ethernet { + base protocol; + description + "Ethernet protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity Fibre-Channel { + base protocol; + description + "Fibre-Channel (FC) protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SDH { + base protocol; + description + "SDH protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SONET { + base protocol; + description + "SONET protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + + + + identity client-signal { + description + "Base identity from which specific Constant Bit Rate (CBR) + client signal is derived"; + } + + identity coding-func { + description + "Base identity from which specific coding function + is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-1Gb { + base client-signal; + description + "Client signal type of 1GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-10Gb-LAN { + base client-signal; + description + "Client signal type of ETH-10Gb-LAN (10.3 Gb/s)"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + IEEE 802.3-2018, Clause 49: IEEE Standard for Ethernet"; + } + + identity ETH-10Gb-WAN { + base client-signal; + description + "Client signal type of ETH-10Gb-WAN (9.95 Gb/s)"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + IEEE 802.3-2018, Clause 50: IEEE Standard for Ethernet"; + } + + identity ETH-40Gb { + base client-signal; + description + "Client signal type of 40GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-100Gb { + base client-signal; + description + "Client signal type of 100GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity STM-1 { + base client-signal; + base coding-func; + description + "Client signal type of STM-1; + STM-1 G.707 (N=1) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-4 { + base client-signal; + + + + + base coding-func; + description + "Client signal type of STM-4; + STM-4 G.707 (N=4) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-16 { + base client-signal; + base coding-func; + description + "Client signal type of STM-16; + STM-16 G.707 (N=16) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-64 { + base client-signal; + base coding-func; + description + "Client signal type of STM-64; + STM-64 G.707 (N=64) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-256 { + base client-signal; + + + + + base coding-func; + description + "Client signal type of STM-256; + STM-256 G.707 (N=256) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-3 { + base client-signal; + base coding-func; + description + "Client signal type of OC3; + OC-3 GR-253-CORE (N=3) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-12 { + base client-signal; + base coding-func; + description + "Client signal type of OC12; + OC-12 GR-253-CORE (N=12) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-48 { + base client-signal; + base coding-func; + description + "Client signal type of OC48; + OC-48 GR-253-CORE (N=48) coding function."; + + + + + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-192 { + base client-signal; + base coding-func; + description + "Client signal type of OC192; + OC-192 GR-253-CORE (N=192) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-768 { + base client-signal; + base coding-func; + description + "Client signal type of OC768; + OC-768 GR-253-CORE (N=768) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-100 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-100; + FC-100 FC-FS-2 (1.0625 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-200; + FC-200 FC-FS-2 (2.125 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-400 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-400; + FC-400 FC-FS-2 (4.250 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-800 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-800; + FC-800 FC-FS-2 (8.500 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-1200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-1200; + FC-1200 FC-10GFC (10.51875 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-1600 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-1600; + FC-1600 FC-FS-3 (14.025 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-3200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-3200; + FC-3200 FC-FS-4 (28.05 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FICON-4G { + base client-signal; + description + "Client signal type of Fibre Connection 4G"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity FICON-8G { + base client-signal; + description + "Client signal type of Fibre Connection 8G"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-1000X { + base coding-func; + description + "1000BASE-X PCS clause 36 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-10GW { + base coding-func; + description + "10GBASE-W (WAN PHY) PCS clause 49 and WIS clause 50 + coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-10GR { + base coding-func; + description + "10GBASE-R (LAN PHY) PCS clause 49 coding function."; + + + + + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-40GR { + base coding-func; + description + "40GBASE-R PCS clause 82 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-100GR { + base coding-func; + description + "100GBASE-R PCS clause 82 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity optical-interface-func { + description + "Base identity from which optical-interface-function + is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SX-PMD-1000 { + base optical-interface-func; + description + "SX-PMD-clause-38 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LX-PMD-1000 { + base optical-interface-func; + description + "LX-PMD-clause-38 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LX10-PMD-1000 { + base optical-interface-func; + + + + + description + "LX10-PMD-clause-59 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity BX10-PMD-1000 { + base optical-interface-func; + description + "BX10-PMD-clause-59 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LW-PMD-10G { + base optical-interface-func; + description + "LW-PMD-clause-52 Optical Interface function for + 10GBASE-W PCS-49-WIS-50"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity EW-PMD-10G { + base optical-interface-func; + description + "EW-PMD-clause-52 Optical Interface function for + 10GBASE-W PCS-49-WIS-50"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR-PMD-10G { + base optical-interface-func; + description + "LR-PMD-clause-52 Optical Interface function for + 10GBASE-R PCS-49"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER-PMD-10G { + base optical-interface-func; + description + "ER-PMD-clause-52 Optical Interface function for + 10GBASE-R PCS-49"; + + + + + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR4-PMD-40G { + base optical-interface-func; + description + "LR4-PMD-clause-87 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER4-PMD-40G { + base optical-interface-func; + description + "ER4-PMD-clause-87 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FR-PMD-40G { + base optical-interface-func; + description + "FR-PMD-clause-89 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR4-PMD-100G { + base optical-interface-func; + description + "LR4-PMD-clause-88 Optical Interface function for + 100GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER4-PMD-100G { + base optical-interface-func; + description + "ER4-PMD-clause-88 Optical Interface function for + 100GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + + + + /* + * Typedefs + */ + + typedef otn-tpn { + type uint16 { + range "1..4095"; + } + description + "Tributary Port Number (TPN) for OTN. "; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks."; + } + + typedef otn-ts { + type uint16 { + range "1..4095"; + } + description + "Tributary Slot (TS) for OTN."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks."; + } + + typedef otn-label-range-type { + type enumeration { + enum trib-slot { + description + "Defines a range of OTN tributary slots (TS)."; + } + enum trib-port { + description + "Defines a range of OTN tributary ports (TPN)."; + } + } + description + "Defines the type of OTN label range: TS or TPN. "; + } + + typedef gfp-k { + type enumeration { + enum 2 { + description + "The ODU2.ts rate (1,249,177.230 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,2). "; + } + + + + + enum 3 { + description + "The ODU3.ts rate (1,254,470.354 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,3). "; + } + enum 4 { + description + "The ODU4.ts rate (1,301,467.133 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,4). "; + } + } + description + "The ODUk.ts used to compute the rate of an ODUflex(GFP,n,k)"; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-8 and L.7: Interfaces for + the Optical Transport Network (OTN)"; + } + + typedef flexe-client-rate { + type union { + type uint16; + type enumeration { + enum "10G" { + description + "Represents a 10G FlexE Client signal (s=2)"; + } + enum "40G" { + description + "Represents a 40G FlexE Client signal (s=8)"; + } + } + } + description + "The FlexE Client signal rate (s x 5,156,250.000 kbit/s) + used to compute the rate of an ODUflex(IMP, s). + Valid values for s are s=2 (10G), s=4 (40G) and + s=5 x n (n x 25G). + In the first two cases an enumeration value + (either 10G or 40G) is used, while in the latter case + the value of n is used"; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the + Optical Transport Network (OTN)"; + } + + typedef odtu-flex-type { + type enumeration { + enum "2" { + + + + + description + "The ODTU2.ts ODTU type."; + } + enum "3" { + description + "The ODTU3.ts ODTU type."; + } + enum "4" { + description + "The ODTU4.ts ODTU type."; + } + enum "Cn" { + description + "The ODTUCn.ts ODTU type."; + } + } + description + "The type of Optical Data Tributary Unit (ODTU), + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by an ODUflex LSP, according to + the (19-1a) and (20-1a) formulas defined in G.709."; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-7, clause 19.6 and + clause 20.5: Interfaces for the Optical Transport + Network (OTN)"; + } + + typedef bandwidth-scientific-notation { + type string { + pattern + '0(\.0?)?([eE](\+)?0?)?|' + + '[1-9](\.[0-9]{0,6})?[eE](\+)?(9[0-6]|[1-8][0-9]|0?[0-9])?'; + } + units "bps"; + description + "Bandwidth values, expressed using the scientific notation + in bits per second. + + The encoding format is the external decimal-significant + character sequences specified in IEEE 754 and ISO/IEC C99 + for 32-bit decimal floating-point numbers: + (-1)**(S) * 10**(Exponent) * (Significant), + where Significant uses 7 digits. + + An implementation for this representation MAY use decimal32 + or binary32. The range of the Exponent is from -95 to +96 + for decimal32, and from -38 to +38 for binary32. + As a bandwidth value, the format is restricted to be + + + + + normalized, non-negative, and non-fraction: + n.dddddde{+}dd, N.DDDDDDE{+}DD, 0e0 or 0E0, + where 'd' and 'D' are decimal digits; 'n' and 'N' are + non-zero decimal digits; 'e' and 'E' indicate a power of ten. + Some examples are 0e0, 1e10, and 9.953e9."; + reference + "IEEE Std 754-2008: IEEE Standard for Floating-Point + Arithmetic. + ISO/IEC C99: Information technology - Programming + Languages - C."; + } + + /* + * Groupings + */ + + grouping otn-link-bandwidth { + description + "Bandwidth attributes for OTN links"; + container otn { + description + "Bandwidth attributes for OTN links"; + list odulist { + key "odu-type"; + description + "OTN bandwidth definition"; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + leaf number { + type uint16; + description "Number of ODUs"; + } + leaf ts-number { + when 'derived-from-or-self(../odu-type,"ODUflex") or + derived-from-or-self(../odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + type uint16 { + range "1..4095"; + } + description + + + + + "The number of Tributary Slots (TS) that + could be used by all the ODUflex LSPs."; + } + } + } + } + + grouping otn-path-bandwidth { + description + "Bandwidth attributes for OTN paths."; + container otn { + description + "Bandwidth attributes for OTN paths."; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + choice oduflex-type { + when 'derived-from-or-self(./odu-type,"ODUflex") or + derived-from-or-self(./odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + description + "Types of ODUflex used to compute the ODUflex + nominal bit rate."; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the + Optical Transport Network (OTN)"; + case generic { + leaf nominal-bit-rate { + type union { + type l1-types:bandwidth-scientific-notation; + type rt-types:bandwidth-ieee-float32; + } + mandatory true; + description + "Nominal ODUflex bit rate."; + } + } + case cbr { + leaf client-type { + type identityref { + base client-signal; + + + + + } + mandatory true; + description + "The type of Constant Bit Rate (CBR) client signal + of an ODUflex(CBR)."; + } + } + case gfp-n-k { + leaf gfp-n { + type uint8 { + range "1..80"; + } + mandatory true; + description + "The value of n for an ODUflex(GFP,n,k)."; + reference + "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: + Interfaces for the Optical Transport Network (OTN)"; + } + leaf gfp-k { + type gfp-k; + description + "The value of k for an ODUflex(GFP,n,k). + + If omitted, it is calculated from the value of gfp-n + as described in Table 7-8 of G.709"; + reference + "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: + Interfaces for the Optical Transport Network (OTN)"; + } + } + case flexe-client { + leaf flexe-client { + type flexe-client-rate; + mandatory true; + description + "The rate of the FlexE-client for an ODUflex(IMP,s)."; + } + } + case flexe-aware { + leaf flexe-aware-n { + type uint16; + mandatory true; + description + "The rate of FlexE-aware client signal + for ODUflex(FlexE-aware)"; + } + } + + + + + case packet { + leaf opuflex-payload-rate { + type union { + type l1-types:bandwidth-scientific-notation; + type rt-types:bandwidth-ieee-float32; + } + mandatory true; + description + "Either the GFP-F encapsulated packet client nominal + bit rate for an ODUflex(GFP) or the 64b/66b encoded + packet client nominal bit rate for an ODUflex(IMP)."; + } + } + } + } + } + + grouping otn-max-path-bandwidth { + description + "Maximum bandwidth attributes for OTN paths."; + container otn { + description + "Maximum bandwidth attributes for OTN paths."; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + leaf max-ts-number { + when 'derived-from-or-self(../odu-type,"ODUflex") or + derived-from-or-self(../odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + type uint16 { + range "1..4095"; + } + description + "The maximum number of Tributary Slots (TS) that could be + used by an ODUflex LSP."; + } + } + } + + grouping otn-label-range-info { + + + + + description + "Label range information for OTN. + + This grouping SHOULD be used together with the + otn-label-start-end and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + container otn-label-range { + description + "Label range information for OTN."; + leaf range-type { + type otn-label-range-type; + description "The type of range (e.g., TPN or TS) + to which the label range applies"; + } + leaf tsg { + type identityref { + base tributary-slot-granularity; + } + description + "Tributary slot granularity (TSG) to which the label range + applies. + + This leaf MUST be present when the range-type is TS. + + This leaf MAY be omitted when mapping an ODUk over an OTUk + Link. In this case the range-type is tpn, with only one + entry (ODUk), and the tpn range has only one value (1)."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf-list odu-type-list { + type identityref { + base odu-type; + } + description + "List of ODU types to which the label range applies. + + An Empty odu-type-list means that the label range + applies to all the supported ODU types."; + } + leaf priority { + type uint8 { + range 0..7; + } + description + + + + + "Priority in Interface Switching Capability + Descriptor (ISCD)."; + reference + "RFC4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + } + } + + grouping otn-label-start-end { + description + "The OTN label-start or label-end used to specify an OTN label + range. + + This grouping is dependent on the range-type defined in the + otn-label-range-info grouping. + + This grouping SHOULD be used together with the + otn-label-range-info and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + container otn { + description + "Label start or label end for OTN."; + choice range-type { + description + "OTN label range type, either TPN range or TS range"; + case trib-port { + leaf tpn { + when "../../../../otn-label-range/range-type = + 'trib-port'" { + description + "Valid only when range-type represented by + trib-port"; + } + type otn-tpn; + description + "Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + case trib-slot { + leaf ts { + when "../../../../otn-label-range/range-type = + 'trib-slot'" { + + + + + description + "Valid only when range-type represented by + trib-slot"; + } + type otn-ts; + description + "Tributary Slot (TS) number."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks"; + } + } + } + } + } + + grouping otn-label-hop { + description "OTN Label"; + reference + "RFC7139, section 6: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks"; + container otn { + description + "Label hop for OTN."; + leaf tpn { + type otn-tpn; + description + "Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + leaf tsg { + type identityref { + base tributary-slot-granularity; + } + description "Tributary Slot Granularity (TSG)."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf ts-list { + type string { + pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" + + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of available Tributary Slots (TS) ranging + + + + + between 1 and 4095. If multiple values or + ranges are given, they all MUST be disjoint + and MUST be in ascending order. + For example 1-20,25,50-1000."; + reference + "RFC 7139: GMPLS Signaling Extensions for Control + of Evolving G.709 Optical Transport Networks"; + } + } + } + + grouping otn-label-step { + description + "Label step for OTN. + + This grouping is dependent on the range-type defined in the + otn-label-range-info grouping. + + This grouping SHOULD be used together with the + otn-label-range-info and otn-label-start-end groupings to + provide OTN technology-specific label information to the + models which use the label-restriction-info grouping defined + in the module ietf-te-types."; + container otn { + description + "Label step for OTN"; + choice range-type { + description + "OTN label range type, either TPN range or TS range"; + case trib-port { + leaf tpn { + when "../../../otn-label-range/range-type = + 'trib-port'" { + description + "Valid only when range-type represented by + trib-port"; + } + type otn-tpn; + description + "Label step which represents possible increments for + Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + case trib-slot { + leaf ts { + + + + + when "../../../otn-label-range/range-type = + 'trib-slot'" { + description + "Valid only when range-type represented by + trib-slot"; + } + type otn-ts; + description + "Label step which represents possible increments for + Tributary Slot (TS) number."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + } + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang new file mode 100644 index 000000000..bf4855faf --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang @@ -0,0 +1,464 @@ +module ietf-netconf-acm { + + namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm"; + + prefix nacm; + + import ietf-yang-types { + prefix yang; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + + contact + "WG Web: + WG List: + + Author: Andy Bierman + + + Author: Martin Bjorklund + "; + + description + "Network Configuration Access Control Model. + + Copyright (c) 2012 - 2018 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD + License set forth in Section 4.c of the IETF Trust's + Legal Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8341; see + the RFC itself for full legal notices."; + + revision "2018-02-14" { + description + "Added support for YANG 1.1 actions and notifications tied to + data nodes. Clarified how NACM extensions can be used by + other data models."; + reference + "RFC 8341: Network Configuration Access Control Model"; + } + + revision "2012-02-22" { + description + "Initial version."; + reference + "RFC 6536: Network Configuration Protocol (NETCONF) + Access Control Model"; + } + + /* + * Extension statements + */ + + extension default-deny-write { + description + "Used to indicate that the data model node + represents a sensitive security system parameter. + + If present, the NETCONF server will only allow the designated + 'recovery session' to have write access to the node. An + explicit access control rule is required for all other users. + + If the NACM module is used, then it must be enabled (i.e., + /nacm/enable-nacm object equals 'true'), or this extension + is ignored. + + The 'default-deny-write' extension MAY appear within a data + definition statement. It is ignored otherwise."; + } + + extension default-deny-all { + description + "Used to indicate that the data model node + controls a very sensitive security system parameter. + + If present, the NETCONF server will only allow the designated + 'recovery session' to have read, write, or execute access to + the node. An explicit access control rule is required for all + other users. + + If the NACM module is used, then it must be enabled (i.e., + /nacm/enable-nacm object equals 'true'), or this extension + is ignored. + + The 'default-deny-all' extension MAY appear within a data + definition statement, 'rpc' statement, or 'notification' + statement. It is ignored otherwise."; + } + + /* + * Derived types + */ + + typedef user-name-type { + type string { + length "1..max"; + } + description + "General-purpose username string."; + } + + typedef matchall-string-type { + type string { + pattern '\*'; + } + description + "The string containing a single asterisk '*' is used + to conceptually represent all possible values + for the particular leaf using this data type."; + } + + typedef access-operations-type { + type bits { + bit create { + description + "Any protocol operation that creates a + new data node."; + } + bit read { + description + "Any protocol operation or notification that + returns the value of a data node."; + } + bit update { + description + "Any protocol operation that alters an existing + data node."; + } + bit delete { + description + "Any protocol operation that removes a data node."; + } + bit exec { + description + "Execution access to the specified protocol operation."; + } + } + description + "Access operation."; + } + + typedef group-name-type { + type string { + length "1..max"; + pattern '[^\*].*'; + } + description + "Name of administrative group to which + users can be assigned."; + } + + typedef action-type { + type enumeration { + enum permit { + description + "Requested action is permitted."; + } + enum deny { + description + "Requested action is denied."; + } + } + description + "Action taken by the server when a particular + rule matches."; + } + + typedef node-instance-identifier { + type yang:xpath1.0; + description + "Path expression used to represent a special + data node, action, or notification instance-identifier + string. + + A node-instance-identifier value is an + unrestricted YANG instance-identifier expression. + All the same rules as an instance-identifier apply, + except that predicates for keys are optional. If a key + predicate is missing, then the node-instance-identifier + represents all possible server instances for that key. + + This XML Path Language (XPath) expression is evaluated in the + following context: + + o The set of namespace declarations are those in scope on + the leaf element where this type is used. + + o The set of variable bindings contains one variable, + 'USER', which contains the name of the user of the + current session. + + o The function library is the core function library, but + note that due to the syntax restrictions of an + instance-identifier, no functions are allowed. + + o The context node is the root node in the data tree. + + The accessible tree includes actions and notifications tied + to data nodes."; + } + + /* + * Data definition statements + */ + + container nacm { + nacm:default-deny-all; + + description + "Parameters for NETCONF access control model."; + + leaf enable-nacm { + type boolean; + default "true"; + description + "Enables or disables all NETCONF access control + enforcement. If 'true', then enforcement + is enabled. If 'false', then enforcement + is disabled."; + } + + leaf read-default { + type action-type; + default "permit"; + description + "Controls whether read access is granted if + no appropriate rule is found for a + particular read request."; + } + + leaf write-default { + type action-type; + default "deny"; + description + "Controls whether create, update, or delete access + is granted if no appropriate rule is found for a + particular write request."; + } + + leaf exec-default { + type action-type; + default "permit"; + description + "Controls whether exec access is granted if no appropriate + rule is found for a particular protocol operation request."; + } + + leaf enable-external-groups { + type boolean; + default "true"; + description + "Controls whether the server uses the groups reported by the + NETCONF transport layer when it assigns the user to a set of + NACM groups. If this leaf has the value 'false', any group + names reported by the transport layer are ignored by the + server."; + } + + leaf denied-operations { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that a + protocol operation request was denied."; + } + + leaf denied-data-writes { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that a + protocol operation request to alter + a configuration datastore was denied."; + } + + leaf denied-notifications { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that + a notification was dropped for a subscription because + access to the event type was denied."; + } + + container groups { + description + "NETCONF access control groups."; + + list group { + key name; + + description + "One NACM group entry. This list will only contain + configured entries, not any entries learned from + any transport protocols."; + + leaf name { + type group-name-type; + description + "Group name associated with this entry."; + } + + leaf-list user-name { + type user-name-type; + description + "Each entry identifies the username of + a member of the group associated with + this entry."; + } + } + } + + list rule-list { + key name; + ordered-by user; + description + "An ordered collection of access control rules."; + + leaf name { + type string { + length "1..max"; + } + description + "Arbitrary name assigned to the rule-list."; + } + leaf-list group { + type union { + type matchall-string-type; + type group-name-type; + } + description + "List of administrative groups that will be + assigned the associated access rights + defined by the 'rule' list. + + The string '*' indicates that all groups apply to the + entry."; + } + + list rule { + key name; + ordered-by user; + description + "One access control rule. + + Rules are processed in user-defined order until a match is + found. A rule matches if 'module-name', 'rule-type', and + 'access-operations' match the request. If a rule + matches, the 'action' leaf determines whether or not + access is granted."; + + leaf name { + type string { + length "1..max"; + } + description + "Arbitrary name assigned to the rule."; + } + + leaf module-name { + type union { + type matchall-string-type; + type string; + } + default "*"; + description + "Name of the module associated with this rule. + + This leaf matches if it has the value '*' or if the + object being accessed is defined in the module with the + specified module name."; + } + choice rule-type { + description + "This choice matches if all leafs present in the rule + match the request. If no leafs are present, the + choice matches all requests."; + case protocol-operation { + leaf rpc-name { + type union { + type matchall-string-type; + type string; + } + description + "This leaf matches if it has the value '*' or if + its value equals the requested protocol operation + name."; + } + } + case notification { + leaf notification-name { + type union { + type matchall-string-type; + type string; + } + description + "This leaf matches if it has the value '*' or if its + value equals the requested notification name."; + } + } + + case data-node { + leaf path { + type node-instance-identifier; + mandatory true; + description + "Data node instance-identifier associated with the + data node, action, or notification controlled by + this rule. + + Configuration data or state data + instance-identifiers start with a top-level + data node. A complete instance-identifier is + required for this type of path value. + + The special value '/' refers to all possible + datastore contents."; + } + } + } + + leaf access-operations { + type union { + type matchall-string-type; + type access-operations-type; + } + default "*"; + description + "Access operations associated with this rule. + + This leaf matches if it has the value '*' or if the + bit corresponding to the requested operation is set."; + } + + leaf action { + type action-type; + mandatory true; + description + "The access control action associated with the + rule. If a rule has been determined to match a + particular request, then this object is used + to determine whether to permit or deny the + request."; + } + + leaf comment { + type string; + description + "A textual description of the access rule."; + } + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang new file mode 100644 index 000000000..0538ac01b --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang @@ -0,0 +1,294 @@ + module ietf-network-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology"; + prefix nt; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + description + "This module defines a common base model for a network topology, + augmenting the base network data model with links to connect + nodes, as well as termination points to terminate links + on nodes. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8345; + see the RFC itself for full legal notices."; + + revision 2018-02-26 { + description + "Initial revision."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef link-id { + type inet:uri; + description + "An identifier for a link in a topology. The precise + structure of the link-id will be up to the implementation. + The identifier SHOULD be chosen such that the same link in a + real network topology will always be identified through the + same identifier, even if the data model is instantiated in + separate datastores. An implementation MAY choose to capture + semantics in the identifier -- for example, to indicate the + type of link and/or the type of topology of which the link is + a part."; + } + + typedef tp-id { + type inet:uri; + description + "An identifier for termination points on a node. The precise + structure of the tp-id will be up to the implementation. + The identifier SHOULD be chosen such that the same termination + point in a real network topology will always be identified + through the same identifier, even if the data model is + instantiated in separate datastores. An implementation MAY + choose to capture semantics in the identifier -- for example, + to indicate the type of termination point and/or the type of + node that contains the termination point."; + } + + grouping link-ref { + description + "This grouping can be used to reference a link in a specific + network. Although it is not used in this module, it is + defined here for the convenience of augmenting modules."; + leaf link-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nt:link/nt:link-id"; + require-instance false; + } + description + "A type for an absolute reference to a link instance. + (This type should not be used for relative references. + In such a case, a relative path should be used instead.)"; + } + uses nw:network-ref; + } + + grouping tp-ref { + description + "This grouping can be used to reference a termination point + in a specific node. Although it is not used in this module, + it is defined here for the convenience of augmenting + modules."; + leaf tp-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nw:node[nw:node-id=current()/../"+ + "node-ref]/nt:termination-point/nt:tp-id"; + require-instance false; + } + description + "A type for an absolute reference to a termination point. + (This type should not be used for relative references. + In such a case, a relative path should be used instead.)"; + } + uses nw:node-ref; + } + + augment "/nw:networks/nw:network" { + description + "Add links to the network data model."; + list link { + key "link-id"; + description + "A network link connects a local (source) node and + a remote (destination) node via a set of the respective + node's termination points. It is possible to have several + links between the same source and destination nodes. + Likewise, a link could potentially be re-homed between + termination points. Therefore, in order to ensure that we + would always know to distinguish between links, every link + is identified by a dedicated link identifier. Note that a + link models a point-to-point link, not a multipoint link."; + leaf link-id { + type link-id; + description + "The identifier of a link in the topology. + A link is specific to a topology to which it belongs."; + } + container source { + description + "This container holds the logical source of a particular + link."; + leaf source-node { + type leafref { + path "../../../nw:node/nw:node-id"; + require-instance false; + } + description + "Source node identifier. Must be in the same topology."; + } + leaf source-tp { + type leafref { + path "../../../nw:node[nw:node-id=current()/../"+ + "source-node]/termination-point/tp-id"; + require-instance false; + } + description + "This termination point is located within the source node + and terminates the link."; + } + } + + container destination { + description + "This container holds the logical destination of a + particular link."; + leaf dest-node { + type leafref { + path "../../../nw:node/nw:node-id"; + require-instance false; + } + description + "Destination node identifier. Must be in the same + network."; + } + leaf dest-tp { + type leafref { + path "../../../nw:node[nw:node-id=current()/../"+ + "dest-node]/termination-point/tp-id"; + require-instance false; + } + description + "This termination point is located within the + destination node and terminates the link."; + } + } + list supporting-link { + key "network-ref link-ref"; + description + "Identifies the link or links on which this link depends."; + leaf network-ref { + type leafref { + path "../../../nw:supporting-network/nw:network-ref"; + require-instance false; + } + description + "This leaf identifies in which underlay topology + the supporting link is present."; + } + + leaf link-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/"+ + "../network-ref]/link/link-id"; + require-instance false; + } + description + "This leaf identifies a link that is a part + of this link's underlay. Reference loops in which + a link identifies itself as its underlay, either + directly or transitively, are not allowed."; + } + } + } + } + augment "/nw:networks/nw:network/nw:node" { + description + "Augments termination points that terminate links. + Termination points can ultimately be mapped to interfaces."; + list termination-point { + key "tp-id"; + description + "A termination point can terminate a link. + Depending on the type of topology, a termination point + could, for example, refer to a port or an interface."; + leaf tp-id { + type tp-id; + description + "Termination point identifier."; + } + list supporting-termination-point { + key "network-ref node-ref tp-ref"; + description + "This list identifies any termination points on which a + given termination point depends or onto which it maps. + Those termination points will themselves be contained + in a supporting node. This dependency information can be + inferred from the dependencies between links. Therefore, + this item is not separately configurable. Hence, no + corresponding constraint needs to be articulated. + The corresponding information is simply provided by the + implementing system."; + + leaf network-ref { + type leafref { + path "../../../nw:supporting-node/nw:network-ref"; + require-instance false; + } + description + "This leaf identifies in which topology the + supporting termination point is present."; + } + leaf node-ref { + type leafref { + path "../../../nw:supporting-node/nw:node-ref"; + require-instance false; + } + description + "This leaf identifies in which node the supporting + termination point is present."; + } + leaf tp-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/"+ + "../network-ref]/nw:node[nw:node-id=current()/../"+ + "node-ref]/termination-point/tp-id"; + require-instance false; + } + description + "Reference to the underlay node (the underlay node must + be in a different topology)."; + } + } + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang new file mode 100644 index 000000000..d9da81eee --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang @@ -0,0 +1,193 @@ + module ietf-network { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-network"; + prefix nw; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + description + "This module defines a common base data model for a collection + of nodes in a network. Node definitions are further used + in network topologies and inventories. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8345; + see the RFC itself for full legal notices."; + + revision 2018-02-26 { + description + "Initial revision."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef node-id { + type inet:uri; + description + "Identifier for a node. The precise structure of the node-id + will be up to the implementation. For example, some + implementations MAY pick a URI that includes the network-id + as part of the path. The identifier SHOULD be chosen + such that the same node in a real network topology will + always be identified through the same identifier, even if + the data model is instantiated in separate datastores. An + implementation MAY choose to capture semantics in the + identifier -- for example, to indicate the type of node."; + } + + typedef network-id { + type inet:uri; + description + "Identifier for a network. The precise structure of the + network-id will be up to the implementation. The identifier + SHOULD be chosen such that the same network will always be + identified through the same identifier, even if the data model + is instantiated in separate datastores. An implementation MAY + choose to capture semantics in the identifier -- for example, + to indicate the type of network."; + } + + grouping network-ref { + description + "Contains the information necessary to reference a network -- + for example, an underlay network."; + leaf network-ref { + type leafref { + path "/nw:networks/nw:network/nw:network-id"; + require-instance false; + } + description + "Used to reference a network -- for example, an underlay + network."; + } + } + + grouping node-ref { + description + "Contains the information necessary to reference a node."; + leaf node-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nw:node/nw:node-id"; + require-instance false; + } + description + "Used to reference a node. + Nodes are identified relative to the network that + contains them."; + } + uses network-ref; + } + + container networks { + description + "Serves as a top-level container for a list of networks."; + list network { + key "network-id"; + description + "Describes a network. + A network typically contains an inventory of nodes, + topological information (augmented through the + network-topology data model), and layering information."; + leaf network-id { + type network-id; + description + "Identifies a network."; + } + container network-types { + description + "Serves as an augmentation target. + The network type is indicated through corresponding + presence containers augmented into this container."; + } + list supporting-network { + key "network-ref"; + description + "An underlay network, used to represent layered network + topologies."; + leaf network-ref { + type leafref { + path "/nw:networks/nw:network/nw:network-id"; + require-instance false; + } + description + "References the underlay network."; + } + } + + list node { + key "node-id"; + description + "The inventory of nodes of this network."; + leaf node-id { + type node-id; + description + "Uniquely identifies a node within the containing + network."; + } + list supporting-node { + key "network-ref node-ref"; + description + "Represents another node that is in an underlay network + and that supports this node. Used to represent layering + structure."; + leaf network-ref { + type leafref { + path "../../../nw:supporting-network/nw:network-ref"; + require-instance false; + } + description + "References the underlay network of which the + underlay node is a part."; + } + leaf node-ref { + type leafref { + path "/nw:networks/nw:network/nw:node/nw:node-id"; + require-instance false; + } + description + "References the underlay node itself."; + } + } + } + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang new file mode 100644 index 000000000..587612e8e --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang @@ -0,0 +1,2405 @@ + module ietf-otn-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology"; + prefix "otnt"; + + import ietf-network { + prefix "nw"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering + (TE) Topologies"; + } + + import ietf-layer1-types { + prefix "l1-types"; + reference + "I-D.ietf-ccamp-layer1-types: A YANG Data Model + for Layer 1 Types"; + } + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Xufeng Liu + + + Editor: Sergio Belotti + + + + + + Editor: Oscar Gonzalez de Dios + "; + + description + "This module defines a protocol independent Layer 1/ODU topology + data model. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2023 IETF Trust and the persons identified + as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here."; + + revision 2023-07-06 { + description + "Initial Revision"; + reference + "RFC XXXX: A YANG Data Model for Optical Transport Network + Topology"; + // RFC Ed.: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Groupings + */ + + grouping label-range-info { + description + "OTN technology-specific label range related information with + a presence container indicating that the label range is an + OTN technology-specific label range. + + This grouping SHOULD be used together with the + + + + + otn-label-start-end and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + uses l1-types:otn-label-range-info { + refine otn-label-range { + presence + "Indicates the label range is an OTN label range. + + This container MUST NOT be present if there are other + presence containers or attributes indicating another type + of label range."; + } + } + } + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + container otn-topology { + presence "indicates a topology type of Optical Transport + Network (OTN)-electrical layer."; + description "OTN topology type"; + } + description "augment network types to include OTN newtork"; + } + + augment "/nw:networks/nw:network/nw:node/tet:te" + + "/tet:te-node-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description "Augment only for OTN network."; + } + description "Augment TE node attributes."; + container otn-node { + presence "The TE node is an OTN node."; + description + "Introduce new TE node type for OTN node."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description "Augment only for OTN network."; + } + description "Augment link configuration"; + + container otn-link { + description + "Attributes of the OTN Link."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs set up + on this OTN Link."; + } + leaf tsg { + type identityref { + base l1-types:tributary-slot-granularity; + } + description "Tributary slot granularity."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf distance { + type uint32; + description "distance in the unit of kilometers"; + } + } + container client-svc { + presence + "When present, indicates that the Link supports Costant + Bit Rate (CBR) client signals."; + description + "Attributes of the Link supporting CBR client signals."; + leaf-list supported-client-signal { + type identityref { + base l1-types:client-signal; + } + min-elements 1; + description + "List of client signal types supported by the Link."; + } + } + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te" { + + + + + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description "Augment only for OTN network"; + } + description "OTN TP attributes config in ODU topology."; + + container otn-ltp { + description + "Attributes of the OTN Link Termination Point (LTP)."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs set up + on this OTN Link Termination Point (LTP)."; + } + } + container client-svc { + presence + "When present, indicates that the Link Termination Point + (LTP) supports Costant Bit Rate (CBR) client signals."; + description + "OTN LTP Service attributes."; + leaf-list supported-client-signal { + type identityref { + base l1-types:client-signal; + } + description + "List of client signal types supported by the LTP."; + } + } + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + + + + + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link Termination + Point (LTP) is used to compute the number of Tributary + Slots (TS) required by the ODUflex LSPs set up on this + OTN LTP."; + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN + connectivity matrices."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + + + + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN + connectivity matrix entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + + + + + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN + connectivity matrices."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN + connectivity matrix entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + + + + + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + terminated on this OTN Tunnel Termination Point + (TTP)."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + + + + + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN Local + Link Connectivities."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN Local + Link Connectivyt entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + + + + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + + + + + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + + + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum TE bandwidth the TE link template"; + uses l1-types:otn-link-bandwidth { + description + + + + + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment unreserved TE bandwidth the TE link template"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + /* + * Augment TE label range information + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivities."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivity entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE link."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment TE label range information for the TE link + information source."; + uses label-range-info; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + description + "Augment TE label range information for the TE link template."; + uses label-range-info; + } + + /* + * Augment TE label + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment TE label range end for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-step/" + + "tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path of the + TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path of the + TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity + matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + + + + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity + matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + + + + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + + + + + "Augment TE label range step for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + + + + + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE node connectivity + matrices information source."; + case otn { + + + + + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE node connectivity + matrices information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE node connectivity + matrices information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + + + + + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE node connectivity matrices of the information + source entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE node connectivity matrices of the information + source entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity matrices + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity matrices + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + + + + + of the TE node connectivity matrices information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + + + + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry information source."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + + + + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology"{ + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology"{ + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivities."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivities."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + + + + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + + + + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE link."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE link."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + + + + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE link."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE link."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE link."; + case otn { + uses l1-types:otn-label-step; + } + + + + + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE link + information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE link + information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + + + + + description + "Augment TE label range step for the TE link + information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay primary path + of the TE link template."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay backup path + of the TE link template."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + description + "Augment TE label range start for the TE link template."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + description + + + + + "Augment TE label range end for the TE link template."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + description + "Augment TE label range step for the TE link template."; + case otn { + uses l1-types:otn-label-step; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang new file mode 100644 index 000000000..24319c155 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang @@ -0,0 +1,771 @@ +module ietf-routing-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; + prefix rt-types; + + import ietf-yang-types { + prefix yang; + } + import ietf-inet-types { + prefix inet; + } + + organization + "IETF RTGWG - Routing Area Working Group"; + contact + "WG Web: + WG List: + + Editors: Xufeng Liu + + Yingzhen Qu + + Acee Lindem + + Christian Hopps + + Lou Berger + "; + + description + "This module contains a collection of YANG data types + considered generally useful for routing protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 3."; + } + + /*** Identities related to MPLS/GMPLS ***/ + + identity mpls-label-special-purpose-value { + description + "Base identity for deriving identities describing + special-purpose Multiprotocol Label Switching (MPLS) label + values."; + reference + "RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels."; + } + + identity ipv4-explicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the IPv4 Explicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity router-alert-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Router Alert Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity ipv6-explicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the IPv6 Explicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity implicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Implicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity entropy-label-indicator { + base mpls-label-special-purpose-value; + description + "This identity represents the Entropy Label Indicator."; + reference + "RFC 6790: The Use of Entropy Labels in MPLS Forwarding. + Sections 3 and 10.1."; + } + + identity gal-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Generic Associated Channel + (G-ACh) Label (GAL)."; + reference + "RFC 5586: MPLS Generic Associated Channel. + Sections 4 and 10."; + } + + identity oam-alert-label { + base mpls-label-special-purpose-value; + description + "This identity represents the OAM Alert Label."; + reference + "RFC 3429: Assignment of the 'OAM Alert Label' for + Multiprotocol Label Switching Architecture (MPLS) + Operation and Maintenance (OAM) Functions. + Sections 3 and 6."; + } + + identity extension-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Extension Label."; + reference + "RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels. Sections 3.1 and 5."; + } + + /*** Collection of types related to routing ***/ + + typedef router-id { + type yang:dotted-quad; + description + "A 32-bit number in the dotted-quad format assigned to each + router. This number uniquely identifies the router within + an Autonomous System."; + } + + /*** Collection of types related to VPNs ***/ + + typedef route-target { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + + description + "A Route Target is an 8-octet BGP extended community + initially identifying a set of sites in a BGP VPN + (RFC 4364). However, it has since taken on a more general + role in BGP route filtering. A Route Target consists of two + or three fields: a 2-octet Type field, an administrator + field, and, optionally, an assigned number field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + + Additionally, a generic pattern is defined for future + Route Target types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef ipv6-route-target { + type string { + pattern + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + } + description + "An IPv6 Route Target is a 20-octet BGP IPv6 Address + Specific Extended Community serving the same function + as a standard 8-octet Route Target, except that it only + allows an IPv6 address as the global administrator. + The format is . + + Two valid examples are 2001:db8::1:6544 and + 2001:db8::5eb1:791:6b37:17958."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute."; + } + + typedef route-target-type { + type enumeration { + enum import { + value 0; + description + "The Route Target applies to route import."; + } + enum export { + value 1; + description + "The Route Target applies to route export."; + } + + enum both { + value 2; + description + "The Route Target applies to both route import and + route export."; + } + } + description + "Indicates the role a Route Target takes in route filtering."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; + } + + typedef route-distinguisher { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + + description + "A Route Distinguisher is an 8-octet value used to + distinguish routes from different BGP VPNs (RFC 4364). + A Route Distinguisher will have the same format as a + Route Target as per RFC 4360 and will consist of + two or three fields: a 2-octet Type field, an administrator + field, and, optionally, an assigned number field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + + Additionally, a generic pattern is defined for future + route discriminator types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef route-origin { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + description + "A Route Origin is an 8-octet BGP extended community + identifying the set of sites where the BGP route + originated (RFC 4364). A Route Origin will have the same + format as a Route Target as per RFC 4360 and will consist + of two or three fields: a 2-octet Type field, an + administrator field, and, optionally, an assigned number + field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + Additionally, a generic pattern is defined for future + Route Origin types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef ipv6-route-origin { + type string { + pattern + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + } + description + "An IPv6 Route Origin is a 20-octet BGP IPv6 Address + Specific Extended Community serving the same function + as a standard 8-octet route, except that it only allows + an IPv6 address as the global administrator. The format + is . + + Two valid examples are 2001:db8::1:6544 and + 2001:db8::5eb1:791:6b37:17958."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute."; + } + + /*** Collection of types common to multicast ***/ + + typedef ipv4-multicast-group-address { + type inet:ipv4-address { + pattern '(2((2[4-9])|(3[0-9]))\.).*'; + } + description + "This type represents an IPv4 multicast group address, + which is in the range of 224.0.0.0 to 239.255.255.255."; + reference + "RFC 1112: Host Extensions for IP Multicasting."; + } + + typedef ipv6-multicast-group-address { + type inet:ipv6-address { + pattern '(([fF]{2}[0-9a-fA-F]{2}):).*'; + } + description + "This type represents an IPv6 multicast group address, + which is in the range of ff00::/8."; + reference + "RFC 4291: IP Version 6 Addressing Architecture. Section 2.7. + RFC 7346: IPv6 Multicast Address Scopes."; + } + + typedef ip-multicast-group-address { + type union { + type ipv4-multicast-group-address; + type ipv6-multicast-group-address; + } + description + "This type represents a version-neutral IP multicast group + address. The format of the textual representation implies + the IP version."; + } + + typedef ipv4-multicast-source-address { + type union { + type enumeration { + enum * { + description + "Any source address."; + } + } + type inet:ipv4-address; + } + description + "Multicast source IPv4 address type."; + } + + typedef ipv6-multicast-source-address { + type union { + type enumeration { + enum * { + description + "Any source address."; + } + } + type inet:ipv6-address; + } + description + "Multicast source IPv6 address type."; + } + + /*** Collection of types common to protocols ***/ + + typedef bandwidth-ieee-float32 { + type string { + pattern + '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' + + '1[01][0-9]|0?[0-9]?[0-9])?)'; + } + description + "Bandwidth in IEEE 754 floating-point 32-bit binary format: + (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), + where Exponent uses 8 bits and Fraction uses 23 bits. + The units are octets per second. + The encoding format is the external hexadecimal-significant + character sequences specified in IEEE 754 and ISO/IEC C99. + The format is restricted to be normalized, non-negative, and + non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0, + where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are + integers in the range of [0..127]. + When six hexadecimal digits are used for 'hhhhhh' or + 'HHHHHH', the least significant digit must be an even + number. 'x' and 'X' indicate hexadecimal; 'p' and 'P' + indicate a power of two. Some examples are 0x0p0, 0x1p10, + and 0x1.abcde2p+20."; + reference + "IEEE Std 754-2008: IEEE Standard for Floating-Point + Arithmetic. + ISO/IEC C99: Information technology - Programming + Languages - C."; + } + + typedef link-access-type { + type enumeration { + enum broadcast { + description + "Specify broadcast multi-access network."; + } + enum non-broadcast-multiaccess { + description + "Specify Non-Broadcast Multi-Access (NBMA) network."; + } + enum point-to-multipoint { + description + "Specify point-to-multipoint network."; + } + enum point-to-point { + description + "Specify point-to-point network."; + } + } + description + "Link access type."; + } + + typedef timer-multiplier { + type uint8; + description + "The number of timer value intervals that should be + interpreted as a failure."; + } + + typedef timer-value-seconds16 { + type union { + type uint16 { + range "1..65535"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "seconds"; + description + "Timer value type, in seconds (16-bit range)."; + } + + typedef timer-value-seconds32 { + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "seconds"; + description + "Timer value type, in seconds (32-bit range)."; + } + + typedef timer-value-milliseconds { + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "milliseconds"; + description + "Timer value type, in milliseconds."; + } + + typedef percentage { + type uint8 { + range "0..100"; + } + description + "Integer indicating a percentage value."; + } + + typedef timeticks64 { + type uint64; + description + "This type is based on the timeticks type defined in + RFC 6991, but with 64-bit width. It represents the time, + modulo 2^64, in hundredths of a second between two epochs."; + reference + "RFC 6991: Common YANG Data Types."; + } + + typedef uint24 { + type uint32 { + range "0..16777215"; + } + description + "24-bit unsigned integer."; + } + + /*** Collection of types related to MPLS/GMPLS ***/ + + typedef generalized-label { + type binary; + description + "Generalized Label. Nodes sending and receiving the + Generalized Label are aware of the link-specific + label context and type."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description. Section 3.2."; + } + + typedef mpls-label-special-purpose { + type identityref { + base mpls-label-special-purpose-value; + } + description + "This type represents the special-purpose MPLS label values."; + reference + "RFC 3032: MPLS Label Stack Encoding. + RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels."; + } + + typedef mpls-label-general-use { + type uint32 { + range "16..1048575"; + } + description + "The 20-bit label value in an MPLS label stack as specified + in RFC 3032. This label value does not include the + encodings of Traffic Class and TTL (Time to Live). + The label range specified by this type is for general use, + with special-purpose MPLS label values excluded."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + + typedef mpls-label { + type union { + type mpls-label-special-purpose; + type mpls-label-general-use; + } + description + "The 20-bit label value in an MPLS label stack as specified + in RFC 3032. This label value does not include the + encodings of Traffic Class and TTL."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + + /*** Groupings **/ + + grouping mpls-label-stack { + description + "This grouping specifies an MPLS label stack. The label + stack is encoded as a list of label stack entries. The + list key is an identifier that indicates the relative + ordering of each entry, with the lowest-value identifier + corresponding to the top of the label stack."; + container mpls-label-stack { + description + "Container for a list of MPLS label stack entries."; + list entry { + key "id"; + description + "List of MPLS label stack entries."; + leaf id { + type uint8; + description + "Identifies the entry in a sequence of MPLS label + stack entries. An entry with a smaller identifier + value precedes an entry with a larger identifier + value in the label stack. The value of this ID has + no semantic meaning other than relative ordering + and referencing the entry."; + } + leaf label { + type rt-types:mpls-label; + description + "Label value."; + } + + leaf ttl { + type uint8; + description + "Time to Live (TTL)."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + leaf traffic-class { + type uint8 { + range "0..7"; + } + description + "Traffic Class (TC)."; + reference + "RFC 5462: Multiprotocol Label Switching (MPLS) Label + Stack Entry: 'EXP' Field Renamed to 'Traffic Class' + Field."; + } + } + } + } + + grouping vpn-route-targets { + description + "A grouping that specifies Route Target import-export rules + used in BGP-enabled VPNs."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 4664: Framework for Layer 2 Virtual Private Networks + (L2VPNs)."; + list vpn-target { + key "route-target"; + description + "List of Route Targets."; + leaf route-target { + type rt-types:route-target; + description + "Route Target value."; + } + leaf route-target-type { + type rt-types:route-target-type; + mandatory true; + description + "Import/export type of the Route Target."; + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang new file mode 100644 index 000000000..9e259f0e6 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang @@ -0,0 +1,684 @@ +module ietf-routing { + yang-version "1.1"; + namespace "urn:ietf:params:xml:ns:yang:ietf-routing"; + prefix "rt"; + + import ietf-yang-types { + prefix "yang"; + } + + import ietf-interfaces { + prefix "if"; + description + "An 'ietf-interfaces' module version that is compatible with + the Network Management Datastore Architecture (NMDA) + is required."; + } + + organization + "IETF NETMOD (Network Modeling) Working Group"; + contact + "WG Web: + WG List: + + Editor: Ladislav Lhotka + + Acee Lindem + + Yingzhen Qu + "; + + description + "This YANG module defines essential components for the management + of a routing subsystem. The model fully conforms to the Network + Management Datastore Architecture (NMDA). + + Copyright (c) 2018 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC 8349; see + the RFC itself for full legal notices."; + + revision 2018-03-13 { + description + "Network Management Datastore Architecture (NMDA) revision."; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)"; + } + + revision 2016-11-04 { + description + "Initial revision."; + reference + "RFC 8022: A YANG Data Model for Routing Management"; + } + + /* Features */ + feature multiple-ribs { + description + "This feature indicates that the server supports + user-defined RIBs. + + Servers that do not advertise this feature SHOULD provide + exactly one system-controlled RIB per supported address family + and also make it the default RIB. This RIB then appears as an + entry in the list '/routing/ribs/rib'."; + } + + feature router-id { + description + "This feature indicates that the server supports an explicit + 32-bit router ID that is used by some routing protocols. + + Servers that do not advertise this feature set a router ID + algorithmically, usually to one of the configured IPv4 + addresses. However, this algorithm is implementation + specific."; + } + + /* Identities */ + + identity address-family { + description + "Base identity from which identities describing address + families are derived."; + } + identity ipv4 { + base address-family; + description + "This identity represents an IPv4 address family."; + } + + identity ipv6 { + base address-family; + description + "This identity represents an IPv6 address family."; + } + + identity control-plane-protocol { + description + "Base identity from which control-plane protocol identities are + derived."; + } + + identity routing-protocol { + base control-plane-protocol; + description + "Identity from which Layer 3 routing protocol identities are + derived."; + } + + identity direct { + base routing-protocol; + description + "Routing pseudo-protocol that provides routes to directly + connected networks."; + } + + identity static { + base routing-protocol; + description + "'Static' routing pseudo-protocol."; + } + + /* Type Definitions */ + + typedef route-preference { + type uint32; + description + "This type is used for route preferences."; + } + + /* Groupings */ + + grouping address-family { + description + "This grouping provides a leaf identifying an address + family."; + leaf address-family { + type identityref { + base address-family; + } + mandatory true; + description + "Address family."; + } + } + + grouping router-id { + description + "This grouping provides a router ID."; + leaf router-id { + type yang:dotted-quad; + description + "A 32-bit number in the form of a dotted quad that is used by + some routing protocols identifying a router."; + reference + "RFC 2328: OSPF Version 2"; + } + } + + grouping special-next-hop { + description + "This grouping provides a leaf with an enumeration of special + next hops."; + leaf special-next-hop { + type enumeration { + enum blackhole { + description + "Silently discard the packet."; + } + enum unreachable { + description + "Discard the packet and notify the sender with an error + message indicating that the destination host is + unreachable."; + } + enum prohibit { + description + "Discard the packet and notify the sender with an error + message indicating that the communication is + administratively prohibited."; + } + enum receive { + description + "The packet will be received by the local system."; + } + } + description + "Options for special next hops."; + } + } + + grouping next-hop-content { + description + "Generic parameters of next hops in static routes."; + choice next-hop-options { + mandatory true; + description + "Options for next hops in static routes. + + It is expected that further cases will be added through + augments from other modules."; + case simple-next-hop { + description + "This case represents a simple next hop consisting of the + next-hop address and/or outgoing interface. + + Modules for address families MUST augment this case with a + leaf containing a next-hop address of that address + family."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + case special-next-hop { + uses special-next-hop; + } + case next-hop-list { + container next-hop-list { + description + "Container for multiple next hops."; + list next-hop { + key "index"; + description + "An entry in a next-hop list. + + Modules for address families MUST augment this list + with a leaf containing a next-hop address of that + address family."; + leaf index { + type string; + description + "A user-specified identifier utilized to uniquely + reference the next-hop entry in the next-hop list. + The value of this index has no semantic meaning + other than for referencing the entry."; + } + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + } + } + } + } + + grouping next-hop-state-content { + description + "Generic state parameters of next hops."; + choice next-hop-options { + mandatory true; + description + "Options for next hops. + + It is expected that further cases will be added through + augments from other modules, e.g., for recursive + next hops."; + case simple-next-hop { + description + "This case represents a simple next hop consisting of the + next-hop address and/or outgoing interface. + + Modules for address families MUST augment this case with a + leaf containing a next-hop address of that address + family."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + case special-next-hop { + uses special-next-hop; + } + case next-hop-list { + container next-hop-list { + description + "Container for multiple next hops."; + list next-hop { + description + "An entry in a next-hop list. + + Modules for address families MUST augment this list + with a leaf containing a next-hop address of that + address family."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + } + } + } + } + + grouping route-metadata { + description + "Common route metadata."; + leaf source-protocol { + type identityref { + base routing-protocol; + } + mandatory true; + description + "Type of the routing protocol from which the route + originated."; + } + leaf active { + type empty; + description + "The presence of this leaf indicates that the route is + preferred among all routes in the same RIB that have the + same destination prefix."; + } + leaf last-updated { + type yang:date-and-time; + description + "Timestamp of the last modification of the route. If the + route was never modified, it is the time when the route was + inserted into the RIB."; + } + } + + /* Data nodes */ + + container routing { + description + "Configuration parameters for the routing subsystem."; + uses router-id { + if-feature "router-id"; + description + "Support for the global router ID. Routing protocols + that use a router ID can use this parameter or override it + with another value."; + } + container interfaces { + config false; + description + "Network-layer interfaces used for routing."; + leaf-list interface { + type if:interface-ref; + description + "Each entry is a reference to the name of a configured + network-layer interface."; + } + } + container control-plane-protocols { + description + "Support for control-plane protocol instances."; + list control-plane-protocol { + key "type name"; + description + "Each entry contains a control-plane protocol instance."; + leaf type { + type identityref { + base control-plane-protocol; + } + description + "Type of the control-plane protocol -- an identity + derived from the 'control-plane-protocol' + base identity."; + } + leaf name { + type string; + description + "An arbitrary name of the control-plane protocol + instance."; + } + leaf description { + type string; + description + "Textual description of the control-plane protocol + instance."; + } + container static-routes { + when "derived-from-or-self(../type, 'rt:static')" { + description + "This container is only valid for the 'static' routing + protocol."; + } + description + "Support for the 'static' pseudo-protocol. + + Address-family-specific modules augment this node with + their lists of routes."; + } + } + } + container ribs { + description + "Support for RIBs."; + list rib { + key "name"; + description + "Each entry contains a configuration for a RIB identified + by the 'name' key. + + Entries having the same key as a system-controlled entry + in the list '/routing/ribs/rib' are used for + configuring parameters of that entry. Other entries + define additional user-controlled RIBs."; + leaf name { + type string; + description + "The name of the RIB. + + For system-controlled entries, the value of this leaf + must be the same as the name of the corresponding entry + in the operational state. + + For user-controlled entries, an arbitrary name can be + used."; + } + uses address-family { + description + "The address family of the system-controlled RIB."; + } + + leaf default-rib { + if-feature "multiple-ribs"; + type boolean; + default "true"; + config false; + description + "This flag has the value of 'true' if and only if the RIB + is the default RIB for the given address family. + + By default, control-plane protocols place their routes + in the default RIBs."; + } + container routes { + config false; + description + "Current contents of the RIB."; + list route { + description + "A RIB route entry. This data node MUST be augmented + with information specific to routes of each address + family."; + leaf route-preference { + type route-preference; + description + "This route attribute, also known as 'administrative + distance', allows for selecting the preferred route + among routes with the same destination prefix. A + smaller value indicates a route that is + more preferred."; + } + container next-hop { + description + "Route's next-hop attribute."; + uses next-hop-state-content; + } + uses route-metadata; + } + } + action active-route { + description + "Return the active RIB route that is used for the + destination address. + + Address-family-specific modules MUST augment input + parameters with a leaf named 'destination-address'."; + output { + container route { + description + "The active RIB route for the specified destination. + + If no route exists in the RIB for the destination + address, no output is returned. + + Address-family-specific modules MUST augment this + container with appropriate route contents."; + container next-hop { + description + "Route's next-hop attribute."; + uses next-hop-state-content; + } + uses route-metadata; + } + } + } + leaf description { + type string; + description + "Textual description of the RIB."; + } + } + } + } + + /* + * The subsequent data nodes are obviated and obsoleted + * by the Network Management Datastore Architecture + * as described in RFC 8342. + */ + container routing-state { + config false; + status obsolete; + description + "State data of the routing subsystem."; + uses router-id { + status obsolete; + description + "Global router ID. + + It may be either configured or assigned algorithmically by + the implementation."; + } + container interfaces { + status obsolete; + description + "Network-layer interfaces used for routing."; + leaf-list interface { + type if:interface-state-ref; + status obsolete; + description + "Each entry is a reference to the name of a configured + network-layer interface."; + } + } + container control-plane-protocols { + status obsolete; + description + "Container for the list of routing protocol instances."; + list control-plane-protocol { + key "type name"; + status obsolete; + description + "State data of a control-plane protocol instance. + + An implementation MUST provide exactly one + system-controlled instance of the 'direct' + pseudo-protocol. Instances of other control-plane + protocols MAY be created by configuration."; + leaf type { + type identityref { + base control-plane-protocol; + } + status obsolete; + description + "Type of the control-plane protocol."; + } + leaf name { + type string; + status obsolete; + description + "The name of the control-plane protocol instance. + + For system-controlled instances, this name is + persistent, i.e., it SHOULD NOT change across + reboots."; + } + } + } + container ribs { + status obsolete; + description + "Container for RIBs."; + list rib { + key "name"; + min-elements 1; + status obsolete; + description + "Each entry represents a RIB identified by the 'name' + key. All routes in a RIB MUST belong to the same address + family. + + An implementation SHOULD provide one system-controlled + default RIB for each supported address family."; + leaf name { + type string; + status obsolete; + description + "The name of the RIB."; + } + uses address-family { + status obsolete; + description + "The address family of the RIB."; + } + leaf default-rib { + if-feature "multiple-ribs"; + type boolean; + default "true"; + status obsolete; + description + "This flag has the value of 'true' if and only if the + RIB is the default RIB for the given address family. + + By default, control-plane protocols place their routes + in the default RIBs."; + } + container routes { + status obsolete; + description + "Current contents of the RIB."; + list route { + status obsolete; + description + "A RIB route entry. This data node MUST be augmented + with information specific to routes of each address + family."; + leaf route-preference { + type route-preference; + status obsolete; + description + "This route attribute, also known as 'administrative + distance', allows for selecting the preferred route + among routes with the same destination prefix. A + smaller value indicates a route that is + more preferred."; + } + container next-hop { + status obsolete; + description + "Route's next-hop attribute."; + uses next-hop-state-content { + status obsolete; + description + "Route's next-hop attribute operational state."; + } + } + uses route-metadata { + status obsolete; + description + "Route metadata."; + } + } + } + action active-route { + status obsolete; + description + "Return the active RIB route that is used for the + destination address. + + Address-family-specific modules MUST augment input + parameters with a leaf named 'destination-address'."; + output { + container route { + status obsolete; + description + "The active RIB route for the specified + destination. + + If no route exists in the RIB for the destination + address, no output is returned. + + Address-family-specific modules MUST augment this + container with appropriate route contents."; + container next-hop { + status obsolete; + description + "Route's next-hop attribute."; + uses next-hop-state-content { + status obsolete; + description + "Active route state data."; + } + } + uses route-metadata { + status obsolete; + description + "Active route metadata."; + } + } + } + } + } + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang new file mode 100644 index 000000000..67be760a1 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang @@ -0,0 +1,835 @@ +module ietf-te-packet-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-packet-types"; + prefix te-packet-types; + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-te-types { + prefix te-types; + reference + "RFC XXXX: Common YANG Data Types for Traffic Engineering"; + } + + // RFC Editor: replace XXXX with actual RFC number + // and remove this note + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + description + "This YANG module contains a collection of generally useful YANG + data type definitions specific to Packet Traffic Engineering + (TE). + + The model conforms to the Network Management Datastore + Architecture (NMDA). + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2025 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2025-01-24 { + description + "This revision adds the following new identities: + - bandwidth-profile-type; + - link-metric-delay-variation; + - link-metric-loss; + - path-metric-delay-variation; + - path-metric-loss. + + This revision adds the following new groupings: + - bandwidth-profile-parameters; + - te-packet-path-bandwidth; + - te-packet-link-bandwidth. + + This revision provides also few editorial changes."; + reference + "RFC XXXX: Common YANG Data Types for Traffic Engineering"; + } + + // RFC Editor: replace XXXX with actual RFC number, update date + // information and remove this note + + revision 2020-06-10 { + description + "Latest revision of TE MPLS types."; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + + /* + * Identities + */ + + identity bandwidth-profile-type { + description + "Bandwidth Profile Types"; + } + + identity mef-10 { + base bandwidth-profile-type; + description + "MEF 10 Bandwidth Profile"; + reference + "MEF 10.3: Ethernet Services Attributes Phase 3"; + } + + identity rfc-2697 { + base bandwidth-profile-type; + description + "RFC 2697 Bandwidth Profile"; + reference + "RFC 2697: A Single Rate Three Color Marker"; + } + + identity rfc-2698 { + base bandwidth-profile-type; + description + "RFC 2698 Bandwidth Profile"; + reference + "RFC 2698: A Two Rate Three Color Marker"; + } + + // Derived identities from te-types:link-metric-type + + identity link-metric-delay-variation { + base te-types:link-metric-type; + description + "The Unidirectional Delay Variation Metric, + measured in units of microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions, + Section 4.3 + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions, + Section 4.3"; + } + + identity link-metric-loss { + base te-types:link-metric-type; + description + "The Unidirectional Link Loss Metric, + measured in units of 0.000003%."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions, + Section 4.4 + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions, + Section 4.4"; + } + + // Derived identities from te-types:link-metric-type + + identity path-metric-delay-variation { + base te-types:path-metric-type; + description + "The Path Delay Variation Metric, + measured in units of microseconds."; + reference + "RFC 8233: Extensions to the Path Computation Element + Communication Protocol (PCEP) to Compute + Service-Aware Label Switched Paths (LSPs), + Section 3.1.2"; + } + + identity path-metric-loss { + base te-types:path-metric-type; + description + "The Path Loss Metric, measured in units of 0.000003%."; + reference + "RFC 8233: Extensions to the Path Computation Element + Communication Protocol (PCEP) to Compute + Service-Aware Label Switched Paths (LSPs), + Section 3.1.3"; + } + + identity backup-protection-type { + description + "Base identity for the backup protection type."; + } + + identity backup-protection-link { + base backup-protection-type; + description + "Backup provides link protection only."; + } + + identity backup-protection-node-link { + base backup-protection-type; + description + "Backup offers node (preferred) or link protection."; + } + + identity bc-model-type { + description + "Base identity for the Diffserv-TE Bandwidth Constraints + Model type."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + identity bc-model-rdm { + base bc-model-type; + description + "Russian Dolls Bandwidth Constraints Model type."; + reference + "RFC 4127: Russian Dolls Bandwidth Constraints Model for + Diffserv-aware MPLS Traffic Engineering"; + } + + identity bc-model-mam { + base bc-model-type; + description + "Maximum Allocation Bandwidth Constraints Model type."; + reference + "RFC 4125: Maximum Allocation Bandwidth Constraints Model for + Diffserv-aware MPLS Traffic Engineering"; + } + + identity bc-model-mar { + base bc-model-type; + description + "Maximum Allocation with Reservation Bandwidth Constraints + Model type."; + reference + "RFC 4126: Max Allocation with Reservation Bandwidth + Constraints Model for Diffserv-aware MPLS Traffic + Engineering & Performance Comparisons"; + } + + /* + * Typedefs + */ + + typedef te-bandwidth-requested-type { + type enumeration { + enum specified-value { + description + "Bandwidth value is explicitly specified."; + } + enum specified-profile { + description + "Bandwidth profile is explicitly specified."; + } + enum auto { + description + "Bandwidth is automatically computed."; + } + } + description + "Enumerated type for specifying whether bandwidth is + explicitly specified or automatically computed."; + } + + typedef te-class-type { + type uint8; + description + "Diffserv-TE Class-Type. + Defines a set of Traffic Trunks crossing a link that is + governed by a specific set of bandwidth constraints. + + Class-Type is used for the purposes of link bandwidth + allocation, constraint-based routing, and admission control."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + typedef bc-type { + type uint8 { + range "0..7"; + } + description + "Diffserv-TE bandwidth constraints as defined in RFC 4124."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + typedef bandwidth-kbps { + type uint64; + units "kilobits per second"; + description + "Bandwidth values, expressed in kilobits per second."; + } + + typedef bandwidth-mbps { + type uint64; + units "megabits per second"; + description + "Bandwidth values, expressed in megabits per second."; + } + + typedef bandwidth-gbps { + type uint64; + units "gigabits per second"; + description + "Bandwidth values, expressed in gigabits per second."; + } + + /* + * Groupings + */ + + grouping performance-metrics-attributes-packet { + description + "Contains Performance Metrics (PM) information."; + uses te-types:performance-metrics-attributes { + augment "performance-metrics-one-way" { + description + "Performance Metrics (PM) one-way packet-specific + augmentation for a generic PM grouping."; + leaf one-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way minimum delay or latency."; + } + leaf one-way-min-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way minimum delay or latency normality."; + } + leaf one-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way maximum delay or latency."; + } + leaf one-way-max-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way maximum delay or latency normality."; + } + leaf one-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way delay variation."; + reference + "RFC 5481: Packet Delay Variation Applicability + Statement, Section 4.2"; + } + leaf one-way-delay-variation-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way delay variation normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + description + "One-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.4"; + } + leaf one-way-packet-loss-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Packet loss normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + } + augment "performance-metrics-two-way" { + description + "Performance Metrics (PM) two-way packet-specific + augmentation for a generic PM grouping."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE + Metric Extensions"; + leaf two-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way minimum delay or latency."; + } + leaf two-way-min-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way minimum delay or latency normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf two-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way maximum delay or latency."; + } + leaf two-way-max-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way maximum delay or latency normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf two-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way delay variation."; + reference + "RFC 5481: Packet Delay Variation Applicability + Statement, Section 4.2"; + } + leaf two-way-delay-variation-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way delay variation normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + default "0"; + description + "Two-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + } + leaf two-way-packet-loss-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way packet loss normality."; + } + } + } + } + + grouping one-way-performance-metrics-packet { + description + "One-way packet Performance Metrics (PM) throttle grouping."; + leaf one-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way minimum delay or latency."; + } + leaf one-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way maximum delay or latency."; + } + leaf one-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way delay variation."; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + default "0"; + description + "One-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + } + } + + grouping one-way-performance-metrics-gauge-packet { + description + "One-way packet Performance Metrics (PM) throttle grouping. + + This grouping is used to report the same metrics defined in + the one-way-performance-metrics-packet grouping, using gauges + instead of uint32 data types and referencing IPPM RFCs + instead of IGP-TE RFCs."; + leaf one-way-min-delay { + type yang:gauge64; + units "microseconds"; + description + "One-way minimum delay or latency."; + } + leaf one-way-max-delay { + type yang:gauge64; + units "microseconds"; + description + "One-way maximum delay or latency."; + reference + "RFC 7679: A One-Way Delay Metric for IP Performance + Metrics (IPPM)"; + } + leaf one-way-delay-variation { + type yang:gauge64; + units "microseconds"; + description + "One-way delay variation."; + reference + "RFC 3393: IP Packet Delay Variation Metric for IP + Performance Metrics (IPPM)"; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 5; + range "0..100"; + } + description + "The ratio of packets dropped to packets transmitted between + two endpoints."; + reference + "RFC 7680: A One-Way Loss Metric for IP Performance + Metrics (IPPM)"; + } + } + + grouping two-way-performance-metrics-packet { + description + "Two-way packet Performance Metrics (PM) throttle grouping."; + leaf two-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way minimum delay or latency."; + } + leaf two-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way maximum delay or latency."; + } + leaf two-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way delay variation."; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + default "0"; + description + "Two-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + } + } + + grouping two-way-performance-metrics-gauge-packet { + description + "Two-way packet Performance Metrics (PM) throttle grouping. + + This grouping is used to report the same metrics defined in + the two-way-performance-metrics-packet grouping, using gauges + instead of uint32 data types and referencing IPPM RFCs + instead of IGP-TE RFCs."; + leaf two-way-min-delay { + type yang:gauge64; + units "microseconds"; + description + "Two-way minimum delay or latency."; + reference + "RFC 2681: A Round-trip Delay Metric for IPPM"; + } + leaf two-way-max-delay { + type yang:gauge64; + units "microseconds"; + description + "Two-way maximum delay or latency."; + reference + "RFC 2681: A Round-trip Delay Metric for IPPM"; + } + leaf two-way-delay-variation { + type yang:gauge64; + units "microseconds"; + description + "Two-way delay variation."; + reference + "RFC 5481: Packet Delay Variation Applicability Statement"; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 5; + range "0..100"; + } + description + "The ratio of packets dropped to packets transmitted between + two endpoints."; + } + } + + grouping performance-metrics-throttle-container-packet { + description + "Packet Performance Metrics (PM) threshold grouping."; + uses te-types:performance-metrics-throttle-container { + augment "throttle/threshold-out" { + description + "Performance Metrics (PM) threshold-out packet + augmentation for a generic grouping."; + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + } + augment "throttle/threshold-in" { + description + "Performance Metrics (PM) threshold-in packet augmentation + for a generic grouping."; + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + } + augment "throttle/threshold-accelerated-advertisement" { + description + "Performance Metrics (PM) accelerated advertisement packet + augmentation for a generic grouping."; + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + } + } + } + + grouping bandwidth-profile-parameters { + description + "Common parameters to define bandwidth profiles in packet + networks."; + leaf cir { + type uint64; + units "bits per second"; + description + "Committed Information Rate (CIR)."; + } + leaf cbs { + type uint64; + units "bytes"; + description + "Committed Burst Size (CBS)."; + } + leaf eir { + type uint64; + units "bits per second"; + description + "Excess Information Rate (EIR)."; + } + leaf ebs { + type uint64; + units "bytes"; + description + "Excess Burst Size (EBS)."; + } + leaf pir { + type uint64; + units "bits per second"; + description + "Peak Information Rate (PIR)."; + } + leaf pbs { + type uint64; + units "bytes"; + description + "Peak Burst Size (PBS)."; + } + } + + grouping te-packet-path-bandwidth { + description + "Bandwidth attributes for TE Packet paths."; + container packet-bandwidth { + description + "Bandwidth attributes for TE Packet paths."; + leaf specification-type { + type te-bandwidth-requested-type; + description + "The bandwidth specification type, either explicitly + specified or automatically computed."; + } + leaf set-bandwidth { + when "../specification-type = 'specified-value'" { + description + "When the bandwidth value is explicitly specified."; + } + type bandwidth-kbps; + description + "Set the bandwidth value explicitly, e.g., using offline + calculation."; + } + container bandwidth-profile { + when "../specification-type = 'specified-profile'" { + description + "When the bandwidth profile is explicitly specified."; + } + description + "Set the bandwidth profile attributes explicitly."; + leaf bandwidth-profile-name { + type string; + description + "Name of Bandwidth Profile."; + } + leaf bandwidth-profile-type { + type identityref { + base bandwidth-profile-type; + } + description + "Type of Bandwidth Profile."; + } + uses bandwidth-profile-parameters; + } + leaf class-type { + type te-types:te-ds-class; + description + "The Class-Type of traffic transported by the LSP."; + reference + "RFC 4124: Protocol Extensions for Support of + Diffserv-aware MPLS Traffic Engineering, + Section 4.3.1"; + } + leaf signaled-bandwidth { + type te-packet-types:bandwidth-kbps; + config false; + description + "The currently signaled bandwidth of the LSP. + + In the case where the bandwidth is specified + explicitly, then this will match the value of the + set-bandwidth leaf. + + In the cases where the bandwidth is dynamically + computed by the system, the current value of the + bandwidth should be reflected."; + } + } + } + + grouping te-packet-link-bandwidth { + description + "Bandwidth attributes for Packet TE links."; + leaf packet-bandwidth { + type uint64; + units "bits per second"; + description + "Bandwidth value for Packet TE links."; + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang new file mode 100644 index 000000000..0b8801bf7 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang @@ -0,0 +1,734 @@ +module ietf-te-topology-packet { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-packet"; + + prefix "tet-pkt"; + + import ietf-network { + prefix "nw"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-routing-types { + prefix "rt-types"; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference + "I-D.ietf-teas-rfc8776-update: Common YANG Data Types for + Traffic Engineering"; + } + + import ietf-te-packet-types { + prefix "te-packet-types"; + reference + "I-D.ietf-teas-rfc8776-update: Common YANG Data Types for + Traffic Engineering"; + } + + organization + "Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + + contact + "WG Web: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez De Dios + "; + + description + "YANG data model for representing and manipulating PSC (Packet + Switching) TE Topologies. + + Copyright (c) 2024 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2024-06-08 { + description + "Initial revision"; + reference + "RFC XXXX: YANG Data Model for Layer 3 TE Topologies"; + } + + /* + * Features + */ + + feature te-performance-metric { + description + "This feature indicates that the system supports + TE performance metric."; + reference + "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. + RFC8570: IS-IS Traffic Engineering (TE) Metric Extensions. + RFC7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + } + + /* + * Groupings + */ + grouping packet-switch-capable-container { + description + "The container of packet switch capable attributes."; + container packet-switch-capable { + description + "Interface has packet-switching capabilities."; + leaf minimum-lsp-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Minimum LSP Bandwidth. Units in bytes per second"; + } + leaf interface-mtu { + type uint16; + description + "Interface MTU."; + } + } + } + + /* + * Augmentations + */ + /* Augmentations to network-types */ + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + description + "Defines the packet TE topology type."; + container packet { + presence + "Indicates packet TE topology."; + description + "Its presence identifies the packet TE topology type."; + } + } + + /* Augmentations to connectivity-matrix */ + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + /* Augmentations to tunnel-termination-point */ + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + /* Augmentations to te-link-attributes */ + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes" { + when "tet:interface-switching-capability " + + "[tet:switching-capability = 'te-types:switching-psc1']" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes" { + when "(../../../nw:network-types/tet:te-topology/tet-pkt:packet)" + + " and (tet:interface-switching-capability " + + "[tet:switching-capability = 'te-types:switching-psc1'])" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry" { + when "(../../../nw:network-types/tet:te-topology/tet-pkt:packet)" + + " and (tet:interface-switching-capability " + + "[tet:switching-capability = 'te-types:switching-psc1'])" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + /* Augmentations to interface-switching-capability */ + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability" { + when "tet:switching-capability = 'te-types:switching-psc1' " { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses packet-switch-capable-container; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability" { + when "(../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet) and " + + "(tet:switching-capability = 'te-types:switching-psc1')" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses packet-switch-capable-container; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability" { + when "(../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet) and " + + "(tet:switching-capability = 'te-types:switching-psc1')" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses packet-switch-capable-container; + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum TE bandwidth the TE link template"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment unreserved TE bandwidth the TE link template"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang new file mode 100644 index 000000000..6d76a77b2 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang @@ -0,0 +1,1952 @@ +module ietf-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; + prefix tet; + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-te-types { + prefix te-types; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix nt; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez de Dios + "; + description + "This YANG module defines a TE topology model for representing, + retrieving, and manipulating technology-agnostic TE topologies. + + Copyright (c) 2020 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8795; see the + RFC itself for full legal notices."; + + revision 2020-08-06 { + description + "Initial revision."; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + + /* + * Features + */ + + feature nsrlg { + description + "This feature indicates that the system supports NSRLGs + (Non-Shared Risk Link Groups)."; + } + + feature te-topology-hierarchy { + description + "This feature indicates that the system allows an underlay + and/or overlay TE topology hierarchy."; + } + + feature template { + description + "This feature indicates that the system supports + template configuration."; + } + + /* + * Typedefs + */ + + typedef geographic-coordinate-degree { + type decimal64 { + fraction-digits 8; + } + description + "Decimal degree (DD) used to express latitude and longitude + geographic coordinates."; + } + // geographic-coordinate-degree + + typedef te-info-source { + type enumeration { + enum unknown { + description + "The source is unknown."; + } + enum locally-configured { + description + "Configured entity."; + } + enum ospfv2 { + description + "OSPFv2."; + } + enum ospfv3 { + description + "OSPFv3."; + } + enum isis { + description + "IS-IS."; + } + enum bgp-ls { + description + "BGP-LS."; + reference + "RFC 7752: North-Bound Distribution of Link-State and + Traffic Engineering (TE) Information Using BGP"; + } + enum system-processed { + description + "System-processed entity."; + } + enum other { + description + "Other source."; + } + } + description + "Describes the type of source that has provided the + related information, and the source's credibility."; + } + // te-info-source + + /* + * Groupings + */ + + grouping connectivity-matrix-entry-path-attributes { + description + "Attributes of a connectivity matrix entry."; + leaf is-allowed { + type boolean; + description + "'true' - switching is allowed; + 'false' - switching is disallowed."; + } + container underlay { + if-feature "te-topology-hierarchy"; + description + "Attributes of the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + uses te-link-underlay-attributes; + } + uses te-types:generic-path-constraints; + uses te-types:generic-path-optimization; + uses te-types:generic-path-properties; + } + // connectivity-matrix-entry-path-attributes + + grouping geolocation-container { + description + "Contains a GPS location."; + container geolocation { + config false; + description + "Contains a GPS location."; + leaf altitude { + type int64; + units "millimeters"; + description + "Distance above sea level."; + } + leaf latitude { + type geographic-coordinate-degree { + range "-90..90"; + } + description + "Relative position north or south on the Earth's surface."; + } + leaf longitude { + type geographic-coordinate-degree { + range "-180..180"; + } + description + "Angular distance east or west on the Earth's surface."; + } + } + // geolocation + } + // geolocation-container + + grouping information-source-state-attributes { + description + "The attributes identifying the source that has provided the + related information, and the source's credibility."; + leaf credibility-preference { + type uint16; + description + "The preference value for calculating the Traffic + Engineering database credibility value used for + tie-break selection between different information-source + values. A higher value is preferable."; + } + leaf logical-network-element { + type string; + description + "When applicable, this is the name of a logical network + element from which the information is learned."; + } + leaf network-instance { + type string; + description + "When applicable, this is the name of a network instance + from which the information is learned."; + } + } + // information-source-state-attributes + + grouping information-source-per-link-attributes { + description + "Per-node container of the attributes identifying the source + that has provided the related information, and the source's + credibility."; + leaf information-source { + type te-info-source; + config false; + description + "Indicates the type of information source."; + } + leaf information-source-instance { + type string; + config false; + description + "The name indicating the instance of the information + source."; + } + container information-source-state { + config false; + description + "Contains state attributes related to the information + source."; + uses information-source-state-attributes; + container topology { + description + "When the information is processed by the system, + the attributes in this container indicate which topology + is used to generate the result information."; + uses nt:link-ref; + } + } + } + // information-source-per-link-attributes + + grouping information-source-per-node-attributes { + description + "Per-node container of the attributes identifying the source + that has provided the related information, and the source's + credibility."; + leaf information-source { + type te-info-source; + config false; + description + "Indicates the type of information source."; + } + leaf information-source-instance { + type string; + config false; + description + "The name indicating the instance of the information + source."; + } + container information-source-state { + config false; + description + "Contains state attributes related to the information + source."; + uses information-source-state-attributes; + container topology { + description + "When the information is processed by the system, + the attributes in this container indicate which topology + is used to generate the result information."; + uses nw:node-ref; + } + } + } + // information-source-per-node-attributes + + grouping interface-switching-capability-list { + description + "List of Interface Switching Capability Descriptors (ISCDs)."; + list interface-switching-capability { + key "switching-capability encoding"; + description + "List of ISCDs for this link."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description + RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for this interface."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by this interface."; + } + uses te-link-iscd-attributes; + } + // interface-switching-capability + } + // interface-switching-capability-list + + grouping statistics-per-link { + description + "Statistics attributes per TE link."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + /* Administrative attributes */ + leaf disables { + type yang:counter32; + description + "Number of times that a link was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a link was enabled."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a link was taken out of maintenance."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a link was put in maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a link was modified."; + } + /* Operational attributes */ + leaf downs { + type yang:counter32; + description + "Number of times that a link was set to an operational state + of 'down'."; + } + leaf ups { + type yang:counter32; + description + "Number of times that a link was set to an operational state + of 'up'."; + } + /* Recovery attributes */ + leaf fault-clears { + type yang:counter32; + description + "Number of times that a link experienced a fault-clear + event."; + } + leaf fault-detects { + type yang:counter32; + description + "Number of times that a link experienced fault detection."; + } + leaf protection-switches { + type yang:counter32; + description + "Number of times that a link experienced protection + switchover."; + } + leaf protection-reverts { + type yang:counter32; + description + "Number of times that a link experienced protection + reversion."; + } + leaf restoration-failures { + type yang:counter32; + description + "Number of times that a link experienced restoration + failure."; + } + leaf restoration-starts { + type yang:counter32; + description + "Number of times that a link experienced restoration + start."; + } + leaf restoration-successes { + type yang:counter32; + description + "Number of times that a link experienced restoration + success."; + } + leaf restoration-reversion-failures { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion failure."; + } + leaf restoration-reversion-starts { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion start."; + } + leaf restoration-reversion-successes { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion success."; + } + } + // statistics-per-link + + grouping statistics-per-node { + description + "Statistics attributes per TE node."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + container node { + description + "Contains statistics attributes at the TE node level."; + leaf disables { + type yang:counter32; + description + "Number of times that a node was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a node was enabled."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a node was put in maintenance."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a node was taken out of + maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a node was modified."; + } + } + // node + container connectivity-matrix-entry { + description + "Contains statistics attributes at the level of a + connectivity matrix entry."; + leaf creates { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + created."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'create' operation"; + } + leaf deletes { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + deleted."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'delete' operation"; + } + leaf disables { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + enabled."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + modified."; + } + } + // connectivity-matrix-entry + } + // statistics-per-node + + grouping statistics-per-ttp { + description + "Statistics attributes per TE TTP (Tunnel Termination Point)."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + container tunnel-termination-point { + description + "Contains statistics attributes at the TE TTP level."; + /* Administrative attributes */ + leaf disables { + type yang:counter32; + description + "Number of times that a TTP was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a TTP was enabled."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a TTP was taken out of maintenance."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a TTP was put in maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a TTP was modified."; + } + /* Operational attributes */ + leaf downs { + type yang:counter32; + description + "Number of times that a TTP was set to an operational state + of 'down'."; + } + leaf ups { + type yang:counter32; + description + "Number of times that a TTP was set to an operational state + of 'up'."; + } + leaf in-service-clears { + type yang:counter32; + description + "Number of times that a TTP was taken out of service + (TE tunnel was released)."; + } + leaf in-service-sets { + type yang:counter32; + description + "Number of times that a TTP was put in service by a TE + tunnel (TE tunnel was set up)."; + } + } + // tunnel-termination-point + container local-link-connectivity { + description + "Contains statistics attributes at the TE LLCL (Local Link + Connectivity List) level."; + leaf creates { + type yang:counter32; + description + "Number of times that an LLCL entry was created."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'create' operation"; + } + leaf deletes { + type yang:counter32; + description + "Number of times that an LLCL entry was deleted."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'delete' operation"; + } + leaf disables { + type yang:counter32; + description + "Number of times that an LLCL entry was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that an LLCL entry was enabled."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that an LLCL entry was modified."; + } + } + // local-link-connectivity + } + // statistics-per-ttp + + grouping te-link-augment { + description + "Augmentation for a TE link."; + uses te-link-config; + uses te-link-state-derived; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-link; + } + } + // te-link-augment + + grouping te-link-config { + description + "TE link configuration grouping."; + choice bundle-stack-level { + description + "The TE link can be partitioned into bundled links or + component links."; + case bundle { + container bundled-links { + description + "A set of bundled links."; + reference + "RFC 4201: Link Bundling in MPLS Traffic + Engineering (TE)"; + list bundled-link { + key "sequence"; + description + "Specifies a bundled interface that is + further partitioned."; + leaf sequence { + type uint32; + description + "Identifies the sequence in the bundle."; + } + } + } + } + case component { + container component-links { + description + "A set of component links."; + list component-link { + key "sequence"; + description + "Specifies a component interface that is + sufficient to unambiguously identify the + appropriate resources."; + leaf sequence { + type uint32; + description + "Identifies the sequence in the bundle."; + } + leaf src-interface-ref { + type string; + description + "Reference to a component link interface on the + source node."; + } + leaf des-interface-ref { + type string; + description + "Reference to a component link interface on the + destination node."; + } + } + } + } + } + // bundle-stack-level + leaf-list te-link-template { + if-feature "template"; + type leafref { + path "../../../../te/templates/link-template/name"; + } + description + "The reference to a TE link template."; + } + uses te-link-config-attributes; + } + // te-link-config + + grouping te-link-config-attributes { + description + "Link configuration attributes in a TE topology."; + container te-link-attributes { + description + "Link attributes in a TE topology."; + leaf access-type { + type te-types:te-link-access-type; + description + "Link access type, which can be point-to-point or + multi-access."; + } + container external-domain { + description + "For an inter-domain link, specifies the attributes of + the remote end of the link, to facilitate the signaling at + the local end."; + uses nw:network-ref; + leaf remote-te-node-id { + type te-types:te-node-id; + description + "Remote TE node identifier, used together with + 'remote-te-link-tp-id' to identify the remote Link + Termination Point (LTP) in a different domain."; + } + leaf remote-te-link-tp-id { + type te-types:te-tp-id; + description + "Remote TE LTP identifier, used together with + 'remote-te-node-id' to identify the remote LTP in a + different domain."; + } + } + leaf is-abstract { + type empty; + description + "Present if the link is abstract."; + } + leaf name { + type string; + description + "Link name."; + } + container underlay { + if-feature "te-topology-hierarchy"; + description + "Attributes of the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + uses te-link-underlay-attributes; + } + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-link-info-attributes; + } + // te-link-attributes + } + // te-link-config-attributes + + grouping te-link-info-attributes { + description + "Advertised TE information attributes."; + leaf link-index { + type uint64; + description + "The link identifier. If OSPF is used, this object + represents an ospfLsdbID. If IS-IS is used, this object + represents an isisLSPID. If a locally configured link is + used, this object represents a unique value, which is + locally defined in a router."; + } + leaf administrative-group { + type te-types:admin-groups; + description + "Administrative group or color of the link. + This attribute covers both administrative groups (defined + in RFCs 3630 and 5305) and Extended Administrative Groups + (defined in RFC 7308)."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + uses interface-switching-capability-list; + uses te-types:label-set-info; + leaf link-protection-type { + type identityref { + base te-types:link-protection-type; + } + description + "Link Protection Type desired for this link."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)"; + } + container max-link-bandwidth { + uses te-types:te-bandwidth; + description + "Maximum bandwidth that can be seen on this link in this + direction. Units are in bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + container max-resv-link-bandwidth { + uses te-types:te-bandwidth; + description + "Maximum amount of bandwidth that can be reserved in this + direction in this link. Units are in bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + list unreserved-bandwidth { + key "priority"; + max-elements 8; + description + "Unreserved bandwidth for priority levels 0-7. Units are in + bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + leaf priority { + type uint8 { + range "0..7"; + } + description + "Priority."; + } + uses te-types:te-bandwidth; + } + leaf te-default-metric { + type uint32; + description + "Traffic Engineering metric."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + leaf te-delay-metric { + type uint32; + description + "Traffic Engineering delay metric."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions"; + } + leaf te-igp-metric { + type uint32; + description + "IGP metric used for Traffic Engineering."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a + second MPLS Traffic Engineering (TE) Metric"; + } + container te-srlgs { + description + "Contains a list of SRLGs."; + leaf-list value { + type te-types:srlg; + description + "SRLG value."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)"; + } + } + container te-nsrlgs { + if-feature "nsrlg"; + description + "Contains a list of NSRLGs (Non-Shared Risk Link Groups). + When an abstract TE link is configured, this list specifies + the request that underlay TE paths need to be mutually + disjoint with other TE links in the same groups."; + leaf-list id { + type uint32; + description + "NSRLG ID, uniquely configured within a topology."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + } + } + // te-link-info-attributes + + grouping te-link-iscd-attributes { + description + "TE link ISCD attributes."; + reference + "RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), Section 1.4"; + list max-lsp-bandwidth { + key "priority"; + max-elements 8; + description + "Maximum Label Switched Path (LSP) bandwidth at + priorities 0-7."; + leaf priority { + type uint8 { + range "0..7"; + } + description + "Priority."; + } + uses te-types:te-bandwidth; + } + } + // te-link-iscd-attributes + + grouping te-link-state-derived { + description + "Link state attributes in a TE topology."; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the link."; + } + leaf is-transitional { + type empty; + config false; + description + "Present if the link is transitional; used as an + alternative approach in lieu of 'inter-layer-lock-id' + for path computation in a TE topology covering multiple + layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + uses information-source-per-link-attributes; + list information-source-entry { + key "information-source information-source-instance"; + config false; + description + "A list of information sources learned, including the source + that is used."; + uses information-source-per-link-attributes; + uses te-link-info-attributes; + } + container recovery { + config false; + description + "Status of the recovery process."; + leaf restoration-status { + type te-types:te-recovery-status; + description + "Restoration status."; + } + leaf protection-status { + type te-types:te-recovery-status; + description + "Protection status."; + } + } + container underlay { + if-feature "te-topology-hierarchy"; + config false; + description + "State attributes for the TE link underlay."; + leaf dynamic { + type boolean; + description + "'true' if the underlay is dynamically created."; + } + leaf committed { + type boolean; + description + "'true' if the underlay is committed."; + } + } + } + // te-link-state-derived + + grouping te-link-underlay-attributes { + description + "Attributes for the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + leaf enabled { + type boolean; + description + "'true' if the underlay is enabled. + 'false' if the underlay is disabled."; + } + container primary-path { + description + "The service path on the underlay topology that + supports this link."; + uses nw:network-ref; + list path-element { + key "path-element-id"; + description + "A list of path elements describing the service path."; + leaf path-element-id { + type uint32; + description + "To identify the element in a path."; + } + uses te-path-element; + } + } + // primary-path + list backup-path { + key "index"; + description + "A list of backup service paths on the underlay topology that + protect the underlay primary path. If the primary path is + not protected, the list contains zero elements. If the + primary path is protected, the list contains one or more + elements."; + leaf index { + type uint32; + description + "A sequence number to identify a backup path."; + } + uses nw:network-ref; + list path-element { + key "path-element-id"; + description + "A list of path elements describing the backup service + path."; + leaf path-element-id { + type uint32; + description + "To identify the element in a path."; + } + uses te-path-element; + } + } + // backup-path + leaf protection-type { + type identityref { + base te-types:lsp-protection-type; + } + description + "Underlay protection type desired for this link."; + } + container tunnel-termination-points { + description + "Underlay TTPs desired for this link."; + leaf source { + type binary; + description + "Source TTP identifier."; + } + leaf destination { + type binary; + description + "Destination TTP identifier."; + } + } + container tunnels { + description + "Underlay TE tunnels supporting this TE link."; + leaf sharing { + type boolean; + default "true"; + description + "'true' if the underlay tunnel can be shared with other + TE links; + 'false' if the underlay tunnel is dedicated to this + TE link. + This leaf is the default option for all TE tunnels + and may be overridden by the per-TE-tunnel value."; + } + list tunnel { + key "tunnel-name"; + description + "Zero, one, or more underlay TE tunnels that support this + TE link."; + leaf tunnel-name { + type string; + description + "A tunnel name uniquely identifies an underlay TE tunnel, + used together with the 'source-node' value for this + link."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf sharing { + type boolean; + description + "'true' if the underlay tunnel can be shared with other + TE links; + 'false' if the underlay tunnel is dedicated to this + TE link."; + } + } + // tunnel + } + // tunnels + } + // te-link-underlay-attributes + + grouping te-node-augment { + description + "Augmentation for a TE node."; + uses te-node-config; + uses te-node-state-derived; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-node; + } + list tunnel-termination-point { + key "tunnel-tp-id"; + description + "A termination point can terminate a tunnel."; + leaf tunnel-tp-id { + type binary; + description + "TTP identifier."; + } + uses te-node-tunnel-termination-point-config; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the TTP."; + } + uses geolocation-container; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-ttp; + } + // Relationship to other TTPs + list supporting-tunnel-termination-point { + key "node-ref tunnel-tp-ref"; + description + "Identifies the TTPs on which this TTP depends."; + leaf node-ref { + type inet:uri; + description + "This leaf identifies the node in which the supporting + TTP is present. + This node is either the supporting node or a node in + an underlay topology."; + } + leaf tunnel-tp-ref { + type binary; + description + "Reference to a TTP that is in either the supporting node + or a node in an underlay topology."; + } + } + // supporting-tunnel-termination-point + } + // tunnel-termination-point + } + // te-node-augment + + grouping te-node-config { + description + "TE node configuration grouping."; + leaf-list te-node-template { + if-feature "template"; + type leafref { + path "../../../../te/templates/node-template/name"; + } + description + "The reference to a TE node template."; + } + uses te-node-config-attributes; + } + // te-node-config + + grouping te-node-config-attributes { + description + "Configuration node attributes in a TE topology."; + container te-node-attributes { + description + "Contains node attributes in a TE topology."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-node-connectivity-matrices; + uses te-node-info-attributes; + } + } + // te-node-config-attributes + + grouping te-node-config-attributes-template { + description + "Configuration node attributes for a template in a TE + topology."; + container te-node-attributes { + description + "Contains node attributes in a TE topology."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-node-info-attributes; + } + } + // te-node-config-attributes-template + + grouping te-node-connectivity-matrices { + description + "Connectivity matrix on a TE node."; + container connectivity-matrices { + description + "Contains a connectivity matrix on a TE node."; + leaf number-of-entries { + type uint16; + description + "The number of connectivity matrix entries. + If this number is specified in the configuration request, + the number is the requested number of entries, which may + not all be listed in the list; + if this number is reported in the state data, + the number is the current number of operational entries."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + list connectivity-matrix { + key "id"; + description + "Represents a node's switching limitations, i.e., + limitations in the interconnecting network TE links + across the node."; + reference + "RFC 7579: General Network Element Constraint Encoding + for GMPLS-Controlled Networks"; + leaf id { + type uint32; + description + "Identifies the connectivity matrix entry."; + } + } + // connectivity-matrix + } + // connectivity-matrices + } + // te-node-connectivity-matrices + + grouping te-node-connectivity-matrix-attributes { + description + "Termination point references of a connectivity matrix entry."; + container from { + description + "Reference to a source LTP."; + leaf tp-ref { + type leafref { + path "../../../../../../nt:termination-point/nt:tp-id"; + } + description + "Relative reference to a termination point."; + } + uses te-types:label-set-info; + } + container to { + description + "Reference to a destination LTP."; + leaf tp-ref { + type leafref { + path "../../../../../../nt:termination-point/nt:tp-id"; + } + description + "Relative reference to a termination point."; + } + uses te-types:label-set-info; + } + uses connectivity-matrix-entry-path-attributes; + } + // te-node-connectivity-matrix-attributes + + grouping te-node-info-attributes { + description + "Advertised TE information attributes."; + leaf domain-id { + type uint32; + description + "Identifies the domain to which this node belongs. + This attribute is used to support inter-domain links."; + reference + "RFC 5152: A Per-Domain Path Computation Method for + Establishing Inter-Domain Traffic Engineering (TE) + Label Switched Paths (LSPs) + RFC 5316: ISIS Extensions in Support of Inter-Autonomous + System (AS) MPLS and GMPLS Traffic Engineering + RFC 5392: OSPF Extensions in Support of Inter-Autonomous + System (AS) MPLS and GMPLS Traffic Engineering"; + } + leaf is-abstract { + type empty; + description + "Present if the node is abstract; not present if the node + is actual."; + } + leaf name { + type string; + description + "Node name."; + } + leaf-list signaling-address { + type inet:ip-address; + description + "The node's signaling address."; + } + container underlay-topology { + if-feature "te-topology-hierarchy"; + description + "When an abstract node encapsulates a topology, the + attributes in this container point to said topology."; + uses nw:network-ref; + } + } + // te-node-info-attributes + + grouping te-node-state-derived { + description + "Node state attributes in a TE topology."; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the node."; + } + uses geolocation-container; + leaf is-multi-access-dr { + type empty; + config false; + description + "The presence of this attribute indicates that this TE node + is a pseudonode elected as a designated router."; + reference + "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual + Environments + RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + uses information-source-per-node-attributes; + list information-source-entry { + key "information-source information-source-instance"; + config false; + description + "A list of information sources learned, including the source + that is used."; + uses information-source-per-node-attributes; + uses te-node-connectivity-matrices; + uses te-node-info-attributes; + } + } + // te-node-state-derived + + grouping te-node-tunnel-termination-point-config { + description + "Termination capability of a TTP on a TE node."; + uses te-node-tunnel-termination-point-config-attributes; + container local-link-connectivities { + description + "Contains an LLCL for a TTP on a TE node."; + leaf number-of-entries { + type uint16; + description + "The number of LLCL entries. + If this number is specified in the configuration request, + the number is the requested number of entries, which may + not all be listed in the list; + if this number is reported in the state data, + the number is the current number of operational entries."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + } + } + // te-node-tunnel-termination-point-config + + grouping te-node-tunnel-termination-point-config-attributes { + description + "Configuration attributes of a TTP on a TE node."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the TTP."; + } + leaf name { + type string; + description + "A descriptive name for the TTP."; + } + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for this interface."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by this interface."; + } + leaf-list inter-layer-lock-id { + type uint32; + description + "Inter-layer lock ID, used for path computation in a TE + topology covering multiple layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + leaf protection-type { + type identityref { + base te-types:lsp-protection-type; + } + description + "The protection type that this TTP is capable of."; + } + container client-layer-adaptation { + description + "Contains capability information to support a client-layer + adaptation in a multi-layer topology."; + list switching-capability { + key "switching-capability encoding"; + description + "List of supported switching capabilities."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for the client-layer adaptation."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by the client-layer adaptation."; + } + uses te-types:te-bandwidth; + } + } + } + // te-node-tunnel-termination-point-config-attributes + + grouping te-node-tunnel-termination-point-llc-list { + description + "LLCL of a TTP on a TE node."; + list local-link-connectivity { + key "link-tp-ref"; + description + "The termination capabilities between the TTP and the LTP. + This capability information can be used to compute + the tunnel path. + The Interface Adjustment Capability Descriptors (IACDs) + (defined in RFC 6001) on each LTP can be derived from + this list."; + reference + "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + leaf link-tp-ref { + type leafref { + path "../../../../../nt:termination-point/nt:tp-id"; + } + description + "LTP."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + } + } + // te-node-tunnel-termination-point-llc-list + + grouping te-path-element { + description + "A group of attributes defining an element in a TE path, + such as a TE node, TE link, TE atomic resource, or label."; + uses te-types:explicit-route-hop; + } + // te-path-element + + grouping te-termination-point-augment { + description + "Augmentation for a TE termination point."; + leaf te-tp-id { + type te-types:te-tp-id; + description + "An identifier that uniquely identifies a TE termination + point."; + } + container te { + must '../te-tp-id'; + presence "TE support"; + description + "Indicates TE support."; + uses te-termination-point-config; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the LTP."; + } + uses geolocation-container; + } + } + // te-termination-point-augment + + grouping te-termination-point-config { + description + "TE termination point configuration grouping."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the LTP."; + } + leaf name { + type string; + description + "A descriptive name for the LTP."; + } + uses interface-switching-capability-list; + leaf inter-domain-plug-id { + type binary; + description + "A network-wide unique number that identifies on the + network a connection that supports a given inter-domain + TE link. This is a more flexible alternative to specifying + 'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link + when the provider either does not know 'remote-te-node-id' + and 'remote-te-link-tp-id' or needs to give the client the + flexibility to mix and match multiple topologies."; + } + leaf-list inter-layer-lock-id { + type uint32; + description + "Inter-layer lock ID, used for path computation in a TE + topology covering multiple layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + } + // te-termination-point-config + + grouping te-topologies-augment { + description + "Augmentation for TE topologies."; + container te { + presence "TE support"; + description + "Indicates TE support."; + container templates { + description + "Configuration parameters for templates used for a TE + topology."; + list node-template { + if-feature "template"; + key "name"; + leaf name { + type te-types:te-template-name; + description + "The name to identify a TE node template."; + } + description + "The list of TE node templates used to define sharable + and reusable TE node attributes."; + uses template-attributes; + uses te-node-config-attributes-template; + } + // node-template + list link-template { + if-feature "template"; + key "name"; + leaf name { + type te-types:te-template-name; + description + "The name to identify a TE link template."; + } + description + "The list of TE link templates used to define sharable + and reusable TE link attributes."; + uses template-attributes; + uses te-link-config-attributes; + } + // link-template + } + // templates + } + // te + } + // te-topologies-augment + + grouping te-topology-augment { + description + "Augmentation for a TE topology."; + uses te-types:te-topology-identifier; + container te { + must '../te-topology-identifier/provider-id' + + ' and ../te-topology-identifier/client-id' + + ' and ../te-topology-identifier/topology-id'; + presence "TE support"; + description + "Indicates TE support."; + uses te-topology-config; + uses geolocation-container; + } + } + // te-topology-augment + + grouping te-topology-config { + description + "TE topology configuration grouping."; + leaf name { + type string; + description + "Name of the TE topology. This attribute is optional and can + be specified by the operator to describe the TE topology, + which can be useful when 'network-id' (RFC 8345) is not + descriptive and not modifiable because of being generated + by the system."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + leaf preference { + type uint8 { + range "1..255"; + } + description + "Specifies a preference for this topology. A lower number + indicates a higher preference."; + } + leaf optimization-criterion { + type identityref { + base te-types:objective-function-type; + } + description + "Optimization criterion applied to this topology."; + reference + "RFC 3272: Overview and Principles of Internet Traffic + Engineering"; + } + list nsrlg { + if-feature "nsrlg"; + key "id"; + description + "List of NSRLGs (Non-Shared Risk Link Groups)."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + leaf id { + type uint32; + description + "Identifies the NSRLG entry."; + } + leaf disjointness { + type te-types:te-path-disjointness; + description + "The type of resource disjointness."; + } + } + // nsrlg + } + // te-topology-config + + grouping template-attributes { + description + "Common attributes for all templates."; + leaf priority { + type uint16; + description + "The preference value for resolving conflicts between + different templates. When two or more templates specify + values for one configuration attribute, the value from the + template with the highest priority is used. + A lower number indicates a higher priority. The highest + priority is 0."; + } + leaf reference-change-policy { + type enumeration { + enum no-action { + description + "When an attribute changes in this template, the + configuration node referring to this template does + not take any action."; + } + enum not-allowed { + description + "When any configuration object has a reference to this + template, changing this template is not allowed."; + } + enum cascade { + description + "When an attribute changes in this template, the + configuration object referring to this template applies + the new attribute value to the corresponding + configuration."; + } + } + description + "This attribute specifies the action taken for a + configuration node that has a reference to this template."; + } + } + // template-attributes + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces a new network type for a TE topology."; + container te-topology { + presence "Indicates a TE topology"; + description + "Its presence identifies the TE topology type."; + } + } + + augment "/nw:networks" { + description + "Augmentation parameters for TE topologies."; + uses te-topologies-augment; + } + + augment "/nw:networks/nw:network" { + when 'nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for a TE topology."; + uses te-topology-augment; + } + + augment "/nw:networks/nw:network/nw:node" { + when '../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the node level."; + leaf te-node-id { + type te-types:te-node-id; + description + "The identifier of a node in the TE topology. + A node is specific to a topology to which it belongs."; + } + container te { + must '../te-node-id' { + description + "'te-node-id' is mandatory."; + } + must 'count(../nw:supporting-node)<=1' { + description + "For a node in a TE topology, there cannot be more + than one supporting node. If multiple nodes are + abstracted, the 'underlay-topology' field is used."; + } + presence "TE support"; + description + "Indicates TE support."; + uses te-node-augment; + } + } + + augment "/nw:networks/nw:network/nt:link" { + when '../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the link level."; + container te { + must 'count(../nt:supporting-link)<=1' { + description + "For a link in a TE topology, there cannot be more + than one supporting link. If one or more link paths are + abstracted, the underlay is used."; + } + presence "TE support"; + description + "Indicates TE support."; + uses te-link-augment; + } + } + + augment "/nw:networks/nw:network/nw:node/" + + "nt:termination-point" { + when '../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the termination point + level."; + uses te-termination-point-augment; + } + + augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/" + + "bundle/bundled-links/bundled-link" { + when '../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for a TE bundled link."; + leaf src-tp-ref { + type leafref { + path "../../../../../nw:node[nw:node-id = " + + "current()/../../../../nt:source/" + + "nt:source-node]/" + + "nt:termination-point/nt:tp-id"; + require-instance true; + } + description + "Reference to another TE termination point on the + same source node."; + } + leaf des-tp-ref { + type leafref { + path "../../../../../nw:node[nw:node-id = " + + "current()/../../../../nt:destination/" + + "nt:dest-node]/" + + "nt:termination-point/nt:tp-id"; + require-instance true; + } + description + "Reference to another TE termination point on the + same destination node."; + } + } + + augment "/nw:networks/nw:network/nw:node/te/" + + "information-source-entry/connectivity-matrices/" + + "connectivity-matrix" { + when '../../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for the TE node connectivity matrix."; + uses te-node-connectivity-matrix-attributes; + } + + augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/" + + "connectivity-matrices/connectivity-matrix" { + when '../../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for the TE node connectivity matrix."; + uses te-node-connectivity-matrix-attributes; + } + + augment "/nw:networks/nw:network/nw:node/te/" + + "tunnel-termination-point/local-link-connectivities" { + when '../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for TE node TTP LLCs (Local Link + Connectivities)."; + uses te-node-tunnel-termination-point-llc-list; + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang new file mode 100644 index 000000000..b0e9af256 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang @@ -0,0 +1,4473 @@ +module ietf-te-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; + prefix te-types; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix nt; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + description + "This YANG module contains a collection of generally useful + YANG data type definitions specific to TE. + + The model conforms to the Network Management Datastore + Architecture (NMDA). + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2025 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2025-01-24 { + description + "This revision adds the following new identities: + - lsp-provisioning-error-reason; + - association-type-diversity; + - tunnel-admin-state-auto; + - lsp-restoration-restore-none; + - restoration-scheme-rerouting; + - path-metric-optimization-type; + - link-path-metric-type; + - link-metric-type and its derived identities; + - path-computation-error-reason and its derived identities; + - protocol-origin-type and its derived identities; + - svec-objective-function-type and its derived identities; + - svec-metric-type and its derived identities. + + This revision adds the following new data types: + - path-type. + + This revision adds the following new groupings: + - explicit-route-hop-with-srlg; + - encoding-and-switching-type; + - te-generic-node-id. + + This revision updates the following identities: + - objective-function-type; + - action-exercise; + - path-metric-type; + - path-metric-te; + - path-metric-igp; + - path-metric-hop; + - path-metric-delay-average; + - path-metric-delay-minimum; + - path-metric-residual-bandwidth; + - path-metric-optimize-includes; + - path-metric-optimize-excludes; + - te-optimization-criterion. + + This revision updates the following data types: + - te-node-id. + + This revision updates the following groupings: + - explicit-route-hop: + - adds the following leaves: + - node-id-uri; + - link-tp-id-uri; + - updates the following leaves: + - node-id; + - link-tp-id; + - record-route-state: + - adds the following leaves: + - node-id-uri; + - link-tp-id-uri; + - updates the following leaves: + - node-id; + - link-tp-id; + - optimization-metric-entry: + - updates the following leaves: + - metric-type; + - tunnel-constraints; + - adds the following leaves: + - network-id; + - path-constraints-route-objects: + - updates the following containers: + - explicit-route-objects-always; + - generic-path-metric-bounds: + - updates the following leaves: + - metric-type; + - generic-path-optimization + - adds the following leaves: + - tiebreaker; + - deprecate the following containers: + - tiebreakers. + + This revision obsoletes the following identities: + - of-minimize-agg-bandwidth-consumption; + - of-minimize-load-most-loaded-link; + - of-minimize-cost-path-set; + - lsp-protection-reroute-extra; + - lsp-protection-reroute. + + This revision provides also few editorial changes."; + reference + "RFC XXXX: Common YANG Data Types for Traffic Engineering"; + } + + // RFC Editor: replace XXXX with actual RFC number, update date + // information and remove this note + + revision 2020-06-10 { + description + "Initial Version of TE types."; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + + /* + * Features + */ + + feature p2mp-te { + description + "Indicates support for Point-to-Multipoint TE (P2MP-TE)."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for + Point-to-Multipoint TE Label Switched Paths (LSPs)"; + } + + feature frr-te { + description + "Indicates support for TE Fast Reroute (FRR)."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels"; + } + + feature extended-admin-groups { + description + "Indicates support for TE link extended administrative + groups."; + reference + "RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + feature named-path-affinities { + description + "Indicates support for named path affinities."; + } + + feature named-extended-admin-groups { + description + "Indicates support for named extended administrative groups."; + } + + feature named-srlg-groups { + description + "Indicates support for named Shared Risk Link Group (SRLG)."; + } + + feature named-path-constraints { + description + "Indicates support for named path constraints."; + } + + feature path-optimization-metric { + description + "Indicates support for path optimization metrics."; + } + + feature path-optimization-objective-function { + description + "Indicates support for path optimization objective functions."; + } + + /* + * Identities + */ + + identity lsp-provisioning-error-reason { + description + "Base identity for LSP provisioning errors."; + } + + identity session-attributes-flags { + description + "Base identity for the RSVP-TE session attributes flags."; + } + + identity local-protection-desired { + base session-attributes-flags; + description + "Local protection is desired."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.7.1"; + } + + identity se-style-desired { + base session-attributes-flags; + description + "Shared explicit style, to allow the LSP to be established + and share resources with the old LSP."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity local-recording-desired { + base session-attributes-flags; + description + "Label recording is desired."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.7.1"; + } + + identity bandwidth-protection-desired { + base session-attributes-flags; + description + "Requests FRR bandwidth protection on LSRs, if present."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels"; + } + + identity node-protection-desired { + base session-attributes-flags; + description + "Requests FRR node protection on LSRs, if present."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels"; + } + + identity path-reevaluation-request { + base session-attributes-flags; + description + "This flag indicates that a path re-evaluation (of the + current path in use) is requested. + + Note that this does not trigger any LSP reroutes but + instead just signals a request to evaluate whether a + preferable path exists."; + reference + "RFC 4736: Reoptimization of Multiprotocol Label Switching + (MPLS) Traffic Engineering (TE) Loosely Routed + Label Switched Path (LSP)"; + } + + identity soft-preemption-desired { + base session-attributes-flags; + description + "Soft preemption of LSP resources is desired."; + reference + "RFC 5712: MPLS Traffic Engineering Soft Preemption"; + } + + identity lsp-attributes-flags { + description + "Base identity for LSP attributes flags."; + } + + identity end-to-end-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates end-to-end rerouting behavior for an LSP + undergoing establishment. + + This MAY also be used to specify the behavior of end-to-end + LSP recovery for established LSPs."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol Traffic + Engineering (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity boundary-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates boundary rerouting behavior for an LSP undergoing + establishment. + + This MAY also be used to specify segment-based LSP recovery + through nested crankback for established LSPs. + + The boundary Area Border Router (ABR) / Autonomous System + Border Router (ASBR) can decide to forward the PathErr + message upstream to either an upstream boundary ABR/ASBR or + the ingress LSR. + + Alternatively, it can try to select another egress boundary + LSR."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol Traffic + Engineering (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity segment-based-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates segment-based rerouting behavior for an LSP + undergoing establishment. + + This MAY also be used to specify segment-based LSP recovery + for established LSPs."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol + Traffic Engineering (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity lsp-integrity-required { + base lsp-attributes-flags; + description + "Indicates that LSP integrity is required."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for + Point-to-Multipoint TE Label Switched Paths (LSPs) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity contiguous-lsp-desired { + base lsp-attributes-flags; + description + "Indicates that a contiguous LSP is desired."; + reference + "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering -- + Resource Reservation Protocol-Traffic Engineering + (RSVP-TE) Extensions + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity lsp-stitching-desired { + base lsp-attributes-flags; + description + "Indicates that LSP stitching is desired."; + reference + "RFC 5150: Label Switched Path Stitching with Generalized + Multiprotocol Label Switching Traffic Engineering + (GMPLS TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity pre-planned-lsp-flag { + base lsp-attributes-flags; + description + "Indicates that the LSP MUST be provisioned in the + control plane only."; + reference + "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for + Multi-Layer and Multi-Region Networks (MLN/MRN) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity non-php-behavior-flag { + base lsp-attributes-flags; + description + "Indicates that non-PHP (non-Penultimate Hop Popping) + behavior for the LSP is desired."; + reference + "RFC 6511: Non-Penultimate Hop Popping Behavior and + Out-of-Band Mapping for RSVP-TE Label Switched + Paths + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity oob-mapping-flag { + base lsp-attributes-flags; + description + "Indicates that signaling of the egress binding information + is out of band (e.g., via the Border Gateway Protocol + (BGP))."; + reference + "RFC 6511: Non-Penultimate Hop Popping Behavior and + Out-of-Band Mapping for RSVP-TE Label Switched + Paths + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity entropy-label-capability { + base lsp-attributes-flags; + description + "Indicates entropy label capability."; + reference + "RFC 6790: The Use of Entropy Labels in MPLS Forwarding + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity oam-mep-entity-desired { + base lsp-attributes-flags; + description + "OAM Maintenance Entity Group End Point (MEP) entities + desired."; + reference + "RFC 7260: GMPLS RSVP-TE Extensions for Operations, + Administration, and Maintenance (OAM) + Configuration"; + } + + identity oam-mip-entity-desired { + base lsp-attributes-flags; + description + "OAM Maintenance Entity Group Intermediate Points (MIP) + entities desired."; + reference + "RFC 7260: GMPLS RSVP-TE Extensions for Operations, + Administration, and Maintenance (OAM) + Configuration"; + } + + identity srlg-collection-desired { + base lsp-attributes-flags; + description + "Shared Risk Link Group (SRLG) collection desired."; + reference + "RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO) + RFC 8001: RSVP-TE Extensions for Collecting Shared Risk + Link Group (SRLG) Information"; + } + + identity loopback-desired { + base lsp-attributes-flags; + description + "This flag indicates that a particular node on the LSP is + required to enter loopback mode. + + This can also be used to specify the loopback state of the + node."; + reference + "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and + Loopback"; + } + + identity p2mp-te-tree-eval-request { + base lsp-attributes-flags; + description + "P2MP-TE tree re-evaluation request."; + reference + "RFC 8149: RSVP Extensions for Reoptimization of Loosely + Routed Point-to-Multipoint Traffic Engineering + Label Switched Paths (LSPs)"; + } + + identity rtm-set-desired { + base lsp-attributes-flags; + description + "Residence Time Measurement (RTM) attribute flag requested."; + reference + "RFC 8169: Residence Time Measurement in MPLS Networks"; + } + + identity link-protection-type { + description + "Base identity for the link protection type."; + } + + identity link-protection-unprotected { + base link-protection-type; + description + "Unprotected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-extra-traffic { + base link-protection-type; + description + "Extra-Traffic protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-shared { + base link-protection-type; + description + "Shared protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-1-for-1 { + base link-protection-type; + description + "One-for-one (1:1) protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-1-plus-1 { + base link-protection-type; + description + "One-plus-one (1+1) protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-enhanced { + base link-protection-type; + description + "A compound link protection type derived from the underlay + TE tunnel protection configuration supporting the TE link."; + } + + identity association-type { + description + "Base identity for the tunnel association."; + } + + identity association-type-recovery { + base association-type; + description + "Association type for recovery, used to associate LSPs of the + same tunnel for recovery."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 6780: RSVP ASSOCIATION Object Extensions"; + } + + identity association-type-resource-sharing { + base association-type; + description + "Association type for resource sharing, used to enable + resource sharing during make-before-break."; + reference + "RFC 4873: GMPLS Segment Recovery + RFC 6780: RSVP ASSOCIATION Object Extensions"; + } + + identity association-type-double-sided-bidir { + base association-type; + description + "Association type for double-sided bidirectional LSPs, + used to associate two LSPs of two tunnels that are + independently configured on either endpoint."; + reference + "RFC 7551: RSVP-TE Extensions for Associated Bidirectional + Label Switched Paths (LSPs)"; + } + + identity association-type-single-sided-bidir { + base association-type; + description + "Association type for single-sided bidirectional LSPs, + used to associate two LSPs of two tunnels, where one + tunnel is configured on one side/endpoint and the other + tunnel is dynamically created on the other endpoint."; + reference + "RFC 6780: RSVP ASSOCIATION Object Extensions + RFC 7551: RSVP-TE Extensions for Associated Bidirectional + Label Switched Paths (LSPs)"; + } + + identity association-type-diversity { + base association-type; + description + "Association Type diversity used to associate LSPs whose + paths are to be diverse from each other."; + reference + "RFC 8800: Path Computation Element Communication Protocol + (PCEP) Extension for Label Switched Path (LSP) + Diversity Constraint Signaling"; + } + + identity objective-function-type { + description + "Base identity for path objective function types."; + } + + identity of-minimize-cost-path { + base objective-function-type; + description + "Objective function for minimizing path cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-load-path { + base objective-function-type; + description + "Objective function for minimizing the load on one or more + paths."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-maximize-residual-bandwidth { + base objective-function-type; + description + "Objective function for maximizing residual bandwidth."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-agg-bandwidth-consumption { + base objective-function-type; + status obsolete; + description + "Objective function for minimizing aggregate bandwidth + consumption. + + This identity has been obsoleted: the + 'svec-of-minimize-agg-bandwidth-consumption' identity SHOULD + be used instead."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-load-most-loaded-link { + base objective-function-type; + status obsolete; + description + "Objective function for minimizing the load on the link that + is carrying the highest load. + + This identity has been obsoleted: the + 'svec-of-minimize-load-most-loaded-link' identity SHOULD + be used instead."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-cost-path-set { + base objective-function-type; + status obsolete; + description + "Objective function for minimizing the cost on a path set. + + This identity has been obsoleted: the + 'svec-of-minimize-cost-path-set' identity SHOULD + be used instead."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity path-computation-method { + description + "Base identity for supported path computation mechanisms."; + } + + identity path-locally-computed { + base path-computation-method; + description + "Indicates a constrained-path LSP in which the + path is computed by the local LER."; + reference + "RFC 9522: Overview and Principles of Internet Traffic + Engineering, Section 4.4"; + } + + identity path-externally-queried { + base path-computation-method; + description + "Constrained-path LSP in which the path is obtained by + querying an external source, such as a PCE server. + In the case that an LSP is defined to be externally queried, + it may also have associated explicit definitions (provided + to the external source to aid computation). + + The path that is returned by the external source may + require further local computation on the device."; + reference + "RFC 9522: Overview and Principles of Internet Traffic + Engineering + RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity path-explicitly-defined { + base path-computation-method; + description + "Constrained-path LSP in which the path is + explicitly specified as a collection of strict and/or loose + hops."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 9522: Overview and Principles of Internet Traffic + Engineering"; + } + + identity lsp-metric-type { + description + "Base identity for the LSP metric specification types."; + } + + identity lsp-metric-relative { + base lsp-metric-type; + description + "The metric specified for the LSPs to which this identity + refers is specified as a value relative to the IGP metric + cost to the LSP's tail end."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity lsp-metric-absolute { + base lsp-metric-type; + description + "The metric specified for the LSPs to which this identity + refers is specified as an absolute value."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity lsp-metric-inherited { + base lsp-metric-type; + description + "The metric for the LSPs to which this identity refers is + not specified explicitly; rather, it is directly inherited + from the IGP cost."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity te-tunnel-type { + description + "Base identity from which specific tunnel types are derived."; + } + + identity te-tunnel-p2p { + base te-tunnel-type; + description + "TE Point-to-Point (P2P) tunnel type."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity te-tunnel-p2mp { + base te-tunnel-type; + description + "TE P2MP tunnel type."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for + Point-to-Multipoint TE Label Switched Paths + (LSPs)"; + } + + identity tunnel-action-type { + description + "Base identity from which specific tunnel action types + are derived."; + } + + identity tunnel-action-resetup { + base tunnel-action-type; + description + "TE tunnel action that tears down the tunnel's current LSP + (if any) and attempts to re-establish a new LSP."; + } + + identity tunnel-action-reoptimize { + base tunnel-action-type; + description + "TE tunnel action that reoptimizes the placement of the + tunnel LSP(s)."; + } + + identity tunnel-action-switchpath { + base tunnel-action-type; + description + "TE tunnel action that switches the tunnel's LSP to use the + specified path."; + } + + identity te-action-result { + description + "Base identity from which specific TE action results + are derived."; + } + + identity te-action-success { + base te-action-result; + description + "TE action was successful."; + } + + identity te-action-fail { + base te-action-result; + description + "TE action failed."; + } + + identity tunnel-action-inprogress { + base te-action-result; + description + "TE action is in progress."; + } + + identity tunnel-admin-state-type { + description + "Base identity for TE tunnel administrative states."; + } + + identity tunnel-admin-state-up { + base tunnel-admin-state-type; + description + "Tunnel's administrative state is up."; + } + + identity tunnel-admin-state-down { + base tunnel-admin-state-type; + description + "Tunnel's administrative state is down."; + } + + identity tunnel-admin-state-auto { + base tunnel-admin-state-type; + description + "Tunnel administrative auto state. The administrative status + in state datastore transitions to 'tunnel-admin-up' when the + tunnel used by the client layer, and to 'tunnel-admin-down' + when it is not used by the client layer."; + } + + identity tunnel-state-type { + description + "Base identity for TE tunnel states."; + } + + identity tunnel-state-up { + base tunnel-state-type; + description + "Tunnel's state is up."; + } + + identity tunnel-state-down { + base tunnel-state-type; + description + "Tunnel's state is down."; + } + + identity lsp-state-type { + description + "Base identity for TE LSP states."; + } + + identity lsp-path-computing { + base lsp-state-type; + description + "State path computation is in progress."; + } + + identity lsp-path-computation-ok { + base lsp-state-type; + description + "State path computation was successful."; + } + + identity lsp-path-computation-failed { + base lsp-state-type; + description + "State path computation failed."; + } + + identity lsp-state-setting-up { + base lsp-state-type; + description + "State is being set up."; + } + + identity lsp-state-setup-ok { + base lsp-state-type; + description + "State setup was successful."; + } + + identity lsp-state-setup-failed { + base lsp-state-type; + description + "State setup failed."; + } + + identity lsp-state-up { + base lsp-state-type; + description + "State is up."; + } + + identity lsp-state-tearing-down { + base lsp-state-type; + description + "State is being torn down."; + } + + identity lsp-state-down { + base lsp-state-type; + description + "State is down."; + } + + identity path-invalidation-action-type { + description + "Base identity for TE path invalidation action types."; + } + + identity path-invalidation-action-drop { + base path-invalidation-action-type; + description + "Upon invalidation of the TE tunnel path, the tunnel remains + valid, but any packet mapped over the tunnel is dropped."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 2.5"; + } + + identity path-invalidation-action-teardown { + base path-invalidation-action-type; + description + "TE path invalidation action teardown."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 2.5"; + } + + identity lsp-restoration-type { + description + "Base identity from which LSP restoration types are derived."; + } + + identity lsp-restoration-restore-none { + base lsp-restoration-type; + description + "No LSP affected by a failure is restored."; + } + + identity lsp-restoration-restore-any { + base lsp-restoration-type; + description + "Any LSP affected by a failure is restored."; + } + + identity lsp-restoration-restore-all { + base lsp-restoration-type; + description + "Affected LSPs are restored after all LSPs of the tunnel are + broken."; + } + + identity restoration-scheme-type { + description + "Base identity for LSP restoration schemes."; + } + + identity restoration-scheme-rerouting { + base restoration-scheme-type; + description + "Restoration LSP is computed, signalled and configured after + the failure detection. + + This restoration scheme is also known as + 'Full LSP Re-routing', with the alternate route being + computed after the failure occurs."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity restoration-scheme-preconfigured { + base restoration-scheme-type; + description + "Restoration LSP is precomputed, presignalled and + preconfigured prior to the failure."; + } + + identity restoration-scheme-precomputed { + base restoration-scheme-type; + description + "Restoration LSP is precomputed, but not presignalled nor + preconfigured, prior to the failure. + + This restoration scheme is also known as + 'Full LSP Re-routing', with the alternate route being + pre-computed and stored for use when the failure occurs."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity restoration-scheme-presignaled { + base restoration-scheme-type; + description + "Restoration LSP is presignaled, but not preconfigured, + prior to the failure. + + This restoration scheme is also known as + 'Pre-planned LSP Re-routing'."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-type { + description + "Base identity from which LSP protection types are derived."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-unprotected { + base lsp-protection-type; + description + "'Unprotected' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-reroute-extra { + base lsp-protection-type; + status obsolete; + description + "'(Full) Rerouting' LSP protection type. + + This identity has been obsoleted: the + 'restoration-scheme-rerouting' identity SHOULD be used + instead."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-reroute { + base lsp-protection-type; + status obsolete; + description + "'Rerouting without Extra-Traffic' LSP protection type. + + This identity has been obsoleted: the + 'restoration-scheme-rerouting' identity SHOULD be used + instead."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-1-for-n { + base lsp-protection-type; + description + "'1:N Protection with Extra-Traffic' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-1-for-1 { + base lsp-protection-type; + description + "LSP protection '1:1 Protection Type'."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-unidir-1-plus-1 { + base lsp-protection-type; + description + "'1+1 Unidirectional Protection' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-bidir-1-plus-1 { + base lsp-protection-type; + description + "'1+1 Bidirectional Protection' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-extra-traffic { + base lsp-protection-type; + description + "Extra-Traffic LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-state { + description + "Base identity of protection states for reporting purposes."; + } + + identity normal { + base lsp-protection-state; + description + "Normal state."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity signal-fail-of-protection { + base lsp-protection-state; + description + "The protection transport entity has a signal fail condition + that is of higher priority than the forced switchover + command."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity lockout-of-protection { + base lsp-protection-state; + description + "A Loss of Protection (LoP) command is active."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity forced-switch { + base lsp-protection-state; + description + "A forced switchover command is active."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity signal-fail { + base lsp-protection-state; + description + "There is a signal fail condition on either the working path + or the protection path."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity signal-degrade { + base lsp-protection-state; + description + "There is a signal degrade condition on either the working + path or the protection path."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity manual-switch { + base lsp-protection-state; + description + "A manual switchover command is active."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity wait-to-restore { + base lsp-protection-state; + description + "A Wait-to-Restore (WTR) timer is running."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity do-not-revert { + base lsp-protection-state; + description + "A Do Not Revert (DNR) condition is active because of + non-revertive behavior."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity failure-of-protocol { + base lsp-protection-state; + description + "LSP protection is not working because of a protocol failure + condition."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity protection-external-commands { + description + "Base identity from which protection-related external commands + used for troubleshooting purposes are derived."; + } + + identity action-freeze { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command that prevents any switchover action from being taken + and, as such, freezes the current state."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity clear-freeze { + base protection-external-commands; + description + "An action that clears the active freeze state."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-lockout-of-normal { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command to ensure that the normal traffic is not allowed + to use the protection transport entity."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity clear-lockout-of-normal { + base protection-external-commands; + description + "An action that clears the active lockout of the + normal state."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-lockout-of-protection { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command to ensure that the protection transport entity is + temporarily not available to transport a traffic signal + (either normal or Extra-Traffic)."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-forced-switch { + base protection-external-commands; + description + "A switchover action initiated by an operator command to + switch the Extra-Traffic signal, the normal traffic signal, + or the null signal to the protection transport entity, + unless a switchover command of equal or higher priority is + in effect."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-manual-switch { + base protection-external-commands; + description + "A switchover action initiated by an operator command to + switch the Extra-Traffic signal, the normal traffic signal, + or the null signal to the protection transport entity, + unless a fault condition exists on other transport entities + or a switchover command of equal or higher priority is in + effect."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-exercise { + base protection-external-commands; + description + "An action that starts testing whether or not Automatic + Protection Switching (APS) communication is operating + correctly. + + It is of lower priority than any other state or command."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity clear { + base protection-external-commands; + description + "An action that clears the active near-end lockout of a + protection, forced switchover, manual switchover, + Wait-to-Restore (WTR) state, or exercise command."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity switching-capabilities { + description + "Base identity for interface switching capabilities."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-psc1 { + base switching-capabilities; + description + "Packet-Switch Capable-1 (PSC-1)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-evpl { + base switching-capabilities; + description + "Ethernet Virtual Private Line (EVPL)."; + reference + "RFC 6004: Generalized MPLS (GMPLS) Support for Metro + Ethernet Forum and G.8011 Ethernet Service + Switching"; + } + + identity switching-l2sc { + base switching-capabilities; + description + "Layer-2 Switch Capable (L2SC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-tdm { + base switching-capabilities; + description + "Time-Division-Multiplex Capable (TDM)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-otn { + base switching-capabilities; + description + "OTN-TDM capable."; + reference + "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS + Control of Evolving G.709 Optical Transport + Networks"; + } + + identity switching-dcsc { + base switching-capabilities; + description + "Data Channel Switching Capable (DCSC)."; + reference + "RFC 6002: Generalized MPLS (GMPLS) Data Channel + Switching Capable (DCSC) and Channel Set Label + Extensions"; + } + + identity switching-lsc { + base switching-capabilities; + description + "Lambda-Switch Capable (LSC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-fsc { + base switching-capabilities; + description + "Fiber-Switch Capable (FSC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-types { + description + "Base identity for encoding types."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-packet { + base lsp-encoding-types; + description + "Packet LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-ethernet { + base lsp-encoding-types; + description + "Ethernet LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-pdh { + base lsp-encoding-types; + description + "ANSI/ETSI PDH LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-sdh { + base lsp-encoding-types; + description + "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-digital-wrapper { + base lsp-encoding-types; + description + "Digital Wrapper LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-lambda { + base lsp-encoding-types; + description + "Lambda (photonic) LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-fiber { + base lsp-encoding-types; + description + "Fiber LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-fiber-channel { + base lsp-encoding-types; + description + "FiberChannel LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-oduk { + base lsp-encoding-types; + description + "G.709 ODUk (Digital Path) LSP encoding."; + reference + "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Extensions for G.709 Optical Transport + Networks Control"; + } + + identity lsp-encoding-optical-channel { + base lsp-encoding-types; + description + "G.709 Optical Channel LSP encoding."; + reference + "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Extensions for G.709 Optical Transport + Networks Control"; + } + + identity lsp-encoding-line { + base lsp-encoding-types; + description + "Line (e.g., 8B/10B) LSP encoding."; + reference + "RFC 6004: Generalized MPLS (GMPLS) Support for Metro + Ethernet Forum and G.8011 Ethernet Service + Switching"; + } + + identity path-signaling-type { + description + "Base identity from which specific LSP path setup types + are derived."; + } + + identity path-setup-static { + base path-signaling-type; + description + "Static LSP provisioning path setup."; + } + + identity path-setup-rsvp { + base path-signaling-type; + description + "RSVP-TE signaling path setup."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity path-setup-sr { + base path-signaling-type; + description + "Segment-routing path setup."; + } + + identity path-scope-type { + description + "Base identity from which specific path scope types are + derived."; + } + + identity path-scope-segment { + base path-scope-type; + description + "Path scope segment."; + reference + "RFC 4873: GMPLS Segment Recovery"; + } + + identity path-scope-end-to-end { + base path-scope-type; + description + "Path scope end to end."; + reference + "RFC 4873: GMPLS Segment Recovery"; + } + + identity route-usage-type { + description + "Base identity for route usage."; + } + + identity route-include-object { + base route-usage-type; + description + "'Include route' object."; + } + + identity route-exclude-object { + base route-usage-type; + description + "'Exclude route' object."; + reference + "RFC 4874: Exclude Routes - Extension to Resource ReserVation + Protocol-Traffic Engineering (RSVP-TE)"; + } + + identity route-exclude-srlg { + base route-usage-type; + description + "Excludes Shared Risk Link Groups (SRLGs)."; + reference + "RFC 4874: Exclude Routes - Extension to Resource ReserVation + Protocol-Traffic Engineering (RSVP-TE)"; + } + + identity path-metric-optimization-type { + description + "Base identity used to define the path metric optimization + types."; + } + + identity link-path-metric-type { + description + "Base identity used to define the link and the path metric + types. + + The unit of the path metric value is interpreted in the + context of the path metric type and the derived identities + SHOULD describe the unit of the path metric types they + define."; + } + + identity link-metric-type { + base link-path-metric-type; + description + "Base identity for the link metric types."; + } + + identity link-metric-te { + base link-metric-type; + description + "Traffic Engineering (TE) Link Metric."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2, Section 2.5.5 + RFC 5305: IS-IS Extensions for Traffic Engineering, + Section 3.7"; + } + + identity link-metric-igp { + base link-metric-type; + description + "Interior Gateway Protocol (IGP) Link Metric."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric + as a second MPLS Traffic Engineering (TE) + Metric"; + } + + identity link-metric-delay-average { + base link-metric-type; + description + "Unidirectional Link Delay, measured in units of + microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.1 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.1"; + } + + identity link-metric-delay-minimum { + base link-metric-type; + description + "Minimum unidirectional Link Delay, measured in units of + microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.2 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.2"; + } + + identity link-metric-delay-maximum { + base link-metric-type; + description + "Maximum unidirectional Link Delay, measured in units of + microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.2 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.2"; + } + + identity link-metric-residual-bandwidth { + base link-metric-type; + description + "Unidirectional Residual Bandwidth, measured in units of + bytes per second. + + It is defined to be Maximum Bandwidth minus the bandwidth + currently allocated to LSPs."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.5 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.5"; + } + + identity path-metric-type { + base link-path-metric-type; + base path-metric-optimization-type; + description + "Base identity for the path metric types."; + } + + identity path-metric-te { + base path-metric-type; + description + "Traffic Engineering (TE) Path Metric."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), Section 7.8"; + } + + identity path-metric-igp { + base path-metric-type; + description + "Interior Gateway Protocol (IGP) Path Metric."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), section 7.8"; + } + + identity path-metric-hop { + base path-metric-type; + description + "Hop Count Path Metric."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), Section 7.8"; + } + + identity path-metric-delay-average { + base path-metric-type; + description + "The Path Delay Metric, measured in units of + microseconds."; + reference + "RFC 8233: Extensions to the Path Computation Element + Communication Protocol (PCEP) to Compute + Service-Aware Label Switched Paths (LSPs), + Section 3.1.1"; + } + + identity path-metric-delay-minimum { + base path-metric-type; + description + "The Path Min Delay Metric, measured in units of + microseconds."; + reference + "I-D.ietf-pce-sid-algo: Carrying SR-Algorithm information + in PCE-based Networks, + draft-ietf-pce-sid-algo-14, + Sections 3.5.1 and 3.5.2"; + } + + identity path-metric-residual-bandwidth { + base path-metric-type; + description + "The Path Residual Bandwidth, defined as the minimum Link + Residual Bandwidth all the links along the path. + + The Path Residual Bandwidth can be seen as the path + metric associated with the Maximum residual Bandwidth Path + (MBP) objective function."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity path-metric-optimize-includes { + base path-metric-optimization-type; + description + "A metric that optimizes the number of included resources + specified in a set."; + } + + identity path-metric-optimize-excludes { + base path-metric-optimization-type; + description + "A metric that optimizes to a maximum the number of excluded + resources specified in a set."; + } + + identity path-tiebreaker-type { + description + "Base identity for the path tiebreaker type."; + } + + identity path-tiebreaker-minfill { + base path-tiebreaker-type; + description + "Min-Fill LSP path placement: selects the path with the most + available bandwidth (load balance LSPs over more links)."; + } + + identity path-tiebreaker-maxfill { + base path-tiebreaker-type; + description + "Max-Fill LSP path placement: selects the path with the least + available bandwidth (packing more LSPs over few links)."; + } + + identity path-tiebreaker-random { + base path-tiebreaker-type; + description + "Random LSP path placement."; + } + + identity resource-affinities-type { + description + "Base identity for resource class affinities."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity resource-aff-include-all { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, all of which must be present for a link + to be acceptable."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity resource-aff-include-any { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, any of which must be present for a link + to be acceptable."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity resource-aff-exclude-any { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, any of which renders a link unacceptable."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity te-optimization-criterion { + description + "Base identity for the TE optimization criteria."; + reference + "RFC 9522: Overview and Principles of Internet Traffic + Engineering"; + } + + identity not-optimized { + base te-optimization-criterion; + description + "Optimization is not applied."; + } + + identity cost { + base te-optimization-criterion; + description + "Optimized on cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity delay { + base te-optimization-criterion; + description + "Optimized on delay."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity path-computation-srlg-type { + description + "Base identity for Shared Risk Link Group (SRLG) path + computation."; + } + + identity srlg-ignore { + base path-computation-srlg-type; + description + "Ignores Shared Risk Link Groups (SRLGs) in the path + computation."; + } + + identity srlg-strict { + base path-computation-srlg-type; + description + "Includes a strict Shared Risk Link Group (SRLG) check in + the path computation."; + } + + identity srlg-preferred { + base path-computation-srlg-type; + description + "Includes a preferred Shared Risk Link Group (SRLG) check in + the path computation."; + } + + identity srlg-weighted { + base path-computation-srlg-type; + description + "Includes a weighted Shared Risk Link Group (SRLG) check in + the path computation."; + } + + identity path-computation-error-reason { + description + "Base identity for path computation error reasons."; + } + + identity path-computation-error-path-not-found { + base path-computation-error-reason; + description + "Path computation has failed because of an unspecified + reason."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), Section 7.5"; + } + + identity path-computation-error-no-topology { + base path-computation-error-reason; + description + "Path computation has failed because there is no topology + with the provided topology-identifier."; + } + + identity path-computation-error-no-dependent-server { + base path-computation-error-reason; + description + "Path computation has failed because one or more dependent + path computation servers are unavailable. + + The dependent path computation server could be + a Backward-Recursive Path Computation (BRPC) downstream + PCE or a child PCE."; + reference + "RFC 5441: A Backward-Recursive PCE-Based Computation (BRPC) + Procedure to Compute Shortest Constrained + Inter-Domain Traffic Engineering Label Switched + Paths + RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture"; + } + + identity path-computation-error-pce-unavailable { + base path-computation-error-reason; + description + "Path computation has failed because PCE is not available. + + It corresponds to bit 31 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP) + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-inclusion-hop { + base path-computation-error-reason; + description + "Path computation has failed because there is no + node or link provided by one or more inclusion hops."; + } + + identity path-computation-error-destination-unknown-in-domain { + base path-computation-error-reason; + description + "Path computation has failed because the destination node is + unknown in indicated destination domain. + + It corresponds to bit 19 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-resource { + base path-computation-error-reason; + description + "Path computation has failed because there is no + available resource in one or more domains. + + It corresponds to bit 20 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-child-pce-unresponsive { + base path-computation-error-no-dependent-server; + description + "Path computation has failed because child PCE is not + responsive. + + It corresponds to bit 21 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-destination-domain-unknown { + base path-computation-error-reason; + description + "Path computation has failed because the destination domain + was unknown. + + It corresponds to bit 22 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-p2mp { + base path-computation-error-reason; + description + "Path computation has failed because of P2MP reachability + problem. + + It corresponds to bit 24 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8306: Extensions to the Path Computation Element + Communication Protocol (PCEP) for + Point-to-Multipoint Traffic Engineering Label + Switched Paths + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-gco-migration { + base path-computation-error-reason; + description + "Path computation has failed because of no Global Concurrent + Optimization (GCO) migration path found. + + It corresponds to bit 26 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5557: Path Computation Element Communication Protocol + (PCEP) Requirements and Protocol Extensions in + Support of Global Concurrent Optimization + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-gco-solution { + base path-computation-error-reason; + description + "Path computation has failed because of no GCO solution + found. + + It corresponds to bit 25 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5557: Path Computation Element Communication Protocol + (PCEP) Requirements and Protocol Extensions in + Support of Global Concurrent Optimization + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-pks-expansion { + base path-computation-error-reason; + description + "Path computation has failed because of Path-Key Subobject + (PKS) expansion failure. + + It corresponds to bit 27 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5520: Preserving Topology Confidentiality in + Inter-Domain Path Computation Using a + Path-Key-Based Mechanism + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-brpc-chain-unavailable { + base path-computation-error-no-dependent-server; + description + "Path computation has failed because PCE BRPC chain + unavailable. + + It corresponds to bit 28 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5441: A Backward-Recursive PCE-Based Computation (BRPC) + Procedure to Compute Shortest Constrained + Inter-Domain Traffic Engineering Label Switched + Paths + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-source-unknown { + base path-computation-error-reason; + description + "Path computation has failed because source node is + unknown. + + It corresponds to bit 29 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP); + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-destination-unknown { + base path-computation-error-reason; + description + "Path computation has failed because destination node is + unknown. + + It corresponds to bit 30 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP); + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity protocol-origin-type { + description + "Base identity for protocol origin type."; + } + + identity protocol-origin-api { + base protocol-origin-type; + description + "Protocol origin is via Application Programming Interface + (API)."; + } + + identity protocol-origin-pcep { + base protocol-origin-type; + description + "Protocol origin is Path Computation Engine Protocol + (PCEP)."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP)"; + } + + identity protocol-origin-bgp { + base protocol-origin-type; + description + "Protocol origin is Border Gateway Protocol (BGP)."; + reference + "RFC 9012: The BGP Tunnel Encapsulation Attribute"; + } + + identity svec-objective-function-type { + description + "Base identity for SVEC objective function type."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity svec-of-minimize-agg-bandwidth-consumption { + base svec-objective-function-type; + description + "Objective function for minimizing aggregate bandwidth + consumption (MBC)."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-of-minimize-load-most-loaded-link { + base svec-objective-function-type; + description + "Objective function for minimizing the load on the link that + is carrying the highest load (MLL)."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-of-minimize-cost-path-set { + base svec-objective-function-type; + description + "Objective function for minimizing the cost on a path set + (MCC)."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-of-minimize-common-transit-domain { + base svec-objective-function-type; + description + "Objective function for minimizing the number of common + transit domains (MCTD)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-of-minimize-shared-link { + base svec-objective-function-type; + description + "Objective function for minimizing the number of shared + links (MSL)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-of-minimize-shared-srlg { + base svec-objective-function-type; + description + "Objective function for minimizing the number of shared + Shared Risk Link Groups (SRLG) (MSS)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-of-minimize-shared-nodes { + base svec-objective-function-type; + description + "Objective function for minimizing the number of shared + nodes (MSN)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-metric-type { + description + "Base identity for SVEC metric type."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity svec-metric-cumulative-te { + base svec-metric-type; + description + "Cumulative TE cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-cumulative-igp { + base svec-metric-type; + description + "Cumulative IGP cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-cumulative-hop { + base svec-metric-type; + description + "Cumulative Hop path metric."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-aggregate-bandwidth-consumption { + base svec-metric-type; + description + "Aggregate bandwidth consumption."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-load-of-the-most-loaded-link { + base svec-metric-type; + description + "Load of the most loaded link."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + /* + * Typedefs + */ + + typedef admin-group { + type yang:hex-string { + /* 01:02:03:04 */ + length "1..11"; + } + description + "Administrative group / resource class / color representation + in 'hex-string' type. + + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. + + Leading zero bytes in the configured value may be omitted + for brevity."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + typedef admin-groups { + type union { + type admin-group; + type extended-admin-group; + } + description + "Derived types for TE administrative groups."; + } + + typedef extended-admin-group { + type yang:hex-string; + description + "Extended administrative group / resource class / color + representation in 'hex-string' type. + + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. + + Leading zero bytes in the configured value may be omitted + for brevity."; + reference + "RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + typedef path-attribute-flags { + type union { + type identityref { + base session-attributes-flags; + } + type identityref { + base lsp-attributes-flags; + } + } + description + "Path attributes flags type."; + } + + typedef performance-metrics-normality { + type enumeration { + enum unknown { + value 0; + description + "Unknown."; + } + enum normal { + value 1; + description + "Normal. + + Indicates that the anomalous bit is not set."; + } + enum abnormal { + value 2; + description + "Abnormal. + + Indicates that the anomalous bit is set."; + } + } + description + "Indicates whether a performance metric is normal (anomalous + bit not set), abnormal (anomalous bit set), or unknown."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + typedef srlg { + type uint32; + description + "Shared Risk Link Group (SRLG) type."; + reference + "RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS) + RFC 5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + + typedef te-common-status { + type enumeration { + enum up { + description + "Enabled."; + } + enum down { + description + "Disabled."; + } + enum testing { + description + "In some test mode."; + } + enum preparing-maintenance { + description + "The resource is disabled in the control plane to prepare + for a graceful shutdown for maintenance purposes."; + reference + "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS + Traffic Engineering Networks"; + } + enum maintenance { + description + "The resource is disabled in the data plane for maintenance + purposes."; + } + enum unknown { + description + "Status is unknown."; + } + } + description + "Defines a type representing the common states of a TE + resource."; + } + + typedef te-bandwidth { + type string { + pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' + + '[pP](\+)?(12[0-7]|' + + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' + + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' + + '[pP](\+)?(12[0-7]|' + + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; + } + description + "This is the generic bandwidth type. + + It is a string containing a list of numbers separated by + commas, where each of these numbers can be non-negative + decimal, hex integer, or hex float: + + (dec | hex | float)[*(','(dec | hex | float))] + + For the packet-switching type, the string encoding may follow + the type 'bandwidth-ieee-float32' as defined in RFC 8294 + (e.g., 0x1p10), where the units are in bytes per second. + + Canonically, the string is represented as all lowercase and in + hex, where the prefix '0x' precedes the hex number."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area + ITU-T G.709: Interfaces for the optical transport network - + Edition 6.0 (06/2020)"; + } + + typedef te-ds-class { + type uint8 { + range "0..7"; + } + description + "The Differentiated Services Class-Type of traffic."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering, Section 4.3.1"; + } + + typedef te-global-id { + type uint32; + description + "An identifier to uniquely identify an operator, which can be + either a provider or a client. + + The definition of this type is taken from RFCs 6370 and 5003. + + This attribute type is used solely to provide a globally + unique context for TE topologies."; + reference + "RFC 5003: Attachment Individual Identifier (AII) Types for + Aggregation + RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers"; + } + + typedef te-hop-type { + type enumeration { + enum loose { + description + "A loose hop in an explicit path."; + } + enum strict { + description + "A strict hop in an explicit path."; + } + } + description + "Enumerated type for specifying loose or strict paths."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3.3"; + } + + typedef te-link-access-type { + type enumeration { + enum point-to-point { + description + "The link is point-to-point."; + } + enum multi-access { + description + "The link is multi-access, including broadcast and NBMA."; + } + } + description + "Defines a type representing the access type of a TE link."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + + typedef te-label-direction { + type enumeration { + enum forward { + description + "Label allocated for the forward LSP direction."; + } + enum reverse { + description + "Label allocated for the reverse LSP direction."; + } + } + description + "Enumerated type for specifying the forward or reverse + label."; + } + + typedef te-link-direction { + type enumeration { + enum incoming { + description + "The explicit route represents an incoming link on + a node."; + } + enum outgoing { + description + "The explicit route represents an outgoing link on + a node."; + } + } + description + "Enumerated type for specifying the direction of a link on + a node."; + } + + typedef te-metric { + type uint32; + description + "Traffic Engineering (TE) metric."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2, Section 2.5.5 + RFC 5305: IS-IS Extensions for Traffic Engineering, + Section 3.7"; + } + + typedef te-node-id { + type union { + type yang:dotted-quad; + type inet:ipv6-address-no-zone; + } + description + "A type representing the identifier for a node in a TE + topology. + + The identifier is represented either as 4 octets in + dotted-quad notation, or as 16 octets in full, mixed, + shortened, or shortened-mixed IPv6 address notation. + + This attribute MAY be mapped to the Router Address TLV + described in Section 2.4.1 of RFC 3630, the TE Router ID + described in Section 3 of RFC 6827, the Traffic Engineering + Router ID TLV described in Section 4.3 of RFC 5305, the TE + Router ID TLV described in Section 3.2.1 of RFC 6119, or the + IPv6 TE Router ID TLV described in Section 4.1 of RFC 6119. + + The reachability of such a TE node MAY be achieved by a + mechanism such as that described in Section 6.2 of RFC 6827."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2, Section 2.4.1 + RFC 5305: IS-IS Extensions for Traffic Engineering, + Section 4.3 + RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1 + RFC 6827: Automatically Switched Optical Network (ASON) + Routing for OSPFv2 Protocols, Section 3"; + } + + typedef te-oper-status { + type te-common-status; + description + "Defines a type representing the operational status of + a TE resource."; + } + + typedef te-admin-status { + type te-common-status; + description + "Defines a type representing the administrative status of + a TE resource."; + } + + typedef te-path-disjointness { + type bits { + bit node { + position 0; + description + "Node disjoint."; + } + bit link { + position 1; + description + "Link disjoint."; + } + bit srlg { + position 2; + description + "Shared Risk Link Group (SRLG) disjoint."; + } + } + description + "Type of the resource disjointness for a TE tunnel path."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + typedef te-recovery-status { + type enumeration { + enum normal { + description + "Both the recovery span and the working span are fully + allocated and active, data traffic is being + transported over (or selected from) the working + span, and no trigger events are reported."; + } + enum recovery-started { + description + "The recovery action has been started but not completed."; + } + enum recovery-succeeded { + description + "The recovery action has succeeded. + + The working span has reported a failure/degrade condition, + and the user traffic is being transported (or selected) + on the recovery span."; + } + enum recovery-failed { + description + "The recovery action has failed."; + } + enum reversion-started { + description + "The reversion has started."; + } + enum reversion-succeeded { + description + "The reversion action has succeeded."; + } + enum reversion-failed { + description + "The reversion has failed."; + } + enum recovery-unavailable { + description + "The recovery is unavailable, as a result of either an + operator's lockout command or a failure condition + detected on the recovery span."; + } + enum recovery-admin { + description + "The operator has issued a command to switch the user + traffic to the recovery span."; + } + enum wait-to-restore { + description + "The recovery domain is recovering from a failure/degrade + condition on the working span that is being controlled by + the Wait-to-Restore (WTR) timer."; + } + } + description + "Defines the status of a recovery action."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + typedef te-template-name { + type string { + pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; + } + description + "A type for the name of a TE node template or TE link + template."; + } + + typedef te-topology-event-type { + type enumeration { + enum add { + value 0; + description + "A TE node or TE link has been added."; + } + enum remove { + value 1; + description + "A TE node or TE link has been removed."; + } + enum update { + value 2; + description + "A TE node or TE link has been updated."; + } + } + description + "TE event type for notifications."; + } + + typedef te-topology-id { + type union { + type string { + length "0"; + // empty string + } + type string { + pattern '([a-zA-Z0-9\-_.]+:)*' + + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; + } + } + description + "An identifier for a topology. + + It is optional to have one or more prefixes at the beginning, + separated by colons. + + The prefixes can be 'network-types' as defined in the + 'ietf-network' module in RFC 8345, to help the user better + understand the topology before further inquiry is made."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef te-tp-id { + type union { + type uint32; + // Unnumbered + type inet:ip-address; + // IPv4 or IPv6 address + } + description + "An identifier for a TE link endpoint on a node. + + This attribute is mapped to a local or remote link identifier + as defined in RFCs 3630 and 5305."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + + typedef path-type { + type enumeration { + enum primary-path { + description + "Indicates that the TE path is a primary path."; + } + enum secondary-path { + description + "Indicates that the TE path is a secondary path."; + } + enum primary-reverse-path { + description + "Indicates that the TE path is a primary reverse path."; + } + enum secondary-reverse-path { + description + "Indicates that the TE path is a secondary reverse path."; + } + } + description + "The type of TE path, indicating whether a path is a primary, + or a reverse primary, or a secondary, or a reverse secondary + path."; + } + + /* + * TE bandwidth groupings + */ + + grouping te-bandwidth { + description + "This grouping defines the generic TE bandwidth. + + For some known data-plane technologies, specific modeling + structures are specified. + + The string-encoded 'te-bandwidth' type is used for + unspecified technologies. + + The modeling structure can be augmented later for other + technologies."; + container te-bandwidth { + description + "Container that specifies TE bandwidth. + + The choices can be augmented for specific data-plane + technologies."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type te-bandwidth; + description + "Bandwidth specified in a generic format."; + } + } + } + } + } + + /* + * TE label groupings + */ + + grouping te-label { + description + "This grouping defines the generic TE label. + + The modeling structure can be augmented for each technology. + + For unspecified technologies, 'rt-types:generalized-label' + is used."; + container te-label { + description + "Container that specifies the TE label. + + The choices can be augmented for specific data-plane + technologies."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type rt-types:generalized-label; + description + "TE label specified in a generic format."; + } + } + } + leaf direction { + type te-label-direction; + default "forward"; + description + "Label direction."; + } + } + } + + grouping te-topology-identifier { + description + "Augmentation for a TE topology."; + container te-topology-identifier { + description + "TE topology identifier container."; + leaf provider-id { + type te-global-id; + default "0"; + description + "An identifier to uniquely identify a provider. + If omitted, it assumes that the topology provider ID + value = 0 (the default)."; + } + leaf client-id { + type te-global-id; + default "0"; + description + "An identifier to uniquely identify a client. + If omitted, it assumes that the topology client ID + value = 0 (the default)."; + } + leaf topology-id { + type te-topology-id; + default ""; + description + "When the datastore contains several topologies, + 'topology-id' distinguishes between them. + + If omitted, the default (empty) string for this leaf is + assumed."; + } + } + } + + /* + * TE performance metrics groupings + */ + + grouping performance-metrics-one-way-delay-loss { + description + "Performance Metrics (PM) information in real time that can + be applicable to links or connections. + + PM defined in this grouping are applicable to generic TE PM + as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf one-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way delay or latency."; + } + leaf one-way-delay-normality { + type te-types:performance-metrics-normality; + description + "One-way delay normality."; + } + } + + grouping performance-metrics-two-way-delay-loss { + description + "Performance Metrics (PM) information in real time that can be + applicable to links or connections. + + PM defined in this grouping are applicable to generic TE PM + as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf two-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "Two-way delay or latency."; + } + leaf two-way-delay-normality { + type te-types:performance-metrics-normality; + description + "Two-way delay normality."; + } + } + + grouping performance-metrics-one-way-bandwidth { + description + "Performance Metrics (PM) information in real time that can be + applicable to links. + + PM defined in this grouping are applicable to generic TE PM + as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf one-way-residual-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Residual bandwidth that subtracts tunnel reservations from + Maximum Bandwidth (or link capacity) (RFC 3630) and + provides an aggregated remainder across QoS classes."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + leaf one-way-residual-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Residual bandwidth normality."; + } + leaf one-way-available-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Available bandwidth that is defined to be residual + bandwidth minus the measured bandwidth used for the + actual forwarding of non-RSVP-TE LSP packets. + + For a bundled link, available bandwidth is defined to be + the sum of the component link available bandwidths."; + } + leaf one-way-available-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Available bandwidth normality."; + } + leaf one-way-utilized-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Bandwidth utilization that represents the actual + utilization of the link (i.e., as measured in the router). + For a bundled link, bandwidth utilization is defined to + be the sum of the component link bandwidth utilizations."; + } + leaf one-way-utilized-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Bandwidth utilization normality."; + } + } + + grouping one-way-performance-metrics { + description + "One-way Performance Metrics (PM) throttle grouping."; + leaf one-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way delay or latency."; + } + leaf one-way-residual-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Residual bandwidth that subtracts tunnel reservations from + Maximum Bandwidth (or link capacity) (RFC 3630) and + provides an aggregated remainder across QoS classes."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + leaf one-way-available-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Available bandwidth that is defined to be residual + bandwidth minus the measured bandwidth used for the + actual forwarding of non-RSVP-TE LSP packets. + + For a bundled link, available bandwidth is defined to be + the sum of the component link available bandwidths."; + } + leaf one-way-utilized-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Bandwidth utilization that represents the actual + utilization of the link (i.e., as measured in the router). + For a bundled link, bandwidth utilization is defined to + be the sum of the component link bandwidth utilizations."; + } + } + + grouping two-way-performance-metrics { + description + "Two-way Performance Metrics (PM) throttle grouping."; + leaf two-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way delay or latency."; + } + } + + grouping performance-metrics-thresholds { + description + "Grouping for configurable thresholds for measured + attributes."; + uses one-way-performance-metrics; + uses two-way-performance-metrics; + } + + grouping performance-metrics-attributes { + description + "Contains Performance Metrics (PM) attributes."; + container performance-metrics-one-way { + description + "One-way link performance information in real time."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + uses performance-metrics-one-way-delay-loss; + uses performance-metrics-one-way-bandwidth; + } + container performance-metrics-two-way { + description + "Two-way link performance information in real time."; + reference + "RFC 6374: Packet Loss and Delay Measurement for MPLS + Networks"; + uses performance-metrics-two-way-delay-loss; + } + } + + grouping performance-metrics-throttle-container { + description + "Controls Performance Metrics (PM) throttling."; + container throttle { + must 'suppression-interval >= measure-interval' { + error-message "'suppression-interval' cannot be less than " + + "'measure-interval'."; + description + "Constraint on 'suppression-interval' and + 'measure-interval'."; + } + description + "Link performance information in real time."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf one-way-delay-offset { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Offset value to be added to the measured delay value."; + } + leaf measure-interval { + type uint32; + units "seconds"; + default "30"; + description + "Interval to measure the extended metric values."; + } + leaf advertisement-interval { + type uint32; + units "seconds"; + default "0"; + description + "Interval to advertise the extended metric values."; + } + leaf suppression-interval { + type uint32 { + range "1..max"; + } + units "seconds"; + default "120"; + description + "Interval to suppress advertisement of the extended metric + values."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 6"; + } + container threshold-out { + description + "If the measured parameter falls outside an upper bound + for all but the minimum-delay metric (or a lower bound + for the minimum-delay metric only) and the advertised + value is not already outside that bound, an 'anomalous' + announcement (anomalous bit set) will be triggered."; + uses performance-metrics-thresholds; + } + container threshold-in { + description + "If the measured parameter falls inside an upper bound + for all but the minimum-delay metric (or a lower bound + for the minimum-delay metric only) and the advertised + value is not already inside that bound, a 'normal' + announcement (anomalous bit cleared) will be triggered."; + uses performance-metrics-thresholds; + } + container threshold-accelerated-advertisement { + description + "When the difference between the last advertised value and + the current measured value exceeds this threshold, an + 'anomalous' announcement (anomalous bit set) will be + triggered."; + uses performance-metrics-thresholds; + } + } + } + + /* + * TE tunnel generic groupings + */ + + grouping explicit-route-hop { + description + "The explicit route entry grouping."; + choice type { + description + "The explicit route entry type."; + case numbered-node-hop { + container numbered-node-hop { + must 'node-id-uri or node-id' { + description + "At least one node identifier needs to be present."; + } + description + "Numbered node route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + } + } + case numbered-link-hop { + container numbered-link-hop { + description + "Numbered link explicit route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "TE Link Termination Point (LTP) identifier."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + leaf direction { + type te-link-direction; + default "outgoing"; + description + "Link route object direction."; + } + } + } + case unnumbered-link-hop { + container unnumbered-link-hop { + must '(link-tp-id-uri or link-tp-id) and ' + + '(node-id-uri or node-id)' { + description + "At least one node identifier and at least one Link + Termination Point (LTP) identifier need to be + present."; + } + description + "Unnumbered link explicit route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf link-tp-id-uri { + type nt:tp-id; + description + "Link Termination Point (LTP) identifier."; + } + leaf link-tp-id { + type te-tp-id; + description + "TE LTP identifier. + + The combination of the TE link ID and the TE node ID + is used to identify an unnumbered TE link."; + } + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + leaf direction { + type te-link-direction; + default "outgoing"; + description + "Link route object direction."; + } + } + } + case as-number { + container as-number-hop { + description + "AS explicit route hop."; + leaf as-number { + type inet:as-number; + mandatory true; + description + "The Autonomous System (AS) number."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + } + } + case label { + description + "The label explicit route hop type."; + container label-hop { + description + "Label hop type."; + uses te-label; + } + } + } + } + + grouping explicit-route-hop-with-srlg { + description + "Augments the explicit route entry grouping with Shared Risk + Link Group (SRLG) hop type."; + uses explicit-route-hop { + augment "type" { + description + "Augmentation for a generic explicit route for Shared + Risk Link Group (SRLG) inclusion or exclusion."; + case srlg { + description + "An Shared Risk Link Group (SRLG) value to be + included or excluded."; + container srlg { + description + "Shared Risk Link Group (SRLG) container."; + leaf srlg { + type uint32; + description + "Shared Risk Link Group (SRLG) value."; + } + } + } + } + } + } + + grouping record-route-state { + description + "The Record Route grouping."; + leaf index { + type uint32; + description + "Record Route hop index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without relying + on key values."; + } + choice type { + description + "The Record Route entry type."; + case numbered-node-hop { + description + "Numbered node route hop."; + container numbered-node-hop { + must 'node-id-uri or node-id' { + description + "At least one node identifier need to be present."; + } + description + "Numbered node route hop container."; + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + case numbered-link-hop { + description + "Numbered link route hop."; + container numbered-link-hop { + description + "Numbered link route hop container."; + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "Numbered TE LTP identifier."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + case unnumbered-link-hop { + description + "Unnumbered link route hop."; + container unnumbered-link-hop { + must '(link-tp-id-uri or link-tp-id) and ' + + '(node-id-uri or node-id)' { + description + "At least one node identifier and at least one Link + Termination Point (LTP) identifier need to be + present."; + } + description + "Unnumbered link Record Route hop."; + reference + "RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf link-tp-id-uri { + type nt:tp-id; + description + "Link Termination Point (LTP) identifier."; + } + leaf link-tp-id { + type te-tp-id; + description + "TE LTP identifier. + + The combination of the TE link ID and the TE node ID + is used to identify an unnumbered TE link."; + } + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + case label { + description + "The label Record Route entry types."; + container label-hop { + description + "Label route hop type."; + uses te-label; + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + } + } + + grouping label-restriction-info { + description + "Label set item information."; + leaf restriction { + type enumeration { + enum inclusive { + description + "The label or label range is inclusive."; + } + enum exclusive { + description + "The label or label range is exclusive."; + } + } + default "inclusive"; + description + "Indicates whether the list item is inclusive or exclusive."; + } + leaf index { + type uint32; + description + "The index of the label restriction list entry."; + } + container label-start { + must "(not(../label-end/te-label/direction) and" + + " not(te-label/direction))" + + " or " + + "(../label-end/te-label/direction = te-label/direction)" + + " or " + + "(not(te-label/direction) and" + + " (../label-end/te-label/direction = 'forward'))" + + " or " + + "(not(../label-end/te-label/direction) and" + + " (te-label/direction = 'forward'))" { + error-message "'label-start' and 'label-end' must have the " + + "same direction."; + } + description + "This is the starting label if a label range is specified. + This is the label value if a single label is specified, + in which case the 'label-end' attribute is not set."; + uses te-label; + } + container label-end { + must "(not(../label-start/te-label/direction) and" + + " not(te-label/direction))" + + " or " + + "(../label-start/te-label/direction = te-label/direction)" + + " or " + + "(not(te-label/direction) and" + + " (../label-start/te-label/direction = 'forward'))" + + " or " + + "(not(../label-start/te-label/direction) and" + + " (te-label/direction = 'forward'))" { + error-message "'label-start' and 'label-end' must have the " + + "same direction."; + } + description + "This is the ending label if a label range is specified. + This attribute is not set if a single label is specified."; + uses te-label; + } + container label-step { + description + "The step increment between labels in the label range. + + The label start/end values MUST be consistent with the sign + of label step. + + For example: + 'label-start' < 'label-end' enforces 'label-step' > 0 + 'label-start' > 'label-end' enforces 'label-step' < 0."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type int32; + default "1"; + description + "Label range step."; + } + } + } + } + leaf range-bitmap { + type yang:hex-string; + description + "When there are gaps between 'label-start' and 'label-end', + this attribute is used to specify the positions + of the used labels. + + This is represented in big endian as 'hex-string'. + + In case the restriction is 'inclusive', the bit-position is + set if the corresponding mapped label is available. + In this case, if the range-bitmap is not present, all the + labels in the range are available. + + In case the restriction is 'exclusive', the bit-position is + set if the corresponding mapped label is not available. + In this case, if the range-bitmap is not present, all the + labels in the range are not available. + + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. + + Leading zero bytes in the configured value may be omitted + for brevity. + + Each bit position in the 'range-bitmap' 'hex-string' maps + to a label in the range derived from 'label-start'. + + For example, assuming that 'label-start' = 16000 and + 'range-bitmap' = 0x01000001, then: + - bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. + - bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1."; + } + } + + grouping label-set-info { + description + "Grouping for the list of label restrictions specifying what + labels may or may not be used."; + container label-restrictions { + description + "The label restrictions container."; + list label-restriction { + key "index"; + description + "The absence of the label restrictions container implies + that all labels are acceptable; otherwise, only restricted + labels are available."; + reference + "RFC 7579: General Network Element Constraint Encoding + for GMPLS-Controlled Networks"; + uses label-restriction-info; + } + } + } + + grouping optimization-metric-entry { + description + "Optimization metrics configuration grouping."; + leaf metric-type { + type identityref { + base path-metric-optimization-type; + } + description + "Identifies the 'metric-type' that the path computation + process uses for optimization."; + } + leaf weight { + type uint8; + default "1"; + description + "TE path metric normalization weight."; + } + container explicit-route-exclude-objects { + when "../metric-type = " + + "'te-types:path-metric-optimize-excludes'"; + description + "Container for the 'exclude route' object list."; + uses path-route-exclude-objects; + } + container explicit-route-include-objects { + when "../metric-type = " + + "'te-types:path-metric-optimize-includes'"; + description + "Container for the 'include route' object list."; + uses path-route-include-objects; + } + } + + grouping common-constraints { + description + "Common constraints grouping that can be set on + a constraint set or directly on the tunnel."; + uses te-bandwidth { + description + "A requested bandwidth to use for path computation."; + } + leaf link-protection { + type identityref { + base link-protection-type; + } + default "te-types:link-protection-unprotected"; + description + "Link protection type required for the links included + in the computed path."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + leaf setup-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "TE LSP requested setup priority."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf hold-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "TE LSP requested hold priority."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf signaling-type { + type identityref { + base path-signaling-type; + } + default "te-types:path-setup-rsvp"; + description + "TE tunnel path signaling type."; + } + } + + grouping tunnel-constraints { + description + "Tunnel constraints grouping that can be set on + a constraint set or directly on the tunnel."; + leaf network-id { + type nw:network-id; + description + "The network topology identifier."; + } + uses te-topology-identifier; + uses common-constraints; + } + + grouping path-constraints-route-objects { + description + "List of route entries to be included or excluded when + performing the path computation."; + container explicit-route-objects { + description + "Container for the explicit route object lists."; + list route-object-exclude-always { + key "index"; + ordered-by user; + description + "List of route objects to always exclude from the path + computation."; + leaf index { + type uint32; + description + "Explicit Route Object index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop; + } + list route-object-include-exclude { + key "index"; + ordered-by user; + description + "List of route objects to include or exclude in the path + computation."; + leaf explicit-route-usage { + type identityref { + base route-usage-type; + } + default "te-types:route-include-object"; + description + "Indicates whether to include or exclude the + route object. + + The default is to include it."; + } + leaf index { + type uint32; + description + "Route object include-exclude index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop-with-srlg; + } + } + } + + grouping path-route-include-objects { + description + "List of route objects to be included when performing + the path computation."; + list route-object-include-object { + key "index"; + ordered-by user; + description + "List of Explicit Route Objects to be included in the + path computation."; + leaf index { + type uint32; + description + "Route object entry index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop; + } + } + + grouping path-route-exclude-objects { + description + "List of route objects to be excluded when performing + the path computation."; + list route-object-exclude-object { + key "index"; + ordered-by user; + description + "List of Explicit Route Objects to be excluded in the + path computation."; + leaf index { + type uint32; + description + "Route object entry index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop-with-srlg; + } + } + + grouping generic-path-metric-bounds { + description + "TE path metric bounds grouping."; + container path-metric-bounds { + description + "Top-level container for the list of path metric bounds."; + list path-metric-bound { + key "metric-type"; + description + "List of path metric bounds, which can apply to link and + path metrics. + + TE paths which have at least one path metric which + exceeds the specified bounds MUST NOT be selected. + + TE paths that traverse TE links which have at least one + link metric which exceeds the specified bounds MUST NOT + be selected."; + leaf metric-type { + type identityref { + base link-path-metric-type; + } + description + "Identifies an entry in the list of 'metric-type' items + bound for the TE path."; + } + leaf upper-bound { + type uint64; + default "0"; + description + "Upper bound on the specified 'metric-type'. + + A zero indicates an unbounded upper limit for the + specified 'metric-type'. + + The unit of is interpreted in the context of the + 'metric-type' identity."; + } + } + } + } + + grouping generic-path-optimization { + description + "TE generic path optimization grouping."; + container optimizations { + description + "The objective function container that includes + attributes to impose when computing a TE path."; + choice algorithm { + description + "Optimizations algorithm."; + case metric { + if-feature "path-optimization-metric"; + /* Optimize by metric */ + list optimization-metric { + key "metric-type"; + description + "TE path metric type."; + uses optimization-metric-entry; + } + /* Tiebreakers */ + container tiebreakers { + status deprecated; + description + "Container for the list of tiebreakers. + + This container has been deprecated by the tiebreaker + leaf."; + list tiebreaker { + key "tiebreaker-type"; + status deprecated; + description + "The list of tiebreaker criteria to apply on an + equally favored set of paths, in order to pick + the best."; + leaf tiebreaker-type { + type identityref { + base path-metric-type; + } + status deprecated; + description + "Identifies an entry in the list of tiebreakers."; + } + } + } + } + case objective-function { + if-feature "path-optimization-objective-function"; + /* Objective functions */ + container objective-function { + description + "The objective function container that includes + attributes to impose when computing a TE path."; + leaf objective-function-type { + type identityref { + base objective-function-type; + } + default "te-types:of-minimize-cost-path"; + description + "Objective function entry."; + } + } + } + } + } + leaf tiebreaker { + type identityref { + base path-tiebreaker-type; + } + default "te-types:path-tiebreaker-random"; + description + "The tiebreaker criteria to apply on an equally favored set + of paths, in order to pick the best."; + } + } + + grouping generic-path-affinities { + description + "Path affinities grouping."; + container path-affinities-values { + description + "Path affinities represented as values."; + list path-affinities-value { + key "usage"; + description + "List of named affinity constraints."; + leaf usage { + type identityref { + base resource-affinities-type; + } + description + "Identifies an entry in the list of value affinity + constraints."; + } + leaf value { + type admin-groups; + default ""; + description + "The affinity value. + + The default is empty."; + } + } + } + container path-affinity-names { + description + "Path affinities represented as names."; + list path-affinity-name { + key "usage"; + description + "List of named affinity constraints."; + leaf usage { + type identityref { + base resource-affinities-type; + } + description + "Identifies an entry in the list of named affinity + constraints."; + } + list affinity-name { + key "name"; + description + "List of named affinities."; + leaf name { + type string; + description + "Identifies a named affinity entry."; + } + } + } + } + } + + grouping generic-path-srlgs { + description + "Path Shared Risk Link Group (SRLG) grouping."; + container path-srlgs-lists { + description + "Path Shared Risk Link Group (SRLG) properties container."; + list path-srlgs-list { + key "usage"; + description + "List of Shared Risk Link Group (SRLG) values to be + included or excluded."; + leaf usage { + type identityref { + base route-usage-type; + } + description + "Identifies an entry in a list of Shared Risk Link Groups + (SRLGs) to either include or exclude."; + } + leaf-list values { + type srlg; + description + "List of Shared Risk Link Group (SRLG) values."; + } + } + } + container path-srlgs-names { + description + "Container for the list of named Shared Risk Link Groups + (SRLGs)."; + list path-srlgs-name { + key "usage"; + description + "List of named Shared Risk Link Groups (SRLGs) to be + included or excluded."; + leaf usage { + type identityref { + base route-usage-type; + } + description + "Identifies an entry in a list of named Shared Risk Link + Groups (SRLGs) to either include or exclude."; + } + leaf-list names { + type string; + description + "List of named Shared Risk Link Groups (SRLGs)."; + } + } + } + } + + grouping generic-path-disjointness { + description + "Path disjointness grouping."; + leaf disjointness { + type te-path-disjointness; + description + "The type of resource disjointness. + When configured for a primary path, the disjointness level + applies to all secondary LSPs. + + When configured for a secondary path, the disjointness + level overrides the level configured for the primary path."; + } + } + + grouping common-path-constraints-attributes { + description + "Common path constraints configuration grouping."; + uses common-constraints; + uses generic-path-metric-bounds; + uses generic-path-affinities; + uses generic-path-srlgs; + } + + grouping generic-path-constraints { + description + "Global named path constraints configuration grouping."; + container path-constraints { + description + "TE named path constraints container."; + uses common-path-constraints-attributes; + uses generic-path-disjointness; + } + } + + grouping generic-path-properties { + description + "TE generic path properties grouping."; + container path-properties { + config false; + description + "The TE path properties."; + list path-metric { + key "metric-type"; + description + "TE path metric type."; + leaf metric-type { + type identityref { + base path-metric-type; + } + description + "TE path metric type."; + } + leaf accumulative-value { + type uint64; + description + "TE path metric accumulative value."; + } + } + uses generic-path-affinities; + uses generic-path-srlgs; + container path-route-objects { + description + "Container for the list of route objects either returned by + the computation engine or actually used by an LSP."; + list path-route-object { + key "index"; + ordered-by user; + description + "List of route objects either returned by the computation + engine or actually used by an LSP."; + leaf index { + type uint32; + description + "Route object entry index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop; + } + } + } + } + + grouping encoding-and-switching-type { + description + "Common grouping to define the LSP encoding and + switching types"; + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "LSP encoding type."; + reference + "RFC 3945: Generalized Multi-Protocol Label Switching (GMPLS) + Architecture"; + } + leaf switching-type { + type identityref { + base te-types:switching-capabilities; + } + description + "LSP switching type."; + reference + "RFC 3945: Generalized Multi-Protocol Label Switching (GMPLS) + Architecture"; + } + } + + grouping te-generic-node-id { + description + "A reusable grouping for a TE generic node identifier."; + leaf id { + type union { + type te-node-id; + type inet:ip-address; + type nw:node-id; + } + description + "The identifier of the node. + + It can be represented as IP address or dotted quad address + or as an URI. + + The type data node disambiguates the union type."; + } + leaf type { + type enumeration { + enum ip { + description + "IP address representation of the node identifier."; + } + enum te-id { + description + "TE identifier of the node"; + } + enum node-id { + description + "URI representation of the node identifier."; + } + } + description + "Type of node identifier representation."; + } + } +} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang new file mode 100644 index 000000000..f0157bcc8 --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang @@ -0,0 +1,325 @@ + module ietf-trans-client-service { + /* TODO: FIXME */ + yang-version 1.1; + + namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-service"; + prefix "clntsvc"; + + import ietf-network { + prefix "nw"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference "RFC 8776 - Traffic Engineering Common YANG Types"; + } + + import ietf-layer1-types { + prefix "layer1-types"; + reference "RFC ZZZZ - A YANG Data Model for Layer 1 Types"; + } + + import ietf-yang-types { + prefix "yang"; + reference "RFC 6991 - Common YANG Data Types"; + } + + import ietf-trans-client-svc-types { + prefix "clntsvc-types"; + reference "RFC XXXX - A YANG Data Model for + Transport Network Client Signals"; + } + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Italo Busi (italo.busi@huawei.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (Xufeng_Liu@jabil.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com); + "; + + description + "This module defines a YANG data model for describing + transport network client services. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2021 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + revision 2023-10-23 { + description + "version -04 as a WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Groupings + */ + grouping client-svc-access-parameters { + description + "Transport network client signals access parameters"; + + leaf access-node-id { + type te-types:te-node-id; + description + "The identifier of the access node in the TE topology."; + } + + leaf access-node-uri { + type nw:node-id; + description + "The identifier of the access node in the network."; + } + + leaf access-ltp-id { + type te-types:te-tp-id; + description + "The TE link termination point identifier in TE topology, used + together with access-node-id to identify the access LTP."; + } + + leaf access-ltp-uri { + type nt:tp-id; + description + "The link termination point identifier in network topology, + used together with access-node-uri to identify the access LTP"; + } + + leaf client-signal { + type identityref { + base layer1-types:client-signal; + } + description + "Identify the client signal type associated with this port"; + } + + } + + grouping pm-state-grouping { + leaf latency { + description "latency value of the E2E client signal service"; + type uint32; + units microsecond; + } + } + + grouping error-info-grouping { + leaf error-code { + description "error code"; + type uint16; + } + + leaf error-description { + description "detail message of error"; + type string; + } + + leaf error-timestamp { + description "the date and time error is happened"; + type yang:date-and-time; + } + } + + grouping alarm-shreshold-grouping { + leaf latency-threshold { + description "a threshold for the E2E client signal service's + latency. Once the latency value exceed this threshold, an alarm + should be triggered."; + type uint32; + units microsecond; + } + } + + grouping client-svc-tunnel-parameters { + description + "Transport network client signals tunnel parameters"; + + leaf tunnel-name { + type string; + description + "TE tunnel instance name."; + } + } + + grouping client-svc-instance-config { + description + "Configuration parameters for client services."; + leaf client-svc-name { + type string; + description + "Identifier of the p2p transport network client signals."; + } + + leaf client-svc-title { + type string; + description + "Name of the p2p transport network client signals."; + } + + leaf user-label { + type string; + description + "Alias of the p2p transport network client signals."; + } + + leaf client-svc-descr { + type string; + description + "Description of the transport network client signals."; + } + + leaf client-svc-customer { + type string; + description + "Customer of the transport network client signals."; + } + + container resilience { + description "Place holder for resilience functionalities"; + } + + uses te-types:te-topology-identifier; + + leaf admin-status { + type identityref { + base te-types:tunnel-admin-state-type; + } + default te-types:tunnel-admin-state-up; + description "Client signals administrative state."; + } + + container src-access-ports { + description + "Source access port of a client signal."; + uses client-svc-access-parameters; + } + container dst-access-ports { + description + "Destination access port of a client signal."; + uses client-svc-access-parameters; + } + + container pm-state { + config false; + description "PM data of E2E client signal"; + uses pm-state-grouping; + } + + container error-info { + config false; + description "error messages of configuration"; + uses error-info-grouping; + } + + container alarm-shreshold { + description "threshold configuration for the E2E client signal"; + uses alarm-shreshold-grouping; + } + + leaf direction { + type identityref { + base clntsvc-types:direction; + } + description "Uni-dir or Bi-dir for the client signal."; + } + + list svc-tunnels { + key tunnel-name; + description + "List of the TE Tunnels supporting the client signal."; + uses client-svc-tunnel-parameters; + } + } + + grouping client-svc-instance-state { + description + "State parameters for client services."; + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + config false; + description "Client signal operational state."; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + config false; + description "Client signal provisioning state."; + } + leaf creation-time { + type yang:date-and-time; + config false; + description "The time of the client signal be created."; + } + leaf last-updated-time { + type yang:date-and-time; + config false; + description "The time of the client signal's latest update."; + } + leaf created-by { + type string; + config false; + description + "The client signal is created by whom, + can be a system or staff ID."; + } + leaf last-updated-by { + type string; + config false; + description + "The client signal is last updated by whom, + can be a system or staff ID."; + } + leaf owned-by { + type string; + config false; + description + "The client signal is owned by whom, + can be a system ID."; + } + } + + /* + * Data nodes + */ + + container client-svc { + description + "Transport client services."; + + list client-svc-instances { + key client-svc-name; + description + "The list of p2p transport client service instances"; + + uses client-svc-instance-config; + uses client-svc-instance-state; + } + } + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang new file mode 100644 index 000000000..60db5633a --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang @@ -0,0 +1,63 @@ + module ietf-trans-client-svc-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-svc-types"; + prefix "clntsvc-types"; + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Italo Busi (italo.busi@huawei.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (Xufeng_Liu@jabil.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com); + "; + + description + "This module defines a YANG data model for describing + transport network client types. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2019 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -01 as a WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + identity direction { + description + "Direction information of Client Signal."; + } + + identity bidirectional { + base direction; + description + "Client Signal is bi-directional."; + } + + identity unidirectional { + base direction; + description + "Client Signal is uni-directional."; + } + + } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang new file mode 100644 index 000000000..ee58fa3ab --- /dev/null +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang @@ -0,0 +1,474 @@ +module ietf-yang-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; + prefix "yang"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of counter and gauge types ***/ + + typedef counter32 { + type uint32; + description + "The counter32 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter32 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter32 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter32. + + In the value set and its semantics, this type is equivalent + to the Counter32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter32 { + type yang:counter32; + default "0"; + description + "The zero-based-counter32 type represents a counter32 + that has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter32 textual convention of the SMIv2."; + reference + "RFC 4502: Remote Network Monitoring Management Information + Base Version 2"; + } + + typedef counter64 { + type uint64; + description + "The counter64 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter64 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter64 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter64. + + In the value set and its semantics, this type is equivalent + to the Counter64 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter64 { + type yang:counter64; + default "0"; + description + "The zero-based-counter64 type represents a counter64 that + has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter64 textual convention of the SMIv2."; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + typedef gauge32 { + type uint32; + description + "The gauge32 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^32-1 (4294967295 decimal), and + the minimum value cannot be smaller than 0. The value of + a gauge32 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge32 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the Gauge32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef gauge64 { + type uint64; + description + "The gauge64 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^64-1 (18446744073709551615), and + the minimum value cannot be smaller than 0. The value of + a gauge64 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge64 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the CounterBasedGauge64 SMIv2 textual convention defined + in RFC 2856"; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + /*** collection of identifier-related types ***/ + + typedef object-identifier { + type string { + pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' + + '(\.(0|([1-9]\d*)))*'; + } + description + "The object-identifier type represents administratively + assigned names in a registration-hierarchical-name tree. + + Values of this type are denoted as a sequence of numerical + non-negative sub-identifier values. Each sub-identifier + value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers + are separated by single dots and without any intermediate + whitespace. + + The ASN.1 standard restricts the value space of the first + sub-identifier to 0, 1, or 2. Furthermore, the value space + of the second sub-identifier is restricted to the range + 0 to 39 if the first sub-identifier is 0 or 1. Finally, + the ASN.1 standard requires that an object identifier + has always at least two sub-identifiers. The pattern + captures these restrictions. + + Although the number of sub-identifiers is not limited, + module designers should realize that there may be + implementations that stick with the SMIv2 limit of 128 + sub-identifiers. + + This type is a superset of the SMIv2 OBJECT IDENTIFIER type + since it is not restricted to 128 sub-identifiers. Hence, + this type SHOULD NOT be used to represent the SMIv2 OBJECT + IDENTIFIER type; the object-identifier-128 type SHOULD be + used instead."; + reference + "ISO9834-1: Information technology -- Open Systems + Interconnection -- Procedures for the operation of OSI + Registration Authorities: General procedures and top + arcs of the ASN.1 Object Identifier tree"; + } + + typedef object-identifier-128 { + type object-identifier { + pattern '\d*(\.\d*){1,127}'; + } + description + "This type represents object-identifiers restricted to 128 + sub-identifiers. + + In the value set and its semantics, this type is equivalent + to the OBJECT IDENTIFIER type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef yang-identifier { + type string { + length "1..max"; + pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; + pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; + } + description + "A YANG identifier string as defined by the 'identifier' + rule in Section 12 of RFC 6020. An identifier must + start with an alphabetic character or an underscore + followed by an arbitrary sequence of alphabetic or + numeric characters, underscores, hyphens, or dots. + + A YANG identifier MUST NOT start with any possible + combination of the lowercase or uppercase character + sequence 'xml'."; + reference + "RFC 6020: YANG - A Data Modeling Language for the Network + Configuration Protocol (NETCONF)"; + } + + /*** collection of types related to date and time***/ + + typedef date-and-time { + type string { + pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' + + '(Z|[\+\-]\d{2}:\d{2})'; + } + description + "The date-and-time type is a profile of the ISO 8601 + standard for representation of dates and times using the + Gregorian calendar. The profile is defined by the + date-time production in Section 5.6 of RFC 3339. + + The date-and-time type is compatible with the dateTime XML + schema type with the following notable exceptions: + + (a) The date-and-time type does not allow negative years. + + (b) The date-and-time time-offset -00:00 indicates an unknown + time zone (see RFC 3339) while -00:00 and +00:00 and Z + all represent the same time zone in dateTime. + + (c) The canonical format (see below) of data-and-time values + differs from the canonical format used by the dateTime XML + schema type, which requires all times to be in UTC using + the time-offset 'Z'. + + This type is not equivalent to the DateAndTime textual + convention of the SMIv2 since RFC 3339 uses a different + separator between full-date and full-time and provides + higher resolution of time-secfrac. + + The canonical format for date-and-time values with a known time + zone uses a numeric time zone offset that is calculated using + the device's configured known offset to UTC time. A change of + the device's offset to UTC time will cause date-and-time values + to change accordingly. Such changes might happen periodically + in case a server follows automatically daylight saving time + (DST) time zone offset changes. The canonical format for + date-and-time values with an unknown time zone (usually + referring to the notion of local time) uses the time-offset + -00:00."; + reference + "RFC 3339: Date and Time on the Internet: Timestamps + RFC 2579: Textual Conventions for SMIv2 + XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; + } + + typedef timeticks { + type uint32; + description + "The timeticks type represents a non-negative integer that + represents the time, modulo 2^32 (4294967296 decimal), in + hundredths of a second between two epochs. When a schema + node is defined that uses this type, the description of + the schema node identifies both of the reference epochs. + + In the value set and its semantics, this type is equivalent + to the TimeTicks type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef timestamp { + type yang:timeticks; + description + "The timestamp type represents the value of an associated + timeticks schema node at which a specific occurrence + happened. The specific occurrence must be defined in the + description of any schema node defined using this type. When + the specific occurrence occurred prior to the last time the + associated timeticks attribute was zero, then the timestamp + value is zero. Note that this requires all timestamp values + to be reset to zero when the value of the associated timeticks + attribute reaches 497+ days and wraps around to zero. + + The associated timeticks schema node must be specified + in the description of any schema node using this type. + + In the value set and its semantics, this type is equivalent + to the TimeStamp textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of generic address types ***/ + + typedef phys-address { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + + description + "Represents media- or physical-level addresses represented + as a sequence octets, each octet represented by two hexadecimal + numbers. Octets are separated by colons. The canonical + representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the PhysAddress textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + typedef mac-address { + type string { + pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; + } + description + "The mac-address type represents an IEEE 802 MAC address. + The canonical representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the MacAddress textual convention of the SMIv2."; + reference + "IEEE 802: IEEE Standard for Local and Metropolitan Area + Networks: Overview and Architecture + RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of XML-specific types ***/ + + typedef xpath1.0 { + type string; + description + "This type represents an XPATH 1.0 expression. + + When a schema node is defined that uses this type, the + description of the schema node MUST specify the XPath + context in which the XPath expression is evaluated."; + reference + "XPATH: XML Path Language (XPath) Version 1.0"; + } + + /*** collection of string types ***/ + + typedef hex-string { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + description + "A hexadecimal string with octets represented as hex digits + separated by colons. The canonical representation uses + lowercase characters."; + } + + typedef uuid { + type string { + pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; + } + description + "A Universally Unique IDentifier in the string representation + defined in RFC 4122. The canonical representation uses + lowercase characters. + + The following is an example of a UUID in string representation: + f81d4fae-7dec-11d0-a765-00a0c91e6bf6 + "; + reference + "RFC 4122: A Universally Unique IDentifier (UUID) URN + Namespace"; + } + + typedef dotted-quad { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; + } + description + "An unsigned 32-bit number expressed in the dotted-quad + notation, i.e., four octets written as decimal numbers + and separated with the '.' (full stop) character."; + } +} diff --git a/src/service/service/service_handlers/l3nm_emulated/L3NMEmulatedServiceHandler.py b/src/service/service/service_handlers/l3nm_emulated/L3NMEmulatedServiceHandler.py index 97a0bbc16..cb96ab46c 100644 --- a/src/service/service/service_handlers/l3nm_emulated/L3NMEmulatedServiceHandler.py +++ b/src/service/service/service_handlers/l3nm_emulated/L3NMEmulatedServiceHandler.py @@ -54,7 +54,8 @@ class L3NMEmulatedServiceHandler(_ServiceHandler): device_obj = self.__task_executor.get_device(DeviceId(**json_device_id(device_uuid))) endpoint_obj = get_endpoint_matching(device_obj, endpoint_uuid) endpoint_settings = self.__settings_handler.get_endpoint_settings(device_obj, endpoint_obj) - endpoint_name = endpoint_obj.name + endpoint_name = endpoint_obj.name + device_name = device_obj.name json_config_rules = setup_config_rules( service_uuid, connection_uuid, device_uuid, endpoint_uuid, endpoint_name, @@ -71,6 +72,8 @@ class L3NMEmulatedServiceHandler(_ServiceHandler): LOGGER.exception('Unable to SetEndpoint({:s})'.format(str(endpoint))) results.append(e) + + return results @metered_subclass_method(METRICS_POOL) diff --git a/src/ztp_server/service/__main__.py b/src/ztp_server/service/__main__.py index b82a48197..a66a24510 100755 --- a/src/ztp_server/service/__main__.py +++ b/src/ztp_server/service/__main__.py @@ -21,7 +21,21 @@ from common.Settings import ( ) from .ZtpServerService import ZtpServerService from .rest_server.RestServer import RestServer +<<<<<<< Updated upstream:src/ztp_server/service/__main__.py from .rest_server.ztpServer_plugins.ztp_provisioning_api import register_ztp_provisioning +======= +from .rest_server.nbi_plugins.etsi_bwm import register_etsi_bwm_api +from .rest_server.nbi_plugins.ietf_hardware import register_ietf_hardware +from .rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn +from .rest_server.nbi_plugins.ietf_l3vpn import register_ietf_l3vpn +from .rest_server.nbi_plugins.ietf_network import register_ietf_network +from .rest_server.nbi_plugins.ietf_network_bw import register_ietf_network_bw +from .rest_server.nbi_plugins.ietf_network_slice import register_ietf_nss +from .rest_server.nbi_plugins.ietf_acl import register_ietf_acl +from .rest_server.nbi_plugins.qkd_app import register_qkd_app +from .rest_server.nbi_plugins.tfs_api import register_tfs_api +from .context_subscription import register_context_subscription +>>>>>>> Stashed changes:src/nbi/service/__main__.py terminate = threading.Event() LOGGER = None @@ -51,7 +65,20 @@ def main(): grpc_service.start() rest_server = RestServer() +<<<<<<< Updated upstream:src/ztp_server/service/__main__.py register_ztp_provisioning(rest_server) +======= + register_etsi_bwm_api(rest_server) + register_ietf_hardware(rest_server) + register_ietf_l2vpn(rest_server) # Registering L2VPN entrypoint + register_ietf_l3vpn(rest_server) # Registering L3VPN entrypoint + register_ietf_network(rest_server) + register_ietf_network_bw(rest_server) + register_ietf_nss(rest_server) # Registering NSS entrypoint + register_ietf_acl(rest_server) + register_qkd_app(rest_server) + register_tfs_api(rest_server) +>>>>>>> Stashed changes:src/nbi/service/__main__.py rest_server.start() LOGGER.debug('Configured Resources:') -- GitLab From f26c169d25b478a528e8a0cb244ae31a54228015 Mon Sep 17 00:00:00 2001 From: camposl Date: Thu, 4 Sep 2025 10:22:10 +0200 Subject: [PATCH 3/4] NBI --- .../service/ietf_network_bw/NameMapping.py | 46 + .../ietf_network_bw/NetworkTypeEnum.py | 23 + .../service/ietf_network_bw/Networks_bw.py | 85 + src/nbi/service/ietf_network_bw/README.md | 14 + .../service/ietf_network_bw/YangHandler.py | 183 + src/nbi/service/ietf_network_bw/__init__.py | 44 + .../ietf_network_bw/_docs/test_commands.txt | 26 + .../yang/iana-bfd-types@2025-04-16.yang | 188 + .../yang/iana-routing-types@2017-12-04.yang | 473 ++ .../yang/iana-routing-types@2022-08-19.yang | 644 +++ .../yang/ietf-bfd-types@2022-09-22.yang | 690 +++ .../yang/ietf-eth-te-topology@2023-09-28.yang | 2275 +++++++++ .../ietf-eth-tran-service@2023-10-23.yang | 1004 ++++ .../yang/ietf-eth-tran-types@2023-10-23.yang | 457 ++ .../yang/ietf-inet-types@2013-07-15.yang | 458 ++ .../yang/ietf-interfaces@2018-02-20.yang | 1123 +++++ .../yang/ietf-isis@2022-10-19.yang | 4455 ++++++++++++++++ .../yang/ietf-key-chain@2017-06-15.yang | 382 ++ .../yang/ietf-l3-te-topology@2024-06-08.yang | 208 + .../ietf-l3-unicast-topology@2018-02-26.yang | 359 ++ .../yang/ietf-layer1-types@2022-10-14.yang | 1414 ++++++ .../yang/ietf-netconf-acm@2018-02-14.yang | 464 ++ .../ietf-network-topology@2018-02-26.yang | 294 ++ .../yang/ietf-network@2018-02-26.yang | 193 + .../yang/ietf-otn-topology@2023-07-06.yang | 2405 +++++++++ .../yang/ietf-routing-types@2017-12-04.yang | 771 +++ .../yang/ietf-routing@2018-03-13.yang | 684 +++ .../yang/ietf-te-packet-types@2025-01-24.yang | 835 +++ .../ietf-te-topology-packet@2024-06-08.yang | 734 +++ .../yang/ietf-te-topology@2020-08-06.yang | 1952 +++++++ .../yang/ietf-te-types@2025-01-24.yang | 4473 +++++++++++++++++ .../ietf-trans-client-service@2023-10-23.yang | 325 ++ ...etf-trans-client-svc-types@2023-10-23.yang | 63 + .../yang/ietf-yang-types@2013-07-15.yang | 474 ++ 34 files changed, 28218 insertions(+) create mode 100644 src/nbi/service/ietf_network_bw/NameMapping.py create mode 100644 src/nbi/service/ietf_network_bw/NetworkTypeEnum.py create mode 100644 src/nbi/service/ietf_network_bw/Networks_bw.py create mode 100644 src/nbi/service/ietf_network_bw/README.md create mode 100644 src/nbi/service/ietf_network_bw/YangHandler.py create mode 100644 src/nbi/service/ietf_network_bw/__init__.py create mode 100644 src/nbi/service/ietf_network_bw/_docs/test_commands.txt create mode 100644 src/nbi/service/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-isis@2022-10-19.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-network@2018-02-26.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-routing@2018-03-13.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang create mode 100644 src/nbi/service/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang diff --git a/src/nbi/service/ietf_network_bw/NameMapping.py b/src/nbi/service/ietf_network_bw/NameMapping.py new file mode 100644 index 000000000..03d052afd --- /dev/null +++ b/src/nbi/service/ietf_network_bw/NameMapping.py @@ -0,0 +1,46 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Dict, Tuple +from common.proto.context_pb2 import Device, DeviceId, EndPoint, EndPointId + +class NameMappings: + def __init__(self) -> None: + self._device_uuid_to_name : Dict[str, str] = dict() + self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict() + + def store_device_name(self, device : Device) -> None: + device_uuid = device.device_id.device_uuid.uuid + device_name = device.name + self._device_uuid_to_name[device_uuid] = device_name + self._device_uuid_to_name[device_name] = device_name + + def store_endpoint_name(self, device : Device, endpoint : EndPoint) -> None: + device_uuid = device.device_id.device_uuid.uuid + device_name = device.name + endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid + endpoint_name = endpoint.name + self._endpoint_uuid_to_name[(device_uuid, endpoint_uuid)] = endpoint_name + self._endpoint_uuid_to_name[(device_name, endpoint_uuid)] = endpoint_name + self._endpoint_uuid_to_name[(device_uuid, endpoint_name)] = endpoint_name + self._endpoint_uuid_to_name[(device_name, endpoint_name)] = endpoint_name + + def get_device_name(self, device_id : DeviceId) -> str: + device_uuid = device_id.device_uuid.uuid + return self._device_uuid_to_name.get(device_uuid, device_uuid) + + def get_endpoint_name(self, endpoint_id : EndPointId) -> str: + device_uuid = endpoint_id.device_id.device_uuid.uuid + endpoint_uuid = endpoint_id.endpoint_uuid.uuid + return self._endpoint_uuid_to_name.get((device_uuid, endpoint_uuid), endpoint_uuid) diff --git a/src/nbi/service/ietf_network_bw/NetworkTypeEnum.py b/src/nbi/service/ietf_network_bw/NetworkTypeEnum.py new file mode 100644 index 000000000..849252b99 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/NetworkTypeEnum.py @@ -0,0 +1,23 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from enum import Enum +from typing import Optional + +class NetworkTypeEnum(Enum): + TE_OTN_TOPOLOGY = 'otn' + TE_ETH_TRAN_TOPOLOGY = 'eth-tran' + +def get_network_topology_type(topology_id : str) -> Optional[NetworkTypeEnum]: + return NetworkTypeEnum._value2member_map_.get(topology_id) diff --git a/src/nbi/service/ietf_network_bw/Networks_bw.py b/src/nbi/service/ietf_network_bw/Networks_bw.py new file mode 100644 index 000000000..39a36338d --- /dev/null +++ b/src/nbi/service/ietf_network_bw/Networks_bw.py @@ -0,0 +1,85 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import enum, json, logging +import pyangbind.lib.pybindJSON as pybindJSON +from flask import request +from flask.json import jsonify +from flask_restful import Resource +from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME +from common.Settings import get_setting +from common.proto.context_pb2 import ContextId, Empty +from common.tools.context_queries.Topology import get_topology_details +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH +from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR +from .YangHandler import YangHandler + +LOGGER = logging.getLogger(__name__) + +TE_TOPOLOGY_NAMES = [ + 'providerId-10-clientId-0-topologyId-1', + 'providerId-10-clientId-0-topologyId-2' +] + +class Renderer(enum.Enum): + LIBYANG = 'LIBYANG' + PYANGBIND = 'PYANGBIND' + +DEFAULT_RENDERER = Renderer.LIBYANG +USE_RENDERER = get_setting('IETF_NETWORK_RENDERER', default=DEFAULT_RENDERER.value) + + +class Networks_bw(Resource): + @HTTP_AUTH.login_required + def get(self): + LOGGER.info('Request: {:s}'.format(str(request))) + topology_id = '' + try: + context_client = ContextClient() + + if USE_RENDERER == Renderer.LIBYANG.value: + yang_handler = YangHandler() + json_response = [] + + contexts = context_client.ListContexts(Empty()).contexts + context_names = [context.name for context in contexts] + LOGGER.info(f'Contexts detected: {context_names}') + + for context_name in context_names: + topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies + topology_names = [topology.name for topology in topologies] + LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}') + + for topology_name in topology_names: + topology_details = get_topology_details(context_client, topology_name, context_name) + if topology_details is None: + raise Exception(f'Topology({context_name}/{topology_name}) not found') + + network_reply = yang_handler.compose_network(topology_name, topology_details) + json_response.append(network_reply) + + yang_handler.destroy() + else: + raise Exception('Unsupported Renderer: {:s}'.format(str(USE_RENDERER))) + + response = jsonify(json_response) + response.status_code = HTTP_OK + + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id))) + response = jsonify({'error': str(e)}) + response.status_code = HTTP_SERVERERROR + return response diff --git a/src/nbi/service/ietf_network_bw/README.md b/src/nbi/service/ietf_network_bw/README.md new file mode 100644 index 000000000..8d808a45b --- /dev/null +++ b/src/nbi/service/ietf_network_bw/README.md @@ -0,0 +1,14 @@ +# IETF Network + +This NBI plugin implements a basic skeleton for the IETF Network data model. + +## DISCLAIMER +__USE WITH CARE! This plugin is NOT production ready, it contains many hardcodings based on ongoing tests.__ + +## IETF RFCs/drafts: +- RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies (https://datatracker.ietf.org/doc/html/rfc8795) +- RFC 8776 - Common YANG Data Types for Traffic Engineering (https://datatracker.ietf.org/doc/html/rfc8776) +- RFC 8345 - A YANG Data Model for Network Topologies (https://datatracker.ietf.org/doc/html/rfc8345) +- RFC 6991 - Common YANG Data Types (https://datatracker.ietf.org/doc/html/rfc6991) +- RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology (https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/) +- RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals (https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/) diff --git a/src/nbi/service/ietf_network_bw/YangHandler.py b/src/nbi/service/ietf_network_bw/YangHandler.py new file mode 100644 index 000000000..fe655f01b --- /dev/null +++ b/src/nbi/service/ietf_network_bw/YangHandler.py @@ -0,0 +1,183 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import libyang, logging, os +from typing import Any +from common.proto.context_pb2 import TopologyDetails, Device, Link +from .NameMapping import NameMappings +from context.client.ContextClient import ContextClient +from common.tools.object_factory.Device import json_device_id +from common.proto.context_pb2 import DeviceId +import requests + + + +LOGGER = logging.getLogger(__name__) + +YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') +YANG_MODULES = ['ietf-network', 'ietf-network-topology', 'ietf-l3-unicast-topology', 'ietf-te-types', 'ietf-te-packet-types', 'ietf-te-topology', 'ietf-l3-te-topology','ietf-te-topology-packet' ] + +current_dir = os.path.dirname(__file__) +data_path = os.path.join(current_dir, "linksdata.json") + +class YangHandler: + def __init__(self) -> None: + self._yang_context = libyang.Context(YANG_DIR) + for yang_module_name in YANG_MODULES: + LOGGER.info('Loading module: {:s}'.format(str(yang_module_name))) + self._yang_context.load_module(yang_module_name).feature_enable_all() + + + + + + def compose_network(self, te_topology_name: str, topology_details: TopologyDetails) -> dict: + networks = self._yang_context.create_data_path('/ietf-network:networks') + network = networks.create_path(f'network[network-id="{te_topology_name}"]') + network.create_path('network-id', te_topology_name) + + network_types = network.create_path('network-types') + network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') + + name_mappings = NameMappings() + + for device in topology_details.devices: + self.compose_node(device, name_mappings, network) + + for link in topology_details.links: + self.compose_link(link, name_mappings, network) + + return json.loads(networks.print_mem('json')) + + def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any) -> None: + device_name = dev.name + name_mappings.store_device_name(dev) + + node = network.create_path(f'node[node-id="{device_name}"]') + node.create_path('node-id', device_name) + node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes') + node_attributes.create_path('name', device_name) + + context_client = ContextClient() + device = context_client.GetDevice(DeviceId(**json_device_id(device_name))) + + for endpoint in device.device_endpoints: + name_mappings.store_endpoint_name(dev, endpoint) + + self._process_device_config(device, node) + + def _process_device_config(self, device: Device, node: Any) -> None: + for config in device.device_config.config_rules: + if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key: + continue + + for endpoint in device.device_endpoints: + endpoint_name = endpoint.name + if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key: + interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0] + self._create_termination_point(node, interface_name, endpoint_name, config.custom.resource_value) + + def _create_termination_point(self, node: Any, interface_name: str, endpoint_name: str, resource_value: str) -> None: + ip_addresses = self._extract_ip_addresses(json.loads(resource_value)) + if ip_addresses: + tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]') + tp.create_path('tp-id', interface_name) + tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes') + + for ip in ip_addresses: + tp_attributes.create_path('ip-address', ip) + tp_attributes.create_path('interface-name', endpoint_name) + + @staticmethod + def _extract_ip_addresses(resource_value: dict) -> list: + ip_addresses = [] + if 'address_ip' in resource_value: + ip_addresses.append(resource_value['address_ip']) + if 'address_ipv6' in resource_value: + ip_addresses.append(resource_value['address_ipv6']) + return ip_addresses + + def compose_link(self, link_specs: Link, name_mappings: NameMappings, network: Any) -> None: + link_name = link_specs.name + links = network.create_path(f'ietf-network-topology:link[link-id="{link_name}"]') + links.create_path('link-id', link_name) + + self._create_link_endpoint(links, 'source', link_specs.link_endpoint_ids[0], name_mappings) + self._create_link_endpoint(links, 'destination', link_specs.link_endpoint_ids[-1], name_mappings) + + + + # Cargar los datos del archivo JSON una sola vez + try: + response = requests.get("http://192.168.165.44:8080/linksdata.json") + response.raise_for_status() + link_data = response.json() + LOGGER.debug(f"Link data loaded from external API for {link_specs.name}") + + # Obtener los datos específicos para este enlace + data = link_data.get(link_name) + + te = links.create_path('ietf-te-topology:te') + te_link_attributes = te.create_path('te-link-attributes') + + # Asignar valores predeterminados si no se encuentran en el JSON + max_bw = data.get("Maximum link bandwidth", 10000000000) + max_resv_bw = data.get("Max. Reservable link bandwidth", 10000000000) + te_link_attributes.create_path('max-link-bandwidth', max_bw) + te_link_attributes.create_path('max-resv-link-bandwidth', max_resv_bw) + + te_data = data.get("ietf-te-topology:te", {}).get("te-link-attributes", {}) + + # Unreserved bandwidth por prioridad + for priority in range(8): + key = f"Unreserved bandwidth (priority {priority})" + value = te_data.get(key, 0) + + entry = te_link_attributes.create_path(f'unreserved-bandwidth[priority="{priority}"]') + entry.create_path('priority', priority) + bw = entry.create_path('te-bandwidth') + bw.create_path('generic', value) + + # Métricas de rendimiento unidireccional + perf_data = data["ietf-te-topology:te"]["te-link-attributes"]["ietf-te-topology-packet:performance-metrics-one-way"] + performance_metrics = te_link_attributes.create_path('ietf-te-topology-packet:performance-metrics-one-way') + performance_metrics.create_path('one-way-delay', perf_data.get("one-way-delay", 0)) + performance_metrics.create_path('one-way-residual-bandwidth', perf_data.get("one-way-residual-bandwidth", "0x0p0")) + performance_metrics.create_path('one-way-available-bandwidth', perf_data.get("one-way-available-bandwidth", "0x0p0")) + performance_metrics.create_path('one-way-utilized-bandwidth', perf_data.get("one-way-utilized-bandwidth", "0x0p0")) + performance_metrics.create_path('one-way-min-delay', perf_data.get("one-way-min-delay", 0)) + performance_metrics.create_path('one-way-max-delay', perf_data.get("one-way-max-delay", 0)) + performance_metrics.create_path('one-way-delay-variation', perf_data.get("one-way-delay-variation", 0)) + + + + + + except Exception as e: + LOGGER.error(f"Failed to fetch link data from external API: {e}") + link_data = {} + + + + def _create_link_endpoint(self, links: Any, endpoint_type: str, endpoint_id: Any, name_mappings: NameMappings) -> None: + endpoint = links.create_path(endpoint_type) + if endpoint_type == 'destination': endpoint_type = 'dest' + endpoint.create_path(f'{endpoint_type}-node', name_mappings.get_device_name(endpoint_id.device_id)) + endpoint.create_path(f'{endpoint_type}-tp', name_mappings.get_endpoint_name(endpoint_id)) + + + + def destroy(self) -> None: + self._yang_context.destroy() diff --git a/src/nbi/service/ietf_network_bw/__init__.py b/src/nbi/service/ietf_network_bw/__init__.py new file mode 100644 index 000000000..1c021de9e --- /dev/null +++ b/src/nbi/service/ietf_network_bw/__init__.py @@ -0,0 +1,44 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies +# Ref: https://datatracker.ietf.org/doc/html/rfc8795 + +# RFC 8776 - Common YANG Data Types for Traffic Engineering +# Ref: https://datatracker.ietf.org/doc/html/rfc8776 + +# RFC 8345 - A YANG Data Model for Network Topologies +# Ref: https://datatracker.ietf.org/doc/html/rfc8345 + +# RFC 6991 - Common YANG Data Types +# Ref: https://datatracker.ietf.org/doc/html/rfc6991 + +# RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology +# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/ + +# RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals +# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/ + +from flask_restful import Resource +from nbi.service.rest_server.RestServer import RestServer +from .Networks_bw import Networks_bw + +URL_PREFIX = '/restconf/data/ietf-network:networks-bw' + +def _add_resource(rest_server : RestServer, resource : Resource, *urls, **kwargs): + urls = [(URL_PREFIX + url) for url in urls] + rest_server.add_resource(resource, *urls, **kwargs) + +def register_ietf_network_bw(rest_server : RestServer): + _add_resource(rest_server, Networks_bw, '/') diff --git a/src/nbi/service/ietf_network_bw/_docs/test_commands.txt b/src/nbi/service/ietf_network_bw/_docs/test_commands.txt new file mode 100644 index 000000000..78b2dd246 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/_docs/test_commands.txt @@ -0,0 +1,26 @@ +cd ~/tfs-ctrl/src/nbi/service/rest_server/nbi_plugins/ietf_network + +python + +from bindings import ietf_network +import pyangbind.lib.pybindJSON as pybindJSON + +ietf_nets_obj = ietf_network() +ietf_net_obj = ietf_nets_obj.networks.network.add('my-topo') + +ietf_node_obj = ietf_net_obj.node.add('my-node') +ietf_tp_obj = ietf_node_obj.termination_point.add('my-tp') + +ietf_link_obj = ietf_net_obj.link.add('my-link') + +ietf_link_obj.te._set_oper_status('up') +print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) + +ietf_link_obj.te.te_link_attributes.admin_status = 'down' +print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) + + +ietf_link_obj.te.te_link_attributes.max_link_bandwidth.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps +unresv_bw = ietf_link_obj.te.te_link_attributes.unreserved_bandwidth.add(7) +unresv_bw.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps +print(pybindJSON.dumps(ietf_link_obj, mode='ietf')) diff --git a/src/nbi/service/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang b/src/nbi/service/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang new file mode 100644 index 000000000..e7e13e1c2 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang @@ -0,0 +1,188 @@ +module iana-bfd-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; + prefix iana-bfd-types; + + organization + "IANA"; + contact + "Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + Tel: +1 310 301 5800 + "; + description + "This module defines YANG data types for IANA-registered + BFD parameters. + + This YANG module is maintained by IANA and reflects the + 'BFD Diagnostic Codes' and 'BFD Authentication Types' + registries. + + Copyright (c) 2021 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + The initial version of this YANG module is part of RFC 9127; + see the RFC itself for full legal notices."; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + + revision 2025-04-16 { + description + "Add NULL and Meticulous ISAAC authentication type."; + reference + "RFC XXXX: Optimizing BFD Authentication, + I-D.ietf-bfd-stability: BFD Stability."; + } + + revision 2021-10-21 { + description + "Initial revision."; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + + /* + * Type definitions + */ + + typedef diagnostic { + type enumeration { + enum none { + value 0; + description + "No Diagnostic."; + } + enum control-expiry { + value 1; + description + "Control Detection Time Expired."; + } + enum echo-failed { + value 2; + description + "Echo Function Failed."; + } + enum neighbor-down { + value 3; + description + "Neighbor Signaled Session Down."; + } + enum forwarding-reset { + value 4; + description + "Forwarding Plane Reset."; + } + enum path-down { + value 5; + description + "Path Down."; + } + enum concatenated-path-down { + value 6; + description + "Concatenated Path Down."; + } + enum admin-down { + value 7; + description + "Administratively Down."; + } + enum reverse-concatenated-path-down { + value 8; + description + "Reverse Concatenated Path Down."; + } + enum mis-connectivity-defect { + value 9; + description + "Mis-connectivity defect."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 6428: Proactive Connectivity Verification, Continuity + Check, and Remote Defect Indication for the MPLS + Transport Profile"; + } + } + description + "BFD diagnostic codes as defined in RFC 5880. Values are + maintained in the 'BFD Diagnostic Codes' IANA registry. + Range is 0 to 31."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + typedef auth-type { + type enumeration { + enum reserved { + value 0; + description + "Reserved."; + } + enum simple-password { + value 1; + description + "Simple Password."; + } + enum keyed-md5 { + value 2; + description + "Keyed MD5."; + } + enum meticulous-keyed-md5 { + value 3; + description + "Meticulous Keyed MD5."; + } + enum keyed-sha1 { + value 4; + description + "Keyed SHA1."; + } + enum meticulous-keyed-sha1 { + value 5; + description + "Meticulous Keyed SHA1."; + } + enum null { + value 6; + description + "NULL Auth. Used for stability measurement."; + } + enum optimized-md5-meticulous-keyed-isaac { + value 7; + description + "BFD Optimized Authentication using Meticulous Keyed + MD5 as the strong authentication and Meticulous Keyed + ISAAC as the 'optimized' authentication."; + } + enum optimized-sha1-meticulous-keyed-isaac { + value 8; + description + "BFD Optimized Authentication using Meticulous Keyed + SHA-1 as the strong authentication and Meticulous Keyed + ISAAC as the 'optimized' authentication."; + } + } + description + "BFD authentication type as defined in RFC 5880. Values are + maintained in the 'BFD Authentication Types' IANA registry. + Range is 0 to 255."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + I-D.ietf-bfd-optimizing-authentication: + Optimizing BFD Authentication, + I-D.ietf-bfd-stability: BFD Stability."; + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang b/src/nbi/service/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang new file mode 100644 index 000000000..250cba4b6 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang @@ -0,0 +1,473 @@ + module iana-routing-types { + namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; + prefix iana-rt-types; + + organization + "IANA"; + contact + "Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + Tel: +1 310 301 5800 + "; + + description + "This module contains a collection of YANG data types + considered defined by IANA and used for routing + protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 4."; + } + + /*** Collection of IANA types related to routing ***/ + /*** IANA Address Family enumeration ***/ + + typedef address-family { + type enumeration { + enum ipv4 { + value 1; + description + "IPv4 Address Family."; + } + + enum ipv6 { + value 2; + description + "IPv6 Address Family."; + } + + enum nsap { + value 3; + description + "OSI Network Service Access Point (NSAP) Address Family."; + } + + enum hdlc { + value 4; + description + "High-Level Data Link Control (HDLC) Address Family."; + } + + enum bbn1822 { + value 5; + description + "Bolt, Beranek, and Newman Report 1822 (BBN 1822) + Address Family."; + } + + enum ieee802 { + value 6; + description + "IEEE 802 Committee Address Family + (aka Media Access Control (MAC) address)."; + } + + enum e163 { + value 7; + description + "ITU-T E.163 Address Family."; + } + + enum e164 { + value 8; + description + "ITU-T E.164 (Switched Multimegabit Data Service (SMDS), + Frame Relay, ATM) Address Family."; + } + + enum f69 { + value 9; + description + "ITU-T F.69 (Telex) Address Family."; + } + + enum x121 { + value 10; + description + "ITU-T X.121 (X.25, Frame Relay) Address Family."; + } + + enum ipx { + value 11; + description + "Novell Internetwork Packet Exchange (IPX) + Address Family."; + } + + enum appletalk { + value 12; + description + "Apple AppleTalk Address Family."; + } + + enum decnet-iv { + value 13; + description + "Digital Equipment DECnet Phase IV Address Family."; + } + + enum vines { + value 14; + description + "Banyan Vines Address Family."; + } + + enum e164-nsap { + value 15; + description + "ITU-T E.164 with NSAP sub-address Address Family."; + } + + enum dns { + value 16; + description + "Domain Name System (DNS) Address Family."; + } + + enum distinguished-name { + value 17; + description + "Distinguished Name Address Family."; + } + + enum as-num { + value 18; + description + "Autonomous System (AS) Number Address Family."; + } + + enum xtp-v4 { + value 19; + description + "Xpress Transport Protocol (XTP) over IPv4 + Address Family."; + } + + enum xtp-v6 { + value 20; + description + "XTP over IPv6 Address Family."; + } + + enum xtp-native { + value 21; + description + "XTP native mode Address Family."; + } + + enum fc-port { + value 22; + description + "Fibre Channel (FC) World-Wide Port Name Address Family."; + } + + enum fc-node { + value 23; + description + "FC World-Wide Node Name Address Family."; + } + + enum gwid { + value 24; + description + "ATM Gateway Identifier (GWID) Number Address Family."; + } + + enum l2vpn { + value 25; + description + "Layer 2 VPN (L2VPN) Address Family."; + } + + enum mpls-tp-section-eid { + value 26; + description + "MPLS Transport Profile (MPLS-TP) Section Endpoint + Identifier Address Family."; + } + + enum mpls-tp-lsp-eid { + value 27; + description + "MPLS-TP Label Switched Path (LSP) Endpoint Identifier + Address Family."; + } + + enum mpls-tp-pwe-eid { + value 28; + description + "MPLS-TP Pseudowire Endpoint Identifier Address Family."; + } + + enum mt-v4 { + value 29; + description + "Multi-Topology IPv4 Address Family."; + } + + enum mt-v6 { + value 30; + description + "Multi-Topology IPv6 Address Family."; + } + + enum eigrp-common-sf { + value 16384; + description + "Enhanced Interior Gateway Routing Protocol (EIGRP) + Common Service Family Address Family."; + } + + enum eigrp-v4-sf { + value 16385; + description + "EIGRP IPv4 Service Family Address Family."; + } + + enum eigrp-v6-sf { + value 16386; + description + "EIGRP IPv6 Service Family Address Family."; + } + + enum lcaf { + value 16387; + description + "Locator/ID Separation Protocol (LISP) + Canonical Address Format (LCAF) Address Family."; + } + + enum bgp-ls { + value 16388; + description + "Border Gateway Protocol - Link State (BGP-LS) + Address Family."; + } + + enum mac-48 { + value 16389; + description + "IEEE 48-bit MAC Address Family."; + } + + enum mac-64 { + value 16390; + description + "IEEE 64-bit MAC Address Family."; + } + + enum trill-oui { + value 16391; + description + "Transparent Interconnection of Lots of Links (TRILL) + IEEE Organizationally Unique Identifier (OUI) + Address Family."; + } + + enum trill-mac-24 { + value 16392; + description + "TRILL final 3 octets of 48-bit MAC Address Family."; + } + + enum trill-mac-40 { + value 16393; + description + "TRILL final 5 octets of 64-bit MAC Address Family."; + } + + enum ipv6-64 { + value 16394; + description + "First 8 octets (64 bits) of IPv6 address + Address Family."; + } + + enum trill-rbridge-port-id { + value 16395; + description + "TRILL Routing Bridge (RBridge) Port ID Address Family."; + } + + enum trill-nickname { + value 16396; + description + "TRILL Nickname Address Family."; + } + } + + description + "Enumeration containing all the IANA-defined + Address Families."; + + } + + /*** Subsequent Address Family Identifiers (SAFIs) ***/ + /*** for multiprotocol BGP enumeration ***/ + + typedef bgp-safi { + type enumeration { + enum unicast-safi { + value 1; + description + "Unicast SAFI."; + } + + enum multicast-safi { + value 2; + description + "Multicast SAFI."; + } + + enum labeled-unicast-safi { + value 4; + description + "Labeled Unicast SAFI."; + } + + enum multicast-vpn-safi { + value 5; + description + "Multicast VPN SAFI."; + } + + enum pseudowire-safi { + value 6; + description + "Multi-segment Pseudowire VPN SAFI."; + } + + enum tunnel-encap-safi { + value 7; + description + "Tunnel Encap SAFI."; + } + + enum mcast-vpls-safi { + value 8; + description + "Multicast Virtual Private LAN Service (VPLS) SAFI."; + } + + enum tunnel-safi { + value 64; + description + "Tunnel SAFI."; + } + + enum vpls-safi { + value 65; + description + "VPLS SAFI."; + } + + enum mdt-safi { + value 66; + description + "Multicast Distribution Tree (MDT) SAFI."; + } + + enum v4-over-v6-safi { + value 67; + description + "IPv4 over IPv6 SAFI."; + } + + enum v6-over-v4-safi { + value 68; + description + "IPv6 over IPv4 SAFI."; + } + + enum l1-vpn-auto-discovery-safi { + value 69; + description + "Layer 1 VPN Auto-Discovery SAFI."; + } + + enum evpn-safi { + value 70; + description + "Ethernet VPN (EVPN) SAFI."; + } + + enum bgp-ls-safi { + value 71; + description + "BGP-LS SAFI."; + } + + enum bgp-ls-vpn-safi { + value 72; + description + "BGP-LS VPN SAFI."; + } + + enum sr-te-safi { + value 73; + description + "Segment Routing - Traffic Engineering (SR-TE) SAFI."; + } + + enum labeled-vpn-safi { + value 128; + description + "MPLS Labeled VPN SAFI."; + } + + enum multicast-mpls-vpn-safi { + value 129; + description + "Multicast for BGP/MPLS IP VPN SAFI."; + } + + enum route-target-safi { + value 132; + description + "Route Target SAFI."; + } + + enum ipv4-flow-spec-safi { + value 133; + description + "IPv4 Flow Specification SAFI."; + } + + enum vpnv4-flow-spec-safi { + value 134; + description + "IPv4 VPN Flow Specification SAFI."; + } + + enum vpn-auto-discovery-safi { + value 140; + description + "VPN Auto-Discovery SAFI."; + } + } + description + "Enumeration for BGP SAFI."; + reference + "RFC 4760: Multiprotocol Extensions for BGP-4."; + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang b/src/nbi/service/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang new file mode 100644 index 000000000..fcad71351 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang @@ -0,0 +1,644 @@ +module iana-routing-types { + namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; + prefix iana-rt-types; + + organization + "IANA"; + contact + "Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + Tel: +1 310 301 5800 + "; + + description + "This module contains a collection of YANG data types + considered defined by IANA and used for routing + protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + + revision 2022-08-19 { + description "Added SAFI value 85."; + } + + revision 2022-04-13 { + description "Added SAFI values 83 and 84."; + } + + revision 2022-02-11 { + description "Added SAFI value 80."; + } + + revision 2021-10-19 { + description "Added Address Family Number value 16399."; + } + + revision 2021-09-08 { + description "Added SAFI value 79."; + } + + revision 2021-05-26 { + description "Added ‘OBSOLETE’ to description field for SAFI value 7."; + } + + revision 2021-05-18 { + description "Added Address Family Number value 31, + SAFI value 9."; + } + + revision 2021-03-23 { + description "Added SAFI value 78."; + } + + revision 2020-12-31 { + description "Non-backwards-compatible change of SAFI names + (SAFI values 133, 134)."; + reference + "RFC 8955: Dissemination of Flow Specification Rules."; + } + + revision 2020-11-19 { + description "Added SAFI value 77."; + } + + revision 2020-07-02 { + description "Added SAFI value 76."; + } + + revision 2020-05-12 { + description "Added Address Family Number value 16398, + SAFI value 75."; + } + + revision 2019-11-04 { + description "Added Address Family Number value 16397."; + } + + revision 2018-10-29 { + description "Added SAFI value 74."; + } + + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 4."; + } + + + + + /*** Collection of IANA types related to routing ***/ + /*** IANA Address Family enumeration ***/ + + typedef address-family { + type enumeration { + enum ipv4 { + value 1; + description + "IPv4 Address Family."; + } + + enum ipv6 { + value 2; + description + "IPv6 Address Family."; + } + + enum nsap { + value 3; + description + "OSI Network Service Access Point (NSAP) Address Family."; + } + + enum hdlc { + value 4; + description + "High-Level Data Link Control (HDLC) Address Family."; + } + + enum bbn1822 { + value 5; + description + "Bolt, Beranek, and Newman Report 1822 (BBN 1822) + Address Family."; + } + + enum ieee802 { + value 6; + description + "IEEE 802 Committee Address Family + (aka Media Access Control (MAC) address)."; + } + + enum e163 { + value 7; + description + "ITU-T E.163 Address Family."; + } + enum e164 { + value 8; + description + "ITU-T E.164 (Switched Multimegabit Data Service (SMDS), + Frame Relay, ATM) Address Family."; + } + + enum f69 { + value 9; + description + "ITU-T F.69 (Telex) Address Family."; + } + + enum x121 { + value 10; + description + "ITU-T X.121 (X.25, Frame Relay) Address Family."; + } + + enum ipx { + value 11; + description + "Novell Internetwork Packet Exchange (IPX) + Address Family."; + } + + enum appletalk { + value 12; + description + "Apple AppleTalk Address Family."; + } + + enum decnet-iv { + value 13; + description + "Digital Equipment DECnet Phase IV Address Family."; + } + + enum vines { + value 14; + description + "Banyan Vines Address Family."; + } + + + + + + enum e164-nsap { + value 15; + description + "ITU-T E.164 with NSAP sub-address Address Family."; + } + + enum dns { + value 16; + description + "Domain Name System (DNS) Address Family."; + } + + enum distinguished-name { + value 17; + description + "Distinguished Name Address Family."; + } + + enum as-num { + value 18; + description + "Autonomous System (AS) Number Address Family."; + } + + enum xtp-v4 { + value 19; + description + "Xpress Transport Protocol (XTP) over IPv4 + Address Family."; + } + + enum xtp-v6 { + value 20; + description + "XTP over IPv6 Address Family."; + } + + enum xtp-native { + value 21; + description + "XTP native mode Address Family."; + } + + enum fc-port { + value 22; + description + "Fibre Channel (FC) World-Wide Port Name Address Family."; + } + enum fc-node { + value 23; + description + "FC World-Wide Node Name Address Family."; + } + + enum gwid { + value 24; + description + "ATM Gateway Identifier (GWID) Number Address Family."; + } + + enum l2vpn { + value 25; + description + "Layer 2 VPN (L2VPN) Address Family."; + } + + enum mpls-tp-section-eid { + value 26; + description + "MPLS Transport Profile (MPLS-TP) Section Endpoint + Identifier Address Family."; + } + + enum mpls-tp-lsp-eid { + value 27; + description + "MPLS-TP Label Switched Path (LSP) Endpoint Identifier + Address Family."; + } + + enum mpls-tp-pwe-eid { + value 28; + description + "MPLS-TP Pseudowire Endpoint Identifier Address Family."; + } + + enum mt-v4 { + value 29; + description + "Multi-Topology IPv4 Address Family."; + } + + + + + + enum mt-v6 { + value 30; + description + "Multi-Topology IPv6 Address Family."; + } + + enum bgp-sfc { + value 31; + description + "BGP SFC Address Family."; + reference + "RFC 9015: BGP Control Plane for the Network Service Header in Service Function Chaining."; + } + + enum eigrp-common-sf { + value 16384; + description + "Enhanced Interior Gateway Routing Protocol (EIGRP) + Common Service Family Address Family."; + } + + enum eigrp-v4-sf { + value 16385; + description + "EIGRP IPv4 Service Family Address Family."; + } + + enum eigrp-v6-sf { + value 16386; + description + "EIGRP IPv6 Service Family Address Family."; + } + + enum lcaf { + value 16387; + description + "Locator/ID Separation Protocol (LISP) + Canonical Address Format (LCAF) Address Family."; + } + + enum bgp-ls { + value 16388; + description + "Border Gateway Protocol - Link State (BGP-LS) + Address Family."; + } + + enum mac-48 { + value 16389; + description + "IEEE 48-bit MAC Address Family."; + } + + + + + enum mac-64 { + value 16390; + description + "IEEE 64-bit MAC Address Family."; + } + + enum trill-oui { + value 16391; + description + "Transparent Interconnection of Lots of Links (TRILL) + IEEE Organizationally Unique Identifier (OUI) + Address Family."; + } + + enum trill-mac-24 { + value 16392; + description + "TRILL final 3 octets of 48-bit MAC Address Family."; + } + + enum trill-mac-40 { + value 16393; + description + "TRILL final 5 octets of 64-bit MAC Address Family."; + } + + enum ipv6-64 { + value 16394; + description + "First 8 octets (64 bits) of IPv6 address + Address Family."; + } + + enum trill-rbridge-port-id { + value 16395; + description + "TRILL Routing Bridge (RBridge) Port ID Address Family."; + } + + enum trill-nickname { + value 16396; + description + "TRILL Nickname Address Family."; + } + + enum universally-unique-identifier { + value 16397; + description + "Universally Unique Identifier (UUID)."; + } + + enum routing-policy { + value 16398; + description + "Routing Policy Address Family."; + } + + enum mpls-namespaces { + value 16399; + description + "MPLS Namespaces Address Family."; + } + + } + + + + description + "Enumeration containing all the IANA-defined + Address Families."; + + } + + /*** Subsequent Address Family Identifiers (SAFIs) ***/ + /*** for multiprotocol BGP enumeration ***/ + + typedef bgp-safi { + type enumeration { + enum unicast-safi { + value 1; + description + "Unicast SAFI."; + } + + enum multicast-safi { + value 2; + description + "Multicast SAFI."; + } + + enum labeled-unicast-safi { + value 4; + description + "Labeled Unicast SAFI."; + } + + enum multicast-vpn-safi { + value 5; + description + "Multicast VPN SAFI."; + } + + enum pseudowire-safi { + value 6; + description + "Multi-segment Pseudowire VPN SAFI."; + } + + enum tunnel-encap-safi { + value 7; + description + "Tunnel Encap SAFI (OBSOLETE)."; + } + + + enum mcast-vpls-safi { + value 8; + description + "Multicast Virtual Private LAN Service (VPLS) SAFI."; + } + + enum bgp-sfc-safi { + value 9; + description + "BGP SFC SAFI."; + reference + "RFC 9015: BGP Control Plane for the Network Service Header in Service Function Chaining."; + } + + enum tunnel-safi { + value 64; + description + "Tunnel SAFI."; + } + + enum vpls-safi { + value 65; + description + "VPLS SAFI."; + } + + enum mdt-safi { + value 66; + description + "Multicast Distribution Tree (MDT) SAFI."; + } + + enum v4-over-v6-safi { + value 67; + description + "IPv4 over IPv6 SAFI."; + } + + enum v6-over-v4-safi { + value 68; + description + "IPv6 over IPv4 SAFI."; + } + + enum l1-vpn-auto-discovery-safi { + value 69; + description + "Layer 1 VPN Auto-Discovery SAFI."; + } + + enum evpn-safi { + value 70; + description + "Ethernet VPN (EVPN) SAFI."; + } + + enum bgp-ls-safi { + value 71; + description + "BGP-LS SAFI."; + } + + enum bgp-ls-vpn-safi { + value 72; + description + "BGP-LS VPN SAFI."; + } + + enum sr-te-safi { + value 73; + description + "Segment Routing - Traffic Engineering (SR-TE) SAFI."; + } + + enum sd-wan-capabilities-safi { + value 74; + description + "SD-WAN Capabilities SAFI."; + } + + enum routing-policy-safi { + value 75; + description + "Routing Policy SAFI."; + } + + enum classful-transport-safi { + value 76; + description + "Classful-Transport SAFI."; + } + + enum tunneled-traffic-flowspec-safi { + value 77; + description + "Tunneled Traffic Flowspec SAFI."; + } + + enum mcast-tree-safi { + value 78; + description + "MCAST-TREE SAFI."; + } + + enum bgp-dps-safi { + value 79; + description + "BGP-DPS (Dynamic Path Selection) SAFI."; + } + + enum bgp-ls-spf-safi { + value 80; + description + "BGP-LS-SPF SAFI."; + } + + enum bgp-car-safi { + value 83; + description + "BGP CAR SAFI."; + } + + enum bgp-vpn-car-safi { + value 84; + description + "BGP VPN CAR SAFI."; + } + + enum bgp-mup-safi { + value 85; + description + "BGP-MUP SAFI."; + } + + enum labeled-vpn-safi { + value 128; + description + "MPLS Labeled VPN SAFI."; + } + + enum multicast-mpls-vpn-safi { + value 129; + description + "Multicast for BGP/MPLS IP VPN SAFI."; + } + + enum route-target-safi { + value 132; + description + "Route Target SAFI."; + } + + enum flow-spec-safi { + value 133; + description + "Dissemination of Flow Specification rules SAFI."; + } + + enum l3vpn-flow-spec-safi { + value 134; + description + "L3VPN Dissemination of Flow Specification rules SAFI."; + } + + enum vpn-auto-discovery-safi { + value 140; + description + "VPN Auto-Discovery SAFI."; + } + } + description + "Enumeration for BGP SAFI."; + reference + "RFC 4760: Multiprotocol Extensions for BGP-4."; + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang b/src/nbi/service/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang new file mode 100644 index 000000000..82799ea03 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang @@ -0,0 +1,690 @@ +module ietf-bfd-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; + prefix bfd-types; + + import iana-bfd-types { + prefix iana-bfd-types; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-routing { + prefix rt; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)"; + } + import ietf-key-chain { + prefix key-chain; + reference + "RFC 8177: YANG Data Model for Key Chains"; + } + + organization + "IETF BFD Working Group"; + contact + "WG Web: + WG List: + + Editor: Reshad Rahman + + + Editor: Lianshu Zheng + + + Editor: Mahesh Jethanandani + "; + description + "This module contains a collection of BFD-specific YANG data type + definitions, as per RFC 5880, and also groupings that are common + to other BFD YANG modules. + + Copyright (c) 2022 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 9314; see the + RFC itself for full legal notices."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + + revision 2022-09-22 { + description + "This revision is not backwards compatible with the + previous version of this model. + + This revision adds an 'if-feature' statement called + 'client-base-cfg-parms' for client configuration parameters. + Clients expecting to use those parameters now need to + verify that the server declares support of the feature + before depending on the presence of the parameters. + + The change was introduced for clients that do not need + them and have to deviate to prevent them from being + included."; + reference + "RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)."; + } + revision 2021-10-21 { + description + "Initial revision."; + reference + "RFC 9127: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + + /* + * Feature definitions + */ + + feature single-minimum-interval { + description + "This feature indicates that the server supports configuration + of one minimum interval value that is used for both transmit + and receive minimum intervals."; + } + + feature authentication { + description + "This feature indicates that the server supports BFD + authentication."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.7"; + } + + feature demand-mode { + description + "This feature indicates that the server supports BFD Demand + mode."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.6"; + } + + feature echo-mode { + description + "This feature indicates that the server supports BFD Echo + mode."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.4"; + } + + feature client-base-cfg-parms { + description + "This feature allows protocol models to configure BFD client + session parameters."; + reference + "RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)."; + } + + /* + * Identity definitions + */ + + identity bfdv1 { + base rt:control-plane-protocol; + description + "BFD protocol version 1."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + + identity path-type { + description + "Base identity for the BFD path type. The path type indicates + the type of path on which BFD is running."; + } + + identity path-ip-sh { + base path-type; + description + "BFD on IP single-hop."; + reference + "RFC 5881: Bidirectional Forwarding Detection (BFD) + for IPv4 and IPv6 (Single Hop)"; + } + + identity path-ip-mh { + base path-type; + description + "BFD on IP multihop paths."; + reference + "RFC 5883: Bidirectional Forwarding Detection (BFD) for + Multihop Paths"; + } + + identity path-mpls-te { + base path-type; + description + "BFD on MPLS Traffic Engineering."; + reference + "RFC 5884: Bidirectional Forwarding Detection (BFD) + for MPLS Label Switched Paths (LSPs)"; + } + + identity path-mpls-lsp { + base path-type; + description + "BFD on an MPLS Label Switched Path."; + reference + "RFC 5884: Bidirectional Forwarding Detection (BFD) + for MPLS Label Switched Paths (LSPs)"; + } + + identity path-lag { + base path-type; + description + "Micro-BFD on LAG member links."; + reference + "RFC 7130: Bidirectional Forwarding Detection (BFD) on + Link Aggregation Group (LAG) Interfaces"; + } + + identity encap-type { + description + "Base identity for BFD encapsulation type."; + } + + identity encap-ip { + base encap-type; + description + "BFD with IP encapsulation."; + } + + /* + * Type definitions + */ + + typedef discriminator { + type uint32; + description + "BFD Discriminator as described in RFC 5880."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD)"; + } + + typedef state { + type enumeration { + enum adminDown { + value 0; + description + "'adminDown' state."; + } + enum down { + value 1; + description + "'Down' state."; + } + enum init { + value 2; + description + "'Init' state."; + } + enum up { + value 3; + description + "'Up' state."; + } + } + description + "BFD states as defined in RFC 5880."; + } + + typedef multiplier { + type uint8 { + range "1..255"; + } + description + "BFD multiplier as described in RFC 5880."; + } + + typedef hops { + type uint8 { + range "1..255"; + } + description + "This corresponds to Time To Live for IPv4 and corresponds to + the hop limit for IPv6."; + } + + /* + * Groupings + */ + + grouping auth-parms { + description + "Grouping for BFD authentication parameters + (see Section 6.7 of RFC 5880)."; + container authentication { + if-feature "authentication"; + presence "Enables BFD authentication (see Section 6.7 + of RFC 5880)."; + description + "Parameters for BFD authentication."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD), + Section 6.7"; + leaf key-chain { + type key-chain:key-chain-ref; + description + "Name of the 'key-chain' as per RFC 8177."; + } + leaf meticulous { + type boolean; + description + "Enables a meticulous mode as per Section 6.7 of + RFC 5880."; + } + } + } + + grouping base-cfg-parms { + description + "BFD grouping for base configuration parameters."; + leaf local-multiplier { + type multiplier; + default "3"; + description + "Multiplier transmitted by the local system."; + } + choice interval-config-type { + default "tx-rx-intervals"; + description + "Two interval values or one value used for both transmit and + receive."; + case tx-rx-intervals { + leaf desired-min-tx-interval { + type uint32; + units "microseconds"; + default "1000000"; + description + "Desired minimum transmit interval of control packets."; + } + leaf required-min-rx-interval { + type uint32; + units "microseconds"; + default "1000000"; + description + "Required minimum receive interval of control packets."; + } + } + case single-interval { + if-feature "single-minimum-interval"; + leaf min-interval { + type uint32; + units "microseconds"; + default "1000000"; + description + "Desired minimum transmit interval and required + minimum receive interval of control packets."; + } + } + } + } + + grouping client-cfg-parms { + description + "BFD grouping for configuration parameters + used by BFD clients, e.g., IGP or MPLS."; + leaf enabled { + type boolean; + default "false"; + description + "Indicates whether BFD is enabled."; + } + uses base-cfg-parms { + if-feature "client-base-cfg-parms"; + } + } + + grouping common-cfg-parms { + description + "BFD grouping for common configuration parameters."; + uses base-cfg-parms; + leaf demand-enabled { + if-feature "demand-mode"; + type boolean; + default "false"; + description + "To enable Demand mode."; + } + leaf admin-down { + type boolean; + default "false"; + description + "Indicates whether the BFD session is administratively + down."; + } + uses auth-parms; + } + + grouping all-session { + description + "BFD session operational information."; + leaf path-type { + type identityref { + base path-type; + } + config false; + description + "BFD path type. This indicates the path type that BFD is + running on."; + } + leaf ip-encapsulation { + type boolean; + config false; + description + "Indicates whether BFD encapsulation uses IP."; + } + leaf local-discriminator { + type discriminator; + config false; + description + "Local discriminator."; + } + leaf remote-discriminator { + type discriminator; + config false; + description + "Remote discriminator."; + } + leaf remote-multiplier { + type multiplier; + config false; + description + "Remote multiplier."; + } + leaf demand-capability { + if-feature "demand-mode"; + type boolean; + config false; + description + "Local Demand mode capability."; + } + leaf source-port { + when "../ip-encapsulation = 'true'" { + description + "Source port valid only when IP encapsulation is used."; + } + type inet:port-number; + config false; + description + "Source UDP port."; + } + leaf dest-port { + when "../ip-encapsulation = 'true'" { + description + "Destination port valid only when IP encapsulation + is used."; + } + type inet:port-number; + config false; + description + "Destination UDP port."; + } + container session-running { + config false; + description + "BFD 'session-running' information."; + leaf session-index { + type uint32; + description + "An index used to uniquely identify BFD sessions."; + } + leaf local-state { + type state; + description + "Local state."; + } + leaf remote-state { + type state; + description + "Remote state."; + } + leaf local-diagnostic { + type iana-bfd-types:diagnostic; + description + "Local diagnostic."; + } + leaf remote-diagnostic { + type iana-bfd-types:diagnostic; + description + "Remote diagnostic."; + } + leaf remote-authenticated { + type boolean; + description + "Indicates whether incoming BFD control packets are + authenticated."; + } + leaf remote-authentication-type { + when "../remote-authenticated = 'true'" { + description + "Only valid when incoming BFD control packets are + authenticated."; + } + if-feature "authentication"; + type iana-bfd-types:auth-type; + description + "Authentication type of incoming BFD control packets."; + } + leaf detection-mode { + type enumeration { + enum async-with-echo { + value 1; + description + "Async with echo."; + } + enum async-without-echo { + value 2; + description + "Async without echo."; + } + enum demand-with-echo { + value 3; + description + "Demand with echo."; + } + enum demand-without-echo { + value 4; + description + "Demand without echo."; + } + } + description + "Detection mode."; + } + leaf negotiated-tx-interval { + type uint32; + units "microseconds"; + description + "Negotiated transmit interval."; + } + leaf negotiated-rx-interval { + type uint32; + units "microseconds"; + description + "Negotiated receive interval."; + } + leaf detection-time { + type uint32; + units "microseconds"; + description + "Detection time."; + } + leaf echo-tx-interval-in-use { + when "../../path-type = 'bfd-types:path-ip-sh'" { + description + "Echo is supported for IP single-hop only."; + } + if-feature "echo-mode"; + type uint32; + units "microseconds"; + description + "Echo transmit interval in use."; + } + } + container session-statistics { + config false; + description + "BFD per-session statistics."; + leaf create-time { + type yang:date-and-time; + description + "Time and date when this session was created."; + } + leaf last-down-time { + type yang:date-and-time; + description + "Time and date of the last time this session went down."; + } + leaf last-up-time { + type yang:date-and-time; + description + "Time and date of the last time this session went up."; + } + leaf down-count { + type yang:counter32; + description + "The number of times this session has transitioned to the + 'down' state."; + } + leaf admin-down-count { + type yang:counter32; + description + "The number of times this session has transitioned to the + 'admin-down' state."; + } + leaf receive-packet-count { + type yang:counter64; + description + "Count of received packets in this session. This includes + valid and invalid received packets."; + } + leaf send-packet-count { + type yang:counter64; + description + "Count of sent packets in this session."; + } + leaf receive-invalid-packet-count { + type yang:counter64; + description + "Count of invalid received packets in this session."; + } + leaf send-failed-packet-count { + type yang:counter64; + description + "Count of packets that failed to be sent in this session."; + } + } + } + + grouping session-statistics-summary { + description + "Grouping for session statistics summary."; + container summary { + config false; + description + "BFD session statistics summary."; + leaf number-of-sessions { + type yang:gauge32; + description + "Number of BFD sessions."; + } + leaf number-of-sessions-up { + type yang:gauge32; + description + "Number of BFD sessions currently in the 'Up' state + (as defined in RFC 5880)."; + } + leaf number-of-sessions-down { + type yang:gauge32; + description + "Number of BFD sessions currently in the 'Down' or 'Init' + state but not 'adminDown' (as defined in RFC 5880)."; + } + leaf number-of-sessions-admin-down { + type yang:gauge32; + description + "Number of BFD sessions currently in the 'adminDown' state + (as defined in RFC 5880)."; + } + } + } + + grouping notification-parms { + description + "This group describes common parameters that will be sent + as part of BFD notifications."; + leaf local-discr { + type discriminator; + description + "BFD local discriminator."; + } + leaf remote-discr { + type discriminator; + description + "BFD remote discriminator."; + } + leaf new-state { + type state; + description + "Current BFD state."; + } + leaf state-change-reason { + type iana-bfd-types:diagnostic; + description + "Reason for the BFD state change."; + } + leaf time-of-last-state-change { + type yang:date-and-time; + description + "Calendar time of the most recent previous state change."; + } + leaf dest-addr { + type inet:ip-address; + description + "BFD peer address."; + } + leaf source-addr { + type inet:ip-address; + description + "BFD local address."; + } + leaf session-index { + type uint32; + description + "An index used to uniquely identify BFD sessions."; + } + leaf path-type { + type identityref { + base path-type; + } + description + "BFD path type."; + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang b/src/nbi/service/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang new file mode 100644 index 000000000..b182f7f5a --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang @@ -0,0 +1,2275 @@ + module ietf-eth-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology"; + prefix "etht"; + + import ietf-network { + prefix "nw"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering + (TE) Topologies"; + } + + import ietf-yang-types { + prefix "yang"; + reference + "RFC 6991: Common YANG Data Types"; + } + + import ietf-eth-tran-types { + prefix "etht-types"; + reference + "RFC YYYY: A YANG Data Model for Transport Network Client + Signals"; + } + // RFC Ed.: replace YYYY with actual RFC number, update date + // information and remove this note + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Aihua Guo + + + Editor: Yunbin Xu + + + Editor: Yang Zhao + + + Editor: Xufeng Liu + "; + + description + "This module defines a YANG data model for describing + layer-2 Ethernet transport topologies. The model fully + conforms to the Network Management Datastore + Architecture (NMDA). + + Copyright (c) 2023 IETF Trust and the persons identified + as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here."; + + revision 2023-09-28 { + description + "Initial Revision"; + reference + "RFC XXXX: A YANG Data Model for Ethernet TE Topology"; + // RFC Ed.: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Groupings + */ + + grouping label-range-info { + description + "Ethernet technology-specific label range related + information with a presence container indicating that the + label range is an Ethernet technology-specific label range. + + This grouping SHOULD be used together with the + eth-label and eth-label-step groupings to provide Ethernet + technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + + container ethernet-label-range { + presence + "Indicates the label range is an Ethernet label range. + + This container must not be present if there are other + presence containers or attributes indicating another type + of label range."; + description + "Ethernet-specific label range related information."; + + uses etht-types:eth-label-restriction; + } + } + + grouping eth-tran-topology-type { + description + "Identifies the Ethernet Transport topology type"; + + container eth-tran-topology { + presence "indicates a topology type of + Ethernet Transport Network."; + description "Eth transport topology type"; + } + } + + grouping ltp-bandwidth-profiles { + description + "A grouping which represents the bandwidth profile(s) + for the ETH LTP."; + + choice direction { + description + "Whether the bandwidth profiles are symmetrical or + asymmetrical"; + case symmetrical { + description + "The same bandwidth profile is used to describe the ingress + and the egress bandwidth profile."; + + container ingress-egress-bandwidth-profile { + description + "The bandwith profile used in the ingress and egress + direction."; + uses etht-types:etht-bandwidth-profiles; + } + } + case asymmetrical { + description + "Different ingress and egress bandwidth profiles + can be specified."; + container ingress-bandwidth-profile { + description + "The bandwidth profile used in the ingress direction."; + uses etht-types:etht-bandwidth-profiles; + } + container egress-bandwidth-profile { + description + "The bandwidth profile used in the egress direction."; + uses etht-types:etht-bandwidth-profiles; + } + } + } + } + grouping eth-ltp-attributes { + description + "Ethernet transport Link Termination Point (LTP) attributes"; + + leaf ltp-mac-address { + type yang:mac-address; + description + "The MAC address of the Ethernet LTP."; + } + leaf port-vlan-id { + type etht-types:vlanid; + description + "The Port VLAN ID of the Ethernet LTP."; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + leaf maximum-frame-size { + type uint16 { + range "64 .. 65535"; + } + description + "Maximum frame size"; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + uses ltp-bandwidth-profiles; + } + + grouping svc-vlan-classification { + description + "Grouping defining the capabilities for VLAN classification."; + + leaf-list supported-tag-types { + type etht-types:eth-tag-classify; + description + "List of VLAN tag types that can be used for the VLAN + classification. In case VLAN classification is not + supported, the list is empty."; + } + leaf vlan-bundling { + type boolean; + description + "In case VLAN classification is supported, indicates whether + VLAN bundling classification is also supported."; + reference + "MEF 10.3: Ethernet Services Attributes Phase 3"; + } + leaf vlan-range { + type etht-types:vid-range-type; + description + "In case VLAN classification is supported, indicates the + of available VLAN ID values."; + } + } + + grouping svc-vlan-push { + description + "Grouping defining the capabilities for VLAN push or swap + operations."; + + leaf-list supported-tag-types { + type etht-types:eth-tag-type; + description + "List of VLAN tag types that can be used to push or swap a + VLAN tag. In case VLAN push/swap is not supported, the list + is empty."; + reference + "IEEE 802.1Q: Virtual Bridged Local Area Networks"; + } + leaf vlan-range { + type etht-types:vid-range-type; + description + "In case VLAN push/swap operation is supported, the range + of available VLAN ID values."; + } + } + + grouping eth-svc-attributes { + description + "Ethernet Link Termination Point (LTP) service attributes."; + + container supported-classification { + description + "Service classification capability supported by the + Ethernet Link Termination Point (LTP)."; + + leaf port-classification { + type boolean; + description + "Indicates that the ETH LTP support port-based service + classification."; + } + container vlan-classification { + description + "Service classification capabilities based on the VLAN + tag(s) supported by the ETH LTP."; + leaf vlan-tag-classification { + type boolean; + description + "Indicates that the ETH LTP supports VLAN service + classification."; + } + container outer-tag { + description + "Service classification capabilities based on the outer + VLAN tag, supported by the ETH LTP."; + uses svc-vlan-classification; + } + container second-tag { + description + "Service classification capabilities based on the second + VLAN tag, supported by the ETH LTP."; + leaf second-tag-classification { + type boolean; + must ". = 'false' or " + + "../../vlan-tag-classification = 'true'" { + description + "VLAN service classification based on the second + VLAN tag can be supported only when VLAN service + classification"; + } + description + "Indicates that the ETH LTP support VLAN service + classification based on the second VLAN tag."; + } + uses svc-vlan-classification; + } + } + } + + container supported-vlan-operations { + description + "Reports the VLAN operations supported by the ETH LTP."; + + leaf asymmetrical-operations { + type boolean; + description + "Indicates whether the ETH LTP supports also asymmetrical + VLAN operations.It is assumed that symmetrical VLAN + operations are alwyas supported."; + } + leaf transparent-vlan-operations { + type boolean; + description + "Indicates that the ETH LTP supports transparent + operations."; + } + container vlan-pop { + description + "Indicates VLAN pop or swap operations capabilities."; + + leaf vlan-pop-operations { + type boolean; + description + "Indicates that the ETH LTP supports VLAN pop or + swap operations."; + } + leaf max-pop-tags { + type uint8 { + range "1..2"; + } + description + "Indicates the maximum number of tags that can be + popped/swapped."; + } + } + container vlan-push { + description + "Indicates VLAN push or swap operations capabilities."; + + leaf vlan-push-operation { + type boolean; + description + "Indicates that the ETH LTP supports VLAN push or + swap operations."; + } + container outer-tag { + description + "Indicates the supported VLAN operation capabilities + on the outer VLAN tag."; + uses svc-vlan-push; + } + container second-tag { + description + "Indicates the supported VLAN operation capabilities + on the second VLAN tag."; + leaf push-second-tag { + type boolean; + description + "Indicates that the ETH LTP supports VLAN push or swap + operations for the second VLAN tag."; + } + uses svc-vlan-push; + } + } + } + } + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + description + "Augment network types to include ETH transport newtork"; + + uses eth-tran-topology-type; + } + + augment "/nw:networks/nw:network/nw:node/tet:te" + + "/tet:te-node-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description "Augment TE node attributes."; + container eth-node { + presence "The TE node is an Ethernet node."; + description + "Presence container used only to indicate that the TE node + is an Ethernet node."; + } + } + + augment "/nw:networks/nw:network/nt:link" { + when "../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description "Augment link configuration"; + + container eth-svc { + presence + "When present, indicates that the Link supports Ethernet + client signals."; + description + "Presence container used only to indicate that the link + supports Ethernet client signals."; + } + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point" { + when "../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description "Augment only for Ethernet transport network."; + } + description + "Augment ETH LTP attributes"; + + container eth-svc { + presence + "When present, indicates that the Link Termination Point + (LTP) supports Ethernet client signals."; + description + "ETH LTP Service attributes."; + + uses eth-svc-attributes; + } + container eth-link-tp { + description + "Attributes of the Ethernet Link Termination Point (LTP)."; + uses eth-ltp-attributes; + } + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case eth { + uses etht-types:eth-bandwidth; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case eth { + uses etht-types:eth-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum TE bandwidth the TE link template"; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + uses etht-types:eth-bandwidth; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment unreserved TE bandwidth the TE link template"; + uses etht-types:eth-bandwidth; + } + + /* + * Augment TE label range information + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivities."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivity entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE link."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range information for the TE link + information source."; + uses label-range-info; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + description + "Augment TE label range information for the TE link template."; + uses label-range-info; + } + + /* + * Augment TE label. + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-step/" + + "tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE node + connectivity matrices"; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path of the + TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path of the + TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity + matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity + matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices"; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE node connectivity + matrices information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE node connectivity matrices of the information + source entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE node connectivity matrices of the information + source entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity matrices + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity matrices + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology"{ + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology"{ + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivities."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivities."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivity entry."; + case eth { + uses etht-types:eth-label; + } + } + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE link."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE link."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range start for the TE link + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range end for the TE link + information source."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "etht:eth-tran-topology" { + description + "Augmentation parameters apply only for networks with + Ethernet topology type."; + } + description + "Augment TE label range step for the TE link + information source."; + case eth { + uses etht-types:eth-label-step; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay primary path + of the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay backup path + of the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + description + "Augment TE label range start for the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + description + "Augment TE label range end for the TE link template."; + case eth { + uses etht-types:eth-label; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + description + "Augment TE label range step for the TE link template."; + case eth { + uses etht-types:eth-label-step; + } + } + + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang b/src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang new file mode 100644 index 000000000..222066adf --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang @@ -0,0 +1,1004 @@ + module ietf-eth-tran-service { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service"; + + prefix "ethtsvc"; + import ietf-yang-types { + prefix "yang"; + reference "RFC 6991 - Common YANG Data Types"; + } + + import ietf-network { + prefix "nw"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference "RFC 8776 - Traffic Engineering Common YANG Types"; + } + + import ietf-eth-tran-types { + prefix "etht-types"; + reference "RFC XXXX - A YANG Data Model for Transport + Network Client Signals"; + } + + import ietf-routing-types { + prefix "rt-types"; + reference "RFC 8294 - Common YANG Data Types for the + Routing Area"; + + } + + import ietf-te { + prefix "te"; + reference "RFC YYYY - A YANG Data Model for Traffic + Engineering Tunnels and Interfaces"; + } + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + WG List: + + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Italo Busi (italo.busi@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Anton Snitser (antons@sedonasys.com);0 + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (xufeng.liu.ietf@gmail.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com) + "; + + description + "This module defines a YANG data model for describing + the Ethernet services. The model fully conforms to the + Network Management Datastore Architecture (NMDA). + + Copyright (c) 2021 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -04 as an WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Groupings + */ + + grouping vlan-classification { + description + "A grouping which represents classification + on an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-classify; + description + "The tag type used for VLAN classification."; + } + choice individual-bundling-vlan { + description + "VLAN based classification can be individual + or bundling."; + + case individual-vlan { + leaf vlan-value { + type etht-types:vlanid; + description + "VLAN ID value."; + } + } + + case vlan-bundling { + leaf vlan-range { + type etht-types:vid-range-type; + description + "List of VLAN ID values."; + } + } + } + } + + grouping vlan-write { + description + "A grouping which represents push/pop operations + of an 802.1Q VLAN tag."; + + leaf tag-type { + type etht-types:eth-tag-type; + description + "The VLAN tag type to push/swap."; + } + leaf vlan-value { + type etht-types:vlanid; + description + "The VLAN ID value to push/swap."; + } + /* + * To be added: this attribute is used when: + * a) the ETH service has only one CoS (as in current version) + * b) as a default when a mapping between a given CoS value + * and the PCP value is not defined (in future versions) + */ + leaf default-pcp { + type uint8 { + range "0..7"; + } + description + "The default Priority Code Point (PCP) value to push/swap"; + } + } + + grouping vlan-operations { + description + "A grouping which represents VLAN operations."; + + leaf pop-tags { + type uint8 { + range "1..2"; + } + description + "The number of VLAN tags to pop (or swap if used in + conjunction with push-tags)"; + } + container push-tags { + description + "The VLAN tags to push (or swap if used in + conjunction with pop-tags)"; + + container outer-tag { + presence + "Indicates existence of the outermost VLAN tag to + push/swap"; + + description + "The outermost VLAN tag to push/swap."; + + uses vlan-write; + } + container second-tag { + must + '../outer-tag/tag-type = "etht-types:s-vlan-tag-type" and ' + + 'tag-type = "etht-types:c-vlan-tag-type"' + { + + error-message + " + When pushing/swapping two tags, the outermost tag must + be specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when pushing/swapping + two tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + + presence + "Indicates existence of a second outermost VLAN tag to + push/swap"; + + description + "The second outermost VLAN tag to push/swap."; + uses vlan-write; + } + } + } + + grouping named-or-value-bandwidth-profile { + description + "A grouping to configure a bandwdith profile either by + referencing a named bandwidth profile or by + configuring the values of the bandwidth profile attributes."; + choice style { + description + "Whether the bandwidth profile is named or defined by value"; + + case named { + description + "Named bandwidth profile."; + leaf bandwidth-profile-name { + type leafref { + path "/ethtsvc:etht-svc/ethtsvc:globals/" + + "ethtsvc:named-bandwidth-profiles/" + + "ethtsvc:bandwidth-profile-name"; + } + description + "Name of the bandwidth profile."; + } + } + case value { + description + "Bandwidth profile configured by value."; + uses etht-types:etht-bandwidth-profiles; + } + } + } + + grouping bandwidth-profiles { + description + "A grouping which represent bandwidth profile configuration."; + + choice direction { + description + "Whether the bandwidth profiles are symmetrical or + asymmetrical"; + case symmetrical { + description + "The same bandwidth profile is used to describe both + the ingress and the egress bandwidth profile."; + container ingress-egress-bandwidth-profile { + description + "The bandwdith profile used in both directions."; + uses named-or-value-bandwidth-profile; + } + } + case asymmetrical { + description + "Ingress and egress bandwidth profiles can be specified."; + container ingress-bandwidth-profile { + description + "The bandwdith profile used in the ingress direction."; + uses named-or-value-bandwidth-profile; + } + container egress-bandwidth-profile { + description + "The bandwdith profile used in the egress direction."; + uses named-or-value-bandwidth-profile; + } + } + } + } + + grouping etht-svc-access-parameters { + description + "ETH services access parameters"; + + leaf access-node-id { + type te-types:te-node-id; + description + "The identifier of the access node in + the ETH TE topology."; + } + + leaf access-node-uri { + type nw:node-id; + description + "The identifier of the access node in the network."; + } + + leaf access-ltp-id { + type te-types:te-tp-id; + description + "The TE link termination point identifier, used + together with access-node-id to identify the + access LTP."; + } + + leaf access-ltp-uri { + type nt:tp-id; + description + "The link termination point identifier in network topology, + used together with access-node-uri to identify the + access LTP."; + } + + leaf access-role { + type identityref { + base etht-types:access-role; + } + description + "Indicate the role of access, e.g., working or protection. "; + } + + container pm-config { + uses pm-config-grouping; + description + "This grouping is used to set the threshold value for + performance monitoring. "; + } + + container state { + config false; + description + "The state is used to monitor the status of service. "; + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + description + "Indicating the operational state of client signal. "; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + description + "Indicating the provisional state of client signal, + especially when there is a change, i.e., revise, create. "; + } + } + + leaf performance { + type identityref { + base etht-types:performance; + } + config false; + description + "Performance Monitoring for the service. "; + } + + } + + grouping etht-svc-tunnel-parameters { + description + "ETH services tunnel parameters."; + choice technology { + description + "Service multiplexing is optional and flexible."; + + case native-ethernet { + /* + placeholder to support proprietary multiplexing + (for further discussion) + */ + list eth-tunnels { + key name; + description + "ETH Tunnel list in native Ethernet scenario."; + uses tunnels-grouping; + } + } + + case frame-base { + list otn-tunnels { + key name; + description + "OTN Tunnel list in Frame-based scenario."; + uses tunnels-grouping; + } + } + + case mpls-tp { + container pw { + description + "Pseudowire information for Ethernet over MPLS-TP."; + uses pw-segment-grouping; + } + } + } + + /* + * Open issue: can we constraints it to be used only with mp services? + */ + leaf src-split-horizon-group { + type string; + description + "Identify a split horizon group at the Tunnel source TTP"; + } + leaf dst-split-horizon-group { + type string; + description + "Identify a split horizon group at the Tunnel destination TTP"; + } + } + + grouping etht-svc-pm-threshold-config { + description + "Configuraiton parameters for Ethernet service PM thresholds."; + + leaf sending-rate-high { + type uint64; + description + "High threshold of packet sending rate in kbps."; + } + leaf sending-rate-low { + type uint64; + description + "Low threshold of packet sending rate in kbps."; + } + leaf receiving-rate-high { + type uint64; + description + "High threshold of packet receiving rate in kbps."; + } + leaf receiving-rate-low { + type uint64; + description + "Low threshold of packet receiving rate in kbps."; + } + } + + grouping etht-svc-pm-stats { + description + "Ethernet service PM statistics."; + + leaf sending-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the + sending rate is above the high threshold"; + } + leaf sending-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the + sending rate is below the low threshold"; + } + leaf receiving-rate-too-high { + type uint32; + description + "Counter that indicates the number of times the + receiving rate is above the high threshold"; + } + leaf receiving-rate-too-low { + type uint32; + description + "Counter that indicates the number of times the + receiving rate is below the low threshold"; + } + } + + grouping etht-svc-instance-config { + description + "Configuraiton parameters for Ethernet services."; + + leaf etht-svc-name { + type string; + description + "Name of the ETH service."; + } + + leaf etht-svc-title { + type string; + description + "The Identifier of the ETH service."; + } + + leaf user-label { + type string; + description + "Alias of the ETH service."; + } + + leaf etht-svc-descr { + type string; + description + "Description of the ETH service."; + } + + leaf etht-svc-customer { + type string; + description + "Customer of the ETH service."; + } + + leaf etht-svc-type { + type etht-types:service-type; + description + "Type of ETH service (p2p, mp2mp or rmp)."; + /* Add default as p2p */ + } + + leaf etht-svc-lifecycle { + type etht-types:lifecycle-status; + description + "Lifecycle state of ETH service."; + /* Add default as installed */ + } + uses te-types:te-topology-identifier; + + uses resilience-grouping; + list etht-svc-end-points { + key etht-svc-end-point-name; + description + "The logical end point for the ETH service. "; + uses etht-svc-end-point-grouping; + } + + container alarm-shreshold { + description "threshold configuration for the E2E client signal"; + uses alarm-shreshold-grouping; + } + + container underlay { + description + "The unterlay tunnel information that carrying the + ETH service. "; + uses etht-svc-tunnel-parameters; + } + + leaf admin-status { + type identityref { + base te-types:tunnel-admin-state-type; + } + default te-types:tunnel-admin-state-up; + description "ETH service administrative state."; + } + } + + grouping etht-svc-instance-state { + description + "State parameters for Ethernet services."; + + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + default te-types:tunnel-state-up; + description "ETH service operational state."; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + description "ETH service provisioning state."; + } + leaf creation-time { + type yang:date-and-time; + description + "Time of ETH service creation."; + } + leaf last-updated-time { + type yang:date-and-time; + description + "Time of ETH service last update."; + } + + leaf created-by { + type string; + description + "The client signal is created by whom, + can be a system or staff ID."; + } + leaf last-updated-by { + type string; + description + "The client signal is last updated by whom, + can be a system or staff ID."; + } + leaf owned-by { + type string; + description + "The client signal is last updated by whom, + can be a system ID."; + } + container pm-state { + description + "PM data of E2E Ethernet service"; + uses pm-state-grouping; + } + container error-info { + description "error messages of configuration"; + uses error-info-grouping; + } + } + + grouping pm-state-grouping { + leaf latency { + description + "latency value of the E2E Ethernet service"; + type uint32; + units microsecond; + } + } + + grouping error-info-grouping { + leaf error-code { + description "error code"; + type uint16; + } + + leaf error-description { + description "detail message of error"; + type string; + } + + leaf error-timestamp { + description "the date and time error is happened"; + type yang:date-and-time; + } + } + + grouping alarm-shreshold-grouping { + leaf latency-threshold { + description "a threshold for the E2E client signal service's + latency. Once the latency value exceed this threshold, an alarm + should be triggered."; + type uint32; + units microsecond; + } + } + + /* + * Data nodes + */ + + container etht-svc { + description + "ETH services."; + + container globals { + description + "Globals Ethernet configuration data container"; + list named-bandwidth-profiles { + key bandwidth-profile-name; + description + "List of named bandwidth profiles used by + Ethernet services."; + + leaf bandwidth-profile-name { + type string; + description + "Name of the bandwidth profile."; + } + uses etht-types:etht-bandwidth-profiles; + } + } + list etht-svc-instances { + key etht-svc-name; + description + "The list of p2p ETH service instances"; + + uses etht-svc-instance-config; + + container state { + config false; + description + "Ethernet Service states."; + + uses etht-svc-instance-state; + } + } + } + + grouping resilience-grouping { + description + "Grouping for resilience configuration. "; + container resilience { + description + "To configure the data plane protection parameters, + currently a placeholder only, future candidate attributes + include, Revert, WTR, Hold-off Timer, ..."; + uses te:protection-restoration-properties; + } + } + + grouping etht-svc-end-point-grouping { + description + "Grouping for the end point configuration."; + leaf etht-svc-end-point-name { + type string; + description + "The name of the logical end point of ETH service. "; + } + + leaf etht-svc-end-point-id { + type string; + description + "The identifier of the logical end point of ETH service."; + } + + leaf etht-svc-end-point-descr { + type string; + description + "The description of the logical end point of ETH service. "; + } + + leaf topology-role { + type identityref { + base etht-types:topology-role; + } + description + "Indicating the underlay topology role, + e.g., hub,spoke, any-to-any "; + } + + container resilience { + description + "Placeholder for resilience configuration, for future study. "; + } + + list etht-svc-access-points { + key access-point-id; + min-elements "1"; + /* + Open Issue: + Is it possible to limit the max-elements only for p2p services? + max-elements "2"; + */ + description + "List of the ETH trasport services access point instances."; + + leaf access-point-id { + type string; + description + "ID of the service access point instance"; + } + uses etht-svc-access-parameters; + } + + leaf service-classification-type { + type identityref { + base etht-types:service-classification-type; + } + description + "Service classification type."; + } + + choice service-classification { + description + "Access classification can be port-based or + VLAN based."; + case port-classification { + /* no additional information */ + } + + case vlan-classification { + container outer-tag { + presence "The outermost VLAN tag exists"; + description + "Classifies traffic using the outermost VLAN tag."; + + uses vlan-classification; + } + container second-tag { + must + '../outer-tag/tag-type = "etht-types:classify-s-vlan" and ' + + 'tag-type = "etht-types:classify-c-vlan"' + { + error-message + " + When matching two tags, the outermost tag must be + specified and of S-VLAN type and the second + outermost tag must be of C-VLAN tag type. + "; + description + " + For IEEE 802.1Q interoperability, when matching two + tags, it is required that the outermost tag exists + and is an S-VLAN, and the second outermost tag is a + C-VLAN. + "; + } + presence "The second outermost VLAN tag exists"; + + description + "Classifies traffic using the second outermost VLAN tag."; + + uses vlan-classification; + } + } + } + + /* + * Open issue: can we constraints it to be used only with mp services? + */ + leaf split-horizon-group { + type string; + description "Identify a split horizon group"; + } + uses bandwidth-profiles; + + container vlan-operations { + description + "Configuration of VLAN operations."; + choice direction { + description + "Whether the VLAN operations are symmetrical or + asymmetrical"; + case symmetrical { + container symmetrical-operation { + uses vlan-operations; + description + "Symmetrical operations. + Expressed in the ingress direction, but + the reverse operation is applied to egress traffic"; + } + } + case asymmetrical { + container asymmetrical-operation { + description "Asymmetrical operations"; + container ingress { + uses vlan-operations; + description "Ingress operations"; + } + container egress { + uses vlan-operations; + description "Egress operations"; + } + } + } + } + } + } + + grouping pm-config-grouping { + description + "Grouping used for Performance Monitoring Configuration. "; + leaf pm-enable { + type boolean; + description + "Whether to enable the performance monitoring."; + } + + leaf sending-rate-high { + type uint64; + description + "The upperbound of sending rate."; + } + + leaf sending-rate-low { + type uint64; + description + "The lowerbound of sending rate."; + } + + leaf receiving-rate-high { + type uint64; + description + "The upperbound of receiving rate."; + } + + leaf receiving-rate-low { + type uint64; + description + "The lowerbound of receiving rate."; + } + } + + grouping pw-segment-grouping { + description + "Grouping used for PW configuration. "; + leaf pw-id { + type string; + description + "The Identifier information of pseudowire. "; + } + + leaf pw-name { + type string; + description + "The name information of pseudowire."; + } + + leaf transmit-label { + type rt-types:mpls-label; + description + "Transmit label information in PW. "; + } + + leaf receive-label { + type rt-types:mpls-label; + description + "Receive label information in PW. "; + } + leaf encapsulation-type { + type identityref { + base etht-types:encapsulation-type; + } + description + "The encapsulation type, raw or tag. "; + } + + leaf oper-status { + type identityref { + base te-types:tunnel-state-type; + } + config false; + description + "The operational state of the PW segment. "; + } + + container ingress-bandwidth-profile { + description + "Bandwidth Profile for ingress. "; + uses pw-segment-named-or-value-bandwidth-profile; + } + + list pw-paths { + key path-id; + description + "A list of pw paths. "; + + leaf path-id { + type uint8; + description + "The identifier of pw paths. "; + + } + + list tp-tunnels { + key name; + description + "Names of TP Tunnel underlay"; + leaf name { + type string; + description + "Names of TP Tunnel underlay"; + } + } + } + + } + grouping pw-segment-named-or-value-bandwidth-profile { + description + "A grouping to configure a bandwdith profile either by + referencing a named bandwidth profile or by + configuring the values of the bandwidth profile attributes."; + choice style { + description + "Whether the bandwidth profile is named or defined by value"; + case named { + description + "Named bandwidth profile."; + leaf bandwidth-profile-name { + type leafref { + path "/ethtsvc:etht-svc/ethtsvc:globals/" + + "ethtsvc:named-bandwidth-profiles/" + + "ethtsvc:bandwidth-profile-name"; + } + description + "Name of the bandwidth profile."; + } + } + case value { + description + "Bandwidth profile configured by value."; + uses etht-types:pw-segement-bandwidth-profile-grouping; + } + } + } + + grouping tunnels-grouping { + description + "A group of tunnels. "; + leaf name { + type leafref { + path "/te:te/te:tunnels/te:tunnel/te:name"; + require-instance false; + } + description "Dependency tunnel name"; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description "LSP encoding type"; + reference "RFC3945"; + } + leaf switching-type { + type identityref { + base te-types:switching-capabilities; + } + description "LSP switching type"; + reference "RFC3945"; + } + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang b/src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang new file mode 100644 index 000000000..f46908b34 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang @@ -0,0 +1,457 @@ + module ietf-eth-tran-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types"; + + prefix "etht-types"; + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + WG List: + + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Italo Busi (italo.busi@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (xufeng.liu.ietf@gmail.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com) + "; + + description + "This module defines the ETH types. + The model fully conforms to the Network Management + Datastore Architecture (NMDA). + + Copyright (c) 2019 IETF Trust and the persons + identified as authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -05 as a WG draft"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Identities + */ + + identity eth-vlan-tag-type { + description + "ETH VLAN tag type."; + } + + identity c-vlan-tag-type { + base eth-vlan-tag-type; + description + "802.1Q Customer VLAN"; + } + + identity s-vlan-tag-type { + base eth-vlan-tag-type; + description + "802.1Q Service VLAN (QinQ)"; + } + + identity service-classification-type { + description + "Service classification."; + } + + identity port-classification { + base service-classification-type; + description + "Port classification."; + } + identity vlan-classification { + base service-classification-type; + description + "VLAN classification."; + } + + identity eth-vlan-tag-classify { + description + "VLAN tag classification."; + } + + identity classify-c-vlan { + base eth-vlan-tag-classify; + description + "Classify 802.1Q Customer VLAN tag. + Only C-tag type is accepted"; + } + + identity classify-s-vlan { + base eth-vlan-tag-classify; + description + "Classify 802.1Q Service VLAN (QinQ) tag. + Only S-tag type is accepted"; + } + + identity classify-s-or-c-vlan { + base eth-vlan-tag-classify; + description + "Classify S-VLAN or C-VLAN tag-classify. + Either tag is accepted"; + } + + identity bandwidth-profile-type-ir { + description + "Bandwidth Profile Types"; + } + + identity mef-10-bwp { + base bandwidth-profile-type-ir; + description + "MEF 10 Bandwidth Profile"; + } + + identity rfc-2697-bwp { + base bandwidth-profile-type-ir; + description + "RFC 2697 Bandwidth Profile"; + } + identity rfc-2698-bwp { + base bandwidth-profile-type-ir; + description + "RFC 2698 Bandwidth Profile"; + } + + identity rfc-4115-bwp { + base bandwidth-profile-type-ir; + description + "RFC 4115 Bandwidth Profile"; + } + + identity service-type-ir { + description + "Type of Ethernet service."; + } + + identity p2p-svc { + base service-type-ir; + description + "Ethernet point-to-point service (EPL, EVPL)."; + } + + identity rmp-svc { + base service-type-ir; + description + "Ethernet rooted-multitpoint service (E-TREE, EP-TREE)."; + } + + identity mp2mp-svc { + base service-type-ir; + description + "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN)."; + } + + identity lifecycle-status-ir { + description + "Lifecycle Status."; + } + + identity installed { + base lifecycle-status-ir; + description + "Installed."; + } + + identity planned { + base lifecycle-status-ir; + description + "Planned."; + } + + identity pending-removal { + base lifecycle-status-ir; + description + "Pending Removal."; + } + + /* + * Type Definitions + */ + + typedef eth-tag-type { + type identityref { + base eth-vlan-tag-type; + } + description + "Identifies a specific ETH VLAN tag type."; + } + + typedef eth-tag-classify { + type identityref { + base eth-vlan-tag-classify; + } + description + "Identifies a specific VLAN tag classification."; + } + + typedef vlanid { + type uint16 { + range "1..4094"; + } + description + "The 12-bit VLAN-ID used in the VLAN Tag header."; + } + + typedef vid-range-type { + type string { + pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" + + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of VLAN Ids, or non overlapping VLAN ranges, in + ascending order, between 1 and 4094. + This type is used to match an ordered list of VLAN Ids, or + contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the + range 1 to 4094, and included in the list in non overlapping + ascending order. + + For example: 1,10-100,50,500-1000"; + } + + typedef bandwidth-profile-type { + type identityref { + base bandwidth-profile-type-ir; + } + description + "Identifies a specific Bandwidth Profile type."; + } + + typedef service-type { + type identityref { + base service-type-ir; + } + description + "Identifies the type of Ethernet service."; + } + + typedef lifecycle-status { + type identityref { + base lifecycle-status-ir; + } + description + "Identifies the lLifecycle Status ."; + } + + /* + * Grouping Definitions + */ + + grouping etht-bandwidth-profiles { + description + "Bandwidth profile configuration paramters."; + + leaf bandwidth-profile-type { + type etht-types:bandwidth-profile-type; + description + "The type of bandwidth profile."; + } + leaf CIR { + type uint64; + description + "Committed Information Rate in Kbps"; + } + leaf CBS { + type uint64; + description + "Committed Burst Size in in KBytes"; + } + leaf EIR { + type uint64; + /* Need to indicate that EIR is not supported by RFC 2697 + + must + '../bw-profile-type = "mef-10-bwp" or ' + + '../bw-profile-type = "rfc-2698-bwp" or ' + + '../bw-profile-type = "rfc-4115-bwp"' + + must + '../bw-profile-type != "rfc-2697-bwp"' + */ + description + "Excess Information Rate in Kbps + In case of RFC 2698, PIR = CIR + EIR"; + } + leaf EBS { + type uint64; + description + "Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS"; + } + leaf color-aware { + type boolean; + description + "Indicates weather the color-mode is + color-aware or color-blind."; + } + leaf coupling-flag { + type boolean; + /* Need to indicate that Coupling Flag is defined only for MEF 10 + + must + '../bw-profile-type = "mef-10-bwp"' + */ + description + "Coupling Flag."; + } + } + + identity topology-role { + description + "The role of underlay topology: e.g., hub, spoke, + any-to-any."; + } + + identity resilience { + description + "Placeholder for resilience information in data plane, + for future study. "; + } + + identity access-role { + description + "Indicating whether the access is a working or protection access."; + } + + identity root-primary { + base access-role; + description + "Designates the primary root UNI of an E-Tree service, and may also + designates the UNI access role of E-LINE and E-LAN service."; + } + + identity root-backup { + base access-role; + description + "Designates the backup root UNI of an E-Tree service."; + } + + identity leaf-access { + base access-role; + description + "Designates the leaf UNI of an E-Tree service."; + } + + identity leaf-edge { + base access-role; + description ""; + } + + identity performance { + description + "Placeholder for performance information, for future study."; + } + + identity encapsulation-type { + description + "Indicating how the service is encapsulated (to PW), e.g, raw or tag. "; + } + grouping pw-segement-bandwidth-profile-grouping { + description + "bandwidth profile grouping for PW segment. "; + leaf bandwidth-profile-type { + type etht-types:bandwidth-profile-type; + description + "The type of bandwidth profile."; + } + leaf CIR { + type uint64; + description + "Committed Information Rate in Kbps"; + } + leaf CBS { + type uint64; + description + "Committed Burst Size in in KBytes"; + } + leaf EIR { + type uint64; + /* Need to indicate that EIR is not supported by RFC 2697 + + must + '../bw-profile-type = "mef-10-bwp" or ' + + '../bw-profile-type = "rfc-2698-bwp" or ' + + '../bw-profile-type = "rfc-4115-bwp"' + + must + '../bw-profile-type != "rfc-2697-bwp"' + */ + description + "Excess Information Rate in Kbps + In case of RFC 2698, PIR = CIR + EIR"; + } + leaf EBS { + type uint64; + description + "Excess Burst Size in KBytes. + In case of RFC 2698, PBS = CBS + EBS"; + } + } + grouping eth-bandwidth { + description + "Available bandwith for ethernet."; + leaf eth-bandwidth { + type uint64{ + range "0..10000000000"; + } + units "Kbps"; + description + "Available bandwith value expressed in kilobits per second"; + } + } + + grouping eth-label-restriction { + description + "Label Restriction for ethernet."; + leaf tag-type { + type etht-types:eth-tag-type; + description "VLAN tag type."; + } + leaf priority { + type uint8; + description "priority."; + } + } + grouping eth-label { + description + "Label for ethernet."; + leaf vlanid { + type etht-types:vlanid; + description + "VLAN tag id."; + } + } + + grouping eth-label-step { + description "Label step for Ethernet VLAN"; + leaf eth-step { + type uint16 { + range "1..4095"; + } + default 1; + description + "Label step which represent possible increments for + an Ethernet VLAN tag."; + reference + "IEEE 802.1ad: Provider Bridges."; + } + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang b/src/nbi/service/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang new file mode 100644 index 000000000..eacefb636 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang @@ -0,0 +1,458 @@ +module ietf-inet-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; + prefix "inet"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types for Internet addresses and related things. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - ip-address-no-zone + - ipv4-address-no-zone + - ipv6-address-no-zone"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of types related to protocol fields ***/ + + typedef ip-version { + type enumeration { + enum unknown { + value "0"; + description + "An unknown or unspecified version of the Internet + protocol."; + } + enum ipv4 { + value "1"; + description + "The IPv4 protocol as defined in RFC 791."; + } + enum ipv6 { + value "2"; + description + "The IPv6 protocol as defined in RFC 2460."; + } + } + description + "This value represents the version of the IP protocol. + + In the value set and its semantics, this type is equivalent + to the InetVersion textual convention of the SMIv2."; + reference + "RFC 791: Internet Protocol + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + typedef dscp { + type uint8 { + range "0..63"; + } + description + "The dscp type represents a Differentiated Services Code Point + that may be used for marking packets in a traffic stream. + In the value set and its semantics, this type is equivalent + to the Dscp textual convention of the SMIv2."; + reference + "RFC 3289: Management Information Base for the Differentiated + Services Architecture + RFC 2474: Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers + RFC 2780: IANA Allocation Guidelines For Values In + the Internet Protocol and Related Headers"; + } + + typedef ipv6-flow-label { + type uint32 { + range "0..1048575"; + } + description + "The ipv6-flow-label type represents the flow identifier or Flow + Label in an IPv6 packet header that may be used to + discriminate traffic flows. + + In the value set and its semantics, this type is equivalent + to the IPv6FlowLabel textual convention of the SMIv2."; + reference + "RFC 3595: Textual Conventions for IPv6 Flow Label + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; + } + + typedef port-number { + type uint16 { + range "0..65535"; + } + description + "The port-number type represents a 16-bit port number of an + Internet transport-layer protocol such as UDP, TCP, DCCP, or + SCTP. Port numbers are assigned by IANA. A current list of + all assignments is available from . + + Note that the port number value zero is reserved by IANA. In + situations where the value zero does not make sense, it can + be excluded by subtyping the port-number type. + In the value set and its semantics, this type is equivalent + to the InetPortNumber textual convention of the SMIv2."; + reference + "RFC 768: User Datagram Protocol + RFC 793: Transmission Control Protocol + RFC 4960: Stream Control Transmission Protocol + RFC 4340: Datagram Congestion Control Protocol (DCCP) + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + /*** collection of types related to autonomous systems ***/ + + typedef as-number { + type uint32; + description + "The as-number type represents autonomous system numbers + which identify an Autonomous System (AS). An AS is a set + of routers under a single technical administration, using + an interior gateway protocol and common metrics to route + packets within the AS, and using an exterior gateway + protocol to route packets to other ASes. IANA maintains + the AS number space and has delegated large parts to the + regional registries. + + Autonomous system numbers were originally limited to 16 + bits. BGP extensions have enlarged the autonomous system + number space to 32 bits. This type therefore uses an uint32 + base type without a range restriction in order to support + a larger autonomous system number space. + + In the value set and its semantics, this type is equivalent + to the InetAutonomousSystemNumber textual convention of + the SMIv2."; + reference + "RFC 1930: Guidelines for creation, selection, and registration + of an Autonomous System (AS) + RFC 4271: A Border Gateway Protocol 4 (BGP-4) + RFC 4001: Textual Conventions for Internet Network Addresses + RFC 6793: BGP Support for Four-Octet Autonomous System (AS) + Number Space"; + } + + /*** collection of types related to IP addresses and hostnames ***/ + + typedef ip-address { + type union { + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "The ip-address type represents an IP address and is IP + version neutral. The format of the textual representation + implies the IP version. This type supports scoped addresses + by allowing zone identifiers in the address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '(%[\p{N}\p{L}]+)?'; + } + description + "The ipv4-address type represents an IPv4 address in + dotted-quad notation. The IPv4 address may include a zone + index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format for the zone index is the numerical + format"; + } + + typedef ipv6-address { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(%[\p{N}\p{L}]+)?'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(%.+)?'; + } + description + "The ipv6-address type represents an IPv6 address in full, + mixed, shortened, and shortened-mixed notation. The IPv6 + address may include a zone index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format of IPv6 addresses uses the textual + representation defined in Section 4 of RFC 5952. The + canonical format for the zone index is the numerical + format as described in Section 11.2 of RFC 4007."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-address-no-zone { + type union { + type inet:ipv4-address-no-zone; + type inet:ipv6-address-no-zone; + } + description + "The ip-address-no-zone type represents an IP address and is + IP version neutral. The format of the textual representation + implies the IP version. This type does not support scoped + addresses since it does not allow zone identifiers in the + address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address-no-zone { + type inet:ipv4-address { + pattern '[0-9\.]*'; + } + description + "An IPv4 address without a zone index. This type, derived from + ipv4-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + } + + typedef ipv6-address-no-zone { + type inet:ipv6-address { + pattern '[0-9a-fA-F:\.]*'; + } + description + "An IPv6 address without a zone index. This type, derived from + ipv6-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-prefix { + type union { + type inet:ipv4-prefix; + type inet:ipv6-prefix; + } + description + "The ip-prefix type represents an IP prefix and is IP + version neutral. The format of the textual representations + implies the IP version."; + } + + typedef ipv4-prefix { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; + } + description + "The ipv4-prefix type represents an IPv4 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 32. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The canonical format of an IPv4 prefix has all bits of + the IPv4 address set to zero that are not part of the + IPv4 prefix."; + } + + typedef ipv6-prefix { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(/.+)'; + } + + description + "The ipv6-prefix type represents an IPv6 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 128. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The IPv6 address should have all bits that do not belong + to the prefix set to zero. + + The canonical format of an IPv6 prefix has all bits of + the IPv6 address set to zero that are not part of the + IPv6 prefix. Furthermore, the IPv6 address is represented + as defined in Section 4 of RFC 5952."; + reference + "RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + /*** collection of domain name and URI types ***/ + + typedef domain-name { + type string { + pattern + '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' + + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' + + '|\.'; + length "1..253"; + } + description + "The domain-name type represents a DNS domain name. The + name SHOULD be fully qualified whenever possible. + + Internet domain names are only loosely specified. Section + 3.5 of RFC 1034 recommends a syntax (modified in Section + 2.1 of RFC 1123). The pattern above is intended to allow + for current practice in domain name use, and some possible + future expansion. It is designed to hold various types of + domain names, including names used for A or AAAA records + (host names) and other records, such as SRV records. Note + that Internet host names have a stricter syntax (described + in RFC 952) than the DNS recommendations in RFCs 1034 and + 1123, and that systems that want to store host names in + schema nodes using the domain-name type are recommended to + adhere to this stricter standard to ensure interoperability. + + The encoding of DNS names in the DNS protocol is limited + to 255 characters. Since the encoding consists of labels + prefixed by a length bytes and there is a trailing NULL + byte, only 253 characters can appear in the textual dotted + notation. + + The description clause of schema nodes using the domain-name + type MUST describe when and how these names are resolved to + IP addresses. Note that the resolution of a domain-name value + may require to query multiple DNS records (e.g., A for IPv4 + and AAAA for IPv6). The order of the resolution process and + which DNS record takes precedence can either be defined + explicitly or may depend on the configuration of the + resolver. + + Domain-name values use the US-ASCII encoding. Their canonical + format uses lowercase US-ASCII characters. Internationalized + domain names MUST be A-labels as per RFC 5890."; + reference + "RFC 952: DoD Internet Host Table Specification + RFC 1034: Domain Names - Concepts and Facilities + RFC 1123: Requirements for Internet Hosts -- Application + and Support + RFC 2782: A DNS RR for specifying the location of services + (DNS SRV) + RFC 5890: Internationalized Domain Names in Applications + (IDNA): Definitions and Document Framework"; + } + + typedef host { + type union { + type inet:ip-address; + type inet:domain-name; + } + description + "The host type represents either an IP address or a DNS + domain name."; + } + + typedef uri { + type string; + description + "The uri type represents a Uniform Resource Identifier + (URI) as defined by STD 66. + + Objects using the uri type MUST be in US-ASCII encoding, + and MUST be normalized as described by RFC 3986 Sections + 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide + unique URIs. Note that this normalization is not + sufficient to provide uniqueness. Two URIs that are + textually distinct after this normalization may still be + equivalent. + + Objects using the uri type may restrict the schemes that + they permit. For example, 'data:' and 'urn:' schemes + might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required. + + In the value set and its semantics, this type is equivalent + to the Uri SMIv2 textual convention defined in RFC 5017."; + reference + "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax + RFC 3305: Report from the Joint W3C/IETF URI Planning Interest + Group: Uniform Resource Identifiers (URIs), URLs, + and Uniform Resource Names (URNs): Clarifications + and Recommendations + RFC 5017: MIB Textual Conventions for Uniform Resource + Identifiers (URIs)"; + } + +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang b/src/nbi/service/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang new file mode 100644 index 000000000..f66c205ce --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang @@ -0,0 +1,1123 @@ +module ietf-interfaces { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; + prefix if; + + import ietf-yang-types { + prefix yang; + } + + organization + "IETF NETMOD (Network Modeling) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Martin Bjorklund + "; + + description + "This module contains a collection of YANG definitions for + managing network interfaces. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8343; see + the RFC itself for full legal notices."; + + revision 2018-02-20 { + description + "Updated to support NMDA."; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + + revision 2014-05-08 { + description + "Initial revision."; + reference + "RFC 7223: A YANG Data Model for Interface Management"; + } + + /* + * Typedefs + */ + + typedef interface-ref { + type leafref { + path "/if:interfaces/if:interface/if:name"; + } + description + "This type is used by data models that need to reference + interfaces."; + } + + /* + * Identities + */ + + identity interface-type { + description + "Base identity from which specific interface types are + derived."; + } + + /* + * Features + */ + + feature arbitrary-names { + description + "This feature indicates that the device allows user-controlled + interfaces to be named arbitrarily."; + } + feature pre-provisioning { + description + "This feature indicates that the device supports + pre-provisioning of interface configuration, i.e., it is + possible to configure an interface whose physical interface + hardware is not present on the device."; + } + feature if-mib { + description + "This feature indicates that the device implements + the IF-MIB."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + + /* + * Data nodes + */ + + container interfaces { + description + "Interface parameters."; + + list interface { + key "name"; + + description + "The list of interfaces on the device. + + The status of an interface is available in this list in the + operational state. If the configuration of a + system-controlled interface cannot be used by the system + (e.g., the interface hardware present does not match the + interface type), then the configuration is not applied to + the system-controlled interface shown in the operational + state. If the configuration of a user-controlled interface + cannot be used by the system, the configured interface is + not instantiated in the operational state. + + System-controlled interfaces created by the system are + always present in this list in the operational state, + whether or not they are configured."; + + leaf name { + type string; + description + "The name of the interface. + + A device MAY restrict the allowed values for this leaf, + possibly depending on the type of the interface. + For system-controlled interfaces, this leaf is the + device-specific name of the interface. + + If a client tries to create configuration for a + system-controlled interface that is not present in the + operational state, the server MAY reject the request if + the implementation does not support pre-provisioning of + interfaces or if the name refers to an interface that can + never exist in the system. A Network Configuration + Protocol (NETCONF) server MUST reply with an rpc-error + with the error-tag 'invalid-value' in this case. + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + + When a configured user-controlled interface is created by + the system, it is instantiated with the same name in the + operational state. + + A server implementation MAY map this leaf to the ifName + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifName. The definition of + such a mechanism is outside the scope of this document."; + reference + "RFC 2863: The Interfaces Group MIB - ifName"; + } + + leaf description { + type string; + description + "A textual description of the interface. + + A server implementation MAY map this leaf to the ifAlias + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifAlias. The definition of + such a mechanism is outside the scope of this document. + + Since ifAlias is defined to be stored in non-volatile + storage, the MIB implementation MUST map ifAlias to the + value of 'description' in the persistently stored + configuration."; + reference + "RFC 2863: The Interfaces Group MIB - ifAlias"; + } + + leaf type { + type identityref { + base interface-type; + } + mandatory true; + description + "The type of the interface. + + When an interface entry is created, a server MAY + initialize the type leaf with a valid value, e.g., if it + is possible to derive the type from the name of the + interface. + + If a client tries to set the type of an interface to a + value that can never be used by the system, e.g., if the + type is not supported or if the type does not match the + name of the interface, the server MUST reject the request. + A NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf enabled { + type boolean; + default "true"; + description + "This leaf contains the configured, desired state of the + interface. + + Systems that implement the IF-MIB use the value of this + leaf in the intended configuration to set + IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry + has been initialized, as described in RFC 2863. + + Changes in this leaf in the intended configuration are + reflected in ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf link-up-down-trap-enable { + if-feature if-mib; + type enumeration { + enum enabled { + value 1; + description + "The device will generate linkUp/linkDown SNMP + notifications for this interface."; + } + enum disabled { + value 2; + description + "The device will not generate linkUp/linkDown SNMP + notifications for this interface."; + } + } + description + "Controls whether linkUp/linkDown SNMP notifications + should be generated for this interface. + + If this node is not configured, the value 'enabled' is + operationally used by the server for interfaces that do + not operate on top of any other interface (i.e., there are + no 'lower-layer-if' entries), and 'disabled' otherwise."; + reference + "RFC 2863: The Interfaces Group MIB - + ifLinkUpDownTrapEnable"; + } + + leaf admin-status { + if-feature if-mib; + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "Not ready to pass packets and not in some test mode."; + } + enum testing { + value 3; + description + "In some test mode."; + } + } + config false; + mandatory true; + description + "The desired state of the interface. + + This leaf has the same read semantics as ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf oper-status { + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + + description + "The interface does not pass any packets."; + } + enum testing { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum unknown { + value 4; + description + "Status cannot be determined for some reason."; + } + enum dormant { + value 5; + description + "Waiting for some external event."; + } + enum not-present { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum lower-layer-down { + value 7; + description + "Down due to state of lower-layer interface(s)."; + } + } + config false; + mandatory true; + description + "The current operational state of the interface. + + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + + leaf last-change { + type yang:date-and-time; + config false; + description + "The time the interface entered its current operational + state. If the current state was entered prior to the + last re-initialization of the local network management + subsystem, then this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + + leaf if-index { + if-feature if-mib; + type int32 { + range "1..2147483647"; + } + config false; + mandatory true; + description + "The ifIndex value for the ifEntry represented by this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifIndex"; + } + + leaf phys-address { + type yang:phys-address; + config false; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a Media Access Control (MAC) address. The + interface's media-specific modules must define the bit + and byte ordering and the format of the value of this + object. For interfaces that do not have such an address + (e.g., a serial line), this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; + } + + leaf-list higher-layer-if { + type interface-ref; + config false; + description + "A list of references to interfaces layered on top of this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf-list lower-layer-if { + type interface-ref; + config false; + + description + "A list of references to interfaces layered underneath this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf speed { + type yang:gauge64; + units "bits/second"; + config false; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces that do not vary in + bandwidth or for those where no accurate estimation can + be made, this node should contain the nominal bandwidth. + For interfaces that have no concept of bandwidth, this + node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - + ifSpeed, ifHighSpeed"; + } + + container statistics { + config false; + description + "A collection of interface-related statistics objects."; + + leaf discontinuity-time { + type yang:date-and-time; + mandatory true; + description + "The time on the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + + leaf in-octets { + type yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + + leaf in-unicast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + + leaf in-broadcast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + + leaf in-multicast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + + leaf in-discards { + type yang:counter32; + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + + leaf in-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + + leaf in-unknown-protos { + type yang:counter32; + + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf out-octets { + type yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + + leaf out-unicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + + leaf out-broadcast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + + leaf out-multicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + + leaf out-discards { + type yang:counter32; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + + leaf out-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + } + + } + } + + /* + * Legacy typedefs + */ + + typedef interface-state-ref { + type leafref { + path "/if:interfaces-state/if:interface/if:name"; + } + status deprecated; + description + "This type is used by data models that need to reference + the operationally present interfaces."; + } + + /* + * Legacy operational state data nodes + */ + + container interfaces-state { + config false; + status deprecated; + description + "Data nodes for the operational state of interfaces."; + + list interface { + key "name"; + status deprecated; + + description + "The list of interfaces on the device. + + System-controlled interfaces created by the system are + always present in this list, whether or not they are + configured."; + + leaf name { + type string; + status deprecated; + description + "The name of the interface. + + A server implementation MAY map this leaf to the ifName + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifName. The definition of + such a mechanism is outside the scope of this document."; + reference + "RFC 2863: The Interfaces Group MIB - ifName"; + } + + leaf type { + type identityref { + base interface-type; + } + mandatory true; + status deprecated; + description + "The type of the interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf admin-status { + if-feature if-mib; + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "Not ready to pass packets and not in some test mode."; + } + enum testing { + value 3; + description + "In some test mode."; + } + } + mandatory true; + status deprecated; + description + "The desired state of the interface. + + This leaf has the same read semantics as ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf oper-status { + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "The interface does not pass any packets."; + } + enum testing { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum unknown { + value 4; + description + "Status cannot be determined for some reason."; + } + enum dormant { + value 5; + description + "Waiting for some external event."; + } + enum not-present { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum lower-layer-down { + value 7; + description + "Down due to state of lower-layer interface(s)."; + } + } + mandatory true; + status deprecated; + description + "The current operational state of the interface. + + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + + leaf last-change { + type yang:date-and-time; + status deprecated; + description + "The time the interface entered its current operational + state. If the current state was entered prior to the + last re-initialization of the local network management + subsystem, then this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + + leaf if-index { + if-feature if-mib; + type int32 { + range "1..2147483647"; + } + mandatory true; + status deprecated; + description + "The ifIndex value for the ifEntry represented by this + interface."; + + reference + "RFC 2863: The Interfaces Group MIB - ifIndex"; + } + + leaf phys-address { + type yang:phys-address; + status deprecated; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a Media Access Control (MAC) address. The + interface's media-specific modules must define the bit + and byte ordering and the format of the value of this + object. For interfaces that do not have such an address + (e.g., a serial line), this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; + } + + leaf-list higher-layer-if { + type interface-state-ref; + status deprecated; + description + "A list of references to interfaces layered on top of this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf-list lower-layer-if { + type interface-state-ref; + status deprecated; + description + "A list of references to interfaces layered underneath this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf speed { + type yang:gauge64; + units "bits/second"; + status deprecated; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces that do not vary in + bandwidth or for those where no accurate estimation can + + be made, this node should contain the nominal bandwidth. + For interfaces that have no concept of bandwidth, this + node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - + ifSpeed, ifHighSpeed"; + } + + container statistics { + status deprecated; + description + "A collection of interface-related statistics objects."; + + leaf discontinuity-time { + type yang:date-and-time; + mandatory true; + status deprecated; + description + "The time on the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + + leaf in-octets { + type yang:counter64; + status deprecated; + description + "The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + + leaf in-unicast-pkts { + type yang:counter64; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + + leaf in-broadcast-pkts { + type yang:counter64; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + + leaf in-multicast-pkts { + type yang:counter64; + status deprecated; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + + leaf in-discards { + type yang:counter32; + status deprecated; + + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + + leaf in-errors { + type yang:counter32; + status deprecated; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + + leaf in-unknown-protos { + type yang:counter32; + status deprecated; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf out-octets { + type yang:counter64; + status deprecated; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + + leaf out-unicast-pkts { + type yang:counter64; + status deprecated; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + + leaf out-broadcast-pkts { + type yang:counter64; + status deprecated; + + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + + leaf out-multicast-pkts { + type yang:counter64; + status deprecated; + description + "The total number of packets that higher-level protocols + requested be transmitted and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + + leaf out-discards { + type yang:counter32; + status deprecated; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + + leaf out-errors { + type yang:counter32; + status deprecated; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + } + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-isis@2022-10-19.yang b/src/nbi/service/ietf_network_bw/yang/ietf-isis@2022-10-19.yang new file mode 100644 index 000000000..cbbfc0815 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-isis@2022-10-19.yang @@ -0,0 +1,4455 @@ +module ietf-isis { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; + prefix isis; + + import ietf-routing { + prefix rt; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-interfaces { + prefix if; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + import ietf-key-chain { + prefix key-chain; + reference + "RFC 8177: YANG Data Model for Key Chains"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import iana-routing-types { + prefix iana-rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import ietf-bfd-types { + prefix bfd-types; + reference + "RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + + organization + "IETF LSR Working Group"; + contact + "WG Web: + WG List: + + Editor: Stephane Litkowski + + + Author: Derek Yeung + + + Author: Acee Lindem + + + Author: Jeffrey Zhang + + + Author: Ladislav Lhotka + "; + description + "This YANG module defines the generic configuration and + operational states for the IS-IS protocol common to all + vendor implementations. It is intended that the module + will be extended by vendors to define vendor-specific + IS-IS configuration parameters and policies - + for example, route maps or route policies. + + This YANG data model conforms to the Network Management + Datastore Architecture (NMDA) as described in RFC 8342. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2022 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 9130; see the + RFC itself for full legal notices."; + reference + "RFC 8342: Network Management Datastore Architecture (NMDA)"; + + revision 2022-10-19 { + description + "Initial revision."; + reference + "RFC 9130: YANG Data Model for the IS-IS Protocol"; + } + + /* Identities */ + + identity isis { + base rt:routing-protocol; + description + "Identity for the IS-IS routing protocol."; + } + + identity lsp-log-reason { + description + "Base identity for a Link State PDU (LSP) + change log reason."; + } + + identity refresh { + base lsp-log-reason; + description + "Identity used when the LSP log reason is that an LSP + refresh was received."; + } + + identity content-change { + base lsp-log-reason; + description + "Identity used when the LSP log reason is + a change in the contents of the LSP."; + } + + identity frr-protection-method { + description + "Base identity for a Fast Reroute protection method."; + } + + identity frr-protection-method-lfa { + base frr-protection-method; + description + "Loop-Free Alternate as defined in RFC 5286."; + reference + "RFC 5286: Basic Specification for IP Fast Reroute: + Loop-Free Alternates"; + } + + identity frr-protection-method-rlfa { + base frr-protection-method; + description + "Remote Loop-Free Alternate as defined in RFC 7490."; + reference + "RFC 7490: Remote Loop-Free Alternate (LFA) + Fast Reroute (FRR)"; + } + + identity frr-protection-method-rsvpte { + base frr-protection-method; + description + "RSVP-TE as defined in RFC 4090."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for + LSP Tunnels"; + } + + identity frr-protection-available-type { + description + "Base identity for Fast Reroute protection types + provided by an alternate path."; + } + + identity frr-protection-available-node-type { + base frr-protection-available-type; + description + "Node protection is provided by the alternate."; + } + + identity frr-protection-available-link-type { + base frr-protection-available-type; + description + "Link protection is provided by the alternate."; + } + + identity frr-protection-available-srlg-type { + base frr-protection-available-type; + description + "Shared Risk Link Group (SRLG) protection is provided by + the alternate."; + } + + identity frr-protection-available-downstream-type { + base frr-protection-available-type; + description + "The alternate is downstream of the node in the path."; + } + + identity frr-protection-available-other-type { + base frr-protection-available-type; + description + "The level of protection is unknown."; + } + + identity frr-alternate-type { + description + "Base identity for the IP Fast Reroute alternate type."; + } + + identity frr-alternate-type-equal-cost { + base frr-alternate-type; + description + "ECMP-based alternate."; + } + + identity frr-alternate-type-lfa { + base frr-alternate-type; + description + "LFA-based alternate."; + } + + identity frr-alternate-type-remote-lfa { + base frr-alternate-type; + description + "Remote-LFA-based alternate."; + } + + identity frr-alternate-type-tunnel { + base frr-alternate-type; + description + "Tunnel-based alternate (such as RSVP-TE or GRE)."; + } + + identity frr-alternate-mrt { + base frr-alternate-type; + description + "MRT-based alternate."; + } + + identity frr-alternate-tilfa { + base frr-alternate-type; + description + "TI-LFA-based alternate."; + } + + identity frr-alternate-other { + base frr-alternate-type; + description + "Other type of alternate."; + } + + identity unidirectional-link-delay-subtlv-flag { + description + "Base identity for the flag corresponding to the + Unidirectional Link Delay sub-TLV as defined in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + identity unidirectional-link-delay-subtlv-a-flag { + base unidirectional-link-delay-subtlv-flag; + description + "The 'A' bit field represents the Anomalous (A) bit. + The A bit is set when the measured value of + this parameter exceeds its configured + maximum threshold. + The A bit is cleared when the measured value + falls below its configured reuse threshold. + If the A bit is clear, + the value represents steady-state link performance."; + } + + identity min-max-unidirectional-link-delay-subtlv-flag { + description + "Base identity for the flag corresponding to the Min/Max + Unidirectional Link Delay sub-TLV as defined in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + identity min-max-unidirectional-link-delay-subtlv-a-flag { + base min-max-unidirectional-link-delay-subtlv-flag; + description + "The 'A' bit field represents the Anomalous (A) bit. + The A bit is set when the measured value of + this parameter exceeds its configured + maximum threshold. + The A bit is cleared when the measured value + falls below its configured reuse threshold. + If the A bit is clear, + the value represents steady-state link performance."; + } + + identity unidirectional-link-loss-subtlv-flag { + description + "Base identity for the flag corresponding to the + Unidirectional Link Loss sub-TLV as defined in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + identity unidirectional-link-loss-subtlv-a-flag { + base unidirectional-link-loss-subtlv-flag; + description + "The 'A' bit field represents the Anomalous (A) bit. + The A bit is set when the measured value of + this parameter exceeds its configured + maximum threshold. + The A bit is cleared when the measured value + falls below its configured reuse threshold. + If the A bit is clear, + the value represents steady-state link performance."; + } + + identity tlv229-flag { + description + "Base identity for the flag corresponding to TLV 229 + (M-Topologies) as defined in RFC 5120."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + + identity tlv229-overload-flag { + base tlv229-flag; + description + "If set, the originator is overloaded + and must be avoided in the path calculation."; + } + + identity tlv229-attached-flag { + base tlv229-flag; + description + "If set, the originator is attached to + another area using the referred metric."; + } + + identity router-capability-flag { + description + "Base identity for the flag corresponding to the + Router Capability TLV as defined in RFC 7981."; + reference + "RFC 7981: IS-IS Extensions for Advertising Router + Information"; + } + + identity router-capability-flooding-flag { + base router-capability-flag; + description + "Quote from RFC 7981: + 'If the S bit is set(1), the IS-IS Router CAPABILITY TLV + MUST be flooded across the entire routing domain. If the + S bit is not set(0), the TLV MUST NOT be leaked between + levels. This bit MUST NOT be altered during the TLV + leaking.'"; + } + + identity router-capability-down-flag { + base router-capability-flag; + description + "Quote from RFC 7981: + 'When the IS-IS Router CAPABILITY TLV is leaked from + Level 2 (L2) to Level 1 (L1), the D bit MUST be set. + Otherwise, this bit MUST be clear. IS-IS Router + CAPABILITY TLVs with the D bit set MUST NOT be leaked from + Level 1 to Level 2. This is to prevent TLV looping.'"; + } + + identity lsp-flag { + description + "Base identity for LSP attributes as defined in ISO 10589."; + reference + "ISO 10589: Intermediate System to Intermediate System + intra-domain routeing information exchange protocol + for use in conjunction with the protocol for providing + the connectionless-mode network service (ISO 8473)"; + } + + identity lsp-partitioned-flag { + base lsp-flag; + description + "Originator partition repair supported."; + } + + identity lsp-attached-error-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the error metric."; + } + + identity lsp-attached-delay-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the delay metric."; + } + + identity lsp-attached-expense-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the expense metric."; + } + + identity lsp-attached-default-metric-flag { + base lsp-flag; + description + "Set when the originator is attached to + another area using the default metric."; + } + + identity lsp-overload-flag { + base lsp-flag; + description + "If set, the originator is overloaded + and must be avoided in the path calculation."; + } + + identity lsp-l1-system-flag { + base lsp-flag; + description + "Set when the Intermediate System has an L1 type."; + } + + identity lsp-l2-system-flag { + base lsp-flag; + description + "Set when the Intermediate System has an L2 type."; + } + + /* Feature definitions */ + + feature osi-interface { + description + "Support of OSI-specific parameters on an interface."; + } + + feature poi-tlv { + description + "Support of the Purge Originator Identification (POI) TLV."; + reference + "RFC 6232: Purge Originator Identification TLV for IS-IS"; + } + + feature ietf-spf-delay { + description + "Support for the IETF SPF delay algorithm."; + reference + "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm + for Link-State IGPs"; + } + + feature bfd { + description + "Support for detection of IS-IS neighbor reachability + via BFD."; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 5881: Bidirectional Forwarding Detection (BFD) + for IPv4 and IPv6 (Single Hop)"; + } + + feature key-chain { + description + "Support of key chains for authentication."; + reference + "RFC 8177: YANG Data Model for Key Chains"; + } + + feature node-flag { + description + "Support for node flags for IS-IS prefixes."; + reference + "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability"; + } + + feature node-tag { + description + "Support for node administrative tags for IS-IS + routing instances."; + reference + "RFC 7917: Advertising Node Administrative Tags in IS-IS"; + } + + feature ldp-igp-sync { + description + "Support for LDP IGP synchronization."; + reference + "RFC 5443: LDP IGP Synchronization"; + } + + feature fast-reroute { + description + "Support for IP Fast Reroute (IP FRR)."; + } + + feature nsr { + description + "Support for Non-Stop-Routing (NSR). The IS-IS NSR feature + allows a router with redundant control-plane capability + (e.g., dual Route Processor (RP) cards) to maintain its + state and adjacencies during planned and unplanned + IS-IS instance restarts. It differs from graceful restart + or Non-Stop Forwarding (NSF) in that no protocol signaling + or assistance from adjacent IS-IS neighbors is required to + recover control-plane state."; + } + + feature lfa { + description + "Support for Loop-Free Alternates (LFAs)."; + reference + "RFC 5286: Basic Specification for IP Fast Reroute: + Loop-Free Alternates"; + } + + feature remote-lfa { + description + "Support for remote LFAs (R-LFAs)."; + reference + "RFC 7490: Remote Loop-Free Alternate (LFA) + Fast Reroute (FRR)"; + } + + feature overload-max-metric { + description + "Support of overload by setting all links to the maximum + link metric. In IS-IS, the overload bit is usually used to + signal that a node cannot be used as a transit node. The + 'overload-max-metric' feature provides similar behavior, + also setting all the link metrics to MAX_METRIC."; + } + + feature prefix-tag { + description + "Support for 32-bit prefix tags."; + reference + "RFC 5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags"; + } + + feature prefix-tag64 { + description + "Support for 64-bit prefix tags."; + reference + "RFC 5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags"; + } + + feature auto-cost { + description + "Support for an IS-IS interface metric computation + according to a reference bandwidth."; + } + + feature te-rid { + description + "Traffic Engineering router ID."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 6119: IPv6 Traffic Engineering in IS-IS"; + } + + feature max-ecmp { + description + "Sets the maximum number of ECMP paths."; + } + + feature multi-topology { + description + "Support for Multi-Topology (MT) Routing."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + + feature nlpid-control { + description + "Support for the advertisement of a Network Layer + Protocol Identifier within an IS-IS configuration."; + } + + feature graceful-restart { + description + "Support for IS-IS graceful restart."; + reference + "RFC 8706: Restart Signaling for IS-IS"; + } + + feature lsp-refresh { + description + "Configuration of the LSP refresh interval."; + } + + feature maximum-area-addresses { + description + "Support for 'maximum-area-addresses' configuration."; + } + + feature admin-control { + description + "Administrative control of the protocol state."; + } + + /* Type definitions */ + + typedef circuit-id { + type uint8; + description + "This type defines the circuit ID + associated with an interface."; + } + + typedef extended-circuit-id { + type uint32; + description + "This type defines the extended circuit ID + associated with an interface."; + } + + typedef interface-type { + type enumeration { + enum broadcast { + description + "Broadcast interface type."; + } + enum point-to-point { + description + "Point-to-point interface type."; + } + } + description + "This type defines the type of adjacency + to be established for the interface. + 'interface-type' determines the type + of Hello message that is used."; + } + + typedef level { + type enumeration { + enum level-1 { + description + "This enum indicates L1-only capability."; + } + enum level-2 { + description + "This enum indicates L2-only capability."; + } + enum level-all { + description + "This enum indicates capability for both levels."; + } + } + default "level-all"; + description + "This type defines the IS-IS level of an object."; + } + + typedef adj-state-type { + type enumeration { + enum up { + description + "This state indicates that the adjacency is established."; + } + enum down { + description + "This state indicates that the adjacency is + NOT established."; + } + enum init { + description + "This state indicates that the adjacency is being + established."; + } + enum failed { + description + "This state indicates that the adjacency has failed."; + } + } + description + "This type defines the states of an adjacency."; + } + + typedef if-state-type { + type enumeration { + enum up { + description + "'up' state."; + } + enum down { + description + "'down' state."; + } + } + description + "This type defines the state of an interface."; + } + + typedef level-number { + type uint8 { + range "1 .. 2"; + } + description + "This type defines the current IS-IS level."; + } + + typedef lsp-id { + type string { + pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' + + '{4}\.[0-9][0-9]-[0-9][0-9]'; + } + description + "This type defines the IS-IS LSP ID format using a + pattern. An example LSP ID is '0143.0438.AEF0.02-01'."; + } + + typedef area-address { + type string { + pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; + } + description + "This type defines the area address format."; + } + + typedef snpa { + type string { + length "0 .. 20"; + } + description + "This type defines the Subnetwork Point of Attachment (SNPA) + format. The SNPA should be encoded according to the rules + specified for the particular type of subnetwork being used. + As an example, for an Ethernet subnetwork, the SNPA is + encoded as a Media Access Control (MAC) address, such as + '00aa.bbcc.ddee'."; + } + + typedef system-id { + type string { + pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; + } + description + "This type defines the IS-IS system ID by using a pattern. + An example system ID is '0143.0438.AEF0'."; + } + + typedef extended-system-id { + type string { + pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' + + '[0-9][0-9]'; + } + description + "This type defines the IS-IS system ID using a pattern. + 'extended-system-id' contains the pseudonode number + in addition to the system ID. + An example extended system ID is '0143.0438.AEF0.00'."; + } + + typedef wide-metric { + type uint32 { + range "0 .. 16777215"; + } + description + "This type defines the wide-style format of an IS-IS metric."; + } + + typedef std-metric { + type uint8 { + range "0 .. 63"; + } + description + "This type defines the old-style format of the IS-IS metric."; + } + + typedef mesh-group-state { + type enumeration { + enum mesh-inactive { + description + "The interface is not part of a mesh group."; + } + enum mesh-set { + description + "The interface is part of a mesh group."; + } + enum mesh-blocked { + description + "LSPs must not be flooded over this interface."; + } + } + description + "This type describes the mesh group state of an interface."; + } + + /* Grouping for notifications */ + + grouping notification-instance-hdr { + description + "Instance-specific IS-IS notification data grouping."; + leaf routing-protocol-name { + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } + description + "Name of the IS-IS instance."; + } + leaf isis-level { + type level; + description + "IS-IS level of the instance."; + } + } + + grouping notification-interface-hdr { + description + "Interface-specific IS-IS notification data grouping."; + leaf interface-name { + type if:interface-ref; + description + "IS-IS interface name."; + } + leaf interface-level { + type level; + description + "IS-IS level of the interface."; + } + leaf extended-circuit-id { + type extended-circuit-id; + description + "Extended circuit ID of the interface."; + } + } + + /* Groupings for IP Fast Reroute */ + + grouping instance-fast-reroute-config { + description + "This group defines the global configuration of IP + Fast Reroute (FRR)."; + container fast-reroute { + if-feature "fast-reroute"; + description + "This container may be augmented with global + parameters for IP FRR."; + container lfa { + if-feature "lfa"; + description + "This container may be augmented with + global parameters for Loop-Free Alternates (LFAs). + The creation of this container has no effect on + LFA activation."; + } + } + } + + grouping interface-lfa-config { + leaf candidate-enabled { + type boolean; + default "true"; + description + "Enables the interface to be used as a backup."; + } + leaf enabled { + type boolean; + default "false"; + description + "Activates the LFA. Per-prefix LFA computation is assumed."; + } + container remote-lfa { + if-feature "remote-lfa"; + leaf enabled { + type boolean; + default "false"; + description + "Activates the remote LFA (R-LFA)."; + } + description + "Remote LFA configuration."; + } + description + "Grouping for LFA interface configuration."; + } + + grouping interface-fast-reroute-config { + description + "This group defines the interface configuration of IP FRR."; + container fast-reroute { + if-feature "fast-reroute"; + container lfa { + if-feature "lfa"; + uses interface-lfa-config; + container level-1 { + uses interface-lfa-config; + description + "LFA level-1 configuration."; + } + container level-2 { + uses interface-lfa-config; + description + "LFA level-2 configuration."; + } + description + "LFA configuration."; + } + description + "Interface IP FRR configuration."; + } + } + + grouping instance-fast-reroute-state { + description + "IP FRR state data grouping."; + container protected-routes { + config false; + list address-family-stats { + key "address-family prefix alternate"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf prefix { + type inet:ip-prefix; + description + "Protected prefix."; + } + leaf alternate { + type inet:ip-address; + description + "Alternate next hop for the prefix."; + } + leaf alternate-type { + type identityref { + base frr-alternate-type; + } + description + "Type of alternate."; + } + leaf best { + type boolean; + description + "Set when the alternate is the preferred alternate; + clear otherwise."; + } + leaf non-best-reason { + type string { + length "1..255"; + } + description + "Information field that explains why the alternate + is not the best alternate. The length should be + limited to 255 Unicode characters. The expected format + is a single line of text."; + } + container protection-available { + leaf-list protection-types { + type identityref { + base frr-protection-available-type; + } + description + "This list contains a set of protection + types defined as identities. + An identity must be added for each type of + protection provided by the alternate. + As an example, if an alternate provides + SRLG, node, and link protection, three + identities must be added in this list: + one for SRLG protection, one for node + protection, and one for link protection."; + } + description + "Protection types provided by the alternate."; + } + leaf alternate-metric-1 { + type uint32; + description + "Metric from the Point of Local Repair (PLR) to the + destination through the alternate path."; + } + leaf alternate-metric-2 { + type uint32; + description + "Metric from the PLR to the alternate node."; + } + leaf alternate-metric-3 { + type uint32; + description + "Metric from the alternate node to the destination."; + } + description + "Per-address-family protected prefix statistics."; + } + description + "List of prefixes that are protected."; + } + container unprotected-routes { + config false; + list prefixes { + key "address-family prefix"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf prefix { + type inet:ip-prefix; + description + "Unprotected prefix."; + } + description + "Per-address-family unprotected prefix statistics."; + } + description + "List of prefixes that are not protected."; + } + list protection-statistics { + key "frr-protection-method"; + config false; + leaf frr-protection-method { + type identityref { + base frr-protection-method; + } + description + "Protection method used."; + } + list address-family-stats { + key "address-family"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf total-routes { + type yang:gauge32; + description + "Total prefixes."; + } + leaf unprotected-routes { + type yang:gauge32; + description + "Total prefixes that are not protected."; + } + leaf protected-routes { + type yang:gauge32; + description + "Total prefixes that are protected."; + } + leaf link-protected-routes { + type yang:gauge32; + description + "Total prefixes that are link protected."; + } + leaf node-protected-routes { + type yang:gauge32; + description + "Total prefixes that are node protected."; + } + description + "Per-address-family protected prefix statistics."; + } + description + "Global protection statistics."; + } + } + + /* Routing table and local Routing Information Base (RIB) + groupings */ + + grouping local-rib { + description + "Local RIB: RIB for routes computed by the local IS-IS + routing instance."; + container local-rib { + config false; + description + "Local RIB."; + list route { + key "prefix"; + description + "Routes."; + leaf prefix { + type inet:ip-prefix; + description + "Destination prefix."; + } + container next-hops { + description + "Next hops for the route."; + list next-hop { + key "next-hop"; + description + "List of next hops for the route."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + leaf next-hop { + type inet:ip-address; + description + "Next-hop address."; + } + } + } + leaf metric { + type uint32; + description + "Metric for this route."; + } + leaf level { + type level-number; + description + "Level number for this route."; + } + leaf route-tag { + type uint32; + description + "Route tag for this route."; + } + } + } + } + + grouping route-content { + description + "IS-IS protocol-specific route properties grouping."; + leaf metric { + type uint32; + description + "IS-IS metric of a route."; + } + leaf-list tag { + type uint64; + description + "List of tags associated with the route. This list + provides a consolidated view of both 32-bit and 64-bit + tags (RFC 5130) available for the prefix."; + reference + "RFC 5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags"; + } + leaf route-type { + type enumeration { + enum l2-intra-area { + description + "Level-2 internal route. As per RFC 5302, + the prefix is directly connected to the + advertising router. It cannot be + distinguished from an L1->L2 inter-area + route."; + reference + "RFC 5302: Domain-Wide Prefix Distribution with + Two-Level IS-IS"; + } + enum l1-intra-area { + description + "Level-1 internal route. As per RFC 5302, + the prefix is directly connected to the + advertising router."; + } + enum l2-external { + description + "Level-2 external route. As per RFC 5302, + such a route is learned from other IGPs. + It cannot be distinguished from an L1->L2 + inter-area external route."; + } + enum l1-external { + description + "Level-1 external route. As per RFC 5302, + such a route is learned from other IGPs."; + } + enum l1-inter-area { + description + "These prefixes are learned via L2 routing."; + } + enum l1-inter-area-external { + description + "These prefixes are learned via L2 routing + towards a level-2 external route."; + } + } + description + "IS-IS route type."; + } + } + + /* Grouping definitions for configuration and operational states */ + + grouping adjacency-state { + container adjacencies { + config false; + list adjacency { + leaf neighbor-sys-type { + type level; + description + "Level capability of the neighboring system."; + } + leaf neighbor-sysid { + type system-id; + description + "The system ID of the neighbor."; + } + leaf neighbor-extended-circuit-id { + type extended-circuit-id; + description + "The circuit ID of the neighbor."; + } + leaf neighbor-snpa { + type snpa; + description + "The SNPA of the neighbor."; + } + leaf usage { + type level; + description + "Defines the level(s) activated for the adjacency. + On a point-to-point link, this might be level 1 and + level 2, but on a LAN, the usage will be level 1 + between neighbors at level 1 or level 2 between + neighbors at level 2."; + } + leaf hold-timer { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "The holding time (in seconds) for this adjacency. + This value is based on received Hello PDUs and the + elapsed time since receipt."; + } + leaf neighbor-priority { + type uint8 { + range "0 .. 127"; + } + description + "Priority of the neighboring IS for becoming the + Designated Intermediate System (DIS)."; + } + leaf lastuptime { + type yang:timestamp; + description + "When the adjacency most recently entered the + 'up' state, measured in hundredths of a + second since the last reinitialization of + the network management subsystem. + The value is 0 if the adjacency has never + been in the 'up' state."; + } + leaf state { + type adj-state-type; + description + "This leaf describes the state of the interface."; + } + description + "List of operational adjacencies."; + } + description + "This container lists the adjacencies of + the local node."; + } + description + "Adjacency state."; + } + + grouping admin-control { + leaf enabled { + if-feature "admin-control"; + type boolean; + default "true"; + description + "Enables or disables the protocol."; + } + description + "Grouping for administrative control."; + } + + grouping ietf-spf-delay { + leaf initial-delay { + type rt-types:timer-value-milliseconds; + units "msec"; + default "50"; + description + "Delay used while in the QUIET state (milliseconds)."; + } + leaf short-delay { + type rt-types:timer-value-milliseconds; + units "msec"; + default "200"; + description + "Delay used while in the SHORT_WAIT state (milliseconds)."; + } + leaf long-delay { + type rt-types:timer-value-milliseconds; + units "msec"; + default "5000"; + description + "Delay used while in the LONG_WAIT state (milliseconds)."; + } + leaf hold-down { + type rt-types:timer-value-milliseconds; + units "msec"; + default "10000"; + description + "This timer value defines the period without any changes + for the IGP to be considered stable (in milliseconds)."; + } + leaf time-to-learn { + type rt-types:timer-value-milliseconds; + units "msec"; + default "500"; + description + "Duration used to learn all the IGP events + related to a single network event (milliseconds)."; + } + leaf current-state { + type enumeration { + enum quiet { + description + "QUIET state."; + } + enum short-wait { + description + "SHORT_WAIT state."; + } + enum long-wait { + description + "LONG_WAIT state."; + } + } + config false; + description + "Current SPF Back-Off algorithm state."; + } + leaf remaining-time-to-learn { + type rt-types:timer-value-milliseconds; + units "msec"; + config false; + description + "Remaining time until the time-to-learn timer fires."; + } + leaf remaining-hold-down { + type rt-types:timer-value-milliseconds; + units "msec"; + config false; + description + "Remaining time until the hold-down timer fires."; + } + leaf last-event-received { + type yang:timestamp; + config false; + description + "Time of the last IGP event received."; + } + leaf next-spf-time { + type yang:timestamp; + config false; + description + "Time when the next SPF has been scheduled."; + } + leaf last-spf-time { + type yang:timestamp; + config false; + description + "Time of the last SPF computation."; + } + description + "Grouping for IETF SPF delay configuration and state."; + reference + "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm + for Link-State IGPs"; + } + + grouping node-tag-config { + description + "IS-IS node tag configuration state."; + container node-tags { + if-feature "node-tag"; + list node-tag { + key "tag"; + leaf tag { + type uint32; + description + "Node tag value."; + } + description + "List of tags."; + } + description + "Container for node administrative tags."; + } + } + + grouping authentication-global-cfg { + choice authentication-type { + case key-chain { + if-feature "key-chain"; + leaf key-chain { + type key-chain:key-chain-ref; + description + "Reference to a key chain."; + } + } + case password { + leaf key { + type string; + description + "This leaf specifies the authentication key. The + length of the key may be dependent on the + cryptographic algorithm."; + } + leaf crypto-algorithm { + type identityref { + base key-chain:crypto-algorithm; + } + description + "Cryptographic algorithm associated with a key."; + } + } + description + "Choice of authentication."; + } + description + "Grouping for global authentication configuration."; + } + + grouping metric-type-global-cfg { + leaf value { + type enumeration { + enum wide-only { + description + "Advertises the new metric style only (RFC 5305)."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + enum old-only { + description + "Advertises the old metric style only (RFC 1195)."; + reference + "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and + dual environments"; + } + enum both { + description + "Advertises both metric styles."; + } + } + description + "Type of metric to be generated: + + - 'wide-only' means that only a new metric style + is generated. + - 'old-only' means that only an old metric style + is generated. + - 'both' means that both are advertised. + + This leaf only affects IPv4 metrics."; + } + description + "Grouping for global metric style configuration."; + } + + grouping metric-type-global-cfg-with-default { + leaf value { + type enumeration { + enum wide-only { + description + "Advertises the new metric style only (RFC 5305)."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + enum old-only { + description + "Advertises the old metric style only (RFC 1195)."; + reference + "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and + dual environments"; + } + enum both { + description + "Advertises both metric styles."; + } + } + default "wide-only"; + description + "Type of metric to be generated: + + - 'wide-only' means that only a new metric style + is generated. + - 'old-only' means that only an old metric style + is generated. + - 'both' means that both are advertised. + + This leaf only affects IPv4 metrics."; + } + description + "Grouping for global metric style configuration."; + } + + grouping default-metric-global-cfg { + leaf value { + type wide-metric; + description + "Value of the metric."; + } + description + "Global default metric configuration grouping."; + } + + grouping default-metric-global-cfg-with-default { + leaf value { + type wide-metric; + default "10"; + description + "Value of the metric."; + } + description + "Global default metric configuration grouping."; + } + + grouping overload-global-cfg { + leaf status { + type boolean; + default "false"; + description + "This leaf specifies the overload status."; + } + description + "Grouping for overload bit configuration."; + } + + grouping overload-max-metric-global-cfg { + leaf timeout { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Timeout (in seconds) of the overload condition."; + } + description + "Overload maximum metric configuration grouping."; + } + + grouping route-preference-global-cfg { + choice granularity { + case detail { + leaf internal { + type uint8; + description + "Protocol preference for internal routes."; + } + leaf external { + type uint8; + description + "Protocol preference for external routes."; + } + } + case coarse { + leaf default { + type uint8; + description + "Protocol preference for all IS-IS routes."; + } + } + description + "Choice for implementation of route preference."; + } + description + "Global route preference grouping."; + } + + grouping hello-authentication-cfg { + choice authentication-type { + case key-chain { + if-feature "key-chain"; + leaf key-chain { + type key-chain:key-chain-ref; + description + "Reference to a key chain."; + } + } + case password { + leaf key { + type string; + description + "Authentication key specification. The length of the + key may be dependent on the cryptographic algorithm."; + } + leaf crypto-algorithm { + type identityref { + base key-chain:crypto-algorithm; + } + description + "Cryptographic algorithm associated with a key."; + } + } + description + "Choice of authentication."; + } + description + "Grouping for Hello authentication."; + } + + grouping hello-interval-cfg { + leaf value { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Interval (in seconds) between successive Hello + messages."; + } + description + "Interval between Hello messages."; + } + + grouping hello-interval-cfg-with-default { + leaf value { + type rt-types:timer-value-seconds16; + units "seconds"; + default "10"; + description + "Interval (in seconds) between successive Hello + messages."; + } + description + "Interval between Hello messages."; + } + + grouping hello-multiplier-cfg { + leaf value { + type uint16; + description + "Number of missed Hello messages prior to + declaring the adjacency down."; + } + description + "Grouping for the number of missed Hello messages prior to + declaring the adjacency down."; + } + + grouping hello-multiplier-cfg-with-default { + leaf value { + type uint16; + default "3"; + description + "Number of missed Hello messages prior to + declaring the adjacency down."; + } + description + "Grouping for the number of missed Hello messages prior to + declaring the adjacency down."; + } + + grouping priority-cfg { + leaf value { + type uint8 { + range "0 .. 127"; + } + description + "Priority of the interface for DIS election."; + } + description + "Interface DIS election priority grouping."; + } + + grouping priority-cfg-with-default { + leaf value { + type uint8 { + range "0 .. 127"; + } + default "64"; + description + "Priority of the interface for DIS election."; + } + description + "Interface DIS election priority grouping."; + } + + grouping metric-cfg { + leaf value { + type wide-metric; + description + "Metric value."; + } + description + "Interface metric grouping."; + } + + grouping metric-cfg-with-default { + leaf value { + type wide-metric; + default "10"; + description + "Metric value."; + } + description + "Interface metric grouping."; + } + + grouping metric-parameters { + container metric-type { + uses metric-type-global-cfg-with-default; + container level-1 { + uses metric-type-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses metric-type-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Metric style global configuration."; + } + container default-metric { + uses default-metric-global-cfg-with-default; + container level-1 { + uses default-metric-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses default-metric-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Default metric global configuration."; + } + container auto-cost { + if-feature "auto-cost"; + description + "Interface auto-cost configuration state."; + leaf enabled { + type boolean; + description + "Enables or disables interface auto-cost."; + } + leaf reference-bandwidth { + when "../enabled = 'true'" { + description + "Only when auto-cost is enabled."; + } + type uint32 { + range "1..4294967"; + } + units "Mbits"; + description + "Configures the reference bandwidth used to automatically + determine the interface cost (Mbits). The cost is the + reference bandwidth divided by the interface speed, + with 1 being the minimum cost."; + } + } + description + "Grouping for global metric parameters."; + } + + grouping high-availability-parameters { + container graceful-restart { + if-feature "graceful-restart"; + leaf enabled { + type boolean; + default "false"; + description + "Enables graceful restart."; + } + leaf restart-interval { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Interval (in seconds) to attempt graceful restart prior + to failure."; + } + leaf helper-enabled { + type boolean; + default "true"; + description + "Enables a local IS-IS router as a graceful restart + helper."; + } + description + "Configuration of graceful restart."; + } + container nsr { + if-feature "nsr"; + description + "Non-Stop Routing (NSR) configuration."; + leaf enabled { + type boolean; + default "false"; + description + "Enables or disables NSR."; + } + } + description + "Grouping for high-availability parameters."; + } + + grouping authentication-parameters { + container authentication { + uses authentication-global-cfg; + container level-1 { + uses authentication-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses authentication-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Authentication global configuration for + both LSPs and Sequence Number PDUs (SNPs)."; + } + description + "Grouping for authentication parameters."; + } + + grouping address-family-parameters { + container address-families { + if-feature "nlpid-control"; + list address-family-list { + key "address-family"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + leaf enabled { + type boolean; + description + "Activates the address family."; + } + description + "List of address families and whether or not they + are activated."; + } + description + "Address family configuration."; + } + description + "Grouping for address family parameters."; + } + + grouping mpls-parameters { + container mpls { + container te-rid { + if-feature "te-rid"; + description + "Stable IS-IS router IP address used for Traffic + Engineering."; + leaf ipv4-router-id { + type inet:ipv4-address; + description + "Router ID value that would be used in TLV 134."; + } + leaf ipv6-router-id { + type inet:ipv6-address; + description + "Router ID value that would be used in TLV 140."; + } + } + container ldp { + container igp-sync { + if-feature "ldp-igp-sync"; + description + "This container may be augmented with global + parameters for LDP IGP synchronization."; + } + description + "LDP configuration."; + } + description + "MPLS configuration."; + } + description + "Grouping for MPLS global parameters."; + } + + grouping lsp-parameters { + leaf lsp-mtu { + type uint16; + units "bytes"; + default "1492"; + description + "Maximum size of an LSP PDU in bytes."; + } + leaf lsp-lifetime { + type uint16 { + range "1..65535"; + } + units "seconds"; + description + "Lifetime of the router's LSPs in seconds."; + } + leaf lsp-refresh { + if-feature "lsp-refresh"; + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Refresh interval of the router's LSPs in seconds."; + } + leaf poi-tlv { + if-feature "poi-tlv"; + type boolean; + default "false"; + description + "Enables the advertisement of the IS-IS Purge Originator + Identification TLV."; + } + description + "Grouping for LSP global parameters."; + } + + grouping spf-parameters { + container spf-control { + leaf paths { + if-feature "max-ecmp"; + type uint16 { + range "1..65535"; + } + description + "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; + } + container ietf-spf-delay { + if-feature "ietf-spf-delay"; + uses ietf-spf-delay; + description + "IETF SPF delay algorithm configuration."; + } + description + "SPF calculation control."; + } + description + "Grouping for SPF global parameters."; + } + + grouping instance-config { + description + "IS-IS global configuration grouping."; + uses admin-control; + leaf level-type { + type level; + default "level-all"; + description + "Level of an IS-IS node. Can be 'level-1', 'level-2', or + 'level-all'."; + } + leaf system-id { + type system-id; + description + "System ID of the node."; + } + leaf maximum-area-addresses { + if-feature "maximum-area-addresses"; + type uint8; + default "3"; + description + "Maximum areas supported."; + } + leaf-list area-address { + type area-address; + description + "List of areas supported by the protocol instance."; + } + uses lsp-parameters; + uses high-availability-parameters; + uses node-tag-config; + uses metric-parameters; + uses authentication-parameters; + uses address-family-parameters; + uses mpls-parameters; + uses spf-parameters; + uses instance-fast-reroute-config; + container preference { + uses route-preference-global-cfg; + description + "Router preference configuration for IS-IS + protocol instance route installation."; + } + container overload { + uses overload-global-cfg; + description + "Router protocol instance overload state configuration."; + } + container overload-max-metric { + if-feature "overload-max-metric"; + uses overload-max-metric-global-cfg; + description + "Router protocol instance overload maximum + metric advertisement configuration."; + } + } + + grouping instance-state { + description + "IS-IS instance operational state."; + uses spf-log; + uses lsp-log; + uses hostname-db; + uses lsdb; + uses local-rib; + uses system-counters; + uses instance-fast-reroute-state; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one + or more of this IS-IS instance's counters suffered a + discontinuity. If no such discontinuities have occurred + since the IS-IS instance was last reinitialized, then + this node contains the time the IS-IS instance was + reinitialized, which normally occurs when it was + created."; + } + } + + grouping multi-topology-config { + description + "Per-topology configuration."; + container default-metric { + uses default-metric-global-cfg; + container level-1 { + uses default-metric-global-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses default-metric-global-cfg; + description + "Configuration specific to level 2."; + } + description + "Default metric per-topology configuration."; + } + uses node-tag-config; + } + + grouping interface-config { + description + "Interface configuration grouping."; + uses admin-control; + leaf level-type { + type level; + default "level-all"; + description + "IS-IS level of the interface."; + } + leaf lsp-pacing-interval { + type rt-types:timer-value-milliseconds; + units "milliseconds"; + default "33"; + description + "Interval (in milliseconds) between LSP transmissions."; + } + leaf lsp-retransmit-interval { + type rt-types:timer-value-seconds16; + units "seconds"; + description + "Interval (in seconds) between LSP retransmissions."; + } + leaf passive { + type boolean; + default "false"; + description + "Indicates whether the interface is in passive mode (IS-IS + is not running, but the network is advertised)."; + } + leaf csnp-interval { + type rt-types:timer-value-seconds16; + units "seconds"; + default "10"; + description + "Interval (in seconds) between Complete Sequence Number + Packet (CSNP) messages."; + } + container hello-padding { + leaf enabled { + type boolean; + default "true"; + description + "IS-IS Hello padding activation. Enabled by default."; + } + description + "IS-IS Hello padding configuration."; + } + leaf mesh-group-enabled { + type mesh-group-state; + description + "IS-IS interface mesh group state."; + } + leaf mesh-group { + when "../mesh-group-enabled = 'mesh-set'" { + description + "Only valid when 'mesh-group-enabled' equals 'mesh-set'."; + } + type uint8; + description + "IS-IS interface mesh group ID."; + } + leaf interface-type { + type interface-type; + default "broadcast"; + description + "Type of adjacency to be established for the interface. + This dictates the type of Hello messages that are used."; + } + leaf-list tag { + if-feature "prefix-tag"; + type uint32; + description + "List of tags associated with the interface."; + } + leaf-list tag64 { + if-feature "prefix-tag64"; + type uint64; + description + "List of 64-bit tags associated with the interface."; + } + leaf node-flag { + if-feature "node-flag"; + type boolean; + default "false"; + description + "Sets the prefix as a node representative prefix."; + } + container hello-authentication { + uses hello-authentication-cfg; + container level-1 { + uses hello-authentication-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses hello-authentication-cfg; + description + "Configuration specific to level 2."; + } + description + "Authentication type to be used in Hello messages."; + } + container hello-interval { + uses hello-interval-cfg-with-default; + container level-1 { + uses hello-interval-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses hello-interval-cfg; + description + "Configuration specific to level 2."; + } + description + "Interval between Hello messages."; + } + container hello-multiplier { + uses hello-multiplier-cfg-with-default; + container level-1 { + uses hello-multiplier-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses hello-multiplier-cfg; + description + "Configuration specific to level 2."; + } + description + "Hello multiplier configuration."; + } + container priority { + must '../interface-type = "broadcast"' { + error-message "Priority only applies to broadcast " + + "interfaces."; + description + "Checks for a broadcast interface."; + } + uses priority-cfg-with-default; + container level-1 { + uses priority-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses priority-cfg; + description + "Configuration specific to level 2."; + } + description + "Priority for DIS election."; + } + container metric { + uses metric-cfg-with-default; + container level-1 { + uses metric-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses metric-cfg; + description + "Configuration specific to level 2."; + } + description + "Metric configuration."; + } + container bfd { + if-feature "bfd"; + description + "BFD interface configuration."; + uses bfd-types:client-cfg-parms; + reference + "RFC 5880: Bidirectional Forwarding Detection (BFD) + RFC 5881: Bidirectional Forwarding Detection + (BFD) for IPv4 and IPv6 (Single Hop) + RFC 9314: YANG Data Model for Bidirectional Forwarding + Detection (BFD)"; + } + container address-families { + if-feature "nlpid-control"; + list address-family-list { + key "address-family"; + leaf address-family { + type iana-rt-types:address-family; + description + "Address family."; + } + description + "List of address families."; + } + description + "Interface address families."; + } + container mpls { + container ldp { + leaf igp-sync { + if-feature "ldp-igp-sync"; + type boolean; + default "false"; + description + "Enables IGP/LDP synchronization."; + } + description + "Configuration related to LDP."; + } + description + "MPLS configuration for IS-IS interfaces."; + } + uses interface-fast-reroute-config; + } + + grouping multi-topology-interface-config { + description + "IS-IS interface topology configuration."; + container metric { + uses metric-cfg; + container level-1 { + uses metric-cfg; + description + "Configuration specific to level 1."; + } + container level-2 { + uses metric-cfg; + description + "Configuration specific to level 2."; + } + description + "Metric IS-IS interface configuration."; + } + } + + grouping interface-state { + description + "IS-IS interface operational state."; + uses adjacency-state; + uses event-counters; + uses packet-counters; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one + or more of this IS-IS interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the IS-IS interface was last reinitialized, then + this node contains the time the IS-IS interface was + reinitialized, which normally occurs when it was + created."; + } + } + + /* Grouping for the hostname database */ + + grouping hostname-db { + container hostnames { + config false; + list hostname { + key "system-id"; + leaf system-id { + type system-id; + description + "System ID associated with the hostname."; + } + leaf hostname { + type string { + length "1..255"; + } + description + "Hostname associated with the system ID + as defined in RFC 5301."; + reference + "RFC 5301: Dynamic Hostname Exchange Mechanism + for IS-IS"; + } + description + "List of system ID / hostname associations."; + } + description + "Hostname-to-system-ID mapping database."; + } + description + "Grouping for hostname-to-system-ID mapping database."; + } + + /* Groupings for counters */ + + grouping system-counters { + container system-counters { + config false; + list level { + key "level"; + leaf level { + type level-number; + description + "IS-IS level."; + } + leaf corrupted-lsps { + type uint32; + description + "Number of corrupted in-memory LSPs detected. + LSPs received from the wire with a bad + checksum are silently dropped and not counted. + LSPs received from the wire with parse errors + are counted by 'lsp-errors'."; + } + leaf authentication-type-fails { + type uint32; + description + "Number of authentication type mismatches."; + } + leaf authentication-fails { + type uint32; + description + "Number of authentication key failures."; + } + leaf database-overload { + type uint32; + description + "Number of times the database has become + overloaded."; + } + leaf own-lsp-purge { + type uint32; + description + "Number of times a zero-aged copy of the system's + own LSP is received from some other IS-IS node."; + } + leaf manual-address-drop-from-area { + type uint32; + description + "Number of times a manual address + has been dropped from the area."; + } + leaf max-sequence { + type uint32; + description + "Number of times the system has attempted + to exceed the maximum sequence number."; + } + leaf sequence-number-skipped { + type uint32; + description + "Number of times a sequence number skip has + occurred."; + } + leaf id-len-mismatch { + type uint32; + description + "Number of times a PDU is received with a + different value for the ID field length + than that of the receiving system."; + } + leaf partition-changes { + type uint32; + description + "Number of partition changes detected."; + } + leaf lsp-errors { + type uint32; + description + "Number of LSPs received with errors."; + } + leaf spf-runs { + type uint32; + description + "Number of times SPF was run at this level."; + } + description + "List of supported levels."; + } + description + "List of counters for the IS-IS protocol instance."; + } + description + "Grouping for IS-IS system counters."; + } + + grouping event-counters { + container event-counters { + config false; + leaf adjacency-changes { + type uint32; + description + "The number of times an adjacency state change has + occurred on this interface."; + } + leaf adjacency-number { + type uint32; + description + "The number of adjacencies on this interface."; + } + leaf init-fails { + type uint32; + description + "The number of times initialization of this interface has + failed. This counts events such as Point-to-Point + Protocol (PPP) Network Control Protocol (NCP) failures. + Failures to form an adjacency are counted by + 'adjacency-rejects'."; + } + leaf adjacency-rejects { + type uint32; + description + "The number of times an adjacency has been + rejected on this interface."; + } + leaf id-len-mismatch { + type uint32; + description + "The number of times an IS-IS PDU with an ID + field length different from that for this + system has been received on this interface."; + } + leaf max-area-addresses-mismatch { + type uint32; + description + "The number of times an IS-IS PDU has been + received on this interface with the + max area address field differing from that of + this system."; + } + leaf authentication-type-fails { + type uint32; + description + "Number of authentication type mismatches."; + } + leaf authentication-fails { + type uint32; + description + "Number of authentication key failures."; + } + leaf lan-dis-changes { + type uint32; + description + "The number of times the DIS has changed on this + interface at this level. If the interface type is + 'point-to-point', the count is zero."; + } + description + "IS-IS interface event counters."; + } + description + "Grouping for IS-IS interface event counters."; + } + + grouping packet-counters { + container packet-counters { + config false; + list level { + key "level"; + leaf level { + type level-number; + description + "IS-IS level."; + } + container iih { + leaf in { + type uint32; + description + "Received IS-IS Hello (IIH) PDUs."; + } + leaf out { + type uint32; + description + "Sent IIH PDUs."; + } + description + "Number of IIH PDUs received/sent."; + } + container ish { + leaf in { + type uint32; + description + "Received Intermediate System Hello (ISH) PDUs."; + } + leaf out { + type uint32; + description + "Sent ISH PDUs."; + } + description + "ISH PDUs received/sent."; + } + container esh { + leaf in { + type uint32; + description + "Received End System Hello (ESH) PDUs."; + } + leaf out { + type uint32; + description + "Sent ESH PDUs."; + } + description + "Number of ESH PDUs received/sent."; + } + container lsp { + leaf in { + type uint32; + description + "Received Link State PDU (LSP) PDUs."; + } + leaf out { + type uint32; + description + "Sent LSP PDUs."; + } + description + "Number of LSP PDUs received/sent."; + } + container psnp { + leaf in { + type uint32; + description + "Received Partial Sequence Number PDU (PSNP) PDUs."; + } + leaf out { + type uint32; + description + "Sent PSNP PDUs."; + } + description + "Number of PSNP PDUs received/sent."; + } + container csnp { + leaf in { + type uint32; + description + "Received Complete Sequence Number PDU (CSNP) PDUs."; + } + leaf out { + type uint32; + description + "Sent CSNP PDUs."; + } + description + "Number of CSNP PDUs received/sent."; + } + container unknown { + leaf in { + type uint32; + description + "Received unknown PDUs."; + } + description + "Number of unknown PDUs received."; + } + description + "List of packet counters for supported levels."; + } + description + "Packet counters per IS-IS level."; + } + description + "Grouping for packet counters per IS-IS level."; + } + + /* Groupings for various log buffers */ + + grouping spf-log { + container spf-log { + config false; + list event { + key "id"; + leaf id { + type yang:counter32; + description + "Event identifier. A purely internal value. + The most recent events are expected to have a bigger + ID number."; + } + leaf spf-type { + type enumeration { + enum full { + description + "Full SPF computation."; + } + enum route-only { + description + "SPF computation of route reachability + only."; + } + } + description + "Type of SPF computation performed."; + } + leaf level { + type level-number; + description + "IS-IS level number for the SPF computation."; + } + leaf schedule-timestamp { + type yang:timestamp; + description + "Timestamp of when the SPF computation was + scheduled."; + } + leaf start-timestamp { + type yang:timestamp; + description + "Timestamp of when the SPF computation started."; + } + leaf end-timestamp { + type yang:timestamp; + description + "Timestamp of when the SPF computation ended."; + } + list trigger-lsp { + key "lsp"; + leaf lsp { + type lsp-id; + description + "LSP ID of the LSP that triggered the SPF + computation."; + } + leaf sequence { + type uint32; + description + "Sequence number of the LSP that triggered the SPF + computation."; + } + description + "This list includes the LSPs that triggered the + SPF computation."; + } + description + "List of computation events. Implemented as a + wrapping buffer."; + } + description + "This container lists the SPF computation events."; + } + description + "Grouping for SPF log events."; + } + + grouping lsp-log { + container lsp-log { + config false; + list event { + key "id"; + leaf id { + type yang:counter32; + description + "Event identifier. A purely internal value. + The most recent events are expected to have a bigger + ID number."; + } + leaf level { + type level-number; + description + "IS-IS level number for the LSP."; + } + container lsp { + leaf lsp { + type lsp-id; + description + "LSP ID of the LSP."; + } + leaf sequence { + type uint32; + description + "Sequence number of the LSP."; + } + description + "LSP identification container for either the received + LSP or the locally generated LSP."; + } + leaf received-timestamp { + type yang:timestamp; + description + "This is the timestamp when the LSP was received. + In the case of a local LSP update, the timestamp refers + to the LSP origination time."; + } + leaf reason { + type identityref { + base lsp-log-reason; + } + description + "Type of LSP change."; + } + description + "List of LSP events. Implemented as a wrapping buffer."; + } + description + "This container lists the LSP log. + Local LSP modifications are also included in the list."; + } + description + "Grouping for the LSP log."; + } + + /* Groupings for the Link State Database (LSDB) descriptions */ + /* Unknown TLV and sub-TLV descriptions */ + + grouping tlv { + description + "Type-Length-Value (TLV)."; + leaf type { + type uint16; + description + "TLV type."; + } + leaf length { + type uint16; + description + "TLV length (octets)."; + } + leaf value { + type yang:hex-string; + description + "TLV value."; + } + } + + grouping unknown-tlvs { + description + "Unknown TLVs grouping. Used for unknown TLVs or + unknown sub-TLVs."; + container unknown-tlvs { + description + "All unknown TLVs."; + list unknown-tlv { + description + "Unknown TLV."; + uses tlv; + } + } + } + + /* TLVs and sub-TLVs for prefixes */ + + grouping prefix-reachability-attributes { + description + "Grouping for extended reachability attributes of an + IPv4 or IPv6 prefix."; + leaf external-prefix-flag { + type boolean; + description + "External prefix flag."; + } + leaf readvertisement-flag { + type boolean; + description + "Re-advertisement flag."; + } + leaf node-flag { + type boolean; + description + "Node flag."; + } + } + + grouping prefix-ipv4-source-router-id { + description + "Grouping for the IPv4 source router ID of a prefix + advertisement."; + leaf ipv4-source-router-id { + type inet:ipv4-address; + description + "IPv4 source router ID address."; + } + } + + grouping prefix-ipv6-source-router-id { + description + "Grouping for the IPv6 source router ID of a prefix + advertisement."; + leaf ipv6-source-router-id { + type inet:ipv6-address; + description + "IPv6 source router ID address."; + } + } + + grouping prefix-attributes-extension { + description + "Prefix extended attributes as defined in RFC 7794."; + reference + "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability"; + uses prefix-reachability-attributes; + uses prefix-ipv4-source-router-id; + uses prefix-ipv6-source-router-id; + } + + grouping prefix-ipv4-std { + description + "Grouping for attributes of an IPv4 standard prefix + as defined in RFC 1195."; + reference + "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and + dual environments"; + leaf ip-prefix { + type inet:ipv4-address; + description + "IPv4 prefix address."; + } + leaf prefix-len { + type uint8; + description + "IPv4 prefix length (in bits)."; + } + leaf i-e { + type boolean; + description + "Internal or external (I/E) metric bit value. + Set to 'false' to indicate an internal metric."; + } + container default-metric { + leaf metric { + type std-metric; + description + "Default IS-IS metric for the IPv4 prefix."; + } + description + "IS-IS default metric container."; + } + container delay-metric { + leaf metric { + type std-metric; + description + "IS-IS delay metric for the IPv4 prefix."; + } + leaf supported { + type boolean; + default "false"; + description + "Indicates whether the IS-IS delay metric is supported."; + } + description + "IS-IS delay metric container."; + } + container expense-metric { + leaf metric { + type std-metric; + description + "IS-IS expense metric for the IPv4 prefix."; + } + leaf supported { + type boolean; + default "false"; + description + "Indicates whether the IS-IS expense metric is supported."; + } + description + "IS-IS expense metric container."; + } + container error-metric { + leaf metric { + type std-metric; + description + "This leaf describes the IS-IS error metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "Indicates whether the IS-IS error metric is supported."; + } + description + "IS-IS error metric container."; + } + } + + grouping prefix-ipv4-extended { + description + "Grouping for attributes of an IPv4 extended prefix + as defined in RFC 5305."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + leaf up-down { + type boolean; + description + "Value of the up/down bit. + Set to 'true' when the prefix has been advertised down + the hierarchy."; + } + leaf ip-prefix { + type inet:ipv4-address; + description + "IPv4 prefix address."; + } + leaf prefix-len { + type uint8; + description + "IPv4 prefix length (in bits)."; + } + leaf metric { + type wide-metric; + description + "IS-IS wide metric value."; + } + leaf-list tag { + type uint32; + description + "List of 32-bit tags associated with the IPv4 prefix."; + } + leaf-list tag64 { + type uint64; + description + "List of 64-bit tags associated with the IPv4 prefix."; + } + uses prefix-attributes-extension; + } + + grouping prefix-ipv6-extended { + description + "Grouping for attributes of an IPv6 prefix + as defined in RFC 5308."; + reference + "RFC 5308: Routing IPv6 with IS-IS"; + leaf up-down { + type boolean; + description + "Value of the up/down bit. + Set to 'true' when the prefix has been advertised down + the hierarchy."; + } + leaf ip-prefix { + type inet:ipv6-address; + description + "IPv6 prefix address."; + } + leaf prefix-len { + type uint8; + description + "IPv6 prefix length (in bits)."; + } + leaf metric { + type wide-metric; + description + "IS-IS wide metric value."; + } + leaf-list tag { + type uint32; + description + "List of 32-bit tags associated with the IPv6 prefix."; + } + leaf-list tag64 { + type uint64; + description + "List of 64-bit tags associated with the IPv6 prefix."; + } + uses prefix-attributes-extension; + } + + /* TLVs and sub-TLVs for neighbors */ + + grouping neighbor-link-attributes { + description + "Grouping for link attributes as defined + in RFC 5029."; + reference + "RFC 5029: Definition of an IS-IS Link Attribute Sub-TLV"; + leaf link-attributes-flags { + type uint16; + description + "Flags for the link attributes."; + } + } + + grouping neighbor-gmpls-extensions { + description + "Grouping for GMPLS attributes of a neighbor as defined + in RFC 5307."; + reference + "RFC 5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + leaf link-local-id { + type uint32; + description + "Local identifier of the link."; + } + leaf remote-local-id { + type uint32; + description + "Remote identifier of the link."; + } + leaf protection-capability { + type uint8; + description + "Describes the protection capabilities + of the link. This is the value of the + first octet of the sub-TLV type 20 value."; + } + container interface-switching-capability { + description + "Interface switching capabilities of the link."; + leaf switching-capability { + type uint8; + description + "Switching capability of the link."; + } + leaf encoding { + type uint8; + description + "Type of encoding of the LSP being used."; + } + container max-lsp-bandwidths { + description + "Per-priority maximum LSP bandwidths."; + list max-lsp-bandwidth { + leaf priority { + type uint8 { + range "0 .. 7"; + } + description + "Priority from 0 to 7."; + } + leaf bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Maximum LSP bandwidth."; + } + description + "List of maximum LSP bandwidths for different + priorities."; + } + } + container tdm-specific { + when '../switching-capability = 100'; + description + "Switching-capability-specific information applicable + when the switching type is Time-Division Multiplexing + (TDM)."; + leaf minimum-lsp-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Minimum LSP bandwidth."; + } + leaf indication { + type uint8; + description + "Indicates whether the interface supports Standard + or Arbitrary SONET/SDH (Synchronous Optical Network / + Synchronous Digital Hierarchy)."; + } + } + container psc-specific { + when "../switching-capability >= 1 and + ../switching-capability <= 4"; + description + "Switching-capability-specific information applicable + when the switching type is PSC1, PSC2, PSC3, or PSC4 + ('PSC' stands for 'Packet Switching Capability')."; + leaf minimum-lsp-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Minimum LSP bandwidth."; + } + leaf mtu { + type uint16; + units "bytes"; + description + "Interface MTU."; + } + } + } + } + + grouping neighbor-extended-te-extensions { + description + "Grouping for TE attributes of a neighbor as defined + in RFC 8570."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + container unidirectional-link-delay { + description + "Container for the average delay + from the local neighbor to the remote neighbor."; + container flags { + leaf-list unidirectional-link-delay-subtlv-flags { + type identityref { + base unidirectional-link-delay-subtlv-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Unidirectional Link Delay sub-TLV flags."; + } + leaf value { + type uint32; + units "usec"; + description + "Delay value expressed in microseconds."; + } + } + container min-max-unidirectional-link-delay { + description + "Container for the minimum and maximum delay + from the local neighbor to the remote neighbor."; + container flags { + leaf-list min-max-unidirectional-link-delay-subtlv-flags { + type identityref { + base min-max-unidirectional-link-delay-subtlv-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Min/Max Unidirectional Link Delay sub-TLV flags."; + } + leaf min-value { + type uint32; + units "usec"; + description + "Minimum delay value expressed in microseconds."; + } + leaf max-value { + type uint32; + units "usec"; + description + "Maximum delay value expressed in microseconds."; + } + } + container unidirectional-link-delay-variation { + description + "Container for the average delay variation + from the local neighbor to the remote neighbor."; + leaf value { + type uint32; + units "usec"; + description + "Delay variation value expressed in microseconds."; + } + } + container unidirectional-link-loss { + description + "Container for packet loss from the local neighbor to the + remote neighbor."; + container flags { + leaf-list unidirectional-link-loss-subtlv-flags { + type identityref { + base unidirectional-link-loss-subtlv-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Unidirectional Link Loss sub-TLV flags."; + } + leaf value { + type uint32; + units "percent"; + description + "Link packet loss expressed as a percentage of + the total traffic sent over a configurable interval."; + } + } + container unidirectional-link-residual-bandwidth { + description + "Container for the residual bandwidth + from the local neighbor to the remote neighbor."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units "Bps"; + description + "Residual bandwidth."; + } + } + container unidirectional-link-available-bandwidth { + description + "Container for the available bandwidth + from the local neighbor to the remote neighbor."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units "Bps"; + description + "Available bandwidth."; + } + } + container unidirectional-link-utilized-bandwidth { + description + "Container for the utilized bandwidth + from the local neighbor to the remote neighbor."; + leaf value { + type rt-types:bandwidth-ieee-float32; + units "Bps"; + description + "Utilized bandwidth."; + } + } + } + + grouping neighbor-te-extensions { + description + "Grouping for TE attributes of a neighbor as defined + in RFC 5305."; + reference + "RFC 5305: IS-IS Extensions for Traffic Engineering"; + leaf admin-group { + type uint32; + description + "Administrative Group / Resource Class/Color."; + } + container local-if-ipv4-addrs { + description + "All local interface IPv4 addresses."; + leaf-list local-if-ipv4-addr { + type inet:ipv4-address; + description + "List of local interface IPv4 addresses."; + } + } + container remote-if-ipv4-addrs { + description + "All remote interface IPv4 addresses."; + leaf-list remote-if-ipv4-addr { + type inet:ipv4-address; + description + "List of remote interface IPv4 addresses."; + } + } + leaf te-metric { + type uint32; + description + "TE metric."; + } + leaf max-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Maximum bandwidth."; + } + leaf max-reservable-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Maximum reservable bandwidth."; + } + container unreserved-bandwidths { + description + "All unreserved bandwidths."; + list unreserved-bandwidth { + leaf priority { + type uint8 { + range "0 .. 7"; + } + description + "Priority from 0 to 7."; + } + leaf unreserved-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Unreserved bandwidth."; + } + description + "List of unreserved bandwidths for different + priorities."; + } + } + } + + grouping neighbor-extended { + description + "Grouping for attributes of an IS-IS extended neighbor."; + leaf neighbor-id { + type extended-system-id; + description + "System ID of the extended neighbor."; + } + container instances { + description + "List of all adjacencies between the local + system and the neighbor system ID."; + list instance { + key "id"; + leaf id { + type uint32; + description + "Unique identifier of an instance of a + particular neighbor."; + } + leaf metric { + type wide-metric; + description + "IS-IS wide metric for the extended neighbor."; + } + uses neighbor-gmpls-extensions; + uses neighbor-te-extensions; + uses neighbor-extended-te-extensions; + uses neighbor-link-attributes; + uses unknown-tlvs; + description + "Instance of a particular adjacency."; + } + } + } + + grouping neighbor { + description + "IS-IS standard neighbor grouping."; + leaf neighbor-id { + type extended-system-id; + description + "IS-IS neighbor system ID."; + } + container instances { + description + "List of all adjacencies between the local + system and the neighbor system ID."; + list instance { + key "id"; + leaf id { + type uint32; + description + "Unique identifier of an instance of a + particular neighbor."; + } + leaf i-e { + type boolean; + description + "Internal or external (I/E) metric bit value. + Set to 'false' to indicate an internal metric."; + } + container default-metric { + leaf metric { + type std-metric; + description + "IS-IS default metric value."; + } + description + "IS-IS default metric container."; + } + container delay-metric { + leaf metric { + type std-metric; + description + "IS-IS delay metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "IS-IS delay metric supported."; + } + description + "IS-IS delay metric container."; + } + container expense-metric { + leaf metric { + type std-metric; + description + "IS-IS expense metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "IS-IS expense metric supported."; + } + description + "IS-IS expense metric container."; + } + container error-metric { + leaf metric { + type std-metric; + description + "IS-IS error metric value."; + } + leaf supported { + type boolean; + default "false"; + description + "IS-IS error metric supported."; + } + description + "IS-IS error metric container."; + } + description + "Instance of a particular adjacency as defined in + ISO 10589."; + reference + "ISO 10589: Intermediate System to Intermediate System + intra-domain routeing information exchange protocol + for use in conjunction with the protocol for providing + the connectionless-mode network service (ISO 8473)"; + } + } + } + + /* Top-level TLVs */ + + grouping tlv132-ipv4-addresses { + leaf-list ipv4-addresses { + type inet:ipv4-address; + description + "List of IPv4 addresses of the IS-IS node. The IS-IS + reference is TLV 132."; + } + description + "Grouping for TLV 132."; + } + + grouping tlv232-ipv6-addresses { + leaf-list ipv6-addresses { + type inet:ipv6-address; + description + "List of IPv6 addresses of the IS-IS node. The IS-IS + reference is TLV 232."; + } + description + "Grouping for TLV 232."; + } + + grouping tlv134-ipv4-te-rid { + leaf ipv4-te-routerid { + type inet:ipv4-address; + description + "IPv4 Traffic Engineering router ID of the IS-IS node. + The IS-IS reference is TLV 134."; + } + description + "Grouping for TLV 134."; + } + + grouping tlv140-ipv6-te-rid { + leaf ipv6-te-routerid { + type inet:ipv6-address; + description + "IPv6 Traffic Engineering router ID of the IS-IS node. + The IS-IS reference is TLV 140."; + } + description + "Grouping for TLV 140."; + } + + grouping tlv129-protocols { + leaf-list protocol-supported { + type uint8; + description + "List of supported protocols of the IS-IS node. + The IS-IS reference is TLV 129."; + } + description + "Grouping for TLV 129."; + } + + grouping tlv137-hostname { + leaf dynamic-hostname { + type string; + description + "Hostname of the IS-IS node. The IS-IS reference + is TLV 137."; + } + description + "Grouping for TLV 137."; + } + + grouping tlv10-authentication { + container authentication { + leaf authentication-type { + type identityref { + base key-chain:crypto-algorithm; + } + description + "Authentication type to be used with an IS-IS node."; + } + leaf authentication-key { + type string; + description + "Authentication key to be used. For security reasons, + the authentication key MUST NOT be presented in + a cleartext format in response to any request + (e.g., via get or get-config)."; + } + description + "IS-IS node authentication information container. The + IS-IS reference is TLV 10."; + } + description + "Grouping for TLV 10."; + } + + grouping tlv229-mt { + container mt-entries { + list topology { + description + "List of topologies supported."; + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "Multi-Topology (MT) identifier of the topology."; + } + container attributes { + leaf-list flags { + type identityref { + base tlv229-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "TLV 229 flags."; + } + } + description + "IS-IS node topology information container. The + IS-IS reference is TLV 229."; + } + description + "Grouping for TLV 229."; + } + + grouping tlv242-router-capabilities { + container router-capabilities { + list router-capability { + container flags { + leaf-list router-capability-flags { + type identityref { + base router-capability-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "Router Capability flags."; + } + container node-tags { + if-feature "node-tag"; + list node-tag { + leaf tag { + type uint32; + description + "Node tag value."; + } + description + "List of tags."; + } + description + "Container for node administrative tags."; + } + uses unknown-tlvs; + description + "IS-IS node capabilities. This list element may + be extended with detailed information. The IS-IS + reference is TLV 242."; + } + description + "List of Router Capability TLVs."; + } + description + "Grouping for TLV 242."; + } + + grouping tlv138-srlg { + description + "Grouping for TLV 138."; + container links-srlgs { + list links { + leaf neighbor-id { + type extended-system-id; + description + "System ID of the extended neighbor."; + } + leaf flags { + type uint8; + description + "Flags associated with the link."; + } + leaf link-local-id { + type union { + type inet:ip-address; + type uint32; + } + description + "Local identifier of the link. + It could be an IPv4 address or a local identifier."; + } + leaf link-remote-id { + type union { + type inet:ip-address; + type uint32; + } + description + "Remote identifier of the link. + It could be an IPv4 address or a remotely learned + identifier."; + } + container srlgs { + description + "List of SRLGs."; + leaf-list srlg { + type uint32; + description + "SRLG value of the link."; + } + } + description + "SRLG attribute of a link."; + } + description + "List of links with SRLGs."; + } + } + + /* Grouping for LSDB descriptions */ + + grouping lsp-entry { + description + "IS-IS LSP database entry grouping."; + leaf decoded-completed { + type boolean; + description + "The IS-IS LSP body has been fully decoded."; + } + leaf raw-data { + type yang:hex-string; + description + "The hexadecimal representation of the complete LSP + as received or originated, in network byte order."; + } + leaf lsp-id { + type lsp-id; + description + "LSP ID of the LSP."; + } + leaf checksum { + type uint16; + description + "LSP checksum."; + } + leaf remaining-lifetime { + type uint16; + units "seconds"; + description + "Remaining lifetime (in seconds) until LSP expiration."; + } + leaf sequence { + type uint32; + description + "This leaf describes the sequence number of the LSP."; + } + container attributes { + leaf-list lsp-flags { + type identityref { + base lsp-flag; + } + description + "This list contains identities for the bits that + are set."; + } + description + "LSP attributes."; + } + uses tlv132-ipv4-addresses; + uses tlv232-ipv6-addresses; + uses tlv134-ipv4-te-rid; + uses tlv140-ipv6-te-rid; + uses tlv129-protocols; + uses tlv137-hostname; + uses tlv10-authentication; + uses tlv229-mt; + uses tlv242-router-capabilities; + uses tlv138-srlg; + uses unknown-tlvs; + container is-neighbor { + list neighbor { + key "neighbor-id"; + uses neighbor; + description + "List of neighbors."; + } + description + "Standard IS neighbors container. The IS-IS reference is + TLV 2."; + } + container extended-is-neighbor { + list neighbor { + key "neighbor-id"; + uses neighbor-extended; + description + "List of extended IS neighbors."; + } + description + "Standard IS extended neighbors container. The IS-IS + reference is TLV 22."; + } + container ipv4-internal-reachability { + list prefixes { + uses prefix-ipv4-std; + description + "List of prefixes."; + } + description + "IPv4 internal reachability information container. + The IS-IS reference is TLV 128."; + } + container ipv4-external-reachability { + list prefixes { + uses prefix-ipv4-std; + description + "List of prefixes."; + } + description + "IPv4 external reachability information container. The + IS-IS reference is TLV 130."; + } + container extended-ipv4-reachability { + list prefixes { + uses prefix-ipv4-extended; + uses unknown-tlvs; + description + "List of prefixes."; + } + description + "IPv4 extended reachability information container. The + IS-IS reference is TLV 135."; + } + container mt-is-neighbor { + list neighbor { + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "Multi-Topology (MT) identifier."; + } + uses neighbor-extended; + description + "List of neighbors."; + } + description + "IS-IS MT neighbor container. The IS-IS reference is + TLV 223."; + } + container mt-extended-ipv4-reachability { + list prefixes { + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "MT identifier."; + } + uses prefix-ipv4-extended; + uses unknown-tlvs; + description + "List of extended prefixes."; + } + description + "IPv4 MT extended reachability information container. + The IS-IS reference is TLV 235."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + container mt-ipv6-reachability { + list prefixes { + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "MT identifier."; + } + uses prefix-ipv6-extended; + uses unknown-tlvs; + description + "List of IPv6 extended prefixes."; + } + description + "IPv6 MT extended reachability information container. + The IS-IS reference is TLV 237."; + reference + "RFC 5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs)"; + } + container ipv6-reachability { + list prefixes { + uses prefix-ipv6-extended; + uses unknown-tlvs; + description + "List of IPv6 prefixes."; + } + description + "IPv6 reachability information container. The IS-IS + reference is TLV 236."; + } + } + + grouping lsdb { + description + "Link State Database (LSDB) grouping."; + container database { + config false; + list levels { + key "level"; + leaf level { + type level-number; + description + "LSDB level number (1 or 2)."; + } + list lsp { + key "lsp-id"; + uses lsp-entry; + description + "List of LSPs in the LSDB."; + } + description + "List of LSPs for the LSDB-level container."; + } + description + "IS-IS LSDB container."; + } + } + + /* Augmentations */ + + augment "/rt:routing/" + + "rt:ribs/rt:rib/rt:routes/rt:route" { + when "derived-from-or-self(rt:source-protocol, 'isis:isis')" { + description + "IS-IS-specific route attributes."; + } + uses route-content; + description + "This augments the route object in the Routing Information + Base (RIB) with IS-IS-specific attributes."; + } + + augment "/if:interfaces/if:interface" { + leaf clns-mtu { + if-feature "osi-interface"; + type uint16; + description + "Connectionless-mode Network Service (CLNS) MTU of the + interface."; + } + description + "ISO-specific interface parameters."; + } + + augment "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol" { + when "derived-from-or-self(rt:type, 'isis:isis')" { + description + "This augmentation is only valid when the routing protocol + instance type is 'isis'."; + } + description + "This augments a routing protocol instance with IS-IS-specific + parameters."; + container isis { + must 'count(area-address) > 0' { + error-message "At least one area address must be " + + "configured."; + description + "Enforces the configuration of at least one area."; + } + uses instance-config; + uses instance-state; + container topologies { + if-feature "multi-topology"; + list topology { + key "name"; + leaf enabled { + type boolean; + description + "Enables the topology configuration."; + } + leaf name { + type leafref { + path "../../../../../../rt:ribs/rt:rib/rt:name"; + } + description + "RIB corresponding to the topology."; + } + uses multi-topology-config; + description + "List of topologies."; + } + description + "MT container."; + } + container interfaces { + list interface { + key "name"; + leaf name { + type if:interface-ref; + description + "Reference to the interface within + the routing instance."; + } + uses interface-config; + uses interface-state; + container topologies { + if-feature "multi-topology"; + list topology { + key "name"; + leaf name { + type leafref { + path "../../../../../../../../" + + "rt:ribs/rt:rib/rt:name"; + } + description + "RIB corresponding to the topology."; + } + uses multi-topology-interface-config; + description + "List of interface topologies."; + } + description + "MT container."; + } + description + "List of IS-IS interfaces."; + } + description + "Configuration container specific to IS-IS interfaces."; + } + description + "IS-IS configuration/state top-level container."; + } + } + + /* RPC methods */ + + rpc clear-adjacency { + description + "This RPC request clears a particular set of IS-IS + adjacencies. If the operation fails for an internal + reason, then the 'error-tag' and 'error-app-tag' should be + set indicating the reason for the failure."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF)"; + input { + leaf routing-protocol-instance-name { + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } + mandatory true; + description + "Name of the IS-IS protocol instance whose IS-IS + adjacency is being cleared. + + If the corresponding IS-IS instance doesn't exist, + then the operation will fail with an 'error-tag' of + 'data-missing' and an 'error-app-tag' of + 'routing-protocol-instance-not-found'."; + } + leaf level { + type level; + description + "IS-IS level of the adjacency to be cleared. If the + IS-IS level is 'level-all', level-1 and level-2 + adjacencies would both be cleared. + + If the value provided is different from the value + authorized in the enum type, then the operation + SHALL fail with an 'error-tag' of 'data-missing' and + an 'error-app-tag' of 'bad-isis-level'."; + } + leaf interface { + type if:interface-ref; + description + "IS-IS interface name. + + If the corresponding IS-IS interface doesn't exist, + then the operation SHALL fail with an 'error-tag' of + 'data-missing' and an 'error-app-tag' of + 'isis-interface-not-found'."; + } + } + } + + rpc clear-database { + description + "This RPC request clears a particular IS-IS database. + Additionally, all neighbor adjacencies will be forced to + the DOWN state and self-originated LSPs will be + reoriginated. If the operation fails for an IS-IS + internal reason, then the 'error-tag' and 'error-app-tag' + should be set indicating the reason for the failure."; + input { + leaf routing-protocol-instance-name { + type leafref { + path "/rt:routing/rt:control-plane-protocols/" + + "rt:control-plane-protocol/rt:name"; + } + mandatory true; + description + "Name of the IS-IS protocol instance whose IS-IS + database or databases are being cleared. + + If the corresponding IS-IS instance doesn't exist, + then the operation will fail with an 'error-tag' of + 'data-missing' and an 'error-app-tag' of + 'routing-protocol-instance-not-found'."; + } + leaf level { + type level; + description + "IS-IS level of the adjacency to be cleared. If the + IS-IS level is 'level-all', the databases for both + level 1 and level 2 would be cleared. + + If the value provided is different from the value + authorized in the enum type, then the operation + SHALL fail with an 'error-tag' of 'data-missing' and + an 'error-app-tag' of 'bad-isis-level'."; + } + } + } + + /* Notifications */ + + notification database-overload { + uses notification-instance-hdr; + leaf overload { + type enumeration { + enum off { + description + "Indicates that the IS-IS instance has left the + overload state."; + } + enum on { + description + "Indicates that the IS-IS instance has entered the + overload state."; + } + } + description + "New overload state of the IS-IS instance."; + } + description + "This notification is sent when an IS-IS instance + overload state changes."; + } + + notification lsp-too-large { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf pdu-size { + type uint32; + description + "Size of the LSP PDU."; + } + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when an attempt to propagate + an LSP that is larger than the dataLinkBlockSize (ISO 10589) + for the circuit occurs. The generation of the notification + must be throttled with at least 5 seconds between successive + notifications."; + reference + "ISO 10589: Intermediate System to Intermediate System + intra-domain routeing information exchange protocol + for use in conjunction with the protocol for providing + the connectionless-mode network service (ISO 8473)"; + } + + notification if-state-change { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf state { + type if-state-type; + description + "Interface state."; + } + description + "This notification is sent when an interface + state change is detected."; + } + + notification corrupted-lsp-detected { + uses notification-instance-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when an LSP that was stored in + memory has become corrupted."; + } + + notification attempt-to-exceed-max-sequence { + uses notification-instance-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when the system + wraps the 32-bit sequence counter of an LSP."; + } + + notification id-len-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf pdu-field-len { + type uint8; + description + "Value for the system ID length in the received PDU."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when a PDU with a different value + for the system ID length is received. The generation of the + notification must be throttled with at least 5 seconds + between successive notifications."; + } + + notification max-area-addresses-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf max-area-addresses { + type uint8; + description + "Received number of supported areas."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when a PDU with a different value + for the Maximum Area Addresses has been received. The + generation of the notification must be throttled with + at least 5 seconds between successive notifications."; + } + + notification own-lsp-purge { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when the system receives + a PDU with its own system ID and zero age."; + } + + notification sequence-number-skipped { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + description + "This notification is sent when the system receives a + PDU with its own system ID and different contents. The + system has to originate the LSP with a higher sequence + number."; + } + + notification authentication-type-failure { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives a + PDU with the wrong authentication type field. + The generation of the notification must be throttled + with at least 5 seconds between successive notifications."; + } + + notification authentication-failure { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives + a PDU on which authentication fails. The generation of the + notification must be throttled with at least 5 seconds + between successive notifications."; + } + + notification version-skew { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf protocol-version { + type uint8; + description + "Protocol version received in the PDU."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives a + PDU with a different protocol version number. + The generation of the notification must be throttled + with at least 5 seconds between successive notifications."; + } + + notification area-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + description + "This notification is sent when the system receives a + Hello PDU from an IS that does not share any area + address. The generation of the notification must be + throttled with at least 5 seconds between successive + notifications."; + } + + notification rejected-adjacency { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + leaf reason { + type string { + length "0..255"; + } + description + "The system may provide a reason to reject the + adjacency. If the reason is not available, + the reason string will not be returned. + The expected format is a single line of text."; + } + description + "This notification is sent when the system receives a + Hello PDU from an IS but does not establish an adjacency + for some reason. The generation of the notification + must be throttled with at least 5 seconds between + successive notifications."; + } + + notification protocols-supported-mismatch { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + leaf-list protocols { + type uint8; + description + "List of protocols supported by the remote system."; + } + description + "This notification is sent when the system receives a + non-pseudonode LSP that has no matching protocols + supported. The generation of the notification must be + throttled with at least 5 seconds between successive + notifications."; + } + + notification lsp-error-detected { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + leaf raw-pdu { + type binary; + description + "Received raw PDU."; + } + leaf error-offset { + type uint32; + description + "If the problem is a malformed TLV, the error offset + points to the start of the TLV. If the problem is with + the LSP header, the error offset points to the errant + byte."; + } + leaf tlv-type { + type uint8; + description + "If the problem is a malformed TLV, the TLV type is set + to the type value of the suspicious TLV. Otherwise, + this leaf is not present."; + } + description + "This notification is sent when the system receives an + LSP with a parse error. The generation of the notification + must be throttled with at least 5 seconds between + successive notifications."; + } + + notification adjacency-state-change { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf neighbor { + type string { + length "1..255"; + } + description + "Name of the neighbor. It corresponds to the hostname + associated with the system ID of the neighbor in the + mapping database (RFC 5301). If the name of the neighbor + is not available, it is not returned."; + reference + "RFC 5301: Dynamic Hostname Exchange Mechanism for IS-IS"; + } + leaf neighbor-system-id { + type system-id; + description + "Neighbor system ID."; + } + leaf state { + type adj-state-type; + description + "New state of the IS-IS adjacency."; + } + leaf reason { + type string { + length "1..255"; + } + description + "If the adjacency is going to the 'down' state, this leaf + provides a reason for the adjacency going down. The reason + is provided as text. If the adjacency is going to the 'up' + state, no reason is provided. The expected format is a + single line of text."; + } + description + "This notification is sent when an IS-IS adjacency + moves to the 'up' state or the 'down' state."; + } + + notification lsp-received { + uses notification-instance-hdr; + uses notification-interface-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + leaf sequence { + type uint32; + description + "Sequence number of the received LSP."; + } + leaf received-timestamp { + type yang:timestamp; + description + "Timestamp when the LSP was received."; + } + leaf neighbor-system-id { + type system-id; + description + "Neighbor system ID of the LSP sender."; + } + description + "This notification is sent when an LSP is received. + The generation of the notification must be throttled with + at least 5 seconds between successive notifications."; + } + + notification lsp-generation { + uses notification-instance-hdr; + leaf lsp-id { + type lsp-id; + description + "LSP ID."; + } + leaf sequence { + type uint32; + description + "Sequence number of the received LSP."; + } + leaf send-timestamp { + type yang:timestamp; + description + "Timestamp when the LSP was regenerated."; + } + description + "This notification is sent when an LSP is regenerated. + The generation of the notification must be throttled with + at least 5 seconds between successive notifications."; + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang b/src/nbi/service/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang new file mode 100644 index 000000000..445d1994a --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang @@ -0,0 +1,382 @@ +module ietf-key-chain { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain"; + prefix key-chain; + + import ietf-yang-types { + prefix yang; + } + import ietf-netconf-acm { + prefix nacm; + } + + organization + "IETF RTGWG - Routing Area Working Group"; + contact + "WG Web: + WG List: + + Editor: Acee Lindem + + Yingzhen Qu + + Derek Yeung + + Ing-Wher Chen + + Jeffrey Zhang + "; + + description + "This YANG module defines the generic configuration + data for key chains. It is intended that the module + will be extended by vendors to define vendor-specific + key chain configuration parameters. + + Copyright (c) 2017 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8177; + see the RFC itself for full legal notices."; + + reference "RFC 8177"; + + revision 2017-06-15 { + description + "Initial RFC Revision"; + reference "RFC 8177: YANG Data Model for Key Chains"; + } + + feature hex-key-string { + description + "Support hexadecimal key string."; + } + + feature accept-tolerance { + description + "Support the tolerance or acceptance limit."; + } + + feature independent-send-accept-lifetime { + description + "Support for independent send and accept key lifetimes."; + } + + feature crypto-hmac-sha-1-12 { + description + "Support for TCP HMAC-SHA-1 12-byte digest hack."; + } + + feature cleartext { + description + "Support for cleartext algorithm. Usage is + NOT RECOMMENDED."; + } + + feature aes-cmac-prf-128 { + description + "Support for AES Cipher-based Message Authentication + Code Pseudorandom Function."; + } + + feature aes-key-wrap { + description + "Support for Advanced Encryption Standard (AES) Key Wrap."; + } + + feature replay-protection-only { + description + "Provide replay protection without any authentication + as required by protocols such as Bidirectional + Forwarding Detection (BFD)."; + } + identity crypto-algorithm { + description + "Base identity of cryptographic algorithm options."; + } + + identity hmac-sha-1-12 { + base crypto-algorithm; + if-feature "crypto-hmac-sha-1-12"; + description + "The HMAC-SHA1-12 algorithm."; + } + + identity aes-cmac-prf-128 { + base crypto-algorithm; + if-feature "aes-cmac-prf-128"; + description + "The AES-CMAC-PRF-128 algorithm - required by + RFC 5926 for TCP-AO key derivation functions."; + } + + identity md5 { + base crypto-algorithm; + description + "The MD5 algorithm."; + } + + identity sha-1 { + base crypto-algorithm; + description + "The SHA-1 algorithm."; + } + + identity hmac-sha-1 { + base crypto-algorithm; + description + "HMAC-SHA-1 authentication algorithm."; + } + + identity hmac-sha-256 { + base crypto-algorithm; + description + "HMAC-SHA-256 authentication algorithm."; + } + + identity hmac-sha-384 { + base crypto-algorithm; + description + "HMAC-SHA-384 authentication algorithm."; + } + + identity hmac-sha-512 { + base crypto-algorithm; + description + "HMAC-SHA-512 authentication algorithm."; + } + + identity cleartext { + base crypto-algorithm; + if-feature "cleartext"; + description + "cleartext."; + } + + identity replay-protection-only { + base crypto-algorithm; + if-feature "replay-protection-only"; + description + "Provide replay protection without any authentication as + required by protocols such as Bidirectional Forwarding + Detection (BFD)."; + } + + typedef key-chain-ref { + type leafref { + path + "/key-chain:key-chains/key-chain:key-chain/key-chain:name"; + } + description + "This type is used by data models that need to reference + configured key chains."; + } + + grouping lifetime { + description + "Key lifetime specification."; + choice lifetime { + default "always"; + description + "Options for specifying key accept or send lifetimes"; + case always { + leaf always { + type empty; + description + "Indicates key lifetime is always valid."; + } + } + case start-end-time { + leaf start-date-time { + type yang:date-and-time; + description + "Start time."; + } + choice end-time { + default "infinite"; + description + "End-time setting."; + case infinite { + leaf no-end-time { + type empty; + description + "Indicates key lifetime end-time is infinite."; + } + } + case duration { + leaf duration { + type uint32 { + range "1..2147483646"; + } + units "seconds"; + description + "Key lifetime duration, in seconds"; + } + } + case end-date-time { + leaf end-date-time { + type yang:date-and-time; + description + "End time."; + } + } + } + } + } + } + + container key-chains { + description + "All configured key-chains on the device."; + list key-chain { + key "name"; + description + "List of key-chains."; + leaf name { + type string; + description + "Name of the key-chain."; + } + leaf description { + type string; + description + "A description of the key-chain"; + } + container accept-tolerance { + if-feature "accept-tolerance"; + description + "Tolerance for key lifetime acceptance (seconds)."; + leaf duration { + type uint32; + units "seconds"; + default "0"; + description + "Tolerance range, in seconds."; + } + } + leaf last-modified-timestamp { + type yang:date-and-time; + config false; + description + "Timestamp of the most recent update to the key-chain"; + } + list key { + key "key-id"; + description + "Single key in key chain."; + leaf key-id { + type uint64; + description + "Numeric value uniquely identifying the key"; + } + container lifetime { + description + "Specify a key's lifetime."; + choice lifetime { + description + "Options for specification of send and accept + lifetimes."; + case send-and-accept-lifetime { + description + "Send and accept key have the same lifetime."; + container send-accept-lifetime { + description + "Single lifetime specification for both + send and accept lifetimes."; + uses lifetime; + } + } + case independent-send-accept-lifetime { + if-feature "independent-send-accept-lifetime"; + description + "Independent send and accept key lifetimes."; + container send-lifetime { + description + "Separate lifetime specification for send + lifetime."; + uses lifetime; + } + container accept-lifetime { + description + "Separate lifetime specification for accept + lifetime."; + uses lifetime; + } + } + } + } + leaf crypto-algorithm { + type identityref { + base crypto-algorithm; + } + mandatory true; + description + "Cryptographic algorithm associated with key."; + } + container key-string { + description + "The key string."; + nacm:default-deny-all; + choice key-string-style { + description + "Key string styles"; + case keystring { + leaf keystring { + type string; + description + "Key string in ASCII format."; + } + } + case hexadecimal { + if-feature "hex-key-string"; + leaf hexadecimal-string { + type yang:hex-string; + description + "Key in hexadecimal string format. When compared + to ASCII, specification in hexadecimal affords + greater key entropy with the same number of + internal key-string octets. Additionally, it + discourages usage of well-known words or + numbers."; + } + } + } + } + leaf send-lifetime-active { + type boolean; + config false; + description + "Indicates if the send lifetime of the + key-chain key is currently active."; + } + leaf accept-lifetime-active { + type boolean; + config false; + description + "Indicates if the accept lifetime of the + key-chain key is currently active."; + } + } + } + container aes-key-wrap { + if-feature "aes-key-wrap"; + description + "AES Key Wrap encryption for key-chain key-strings. The + encrypted key-strings are encoded as hexadecimal key + strings using the hex-key-string leaf."; + leaf enable { + type boolean; + default "false"; + description + "Enable AES Key Wrap encryption."; + } + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang b/src/nbi/service/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang new file mode 100644 index 000000000..2bf5402a3 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang @@ -0,0 +1,208 @@ +module ietf-l3-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-l3-te-topology"; + prefix "l3tet"; + + import ietf-network { + prefix "nw"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix "nt"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-l3-unicast-topology { + prefix "l3t"; + reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; + } + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + + contact + "WG Web: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez De Dios + "; + + description + "YANG data model for representing and manipulating Layer 3 TE + Topologies. + + Copyright (c) 2024 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2024-06-08 { + description + "Initial revision"; + reference "RFC XXXX: YANG Data Model for Layer 3 TE Topologies"; + } + + grouping l3-te-topology-type { + description + "Identifies the L3 TE topology type."; + container l3-te { + presence + "Indicates L3 TE Topology"; + description + "Its presence identifies the L3 TE topology type."; + } + } + + augment "/nw:networks/nw:network/nw:network-types/" + + "l3t:l3-unicast-topology" { + description + "Defines the L3 TE topology type."; + uses l3-te-topology-type; + } + + augment "/nw:networks/nw:network/l3t:l3-topology-attributes" { + when "../nw:network-types/l3t:l3-unicast-topology/l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment topology configuration"; + uses l3-te-topology-attributes; + } + + augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" { + when "../../nw:network-types/l3t:l3-unicast-topology/" + + "l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment node configuration"; + uses l3-te-node-attributes; + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "l3t:l3-termination-point-attributes" { + when "../../../nw:network-types/l3t:l3-unicast-topology/" + + "l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment termination point configuration"; + uses l3-te-tp-attributes; + } + + augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" { + when "../../nw:network-types/l3t:l3-unicast-topology/" + + "l3tet:l3-te" { + description + "Augment only for L3 TE topology"; + } + description + "Augment link configuration"; + uses l3-te-link-attributes; + } + + grouping l3-te-topology-attributes { + description + "L3 TE topology scope attributes"; + container l3-te-topology-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE topology references"; + uses nw:network-ref; + } // l3-te-topology-attributes + } // l3-te-topology-attributes + + grouping l3-te-node-attributes { + description + "L3 TE node scope attributes"; + container l3-te-node-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE node references"; + uses nw:node-ref; + } // l3-te + } // l3-te-node-attributes + + grouping l3-te-tp-attributes { + description + "L3 TE termination point scope attributes"; + container l3-te-tp-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE termination point references"; + uses nt:tp-ref; + } // l3-te + } // l3-te-tp-attributes + + grouping l3-te-link-attributes { + description + "L3 TE link scope attributes"; + container l3-te-link-attributes { + must "/nw:networks/nw:network" + + "[nw:network-id = current()/network-ref]/" + + "nw:network-types/tet:te-topology" { + error-message + "The referenced network must be a TE topology."; + description + "The referenced network must be a TE topology."; + } + description + "Containing TE link references"; + uses nt:link-ref; + } + } // l3-te-link-attributes +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang b/src/nbi/service/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang new file mode 100644 index 000000000..39fcebd76 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang @@ -0,0 +1,359 @@ +module ietf-l3-unicast-topology { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; + prefix "l3t"; + import ietf-network { + prefix "nw"; + } + import ietf-network-topology { + prefix "nt"; + } + import ietf-inet-types { + prefix "inet"; + } + import ietf-routing-types { + prefix "rt-types"; + } + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + contact + "WG Web: + WG List: + Editor: Alexander Clemm + + Editor: Jan Medved + + Editor: Robert Varga + + Editor: Xufeng Liu + + Editor: Nitin Bahadur + + Editor: Hariharan Ananthakrishnan + "; + description + "This module defines a model for Layer 3 Unicast + topologies. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of + RFC 8346; see the RFC itself for full legal notices."; + revision "2018-02-26" { + description + "Initial revision."; + reference + "RFC 8346: A YANG Data Model for Layer 3 Topologies"; + } + + identity flag-identity { + description "Base type for flags"; + } + + typedef l3-event-type { + type enumeration { + enum "add" { + description + "A Layer 3 node, link, prefix, or termination point has + been added"; + } + enum "remove" { + description + "A Layer 3 node, link, prefix, or termination point has + been removed"; + } + enum "update" { + description + "A Layer 3 node, link, prefix, or termination point has + been updated"; + } + } + description "Layer 3 event type for notifications"; + } + + typedef prefix-flag-type { + type identityref { + base "flag-identity"; + } + description "Prefix flag attributes"; + } + + typedef node-flag-type { + type identityref { + base "flag-identity"; + } + description "Node flag attributes"; + } + + typedef link-flag-type { + type identityref { + base "flag-identity"; + } + description "Link flag attributes"; + } + + typedef l3-flag-type { + type identityref { + base "flag-identity"; + } + description "L3 flag attributes"; + } + + grouping l3-prefix-attributes { + description + "L3 prefix attributes"; + leaf prefix { + type inet:ip-prefix; + description + "IP prefix value"; + } + leaf metric { + type uint32; + description + "Prefix metric"; + } + leaf-list flag { + type prefix-flag-type; + description + "Prefix flags"; + } + } + grouping l3-unicast-topology-type { + description "Identifies the topology type to be L3 Unicast."; + container l3-unicast-topology { + presence "indicates L3 Unicast topology"; + description + "The presence of the container node indicates L3 Unicast + topology"; + } + } + grouping l3-topology-attributes { + description "Topology scope attributes"; + container l3-topology-attributes { + description "Contains topology attributes"; + leaf name { + type string; + description + "Name of the topology"; + } + leaf-list flag { + type l3-flag-type; + description + "Topology flags"; + } + } + } + grouping l3-node-attributes { + description "L3 node scope attributes"; + container l3-node-attributes { + description + "Contains node attributes"; + leaf name { + type inet:domain-name; + description + "Node name"; + } + leaf-list flag { + type node-flag-type; + description + "Node flags"; + } + leaf-list router-id { + type rt-types:router-id; + description + "Router-id for the node"; + } + list prefix { + key "prefix"; + description + "A list of prefixes along with their attributes"; + uses l3-prefix-attributes; + } + } + } + grouping l3-link-attributes { + description + "L3 link scope attributes"; + container l3-link-attributes { + description + "Contains link attributes"; + leaf name { + type string; + description + "Link Name"; + } + leaf-list flag { + type link-flag-type; + description + "Link flags"; + } + leaf metric1 { + type uint64; + description + "Link Metric 1"; + } + leaf metric2 { + type uint64; + description + "Link Metric 2"; + } + } + } + grouping l3-termination-point-attributes { + description "L3 termination point scope attributes"; + container l3-termination-point-attributes { + description + "Contains termination point attributes"; + choice termination-point-type { + description + "Indicates the termination point type"; + case ip { + leaf-list ip-address { + type inet:ip-address; + description + "IPv4 or IPv6 address."; + } + } + case unnumbered { + leaf unnumbered-id { + type uint32; + description + "Unnumbered interface identifier. + The identifier will correspond to the ifIndex value + of the interface, i.e., the ifIndex value of the + ifEntry that represents the interface in + implementations where the Interfaces Group MIB + (RFC 2863) is supported."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + } + case interface-name { + leaf interface-name { + type string; + description + "Name of the interface. The name can (but does not + have to) correspond to an interface reference of a + containing node's interface, i.e., the path name of a + corresponding interface data node on the containing + node reminiscent of data type interface-ref defined + in RFC 8343. It should be noted that data type + interface-ref of RFC 8343 cannot be used directly, + + as this data type is used to reference an interface + in a datastore of a single node in the network, not + to uniquely reference interfaces across a network."; + reference + "RFC 8343: A YANG Data Model for Interface Management"; + } + } + } + } + } + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces new network type for L3 Unicast topology"; + uses l3-unicast-topology-type; + } + augment "/nw:networks/nw:network" { + when "nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast for the network as a whole"; + uses l3-topology-attributes; + } + augment "/nw:networks/nw:network/nw:node" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "L3 Unicast node-level attributes "; + uses l3-node-attributes; + } + augment "/nw:networks/nw:network/nt:link" { + when "../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description + "Augments topology link attributes"; + uses l3-link-attributes; + } + augment "/nw:networks/nw:network/nw:node/" + +"nt:termination-point" { + when "../../nw:network-types/l3t:l3-unicast-topology" { + description + "Augmentation parameters apply only for networks with + L3 Unicast topology"; + } + description "Augments topology termination point configuration"; + uses l3-termination-point-attributes; + } + notification l3-node-event { + description + "Notification event for L3 node"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + uses l3-node-attributes; + } + notification l3-link-event { + description + "Notification event for L3 link"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:link-ref; + uses l3-unicast-topology-type; + uses l3-link-attributes; + } + notification l3-prefix-event { + description + "Notification event for L3 prefix"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nw:node-ref; + uses l3-unicast-topology-type; + container prefix { + description + "Contains L3 prefix attributes"; + uses l3-prefix-attributes; + } + } + notification termination-point-event { + description + "Notification event for L3 termination point"; + leaf l3-event-type { + type l3-event-type; + description + "Event type"; + } + uses nt:tp-ref; + uses l3-unicast-topology-type; + uses l3-termination-point-attributes; + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang b/src/nbi/service/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang new file mode 100644 index 000000000..188336931 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang @@ -0,0 +1,1414 @@ + module ietf-layer1-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-layer1-types"; + prefix "l1-types"; + + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + "; + + description + "This module defines Layer 1 types. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2022 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + + + + + they appear in all capitals, as shown here."; + + revision "2022-10-14" { + description + "Initial Version"; + reference + "RFC XXXX: A YANG Data Model for Layer 1 Types"; + // RFC Editor: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Identities + */ + + identity tributary-slot-granularity { + description + "Tributary Slot Granularity (TSG)"; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity tsg-1.25G { + base tributary-slot-granularity; + description + "1.25G tributary slot granularity"; + } + + identity tsg-2.5G { + base tributary-slot-granularity; + description + "2.5G tributary slot granularity"; + } + + identity tsg-5G { + base tributary-slot-granularity; + description + "5G tributary slot granularity"; + } + + identity odu-type { + description + "Base identity from which specific Optical Data Unit (ODU) + type is derived."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU0 { + base odu-type; + description + "ODU0 type (1.24Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU1 { + base odu-type; + description + "ODU1 type (2.49Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU2 { + base odu-type; + description + "ODU2 type (10.03Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU2e { + base odu-type; + description + "ODU2e type (10.39Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU3 { + base odu-type; + description + "ODU3 type (40.31Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODU4 { + base odu-type; + description + "ODU4 type (104.79Gb/s)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODUflex { + base odu-type; + description + "ODUflex type (flexible bit rate, not resizable). + + It could be used for any type of ODUflex, including + ODUflex(CBR), ODUflex(GFP), ODUflex(GFP,n,k), ODUflex(IMP,s), + ODUflex(IMP) and ODUflex(FlexE-aware)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ODUflex-resizable { + base odu-type; + description + "ODUflex protocol (flexible bit rate, resizable). + + + + + It could be used only for ODUflex(GFP,n,k)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity protocol { + description + "Base identity from which specific protocol is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity Ethernet { + base protocol; + description + "Ethernet protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity Fibre-Channel { + base protocol; + description + "Fibre-Channel (FC) protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SDH { + base protocol; + description + "SDH protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SONET { + base protocol; + description + "SONET protocol."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + + + + identity client-signal { + description + "Base identity from which specific Constant Bit Rate (CBR) + client signal is derived"; + } + + identity coding-func { + description + "Base identity from which specific coding function + is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-1Gb { + base client-signal; + description + "Client signal type of 1GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-10Gb-LAN { + base client-signal; + description + "Client signal type of ETH-10Gb-LAN (10.3 Gb/s)"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + IEEE 802.3-2018, Clause 49: IEEE Standard for Ethernet"; + } + + identity ETH-10Gb-WAN { + base client-signal; + description + "Client signal type of ETH-10Gb-WAN (9.95 Gb/s)"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + + + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + IEEE 802.3-2018, Clause 50: IEEE Standard for Ethernet"; + } + + identity ETH-40Gb { + base client-signal; + description + "Client signal type of 40GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-100Gb { + base client-signal; + description + "Client signal type of 100GbE"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity STM-1 { + base client-signal; + base coding-func; + description + "Client signal type of STM-1; + STM-1 G.707 (N=1) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-4 { + base client-signal; + + + + + base coding-func; + description + "Client signal type of STM-4; + STM-4 G.707 (N=4) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-16 { + base client-signal; + base coding-func; + description + "Client signal type of STM-16; + STM-16 G.707 (N=16) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-64 { + base client-signal; + base coding-func; + description + "Client signal type of STM-64; + STM-64 G.707 (N=64) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity STM-256 { + base client-signal; + + + + + base coding-func; + description + "Client signal type of STM-256; + STM-256 G.707 (N=256) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-3 { + base client-signal; + base coding-func; + description + "Client signal type of OC3; + OC-3 GR-253-CORE (N=3) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-12 { + base client-signal; + base coding-func; + description + "Client signal type of OC12; + OC-12 GR-253-CORE (N=12) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-48 { + base client-signal; + base coding-func; + description + "Client signal type of OC48; + OC-48 GR-253-CORE (N=48) coding function."; + + + + + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-192 { + base client-signal; + base coding-func; + description + "Client signal type of OC192; + OC-192 GR-253-CORE (N=192) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity OC-768 { + base client-signal; + base coding-func; + description + "Client signal type of OC768; + OC-768 GR-253-CORE (N=768) coding function."; + reference + "ANSI T1.105-1995: Synchronous Optical Network (SONET) + Basic Description including Multiplex Structure, Rates, + and Formats + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-100 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-100; + FC-100 FC-FS-2 (1.0625 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-200; + FC-200 FC-FS-2 (2.125 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-400 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-400; + FC-400 FC-FS-2 (4.250 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-800 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-800; + FC-800 FC-FS-2 (8.500 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-1200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-1200; + FC-1200 FC-10GFC (10.51875 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-1600 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-1600; + FC-1600 FC-FS-3 (14.025 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FC-3200 { + base client-signal; + base coding-func; + description + "Client signal type of Fibre Channel FC-3200; + FC-3200 FC-FS-4 (28.05 Gb/s) coding function."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN) + + + + + MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FICON-4G { + base client-signal; + description + "Client signal type of Fibre Connection 4G"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity FICON-8G { + base client-signal; + description + "Client signal type of Fibre Connection 8G"; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks + + ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + + identity ETH-1000X { + base coding-func; + description + "1000BASE-X PCS clause 36 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-10GW { + base coding-func; + description + "10GBASE-W (WAN PHY) PCS clause 49 and WIS clause 50 + coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-10GR { + base coding-func; + description + "10GBASE-R (LAN PHY) PCS clause 49 coding function."; + + + + + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-40GR { + base coding-func; + description + "40GBASE-R PCS clause 82 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ETH-100GR { + base coding-func; + description + "100GBASE-R PCS clause 82 coding function."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity optical-interface-func { + description + "Base identity from which optical-interface-function + is derived."; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity SX-PMD-1000 { + base optical-interface-func; + description + "SX-PMD-clause-38 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LX-PMD-1000 { + base optical-interface-func; + description + "LX-PMD-clause-38 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LX10-PMD-1000 { + base optical-interface-func; + + + + + description + "LX10-PMD-clause-59 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity BX10-PMD-1000 { + base optical-interface-func; + description + "BX10-PMD-clause-59 Optical Interface function for + 1000BASE-X PCS-36"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LW-PMD-10G { + base optical-interface-func; + description + "LW-PMD-clause-52 Optical Interface function for + 10GBASE-W PCS-49-WIS-50"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity EW-PMD-10G { + base optical-interface-func; + description + "EW-PMD-clause-52 Optical Interface function for + 10GBASE-W PCS-49-WIS-50"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR-PMD-10G { + base optical-interface-func; + description + "LR-PMD-clause-52 Optical Interface function for + 10GBASE-R PCS-49"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER-PMD-10G { + base optical-interface-func; + description + "ER-PMD-clause-52 Optical Interface function for + 10GBASE-R PCS-49"; + + + + + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR4-PMD-40G { + base optical-interface-func; + description + "LR4-PMD-clause-87 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER4-PMD-40G { + base optical-interface-func; + description + "ER4-PMD-clause-87 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity FR-PMD-40G { + base optical-interface-func; + description + "FR-PMD-clause-89 Optical Interface function for + 40GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity LR4-PMD-100G { + base optical-interface-func; + description + "LR4-PMD-clause-88 Optical Interface function for + 100GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + identity ER4-PMD-100G { + base optical-interface-func; + description + "ER4-PMD-clause-88 Optical Interface function for + 100GBASE-R PCS-82"; + reference + "MEF63: Subscriber Layer 1 Service Attributes"; + } + + + + + /* + * Typedefs + */ + + typedef otn-tpn { + type uint16 { + range "1..4095"; + } + description + "Tributary Port Number (TPN) for OTN. "; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks."; + } + + typedef otn-ts { + type uint16 { + range "1..4095"; + } + description + "Tributary Slot (TS) for OTN."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of Evolving + G.709 Optical Transport Networks."; + } + + typedef otn-label-range-type { + type enumeration { + enum trib-slot { + description + "Defines a range of OTN tributary slots (TS)."; + } + enum trib-port { + description + "Defines a range of OTN tributary ports (TPN)."; + } + } + description + "Defines the type of OTN label range: TS or TPN. "; + } + + typedef gfp-k { + type enumeration { + enum 2 { + description + "The ODU2.ts rate (1,249,177.230 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,2). "; + } + + + + + enum 3 { + description + "The ODU3.ts rate (1,254,470.354 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,3). "; + } + enum 4 { + description + "The ODU4.ts rate (1,301,467.133 kbit/s) is used + to compute the rate of an ODUflex(GFP,n,4). "; + } + } + description + "The ODUk.ts used to compute the rate of an ODUflex(GFP,n,k)"; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-8 and L.7: Interfaces for + the Optical Transport Network (OTN)"; + } + + typedef flexe-client-rate { + type union { + type uint16; + type enumeration { + enum "10G" { + description + "Represents a 10G FlexE Client signal (s=2)"; + } + enum "40G" { + description + "Represents a 40G FlexE Client signal (s=8)"; + } + } + } + description + "The FlexE Client signal rate (s x 5,156,250.000 kbit/s) + used to compute the rate of an ODUflex(IMP, s). + Valid values for s are s=2 (10G), s=4 (40G) and + s=5 x n (n x 25G). + In the first two cases an enumeration value + (either 10G or 40G) is used, while in the latter case + the value of n is used"; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the + Optical Transport Network (OTN)"; + } + + typedef odtu-flex-type { + type enumeration { + enum "2" { + + + + + description + "The ODTU2.ts ODTU type."; + } + enum "3" { + description + "The ODTU3.ts ODTU type."; + } + enum "4" { + description + "The ODTU4.ts ODTU type."; + } + enum "Cn" { + description + "The ODTUCn.ts ODTU type."; + } + } + description + "The type of Optical Data Tributary Unit (ODTU), + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by an ODUflex LSP, according to + the (19-1a) and (20-1a) formulas defined in G.709."; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-7, clause 19.6 and + clause 20.5: Interfaces for the Optical Transport + Network (OTN)"; + } + + typedef bandwidth-scientific-notation { + type string { + pattern + '0(\.0?)?([eE](\+)?0?)?|' + + '[1-9](\.[0-9]{0,6})?[eE](\+)?(9[0-6]|[1-8][0-9]|0?[0-9])?'; + } + units "bps"; + description + "Bandwidth values, expressed using the scientific notation + in bits per second. + + The encoding format is the external decimal-significant + character sequences specified in IEEE 754 and ISO/IEC C99 + for 32-bit decimal floating-point numbers: + (-1)**(S) * 10**(Exponent) * (Significant), + where Significant uses 7 digits. + + An implementation for this representation MAY use decimal32 + or binary32. The range of the Exponent is from -95 to +96 + for decimal32, and from -38 to +38 for binary32. + As a bandwidth value, the format is restricted to be + + + + + normalized, non-negative, and non-fraction: + n.dddddde{+}dd, N.DDDDDDE{+}DD, 0e0 or 0E0, + where 'd' and 'D' are decimal digits; 'n' and 'N' are + non-zero decimal digits; 'e' and 'E' indicate a power of ten. + Some examples are 0e0, 1e10, and 9.953e9."; + reference + "IEEE Std 754-2008: IEEE Standard for Floating-Point + Arithmetic. + ISO/IEC C99: Information technology - Programming + Languages - C."; + } + + /* + * Groupings + */ + + grouping otn-link-bandwidth { + description + "Bandwidth attributes for OTN links"; + container otn { + description + "Bandwidth attributes for OTN links"; + list odulist { + key "odu-type"; + description + "OTN bandwidth definition"; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + leaf number { + type uint16; + description "Number of ODUs"; + } + leaf ts-number { + when 'derived-from-or-self(../odu-type,"ODUflex") or + derived-from-or-self(../odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + type uint16 { + range "1..4095"; + } + description + + + + + "The number of Tributary Slots (TS) that + could be used by all the ODUflex LSPs."; + } + } + } + } + + grouping otn-path-bandwidth { + description + "Bandwidth attributes for OTN paths."; + container otn { + description + "Bandwidth attributes for OTN paths."; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + choice oduflex-type { + when 'derived-from-or-self(./odu-type,"ODUflex") or + derived-from-or-self(./odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + description + "Types of ODUflex used to compute the ODUflex + nominal bit rate."; + reference + "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the + Optical Transport Network (OTN)"; + case generic { + leaf nominal-bit-rate { + type union { + type l1-types:bandwidth-scientific-notation; + type rt-types:bandwidth-ieee-float32; + } + mandatory true; + description + "Nominal ODUflex bit rate."; + } + } + case cbr { + leaf client-type { + type identityref { + base client-signal; + + + + + } + mandatory true; + description + "The type of Constant Bit Rate (CBR) client signal + of an ODUflex(CBR)."; + } + } + case gfp-n-k { + leaf gfp-n { + type uint8 { + range "1..80"; + } + mandatory true; + description + "The value of n for an ODUflex(GFP,n,k)."; + reference + "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: + Interfaces for the Optical Transport Network (OTN)"; + } + leaf gfp-k { + type gfp-k; + description + "The value of k for an ODUflex(GFP,n,k). + + If omitted, it is calculated from the value of gfp-n + as described in Table 7-8 of G.709"; + reference + "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: + Interfaces for the Optical Transport Network (OTN)"; + } + } + case flexe-client { + leaf flexe-client { + type flexe-client-rate; + mandatory true; + description + "The rate of the FlexE-client for an ODUflex(IMP,s)."; + } + } + case flexe-aware { + leaf flexe-aware-n { + type uint16; + mandatory true; + description + "The rate of FlexE-aware client signal + for ODUflex(FlexE-aware)"; + } + } + + + + + case packet { + leaf opuflex-payload-rate { + type union { + type l1-types:bandwidth-scientific-notation; + type rt-types:bandwidth-ieee-float32; + } + mandatory true; + description + "Either the GFP-F encapsulated packet client nominal + bit rate for an ODUflex(GFP) or the 64b/66b encoded + packet client nominal bit rate for an ODUflex(IMP)."; + } + } + } + } + } + + grouping otn-max-path-bandwidth { + description + "Maximum bandwidth attributes for OTN paths."; + container otn { + description + "Maximum bandwidth attributes for OTN paths."; + leaf odu-type { + type identityref { + base odu-type; + } + description "ODU type"; + } + leaf max-ts-number { + when 'derived-from-or-self(../odu-type,"ODUflex") or + derived-from-or-self(../odu-type, + "ODUflex-resizable")' { + description + "Applicable when odu-type is ODUflex or + ODUflex-resizable"; + } + type uint16 { + range "1..4095"; + } + description + "The maximum number of Tributary Slots (TS) that could be + used by an ODUflex LSP."; + } + } + } + + grouping otn-label-range-info { + + + + + description + "Label range information for OTN. + + This grouping SHOULD be used together with the + otn-label-start-end and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + container otn-label-range { + description + "Label range information for OTN."; + leaf range-type { + type otn-label-range-type; + description "The type of range (e.g., TPN or TS) + to which the label range applies"; + } + leaf tsg { + type identityref { + base tributary-slot-granularity; + } + description + "Tributary slot granularity (TSG) to which the label range + applies. + + This leaf MUST be present when the range-type is TS. + + This leaf MAY be omitted when mapping an ODUk over an OTUk + Link. In this case the range-type is tpn, with only one + entry (ODUk), and the tpn range has only one value (1)."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf-list odu-type-list { + type identityref { + base odu-type; + } + description + "List of ODU types to which the label range applies. + + An Empty odu-type-list means that the label range + applies to all the supported ODU types."; + } + leaf priority { + type uint8 { + range 0..7; + } + description + + + + + "Priority in Interface Switching Capability + Descriptor (ISCD)."; + reference + "RFC4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + } + } + + grouping otn-label-start-end { + description + "The OTN label-start or label-end used to specify an OTN label + range. + + This grouping is dependent on the range-type defined in the + otn-label-range-info grouping. + + This grouping SHOULD be used together with the + otn-label-range-info and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + container otn { + description + "Label start or label end for OTN."; + choice range-type { + description + "OTN label range type, either TPN range or TS range"; + case trib-port { + leaf tpn { + when "../../../../otn-label-range/range-type = + 'trib-port'" { + description + "Valid only when range-type represented by + trib-port"; + } + type otn-tpn; + description + "Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + case trib-slot { + leaf ts { + when "../../../../otn-label-range/range-type = + 'trib-slot'" { + + + + + description + "Valid only when range-type represented by + trib-slot"; + } + type otn-ts; + description + "Tributary Slot (TS) number."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks"; + } + } + } + } + } + + grouping otn-label-hop { + description "OTN Label"; + reference + "RFC7139, section 6: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks"; + container otn { + description + "Label hop for OTN."; + leaf tpn { + type otn-tpn; + description + "Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + leaf tsg { + type identityref { + base tributary-slot-granularity; + } + description "Tributary Slot Granularity (TSG)."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf ts-list { + type string { + pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" + + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; + } + description + "A list of available Tributary Slots (TS) ranging + + + + + between 1 and 4095. If multiple values or + ranges are given, they all MUST be disjoint + and MUST be in ascending order. + For example 1-20,25,50-1000."; + reference + "RFC 7139: GMPLS Signaling Extensions for Control + of Evolving G.709 Optical Transport Networks"; + } + } + } + + grouping otn-label-step { + description + "Label step for OTN. + + This grouping is dependent on the range-type defined in the + otn-label-range-info grouping. + + This grouping SHOULD be used together with the + otn-label-range-info and otn-label-start-end groupings to + provide OTN technology-specific label information to the + models which use the label-restriction-info grouping defined + in the module ietf-te-types."; + container otn { + description + "Label step for OTN"; + choice range-type { + description + "OTN label range type, either TPN range or TS range"; + case trib-port { + leaf tpn { + when "../../../otn-label-range/range-type = + 'trib-port'" { + description + "Valid only when range-type represented by + trib-port"; + } + type otn-tpn; + description + "Label step which represents possible increments for + Tributary Port Number (TPN)."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + case trib-slot { + leaf ts { + + + + + when "../../../otn-label-range/range-type = + 'trib-slot'" { + description + "Valid only when range-type represented by + trib-slot"; + } + type otn-ts; + description + "Label step which represents possible increments for + Tributary Slot (TS) number."; + reference + "RFC7139: GMPLS Signaling Extensions for Control of + Evolving G.709 Optical Transport Networks."; + } + } + } + } + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang b/src/nbi/service/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang new file mode 100644 index 000000000..bf4855faf --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang @@ -0,0 +1,464 @@ +module ietf-netconf-acm { + + namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm"; + + prefix nacm; + + import ietf-yang-types { + prefix yang; + } + + organization + "IETF NETCONF (Network Configuration) Working Group"; + + contact + "WG Web: + WG List: + + Author: Andy Bierman + + + Author: Martin Bjorklund + "; + + description + "Network Configuration Access Control Model. + + Copyright (c) 2012 - 2018 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD + License set forth in Section 4.c of the IETF Trust's + Legal Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8341; see + the RFC itself for full legal notices."; + + revision "2018-02-14" { + description + "Added support for YANG 1.1 actions and notifications tied to + data nodes. Clarified how NACM extensions can be used by + other data models."; + reference + "RFC 8341: Network Configuration Access Control Model"; + } + + revision "2012-02-22" { + description + "Initial version."; + reference + "RFC 6536: Network Configuration Protocol (NETCONF) + Access Control Model"; + } + + /* + * Extension statements + */ + + extension default-deny-write { + description + "Used to indicate that the data model node + represents a sensitive security system parameter. + + If present, the NETCONF server will only allow the designated + 'recovery session' to have write access to the node. An + explicit access control rule is required for all other users. + + If the NACM module is used, then it must be enabled (i.e., + /nacm/enable-nacm object equals 'true'), or this extension + is ignored. + + The 'default-deny-write' extension MAY appear within a data + definition statement. It is ignored otherwise."; + } + + extension default-deny-all { + description + "Used to indicate that the data model node + controls a very sensitive security system parameter. + + If present, the NETCONF server will only allow the designated + 'recovery session' to have read, write, or execute access to + the node. An explicit access control rule is required for all + other users. + + If the NACM module is used, then it must be enabled (i.e., + /nacm/enable-nacm object equals 'true'), or this extension + is ignored. + + The 'default-deny-all' extension MAY appear within a data + definition statement, 'rpc' statement, or 'notification' + statement. It is ignored otherwise."; + } + + /* + * Derived types + */ + + typedef user-name-type { + type string { + length "1..max"; + } + description + "General-purpose username string."; + } + + typedef matchall-string-type { + type string { + pattern '\*'; + } + description + "The string containing a single asterisk '*' is used + to conceptually represent all possible values + for the particular leaf using this data type."; + } + + typedef access-operations-type { + type bits { + bit create { + description + "Any protocol operation that creates a + new data node."; + } + bit read { + description + "Any protocol operation or notification that + returns the value of a data node."; + } + bit update { + description + "Any protocol operation that alters an existing + data node."; + } + bit delete { + description + "Any protocol operation that removes a data node."; + } + bit exec { + description + "Execution access to the specified protocol operation."; + } + } + description + "Access operation."; + } + + typedef group-name-type { + type string { + length "1..max"; + pattern '[^\*].*'; + } + description + "Name of administrative group to which + users can be assigned."; + } + + typedef action-type { + type enumeration { + enum permit { + description + "Requested action is permitted."; + } + enum deny { + description + "Requested action is denied."; + } + } + description + "Action taken by the server when a particular + rule matches."; + } + + typedef node-instance-identifier { + type yang:xpath1.0; + description + "Path expression used to represent a special + data node, action, or notification instance-identifier + string. + + A node-instance-identifier value is an + unrestricted YANG instance-identifier expression. + All the same rules as an instance-identifier apply, + except that predicates for keys are optional. If a key + predicate is missing, then the node-instance-identifier + represents all possible server instances for that key. + + This XML Path Language (XPath) expression is evaluated in the + following context: + + o The set of namespace declarations are those in scope on + the leaf element where this type is used. + + o The set of variable bindings contains one variable, + 'USER', which contains the name of the user of the + current session. + + o The function library is the core function library, but + note that due to the syntax restrictions of an + instance-identifier, no functions are allowed. + + o The context node is the root node in the data tree. + + The accessible tree includes actions and notifications tied + to data nodes."; + } + + /* + * Data definition statements + */ + + container nacm { + nacm:default-deny-all; + + description + "Parameters for NETCONF access control model."; + + leaf enable-nacm { + type boolean; + default "true"; + description + "Enables or disables all NETCONF access control + enforcement. If 'true', then enforcement + is enabled. If 'false', then enforcement + is disabled."; + } + + leaf read-default { + type action-type; + default "permit"; + description + "Controls whether read access is granted if + no appropriate rule is found for a + particular read request."; + } + + leaf write-default { + type action-type; + default "deny"; + description + "Controls whether create, update, or delete access + is granted if no appropriate rule is found for a + particular write request."; + } + + leaf exec-default { + type action-type; + default "permit"; + description + "Controls whether exec access is granted if no appropriate + rule is found for a particular protocol operation request."; + } + + leaf enable-external-groups { + type boolean; + default "true"; + description + "Controls whether the server uses the groups reported by the + NETCONF transport layer when it assigns the user to a set of + NACM groups. If this leaf has the value 'false', any group + names reported by the transport layer are ignored by the + server."; + } + + leaf denied-operations { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that a + protocol operation request was denied."; + } + + leaf denied-data-writes { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that a + protocol operation request to alter + a configuration datastore was denied."; + } + + leaf denied-notifications { + type yang:zero-based-counter32; + config false; + mandatory true; + description + "Number of times since the server last restarted that + a notification was dropped for a subscription because + access to the event type was denied."; + } + + container groups { + description + "NETCONF access control groups."; + + list group { + key name; + + description + "One NACM group entry. This list will only contain + configured entries, not any entries learned from + any transport protocols."; + + leaf name { + type group-name-type; + description + "Group name associated with this entry."; + } + + leaf-list user-name { + type user-name-type; + description + "Each entry identifies the username of + a member of the group associated with + this entry."; + } + } + } + + list rule-list { + key name; + ordered-by user; + description + "An ordered collection of access control rules."; + + leaf name { + type string { + length "1..max"; + } + description + "Arbitrary name assigned to the rule-list."; + } + leaf-list group { + type union { + type matchall-string-type; + type group-name-type; + } + description + "List of administrative groups that will be + assigned the associated access rights + defined by the 'rule' list. + + The string '*' indicates that all groups apply to the + entry."; + } + + list rule { + key name; + ordered-by user; + description + "One access control rule. + + Rules are processed in user-defined order until a match is + found. A rule matches if 'module-name', 'rule-type', and + 'access-operations' match the request. If a rule + matches, the 'action' leaf determines whether or not + access is granted."; + + leaf name { + type string { + length "1..max"; + } + description + "Arbitrary name assigned to the rule."; + } + + leaf module-name { + type union { + type matchall-string-type; + type string; + } + default "*"; + description + "Name of the module associated with this rule. + + This leaf matches if it has the value '*' or if the + object being accessed is defined in the module with the + specified module name."; + } + choice rule-type { + description + "This choice matches if all leafs present in the rule + match the request. If no leafs are present, the + choice matches all requests."; + case protocol-operation { + leaf rpc-name { + type union { + type matchall-string-type; + type string; + } + description + "This leaf matches if it has the value '*' or if + its value equals the requested protocol operation + name."; + } + } + case notification { + leaf notification-name { + type union { + type matchall-string-type; + type string; + } + description + "This leaf matches if it has the value '*' or if its + value equals the requested notification name."; + } + } + + case data-node { + leaf path { + type node-instance-identifier; + mandatory true; + description + "Data node instance-identifier associated with the + data node, action, or notification controlled by + this rule. + + Configuration data or state data + instance-identifiers start with a top-level + data node. A complete instance-identifier is + required for this type of path value. + + The special value '/' refers to all possible + datastore contents."; + } + } + } + + leaf access-operations { + type union { + type matchall-string-type; + type access-operations-type; + } + default "*"; + description + "Access operations associated with this rule. + + This leaf matches if it has the value '*' or if the + bit corresponding to the requested operation is set."; + } + + leaf action { + type action-type; + mandatory true; + description + "The access control action associated with the + rule. If a rule has been determined to match a + particular request, then this object is used + to determine whether to permit or deny the + request."; + } + + leaf comment { + type string; + description + "A textual description of the access rule."; + } + } + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang b/src/nbi/service/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang new file mode 100644 index 000000000..0538ac01b --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang @@ -0,0 +1,294 @@ + module ietf-network-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology"; + prefix nt; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + description + "This module defines a common base model for a network topology, + augmenting the base network data model with links to connect + nodes, as well as termination points to terminate links + on nodes. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8345; + see the RFC itself for full legal notices."; + + revision 2018-02-26 { + description + "Initial revision."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef link-id { + type inet:uri; + description + "An identifier for a link in a topology. The precise + structure of the link-id will be up to the implementation. + The identifier SHOULD be chosen such that the same link in a + real network topology will always be identified through the + same identifier, even if the data model is instantiated in + separate datastores. An implementation MAY choose to capture + semantics in the identifier -- for example, to indicate the + type of link and/or the type of topology of which the link is + a part."; + } + + typedef tp-id { + type inet:uri; + description + "An identifier for termination points on a node. The precise + structure of the tp-id will be up to the implementation. + The identifier SHOULD be chosen such that the same termination + point in a real network topology will always be identified + through the same identifier, even if the data model is + instantiated in separate datastores. An implementation MAY + choose to capture semantics in the identifier -- for example, + to indicate the type of termination point and/or the type of + node that contains the termination point."; + } + + grouping link-ref { + description + "This grouping can be used to reference a link in a specific + network. Although it is not used in this module, it is + defined here for the convenience of augmenting modules."; + leaf link-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nt:link/nt:link-id"; + require-instance false; + } + description + "A type for an absolute reference to a link instance. + (This type should not be used for relative references. + In such a case, a relative path should be used instead.)"; + } + uses nw:network-ref; + } + + grouping tp-ref { + description + "This grouping can be used to reference a termination point + in a specific node. Although it is not used in this module, + it is defined here for the convenience of augmenting + modules."; + leaf tp-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nw:node[nw:node-id=current()/../"+ + "node-ref]/nt:termination-point/nt:tp-id"; + require-instance false; + } + description + "A type for an absolute reference to a termination point. + (This type should not be used for relative references. + In such a case, a relative path should be used instead.)"; + } + uses nw:node-ref; + } + + augment "/nw:networks/nw:network" { + description + "Add links to the network data model."; + list link { + key "link-id"; + description + "A network link connects a local (source) node and + a remote (destination) node via a set of the respective + node's termination points. It is possible to have several + links between the same source and destination nodes. + Likewise, a link could potentially be re-homed between + termination points. Therefore, in order to ensure that we + would always know to distinguish between links, every link + is identified by a dedicated link identifier. Note that a + link models a point-to-point link, not a multipoint link."; + leaf link-id { + type link-id; + description + "The identifier of a link in the topology. + A link is specific to a topology to which it belongs."; + } + container source { + description + "This container holds the logical source of a particular + link."; + leaf source-node { + type leafref { + path "../../../nw:node/nw:node-id"; + require-instance false; + } + description + "Source node identifier. Must be in the same topology."; + } + leaf source-tp { + type leafref { + path "../../../nw:node[nw:node-id=current()/../"+ + "source-node]/termination-point/tp-id"; + require-instance false; + } + description + "This termination point is located within the source node + and terminates the link."; + } + } + + container destination { + description + "This container holds the logical destination of a + particular link."; + leaf dest-node { + type leafref { + path "../../../nw:node/nw:node-id"; + require-instance false; + } + description + "Destination node identifier. Must be in the same + network."; + } + leaf dest-tp { + type leafref { + path "../../../nw:node[nw:node-id=current()/../"+ + "dest-node]/termination-point/tp-id"; + require-instance false; + } + description + "This termination point is located within the + destination node and terminates the link."; + } + } + list supporting-link { + key "network-ref link-ref"; + description + "Identifies the link or links on which this link depends."; + leaf network-ref { + type leafref { + path "../../../nw:supporting-network/nw:network-ref"; + require-instance false; + } + description + "This leaf identifies in which underlay topology + the supporting link is present."; + } + + leaf link-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/"+ + "../network-ref]/link/link-id"; + require-instance false; + } + description + "This leaf identifies a link that is a part + of this link's underlay. Reference loops in which + a link identifies itself as its underlay, either + directly or transitively, are not allowed."; + } + } + } + } + augment "/nw:networks/nw:network/nw:node" { + description + "Augments termination points that terminate links. + Termination points can ultimately be mapped to interfaces."; + list termination-point { + key "tp-id"; + description + "A termination point can terminate a link. + Depending on the type of topology, a termination point + could, for example, refer to a port or an interface."; + leaf tp-id { + type tp-id; + description + "Termination point identifier."; + } + list supporting-termination-point { + key "network-ref node-ref tp-ref"; + description + "This list identifies any termination points on which a + given termination point depends or onto which it maps. + Those termination points will themselves be contained + in a supporting node. This dependency information can be + inferred from the dependencies between links. Therefore, + this item is not separately configurable. Hence, no + corresponding constraint needs to be articulated. + The corresponding information is simply provided by the + implementing system."; + + leaf network-ref { + type leafref { + path "../../../nw:supporting-node/nw:network-ref"; + require-instance false; + } + description + "This leaf identifies in which topology the + supporting termination point is present."; + } + leaf node-ref { + type leafref { + path "../../../nw:supporting-node/nw:node-ref"; + require-instance false; + } + description + "This leaf identifies in which node the supporting + termination point is present."; + } + leaf tp-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/"+ + "../network-ref]/nw:node[nw:node-id=current()/../"+ + "node-ref]/termination-point/tp-id"; + require-instance false; + } + description + "Reference to the underlay node (the underlay node must + be in a different topology)."; + } + } + } + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-network@2018-02-26.yang b/src/nbi/service/ietf_network_bw/yang/ietf-network@2018-02-26.yang new file mode 100644 index 000000000..d9da81eee --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-network@2018-02-26.yang @@ -0,0 +1,193 @@ + module ietf-network { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-network"; + prefix nw; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + + organization + "IETF I2RS (Interface to the Routing System) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + description + "This module defines a common base data model for a collection + of nodes in a network. Node definitions are further used + in network topologies and inventories. + + Copyright (c) 2018 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8345; + see the RFC itself for full legal notices."; + + revision 2018-02-26 { + description + "Initial revision."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef node-id { + type inet:uri; + description + "Identifier for a node. The precise structure of the node-id + will be up to the implementation. For example, some + implementations MAY pick a URI that includes the network-id + as part of the path. The identifier SHOULD be chosen + such that the same node in a real network topology will + always be identified through the same identifier, even if + the data model is instantiated in separate datastores. An + implementation MAY choose to capture semantics in the + identifier -- for example, to indicate the type of node."; + } + + typedef network-id { + type inet:uri; + description + "Identifier for a network. The precise structure of the + network-id will be up to the implementation. The identifier + SHOULD be chosen such that the same network will always be + identified through the same identifier, even if the data model + is instantiated in separate datastores. An implementation MAY + choose to capture semantics in the identifier -- for example, + to indicate the type of network."; + } + + grouping network-ref { + description + "Contains the information necessary to reference a network -- + for example, an underlay network."; + leaf network-ref { + type leafref { + path "/nw:networks/nw:network/nw:network-id"; + require-instance false; + } + description + "Used to reference a network -- for example, an underlay + network."; + } + } + + grouping node-ref { + description + "Contains the information necessary to reference a node."; + leaf node-ref { + type leafref { + path "/nw:networks/nw:network[nw:network-id=current()/../"+ + "network-ref]/nw:node/nw:node-id"; + require-instance false; + } + description + "Used to reference a node. + Nodes are identified relative to the network that + contains them."; + } + uses network-ref; + } + + container networks { + description + "Serves as a top-level container for a list of networks."; + list network { + key "network-id"; + description + "Describes a network. + A network typically contains an inventory of nodes, + topological information (augmented through the + network-topology data model), and layering information."; + leaf network-id { + type network-id; + description + "Identifies a network."; + } + container network-types { + description + "Serves as an augmentation target. + The network type is indicated through corresponding + presence containers augmented into this container."; + } + list supporting-network { + key "network-ref"; + description + "An underlay network, used to represent layered network + topologies."; + leaf network-ref { + type leafref { + path "/nw:networks/nw:network/nw:network-id"; + require-instance false; + } + description + "References the underlay network."; + } + } + + list node { + key "node-id"; + description + "The inventory of nodes of this network."; + leaf node-id { + type node-id; + description + "Uniquely identifies a node within the containing + network."; + } + list supporting-node { + key "network-ref node-ref"; + description + "Represents another node that is in an underlay network + and that supports this node. Used to represent layering + structure."; + leaf network-ref { + type leafref { + path "../../../nw:supporting-network/nw:network-ref"; + require-instance false; + } + description + "References the underlay network of which the + underlay node is a part."; + } + leaf node-ref { + type leafref { + path "/nw:networks/nw:network/nw:node/nw:node-id"; + require-instance false; + } + description + "References the underlay node itself."; + } + } + } + } + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang b/src/nbi/service/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang new file mode 100644 index 000000000..587612e8e --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang @@ -0,0 +1,2405 @@ + module ietf-otn-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology"; + prefix "otnt"; + + import ietf-network { + prefix "nw"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering + (TE) Topologies"; + } + + import ietf-layer1-types { + prefix "l1-types"; + reference + "I-D.ietf-ccamp-layer1-types: A YANG Data Model + for Layer 1 Types"; + } + + organization + "IETF CCAMP Working Group"; + contact + "WG Web: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Xufeng Liu + + + Editor: Sergio Belotti + + + + + + Editor: Oscar Gonzalez de Dios + "; + + description + "This module defines a protocol independent Layer 1/ODU topology + data model. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2023 IETF Trust and the persons identified + as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices. + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here."; + + revision 2023-07-06 { + description + "Initial Revision"; + reference + "RFC XXXX: A YANG Data Model for Optical Transport Network + Topology"; + // RFC Ed.: replace XXXX with actual RFC number, update date + // information and remove this note + } + + /* + * Groupings + */ + + grouping label-range-info { + description + "OTN technology-specific label range related information with + a presence container indicating that the label range is an + OTN technology-specific label range. + + This grouping SHOULD be used together with the + + + + + otn-label-start-end and otn-label-step groupings to provide + OTN technology-specific label information to the models which + use the label-restriction-info grouping defined in the module + ietf-te-types."; + uses l1-types:otn-label-range-info { + refine otn-label-range { + presence + "Indicates the label range is an OTN label range. + + This container MUST NOT be present if there are other + presence containers or attributes indicating another type + of label range."; + } + } + } + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + container otn-topology { + presence "indicates a topology type of Optical Transport + Network (OTN)-electrical layer."; + description "OTN topology type"; + } + description "augment network types to include OTN newtork"; + } + + augment "/nw:networks/nw:network/nw:node/tet:te" + + "/tet:te-node-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description "Augment only for OTN network."; + } + description "Augment TE node attributes."; + container otn-node { + presence "The TE node is an OTN node."; + description + "Introduce new TE node type for OTN node."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes" { + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description "Augment only for OTN network."; + } + description "Augment link configuration"; + + container otn-link { + description + "Attributes of the OTN Link."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs set up + on this OTN Link."; + } + leaf tsg { + type identityref { + base l1-types:tributary-slot-granularity; + } + description "Tributary slot granularity."; + reference + "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical + Transport Network (OTN)"; + } + leaf distance { + type uint32; + description "distance in the unit of kilometers"; + } + } + container client-svc { + presence + "When present, indicates that the Link supports Costant + Bit Rate (CBR) client signals."; + description + "Attributes of the Link supporting CBR client signals."; + leaf-list supported-client-signal { + type identityref { + base l1-types:client-signal; + } + min-elements 1; + description + "List of client signal types supported by the Link."; + } + } + } + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te" { + + + + + when "../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description "Augment only for OTN network"; + } + description "OTN TP attributes config in ODU topology."; + + container otn-ltp { + description + "Attributes of the OTN Link Termination Point (LTP)."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs set up + on this OTN Link Termination Point (LTP)."; + } + } + container client-svc { + presence + "When present, indicates that the Link Termination Point + (LTP) supports Costant Bit Rate (CBR) client signals."; + description + "OTN LTP Service attributes."; + leaf-list supported-client-signal { + type identityref { + base l1-types:client-signal; + } + description + "List of client signal types supported by the LTP."; + } + } + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + + + + + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link Termination + Point (LTP) is used to compute the number of Tributary + Slots (TS) required by the ODUflex LSPs set up on this + OTN LTP."; + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN + connectivity matrices."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + + + + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN + connectivity matrix entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + + + + + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN + connectivity matrices."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN + connectivity matrix entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + + + + + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + terminated on this OTN Tunnel Termination Point + (TTP)."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + + + + + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay paths of these OTN Local + Link Connectivities."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-link-bandwidth { + augment otn { + description + "Augment OTN link bandwidth information."; + leaf odtu-flex-type { + type l1-types:odtu-flex-type; + description + "The type of Optical Data Tributary Unit (ODTU) + whose nominal bitrate is used to compute the number of + Tributary Slots (TS) required by the ODUflex LSPs + set up along the underlay path of this OTN Local + Link Connectivyt entry."; + } + } + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + + + + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + + + + + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + + + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on this OTN Link."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case otn { + uses l1-types:otn-max-path-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum TE bandwidth the TE link template"; + uses l1-types:otn-link-bandwidth { + description + + + + + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth" { + description + "Augment unreserved TE bandwidth the TE link template"; + uses l1-types:otn-link-bandwidth { + description + "The odtu-flex-type attribute of the OTN Link is used + to compute the number of Tributary Slots (TS) required + by the ODUflex LSPs set up on the OTN Link that uses this + Link Template."; + } + } + + /* + * Augment TE label range information + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE node + connectivity matrices information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the source LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the destination LTP + of the connectivity matrix entry information source."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivities."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TTP + Local Link Connectivity entry."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range information for the TE link."; + uses label-range-info; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction" { + when "../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment TE label range information for the TE link + information source."; + uses label-range-info; + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction" { + description + "Augment TE label range information for the TE link template."; + uses label-range-info; + } + + /* + * Augment TE label + */ + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + + + + + } + description + "Augment TE label range end for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:label-restrictions/" + + "tet:label-restriction/tet:label-step/" + + "tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE node + connectivity matrices"; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path of the + TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path of the + TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity + matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + + + + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity + matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TE node connectivity matrices"; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + + + + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:from/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + + + + + "Augment TE label range step for the source LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:to/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/" + + "tet:type/tet:label/tet:label-hop/" + + "tet:te-label/tet:technology" { + + + + + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/tet:optimizations/" + + "tet:algorithm/tet:metric/tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + + + + + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE node connectivity + matrices information source."; + case otn { + + + + + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE node connectivity + matrices information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/" + + "tet:connectivity-matrices/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE node connectivity + matrices information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + + + + + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE node connectivity matrices of the information + source entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE node connectivity matrices of the information + source entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TE node connectivity matrices + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TE node connectivity matrices + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + + + + + of the TE node connectivity matrices information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + + + + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:from/tet:label-restrictions/" + + "tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the source LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:to/tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the destination LTP + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the connectivity matrix entry information source."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the connectivity matrix entry + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + + + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the connectivity matrix entry + information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the connectivity matrix entry information source."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + + + + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/" + + "tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/" + + "tet:te-label/tet:technology"{ + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/" + + "tet:technology"{ + when "../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + + + + + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivities."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivities."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivities."; + case otn { + + + + + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivities."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + + + + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TTP + Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + + + + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-exclude-objects/" + + "tet:route-object-exclude-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects excluded + by the path computation of the TTP Local Link + Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:optimizations/tet:algorithm/tet:metric/" + + "tet:optimization-metric/" + + "tet:explicit-route-include-objects/" + + "tet:route-object-include-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the explicit route objects included + by the path computation of the TTP Local Link + Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/" + + "tet:path-properties/tet:path-route-objects/" + + "tet:path-route-object/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + + + + + OTN topology type."; + } + description + "Augment TE label hop for the computed path route objects + of the TTP Local Link Connectivity entry."; + case otn { + uses l1-types:otn-label-hop; + } + } + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay primary path + of the TE link."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + when "../../../../../../../../" + + "nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label hop for the underlay backup path + of the TE link."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + + + + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE link."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE link."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range step for the TE link."; + case otn { + uses l1-types:otn-label-step; + } + + + + + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range start for the TE link + information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + description + "Augment TE label range end for the TE link + information source."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "otnt:otn-topology" { + description + "Augmentation parameters apply only for networks with + OTN topology type."; + } + + + + + description + "Augment TE label range step for the TE link + information source."; + case otn { + uses l1-types:otn-label-step; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay primary path + of the TE link template."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" + + "tet:label/tet:label-hop/tet:te-label/tet:technology" { + description + "Augment TE label hop for the underlay backup path + of the TE link template."; + case otn { + uses l1-types:otn-label-hop; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-start/tet:te-label/tet:technology" { + description + "Augment TE label range start for the TE link template."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-end/tet:te-label/tet:technology" { + description + + + + + "Augment TE label range end for the TE link template."; + case otn { + uses l1-types:otn-label-start-end; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:label-restrictions/tet:label-restriction/" + + "tet:label-step/tet:technology" { + description + "Augment TE label range step for the TE link template."; + case otn { + uses l1-types:otn-label-step; + } + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang b/src/nbi/service/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang new file mode 100644 index 000000000..24319c155 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang @@ -0,0 +1,771 @@ +module ietf-routing-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; + prefix rt-types; + + import ietf-yang-types { + prefix yang; + } + import ietf-inet-types { + prefix inet; + } + + organization + "IETF RTGWG - Routing Area Working Group"; + contact + "WG Web: + WG List: + + Editors: Xufeng Liu + + Yingzhen Qu + + Acee Lindem + + Christian Hopps + + Lou Berger + "; + + description + "This module contains a collection of YANG data types + considered generally useful for routing protocols. + + Copyright (c) 2017 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8294; see + the RFC itself for full legal notices."; + revision 2017-12-04 { + description "Initial revision."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area. + Section 3."; + } + + /*** Identities related to MPLS/GMPLS ***/ + + identity mpls-label-special-purpose-value { + description + "Base identity for deriving identities describing + special-purpose Multiprotocol Label Switching (MPLS) label + values."; + reference + "RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels."; + } + + identity ipv4-explicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the IPv4 Explicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity router-alert-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Router Alert Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity ipv6-explicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the IPv6 Explicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity implicit-null-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Implicit NULL Label."; + reference + "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; + } + + identity entropy-label-indicator { + base mpls-label-special-purpose-value; + description + "This identity represents the Entropy Label Indicator."; + reference + "RFC 6790: The Use of Entropy Labels in MPLS Forwarding. + Sections 3 and 10.1."; + } + + identity gal-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Generic Associated Channel + (G-ACh) Label (GAL)."; + reference + "RFC 5586: MPLS Generic Associated Channel. + Sections 4 and 10."; + } + + identity oam-alert-label { + base mpls-label-special-purpose-value; + description + "This identity represents the OAM Alert Label."; + reference + "RFC 3429: Assignment of the 'OAM Alert Label' for + Multiprotocol Label Switching Architecture (MPLS) + Operation and Maintenance (OAM) Functions. + Sections 3 and 6."; + } + + identity extension-label { + base mpls-label-special-purpose-value; + description + "This identity represents the Extension Label."; + reference + "RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels. Sections 3.1 and 5."; + } + + /*** Collection of types related to routing ***/ + + typedef router-id { + type yang:dotted-quad; + description + "A 32-bit number in the dotted-quad format assigned to each + router. This number uniquely identifies the router within + an Autonomous System."; + } + + /*** Collection of types related to VPNs ***/ + + typedef route-target { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + + description + "A Route Target is an 8-octet BGP extended community + initially identifying a set of sites in a BGP VPN + (RFC 4364). However, it has since taken on a more general + role in BGP route filtering. A Route Target consists of two + or three fields: a 2-octet Type field, an administrator + field, and, optionally, an assigned number field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + + Additionally, a generic pattern is defined for future + Route Target types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef ipv6-route-target { + type string { + pattern + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + } + description + "An IPv6 Route Target is a 20-octet BGP IPv6 Address + Specific Extended Community serving the same function + as a standard 8-octet Route Target, except that it only + allows an IPv6 address as the global administrator. + The format is . + + Two valid examples are 2001:db8::1:6544 and + 2001:db8::5eb1:791:6b37:17958."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute."; + } + + typedef route-target-type { + type enumeration { + enum import { + value 0; + description + "The Route Target applies to route import."; + } + enum export { + value 1; + description + "The Route Target applies to route export."; + } + + enum both { + value 2; + description + "The Route Target applies to both route import and + route export."; + } + } + description + "Indicates the role a Route Target takes in route filtering."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; + } + + typedef route-distinguisher { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + + description + "A Route Distinguisher is an 8-octet value used to + distinguish routes from different BGP VPNs (RFC 4364). + A Route Distinguisher will have the same format as a + Route Target as per RFC 4360 and will consist of + two or three fields: a 2-octet Type field, an administrator + field, and, optionally, an assigned number field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + + Additionally, a generic pattern is defined for future + route discriminator types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef route-origin { + type string { + pattern + '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + + '42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + + '42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + + '655[0-2][0-9]|' + + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + + '4294967[01][0-9]{2}|' + + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + + '4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + + '(6(:[a-fA-F0-9]{2}){6})|' + + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + + '[0-9a-fA-F]{1,12})'; + } + description + "A Route Origin is an 8-octet BGP extended community + identifying the set of sites where the BGP route + originated (RFC 4364). A Route Origin will have the same + format as a Route Target as per RFC 4360 and will consist + of two or three fields: a 2-octet Type field, an + administrator field, and, optionally, an assigned number + field. + + According to the data formats for types 0, 1, 2, and 6 as + defined in RFC 4360, RFC 5668, and RFC 7432, the encoding + pattern is defined as: + + 0:2-octet-asn:4-octet-number + 1:4-octet-ipv4addr:2-octet-number + 2:4-octet-asn:2-octet-number + 6:6-octet-mac-address + Additionally, a generic pattern is defined for future + Route Origin types: + + 2-octet-other-hex-number:6-octet-hex-number + + Some valid examples are 0:100:100, 1:1.1.1.1:100, + 2:1234567890:203, and 6:26:00:08:92:78:00."; + reference + "RFC 4360: BGP Extended Communities Attribute. + RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 5668: 4-Octet AS Specific BGP Extended Community. + RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + typedef ipv6-route-origin { + type string { + pattern + '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + + ':' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + + '6[0-4][0-9]{3}|' + + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; + } + description + "An IPv6 Route Origin is a 20-octet BGP IPv6 Address + Specific Extended Community serving the same function + as a standard 8-octet route, except that it only allows + an IPv6 address as the global administrator. The format + is . + + Two valid examples are 2001:db8::1:6544 and + 2001:db8::5eb1:791:6b37:17958."; + reference + "RFC 5701: IPv6 Address Specific BGP Extended Community + Attribute."; + } + + /*** Collection of types common to multicast ***/ + + typedef ipv4-multicast-group-address { + type inet:ipv4-address { + pattern '(2((2[4-9])|(3[0-9]))\.).*'; + } + description + "This type represents an IPv4 multicast group address, + which is in the range of 224.0.0.0 to 239.255.255.255."; + reference + "RFC 1112: Host Extensions for IP Multicasting."; + } + + typedef ipv6-multicast-group-address { + type inet:ipv6-address { + pattern '(([fF]{2}[0-9a-fA-F]{2}):).*'; + } + description + "This type represents an IPv6 multicast group address, + which is in the range of ff00::/8."; + reference + "RFC 4291: IP Version 6 Addressing Architecture. Section 2.7. + RFC 7346: IPv6 Multicast Address Scopes."; + } + + typedef ip-multicast-group-address { + type union { + type ipv4-multicast-group-address; + type ipv6-multicast-group-address; + } + description + "This type represents a version-neutral IP multicast group + address. The format of the textual representation implies + the IP version."; + } + + typedef ipv4-multicast-source-address { + type union { + type enumeration { + enum * { + description + "Any source address."; + } + } + type inet:ipv4-address; + } + description + "Multicast source IPv4 address type."; + } + + typedef ipv6-multicast-source-address { + type union { + type enumeration { + enum * { + description + "Any source address."; + } + } + type inet:ipv6-address; + } + description + "Multicast source IPv6 address type."; + } + + /*** Collection of types common to protocols ***/ + + typedef bandwidth-ieee-float32 { + type string { + pattern + '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' + + '1[01][0-9]|0?[0-9]?[0-9])?)'; + } + description + "Bandwidth in IEEE 754 floating-point 32-bit binary format: + (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), + where Exponent uses 8 bits and Fraction uses 23 bits. + The units are octets per second. + The encoding format is the external hexadecimal-significant + character sequences specified in IEEE 754 and ISO/IEC C99. + The format is restricted to be normalized, non-negative, and + non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0, + where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are + integers in the range of [0..127]. + When six hexadecimal digits are used for 'hhhhhh' or + 'HHHHHH', the least significant digit must be an even + number. 'x' and 'X' indicate hexadecimal; 'p' and 'P' + indicate a power of two. Some examples are 0x0p0, 0x1p10, + and 0x1.abcde2p+20."; + reference + "IEEE Std 754-2008: IEEE Standard for Floating-Point + Arithmetic. + ISO/IEC C99: Information technology - Programming + Languages - C."; + } + + typedef link-access-type { + type enumeration { + enum broadcast { + description + "Specify broadcast multi-access network."; + } + enum non-broadcast-multiaccess { + description + "Specify Non-Broadcast Multi-Access (NBMA) network."; + } + enum point-to-multipoint { + description + "Specify point-to-multipoint network."; + } + enum point-to-point { + description + "Specify point-to-point network."; + } + } + description + "Link access type."; + } + + typedef timer-multiplier { + type uint8; + description + "The number of timer value intervals that should be + interpreted as a failure."; + } + + typedef timer-value-seconds16 { + type union { + type uint16 { + range "1..65535"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "seconds"; + description + "Timer value type, in seconds (16-bit range)."; + } + + typedef timer-value-seconds32 { + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "seconds"; + description + "Timer value type, in seconds (32-bit range)."; + } + + typedef timer-value-milliseconds { + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum infinity { + description + "The timer is set to infinity."; + } + enum not-set { + description + "The timer is not set."; + } + } + } + units "milliseconds"; + description + "Timer value type, in milliseconds."; + } + + typedef percentage { + type uint8 { + range "0..100"; + } + description + "Integer indicating a percentage value."; + } + + typedef timeticks64 { + type uint64; + description + "This type is based on the timeticks type defined in + RFC 6991, but with 64-bit width. It represents the time, + modulo 2^64, in hundredths of a second between two epochs."; + reference + "RFC 6991: Common YANG Data Types."; + } + + typedef uint24 { + type uint32 { + range "0..16777215"; + } + description + "24-bit unsigned integer."; + } + + /*** Collection of types related to MPLS/GMPLS ***/ + + typedef generalized-label { + type binary; + description + "Generalized Label. Nodes sending and receiving the + Generalized Label are aware of the link-specific + label context and type."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description. Section 3.2."; + } + + typedef mpls-label-special-purpose { + type identityref { + base mpls-label-special-purpose-value; + } + description + "This type represents the special-purpose MPLS label values."; + reference + "RFC 3032: MPLS Label Stack Encoding. + RFC 7274: Allocating and Retiring Special-Purpose MPLS + Labels."; + } + + typedef mpls-label-general-use { + type uint32 { + range "16..1048575"; + } + description + "The 20-bit label value in an MPLS label stack as specified + in RFC 3032. This label value does not include the + encodings of Traffic Class and TTL (Time to Live). + The label range specified by this type is for general use, + with special-purpose MPLS label values excluded."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + + typedef mpls-label { + type union { + type mpls-label-special-purpose; + type mpls-label-general-use; + } + description + "The 20-bit label value in an MPLS label stack as specified + in RFC 3032. This label value does not include the + encodings of Traffic Class and TTL."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + + /*** Groupings **/ + + grouping mpls-label-stack { + description + "This grouping specifies an MPLS label stack. The label + stack is encoded as a list of label stack entries. The + list key is an identifier that indicates the relative + ordering of each entry, with the lowest-value identifier + corresponding to the top of the label stack."; + container mpls-label-stack { + description + "Container for a list of MPLS label stack entries."; + list entry { + key "id"; + description + "List of MPLS label stack entries."; + leaf id { + type uint8; + description + "Identifies the entry in a sequence of MPLS label + stack entries. An entry with a smaller identifier + value precedes an entry with a larger identifier + value in the label stack. The value of this ID has + no semantic meaning other than relative ordering + and referencing the entry."; + } + leaf label { + type rt-types:mpls-label; + description + "Label value."; + } + + leaf ttl { + type uint8; + description + "Time to Live (TTL)."; + reference + "RFC 3032: MPLS Label Stack Encoding."; + } + leaf traffic-class { + type uint8 { + range "0..7"; + } + description + "Traffic Class (TC)."; + reference + "RFC 5462: Multiprotocol Label Switching (MPLS) Label + Stack Entry: 'EXP' Field Renamed to 'Traffic Class' + Field."; + } + } + } + } + + grouping vpn-route-targets { + description + "A grouping that specifies Route Target import-export rules + used in BGP-enabled VPNs."; + reference + "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). + RFC 4664: Framework for Layer 2 Virtual Private Networks + (L2VPNs)."; + list vpn-target { + key "route-target"; + description + "List of Route Targets."; + leaf route-target { + type rt-types:route-target; + description + "Route Target value."; + } + leaf route-target-type { + type rt-types:route-target-type; + mandatory true; + description + "Import/export type of the Route Target."; + } + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-routing@2018-03-13.yang b/src/nbi/service/ietf_network_bw/yang/ietf-routing@2018-03-13.yang new file mode 100644 index 000000000..9e259f0e6 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-routing@2018-03-13.yang @@ -0,0 +1,684 @@ +module ietf-routing { + yang-version "1.1"; + namespace "urn:ietf:params:xml:ns:yang:ietf-routing"; + prefix "rt"; + + import ietf-yang-types { + prefix "yang"; + } + + import ietf-interfaces { + prefix "if"; + description + "An 'ietf-interfaces' module version that is compatible with + the Network Management Datastore Architecture (NMDA) + is required."; + } + + organization + "IETF NETMOD (Network Modeling) Working Group"; + contact + "WG Web: + WG List: + + Editor: Ladislav Lhotka + + Acee Lindem + + Yingzhen Qu + "; + + description + "This YANG module defines essential components for the management + of a routing subsystem. The model fully conforms to the Network + Management Datastore Architecture (NMDA). + + Copyright (c) 2018 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC 8349; see + the RFC itself for full legal notices."; + + revision 2018-03-13 { + description + "Network Management Datastore Architecture (NMDA) revision."; + reference + "RFC 8349: A YANG Data Model for Routing Management + (NMDA Version)"; + } + + revision 2016-11-04 { + description + "Initial revision."; + reference + "RFC 8022: A YANG Data Model for Routing Management"; + } + + /* Features */ + feature multiple-ribs { + description + "This feature indicates that the server supports + user-defined RIBs. + + Servers that do not advertise this feature SHOULD provide + exactly one system-controlled RIB per supported address family + and also make it the default RIB. This RIB then appears as an + entry in the list '/routing/ribs/rib'."; + } + + feature router-id { + description + "This feature indicates that the server supports an explicit + 32-bit router ID that is used by some routing protocols. + + Servers that do not advertise this feature set a router ID + algorithmically, usually to one of the configured IPv4 + addresses. However, this algorithm is implementation + specific."; + } + + /* Identities */ + + identity address-family { + description + "Base identity from which identities describing address + families are derived."; + } + identity ipv4 { + base address-family; + description + "This identity represents an IPv4 address family."; + } + + identity ipv6 { + base address-family; + description + "This identity represents an IPv6 address family."; + } + + identity control-plane-protocol { + description + "Base identity from which control-plane protocol identities are + derived."; + } + + identity routing-protocol { + base control-plane-protocol; + description + "Identity from which Layer 3 routing protocol identities are + derived."; + } + + identity direct { + base routing-protocol; + description + "Routing pseudo-protocol that provides routes to directly + connected networks."; + } + + identity static { + base routing-protocol; + description + "'Static' routing pseudo-protocol."; + } + + /* Type Definitions */ + + typedef route-preference { + type uint32; + description + "This type is used for route preferences."; + } + + /* Groupings */ + + grouping address-family { + description + "This grouping provides a leaf identifying an address + family."; + leaf address-family { + type identityref { + base address-family; + } + mandatory true; + description + "Address family."; + } + } + + grouping router-id { + description + "This grouping provides a router ID."; + leaf router-id { + type yang:dotted-quad; + description + "A 32-bit number in the form of a dotted quad that is used by + some routing protocols identifying a router."; + reference + "RFC 2328: OSPF Version 2"; + } + } + + grouping special-next-hop { + description + "This grouping provides a leaf with an enumeration of special + next hops."; + leaf special-next-hop { + type enumeration { + enum blackhole { + description + "Silently discard the packet."; + } + enum unreachable { + description + "Discard the packet and notify the sender with an error + message indicating that the destination host is + unreachable."; + } + enum prohibit { + description + "Discard the packet and notify the sender with an error + message indicating that the communication is + administratively prohibited."; + } + enum receive { + description + "The packet will be received by the local system."; + } + } + description + "Options for special next hops."; + } + } + + grouping next-hop-content { + description + "Generic parameters of next hops in static routes."; + choice next-hop-options { + mandatory true; + description + "Options for next hops in static routes. + + It is expected that further cases will be added through + augments from other modules."; + case simple-next-hop { + description + "This case represents a simple next hop consisting of the + next-hop address and/or outgoing interface. + + Modules for address families MUST augment this case with a + leaf containing a next-hop address of that address + family."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + case special-next-hop { + uses special-next-hop; + } + case next-hop-list { + container next-hop-list { + description + "Container for multiple next hops."; + list next-hop { + key "index"; + description + "An entry in a next-hop list. + + Modules for address families MUST augment this list + with a leaf containing a next-hop address of that + address family."; + leaf index { + type string; + description + "A user-specified identifier utilized to uniquely + reference the next-hop entry in the next-hop list. + The value of this index has no semantic meaning + other than for referencing the entry."; + } + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + } + } + } + } + + grouping next-hop-state-content { + description + "Generic state parameters of next hops."; + choice next-hop-options { + mandatory true; + description + "Options for next hops. + + It is expected that further cases will be added through + augments from other modules, e.g., for recursive + next hops."; + case simple-next-hop { + description + "This case represents a simple next hop consisting of the + next-hop address and/or outgoing interface. + + Modules for address families MUST augment this case with a + leaf containing a next-hop address of that address + family."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + case special-next-hop { + uses special-next-hop; + } + case next-hop-list { + container next-hop-list { + description + "Container for multiple next hops."; + list next-hop { + description + "An entry in a next-hop list. + + Modules for address families MUST augment this list + with a leaf containing a next-hop address of that + address family."; + leaf outgoing-interface { + type if:interface-ref; + description + "Name of the outgoing interface."; + } + } + } + } + } + } + + grouping route-metadata { + description + "Common route metadata."; + leaf source-protocol { + type identityref { + base routing-protocol; + } + mandatory true; + description + "Type of the routing protocol from which the route + originated."; + } + leaf active { + type empty; + description + "The presence of this leaf indicates that the route is + preferred among all routes in the same RIB that have the + same destination prefix."; + } + leaf last-updated { + type yang:date-and-time; + description + "Timestamp of the last modification of the route. If the + route was never modified, it is the time when the route was + inserted into the RIB."; + } + } + + /* Data nodes */ + + container routing { + description + "Configuration parameters for the routing subsystem."; + uses router-id { + if-feature "router-id"; + description + "Support for the global router ID. Routing protocols + that use a router ID can use this parameter or override it + with another value."; + } + container interfaces { + config false; + description + "Network-layer interfaces used for routing."; + leaf-list interface { + type if:interface-ref; + description + "Each entry is a reference to the name of a configured + network-layer interface."; + } + } + container control-plane-protocols { + description + "Support for control-plane protocol instances."; + list control-plane-protocol { + key "type name"; + description + "Each entry contains a control-plane protocol instance."; + leaf type { + type identityref { + base control-plane-protocol; + } + description + "Type of the control-plane protocol -- an identity + derived from the 'control-plane-protocol' + base identity."; + } + leaf name { + type string; + description + "An arbitrary name of the control-plane protocol + instance."; + } + leaf description { + type string; + description + "Textual description of the control-plane protocol + instance."; + } + container static-routes { + when "derived-from-or-self(../type, 'rt:static')" { + description + "This container is only valid for the 'static' routing + protocol."; + } + description + "Support for the 'static' pseudo-protocol. + + Address-family-specific modules augment this node with + their lists of routes."; + } + } + } + container ribs { + description + "Support for RIBs."; + list rib { + key "name"; + description + "Each entry contains a configuration for a RIB identified + by the 'name' key. + + Entries having the same key as a system-controlled entry + in the list '/routing/ribs/rib' are used for + configuring parameters of that entry. Other entries + define additional user-controlled RIBs."; + leaf name { + type string; + description + "The name of the RIB. + + For system-controlled entries, the value of this leaf + must be the same as the name of the corresponding entry + in the operational state. + + For user-controlled entries, an arbitrary name can be + used."; + } + uses address-family { + description + "The address family of the system-controlled RIB."; + } + + leaf default-rib { + if-feature "multiple-ribs"; + type boolean; + default "true"; + config false; + description + "This flag has the value of 'true' if and only if the RIB + is the default RIB for the given address family. + + By default, control-plane protocols place their routes + in the default RIBs."; + } + container routes { + config false; + description + "Current contents of the RIB."; + list route { + description + "A RIB route entry. This data node MUST be augmented + with information specific to routes of each address + family."; + leaf route-preference { + type route-preference; + description + "This route attribute, also known as 'administrative + distance', allows for selecting the preferred route + among routes with the same destination prefix. A + smaller value indicates a route that is + more preferred."; + } + container next-hop { + description + "Route's next-hop attribute."; + uses next-hop-state-content; + } + uses route-metadata; + } + } + action active-route { + description + "Return the active RIB route that is used for the + destination address. + + Address-family-specific modules MUST augment input + parameters with a leaf named 'destination-address'."; + output { + container route { + description + "The active RIB route for the specified destination. + + If no route exists in the RIB for the destination + address, no output is returned. + + Address-family-specific modules MUST augment this + container with appropriate route contents."; + container next-hop { + description + "Route's next-hop attribute."; + uses next-hop-state-content; + } + uses route-metadata; + } + } + } + leaf description { + type string; + description + "Textual description of the RIB."; + } + } + } + } + + /* + * The subsequent data nodes are obviated and obsoleted + * by the Network Management Datastore Architecture + * as described in RFC 8342. + */ + container routing-state { + config false; + status obsolete; + description + "State data of the routing subsystem."; + uses router-id { + status obsolete; + description + "Global router ID. + + It may be either configured or assigned algorithmically by + the implementation."; + } + container interfaces { + status obsolete; + description + "Network-layer interfaces used for routing."; + leaf-list interface { + type if:interface-state-ref; + status obsolete; + description + "Each entry is a reference to the name of a configured + network-layer interface."; + } + } + container control-plane-protocols { + status obsolete; + description + "Container for the list of routing protocol instances."; + list control-plane-protocol { + key "type name"; + status obsolete; + description + "State data of a control-plane protocol instance. + + An implementation MUST provide exactly one + system-controlled instance of the 'direct' + pseudo-protocol. Instances of other control-plane + protocols MAY be created by configuration."; + leaf type { + type identityref { + base control-plane-protocol; + } + status obsolete; + description + "Type of the control-plane protocol."; + } + leaf name { + type string; + status obsolete; + description + "The name of the control-plane protocol instance. + + For system-controlled instances, this name is + persistent, i.e., it SHOULD NOT change across + reboots."; + } + } + } + container ribs { + status obsolete; + description + "Container for RIBs."; + list rib { + key "name"; + min-elements 1; + status obsolete; + description + "Each entry represents a RIB identified by the 'name' + key. All routes in a RIB MUST belong to the same address + family. + + An implementation SHOULD provide one system-controlled + default RIB for each supported address family."; + leaf name { + type string; + status obsolete; + description + "The name of the RIB."; + } + uses address-family { + status obsolete; + description + "The address family of the RIB."; + } + leaf default-rib { + if-feature "multiple-ribs"; + type boolean; + default "true"; + status obsolete; + description + "This flag has the value of 'true' if and only if the + RIB is the default RIB for the given address family. + + By default, control-plane protocols place their routes + in the default RIBs."; + } + container routes { + status obsolete; + description + "Current contents of the RIB."; + list route { + status obsolete; + description + "A RIB route entry. This data node MUST be augmented + with information specific to routes of each address + family."; + leaf route-preference { + type route-preference; + status obsolete; + description + "This route attribute, also known as 'administrative + distance', allows for selecting the preferred route + among routes with the same destination prefix. A + smaller value indicates a route that is + more preferred."; + } + container next-hop { + status obsolete; + description + "Route's next-hop attribute."; + uses next-hop-state-content { + status obsolete; + description + "Route's next-hop attribute operational state."; + } + } + uses route-metadata { + status obsolete; + description + "Route metadata."; + } + } + } + action active-route { + status obsolete; + description + "Return the active RIB route that is used for the + destination address. + + Address-family-specific modules MUST augment input + parameters with a leaf named 'destination-address'."; + output { + container route { + status obsolete; + description + "The active RIB route for the specified + destination. + + If no route exists in the RIB for the destination + address, no output is returned. + + Address-family-specific modules MUST augment this + container with appropriate route contents."; + container next-hop { + status obsolete; + description + "Route's next-hop attribute."; + uses next-hop-state-content { + status obsolete; + description + "Active route state data."; + } + } + uses route-metadata { + status obsolete; + description + "Active route metadata."; + } + } + } + } + } + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang b/src/nbi/service/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang new file mode 100644 index 000000000..67be760a1 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang @@ -0,0 +1,835 @@ +module ietf-te-packet-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-packet-types"; + prefix te-packet-types; + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-te-types { + prefix te-types; + reference + "RFC XXXX: Common YANG Data Types for Traffic Engineering"; + } + + // RFC Editor: replace XXXX with actual RFC number + // and remove this note + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + description + "This YANG module contains a collection of generally useful YANG + data type definitions specific to Packet Traffic Engineering + (TE). + + The model conforms to the Network Management Datastore + Architecture (NMDA). + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2025 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2025-01-24 { + description + "This revision adds the following new identities: + - bandwidth-profile-type; + - link-metric-delay-variation; + - link-metric-loss; + - path-metric-delay-variation; + - path-metric-loss. + + This revision adds the following new groupings: + - bandwidth-profile-parameters; + - te-packet-path-bandwidth; + - te-packet-link-bandwidth. + + This revision provides also few editorial changes."; + reference + "RFC XXXX: Common YANG Data Types for Traffic Engineering"; + } + + // RFC Editor: replace XXXX with actual RFC number, update date + // information and remove this note + + revision 2020-06-10 { + description + "Latest revision of TE MPLS types."; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + + /* + * Identities + */ + + identity bandwidth-profile-type { + description + "Bandwidth Profile Types"; + } + + identity mef-10 { + base bandwidth-profile-type; + description + "MEF 10 Bandwidth Profile"; + reference + "MEF 10.3: Ethernet Services Attributes Phase 3"; + } + + identity rfc-2697 { + base bandwidth-profile-type; + description + "RFC 2697 Bandwidth Profile"; + reference + "RFC 2697: A Single Rate Three Color Marker"; + } + + identity rfc-2698 { + base bandwidth-profile-type; + description + "RFC 2698 Bandwidth Profile"; + reference + "RFC 2698: A Two Rate Three Color Marker"; + } + + // Derived identities from te-types:link-metric-type + + identity link-metric-delay-variation { + base te-types:link-metric-type; + description + "The Unidirectional Delay Variation Metric, + measured in units of microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions, + Section 4.3 + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions, + Section 4.3"; + } + + identity link-metric-loss { + base te-types:link-metric-type; + description + "The Unidirectional Link Loss Metric, + measured in units of 0.000003%."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions, + Section 4.4 + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions, + Section 4.4"; + } + + // Derived identities from te-types:link-metric-type + + identity path-metric-delay-variation { + base te-types:path-metric-type; + description + "The Path Delay Variation Metric, + measured in units of microseconds."; + reference + "RFC 8233: Extensions to the Path Computation Element + Communication Protocol (PCEP) to Compute + Service-Aware Label Switched Paths (LSPs), + Section 3.1.2"; + } + + identity path-metric-loss { + base te-types:path-metric-type; + description + "The Path Loss Metric, measured in units of 0.000003%."; + reference + "RFC 8233: Extensions to the Path Computation Element + Communication Protocol (PCEP) to Compute + Service-Aware Label Switched Paths (LSPs), + Section 3.1.3"; + } + + identity backup-protection-type { + description + "Base identity for the backup protection type."; + } + + identity backup-protection-link { + base backup-protection-type; + description + "Backup provides link protection only."; + } + + identity backup-protection-node-link { + base backup-protection-type; + description + "Backup offers node (preferred) or link protection."; + } + + identity bc-model-type { + description + "Base identity for the Diffserv-TE Bandwidth Constraints + Model type."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + identity bc-model-rdm { + base bc-model-type; + description + "Russian Dolls Bandwidth Constraints Model type."; + reference + "RFC 4127: Russian Dolls Bandwidth Constraints Model for + Diffserv-aware MPLS Traffic Engineering"; + } + + identity bc-model-mam { + base bc-model-type; + description + "Maximum Allocation Bandwidth Constraints Model type."; + reference + "RFC 4125: Maximum Allocation Bandwidth Constraints Model for + Diffserv-aware MPLS Traffic Engineering"; + } + + identity bc-model-mar { + base bc-model-type; + description + "Maximum Allocation with Reservation Bandwidth Constraints + Model type."; + reference + "RFC 4126: Max Allocation with Reservation Bandwidth + Constraints Model for Diffserv-aware MPLS Traffic + Engineering & Performance Comparisons"; + } + + /* + * Typedefs + */ + + typedef te-bandwidth-requested-type { + type enumeration { + enum specified-value { + description + "Bandwidth value is explicitly specified."; + } + enum specified-profile { + description + "Bandwidth profile is explicitly specified."; + } + enum auto { + description + "Bandwidth is automatically computed."; + } + } + description + "Enumerated type for specifying whether bandwidth is + explicitly specified or automatically computed."; + } + + typedef te-class-type { + type uint8; + description + "Diffserv-TE Class-Type. + Defines a set of Traffic Trunks crossing a link that is + governed by a specific set of bandwidth constraints. + + Class-Type is used for the purposes of link bandwidth + allocation, constraint-based routing, and admission control."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + typedef bc-type { + type uint8 { + range "0..7"; + } + description + "Diffserv-TE bandwidth constraints as defined in RFC 4124."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering"; + } + + typedef bandwidth-kbps { + type uint64; + units "kilobits per second"; + description + "Bandwidth values, expressed in kilobits per second."; + } + + typedef bandwidth-mbps { + type uint64; + units "megabits per second"; + description + "Bandwidth values, expressed in megabits per second."; + } + + typedef bandwidth-gbps { + type uint64; + units "gigabits per second"; + description + "Bandwidth values, expressed in gigabits per second."; + } + + /* + * Groupings + */ + + grouping performance-metrics-attributes-packet { + description + "Contains Performance Metrics (PM) information."; + uses te-types:performance-metrics-attributes { + augment "performance-metrics-one-way" { + description + "Performance Metrics (PM) one-way packet-specific + augmentation for a generic PM grouping."; + leaf one-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way minimum delay or latency."; + } + leaf one-way-min-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way minimum delay or latency normality."; + } + leaf one-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way maximum delay or latency."; + } + leaf one-way-max-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way maximum delay or latency normality."; + } + leaf one-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way delay variation."; + reference + "RFC 5481: Packet Delay Variation Applicability + Statement, Section 4.2"; + } + leaf one-way-delay-variation-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "One-way delay variation normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + description + "One-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.4"; + } + leaf one-way-packet-loss-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Packet loss normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + } + augment "performance-metrics-two-way" { + description + "Performance Metrics (PM) two-way packet-specific + augmentation for a generic PM grouping."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE + Metric Extensions"; + leaf two-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way minimum delay or latency."; + } + leaf two-way-min-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way minimum delay or latency normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf two-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way maximum delay or latency."; + } + leaf two-way-max-delay-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way maximum delay or latency normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf two-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way delay variation."; + reference + "RFC 5481: Packet Delay Variation Applicability + Statement, Section 4.2"; + } + leaf two-way-delay-variation-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way delay variation normality."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions + RFC 7823: Performance-Based Path Selection for + Explicitly Routed Label Switched Paths (LSPs) + Using TE Metric Extensions"; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + default "0"; + description + "Two-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + } + leaf two-way-packet-loss-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Two-way packet loss normality."; + } + } + } + } + + grouping one-way-performance-metrics-packet { + description + "One-way packet Performance Metrics (PM) throttle grouping."; + leaf one-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way minimum delay or latency."; + } + leaf one-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way maximum delay or latency."; + } + leaf one-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way delay variation."; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + default "0"; + description + "One-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + } + } + + grouping one-way-performance-metrics-gauge-packet { + description + "One-way packet Performance Metrics (PM) throttle grouping. + + This grouping is used to report the same metrics defined in + the one-way-performance-metrics-packet grouping, using gauges + instead of uint32 data types and referencing IPPM RFCs + instead of IGP-TE RFCs."; + leaf one-way-min-delay { + type yang:gauge64; + units "microseconds"; + description + "One-way minimum delay or latency."; + } + leaf one-way-max-delay { + type yang:gauge64; + units "microseconds"; + description + "One-way maximum delay or latency."; + reference + "RFC 7679: A One-Way Delay Metric for IP Performance + Metrics (IPPM)"; + } + leaf one-way-delay-variation { + type yang:gauge64; + units "microseconds"; + description + "One-way delay variation."; + reference + "RFC 3393: IP Packet Delay Variation Metric for IP + Performance Metrics (IPPM)"; + } + leaf one-way-packet-loss { + type decimal64 { + fraction-digits 5; + range "0..100"; + } + description + "The ratio of packets dropped to packets transmitted between + two endpoints."; + reference + "RFC 7680: A One-Way Loss Metric for IP Performance + Metrics (IPPM)"; + } + } + + grouping two-way-performance-metrics-packet { + description + "Two-way packet Performance Metrics (PM) throttle grouping."; + leaf two-way-min-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way minimum delay or latency."; + } + leaf two-way-max-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way maximum delay or latency."; + } + leaf two-way-delay-variation { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way delay variation."; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 6; + range "0..50.331642"; + } + units "%"; + default "0"; + description + "Two-way packet loss as a percentage of the total traffic + sent over a configurable interval. + + The finest precision is 0.000003%."; + } + } + + grouping two-way-performance-metrics-gauge-packet { + description + "Two-way packet Performance Metrics (PM) throttle grouping. + + This grouping is used to report the same metrics defined in + the two-way-performance-metrics-packet grouping, using gauges + instead of uint32 data types and referencing IPPM RFCs + instead of IGP-TE RFCs."; + leaf two-way-min-delay { + type yang:gauge64; + units "microseconds"; + description + "Two-way minimum delay or latency."; + reference + "RFC 2681: A Round-trip Delay Metric for IPPM"; + } + leaf two-way-max-delay { + type yang:gauge64; + units "microseconds"; + description + "Two-way maximum delay or latency."; + reference + "RFC 2681: A Round-trip Delay Metric for IPPM"; + } + leaf two-way-delay-variation { + type yang:gauge64; + units "microseconds"; + description + "Two-way delay variation."; + reference + "RFC 5481: Packet Delay Variation Applicability Statement"; + } + leaf two-way-packet-loss { + type decimal64 { + fraction-digits 5; + range "0..100"; + } + description + "The ratio of packets dropped to packets transmitted between + two endpoints."; + } + } + + grouping performance-metrics-throttle-container-packet { + description + "Packet Performance Metrics (PM) threshold grouping."; + uses te-types:performance-metrics-throttle-container { + augment "throttle/threshold-out" { + description + "Performance Metrics (PM) threshold-out packet + augmentation for a generic grouping."; + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + } + augment "throttle/threshold-in" { + description + "Performance Metrics (PM) threshold-in packet augmentation + for a generic grouping."; + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + } + augment "throttle/threshold-accelerated-advertisement" { + description + "Performance Metrics (PM) accelerated advertisement packet + augmentation for a generic grouping."; + uses one-way-performance-metrics-packet; + uses two-way-performance-metrics-packet; + } + } + } + + grouping bandwidth-profile-parameters { + description + "Common parameters to define bandwidth profiles in packet + networks."; + leaf cir { + type uint64; + units "bits per second"; + description + "Committed Information Rate (CIR)."; + } + leaf cbs { + type uint64; + units "bytes"; + description + "Committed Burst Size (CBS)."; + } + leaf eir { + type uint64; + units "bits per second"; + description + "Excess Information Rate (EIR)."; + } + leaf ebs { + type uint64; + units "bytes"; + description + "Excess Burst Size (EBS)."; + } + leaf pir { + type uint64; + units "bits per second"; + description + "Peak Information Rate (PIR)."; + } + leaf pbs { + type uint64; + units "bytes"; + description + "Peak Burst Size (PBS)."; + } + } + + grouping te-packet-path-bandwidth { + description + "Bandwidth attributes for TE Packet paths."; + container packet-bandwidth { + description + "Bandwidth attributes for TE Packet paths."; + leaf specification-type { + type te-bandwidth-requested-type; + description + "The bandwidth specification type, either explicitly + specified or automatically computed."; + } + leaf set-bandwidth { + when "../specification-type = 'specified-value'" { + description + "When the bandwidth value is explicitly specified."; + } + type bandwidth-kbps; + description + "Set the bandwidth value explicitly, e.g., using offline + calculation."; + } + container bandwidth-profile { + when "../specification-type = 'specified-profile'" { + description + "When the bandwidth profile is explicitly specified."; + } + description + "Set the bandwidth profile attributes explicitly."; + leaf bandwidth-profile-name { + type string; + description + "Name of Bandwidth Profile."; + } + leaf bandwidth-profile-type { + type identityref { + base bandwidth-profile-type; + } + description + "Type of Bandwidth Profile."; + } + uses bandwidth-profile-parameters; + } + leaf class-type { + type te-types:te-ds-class; + description + "The Class-Type of traffic transported by the LSP."; + reference + "RFC 4124: Protocol Extensions for Support of + Diffserv-aware MPLS Traffic Engineering, + Section 4.3.1"; + } + leaf signaled-bandwidth { + type te-packet-types:bandwidth-kbps; + config false; + description + "The currently signaled bandwidth of the LSP. + + In the case where the bandwidth is specified + explicitly, then this will match the value of the + set-bandwidth leaf. + + In the cases where the bandwidth is dynamically + computed by the system, the current value of the + bandwidth should be reflected."; + } + } + } + + grouping te-packet-link-bandwidth { + description + "Bandwidth attributes for Packet TE links."; + leaf packet-bandwidth { + type uint64; + units "bits per second"; + description + "Bandwidth value for Packet TE links."; + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang b/src/nbi/service/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang new file mode 100644 index 000000000..0b8801bf7 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang @@ -0,0 +1,734 @@ +module ietf-te-topology-packet { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-packet"; + + prefix "tet-pkt"; + + import ietf-network { + prefix "nw"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + import ietf-routing-types { + prefix "rt-types"; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + + import ietf-te-topology { + prefix "tet"; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference + "I-D.ietf-teas-rfc8776-update: Common YANG Data Types for + Traffic Engineering"; + } + + import ietf-te-packet-types { + prefix "te-packet-types"; + reference + "I-D.ietf-teas-rfc8776-update: Common YANG Data Types for + Traffic Engineering"; + } + + organization + "Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + + contact + "WG Web: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez De Dios + "; + + description + "YANG data model for representing and manipulating PSC (Packet + Switching) TE Topologies. + + Copyright (c) 2024 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2024-06-08 { + description + "Initial revision"; + reference + "RFC XXXX: YANG Data Model for Layer 3 TE Topologies"; + } + + /* + * Features + */ + + feature te-performance-metric { + description + "This feature indicates that the system supports + TE performance metric."; + reference + "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. + RFC8570: IS-IS Traffic Engineering (TE) Metric Extensions. + RFC7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + } + + /* + * Groupings + */ + grouping packet-switch-capable-container { + description + "The container of packet switch capable attributes."; + container packet-switch-capable { + description + "Interface has packet-switching capabilities."; + leaf minimum-lsp-bandwidth { + type rt-types:bandwidth-ieee-float32; + description + "Minimum LSP Bandwidth. Units in bytes per second"; + } + leaf interface-mtu { + type uint16; + description + "Interface MTU."; + } + } + } + + /* + * Augmentations + */ + /* Augmentations to network-types */ + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology" { + description + "Defines the packet TE topology type."; + container packet { + presence + "Indicates packet TE topology."; + description + "Its presence identifies the packet TE topology type."; + } + } + + /* Augmentations to connectivity-matrix */ + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + /* Augmentations to tunnel-termination-point */ + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augment only for packet TE topology"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + /* Augmentations to te-link-attributes */ + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes" { + when "tet:interface-switching-capability " + + "[tet:switching-capability = 'te-types:switching-psc1']" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes" { + when "(../../../nw:network-types/tet:te-topology/tet-pkt:packet)" + + " and (tet:interface-switching-capability " + + "[tet:switching-capability = 'te-types:switching-psc1'])" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + refine performance-metrics-one-way { + config false; + } + refine performance-metrics-two-way { + config false; + } + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry" { + when "(../../../nw:network-types/tet:te-topology/tet-pkt:packet)" + + " and (tet:interface-switching-capability " + + "[tet:switching-capability = 'te-types:switching-psc1'])" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses te-packet-types:performance-metrics-attributes-packet { + if-feature te-performance-metric; + } + uses + te-packet-types:performance-metrics-throttle-container-packet { + if-feature te-performance-metric; + } + } + + /* Augmentations to interface-switching-capability */ + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability" { + when "tet:switching-capability = 'te-types:switching-psc1' " { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses packet-switch-capable-container; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability" { + when "(../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet) and " + + "(tet:switching-capability = 'te-types:switching-psc1')" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses packet-switch-capable-container; + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability" { + when "(../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet) and " + + "(tet:switching-capability = 'te-types:switching-psc1')" { + description + "Valid only for PSC"; + } + description + "Parameters for PSC TE topology."; + uses packet-switch-capable-container; + } + + /* + * Augment TE bandwidth + */ + + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum LSP TE bandwidth for the link termination + point (LTP)."; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the TE node + connectivity matrices information source."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:information-source-entry/tet:connectivity-matrices/" + + "tet:connectivity-matrix/" + + "tet:path-constraints/tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints of the + connectivity matrix entry information source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:client-layer-adaptation/tet:switching-capability/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment client TE bandwidth of the tunnel termination point + (TTP)"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivities."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:tunnel-termination-point/" + + "tet:local-link-connectivities/" + + "tet:local-link-connectivity/tet:path-constraints/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment TE bandwidth path constraints for the TTP + Local Link Connectivity entry."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link."; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum TE bandwidth for the TE link"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment unreserved TE bandwidth for the TE Link"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum LSP TE bandwidth for the TE link + information source"; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum TE bandwidth for the TE link + information source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment maximum reservable TE bandwidth for the TE link + information-source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:information-source-entry/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + when "../../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet" { + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; + } + description + "Augment unreserved TE bandwidth of the TE link + information source"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:interface-switching-capability/" + + "tet:max-lsp-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum LSP TE bandwidth of the TE link + template"; + case packet { + uses te-packet-types:te-packet-path-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum TE bandwidth the TE link template"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:max-resv-link-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment maximum reservable TE bandwidth for the TE link + template."; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } + + augment "/nw:networks/tet:te/tet:templates/" + + "tet:link-template/tet:te-link-attributes/" + + "tet:unreserved-bandwidth/" + + "tet:te-bandwidth/tet:technology" { + description + "Augment unreserved TE bandwidth the TE link template"; + case packet { + uses te-packet-types:te-packet-link-bandwidth; + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang b/src/nbi/service/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang new file mode 100644 index 000000000..6d76a77b2 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang @@ -0,0 +1,1952 @@ +module ietf-te-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; + prefix tet; + + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-te-types { + prefix te-types; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix nt; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez de Dios + "; + description + "This YANG module defines a TE topology model for representing, + retrieving, and manipulating technology-agnostic TE topologies. + + Copyright (c) 2020 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Simplified BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 8795; see the + RFC itself for full legal notices."; + + revision 2020-08-06 { + description + "Initial revision."; + reference + "RFC 8795: YANG Data Model for Traffic Engineering (TE) + Topologies"; + } + + /* + * Features + */ + + feature nsrlg { + description + "This feature indicates that the system supports NSRLGs + (Non-Shared Risk Link Groups)."; + } + + feature te-topology-hierarchy { + description + "This feature indicates that the system allows an underlay + and/or overlay TE topology hierarchy."; + } + + feature template { + description + "This feature indicates that the system supports + template configuration."; + } + + /* + * Typedefs + */ + + typedef geographic-coordinate-degree { + type decimal64 { + fraction-digits 8; + } + description + "Decimal degree (DD) used to express latitude and longitude + geographic coordinates."; + } + // geographic-coordinate-degree + + typedef te-info-source { + type enumeration { + enum unknown { + description + "The source is unknown."; + } + enum locally-configured { + description + "Configured entity."; + } + enum ospfv2 { + description + "OSPFv2."; + } + enum ospfv3 { + description + "OSPFv3."; + } + enum isis { + description + "IS-IS."; + } + enum bgp-ls { + description + "BGP-LS."; + reference + "RFC 7752: North-Bound Distribution of Link-State and + Traffic Engineering (TE) Information Using BGP"; + } + enum system-processed { + description + "System-processed entity."; + } + enum other { + description + "Other source."; + } + } + description + "Describes the type of source that has provided the + related information, and the source's credibility."; + } + // te-info-source + + /* + * Groupings + */ + + grouping connectivity-matrix-entry-path-attributes { + description + "Attributes of a connectivity matrix entry."; + leaf is-allowed { + type boolean; + description + "'true' - switching is allowed; + 'false' - switching is disallowed."; + } + container underlay { + if-feature "te-topology-hierarchy"; + description + "Attributes of the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + uses te-link-underlay-attributes; + } + uses te-types:generic-path-constraints; + uses te-types:generic-path-optimization; + uses te-types:generic-path-properties; + } + // connectivity-matrix-entry-path-attributes + + grouping geolocation-container { + description + "Contains a GPS location."; + container geolocation { + config false; + description + "Contains a GPS location."; + leaf altitude { + type int64; + units "millimeters"; + description + "Distance above sea level."; + } + leaf latitude { + type geographic-coordinate-degree { + range "-90..90"; + } + description + "Relative position north or south on the Earth's surface."; + } + leaf longitude { + type geographic-coordinate-degree { + range "-180..180"; + } + description + "Angular distance east or west on the Earth's surface."; + } + } + // geolocation + } + // geolocation-container + + grouping information-source-state-attributes { + description + "The attributes identifying the source that has provided the + related information, and the source's credibility."; + leaf credibility-preference { + type uint16; + description + "The preference value for calculating the Traffic + Engineering database credibility value used for + tie-break selection between different information-source + values. A higher value is preferable."; + } + leaf logical-network-element { + type string; + description + "When applicable, this is the name of a logical network + element from which the information is learned."; + } + leaf network-instance { + type string; + description + "When applicable, this is the name of a network instance + from which the information is learned."; + } + } + // information-source-state-attributes + + grouping information-source-per-link-attributes { + description + "Per-node container of the attributes identifying the source + that has provided the related information, and the source's + credibility."; + leaf information-source { + type te-info-source; + config false; + description + "Indicates the type of information source."; + } + leaf information-source-instance { + type string; + config false; + description + "The name indicating the instance of the information + source."; + } + container information-source-state { + config false; + description + "Contains state attributes related to the information + source."; + uses information-source-state-attributes; + container topology { + description + "When the information is processed by the system, + the attributes in this container indicate which topology + is used to generate the result information."; + uses nt:link-ref; + } + } + } + // information-source-per-link-attributes + + grouping information-source-per-node-attributes { + description + "Per-node container of the attributes identifying the source + that has provided the related information, and the source's + credibility."; + leaf information-source { + type te-info-source; + config false; + description + "Indicates the type of information source."; + } + leaf information-source-instance { + type string; + config false; + description + "The name indicating the instance of the information + source."; + } + container information-source-state { + config false; + description + "Contains state attributes related to the information + source."; + uses information-source-state-attributes; + container topology { + description + "When the information is processed by the system, + the attributes in this container indicate which topology + is used to generate the result information."; + uses nw:node-ref; + } + } + } + // information-source-per-node-attributes + + grouping interface-switching-capability-list { + description + "List of Interface Switching Capability Descriptors (ISCDs)."; + list interface-switching-capability { + key "switching-capability encoding"; + description + "List of ISCDs for this link."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description + RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for this interface."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by this interface."; + } + uses te-link-iscd-attributes; + } + // interface-switching-capability + } + // interface-switching-capability-list + + grouping statistics-per-link { + description + "Statistics attributes per TE link."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + /* Administrative attributes */ + leaf disables { + type yang:counter32; + description + "Number of times that a link was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a link was enabled."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a link was taken out of maintenance."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a link was put in maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a link was modified."; + } + /* Operational attributes */ + leaf downs { + type yang:counter32; + description + "Number of times that a link was set to an operational state + of 'down'."; + } + leaf ups { + type yang:counter32; + description + "Number of times that a link was set to an operational state + of 'up'."; + } + /* Recovery attributes */ + leaf fault-clears { + type yang:counter32; + description + "Number of times that a link experienced a fault-clear + event."; + } + leaf fault-detects { + type yang:counter32; + description + "Number of times that a link experienced fault detection."; + } + leaf protection-switches { + type yang:counter32; + description + "Number of times that a link experienced protection + switchover."; + } + leaf protection-reverts { + type yang:counter32; + description + "Number of times that a link experienced protection + reversion."; + } + leaf restoration-failures { + type yang:counter32; + description + "Number of times that a link experienced restoration + failure."; + } + leaf restoration-starts { + type yang:counter32; + description + "Number of times that a link experienced restoration + start."; + } + leaf restoration-successes { + type yang:counter32; + description + "Number of times that a link experienced restoration + success."; + } + leaf restoration-reversion-failures { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion failure."; + } + leaf restoration-reversion-starts { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion start."; + } + leaf restoration-reversion-successes { + type yang:counter32; + description + "Number of times that a link experienced restoration + reversion success."; + } + } + // statistics-per-link + + grouping statistics-per-node { + description + "Statistics attributes per TE node."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + container node { + description + "Contains statistics attributes at the TE node level."; + leaf disables { + type yang:counter32; + description + "Number of times that a node was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a node was enabled."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a node was put in maintenance."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a node was taken out of + maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a node was modified."; + } + } + // node + container connectivity-matrix-entry { + description + "Contains statistics attributes at the level of a + connectivity matrix entry."; + leaf creates { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + created."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'create' operation"; + } + leaf deletes { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + deleted."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'delete' operation"; + } + leaf disables { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + enabled."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a connectivity matrix entry was + modified."; + } + } + // connectivity-matrix-entry + } + // statistics-per-node + + grouping statistics-per-ttp { + description + "Statistics attributes per TE TTP (Tunnel Termination Point)."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time of the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + container tunnel-termination-point { + description + "Contains statistics attributes at the TE TTP level."; + /* Administrative attributes */ + leaf disables { + type yang:counter32; + description + "Number of times that a TTP was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that a TTP was enabled."; + } + leaf maintenance-clears { + type yang:counter32; + description + "Number of times that a TTP was taken out of maintenance."; + } + leaf maintenance-sets { + type yang:counter32; + description + "Number of times that a TTP was put in maintenance."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that a TTP was modified."; + } + /* Operational attributes */ + leaf downs { + type yang:counter32; + description + "Number of times that a TTP was set to an operational state + of 'down'."; + } + leaf ups { + type yang:counter32; + description + "Number of times that a TTP was set to an operational state + of 'up'."; + } + leaf in-service-clears { + type yang:counter32; + description + "Number of times that a TTP was taken out of service + (TE tunnel was released)."; + } + leaf in-service-sets { + type yang:counter32; + description + "Number of times that a TTP was put in service by a TE + tunnel (TE tunnel was set up)."; + } + } + // tunnel-termination-point + container local-link-connectivity { + description + "Contains statistics attributes at the TE LLCL (Local Link + Connectivity List) level."; + leaf creates { + type yang:counter32; + description + "Number of times that an LLCL entry was created."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'create' operation"; + } + leaf deletes { + type yang:counter32; + description + "Number of times that an LLCL entry was deleted."; + reference + "RFC 6241: Network Configuration Protocol (NETCONF), + Section 7.2, 'delete' operation"; + } + leaf disables { + type yang:counter32; + description + "Number of times that an LLCL entry was disabled."; + } + leaf enables { + type yang:counter32; + description + "Number of times that an LLCL entry was enabled."; + } + leaf modifies { + type yang:counter32; + description + "Number of times that an LLCL entry was modified."; + } + } + // local-link-connectivity + } + // statistics-per-ttp + + grouping te-link-augment { + description + "Augmentation for a TE link."; + uses te-link-config; + uses te-link-state-derived; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-link; + } + } + // te-link-augment + + grouping te-link-config { + description + "TE link configuration grouping."; + choice bundle-stack-level { + description + "The TE link can be partitioned into bundled links or + component links."; + case bundle { + container bundled-links { + description + "A set of bundled links."; + reference + "RFC 4201: Link Bundling in MPLS Traffic + Engineering (TE)"; + list bundled-link { + key "sequence"; + description + "Specifies a bundled interface that is + further partitioned."; + leaf sequence { + type uint32; + description + "Identifies the sequence in the bundle."; + } + } + } + } + case component { + container component-links { + description + "A set of component links."; + list component-link { + key "sequence"; + description + "Specifies a component interface that is + sufficient to unambiguously identify the + appropriate resources."; + leaf sequence { + type uint32; + description + "Identifies the sequence in the bundle."; + } + leaf src-interface-ref { + type string; + description + "Reference to a component link interface on the + source node."; + } + leaf des-interface-ref { + type string; + description + "Reference to a component link interface on the + destination node."; + } + } + } + } + } + // bundle-stack-level + leaf-list te-link-template { + if-feature "template"; + type leafref { + path "../../../../te/templates/link-template/name"; + } + description + "The reference to a TE link template."; + } + uses te-link-config-attributes; + } + // te-link-config + + grouping te-link-config-attributes { + description + "Link configuration attributes in a TE topology."; + container te-link-attributes { + description + "Link attributes in a TE topology."; + leaf access-type { + type te-types:te-link-access-type; + description + "Link access type, which can be point-to-point or + multi-access."; + } + container external-domain { + description + "For an inter-domain link, specifies the attributes of + the remote end of the link, to facilitate the signaling at + the local end."; + uses nw:network-ref; + leaf remote-te-node-id { + type te-types:te-node-id; + description + "Remote TE node identifier, used together with + 'remote-te-link-tp-id' to identify the remote Link + Termination Point (LTP) in a different domain."; + } + leaf remote-te-link-tp-id { + type te-types:te-tp-id; + description + "Remote TE LTP identifier, used together with + 'remote-te-node-id' to identify the remote LTP in a + different domain."; + } + } + leaf is-abstract { + type empty; + description + "Present if the link is abstract."; + } + leaf name { + type string; + description + "Link name."; + } + container underlay { + if-feature "te-topology-hierarchy"; + description + "Attributes of the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + uses te-link-underlay-attributes; + } + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-link-info-attributes; + } + // te-link-attributes + } + // te-link-config-attributes + + grouping te-link-info-attributes { + description + "Advertised TE information attributes."; + leaf link-index { + type uint64; + description + "The link identifier. If OSPF is used, this object + represents an ospfLsdbID. If IS-IS is used, this object + represents an isisLSPID. If a locally configured link is + used, this object represents a unique value, which is + locally defined in a router."; + } + leaf administrative-group { + type te-types:admin-groups; + description + "Administrative group or color of the link. + This attribute covers both administrative groups (defined + in RFCs 3630 and 5305) and Extended Administrative Groups + (defined in RFC 7308)."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + uses interface-switching-capability-list; + uses te-types:label-set-info; + leaf link-protection-type { + type identityref { + base te-types:link-protection-type; + } + description + "Link Protection Type desired for this link."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)"; + } + container max-link-bandwidth { + uses te-types:te-bandwidth; + description + "Maximum bandwidth that can be seen on this link in this + direction. Units are in bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + container max-resv-link-bandwidth { + uses te-types:te-bandwidth; + description + "Maximum amount of bandwidth that can be reserved in this + direction in this link. Units are in bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + list unreserved-bandwidth { + key "priority"; + max-elements 8; + description + "Unreserved bandwidth for priority levels 0-7. Units are in + bytes per second."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + leaf priority { + type uint8 { + range "0..7"; + } + description + "Priority."; + } + uses te-types:te-bandwidth; + } + leaf te-default-metric { + type uint32; + description + "Traffic Engineering metric."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + leaf te-delay-metric { + type uint32; + description + "Traffic Engineering delay metric."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions"; + } + leaf te-igp-metric { + type uint32; + description + "IGP metric used for Traffic Engineering."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a + second MPLS Traffic Engineering (TE) Metric"; + } + container te-srlgs { + description + "Contains a list of SRLGs."; + leaf-list value { + type te-types:srlg; + description + "SRLG value."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS)"; + } + } + container te-nsrlgs { + if-feature "nsrlg"; + description + "Contains a list of NSRLGs (Non-Shared Risk Link Groups). + When an abstract TE link is configured, this list specifies + the request that underlay TE paths need to be mutually + disjoint with other TE links in the same groups."; + leaf-list id { + type uint32; + description + "NSRLG ID, uniquely configured within a topology."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + } + } + // te-link-info-attributes + + grouping te-link-iscd-attributes { + description + "TE link ISCD attributes."; + reference + "RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS), Section 1.4"; + list max-lsp-bandwidth { + key "priority"; + max-elements 8; + description + "Maximum Label Switched Path (LSP) bandwidth at + priorities 0-7."; + leaf priority { + type uint8 { + range "0..7"; + } + description + "Priority."; + } + uses te-types:te-bandwidth; + } + } + // te-link-iscd-attributes + + grouping te-link-state-derived { + description + "Link state attributes in a TE topology."; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the link."; + } + leaf is-transitional { + type empty; + config false; + description + "Present if the link is transitional; used as an + alternative approach in lieu of 'inter-layer-lock-id' + for path computation in a TE topology covering multiple + layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + uses information-source-per-link-attributes; + list information-source-entry { + key "information-source information-source-instance"; + config false; + description + "A list of information sources learned, including the source + that is used."; + uses information-source-per-link-attributes; + uses te-link-info-attributes; + } + container recovery { + config false; + description + "Status of the recovery process."; + leaf restoration-status { + type te-types:te-recovery-status; + description + "Restoration status."; + } + leaf protection-status { + type te-types:te-recovery-status; + description + "Protection status."; + } + } + container underlay { + if-feature "te-topology-hierarchy"; + config false; + description + "State attributes for the TE link underlay."; + leaf dynamic { + type boolean; + description + "'true' if the underlay is dynamically created."; + } + leaf committed { + type boolean; + description + "'true' if the underlay is committed."; + } + } + } + // te-link-state-derived + + grouping te-link-underlay-attributes { + description + "Attributes for the TE link underlay."; + reference + "RFC 4206: Label Switched Paths (LSP) Hierarchy with + Generalized Multi-Protocol Label Switching (GMPLS) + Traffic Engineering (TE)"; + leaf enabled { + type boolean; + description + "'true' if the underlay is enabled. + 'false' if the underlay is disabled."; + } + container primary-path { + description + "The service path on the underlay topology that + supports this link."; + uses nw:network-ref; + list path-element { + key "path-element-id"; + description + "A list of path elements describing the service path."; + leaf path-element-id { + type uint32; + description + "To identify the element in a path."; + } + uses te-path-element; + } + } + // primary-path + list backup-path { + key "index"; + description + "A list of backup service paths on the underlay topology that + protect the underlay primary path. If the primary path is + not protected, the list contains zero elements. If the + primary path is protected, the list contains one or more + elements."; + leaf index { + type uint32; + description + "A sequence number to identify a backup path."; + } + uses nw:network-ref; + list path-element { + key "path-element-id"; + description + "A list of path elements describing the backup service + path."; + leaf path-element-id { + type uint32; + description + "To identify the element in a path."; + } + uses te-path-element; + } + } + // backup-path + leaf protection-type { + type identityref { + base te-types:lsp-protection-type; + } + description + "Underlay protection type desired for this link."; + } + container tunnel-termination-points { + description + "Underlay TTPs desired for this link."; + leaf source { + type binary; + description + "Source TTP identifier."; + } + leaf destination { + type binary; + description + "Destination TTP identifier."; + } + } + container tunnels { + description + "Underlay TE tunnels supporting this TE link."; + leaf sharing { + type boolean; + default "true"; + description + "'true' if the underlay tunnel can be shared with other + TE links; + 'false' if the underlay tunnel is dedicated to this + TE link. + This leaf is the default option for all TE tunnels + and may be overridden by the per-TE-tunnel value."; + } + list tunnel { + key "tunnel-name"; + description + "Zero, one, or more underlay TE tunnels that support this + TE link."; + leaf tunnel-name { + type string; + description + "A tunnel name uniquely identifies an underlay TE tunnel, + used together with the 'source-node' value for this + link."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf sharing { + type boolean; + description + "'true' if the underlay tunnel can be shared with other + TE links; + 'false' if the underlay tunnel is dedicated to this + TE link."; + } + } + // tunnel + } + // tunnels + } + // te-link-underlay-attributes + + grouping te-node-augment { + description + "Augmentation for a TE node."; + uses te-node-config; + uses te-node-state-derived; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-node; + } + list tunnel-termination-point { + key "tunnel-tp-id"; + description + "A termination point can terminate a tunnel."; + leaf tunnel-tp-id { + type binary; + description + "TTP identifier."; + } + uses te-node-tunnel-termination-point-config; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the TTP."; + } + uses geolocation-container; + container statistics { + config false; + description + "Statistics data."; + uses statistics-per-ttp; + } + // Relationship to other TTPs + list supporting-tunnel-termination-point { + key "node-ref tunnel-tp-ref"; + description + "Identifies the TTPs on which this TTP depends."; + leaf node-ref { + type inet:uri; + description + "This leaf identifies the node in which the supporting + TTP is present. + This node is either the supporting node or a node in + an underlay topology."; + } + leaf tunnel-tp-ref { + type binary; + description + "Reference to a TTP that is in either the supporting node + or a node in an underlay topology."; + } + } + // supporting-tunnel-termination-point + } + // tunnel-termination-point + } + // te-node-augment + + grouping te-node-config { + description + "TE node configuration grouping."; + leaf-list te-node-template { + if-feature "template"; + type leafref { + path "../../../../te/templates/node-template/name"; + } + description + "The reference to a TE node template."; + } + uses te-node-config-attributes; + } + // te-node-config + + grouping te-node-config-attributes { + description + "Configuration node attributes in a TE topology."; + container te-node-attributes { + description + "Contains node attributes in a TE topology."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-node-connectivity-matrices; + uses te-node-info-attributes; + } + } + // te-node-config-attributes + + grouping te-node-config-attributes-template { + description + "Configuration node attributes for a template in a TE + topology."; + container te-node-attributes { + description + "Contains node attributes in a TE topology."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the link."; + } + uses te-node-info-attributes; + } + } + // te-node-config-attributes-template + + grouping te-node-connectivity-matrices { + description + "Connectivity matrix on a TE node."; + container connectivity-matrices { + description + "Contains a connectivity matrix on a TE node."; + leaf number-of-entries { + type uint16; + description + "The number of connectivity matrix entries. + If this number is specified in the configuration request, + the number is the requested number of entries, which may + not all be listed in the list; + if this number is reported in the state data, + the number is the current number of operational entries."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + list connectivity-matrix { + key "id"; + description + "Represents a node's switching limitations, i.e., + limitations in the interconnecting network TE links + across the node."; + reference + "RFC 7579: General Network Element Constraint Encoding + for GMPLS-Controlled Networks"; + leaf id { + type uint32; + description + "Identifies the connectivity matrix entry."; + } + } + // connectivity-matrix + } + // connectivity-matrices + } + // te-node-connectivity-matrices + + grouping te-node-connectivity-matrix-attributes { + description + "Termination point references of a connectivity matrix entry."; + container from { + description + "Reference to a source LTP."; + leaf tp-ref { + type leafref { + path "../../../../../../nt:termination-point/nt:tp-id"; + } + description + "Relative reference to a termination point."; + } + uses te-types:label-set-info; + } + container to { + description + "Reference to a destination LTP."; + leaf tp-ref { + type leafref { + path "../../../../../../nt:termination-point/nt:tp-id"; + } + description + "Relative reference to a termination point."; + } + uses te-types:label-set-info; + } + uses connectivity-matrix-entry-path-attributes; + } + // te-node-connectivity-matrix-attributes + + grouping te-node-info-attributes { + description + "Advertised TE information attributes."; + leaf domain-id { + type uint32; + description + "Identifies the domain to which this node belongs. + This attribute is used to support inter-domain links."; + reference + "RFC 5152: A Per-Domain Path Computation Method for + Establishing Inter-Domain Traffic Engineering (TE) + Label Switched Paths (LSPs) + RFC 5316: ISIS Extensions in Support of Inter-Autonomous + System (AS) MPLS and GMPLS Traffic Engineering + RFC 5392: OSPF Extensions in Support of Inter-Autonomous + System (AS) MPLS and GMPLS Traffic Engineering"; + } + leaf is-abstract { + type empty; + description + "Present if the node is abstract; not present if the node + is actual."; + } + leaf name { + type string; + description + "Node name."; + } + leaf-list signaling-address { + type inet:ip-address; + description + "The node's signaling address."; + } + container underlay-topology { + if-feature "te-topology-hierarchy"; + description + "When an abstract node encapsulates a topology, the + attributes in this container point to said topology."; + uses nw:network-ref; + } + } + // te-node-info-attributes + + grouping te-node-state-derived { + description + "Node state attributes in a TE topology."; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the node."; + } + uses geolocation-container; + leaf is-multi-access-dr { + type empty; + config false; + description + "The presence of this attribute indicates that this TE node + is a pseudonode elected as a designated router."; + reference + "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual + Environments + RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + uses information-source-per-node-attributes; + list information-source-entry { + key "information-source information-source-instance"; + config false; + description + "A list of information sources learned, including the source + that is used."; + uses information-source-per-node-attributes; + uses te-node-connectivity-matrices; + uses te-node-info-attributes; + } + } + // te-node-state-derived + + grouping te-node-tunnel-termination-point-config { + description + "Termination capability of a TTP on a TE node."; + uses te-node-tunnel-termination-point-config-attributes; + container local-link-connectivities { + description + "Contains an LLCL for a TTP on a TE node."; + leaf number-of-entries { + type uint16; + description + "The number of LLCL entries. + If this number is specified in the configuration request, + the number is the requested number of entries, which may + not all be listed in the list; + if this number is reported in the state data, + the number is the current number of operational entries."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + } + } + // te-node-tunnel-termination-point-config + + grouping te-node-tunnel-termination-point-config-attributes { + description + "Configuration attributes of a TTP on a TE node."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the TTP."; + } + leaf name { + type string; + description + "A descriptive name for the TTP."; + } + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for this interface."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by this interface."; + } + leaf-list inter-layer-lock-id { + type uint32; + description + "Inter-layer lock ID, used for path computation in a TE + topology covering multiple layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + leaf protection-type { + type identityref { + base te-types:lsp-protection-type; + } + description + "The protection type that this TTP is capable of."; + } + container client-layer-adaptation { + description + "Contains capability information to support a client-layer + adaptation in a multi-layer topology."; + list switching-capability { + key "switching-capability encoding"; + description + "List of supported switching capabilities."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching (GMPLS) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + leaf switching-capability { + type identityref { + base te-types:switching-capabilities; + } + description + "Switching capability for the client-layer adaptation."; + } + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "Encoding supported by the client-layer adaptation."; + } + uses te-types:te-bandwidth; + } + } + } + // te-node-tunnel-termination-point-config-attributes + + grouping te-node-tunnel-termination-point-llc-list { + description + "LLCL of a TTP on a TE node."; + list local-link-connectivity { + key "link-tp-ref"; + description + "The termination capabilities between the TTP and the LTP. + This capability information can be used to compute + the tunnel path. + The Interface Adjustment Capability Descriptors (IACDs) + (defined in RFC 6001) on each LTP can be derived from + this list."; + reference + "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + leaf link-tp-ref { + type leafref { + path "../../../../../nt:termination-point/nt:tp-id"; + } + description + "LTP."; + } + uses te-types:label-set-info; + uses connectivity-matrix-entry-path-attributes; + } + } + // te-node-tunnel-termination-point-llc-list + + grouping te-path-element { + description + "A group of attributes defining an element in a TE path, + such as a TE node, TE link, TE atomic resource, or label."; + uses te-types:explicit-route-hop; + } + // te-path-element + + grouping te-termination-point-augment { + description + "Augmentation for a TE termination point."; + leaf te-tp-id { + type te-types:te-tp-id; + description + "An identifier that uniquely identifies a TE termination + point."; + } + container te { + must '../te-tp-id'; + presence "TE support"; + description + "Indicates TE support."; + uses te-termination-point-config; + leaf oper-status { + type te-types:te-oper-status; + config false; + description + "The current operational state of the LTP."; + } + uses geolocation-container; + } + } + // te-termination-point-augment + + grouping te-termination-point-config { + description + "TE termination point configuration grouping."; + leaf admin-status { + type te-types:te-admin-status; + description + "The administrative state of the LTP."; + } + leaf name { + type string; + description + "A descriptive name for the LTP."; + } + uses interface-switching-capability-list; + leaf inter-domain-plug-id { + type binary; + description + "A network-wide unique number that identifies on the + network a connection that supports a given inter-domain + TE link. This is a more flexible alternative to specifying + 'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link + when the provider either does not know 'remote-te-node-id' + and 'remote-te-link-tp-id' or needs to give the client the + flexibility to mix and match multiple topologies."; + } + leaf-list inter-layer-lock-id { + type uint32; + description + "Inter-layer lock ID, used for path computation in a TE + topology covering multiple layers or multiple regions."; + reference + "RFC 5212: Requirements for GMPLS-Based Multi-Region and + Multi-Layer Networks (MRN/MLN) + RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions + for Multi-Layer and Multi-Region Networks (MLN/MRN)"; + } + } + // te-termination-point-config + + grouping te-topologies-augment { + description + "Augmentation for TE topologies."; + container te { + presence "TE support"; + description + "Indicates TE support."; + container templates { + description + "Configuration parameters for templates used for a TE + topology."; + list node-template { + if-feature "template"; + key "name"; + leaf name { + type te-types:te-template-name; + description + "The name to identify a TE node template."; + } + description + "The list of TE node templates used to define sharable + and reusable TE node attributes."; + uses template-attributes; + uses te-node-config-attributes-template; + } + // node-template + list link-template { + if-feature "template"; + key "name"; + leaf name { + type te-types:te-template-name; + description + "The name to identify a TE link template."; + } + description + "The list of TE link templates used to define sharable + and reusable TE link attributes."; + uses template-attributes; + uses te-link-config-attributes; + } + // link-template + } + // templates + } + // te + } + // te-topologies-augment + + grouping te-topology-augment { + description + "Augmentation for a TE topology."; + uses te-types:te-topology-identifier; + container te { + must '../te-topology-identifier/provider-id' + + ' and ../te-topology-identifier/client-id' + + ' and ../te-topology-identifier/topology-id'; + presence "TE support"; + description + "Indicates TE support."; + uses te-topology-config; + uses geolocation-container; + } + } + // te-topology-augment + + grouping te-topology-config { + description + "TE topology configuration grouping."; + leaf name { + type string; + description + "Name of the TE topology. This attribute is optional and can + be specified by the operator to describe the TE topology, + which can be useful when 'network-id' (RFC 8345) is not + descriptive and not modifiable because of being generated + by the system."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + leaf preference { + type uint8 { + range "1..255"; + } + description + "Specifies a preference for this topology. A lower number + indicates a higher preference."; + } + leaf optimization-criterion { + type identityref { + base te-types:objective-function-type; + } + description + "Optimization criterion applied to this topology."; + reference + "RFC 3272: Overview and Principles of Internet Traffic + Engineering"; + } + list nsrlg { + if-feature "nsrlg"; + key "id"; + description + "List of NSRLGs (Non-Shared Risk Link Groups)."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + leaf id { + type uint32; + description + "Identifies the NSRLG entry."; + } + leaf disjointness { + type te-types:te-path-disjointness; + description + "The type of resource disjointness."; + } + } + // nsrlg + } + // te-topology-config + + grouping template-attributes { + description + "Common attributes for all templates."; + leaf priority { + type uint16; + description + "The preference value for resolving conflicts between + different templates. When two or more templates specify + values for one configuration attribute, the value from the + template with the highest priority is used. + A lower number indicates a higher priority. The highest + priority is 0."; + } + leaf reference-change-policy { + type enumeration { + enum no-action { + description + "When an attribute changes in this template, the + configuration node referring to this template does + not take any action."; + } + enum not-allowed { + description + "When any configuration object has a reference to this + template, changing this template is not allowed."; + } + enum cascade { + description + "When an attribute changes in this template, the + configuration object referring to this template applies + the new attribute value to the corresponding + configuration."; + } + } + description + "This attribute specifies the action taken for a + configuration node that has a reference to this template."; + } + } + // template-attributes + + /* + * Data nodes + */ + + augment "/nw:networks/nw:network/nw:network-types" { + description + "Introduces a new network type for a TE topology."; + container te-topology { + presence "Indicates a TE topology"; + description + "Its presence identifies the TE topology type."; + } + } + + augment "/nw:networks" { + description + "Augmentation parameters for TE topologies."; + uses te-topologies-augment; + } + + augment "/nw:networks/nw:network" { + when 'nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for a TE topology."; + uses te-topology-augment; + } + + augment "/nw:networks/nw:network/nw:node" { + when '../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the node level."; + leaf te-node-id { + type te-types:te-node-id; + description + "The identifier of a node in the TE topology. + A node is specific to a topology to which it belongs."; + } + container te { + must '../te-node-id' { + description + "'te-node-id' is mandatory."; + } + must 'count(../nw:supporting-node)<=1' { + description + "For a node in a TE topology, there cannot be more + than one supporting node. If multiple nodes are + abstracted, the 'underlay-topology' field is used."; + } + presence "TE support"; + description + "Indicates TE support."; + uses te-node-augment; + } + } + + augment "/nw:networks/nw:network/nt:link" { + when '../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the link level."; + container te { + must 'count(../nt:supporting-link)<=1' { + description + "For a link in a TE topology, there cannot be more + than one supporting link. If one or more link paths are + abstracted, the underlay is used."; + } + presence "TE support"; + description + "Indicates TE support."; + uses te-link-augment; + } + } + + augment "/nw:networks/nw:network/nw:node/" + + "nt:termination-point" { + when '../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Configuration parameters for TE at the termination point + level."; + uses te-termination-point-augment; + } + + augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/" + + "bundle/bundled-links/bundled-link" { + when '../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for a TE bundled link."; + leaf src-tp-ref { + type leafref { + path "../../../../../nw:node[nw:node-id = " + + "current()/../../../../nt:source/" + + "nt:source-node]/" + + "nt:termination-point/nt:tp-id"; + require-instance true; + } + description + "Reference to another TE termination point on the + same source node."; + } + leaf des-tp-ref { + type leafref { + path "../../../../../nw:node[nw:node-id = " + + "current()/../../../../nt:destination/" + + "nt:dest-node]/" + + "nt:termination-point/nt:tp-id"; + require-instance true; + } + description + "Reference to another TE termination point on the + same destination node."; + } + } + + augment "/nw:networks/nw:network/nw:node/te/" + + "information-source-entry/connectivity-matrices/" + + "connectivity-matrix" { + when '../../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for the TE node connectivity matrix."; + uses te-node-connectivity-matrix-attributes; + } + + augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/" + + "connectivity-matrices/connectivity-matrix" { + when '../../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for the TE node connectivity matrix."; + uses te-node-connectivity-matrix-attributes; + } + + augment "/nw:networks/nw:network/nw:node/te/" + + "tunnel-termination-point/local-link-connectivities" { + when '../../../../nw:network-types/tet:te-topology' { + description + "Augmentation parameters apply only for networks with a + TE topology type."; + } + description + "Augmentation for TE node TTP LLCs (Local Link + Connectivities)."; + uses te-node-tunnel-termination-point-llc-list; + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang b/src/nbi/service/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang new file mode 100644 index 000000000..b0e9af256 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang @@ -0,0 +1,4473 @@ +module ietf-te-types { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; + prefix te-types; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-yang-types { + prefix yang; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-routing-types { + prefix rt-types; + reference + "RFC 8294: Common YANG Data Types for the Routing Area"; + } + import ietf-network { + prefix nw; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + import ietf-network-topology { + prefix nt; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "WG Web: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + description + "This YANG module contains a collection of generally useful + YANG data type definitions specific to TE. + + The model conforms to the Network Management Datastore + Architecture (NMDA). + + The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL + NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', + 'MAY', and 'OPTIONAL' in this document are to be interpreted as + described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, + they appear in all capitals, as shown here. + + Copyright (c) 2025 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX + (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself + for full legal notices."; + + revision 2025-01-24 { + description + "This revision adds the following new identities: + - lsp-provisioning-error-reason; + - association-type-diversity; + - tunnel-admin-state-auto; + - lsp-restoration-restore-none; + - restoration-scheme-rerouting; + - path-metric-optimization-type; + - link-path-metric-type; + - link-metric-type and its derived identities; + - path-computation-error-reason and its derived identities; + - protocol-origin-type and its derived identities; + - svec-objective-function-type and its derived identities; + - svec-metric-type and its derived identities. + + This revision adds the following new data types: + - path-type. + + This revision adds the following new groupings: + - explicit-route-hop-with-srlg; + - encoding-and-switching-type; + - te-generic-node-id. + + This revision updates the following identities: + - objective-function-type; + - action-exercise; + - path-metric-type; + - path-metric-te; + - path-metric-igp; + - path-metric-hop; + - path-metric-delay-average; + - path-metric-delay-minimum; + - path-metric-residual-bandwidth; + - path-metric-optimize-includes; + - path-metric-optimize-excludes; + - te-optimization-criterion. + + This revision updates the following data types: + - te-node-id. + + This revision updates the following groupings: + - explicit-route-hop: + - adds the following leaves: + - node-id-uri; + - link-tp-id-uri; + - updates the following leaves: + - node-id; + - link-tp-id; + - record-route-state: + - adds the following leaves: + - node-id-uri; + - link-tp-id-uri; + - updates the following leaves: + - node-id; + - link-tp-id; + - optimization-metric-entry: + - updates the following leaves: + - metric-type; + - tunnel-constraints; + - adds the following leaves: + - network-id; + - path-constraints-route-objects: + - updates the following containers: + - explicit-route-objects-always; + - generic-path-metric-bounds: + - updates the following leaves: + - metric-type; + - generic-path-optimization + - adds the following leaves: + - tiebreaker; + - deprecate the following containers: + - tiebreakers. + + This revision obsoletes the following identities: + - of-minimize-agg-bandwidth-consumption; + - of-minimize-load-most-loaded-link; + - of-minimize-cost-path-set; + - lsp-protection-reroute-extra; + - lsp-protection-reroute. + + This revision provides also few editorial changes."; + reference + "RFC XXXX: Common YANG Data Types for Traffic Engineering"; + } + + // RFC Editor: replace XXXX with actual RFC number, update date + // information and remove this note + + revision 2020-06-10 { + description + "Initial Version of TE types."; + reference + "RFC 8776: Common YANG Data Types for Traffic Engineering"; + } + + /* + * Features + */ + + feature p2mp-te { + description + "Indicates support for Point-to-Multipoint TE (P2MP-TE)."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for + Point-to-Multipoint TE Label Switched Paths (LSPs)"; + } + + feature frr-te { + description + "Indicates support for TE Fast Reroute (FRR)."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels"; + } + + feature extended-admin-groups { + description + "Indicates support for TE link extended administrative + groups."; + reference + "RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + feature named-path-affinities { + description + "Indicates support for named path affinities."; + } + + feature named-extended-admin-groups { + description + "Indicates support for named extended administrative groups."; + } + + feature named-srlg-groups { + description + "Indicates support for named Shared Risk Link Group (SRLG)."; + } + + feature named-path-constraints { + description + "Indicates support for named path constraints."; + } + + feature path-optimization-metric { + description + "Indicates support for path optimization metrics."; + } + + feature path-optimization-objective-function { + description + "Indicates support for path optimization objective functions."; + } + + /* + * Identities + */ + + identity lsp-provisioning-error-reason { + description + "Base identity for LSP provisioning errors."; + } + + identity session-attributes-flags { + description + "Base identity for the RSVP-TE session attributes flags."; + } + + identity local-protection-desired { + base session-attributes-flags; + description + "Local protection is desired."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.7.1"; + } + + identity se-style-desired { + base session-attributes-flags; + description + "Shared explicit style, to allow the LSP to be established + and share resources with the old LSP."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity local-recording-desired { + base session-attributes-flags; + description + "Label recording is desired."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.7.1"; + } + + identity bandwidth-protection-desired { + base session-attributes-flags; + description + "Requests FRR bandwidth protection on LSRs, if present."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels"; + } + + identity node-protection-desired { + base session-attributes-flags; + description + "Requests FRR node protection on LSRs, if present."; + reference + "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels"; + } + + identity path-reevaluation-request { + base session-attributes-flags; + description + "This flag indicates that a path re-evaluation (of the + current path in use) is requested. + + Note that this does not trigger any LSP reroutes but + instead just signals a request to evaluate whether a + preferable path exists."; + reference + "RFC 4736: Reoptimization of Multiprotocol Label Switching + (MPLS) Traffic Engineering (TE) Loosely Routed + Label Switched Path (LSP)"; + } + + identity soft-preemption-desired { + base session-attributes-flags; + description + "Soft preemption of LSP resources is desired."; + reference + "RFC 5712: MPLS Traffic Engineering Soft Preemption"; + } + + identity lsp-attributes-flags { + description + "Base identity for LSP attributes flags."; + } + + identity end-to-end-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates end-to-end rerouting behavior for an LSP + undergoing establishment. + + This MAY also be used to specify the behavior of end-to-end + LSP recovery for established LSPs."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol Traffic + Engineering (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity boundary-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates boundary rerouting behavior for an LSP undergoing + establishment. + + This MAY also be used to specify segment-based LSP recovery + through nested crankback for established LSPs. + + The boundary Area Border Router (ABR) / Autonomous System + Border Router (ASBR) can decide to forward the PathErr + message upstream to either an upstream boundary ABR/ASBR or + the ingress LSR. + + Alternatively, it can try to select another egress boundary + LSR."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol Traffic + Engineering (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity segment-based-rerouting-desired { + base lsp-attributes-flags; + description + "Indicates segment-based rerouting behavior for an LSP + undergoing establishment. + + This MAY also be used to specify segment-based LSP recovery + for established LSPs."; + reference + "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS + RSVP-TE + RFC 5420: Encoding of Attributes for MPLS LSP Establishment + Using Resource Reservation Protocol + Traffic Engineering (RSVP-TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity lsp-integrity-required { + base lsp-attributes-flags; + description + "Indicates that LSP integrity is required."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for + Point-to-Multipoint TE Label Switched Paths (LSPs) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity contiguous-lsp-desired { + base lsp-attributes-flags; + description + "Indicates that a contiguous LSP is desired."; + reference + "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering -- + Resource Reservation Protocol-Traffic Engineering + (RSVP-TE) Extensions + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity lsp-stitching-desired { + base lsp-attributes-flags; + description + "Indicates that LSP stitching is desired."; + reference + "RFC 5150: Label Switched Path Stitching with Generalized + Multiprotocol Label Switching Traffic Engineering + (GMPLS TE) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity pre-planned-lsp-flag { + base lsp-attributes-flags; + description + "Indicates that the LSP MUST be provisioned in the + control plane only."; + reference + "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for + Multi-Layer and Multi-Region Networks (MLN/MRN) + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity non-php-behavior-flag { + base lsp-attributes-flags; + description + "Indicates that non-PHP (non-Penultimate Hop Popping) + behavior for the LSP is desired."; + reference + "RFC 6511: Non-Penultimate Hop Popping Behavior and + Out-of-Band Mapping for RSVP-TE Label Switched + Paths + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity oob-mapping-flag { + base lsp-attributes-flags; + description + "Indicates that signaling of the egress binding information + is out of band (e.g., via the Border Gateway Protocol + (BGP))."; + reference + "RFC 6511: Non-Penultimate Hop Popping Behavior and + Out-of-Band Mapping for RSVP-TE Label Switched + Paths + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity entropy-label-capability { + base lsp-attributes-flags; + description + "Indicates entropy label capability."; + reference + "RFC 6790: The Use of Entropy Labels in MPLS Forwarding + RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO)"; + } + + identity oam-mep-entity-desired { + base lsp-attributes-flags; + description + "OAM Maintenance Entity Group End Point (MEP) entities + desired."; + reference + "RFC 7260: GMPLS RSVP-TE Extensions for Operations, + Administration, and Maintenance (OAM) + Configuration"; + } + + identity oam-mip-entity-desired { + base lsp-attributes-flags; + description + "OAM Maintenance Entity Group Intermediate Points (MIP) + entities desired."; + reference + "RFC 7260: GMPLS RSVP-TE Extensions for Operations, + Administration, and Maintenance (OAM) + Configuration"; + } + + identity srlg-collection-desired { + base lsp-attributes-flags; + description + "Shared Risk Link Group (SRLG) collection desired."; + reference + "RFC 7570: Label Switched Path (LSP) Attribute in the + Explicit Route Object (ERO) + RFC 8001: RSVP-TE Extensions for Collecting Shared Risk + Link Group (SRLG) Information"; + } + + identity loopback-desired { + base lsp-attributes-flags; + description + "This flag indicates that a particular node on the LSP is + required to enter loopback mode. + + This can also be used to specify the loopback state of the + node."; + reference + "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and + Loopback"; + } + + identity p2mp-te-tree-eval-request { + base lsp-attributes-flags; + description + "P2MP-TE tree re-evaluation request."; + reference + "RFC 8149: RSVP Extensions for Reoptimization of Loosely + Routed Point-to-Multipoint Traffic Engineering + Label Switched Paths (LSPs)"; + } + + identity rtm-set-desired { + base lsp-attributes-flags; + description + "Residence Time Measurement (RTM) attribute flag requested."; + reference + "RFC 8169: Residence Time Measurement in MPLS Networks"; + } + + identity link-protection-type { + description + "Base identity for the link protection type."; + } + + identity link-protection-unprotected { + base link-protection-type; + description + "Unprotected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-extra-traffic { + base link-protection-type; + description + "Extra-Traffic protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-shared { + base link-protection-type; + description + "Shared protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-1-for-1 { + base link-protection-type; + description + "One-for-one (1:1) protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-1-plus-1 { + base link-protection-type; + description + "One-plus-one (1+1) protected link type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity link-protection-enhanced { + base link-protection-type; + description + "A compound link protection type derived from the underlay + TE tunnel protection configuration supporting the TE link."; + } + + identity association-type { + description + "Base identity for the tunnel association."; + } + + identity association-type-recovery { + base association-type; + description + "Association type for recovery, used to associate LSPs of the + same tunnel for recovery."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 6780: RSVP ASSOCIATION Object Extensions"; + } + + identity association-type-resource-sharing { + base association-type; + description + "Association type for resource sharing, used to enable + resource sharing during make-before-break."; + reference + "RFC 4873: GMPLS Segment Recovery + RFC 6780: RSVP ASSOCIATION Object Extensions"; + } + + identity association-type-double-sided-bidir { + base association-type; + description + "Association type for double-sided bidirectional LSPs, + used to associate two LSPs of two tunnels that are + independently configured on either endpoint."; + reference + "RFC 7551: RSVP-TE Extensions for Associated Bidirectional + Label Switched Paths (LSPs)"; + } + + identity association-type-single-sided-bidir { + base association-type; + description + "Association type for single-sided bidirectional LSPs, + used to associate two LSPs of two tunnels, where one + tunnel is configured on one side/endpoint and the other + tunnel is dynamically created on the other endpoint."; + reference + "RFC 6780: RSVP ASSOCIATION Object Extensions + RFC 7551: RSVP-TE Extensions for Associated Bidirectional + Label Switched Paths (LSPs)"; + } + + identity association-type-diversity { + base association-type; + description + "Association Type diversity used to associate LSPs whose + paths are to be diverse from each other."; + reference + "RFC 8800: Path Computation Element Communication Protocol + (PCEP) Extension for Label Switched Path (LSP) + Diversity Constraint Signaling"; + } + + identity objective-function-type { + description + "Base identity for path objective function types."; + } + + identity of-minimize-cost-path { + base objective-function-type; + description + "Objective function for minimizing path cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-load-path { + base objective-function-type; + description + "Objective function for minimizing the load on one or more + paths."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-maximize-residual-bandwidth { + base objective-function-type; + description + "Objective function for maximizing residual bandwidth."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-agg-bandwidth-consumption { + base objective-function-type; + status obsolete; + description + "Objective function for minimizing aggregate bandwidth + consumption. + + This identity has been obsoleted: the + 'svec-of-minimize-agg-bandwidth-consumption' identity SHOULD + be used instead."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-load-most-loaded-link { + base objective-function-type; + status obsolete; + description + "Objective function for minimizing the load on the link that + is carrying the highest load. + + This identity has been obsoleted: the + 'svec-of-minimize-load-most-loaded-link' identity SHOULD + be used instead."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity of-minimize-cost-path-set { + base objective-function-type; + status obsolete; + description + "Objective function for minimizing the cost on a path set. + + This identity has been obsoleted: the + 'svec-of-minimize-cost-path-set' identity SHOULD + be used instead."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity path-computation-method { + description + "Base identity for supported path computation mechanisms."; + } + + identity path-locally-computed { + base path-computation-method; + description + "Indicates a constrained-path LSP in which the + path is computed by the local LER."; + reference + "RFC 9522: Overview and Principles of Internet Traffic + Engineering, Section 4.4"; + } + + identity path-externally-queried { + base path-computation-method; + description + "Constrained-path LSP in which the path is obtained by + querying an external source, such as a PCE server. + In the case that an LSP is defined to be externally queried, + it may also have associated explicit definitions (provided + to the external source to aid computation). + + The path that is returned by the external source may + require further local computation on the device."; + reference + "RFC 9522: Overview and Principles of Internet Traffic + Engineering + RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity path-explicitly-defined { + base path-computation-method; + description + "Constrained-path LSP in which the path is + explicitly specified as a collection of strict and/or loose + hops."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 9522: Overview and Principles of Internet Traffic + Engineering"; + } + + identity lsp-metric-type { + description + "Base identity for the LSP metric specification types."; + } + + identity lsp-metric-relative { + base lsp-metric-type; + description + "The metric specified for the LSPs to which this identity + refers is specified as a value relative to the IGP metric + cost to the LSP's tail end."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity lsp-metric-absolute { + base lsp-metric-type; + description + "The metric specified for the LSPs to which this identity + refers is specified as an absolute value."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity lsp-metric-inherited { + base lsp-metric-type; + description + "The metric for the LSPs to which this identity refers is + not specified explicitly; rather, it is directly inherited + from the IGP cost."; + reference + "RFC 4657: Path Computation Element (PCE) Communication + Protocol Generic Requirements"; + } + + identity te-tunnel-type { + description + "Base identity from which specific tunnel types are derived."; + } + + identity te-tunnel-p2p { + base te-tunnel-type; + description + "TE Point-to-Point (P2P) tunnel type."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity te-tunnel-p2mp { + base te-tunnel-type; + description + "TE P2MP tunnel type."; + reference + "RFC 4875: Extensions to Resource Reservation Protocol - + Traffic Engineering (RSVP-TE) for + Point-to-Multipoint TE Label Switched Paths + (LSPs)"; + } + + identity tunnel-action-type { + description + "Base identity from which specific tunnel action types + are derived."; + } + + identity tunnel-action-resetup { + base tunnel-action-type; + description + "TE tunnel action that tears down the tunnel's current LSP + (if any) and attempts to re-establish a new LSP."; + } + + identity tunnel-action-reoptimize { + base tunnel-action-type; + description + "TE tunnel action that reoptimizes the placement of the + tunnel LSP(s)."; + } + + identity tunnel-action-switchpath { + base tunnel-action-type; + description + "TE tunnel action that switches the tunnel's LSP to use the + specified path."; + } + + identity te-action-result { + description + "Base identity from which specific TE action results + are derived."; + } + + identity te-action-success { + base te-action-result; + description + "TE action was successful."; + } + + identity te-action-fail { + base te-action-result; + description + "TE action failed."; + } + + identity tunnel-action-inprogress { + base te-action-result; + description + "TE action is in progress."; + } + + identity tunnel-admin-state-type { + description + "Base identity for TE tunnel administrative states."; + } + + identity tunnel-admin-state-up { + base tunnel-admin-state-type; + description + "Tunnel's administrative state is up."; + } + + identity tunnel-admin-state-down { + base tunnel-admin-state-type; + description + "Tunnel's administrative state is down."; + } + + identity tunnel-admin-state-auto { + base tunnel-admin-state-type; + description + "Tunnel administrative auto state. The administrative status + in state datastore transitions to 'tunnel-admin-up' when the + tunnel used by the client layer, and to 'tunnel-admin-down' + when it is not used by the client layer."; + } + + identity tunnel-state-type { + description + "Base identity for TE tunnel states."; + } + + identity tunnel-state-up { + base tunnel-state-type; + description + "Tunnel's state is up."; + } + + identity tunnel-state-down { + base tunnel-state-type; + description + "Tunnel's state is down."; + } + + identity lsp-state-type { + description + "Base identity for TE LSP states."; + } + + identity lsp-path-computing { + base lsp-state-type; + description + "State path computation is in progress."; + } + + identity lsp-path-computation-ok { + base lsp-state-type; + description + "State path computation was successful."; + } + + identity lsp-path-computation-failed { + base lsp-state-type; + description + "State path computation failed."; + } + + identity lsp-state-setting-up { + base lsp-state-type; + description + "State is being set up."; + } + + identity lsp-state-setup-ok { + base lsp-state-type; + description + "State setup was successful."; + } + + identity lsp-state-setup-failed { + base lsp-state-type; + description + "State setup failed."; + } + + identity lsp-state-up { + base lsp-state-type; + description + "State is up."; + } + + identity lsp-state-tearing-down { + base lsp-state-type; + description + "State is being torn down."; + } + + identity lsp-state-down { + base lsp-state-type; + description + "State is down."; + } + + identity path-invalidation-action-type { + description + "Base identity for TE path invalidation action types."; + } + + identity path-invalidation-action-drop { + base path-invalidation-action-type; + description + "Upon invalidation of the TE tunnel path, the tunnel remains + valid, but any packet mapped over the tunnel is dropped."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 2.5"; + } + + identity path-invalidation-action-teardown { + base path-invalidation-action-type; + description + "TE path invalidation action teardown."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 2.5"; + } + + identity lsp-restoration-type { + description + "Base identity from which LSP restoration types are derived."; + } + + identity lsp-restoration-restore-none { + base lsp-restoration-type; + description + "No LSP affected by a failure is restored."; + } + + identity lsp-restoration-restore-any { + base lsp-restoration-type; + description + "Any LSP affected by a failure is restored."; + } + + identity lsp-restoration-restore-all { + base lsp-restoration-type; + description + "Affected LSPs are restored after all LSPs of the tunnel are + broken."; + } + + identity restoration-scheme-type { + description + "Base identity for LSP restoration schemes."; + } + + identity restoration-scheme-rerouting { + base restoration-scheme-type; + description + "Restoration LSP is computed, signalled and configured after + the failure detection. + + This restoration scheme is also known as + 'Full LSP Re-routing', with the alternate route being + computed after the failure occurs."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity restoration-scheme-preconfigured { + base restoration-scheme-type; + description + "Restoration LSP is precomputed, presignalled and + preconfigured prior to the failure."; + } + + identity restoration-scheme-precomputed { + base restoration-scheme-type; + description + "Restoration LSP is precomputed, but not presignalled nor + preconfigured, prior to the failure. + + This restoration scheme is also known as + 'Full LSP Re-routing', with the alternate route being + pre-computed and stored for use when the failure occurs."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity restoration-scheme-presignaled { + base restoration-scheme-type; + description + "Restoration LSP is presignaled, but not preconfigured, + prior to the failure. + + This restoration scheme is also known as + 'Pre-planned LSP Re-routing'."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-type { + description + "Base identity from which LSP protection types are derived."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-unprotected { + base lsp-protection-type; + description + "'Unprotected' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-reroute-extra { + base lsp-protection-type; + status obsolete; + description + "'(Full) Rerouting' LSP protection type. + + This identity has been obsoleted: the + 'restoration-scheme-rerouting' identity SHOULD be used + instead."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-reroute { + base lsp-protection-type; + status obsolete; + description + "'Rerouting without Extra-Traffic' LSP protection type. + + This identity has been obsoleted: the + 'restoration-scheme-rerouting' identity SHOULD be used + instead."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-1-for-n { + base lsp-protection-type; + description + "'1:N Protection with Extra-Traffic' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-1-for-1 { + base lsp-protection-type; + description + "LSP protection '1:1 Protection Type'."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-unidir-1-plus-1 { + base lsp-protection-type; + description + "'1+1 Unidirectional Protection' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-bidir-1-plus-1 { + base lsp-protection-type; + description + "'1+1 Bidirectional Protection' LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-extra-traffic { + base lsp-protection-type; + description + "Extra-Traffic LSP protection type."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + identity lsp-protection-state { + description + "Base identity of protection states for reporting purposes."; + } + + identity normal { + base lsp-protection-state; + description + "Normal state."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity signal-fail-of-protection { + base lsp-protection-state; + description + "The protection transport entity has a signal fail condition + that is of higher priority than the forced switchover + command."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity lockout-of-protection { + base lsp-protection-state; + description + "A Loss of Protection (LoP) command is active."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity forced-switch { + base lsp-protection-state; + description + "A forced switchover command is active."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity signal-fail { + base lsp-protection-state; + description + "There is a signal fail condition on either the working path + or the protection path."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity signal-degrade { + base lsp-protection-state; + description + "There is a signal degrade condition on either the working + path or the protection path."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity manual-switch { + base lsp-protection-state; + description + "A manual switchover command is active."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity wait-to-restore { + base lsp-protection-state; + description + "A Wait-to-Restore (WTR) timer is running."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity do-not-revert { + base lsp-protection-state; + description + "A Do Not Revert (DNR) condition is active because of + non-revertive behavior."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity failure-of-protocol { + base lsp-protection-state; + description + "LSP protection is not working because of a protocol failure + condition."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity protection-external-commands { + description + "Base identity from which protection-related external commands + used for troubleshooting purposes are derived."; + } + + identity action-freeze { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command that prevents any switchover action from being taken + and, as such, freezes the current state."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity clear-freeze { + base protection-external-commands; + description + "An action that clears the active freeze state."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-lockout-of-normal { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command to ensure that the normal traffic is not allowed + to use the protection transport entity."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity clear-lockout-of-normal { + base protection-external-commands; + description + "An action that clears the active lockout of the + normal state."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-lockout-of-protection { + base protection-external-commands; + description + "A temporary configuration action initiated by an operator + command to ensure that the protection transport entity is + temporarily not available to transport a traffic signal + (either normal or Extra-Traffic)."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-forced-switch { + base protection-external-commands; + description + "A switchover action initiated by an operator command to + switch the Extra-Traffic signal, the normal traffic signal, + or the null signal to the protection transport entity, + unless a switchover command of equal or higher priority is + in effect."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-manual-switch { + base protection-external-commands; + description + "A switchover action initiated by an operator command to + switch the Extra-Traffic signal, the normal traffic signal, + or the null signal to the protection transport entity, + unless a fault condition exists on other transport entities + or a switchover command of equal or higher priority is in + effect."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity action-exercise { + base protection-external-commands; + description + "An action that starts testing whether or not Automatic + Protection Switching (APS) communication is operating + correctly. + + It is of lower priority than any other state or command."; + reference + "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection + to Match the Operational Expectations of + Synchronous Digital Hierarchy, Optical Transport + Network, and Ethernet Transport Network Operators + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity clear { + base protection-external-commands; + description + "An action that clears the active near-end lockout of a + protection, forced switchover, manual switchover, + Wait-to-Restore (WTR) state, or exercise command."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + identity switching-capabilities { + description + "Base identity for interface switching capabilities."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-psc1 { + base switching-capabilities; + description + "Packet-Switch Capable-1 (PSC-1)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-evpl { + base switching-capabilities; + description + "Ethernet Virtual Private Line (EVPL)."; + reference + "RFC 6004: Generalized MPLS (GMPLS) Support for Metro + Ethernet Forum and G.8011 Ethernet Service + Switching"; + } + + identity switching-l2sc { + base switching-capabilities; + description + "Layer-2 Switch Capable (L2SC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-tdm { + base switching-capabilities; + description + "Time-Division-Multiplex Capable (TDM)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-otn { + base switching-capabilities; + description + "OTN-TDM capable."; + reference + "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS + Control of Evolving G.709 Optical Transport + Networks"; + } + + identity switching-dcsc { + base switching-capabilities; + description + "Data Channel Switching Capable (DCSC)."; + reference + "RFC 6002: Generalized MPLS (GMPLS) Data Channel + Switching Capable (DCSC) and Channel Set Label + Extensions"; + } + + identity switching-lsc { + base switching-capabilities; + description + "Lambda-Switch Capable (LSC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity switching-fsc { + base switching-capabilities; + description + "Fiber-Switch Capable (FSC)."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-types { + description + "Base identity for encoding types."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-packet { + base lsp-encoding-types; + description + "Packet LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-ethernet { + base lsp-encoding-types; + description + "Ethernet LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-pdh { + base lsp-encoding-types; + description + "ANSI/ETSI PDH LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-sdh { + base lsp-encoding-types; + description + "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-digital-wrapper { + base lsp-encoding-types; + description + "Digital Wrapper LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-lambda { + base lsp-encoding-types; + description + "Lambda (photonic) LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-fiber { + base lsp-encoding-types; + description + "Fiber LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-fiber-channel { + base lsp-encoding-types; + description + "FiberChannel LSP encoding."; + reference + "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Functional Description"; + } + + identity lsp-encoding-oduk { + base lsp-encoding-types; + description + "G.709 ODUk (Digital Path) LSP encoding."; + reference + "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Extensions for G.709 Optical Transport + Networks Control"; + } + + identity lsp-encoding-optical-channel { + base lsp-encoding-types; + description + "G.709 Optical Channel LSP encoding."; + reference + "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) + Signaling Extensions for G.709 Optical Transport + Networks Control"; + } + + identity lsp-encoding-line { + base lsp-encoding-types; + description + "Line (e.g., 8B/10B) LSP encoding."; + reference + "RFC 6004: Generalized MPLS (GMPLS) Support for Metro + Ethernet Forum and G.8011 Ethernet Service + Switching"; + } + + identity path-signaling-type { + description + "Base identity from which specific LSP path setup types + are derived."; + } + + identity path-setup-static { + base path-signaling-type; + description + "Static LSP provisioning path setup."; + } + + identity path-setup-rsvp { + base path-signaling-type; + description + "RSVP-TE signaling path setup."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + + identity path-setup-sr { + base path-signaling-type; + description + "Segment-routing path setup."; + } + + identity path-scope-type { + description + "Base identity from which specific path scope types are + derived."; + } + + identity path-scope-segment { + base path-scope-type; + description + "Path scope segment."; + reference + "RFC 4873: GMPLS Segment Recovery"; + } + + identity path-scope-end-to-end { + base path-scope-type; + description + "Path scope end to end."; + reference + "RFC 4873: GMPLS Segment Recovery"; + } + + identity route-usage-type { + description + "Base identity for route usage."; + } + + identity route-include-object { + base route-usage-type; + description + "'Include route' object."; + } + + identity route-exclude-object { + base route-usage-type; + description + "'Exclude route' object."; + reference + "RFC 4874: Exclude Routes - Extension to Resource ReserVation + Protocol-Traffic Engineering (RSVP-TE)"; + } + + identity route-exclude-srlg { + base route-usage-type; + description + "Excludes Shared Risk Link Groups (SRLGs)."; + reference + "RFC 4874: Exclude Routes - Extension to Resource ReserVation + Protocol-Traffic Engineering (RSVP-TE)"; + } + + identity path-metric-optimization-type { + description + "Base identity used to define the path metric optimization + types."; + } + + identity link-path-metric-type { + description + "Base identity used to define the link and the path metric + types. + + The unit of the path metric value is interpreted in the + context of the path metric type and the derived identities + SHOULD describe the unit of the path metric types they + define."; + } + + identity link-metric-type { + base link-path-metric-type; + description + "Base identity for the link metric types."; + } + + identity link-metric-te { + base link-metric-type; + description + "Traffic Engineering (TE) Link Metric."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2, Section 2.5.5 + RFC 5305: IS-IS Extensions for Traffic Engineering, + Section 3.7"; + } + + identity link-metric-igp { + base link-metric-type; + description + "Interior Gateway Protocol (IGP) Link Metric."; + reference + "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric + as a second MPLS Traffic Engineering (TE) + Metric"; + } + + identity link-metric-delay-average { + base link-metric-type; + description + "Unidirectional Link Delay, measured in units of + microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.1 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.1"; + } + + identity link-metric-delay-minimum { + base link-metric-type; + description + "Minimum unidirectional Link Delay, measured in units of + microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.2 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.2"; + } + + identity link-metric-delay-maximum { + base link-metric-type; + description + "Maximum unidirectional Link Delay, measured in units of + microseconds."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.2 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.2"; + } + + identity link-metric-residual-bandwidth { + base link-metric-type; + description + "Unidirectional Residual Bandwidth, measured in units of + bytes per second. + + It is defined to be Maximum Bandwidth minus the bandwidth + currently allocated to LSPs."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric + Extensions, Section 4.5 + RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 4.5"; + } + + identity path-metric-type { + base link-path-metric-type; + base path-metric-optimization-type; + description + "Base identity for the path metric types."; + } + + identity path-metric-te { + base path-metric-type; + description + "Traffic Engineering (TE) Path Metric."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), Section 7.8"; + } + + identity path-metric-igp { + base path-metric-type; + description + "Interior Gateway Protocol (IGP) Path Metric."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), section 7.8"; + } + + identity path-metric-hop { + base path-metric-type; + description + "Hop Count Path Metric."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), Section 7.8"; + } + + identity path-metric-delay-average { + base path-metric-type; + description + "The Path Delay Metric, measured in units of + microseconds."; + reference + "RFC 8233: Extensions to the Path Computation Element + Communication Protocol (PCEP) to Compute + Service-Aware Label Switched Paths (LSPs), + Section 3.1.1"; + } + + identity path-metric-delay-minimum { + base path-metric-type; + description + "The Path Min Delay Metric, measured in units of + microseconds."; + reference + "I-D.ietf-pce-sid-algo: Carrying SR-Algorithm information + in PCE-based Networks, + draft-ietf-pce-sid-algo-14, + Sections 3.5.1 and 3.5.2"; + } + + identity path-metric-residual-bandwidth { + base path-metric-type; + description + "The Path Residual Bandwidth, defined as the minimum Link + Residual Bandwidth all the links along the path. + + The Path Residual Bandwidth can be seen as the path + metric associated with the Maximum residual Bandwidth Path + (MBP) objective function."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity path-metric-optimize-includes { + base path-metric-optimization-type; + description + "A metric that optimizes the number of included resources + specified in a set."; + } + + identity path-metric-optimize-excludes { + base path-metric-optimization-type; + description + "A metric that optimizes to a maximum the number of excluded + resources specified in a set."; + } + + identity path-tiebreaker-type { + description + "Base identity for the path tiebreaker type."; + } + + identity path-tiebreaker-minfill { + base path-tiebreaker-type; + description + "Min-Fill LSP path placement: selects the path with the most + available bandwidth (load balance LSPs over more links)."; + } + + identity path-tiebreaker-maxfill { + base path-tiebreaker-type; + description + "Max-Fill LSP path placement: selects the path with the least + available bandwidth (packing more LSPs over few links)."; + } + + identity path-tiebreaker-random { + base path-tiebreaker-type; + description + "Random LSP path placement."; + } + + identity resource-affinities-type { + description + "Base identity for resource class affinities."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity resource-aff-include-all { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, all of which must be present for a link + to be acceptable."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity resource-aff-include-any { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, any of which must be present for a link + to be acceptable."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity resource-aff-exclude-any { + base resource-affinities-type; + description + "The set of attribute filters associated with a + tunnel, any of which renders a link unacceptable."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 2702: Requirements for Traffic Engineering Over MPLS"; + } + + identity te-optimization-criterion { + description + "Base identity for the TE optimization criteria."; + reference + "RFC 9522: Overview and Principles of Internet Traffic + Engineering"; + } + + identity not-optimized { + base te-optimization-criterion; + description + "Optimization is not applied."; + } + + identity cost { + base te-optimization-criterion; + description + "Optimized on cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity delay { + base te-optimization-criterion; + description + "Optimized on delay."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity path-computation-srlg-type { + description + "Base identity for Shared Risk Link Group (SRLG) path + computation."; + } + + identity srlg-ignore { + base path-computation-srlg-type; + description + "Ignores Shared Risk Link Groups (SRLGs) in the path + computation."; + } + + identity srlg-strict { + base path-computation-srlg-type; + description + "Includes a strict Shared Risk Link Group (SRLG) check in + the path computation."; + } + + identity srlg-preferred { + base path-computation-srlg-type; + description + "Includes a preferred Shared Risk Link Group (SRLG) check in + the path computation."; + } + + identity srlg-weighted { + base path-computation-srlg-type; + description + "Includes a weighted Shared Risk Link Group (SRLG) check in + the path computation."; + } + + identity path-computation-error-reason { + description + "Base identity for path computation error reasons."; + } + + identity path-computation-error-path-not-found { + base path-computation-error-reason; + description + "Path computation has failed because of an unspecified + reason."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP), Section 7.5"; + } + + identity path-computation-error-no-topology { + base path-computation-error-reason; + description + "Path computation has failed because there is no topology + with the provided topology-identifier."; + } + + identity path-computation-error-no-dependent-server { + base path-computation-error-reason; + description + "Path computation has failed because one or more dependent + path computation servers are unavailable. + + The dependent path computation server could be + a Backward-Recursive Path Computation (BRPC) downstream + PCE or a child PCE."; + reference + "RFC 5441: A Backward-Recursive PCE-Based Computation (BRPC) + Procedure to Compute Shortest Constrained + Inter-Domain Traffic Engineering Label Switched + Paths + RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture"; + } + + identity path-computation-error-pce-unavailable { + base path-computation-error-reason; + description + "Path computation has failed because PCE is not available. + + It corresponds to bit 31 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP) + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-inclusion-hop { + base path-computation-error-reason; + description + "Path computation has failed because there is no + node or link provided by one or more inclusion hops."; + } + + identity path-computation-error-destination-unknown-in-domain { + base path-computation-error-reason; + description + "Path computation has failed because the destination node is + unknown in indicated destination domain. + + It corresponds to bit 19 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-resource { + base path-computation-error-reason; + description + "Path computation has failed because there is no + available resource in one or more domains. + + It corresponds to bit 20 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-child-pce-unresponsive { + base path-computation-error-no-dependent-server; + description + "Path computation has failed because child PCE is not + responsive. + + It corresponds to bit 21 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-destination-domain-unknown { + base path-computation-error-reason; + description + "Path computation has failed because the destination domain + was unknown. + + It corresponds to bit 22 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-p2mp { + base path-computation-error-reason; + description + "Path computation has failed because of P2MP reachability + problem. + + It corresponds to bit 24 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 8306: Extensions to the Path Computation Element + Communication Protocol (PCEP) for + Point-to-Multipoint Traffic Engineering Label + Switched Paths + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-gco-migration { + base path-computation-error-reason; + description + "Path computation has failed because of no Global Concurrent + Optimization (GCO) migration path found. + + It corresponds to bit 26 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5557: Path Computation Element Communication Protocol + (PCEP) Requirements and Protocol Extensions in + Support of Global Concurrent Optimization + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-no-gco-solution { + base path-computation-error-reason; + description + "Path computation has failed because of no GCO solution + found. + + It corresponds to bit 25 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5557: Path Computation Element Communication Protocol + (PCEP) Requirements and Protocol Extensions in + Support of Global Concurrent Optimization + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-pks-expansion { + base path-computation-error-reason; + description + "Path computation has failed because of Path-Key Subobject + (PKS) expansion failure. + + It corresponds to bit 27 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5520: Preserving Topology Confidentiality in + Inter-Domain Path Computation Using a + Path-Key-Based Mechanism + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-brpc-chain-unavailable { + base path-computation-error-no-dependent-server; + description + "Path computation has failed because PCE BRPC chain + unavailable. + + It corresponds to bit 28 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5441: A Backward-Recursive PCE-Based Computation (BRPC) + Procedure to Compute Shortest Constrained + Inter-Domain Traffic Engineering Label Switched + Paths + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-source-unknown { + base path-computation-error-reason; + description + "Path computation has failed because source node is + unknown. + + It corresponds to bit 29 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP); + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity path-computation-error-destination-unknown { + base path-computation-error-reason; + description + "Path computation has failed because destination node is + unknown. + + It corresponds to bit 30 of the Flags field of the + NO-PATH-VECTOR TLV."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP); + + https://www.iana.org/assignments/pcep + /pcep.xhtml#no-path-vector-tlv"; + } + + identity protocol-origin-type { + description + "Base identity for protocol origin type."; + } + + identity protocol-origin-api { + base protocol-origin-type; + description + "Protocol origin is via Application Programming Interface + (API)."; + } + + identity protocol-origin-pcep { + base protocol-origin-type; + description + "Protocol origin is Path Computation Engine Protocol + (PCEP)."; + reference + "RFC 5440: Path Computation Element (PCE) Communication + Protocol (PCEP)"; + } + + identity protocol-origin-bgp { + base protocol-origin-type; + description + "Protocol origin is Border Gateway Protocol (BGP)."; + reference + "RFC 9012: The BGP Tunnel Encapsulation Attribute"; + } + + identity svec-objective-function-type { + description + "Base identity for SVEC objective function type."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity svec-of-minimize-agg-bandwidth-consumption { + base svec-objective-function-type; + description + "Objective function for minimizing aggregate bandwidth + consumption (MBC)."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-of-minimize-load-most-loaded-link { + base svec-objective-function-type; + description + "Objective function for minimizing the load on the link that + is carrying the highest load (MLL)."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-of-minimize-cost-path-set { + base svec-objective-function-type; + description + "Objective function for minimizing the cost on a path set + (MCC)."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-of-minimize-common-transit-domain { + base svec-objective-function-type; + description + "Objective function for minimizing the number of common + transit domains (MCTD)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-of-minimize-shared-link { + base svec-objective-function-type; + description + "Objective function for minimizing the number of shared + links (MSL)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-of-minimize-shared-srlg { + base svec-objective-function-type; + description + "Objective function for minimizing the number of shared + Shared Risk Link Groups (SRLG) (MSS)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-of-minimize-shared-nodes { + base svec-objective-function-type; + description + "Objective function for minimizing the number of shared + nodes (MSN)."; + reference + "RFC 8685: Path Computation Element Communication Protocol + (PCEP) Extensions for the Hierarchical Path + Computation Element (H-PCE) Architecture."; + } + + identity svec-metric-type { + description + "Base identity for SVEC metric type."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol (PCEP)"; + } + + identity svec-metric-cumulative-te { + base svec-metric-type; + description + "Cumulative TE cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-cumulative-igp { + base svec-metric-type; + description + "Cumulative IGP cost."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-cumulative-hop { + base svec-metric-type; + description + "Cumulative Hop path metric."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-aggregate-bandwidth-consumption { + base svec-metric-type; + description + "Aggregate bandwidth consumption."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + identity svec-metric-load-of-the-most-loaded-link { + base svec-metric-type; + description + "Load of the most loaded link."; + reference + "RFC 5541: Encoding of Objective Functions in the Path + Computation Element Communication Protocol + (PCEP)"; + } + + /* + * Typedefs + */ + + typedef admin-group { + type yang:hex-string { + /* 01:02:03:04 */ + length "1..11"; + } + description + "Administrative group / resource class / color representation + in 'hex-string' type. + + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. + + Leading zero bytes in the configured value may be omitted + for brevity."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering + RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + typedef admin-groups { + type union { + type admin-group; + type extended-admin-group; + } + description + "Derived types for TE administrative groups."; + } + + typedef extended-admin-group { + type yang:hex-string; + description + "Extended administrative group / resource class / color + representation in 'hex-string' type. + + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. + + Leading zero bytes in the configured value may be omitted + for brevity."; + reference + "RFC 7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)"; + } + + typedef path-attribute-flags { + type union { + type identityref { + base session-attributes-flags; + } + type identityref { + base lsp-attributes-flags; + } + } + description + "Path attributes flags type."; + } + + typedef performance-metrics-normality { + type enumeration { + enum unknown { + value 0; + description + "Unknown."; + } + enum normal { + value 1; + description + "Normal. + + Indicates that the anomalous bit is not set."; + } + enum abnormal { + value 2; + description + "Abnormal. + + Indicates that the anomalous bit is set."; + } + } + description + "Indicates whether a performance metric is normal (anomalous + bit not set), abnormal (anomalous bit set), or unknown."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; + } + + typedef srlg { + type uint32; + description + "Shared Risk Link Group (SRLG) type."; + reference + "RFC 4203: OSPF Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS) + RFC 5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + + typedef te-common-status { + type enumeration { + enum up { + description + "Enabled."; + } + enum down { + description + "Disabled."; + } + enum testing { + description + "In some test mode."; + } + enum preparing-maintenance { + description + "The resource is disabled in the control plane to prepare + for a graceful shutdown for maintenance purposes."; + reference + "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS + Traffic Engineering Networks"; + } + enum maintenance { + description + "The resource is disabled in the data plane for maintenance + purposes."; + } + enum unknown { + description + "Status is unknown."; + } + } + description + "Defines a type representing the common states of a TE + resource."; + } + + typedef te-bandwidth { + type string { + pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' + + '[pP](\+)?(12[0-7]|' + + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' + + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' + + '[pP](\+)?(12[0-7]|' + + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; + } + description + "This is the generic bandwidth type. + + It is a string containing a list of numbers separated by + commas, where each of these numbers can be non-negative + decimal, hex integer, or hex float: + + (dec | hex | float)[*(','(dec | hex | float))] + + For the packet-switching type, the string encoding may follow + the type 'bandwidth-ieee-float32' as defined in RFC 8294 + (e.g., 0x1p10), where the units are in bytes per second. + + Canonically, the string is represented as all lowercase and in + hex, where the prefix '0x' precedes the hex number."; + reference + "RFC 8294: Common YANG Data Types for the Routing Area + ITU-T G.709: Interfaces for the optical transport network - + Edition 6.0 (06/2020)"; + } + + typedef te-ds-class { + type uint8 { + range "0..7"; + } + description + "The Differentiated Services Class-Type of traffic."; + reference + "RFC 4124: Protocol Extensions for Support of Diffserv-aware + MPLS Traffic Engineering, Section 4.3.1"; + } + + typedef te-global-id { + type uint32; + description + "An identifier to uniquely identify an operator, which can be + either a provider or a client. + + The definition of this type is taken from RFCs 6370 and 5003. + + This attribute type is used solely to provide a globally + unique context for TE topologies."; + reference + "RFC 5003: Attachment Individual Identifier (AII) Types for + Aggregation + RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers"; + } + + typedef te-hop-type { + type enumeration { + enum loose { + description + "A loose hop in an explicit path."; + } + enum strict { + description + "A strict hop in an explicit path."; + } + } + description + "Enumerated type for specifying loose or strict paths."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3.3"; + } + + typedef te-link-access-type { + type enumeration { + enum point-to-point { + description + "The link is point-to-point."; + } + enum multi-access { + description + "The link is multi-access, including broadcast and NBMA."; + } + } + description + "Defines a type representing the access type of a TE link."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + + typedef te-label-direction { + type enumeration { + enum forward { + description + "Label allocated for the forward LSP direction."; + } + enum reverse { + description + "Label allocated for the reverse LSP direction."; + } + } + description + "Enumerated type for specifying the forward or reverse + label."; + } + + typedef te-link-direction { + type enumeration { + enum incoming { + description + "The explicit route represents an incoming link on + a node."; + } + enum outgoing { + description + "The explicit route represents an outgoing link on + a node."; + } + } + description + "Enumerated type for specifying the direction of a link on + a node."; + } + + typedef te-metric { + type uint32; + description + "Traffic Engineering (TE) metric."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2, Section 2.5.5 + RFC 5305: IS-IS Extensions for Traffic Engineering, + Section 3.7"; + } + + typedef te-node-id { + type union { + type yang:dotted-quad; + type inet:ipv6-address-no-zone; + } + description + "A type representing the identifier for a node in a TE + topology. + + The identifier is represented either as 4 octets in + dotted-quad notation, or as 16 octets in full, mixed, + shortened, or shortened-mixed IPv6 address notation. + + This attribute MAY be mapped to the Router Address TLV + described in Section 2.4.1 of RFC 3630, the TE Router ID + described in Section 3 of RFC 6827, the Traffic Engineering + Router ID TLV described in Section 4.3 of RFC 5305, the TE + Router ID TLV described in Section 3.2.1 of RFC 6119, or the + IPv6 TE Router ID TLV described in Section 4.1 of RFC 6119. + + The reachability of such a TE node MAY be achieved by a + mechanism such as that described in Section 6.2 of RFC 6827."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2, Section 2.4.1 + RFC 5305: IS-IS Extensions for Traffic Engineering, + Section 4.3 + RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1 + RFC 6827: Automatically Switched Optical Network (ASON) + Routing for OSPFv2 Protocols, Section 3"; + } + + typedef te-oper-status { + type te-common-status; + description + "Defines a type representing the operational status of + a TE resource."; + } + + typedef te-admin-status { + type te-common-status; + description + "Defines a type representing the administrative status of + a TE resource."; + } + + typedef te-path-disjointness { + type bits { + bit node { + position 0; + description + "Node disjoint."; + } + bit link { + position 1; + description + "Link disjoint."; + } + bit srlg { + position 2; + description + "Shared Risk Link Group (SRLG) disjoint."; + } + } + description + "Type of the resource disjointness for a TE tunnel path."; + reference + "RFC 4872: RSVP-TE Extensions in Support of End-to-End + Generalized Multi-Protocol Label Switching (GMPLS) + Recovery"; + } + + typedef te-recovery-status { + type enumeration { + enum normal { + description + "Both the recovery span and the working span are fully + allocated and active, data traffic is being + transported over (or selected from) the working + span, and no trigger events are reported."; + } + enum recovery-started { + description + "The recovery action has been started but not completed."; + } + enum recovery-succeeded { + description + "The recovery action has succeeded. + + The working span has reported a failure/degrade condition, + and the user traffic is being transported (or selected) + on the recovery span."; + } + enum recovery-failed { + description + "The recovery action has failed."; + } + enum reversion-started { + description + "The reversion has started."; + } + enum reversion-succeeded { + description + "The reversion action has succeeded."; + } + enum reversion-failed { + description + "The reversion has failed."; + } + enum recovery-unavailable { + description + "The recovery is unavailable, as a result of either an + operator's lockout command or a failure condition + detected on the recovery span."; + } + enum recovery-admin { + description + "The operator has issued a command to switch the user + traffic to the recovery span."; + } + enum wait-to-restore { + description + "The recovery domain is recovering from a failure/degrade + condition on the working span that is being controlled by + the Wait-to-Restore (WTR) timer."; + } + } + description + "Defines the status of a recovery action."; + reference + "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection + RFC 4427: Recovery (Protection and Restoration) Terminology + for Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + + typedef te-template-name { + type string { + pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; + } + description + "A type for the name of a TE node template or TE link + template."; + } + + typedef te-topology-event-type { + type enumeration { + enum add { + value 0; + description + "A TE node or TE link has been added."; + } + enum remove { + value 1; + description + "A TE node or TE link has been removed."; + } + enum update { + value 2; + description + "A TE node or TE link has been updated."; + } + } + description + "TE event type for notifications."; + } + + typedef te-topology-id { + type union { + type string { + length "0"; + // empty string + } + type string { + pattern '([a-zA-Z0-9\-_.]+:)*' + + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; + } + } + description + "An identifier for a topology. + + It is optional to have one or more prefixes at the beginning, + separated by colons. + + The prefixes can be 'network-types' as defined in the + 'ietf-network' module in RFC 8345, to help the user better + understand the topology before further inquiry is made."; + reference + "RFC 8345: A YANG Data Model for Network Topologies"; + } + + typedef te-tp-id { + type union { + type uint32; + // Unnumbered + type inet:ip-address; + // IPv4 or IPv6 address + } + description + "An identifier for a TE link endpoint on a node. + + This attribute is mapped to a local or remote link identifier + as defined in RFCs 3630 and 5305."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2 + RFC 5305: IS-IS Extensions for Traffic Engineering"; + } + + typedef path-type { + type enumeration { + enum primary-path { + description + "Indicates that the TE path is a primary path."; + } + enum secondary-path { + description + "Indicates that the TE path is a secondary path."; + } + enum primary-reverse-path { + description + "Indicates that the TE path is a primary reverse path."; + } + enum secondary-reverse-path { + description + "Indicates that the TE path is a secondary reverse path."; + } + } + description + "The type of TE path, indicating whether a path is a primary, + or a reverse primary, or a secondary, or a reverse secondary + path."; + } + + /* + * TE bandwidth groupings + */ + + grouping te-bandwidth { + description + "This grouping defines the generic TE bandwidth. + + For some known data-plane technologies, specific modeling + structures are specified. + + The string-encoded 'te-bandwidth' type is used for + unspecified technologies. + + The modeling structure can be augmented later for other + technologies."; + container te-bandwidth { + description + "Container that specifies TE bandwidth. + + The choices can be augmented for specific data-plane + technologies."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type te-bandwidth; + description + "Bandwidth specified in a generic format."; + } + } + } + } + } + + /* + * TE label groupings + */ + + grouping te-label { + description + "This grouping defines the generic TE label. + + The modeling structure can be augmented for each technology. + + For unspecified technologies, 'rt-types:generalized-label' + is used."; + container te-label { + description + "Container that specifies the TE label. + + The choices can be augmented for specific data-plane + technologies."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type rt-types:generalized-label; + description + "TE label specified in a generic format."; + } + } + } + leaf direction { + type te-label-direction; + default "forward"; + description + "Label direction."; + } + } + } + + grouping te-topology-identifier { + description + "Augmentation for a TE topology."; + container te-topology-identifier { + description + "TE topology identifier container."; + leaf provider-id { + type te-global-id; + default "0"; + description + "An identifier to uniquely identify a provider. + If omitted, it assumes that the topology provider ID + value = 0 (the default)."; + } + leaf client-id { + type te-global-id; + default "0"; + description + "An identifier to uniquely identify a client. + If omitted, it assumes that the topology client ID + value = 0 (the default)."; + } + leaf topology-id { + type te-topology-id; + default ""; + description + "When the datastore contains several topologies, + 'topology-id' distinguishes between them. + + If omitted, the default (empty) string for this leaf is + assumed."; + } + } + } + + /* + * TE performance metrics groupings + */ + + grouping performance-metrics-one-way-delay-loss { + description + "Performance Metrics (PM) information in real time that can + be applicable to links or connections. + + PM defined in this grouping are applicable to generic TE PM + as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf one-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "One-way delay or latency."; + } + leaf one-way-delay-normality { + type te-types:performance-metrics-normality; + description + "One-way delay normality."; + } + } + + grouping performance-metrics-two-way-delay-loss { + description + "Performance Metrics (PM) information in real time that can be + applicable to links or connections. + + PM defined in this grouping are applicable to generic TE PM + as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf two-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + description + "Two-way delay or latency."; + } + leaf two-way-delay-normality { + type te-types:performance-metrics-normality; + description + "Two-way delay normality."; + } + } + + grouping performance-metrics-one-way-bandwidth { + description + "Performance Metrics (PM) information in real time that can be + applicable to links. + + PM defined in this grouping are applicable to generic TE PM + as well as packet TE PM."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf one-way-residual-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Residual bandwidth that subtracts tunnel reservations from + Maximum Bandwidth (or link capacity) (RFC 3630) and + provides an aggregated remainder across QoS classes."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + leaf one-way-residual-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Residual bandwidth normality."; + } + leaf one-way-available-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Available bandwidth that is defined to be residual + bandwidth minus the measured bandwidth used for the + actual forwarding of non-RSVP-TE LSP packets. + + For a bundled link, available bandwidth is defined to be + the sum of the component link available bandwidths."; + } + leaf one-way-available-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Available bandwidth normality."; + } + leaf one-way-utilized-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Bandwidth utilization that represents the actual + utilization of the link (i.e., as measured in the router). + For a bundled link, bandwidth utilization is defined to + be the sum of the component link bandwidth utilizations."; + } + leaf one-way-utilized-bandwidth-normality { + type te-types:performance-metrics-normality; + default "normal"; + description + "Bandwidth utilization normality."; + } + } + + grouping one-way-performance-metrics { + description + "One-way Performance Metrics (PM) throttle grouping."; + leaf one-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "One-way delay or latency."; + } + leaf one-way-residual-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Residual bandwidth that subtracts tunnel reservations from + Maximum Bandwidth (or link capacity) (RFC 3630) and + provides an aggregated remainder across QoS classes."; + reference + "RFC 3630: Traffic Engineering (TE) Extensions to OSPF + Version 2"; + } + leaf one-way-available-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Available bandwidth that is defined to be residual + bandwidth minus the measured bandwidth used for the + actual forwarding of non-RSVP-TE LSP packets. + + For a bundled link, available bandwidth is defined to be + the sum of the component link available bandwidths."; + } + leaf one-way-utilized-bandwidth { + type rt-types:bandwidth-ieee-float32; + units "bytes per second"; + default "0x0p0"; + description + "Bandwidth utilization that represents the actual + utilization of the link (i.e., as measured in the router). + For a bundled link, bandwidth utilization is defined to + be the sum of the component link bandwidth utilizations."; + } + } + + grouping two-way-performance-metrics { + description + "Two-way Performance Metrics (PM) throttle grouping."; + leaf two-way-delay { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Two-way delay or latency."; + } + } + + grouping performance-metrics-thresholds { + description + "Grouping for configurable thresholds for measured + attributes."; + uses one-way-performance-metrics; + uses two-way-performance-metrics; + } + + grouping performance-metrics-attributes { + description + "Contains Performance Metrics (PM) attributes."; + container performance-metrics-one-way { + description + "One-way link performance information in real time."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + uses performance-metrics-one-way-delay-loss; + uses performance-metrics-one-way-bandwidth; + } + container performance-metrics-two-way { + description + "Two-way link performance information in real time."; + reference + "RFC 6374: Packet Loss and Delay Measurement for MPLS + Networks"; + uses performance-metrics-two-way-delay-loss; + } + } + + grouping performance-metrics-throttle-container { + description + "Controls Performance Metrics (PM) throttling."; + container throttle { + must 'suppression-interval >= measure-interval' { + error-message "'suppression-interval' cannot be less than " + + "'measure-interval'."; + description + "Constraint on 'suppression-interval' and + 'measure-interval'."; + } + description + "Link performance information in real time."; + reference + "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions + RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions + RFC 7823: Performance-Based Path Selection for Explicitly + Routed Label Switched Paths (LSPs) Using TE Metric + Extensions"; + leaf one-way-delay-offset { + type uint32 { + range "0..16777215"; + } + units "microseconds"; + default "0"; + description + "Offset value to be added to the measured delay value."; + } + leaf measure-interval { + type uint32; + units "seconds"; + default "30"; + description + "Interval to measure the extended metric values."; + } + leaf advertisement-interval { + type uint32; + units "seconds"; + default "0"; + description + "Interval to advertise the extended metric values."; + } + leaf suppression-interval { + type uint32 { + range "1..max"; + } + units "seconds"; + default "120"; + description + "Interval to suppress advertisement of the extended metric + values."; + reference + "RFC 8570: IS-IS Traffic Engineering (TE) Metric + Extensions, Section 6"; + } + container threshold-out { + description + "If the measured parameter falls outside an upper bound + for all but the minimum-delay metric (or a lower bound + for the minimum-delay metric only) and the advertised + value is not already outside that bound, an 'anomalous' + announcement (anomalous bit set) will be triggered."; + uses performance-metrics-thresholds; + } + container threshold-in { + description + "If the measured parameter falls inside an upper bound + for all but the minimum-delay metric (or a lower bound + for the minimum-delay metric only) and the advertised + value is not already inside that bound, a 'normal' + announcement (anomalous bit cleared) will be triggered."; + uses performance-metrics-thresholds; + } + container threshold-accelerated-advertisement { + description + "When the difference between the last advertised value and + the current measured value exceeds this threshold, an + 'anomalous' announcement (anomalous bit set) will be + triggered."; + uses performance-metrics-thresholds; + } + } + } + + /* + * TE tunnel generic groupings + */ + + grouping explicit-route-hop { + description + "The explicit route entry grouping."; + choice type { + description + "The explicit route entry type."; + case numbered-node-hop { + container numbered-node-hop { + must 'node-id-uri or node-id' { + description + "At least one node identifier needs to be present."; + } + description + "Numbered node route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + } + } + case numbered-link-hop { + container numbered-link-hop { + description + "Numbered link explicit route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "TE Link Termination Point (LTP) identifier."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + leaf direction { + type te-link-direction; + default "outgoing"; + description + "Link route object direction."; + } + } + } + case unnumbered-link-hop { + container unnumbered-link-hop { + must '(link-tp-id-uri or link-tp-id) and ' + + '(node-id-uri or node-id)' { + description + "At least one node identifier and at least one Link + Termination Point (LTP) identifier need to be + present."; + } + description + "Unnumbered link explicit route hop."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, + Section 4.3, EXPLICIT_ROUTE in RSVP-TE + RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf link-tp-id-uri { + type nt:tp-id; + description + "Link Termination Point (LTP) identifier."; + } + leaf link-tp-id { + type te-tp-id; + description + "TE LTP identifier. + + The combination of the TE link ID and the TE node ID + is used to identify an unnumbered TE link."; + } + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + leaf direction { + type te-link-direction; + default "outgoing"; + description + "Link route object direction."; + } + } + } + case as-number { + container as-number-hop { + description + "AS explicit route hop."; + leaf as-number { + type inet:as-number; + mandatory true; + description + "The Autonomous System (AS) number."; + } + leaf hop-type { + type te-hop-type; + default "strict"; + description + "Strict or loose hop."; + } + } + } + case label { + description + "The label explicit route hop type."; + container label-hop { + description + "Label hop type."; + uses te-label; + } + } + } + } + + grouping explicit-route-hop-with-srlg { + description + "Augments the explicit route entry grouping with Shared Risk + Link Group (SRLG) hop type."; + uses explicit-route-hop { + augment "type" { + description + "Augmentation for a generic explicit route for Shared + Risk Link Group (SRLG) inclusion or exclusion."; + case srlg { + description + "An Shared Risk Link Group (SRLG) value to be + included or excluded."; + container srlg { + description + "Shared Risk Link Group (SRLG) container."; + leaf srlg { + type uint32; + description + "Shared Risk Link Group (SRLG) value."; + } + } + } + } + } + } + + grouping record-route-state { + description + "The Record Route grouping."; + leaf index { + type uint32; + description + "Record Route hop index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without relying + on key values."; + } + choice type { + description + "The Record Route entry type."; + case numbered-node-hop { + description + "Numbered node route hop."; + container numbered-node-hop { + must 'node-id-uri or node-id' { + description + "At least one node identifier need to be present."; + } + description + "Numbered node route hop container."; + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + case numbered-link-hop { + description + "Numbered link route hop."; + container numbered-link-hop { + description + "Numbered link route hop container."; + leaf link-tp-id { + type te-tp-id; + mandatory true; + description + "Numbered TE LTP identifier."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + case unnumbered-link-hop { + description + "Unnumbered link route hop."; + container unnumbered-link-hop { + must '(link-tp-id-uri or link-tp-id) and ' + + '(node-id-uri or node-id)' { + description + "At least one node identifier and at least one Link + Termination Point (LTP) identifier need to be + present."; + } + description + "Unnumbered link Record Route hop."; + reference + "RFC 3477: Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering + (RSVP-TE)"; + leaf link-tp-id-uri { + type nt:tp-id; + description + "Link Termination Point (LTP) identifier."; + } + leaf link-tp-id { + type te-tp-id; + description + "TE LTP identifier. + + The combination of the TE link ID and the TE node ID + is used to identify an unnumbered TE link."; + } + leaf node-id-uri { + type nw:node-id; + description + "The identifier of a node in the topology."; + } + leaf node-id { + type te-node-id; + description + "The identifier of a node in the TE topology."; + } + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + case label { + description + "The label Record Route entry types."; + container label-hop { + description + "Label route hop type."; + uses te-label; + leaf-list flags { + type path-attribute-flags; + description + "Path attributes flags."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels + RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP + Tunnels + RFC 4561: Definition of a Record Route Object (RRO) + Node-Id Sub-Object"; + } + } + } + } + } + + grouping label-restriction-info { + description + "Label set item information."; + leaf restriction { + type enumeration { + enum inclusive { + description + "The label or label range is inclusive."; + } + enum exclusive { + description + "The label or label range is exclusive."; + } + } + default "inclusive"; + description + "Indicates whether the list item is inclusive or exclusive."; + } + leaf index { + type uint32; + description + "The index of the label restriction list entry."; + } + container label-start { + must "(not(../label-end/te-label/direction) and" + + " not(te-label/direction))" + + " or " + + "(../label-end/te-label/direction = te-label/direction)" + + " or " + + "(not(te-label/direction) and" + + " (../label-end/te-label/direction = 'forward'))" + + " or " + + "(not(../label-end/te-label/direction) and" + + " (te-label/direction = 'forward'))" { + error-message "'label-start' and 'label-end' must have the " + + "same direction."; + } + description + "This is the starting label if a label range is specified. + This is the label value if a single label is specified, + in which case the 'label-end' attribute is not set."; + uses te-label; + } + container label-end { + must "(not(../label-start/te-label/direction) and" + + " not(te-label/direction))" + + " or " + + "(../label-start/te-label/direction = te-label/direction)" + + " or " + + "(not(te-label/direction) and" + + " (../label-start/te-label/direction = 'forward'))" + + " or " + + "(not(../label-start/te-label/direction) and" + + " (te-label/direction = 'forward'))" { + error-message "'label-start' and 'label-end' must have the " + + "same direction."; + } + description + "This is the ending label if a label range is specified. + This attribute is not set if a single label is specified."; + uses te-label; + } + container label-step { + description + "The step increment between labels in the label range. + + The label start/end values MUST be consistent with the sign + of label step. + + For example: + 'label-start' < 'label-end' enforces 'label-step' > 0 + 'label-start' > 'label-end' enforces 'label-step' < 0."; + choice technology { + default "generic"; + description + "Data-plane technology type."; + case generic { + leaf generic { + type int32; + default "1"; + description + "Label range step."; + } + } + } + } + leaf range-bitmap { + type yang:hex-string; + description + "When there are gaps between 'label-start' and 'label-end', + this attribute is used to specify the positions + of the used labels. + + This is represented in big endian as 'hex-string'. + + In case the restriction is 'inclusive', the bit-position is + set if the corresponding mapped label is available. + In this case, if the range-bitmap is not present, all the + labels in the range are available. + + In case the restriction is 'exclusive', the bit-position is + set if the corresponding mapped label is not available. + In this case, if the range-bitmap is not present, all the + labels in the range are not available. + + The most significant byte in the hex-string is the farthest + to the left in the byte sequence. + + Leading zero bytes in the configured value may be omitted + for brevity. + + Each bit position in the 'range-bitmap' 'hex-string' maps + to a label in the range derived from 'label-start'. + + For example, assuming that 'label-start' = 16000 and + 'range-bitmap' = 0x01000001, then: + - bit position (0) is set, and the corresponding mapped + label from the range is 16000 + (0 * 'label-step') or + 16000 for default 'label-step' = 1. + - bit position (24) is set, and the corresponding mapped + label from the range is 16000 + (24 * 'label-step') or + 16024 for default 'label-step' = 1."; + } + } + + grouping label-set-info { + description + "Grouping for the list of label restrictions specifying what + labels may or may not be used."; + container label-restrictions { + description + "The label restrictions container."; + list label-restriction { + key "index"; + description + "The absence of the label restrictions container implies + that all labels are acceptable; otherwise, only restricted + labels are available."; + reference + "RFC 7579: General Network Element Constraint Encoding + for GMPLS-Controlled Networks"; + uses label-restriction-info; + } + } + } + + grouping optimization-metric-entry { + description + "Optimization metrics configuration grouping."; + leaf metric-type { + type identityref { + base path-metric-optimization-type; + } + description + "Identifies the 'metric-type' that the path computation + process uses for optimization."; + } + leaf weight { + type uint8; + default "1"; + description + "TE path metric normalization weight."; + } + container explicit-route-exclude-objects { + when "../metric-type = " + + "'te-types:path-metric-optimize-excludes'"; + description + "Container for the 'exclude route' object list."; + uses path-route-exclude-objects; + } + container explicit-route-include-objects { + when "../metric-type = " + + "'te-types:path-metric-optimize-includes'"; + description + "Container for the 'include route' object list."; + uses path-route-include-objects; + } + } + + grouping common-constraints { + description + "Common constraints grouping that can be set on + a constraint set or directly on the tunnel."; + uses te-bandwidth { + description + "A requested bandwidth to use for path computation."; + } + leaf link-protection { + type identityref { + base link-protection-type; + } + default "te-types:link-protection-unprotected"; + description + "Link protection type required for the links included + in the computed path."; + reference + "RFC 4202: Routing Extensions in Support of + Generalized Multi-Protocol Label Switching + (GMPLS)"; + } + leaf setup-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "TE LSP requested setup priority."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf hold-priority { + type uint8 { + range "0..7"; + } + default "7"; + description + "TE LSP requested hold priority."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; + } + leaf signaling-type { + type identityref { + base path-signaling-type; + } + default "te-types:path-setup-rsvp"; + description + "TE tunnel path signaling type."; + } + } + + grouping tunnel-constraints { + description + "Tunnel constraints grouping that can be set on + a constraint set or directly on the tunnel."; + leaf network-id { + type nw:network-id; + description + "The network topology identifier."; + } + uses te-topology-identifier; + uses common-constraints; + } + + grouping path-constraints-route-objects { + description + "List of route entries to be included or excluded when + performing the path computation."; + container explicit-route-objects { + description + "Container for the explicit route object lists."; + list route-object-exclude-always { + key "index"; + ordered-by user; + description + "List of route objects to always exclude from the path + computation."; + leaf index { + type uint32; + description + "Explicit Route Object index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop; + } + list route-object-include-exclude { + key "index"; + ordered-by user; + description + "List of route objects to include or exclude in the path + computation."; + leaf explicit-route-usage { + type identityref { + base route-usage-type; + } + default "te-types:route-include-object"; + description + "Indicates whether to include or exclude the + route object. + + The default is to include it."; + } + leaf index { + type uint32; + description + "Route object include-exclude index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop-with-srlg; + } + } + } + + grouping path-route-include-objects { + description + "List of route objects to be included when performing + the path computation."; + list route-object-include-object { + key "index"; + ordered-by user; + description + "List of Explicit Route Objects to be included in the + path computation."; + leaf index { + type uint32; + description + "Route object entry index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop; + } + } + + grouping path-route-exclude-objects { + description + "List of route objects to be excluded when performing + the path computation."; + list route-object-exclude-object { + key "index"; + ordered-by user; + description + "List of Explicit Route Objects to be excluded in the + path computation."; + leaf index { + type uint32; + description + "Route object entry index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop-with-srlg; + } + } + + grouping generic-path-metric-bounds { + description + "TE path metric bounds grouping."; + container path-metric-bounds { + description + "Top-level container for the list of path metric bounds."; + list path-metric-bound { + key "metric-type"; + description + "List of path metric bounds, which can apply to link and + path metrics. + + TE paths which have at least one path metric which + exceeds the specified bounds MUST NOT be selected. + + TE paths that traverse TE links which have at least one + link metric which exceeds the specified bounds MUST NOT + be selected."; + leaf metric-type { + type identityref { + base link-path-metric-type; + } + description + "Identifies an entry in the list of 'metric-type' items + bound for the TE path."; + } + leaf upper-bound { + type uint64; + default "0"; + description + "Upper bound on the specified 'metric-type'. + + A zero indicates an unbounded upper limit for the + specified 'metric-type'. + + The unit of is interpreted in the context of the + 'metric-type' identity."; + } + } + } + } + + grouping generic-path-optimization { + description + "TE generic path optimization grouping."; + container optimizations { + description + "The objective function container that includes + attributes to impose when computing a TE path."; + choice algorithm { + description + "Optimizations algorithm."; + case metric { + if-feature "path-optimization-metric"; + /* Optimize by metric */ + list optimization-metric { + key "metric-type"; + description + "TE path metric type."; + uses optimization-metric-entry; + } + /* Tiebreakers */ + container tiebreakers { + status deprecated; + description + "Container for the list of tiebreakers. + + This container has been deprecated by the tiebreaker + leaf."; + list tiebreaker { + key "tiebreaker-type"; + status deprecated; + description + "The list of tiebreaker criteria to apply on an + equally favored set of paths, in order to pick + the best."; + leaf tiebreaker-type { + type identityref { + base path-metric-type; + } + status deprecated; + description + "Identifies an entry in the list of tiebreakers."; + } + } + } + } + case objective-function { + if-feature "path-optimization-objective-function"; + /* Objective functions */ + container objective-function { + description + "The objective function container that includes + attributes to impose when computing a TE path."; + leaf objective-function-type { + type identityref { + base objective-function-type; + } + default "te-types:of-minimize-cost-path"; + description + "Objective function entry."; + } + } + } + } + } + leaf tiebreaker { + type identityref { + base path-tiebreaker-type; + } + default "te-types:path-tiebreaker-random"; + description + "The tiebreaker criteria to apply on an equally favored set + of paths, in order to pick the best."; + } + } + + grouping generic-path-affinities { + description + "Path affinities grouping."; + container path-affinities-values { + description + "Path affinities represented as values."; + list path-affinities-value { + key "usage"; + description + "List of named affinity constraints."; + leaf usage { + type identityref { + base resource-affinities-type; + } + description + "Identifies an entry in the list of value affinity + constraints."; + } + leaf value { + type admin-groups; + default ""; + description + "The affinity value. + + The default is empty."; + } + } + } + container path-affinity-names { + description + "Path affinities represented as names."; + list path-affinity-name { + key "usage"; + description + "List of named affinity constraints."; + leaf usage { + type identityref { + base resource-affinities-type; + } + description + "Identifies an entry in the list of named affinity + constraints."; + } + list affinity-name { + key "name"; + description + "List of named affinities."; + leaf name { + type string; + description + "Identifies a named affinity entry."; + } + } + } + } + } + + grouping generic-path-srlgs { + description + "Path Shared Risk Link Group (SRLG) grouping."; + container path-srlgs-lists { + description + "Path Shared Risk Link Group (SRLG) properties container."; + list path-srlgs-list { + key "usage"; + description + "List of Shared Risk Link Group (SRLG) values to be + included or excluded."; + leaf usage { + type identityref { + base route-usage-type; + } + description + "Identifies an entry in a list of Shared Risk Link Groups + (SRLGs) to either include or exclude."; + } + leaf-list values { + type srlg; + description + "List of Shared Risk Link Group (SRLG) values."; + } + } + } + container path-srlgs-names { + description + "Container for the list of named Shared Risk Link Groups + (SRLGs)."; + list path-srlgs-name { + key "usage"; + description + "List of named Shared Risk Link Groups (SRLGs) to be + included or excluded."; + leaf usage { + type identityref { + base route-usage-type; + } + description + "Identifies an entry in a list of named Shared Risk Link + Groups (SRLGs) to either include or exclude."; + } + leaf-list names { + type string; + description + "List of named Shared Risk Link Groups (SRLGs)."; + } + } + } + } + + grouping generic-path-disjointness { + description + "Path disjointness grouping."; + leaf disjointness { + type te-path-disjointness; + description + "The type of resource disjointness. + When configured for a primary path, the disjointness level + applies to all secondary LSPs. + + When configured for a secondary path, the disjointness + level overrides the level configured for the primary path."; + } + } + + grouping common-path-constraints-attributes { + description + "Common path constraints configuration grouping."; + uses common-constraints; + uses generic-path-metric-bounds; + uses generic-path-affinities; + uses generic-path-srlgs; + } + + grouping generic-path-constraints { + description + "Global named path constraints configuration grouping."; + container path-constraints { + description + "TE named path constraints container."; + uses common-path-constraints-attributes; + uses generic-path-disjointness; + } + } + + grouping generic-path-properties { + description + "TE generic path properties grouping."; + container path-properties { + config false; + description + "The TE path properties."; + list path-metric { + key "metric-type"; + description + "TE path metric type."; + leaf metric-type { + type identityref { + base path-metric-type; + } + description + "TE path metric type."; + } + leaf accumulative-value { + type uint64; + description + "TE path metric accumulative value."; + } + } + uses generic-path-affinities; + uses generic-path-srlgs; + container path-route-objects { + description + "Container for the list of route objects either returned by + the computation engine or actually used by an LSP."; + list path-route-object { + key "index"; + ordered-by user; + description + "List of route objects either returned by the computation + engine or actually used by an LSP."; + leaf index { + type uint32; + description + "Route object entry index. + + The index is used to identify an entry in the list. + + The order of entries is defined by the user without + relying on key values."; + } + uses explicit-route-hop; + } + } + } + } + + grouping encoding-and-switching-type { + description + "Common grouping to define the LSP encoding and + switching types"; + leaf encoding { + type identityref { + base te-types:lsp-encoding-types; + } + description + "LSP encoding type."; + reference + "RFC 3945: Generalized Multi-Protocol Label Switching (GMPLS) + Architecture"; + } + leaf switching-type { + type identityref { + base te-types:switching-capabilities; + } + description + "LSP switching type."; + reference + "RFC 3945: Generalized Multi-Protocol Label Switching (GMPLS) + Architecture"; + } + } + + grouping te-generic-node-id { + description + "A reusable grouping for a TE generic node identifier."; + leaf id { + type union { + type te-node-id; + type inet:ip-address; + type nw:node-id; + } + description + "The identifier of the node. + + It can be represented as IP address or dotted quad address + or as an URI. + + The type data node disambiguates the union type."; + } + leaf type { + type enumeration { + enum ip { + description + "IP address representation of the node identifier."; + } + enum te-id { + description + "TE identifier of the node"; + } + enum node-id { + description + "URI representation of the node identifier."; + } + } + description + "Type of node identifier representation."; + } + } +} diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang b/src/nbi/service/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang new file mode 100644 index 000000000..f0157bcc8 --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang @@ -0,0 +1,325 @@ + module ietf-trans-client-service { + /* TODO: FIXME */ + yang-version 1.1; + + namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-service"; + prefix "clntsvc"; + + import ietf-network { + prefix "nw"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-network-topology { + prefix "nt"; + reference "RFC8345 - A YANG Data Model for Network Topologies"; + } + + import ietf-te-types { + prefix "te-types"; + reference "RFC 8776 - Traffic Engineering Common YANG Types"; + } + + import ietf-layer1-types { + prefix "layer1-types"; + reference "RFC ZZZZ - A YANG Data Model for Layer 1 Types"; + } + + import ietf-yang-types { + prefix "yang"; + reference "RFC 6991 - Common YANG Data Types"; + } + + import ietf-trans-client-svc-types { + prefix "clntsvc-types"; + reference "RFC XXXX - A YANG Data Model for + Transport Network Client Signals"; + } + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Italo Busi (italo.busi@huawei.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (Xufeng_Liu@jabil.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com); + "; + + description + "This module defines a YANG data model for describing + transport network client services. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2021 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + revision 2023-10-23 { + description + "version -04 as a WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + /* + * Groupings + */ + grouping client-svc-access-parameters { + description + "Transport network client signals access parameters"; + + leaf access-node-id { + type te-types:te-node-id; + description + "The identifier of the access node in the TE topology."; + } + + leaf access-node-uri { + type nw:node-id; + description + "The identifier of the access node in the network."; + } + + leaf access-ltp-id { + type te-types:te-tp-id; + description + "The TE link termination point identifier in TE topology, used + together with access-node-id to identify the access LTP."; + } + + leaf access-ltp-uri { + type nt:tp-id; + description + "The link termination point identifier in network topology, + used together with access-node-uri to identify the access LTP"; + } + + leaf client-signal { + type identityref { + base layer1-types:client-signal; + } + description + "Identify the client signal type associated with this port"; + } + + } + + grouping pm-state-grouping { + leaf latency { + description "latency value of the E2E client signal service"; + type uint32; + units microsecond; + } + } + + grouping error-info-grouping { + leaf error-code { + description "error code"; + type uint16; + } + + leaf error-description { + description "detail message of error"; + type string; + } + + leaf error-timestamp { + description "the date and time error is happened"; + type yang:date-and-time; + } + } + + grouping alarm-shreshold-grouping { + leaf latency-threshold { + description "a threshold for the E2E client signal service's + latency. Once the latency value exceed this threshold, an alarm + should be triggered."; + type uint32; + units microsecond; + } + } + + grouping client-svc-tunnel-parameters { + description + "Transport network client signals tunnel parameters"; + + leaf tunnel-name { + type string; + description + "TE tunnel instance name."; + } + } + + grouping client-svc-instance-config { + description + "Configuration parameters for client services."; + leaf client-svc-name { + type string; + description + "Identifier of the p2p transport network client signals."; + } + + leaf client-svc-title { + type string; + description + "Name of the p2p transport network client signals."; + } + + leaf user-label { + type string; + description + "Alias of the p2p transport network client signals."; + } + + leaf client-svc-descr { + type string; + description + "Description of the transport network client signals."; + } + + leaf client-svc-customer { + type string; + description + "Customer of the transport network client signals."; + } + + container resilience { + description "Place holder for resilience functionalities"; + } + + uses te-types:te-topology-identifier; + + leaf admin-status { + type identityref { + base te-types:tunnel-admin-state-type; + } + default te-types:tunnel-admin-state-up; + description "Client signals administrative state."; + } + + container src-access-ports { + description + "Source access port of a client signal."; + uses client-svc-access-parameters; + } + container dst-access-ports { + description + "Destination access port of a client signal."; + uses client-svc-access-parameters; + } + + container pm-state { + config false; + description "PM data of E2E client signal"; + uses pm-state-grouping; + } + + container error-info { + config false; + description "error messages of configuration"; + uses error-info-grouping; + } + + container alarm-shreshold { + description "threshold configuration for the E2E client signal"; + uses alarm-shreshold-grouping; + } + + leaf direction { + type identityref { + base clntsvc-types:direction; + } + description "Uni-dir or Bi-dir for the client signal."; + } + + list svc-tunnels { + key tunnel-name; + description + "List of the TE Tunnels supporting the client signal."; + uses client-svc-tunnel-parameters; + } + } + + grouping client-svc-instance-state { + description + "State parameters for client services."; + leaf operational-state { + type identityref { + base te-types:tunnel-state-type; + } + config false; + description "Client signal operational state."; + } + leaf provisioning-state { + type identityref { + base te-types:lsp-state-type; + } + config false; + description "Client signal provisioning state."; + } + leaf creation-time { + type yang:date-and-time; + config false; + description "The time of the client signal be created."; + } + leaf last-updated-time { + type yang:date-and-time; + config false; + description "The time of the client signal's latest update."; + } + leaf created-by { + type string; + config false; + description + "The client signal is created by whom, + can be a system or staff ID."; + } + leaf last-updated-by { + type string; + config false; + description + "The client signal is last updated by whom, + can be a system or staff ID."; + } + leaf owned-by { + type string; + config false; + description + "The client signal is owned by whom, + can be a system ID."; + } + } + + /* + * Data nodes + */ + + container client-svc { + description + "Transport client services."; + + list client-svc-instances { + key client-svc-name; + description + "The list of p2p transport client service instances"; + + uses client-svc-instance-config; + uses client-svc-instance-state; + } + } + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang b/src/nbi/service/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang new file mode 100644 index 000000000..60db5633a --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang @@ -0,0 +1,63 @@ + module ietf-trans-client-svc-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-svc-types"; + prefix "clntsvc-types"; + + organization + "Internet Engineering Task Force (IETF) CCAMP WG"; + contact + " + ID-draft editor: + Haomian Zheng (zhenghaomian@huawei.com); + Aihua Guo (aihuaguo.ietf@gmail.com); + Italo Busi (italo.busi@huawei.com); + Anton Snitser (antons@sedonasys.com); + Francesco Lazzeri (francesco.lazzeri@ericsson.com); + Yunbin Xu (xuyunbin@caict.ac.cn); + Yang Zhao (zhaoyangyjy@chinamobile.com); + Xufeng Liu (Xufeng_Liu@jabil.com); + Giuseppe Fioccola (giuseppe.fioccola@huawei.com); + Chaode Yu (yuchaode@huawei.com); + "; + + description + "This module defines a YANG data model for describing + transport network client types. The model fully conforms + to the Network Management Datastore Architecture (NMDA). + + Copyright (c) 2019 IETF Trust and the persons + identified as authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + revision 2023-10-23 { + description + "version -01 as a WG document"; + reference + "draft-ietf-ccamp-client-signal-yang"; + } + + identity direction { + description + "Direction information of Client Signal."; + } + + identity bidirectional { + base direction; + description + "Client Signal is bi-directional."; + } + + identity unidirectional { + base direction; + description + "Client Signal is uni-directional."; + } + + } diff --git a/src/nbi/service/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang b/src/nbi/service/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang new file mode 100644 index 000000000..ee58fa3ab --- /dev/null +++ b/src/nbi/service/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang @@ -0,0 +1,474 @@ +module ietf-yang-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; + prefix "yang"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of counter and gauge types ***/ + + typedef counter32 { + type uint32; + description + "The counter32 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter32 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter32 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter32. + + In the value set and its semantics, this type is equivalent + to the Counter32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter32 { + type yang:counter32; + default "0"; + description + "The zero-based-counter32 type represents a counter32 + that has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter32 textual convention of the SMIv2."; + reference + "RFC 4502: Remote Network Monitoring Management Information + Base Version 2"; + } + + typedef counter64 { + type uint64; + description + "The counter64 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter64 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter64 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter64. + + In the value set and its semantics, this type is equivalent + to the Counter64 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter64 { + type yang:counter64; + default "0"; + description + "The zero-based-counter64 type represents a counter64 that + has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter64 textual convention of the SMIv2."; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + typedef gauge32 { + type uint32; + description + "The gauge32 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^32-1 (4294967295 decimal), and + the minimum value cannot be smaller than 0. The value of + a gauge32 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge32 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the Gauge32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef gauge64 { + type uint64; + description + "The gauge64 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^64-1 (18446744073709551615), and + the minimum value cannot be smaller than 0. The value of + a gauge64 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge64 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the CounterBasedGauge64 SMIv2 textual convention defined + in RFC 2856"; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + /*** collection of identifier-related types ***/ + + typedef object-identifier { + type string { + pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' + + '(\.(0|([1-9]\d*)))*'; + } + description + "The object-identifier type represents administratively + assigned names in a registration-hierarchical-name tree. + + Values of this type are denoted as a sequence of numerical + non-negative sub-identifier values. Each sub-identifier + value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers + are separated by single dots and without any intermediate + whitespace. + + The ASN.1 standard restricts the value space of the first + sub-identifier to 0, 1, or 2. Furthermore, the value space + of the second sub-identifier is restricted to the range + 0 to 39 if the first sub-identifier is 0 or 1. Finally, + the ASN.1 standard requires that an object identifier + has always at least two sub-identifiers. The pattern + captures these restrictions. + + Although the number of sub-identifiers is not limited, + module designers should realize that there may be + implementations that stick with the SMIv2 limit of 128 + sub-identifiers. + + This type is a superset of the SMIv2 OBJECT IDENTIFIER type + since it is not restricted to 128 sub-identifiers. Hence, + this type SHOULD NOT be used to represent the SMIv2 OBJECT + IDENTIFIER type; the object-identifier-128 type SHOULD be + used instead."; + reference + "ISO9834-1: Information technology -- Open Systems + Interconnection -- Procedures for the operation of OSI + Registration Authorities: General procedures and top + arcs of the ASN.1 Object Identifier tree"; + } + + typedef object-identifier-128 { + type object-identifier { + pattern '\d*(\.\d*){1,127}'; + } + description + "This type represents object-identifiers restricted to 128 + sub-identifiers. + + In the value set and its semantics, this type is equivalent + to the OBJECT IDENTIFIER type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef yang-identifier { + type string { + length "1..max"; + pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; + pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; + } + description + "A YANG identifier string as defined by the 'identifier' + rule in Section 12 of RFC 6020. An identifier must + start with an alphabetic character or an underscore + followed by an arbitrary sequence of alphabetic or + numeric characters, underscores, hyphens, or dots. + + A YANG identifier MUST NOT start with any possible + combination of the lowercase or uppercase character + sequence 'xml'."; + reference + "RFC 6020: YANG - A Data Modeling Language for the Network + Configuration Protocol (NETCONF)"; + } + + /*** collection of types related to date and time***/ + + typedef date-and-time { + type string { + pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' + + '(Z|[\+\-]\d{2}:\d{2})'; + } + description + "The date-and-time type is a profile of the ISO 8601 + standard for representation of dates and times using the + Gregorian calendar. The profile is defined by the + date-time production in Section 5.6 of RFC 3339. + + The date-and-time type is compatible with the dateTime XML + schema type with the following notable exceptions: + + (a) The date-and-time type does not allow negative years. + + (b) The date-and-time time-offset -00:00 indicates an unknown + time zone (see RFC 3339) while -00:00 and +00:00 and Z + all represent the same time zone in dateTime. + + (c) The canonical format (see below) of data-and-time values + differs from the canonical format used by the dateTime XML + schema type, which requires all times to be in UTC using + the time-offset 'Z'. + + This type is not equivalent to the DateAndTime textual + convention of the SMIv2 since RFC 3339 uses a different + separator between full-date and full-time and provides + higher resolution of time-secfrac. + + The canonical format for date-and-time values with a known time + zone uses a numeric time zone offset that is calculated using + the device's configured known offset to UTC time. A change of + the device's offset to UTC time will cause date-and-time values + to change accordingly. Such changes might happen periodically + in case a server follows automatically daylight saving time + (DST) time zone offset changes. The canonical format for + date-and-time values with an unknown time zone (usually + referring to the notion of local time) uses the time-offset + -00:00."; + reference + "RFC 3339: Date and Time on the Internet: Timestamps + RFC 2579: Textual Conventions for SMIv2 + XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; + } + + typedef timeticks { + type uint32; + description + "The timeticks type represents a non-negative integer that + represents the time, modulo 2^32 (4294967296 decimal), in + hundredths of a second between two epochs. When a schema + node is defined that uses this type, the description of + the schema node identifies both of the reference epochs. + + In the value set and its semantics, this type is equivalent + to the TimeTicks type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef timestamp { + type yang:timeticks; + description + "The timestamp type represents the value of an associated + timeticks schema node at which a specific occurrence + happened. The specific occurrence must be defined in the + description of any schema node defined using this type. When + the specific occurrence occurred prior to the last time the + associated timeticks attribute was zero, then the timestamp + value is zero. Note that this requires all timestamp values + to be reset to zero when the value of the associated timeticks + attribute reaches 497+ days and wraps around to zero. + + The associated timeticks schema node must be specified + in the description of any schema node using this type. + + In the value set and its semantics, this type is equivalent + to the TimeStamp textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of generic address types ***/ + + typedef phys-address { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + + description + "Represents media- or physical-level addresses represented + as a sequence octets, each octet represented by two hexadecimal + numbers. Octets are separated by colons. The canonical + representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the PhysAddress textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + typedef mac-address { + type string { + pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; + } + description + "The mac-address type represents an IEEE 802 MAC address. + The canonical representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the MacAddress textual convention of the SMIv2."; + reference + "IEEE 802: IEEE Standard for Local and Metropolitan Area + Networks: Overview and Architecture + RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of XML-specific types ***/ + + typedef xpath1.0 { + type string; + description + "This type represents an XPATH 1.0 expression. + + When a schema node is defined that uses this type, the + description of the schema node MUST specify the XPath + context in which the XPath expression is evaluated."; + reference + "XPATH: XML Path Language (XPath) Version 1.0"; + } + + /*** collection of string types ***/ + + typedef hex-string { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + description + "A hexadecimal string with octets represented as hex digits + separated by colons. The canonical representation uses + lowercase characters."; + } + + typedef uuid { + type string { + pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; + } + description + "A Universally Unique IDentifier in the string representation + defined in RFC 4122. The canonical representation uses + lowercase characters. + + The following is an example of a UUID in string representation: + f81d4fae-7dec-11d0-a765-00a0c91e6bf6 + "; + reference + "RFC 4122: A Universally Unique IDentifier (UUID) URN + Namespace"; + } + + typedef dotted-quad { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; + } + description + "An unsigned 32-bit number expressed in the dotted-quad + notation, i.e., four octets written as decimal numbers + and separated with the '.' (full stop) character."; + } +} -- GitLab From c67c0b44abf5c2c787fd641785c46b1122b2b12e Mon Sep 17 00:00:00 2001 From: camposl Date: Thu, 4 Sep 2025 11:53:59 +0200 Subject: [PATCH 4/4] correction --- src/nbi/service/app.py | 2 + .../service/ietf_network_bw/Networks_bw.py | 4 +- src/nbi/service/ietf_network_bw/__init__.py | 11 +- .../ietf_network_bw/NameMapping.py | 46 - .../ietf_network_bw/NetworkTypeEnum.py | 23 - .../ietf_network_bw/Networks_bw.py | 85 - .../nbi_plugins/ietf_network_bw/README.md | 14 - .../ietf_network_bw/YangHandler.py | 183 - .../nbi_plugins/ietf_network_bw/__init__.py | 44 - .../ietf_network_bw/_docs/test_commands.txt | 26 - .../yang/iana-bfd-types@2025-04-16.yang | 188 - .../yang/iana-routing-types@2017-12-04.yang | 473 -- .../yang/iana-routing-types@2022-08-19.yang | 644 --- .../yang/ietf-bfd-types@2022-09-22.yang | 690 --- .../yang/ietf-eth-te-topology@2023-09-28.yang | 2275 --------- .../ietf-eth-tran-service@2023-10-23.yang | 1004 ---- .../yang/ietf-eth-tran-types@2023-10-23.yang | 457 -- .../yang/ietf-inet-types@2013-07-15.yang | 458 -- .../yang/ietf-interfaces@2018-02-20.yang | 1123 ----- .../yang/ietf-isis@2022-10-19.yang | 4455 ---------------- .../yang/ietf-key-chain@2017-06-15.yang | 382 -- .../yang/ietf-l3-te-topology@2024-06-08.yang | 208 - .../ietf-l3-unicast-topology@2018-02-26.yang | 359 -- .../yang/ietf-layer1-types@2022-10-14.yang | 1414 ------ .../yang/ietf-netconf-acm@2018-02-14.yang | 464 -- .../ietf-network-topology@2018-02-26.yang | 294 -- .../yang/ietf-network@2018-02-26.yang | 193 - .../yang/ietf-otn-topology@2023-07-06.yang | 2405 --------- .../yang/ietf-routing-types@2017-12-04.yang | 771 --- .../yang/ietf-routing@2018-03-13.yang | 684 --- .../yang/ietf-te-packet-types@2025-01-24.yang | 835 --- .../ietf-te-topology-packet@2024-06-08.yang | 734 --- .../yang/ietf-te-topology@2020-08-06.yang | 1952 ------- .../yang/ietf-te-types@2025-01-24.yang | 4473 ----------------- .../ietf-trans-client-service@2023-10-23.yang | 325 -- ...etf-trans-client-svc-types@2023-10-23.yang | 63 - .../yang/ietf-yang-types@2013-07-15.yang | 474 -- 37 files changed, 7 insertions(+), 28228 deletions(-) delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang diff --git a/src/nbi/service/app.py b/src/nbi/service/app.py index 2d6102a34..65dd9ac44 100644 --- a/src/nbi/service/app.py +++ b/src/nbi/service/app.py @@ -37,6 +37,7 @@ from .ietf_hardware import register_ietf_hardware from .ietf_l2vpn import register_ietf_l2vpn from .ietf_l3vpn import register_ietf_l3vpn from .ietf_network import register_ietf_network +from .ietf_network_bw import register_ietf_network_bw from .ietf_network_slice import register_ietf_nss from .qkd_app import register_qkd_app from .restconf_root import register_restconf_root @@ -98,6 +99,7 @@ register_qkd_app (nbi_app) #register_topology_updates(nbi_app) # does not work; check if eventlet-grpc side effects register_vntm_recommend (nbi_app) register_camara_qod (nbi_app) +register_ietf_network_bw (nbi_app) LOGGER.info('All connectors registered') nbi_app.dump_configuration() diff --git a/src/nbi/service/ietf_network_bw/Networks_bw.py b/src/nbi/service/ietf_network_bw/Networks_bw.py index 39a36338d..0266bc0a6 100644 --- a/src/nbi/service/ietf_network_bw/Networks_bw.py +++ b/src/nbi/service/ietf_network_bw/Networks_bw.py @@ -23,8 +23,8 @@ from common.proto.context_pb2 import ContextId, Empty from common.tools.context_queries.Topology import get_topology_details from common.tools.object_factory.Context import json_context_id from context.client.ContextClient import ContextClient -from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH -from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR +from nbi.service._tools.Authentication import HTTP_AUTH +from nbi.service._tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR from .YangHandler import YangHandler LOGGER = logging.getLogger(__name__) diff --git a/src/nbi/service/ietf_network_bw/__init__.py b/src/nbi/service/ietf_network_bw/__init__.py index 1c021de9e..56e28a283 100644 --- a/src/nbi/service/ietf_network_bw/__init__.py +++ b/src/nbi/service/ietf_network_bw/__init__.py @@ -30,15 +30,10 @@ # RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals # Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/ -from flask_restful import Resource -from nbi.service.rest_server.RestServer import RestServer +from nbi.service.NbiApplication import NbiApplication from .Networks_bw import Networks_bw URL_PREFIX = '/restconf/data/ietf-network:networks-bw' -def _add_resource(rest_server : RestServer, resource : Resource, *urls, **kwargs): - urls = [(URL_PREFIX + url) for url in urls] - rest_server.add_resource(resource, *urls, **kwargs) - -def register_ietf_network_bw(rest_server : RestServer): - _add_resource(rest_server, Networks_bw, '/') +def register_ietf_network_bw(nbi_app : NbiApplication): + nbi_app.add_rest_api_resource(Networks_bw, URL_PREFIX + '/') diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py deleted file mode 100644 index 03d052afd..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NameMapping.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import Dict, Tuple -from common.proto.context_pb2 import Device, DeviceId, EndPoint, EndPointId - -class NameMappings: - def __init__(self) -> None: - self._device_uuid_to_name : Dict[str, str] = dict() - self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict() - - def store_device_name(self, device : Device) -> None: - device_uuid = device.device_id.device_uuid.uuid - device_name = device.name - self._device_uuid_to_name[device_uuid] = device_name - self._device_uuid_to_name[device_name] = device_name - - def store_endpoint_name(self, device : Device, endpoint : EndPoint) -> None: - device_uuid = device.device_id.device_uuid.uuid - device_name = device.name - endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid - endpoint_name = endpoint.name - self._endpoint_uuid_to_name[(device_uuid, endpoint_uuid)] = endpoint_name - self._endpoint_uuid_to_name[(device_name, endpoint_uuid)] = endpoint_name - self._endpoint_uuid_to_name[(device_uuid, endpoint_name)] = endpoint_name - self._endpoint_uuid_to_name[(device_name, endpoint_name)] = endpoint_name - - def get_device_name(self, device_id : DeviceId) -> str: - device_uuid = device_id.device_uuid.uuid - return self._device_uuid_to_name.get(device_uuid, device_uuid) - - def get_endpoint_name(self, endpoint_id : EndPointId) -> str: - device_uuid = endpoint_id.device_id.device_uuid.uuid - endpoint_uuid = endpoint_id.endpoint_uuid.uuid - return self._endpoint_uuid_to_name.get((device_uuid, endpoint_uuid), endpoint_uuid) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py deleted file mode 100644 index 849252b99..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/NetworkTypeEnum.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from enum import Enum -from typing import Optional - -class NetworkTypeEnum(Enum): - TE_OTN_TOPOLOGY = 'otn' - TE_ETH_TRAN_TOPOLOGY = 'eth-tran' - -def get_network_topology_type(topology_id : str) -> Optional[NetworkTypeEnum]: - return NetworkTypeEnum._value2member_map_.get(topology_id) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py deleted file mode 100644 index 39a36338d..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/Networks_bw.py +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import enum, json, logging -import pyangbind.lib.pybindJSON as pybindJSON -from flask import request -from flask.json import jsonify -from flask_restful import Resource -from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME -from common.Settings import get_setting -from common.proto.context_pb2 import ContextId, Empty -from common.tools.context_queries.Topology import get_topology_details -from common.tools.object_factory.Context import json_context_id -from context.client.ContextClient import ContextClient -from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH -from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR -from .YangHandler import YangHandler - -LOGGER = logging.getLogger(__name__) - -TE_TOPOLOGY_NAMES = [ - 'providerId-10-clientId-0-topologyId-1', - 'providerId-10-clientId-0-topologyId-2' -] - -class Renderer(enum.Enum): - LIBYANG = 'LIBYANG' - PYANGBIND = 'PYANGBIND' - -DEFAULT_RENDERER = Renderer.LIBYANG -USE_RENDERER = get_setting('IETF_NETWORK_RENDERER', default=DEFAULT_RENDERER.value) - - -class Networks_bw(Resource): - @HTTP_AUTH.login_required - def get(self): - LOGGER.info('Request: {:s}'.format(str(request))) - topology_id = '' - try: - context_client = ContextClient() - - if USE_RENDERER == Renderer.LIBYANG.value: - yang_handler = YangHandler() - json_response = [] - - contexts = context_client.ListContexts(Empty()).contexts - context_names = [context.name for context in contexts] - LOGGER.info(f'Contexts detected: {context_names}') - - for context_name in context_names: - topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies - topology_names = [topology.name for topology in topologies] - LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}') - - for topology_name in topology_names: - topology_details = get_topology_details(context_client, topology_name, context_name) - if topology_details is None: - raise Exception(f'Topology({context_name}/{topology_name}) not found') - - network_reply = yang_handler.compose_network(topology_name, topology_details) - json_response.append(network_reply) - - yang_handler.destroy() - else: - raise Exception('Unsupported Renderer: {:s}'.format(str(USE_RENDERER))) - - response = jsonify(json_response) - response.status_code = HTTP_OK - - except Exception as e: # pylint: disable=broad-except - LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id))) - response = jsonify({'error': str(e)}) - response.status_code = HTTP_SERVERERROR - return response diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md deleted file mode 100644 index 8d808a45b..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# IETF Network - -This NBI plugin implements a basic skeleton for the IETF Network data model. - -## DISCLAIMER -__USE WITH CARE! This plugin is NOT production ready, it contains many hardcodings based on ongoing tests.__ - -## IETF RFCs/drafts: -- RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies (https://datatracker.ietf.org/doc/html/rfc8795) -- RFC 8776 - Common YANG Data Types for Traffic Engineering (https://datatracker.ietf.org/doc/html/rfc8776) -- RFC 8345 - A YANG Data Model for Network Topologies (https://datatracker.ietf.org/doc/html/rfc8345) -- RFC 6991 - Common YANG Data Types (https://datatracker.ietf.org/doc/html/rfc6991) -- RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology (https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/) -- RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals (https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py deleted file mode 100644 index fe655f01b..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/YangHandler.py +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import libyang, logging, os -from typing import Any -from common.proto.context_pb2 import TopologyDetails, Device, Link -from .NameMapping import NameMappings -from context.client.ContextClient import ContextClient -from common.tools.object_factory.Device import json_device_id -from common.proto.context_pb2 import DeviceId -import requests - - - -LOGGER = logging.getLogger(__name__) - -YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') -YANG_MODULES = ['ietf-network', 'ietf-network-topology', 'ietf-l3-unicast-topology', 'ietf-te-types', 'ietf-te-packet-types', 'ietf-te-topology', 'ietf-l3-te-topology','ietf-te-topology-packet' ] - -current_dir = os.path.dirname(__file__) -data_path = os.path.join(current_dir, "linksdata.json") - -class YangHandler: - def __init__(self) -> None: - self._yang_context = libyang.Context(YANG_DIR) - for yang_module_name in YANG_MODULES: - LOGGER.info('Loading module: {:s}'.format(str(yang_module_name))) - self._yang_context.load_module(yang_module_name).feature_enable_all() - - - - - - def compose_network(self, te_topology_name: str, topology_details: TopologyDetails) -> dict: - networks = self._yang_context.create_data_path('/ietf-network:networks') - network = networks.create_path(f'network[network-id="{te_topology_name}"]') - network.create_path('network-id', te_topology_name) - - network_types = network.create_path('network-types') - network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') - - name_mappings = NameMappings() - - for device in topology_details.devices: - self.compose_node(device, name_mappings, network) - - for link in topology_details.links: - self.compose_link(link, name_mappings, network) - - return json.loads(networks.print_mem('json')) - - def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any) -> None: - device_name = dev.name - name_mappings.store_device_name(dev) - - node = network.create_path(f'node[node-id="{device_name}"]') - node.create_path('node-id', device_name) - node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes') - node_attributes.create_path('name', device_name) - - context_client = ContextClient() - device = context_client.GetDevice(DeviceId(**json_device_id(device_name))) - - for endpoint in device.device_endpoints: - name_mappings.store_endpoint_name(dev, endpoint) - - self._process_device_config(device, node) - - def _process_device_config(self, device: Device, node: Any) -> None: - for config in device.device_config.config_rules: - if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key: - continue - - for endpoint in device.device_endpoints: - endpoint_name = endpoint.name - if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key: - interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0] - self._create_termination_point(node, interface_name, endpoint_name, config.custom.resource_value) - - def _create_termination_point(self, node: Any, interface_name: str, endpoint_name: str, resource_value: str) -> None: - ip_addresses = self._extract_ip_addresses(json.loads(resource_value)) - if ip_addresses: - tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]') - tp.create_path('tp-id', interface_name) - tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes') - - for ip in ip_addresses: - tp_attributes.create_path('ip-address', ip) - tp_attributes.create_path('interface-name', endpoint_name) - - @staticmethod - def _extract_ip_addresses(resource_value: dict) -> list: - ip_addresses = [] - if 'address_ip' in resource_value: - ip_addresses.append(resource_value['address_ip']) - if 'address_ipv6' in resource_value: - ip_addresses.append(resource_value['address_ipv6']) - return ip_addresses - - def compose_link(self, link_specs: Link, name_mappings: NameMappings, network: Any) -> None: - link_name = link_specs.name - links = network.create_path(f'ietf-network-topology:link[link-id="{link_name}"]') - links.create_path('link-id', link_name) - - self._create_link_endpoint(links, 'source', link_specs.link_endpoint_ids[0], name_mappings) - self._create_link_endpoint(links, 'destination', link_specs.link_endpoint_ids[-1], name_mappings) - - - - # Cargar los datos del archivo JSON una sola vez - try: - response = requests.get("http://192.168.165.44:8080/linksdata.json") - response.raise_for_status() - link_data = response.json() - LOGGER.debug(f"Link data loaded from external API for {link_specs.name}") - - # Obtener los datos específicos para este enlace - data = link_data.get(link_name) - - te = links.create_path('ietf-te-topology:te') - te_link_attributes = te.create_path('te-link-attributes') - - # Asignar valores predeterminados si no se encuentran en el JSON - max_bw = data.get("Maximum link bandwidth", 10000000000) - max_resv_bw = data.get("Max. Reservable link bandwidth", 10000000000) - te_link_attributes.create_path('max-link-bandwidth', max_bw) - te_link_attributes.create_path('max-resv-link-bandwidth', max_resv_bw) - - te_data = data.get("ietf-te-topology:te", {}).get("te-link-attributes", {}) - - # Unreserved bandwidth por prioridad - for priority in range(8): - key = f"Unreserved bandwidth (priority {priority})" - value = te_data.get(key, 0) - - entry = te_link_attributes.create_path(f'unreserved-bandwidth[priority="{priority}"]') - entry.create_path('priority', priority) - bw = entry.create_path('te-bandwidth') - bw.create_path('generic', value) - - # Métricas de rendimiento unidireccional - perf_data = data["ietf-te-topology:te"]["te-link-attributes"]["ietf-te-topology-packet:performance-metrics-one-way"] - performance_metrics = te_link_attributes.create_path('ietf-te-topology-packet:performance-metrics-one-way') - performance_metrics.create_path('one-way-delay', perf_data.get("one-way-delay", 0)) - performance_metrics.create_path('one-way-residual-bandwidth', perf_data.get("one-way-residual-bandwidth", "0x0p0")) - performance_metrics.create_path('one-way-available-bandwidth', perf_data.get("one-way-available-bandwidth", "0x0p0")) - performance_metrics.create_path('one-way-utilized-bandwidth', perf_data.get("one-way-utilized-bandwidth", "0x0p0")) - performance_metrics.create_path('one-way-min-delay', perf_data.get("one-way-min-delay", 0)) - performance_metrics.create_path('one-way-max-delay', perf_data.get("one-way-max-delay", 0)) - performance_metrics.create_path('one-way-delay-variation', perf_data.get("one-way-delay-variation", 0)) - - - - - - except Exception as e: - LOGGER.error(f"Failed to fetch link data from external API: {e}") - link_data = {} - - - - def _create_link_endpoint(self, links: Any, endpoint_type: str, endpoint_id: Any, name_mappings: NameMappings) -> None: - endpoint = links.create_path(endpoint_type) - if endpoint_type == 'destination': endpoint_type = 'dest' - endpoint.create_path(f'{endpoint_type}-node', name_mappings.get_device_name(endpoint_id.device_id)) - endpoint.create_path(f'{endpoint_type}-tp', name_mappings.get_endpoint_name(endpoint_id)) - - - - def destroy(self) -> None: - self._yang_context.destroy() diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py deleted file mode 100644 index 1c021de9e..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies -# Ref: https://datatracker.ietf.org/doc/html/rfc8795 - -# RFC 8776 - Common YANG Data Types for Traffic Engineering -# Ref: https://datatracker.ietf.org/doc/html/rfc8776 - -# RFC 8345 - A YANG Data Model for Network Topologies -# Ref: https://datatracker.ietf.org/doc/html/rfc8345 - -# RFC 6991 - Common YANG Data Types -# Ref: https://datatracker.ietf.org/doc/html/rfc6991 - -# RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology -# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/ - -# RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals -# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/ - -from flask_restful import Resource -from nbi.service.rest_server.RestServer import RestServer -from .Networks_bw import Networks_bw - -URL_PREFIX = '/restconf/data/ietf-network:networks-bw' - -def _add_resource(rest_server : RestServer, resource : Resource, *urls, **kwargs): - urls = [(URL_PREFIX + url) for url in urls] - rest_server.add_resource(resource, *urls, **kwargs) - -def register_ietf_network_bw(rest_server : RestServer): - _add_resource(rest_server, Networks_bw, '/') diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt deleted file mode 100644 index 78b2dd246..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/_docs/test_commands.txt +++ /dev/null @@ -1,26 +0,0 @@ -cd ~/tfs-ctrl/src/nbi/service/rest_server/nbi_plugins/ietf_network - -python - -from bindings import ietf_network -import pyangbind.lib.pybindJSON as pybindJSON - -ietf_nets_obj = ietf_network() -ietf_net_obj = ietf_nets_obj.networks.network.add('my-topo') - -ietf_node_obj = ietf_net_obj.node.add('my-node') -ietf_tp_obj = ietf_node_obj.termination_point.add('my-tp') - -ietf_link_obj = ietf_net_obj.link.add('my-link') - -ietf_link_obj.te._set_oper_status('up') -print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) - -ietf_link_obj.te.te_link_attributes.admin_status = 'down' -print(pybindJSON.dumps(ietf_nets_obj, mode='ietf')) - - -ietf_link_obj.te.te_link_attributes.max_link_bandwidth.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps -unresv_bw = ietf_link_obj.te.te_link_attributes.unreserved_bandwidth.add(7) -unresv_bw.te_bandwidth.eth_bandwidth = 10_000_000 # Kbps -print(pybindJSON.dumps(ietf_link_obj, mode='ietf')) diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang deleted file mode 100644 index e7e13e1c2..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-bfd-types@2025-04-16.yang +++ /dev/null @@ -1,188 +0,0 @@ -module iana-bfd-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:iana-bfd-types"; - prefix iana-bfd-types; - - organization - "IANA"; - contact - "Internet Assigned Numbers Authority - - Postal: ICANN - 12025 Waterfront Drive, Suite 300 - Los Angeles, CA 90094-2536 - United States of America - Tel: +1 310 301 5800 - "; - description - "This module defines YANG data types for IANA-registered - BFD parameters. - - This YANG module is maintained by IANA and reflects the - 'BFD Diagnostic Codes' and 'BFD Authentication Types' - registries. - - Copyright (c) 2021 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Simplified BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - The initial version of this YANG module is part of RFC 9127; - see the RFC itself for full legal notices."; - reference - "RFC 9127: YANG Data Model for Bidirectional Forwarding - Detection (BFD)"; - - revision 2025-04-16 { - description - "Add NULL and Meticulous ISAAC authentication type."; - reference - "RFC XXXX: Optimizing BFD Authentication, - I-D.ietf-bfd-stability: BFD Stability."; - } - - revision 2021-10-21 { - description - "Initial revision."; - reference - "RFC 9127: YANG Data Model for Bidirectional Forwarding - Detection (BFD)"; - } - - /* - * Type definitions - */ - - typedef diagnostic { - type enumeration { - enum none { - value 0; - description - "No Diagnostic."; - } - enum control-expiry { - value 1; - description - "Control Detection Time Expired."; - } - enum echo-failed { - value 2; - description - "Echo Function Failed."; - } - enum neighbor-down { - value 3; - description - "Neighbor Signaled Session Down."; - } - enum forwarding-reset { - value 4; - description - "Forwarding Plane Reset."; - } - enum path-down { - value 5; - description - "Path Down."; - } - enum concatenated-path-down { - value 6; - description - "Concatenated Path Down."; - } - enum admin-down { - value 7; - description - "Administratively Down."; - } - enum reverse-concatenated-path-down { - value 8; - description - "Reverse Concatenated Path Down."; - } - enum mis-connectivity-defect { - value 9; - description - "Mis-connectivity defect."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD) - RFC 6428: Proactive Connectivity Verification, Continuity - Check, and Remote Defect Indication for the MPLS - Transport Profile"; - } - } - description - "BFD diagnostic codes as defined in RFC 5880. Values are - maintained in the 'BFD Diagnostic Codes' IANA registry. - Range is 0 to 31."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD)"; - } - typedef auth-type { - type enumeration { - enum reserved { - value 0; - description - "Reserved."; - } - enum simple-password { - value 1; - description - "Simple Password."; - } - enum keyed-md5 { - value 2; - description - "Keyed MD5."; - } - enum meticulous-keyed-md5 { - value 3; - description - "Meticulous Keyed MD5."; - } - enum keyed-sha1 { - value 4; - description - "Keyed SHA1."; - } - enum meticulous-keyed-sha1 { - value 5; - description - "Meticulous Keyed SHA1."; - } - enum null { - value 6; - description - "NULL Auth. Used for stability measurement."; - } - enum optimized-md5-meticulous-keyed-isaac { - value 7; - description - "BFD Optimized Authentication using Meticulous Keyed - MD5 as the strong authentication and Meticulous Keyed - ISAAC as the 'optimized' authentication."; - } - enum optimized-sha1-meticulous-keyed-isaac { - value 8; - description - "BFD Optimized Authentication using Meticulous Keyed - SHA-1 as the strong authentication and Meticulous Keyed - ISAAC as the 'optimized' authentication."; - } - } - description - "BFD authentication type as defined in RFC 5880. Values are - maintained in the 'BFD Authentication Types' IANA registry. - Range is 0 to 255."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD), - I-D.ietf-bfd-optimizing-authentication: - Optimizing BFD Authentication, - I-D.ietf-bfd-stability: BFD Stability."; - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang deleted file mode 100644 index 250cba4b6..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2017-12-04.yang +++ /dev/null @@ -1,473 +0,0 @@ - module iana-routing-types { - namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; - prefix iana-rt-types; - - organization - "IANA"; - contact - "Internet Assigned Numbers Authority - - Postal: ICANN - 12025 Waterfront Drive, Suite 300 - Los Angeles, CA 90094-2536 - United States of America - Tel: +1 310 301 5800 - "; - - description - "This module contains a collection of YANG data types - considered defined by IANA and used for routing - protocols. - - Copyright (c) 2017 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8294; see - the RFC itself for full legal notices."; - - revision 2017-12-04 { - description "Initial revision."; - reference - "RFC 8294: Common YANG Data Types for the Routing Area. - Section 4."; - } - - /*** Collection of IANA types related to routing ***/ - /*** IANA Address Family enumeration ***/ - - typedef address-family { - type enumeration { - enum ipv4 { - value 1; - description - "IPv4 Address Family."; - } - - enum ipv6 { - value 2; - description - "IPv6 Address Family."; - } - - enum nsap { - value 3; - description - "OSI Network Service Access Point (NSAP) Address Family."; - } - - enum hdlc { - value 4; - description - "High-Level Data Link Control (HDLC) Address Family."; - } - - enum bbn1822 { - value 5; - description - "Bolt, Beranek, and Newman Report 1822 (BBN 1822) - Address Family."; - } - - enum ieee802 { - value 6; - description - "IEEE 802 Committee Address Family - (aka Media Access Control (MAC) address)."; - } - - enum e163 { - value 7; - description - "ITU-T E.163 Address Family."; - } - - enum e164 { - value 8; - description - "ITU-T E.164 (Switched Multimegabit Data Service (SMDS), - Frame Relay, ATM) Address Family."; - } - - enum f69 { - value 9; - description - "ITU-T F.69 (Telex) Address Family."; - } - - enum x121 { - value 10; - description - "ITU-T X.121 (X.25, Frame Relay) Address Family."; - } - - enum ipx { - value 11; - description - "Novell Internetwork Packet Exchange (IPX) - Address Family."; - } - - enum appletalk { - value 12; - description - "Apple AppleTalk Address Family."; - } - - enum decnet-iv { - value 13; - description - "Digital Equipment DECnet Phase IV Address Family."; - } - - enum vines { - value 14; - description - "Banyan Vines Address Family."; - } - - enum e164-nsap { - value 15; - description - "ITU-T E.164 with NSAP sub-address Address Family."; - } - - enum dns { - value 16; - description - "Domain Name System (DNS) Address Family."; - } - - enum distinguished-name { - value 17; - description - "Distinguished Name Address Family."; - } - - enum as-num { - value 18; - description - "Autonomous System (AS) Number Address Family."; - } - - enum xtp-v4 { - value 19; - description - "Xpress Transport Protocol (XTP) over IPv4 - Address Family."; - } - - enum xtp-v6 { - value 20; - description - "XTP over IPv6 Address Family."; - } - - enum xtp-native { - value 21; - description - "XTP native mode Address Family."; - } - - enum fc-port { - value 22; - description - "Fibre Channel (FC) World-Wide Port Name Address Family."; - } - - enum fc-node { - value 23; - description - "FC World-Wide Node Name Address Family."; - } - - enum gwid { - value 24; - description - "ATM Gateway Identifier (GWID) Number Address Family."; - } - - enum l2vpn { - value 25; - description - "Layer 2 VPN (L2VPN) Address Family."; - } - - enum mpls-tp-section-eid { - value 26; - description - "MPLS Transport Profile (MPLS-TP) Section Endpoint - Identifier Address Family."; - } - - enum mpls-tp-lsp-eid { - value 27; - description - "MPLS-TP Label Switched Path (LSP) Endpoint Identifier - Address Family."; - } - - enum mpls-tp-pwe-eid { - value 28; - description - "MPLS-TP Pseudowire Endpoint Identifier Address Family."; - } - - enum mt-v4 { - value 29; - description - "Multi-Topology IPv4 Address Family."; - } - - enum mt-v6 { - value 30; - description - "Multi-Topology IPv6 Address Family."; - } - - enum eigrp-common-sf { - value 16384; - description - "Enhanced Interior Gateway Routing Protocol (EIGRP) - Common Service Family Address Family."; - } - - enum eigrp-v4-sf { - value 16385; - description - "EIGRP IPv4 Service Family Address Family."; - } - - enum eigrp-v6-sf { - value 16386; - description - "EIGRP IPv6 Service Family Address Family."; - } - - enum lcaf { - value 16387; - description - "Locator/ID Separation Protocol (LISP) - Canonical Address Format (LCAF) Address Family."; - } - - enum bgp-ls { - value 16388; - description - "Border Gateway Protocol - Link State (BGP-LS) - Address Family."; - } - - enum mac-48 { - value 16389; - description - "IEEE 48-bit MAC Address Family."; - } - - enum mac-64 { - value 16390; - description - "IEEE 64-bit MAC Address Family."; - } - - enum trill-oui { - value 16391; - description - "Transparent Interconnection of Lots of Links (TRILL) - IEEE Organizationally Unique Identifier (OUI) - Address Family."; - } - - enum trill-mac-24 { - value 16392; - description - "TRILL final 3 octets of 48-bit MAC Address Family."; - } - - enum trill-mac-40 { - value 16393; - description - "TRILL final 5 octets of 64-bit MAC Address Family."; - } - - enum ipv6-64 { - value 16394; - description - "First 8 octets (64 bits) of IPv6 address - Address Family."; - } - - enum trill-rbridge-port-id { - value 16395; - description - "TRILL Routing Bridge (RBridge) Port ID Address Family."; - } - - enum trill-nickname { - value 16396; - description - "TRILL Nickname Address Family."; - } - } - - description - "Enumeration containing all the IANA-defined - Address Families."; - - } - - /*** Subsequent Address Family Identifiers (SAFIs) ***/ - /*** for multiprotocol BGP enumeration ***/ - - typedef bgp-safi { - type enumeration { - enum unicast-safi { - value 1; - description - "Unicast SAFI."; - } - - enum multicast-safi { - value 2; - description - "Multicast SAFI."; - } - - enum labeled-unicast-safi { - value 4; - description - "Labeled Unicast SAFI."; - } - - enum multicast-vpn-safi { - value 5; - description - "Multicast VPN SAFI."; - } - - enum pseudowire-safi { - value 6; - description - "Multi-segment Pseudowire VPN SAFI."; - } - - enum tunnel-encap-safi { - value 7; - description - "Tunnel Encap SAFI."; - } - - enum mcast-vpls-safi { - value 8; - description - "Multicast Virtual Private LAN Service (VPLS) SAFI."; - } - - enum tunnel-safi { - value 64; - description - "Tunnel SAFI."; - } - - enum vpls-safi { - value 65; - description - "VPLS SAFI."; - } - - enum mdt-safi { - value 66; - description - "Multicast Distribution Tree (MDT) SAFI."; - } - - enum v4-over-v6-safi { - value 67; - description - "IPv4 over IPv6 SAFI."; - } - - enum v6-over-v4-safi { - value 68; - description - "IPv6 over IPv4 SAFI."; - } - - enum l1-vpn-auto-discovery-safi { - value 69; - description - "Layer 1 VPN Auto-Discovery SAFI."; - } - - enum evpn-safi { - value 70; - description - "Ethernet VPN (EVPN) SAFI."; - } - - enum bgp-ls-safi { - value 71; - description - "BGP-LS SAFI."; - } - - enum bgp-ls-vpn-safi { - value 72; - description - "BGP-LS VPN SAFI."; - } - - enum sr-te-safi { - value 73; - description - "Segment Routing - Traffic Engineering (SR-TE) SAFI."; - } - - enum labeled-vpn-safi { - value 128; - description - "MPLS Labeled VPN SAFI."; - } - - enum multicast-mpls-vpn-safi { - value 129; - description - "Multicast for BGP/MPLS IP VPN SAFI."; - } - - enum route-target-safi { - value 132; - description - "Route Target SAFI."; - } - - enum ipv4-flow-spec-safi { - value 133; - description - "IPv4 Flow Specification SAFI."; - } - - enum vpnv4-flow-spec-safi { - value 134; - description - "IPv4 VPN Flow Specification SAFI."; - } - - enum vpn-auto-discovery-safi { - value 140; - description - "VPN Auto-Discovery SAFI."; - } - } - description - "Enumeration for BGP SAFI."; - reference - "RFC 4760: Multiprotocol Extensions for BGP-4."; - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang deleted file mode 100644 index fcad71351..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/iana-routing-types@2022-08-19.yang +++ /dev/null @@ -1,644 +0,0 @@ -module iana-routing-types { - namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; - prefix iana-rt-types; - - organization - "IANA"; - contact - "Internet Assigned Numbers Authority - - Postal: ICANN - 12025 Waterfront Drive, Suite 300 - Los Angeles, CA 90094-2536 - United States of America - Tel: +1 310 301 5800 - "; - - description - "This module contains a collection of YANG data types - considered defined by IANA and used for routing - protocols. - - Copyright (c) 2017 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8294; see - the RFC itself for full legal notices."; - - revision 2022-08-19 { - description "Added SAFI value 85."; - } - - revision 2022-04-13 { - description "Added SAFI values 83 and 84."; - } - - revision 2022-02-11 { - description "Added SAFI value 80."; - } - - revision 2021-10-19 { - description "Added Address Family Number value 16399."; - } - - revision 2021-09-08 { - description "Added SAFI value 79."; - } - - revision 2021-05-26 { - description "Added ‘OBSOLETE’ to description field for SAFI value 7."; - } - - revision 2021-05-18 { - description "Added Address Family Number value 31, - SAFI value 9."; - } - - revision 2021-03-23 { - description "Added SAFI value 78."; - } - - revision 2020-12-31 { - description "Non-backwards-compatible change of SAFI names - (SAFI values 133, 134)."; - reference - "RFC 8955: Dissemination of Flow Specification Rules."; - } - - revision 2020-11-19 { - description "Added SAFI value 77."; - } - - revision 2020-07-02 { - description "Added SAFI value 76."; - } - - revision 2020-05-12 { - description "Added Address Family Number value 16398, - SAFI value 75."; - } - - revision 2019-11-04 { - description "Added Address Family Number value 16397."; - } - - revision 2018-10-29 { - description "Added SAFI value 74."; - } - - revision 2017-12-04 { - description "Initial revision."; - reference - "RFC 8294: Common YANG Data Types for the Routing Area. - Section 4."; - } - - - - - /*** Collection of IANA types related to routing ***/ - /*** IANA Address Family enumeration ***/ - - typedef address-family { - type enumeration { - enum ipv4 { - value 1; - description - "IPv4 Address Family."; - } - - enum ipv6 { - value 2; - description - "IPv6 Address Family."; - } - - enum nsap { - value 3; - description - "OSI Network Service Access Point (NSAP) Address Family."; - } - - enum hdlc { - value 4; - description - "High-Level Data Link Control (HDLC) Address Family."; - } - - enum bbn1822 { - value 5; - description - "Bolt, Beranek, and Newman Report 1822 (BBN 1822) - Address Family."; - } - - enum ieee802 { - value 6; - description - "IEEE 802 Committee Address Family - (aka Media Access Control (MAC) address)."; - } - - enum e163 { - value 7; - description - "ITU-T E.163 Address Family."; - } - enum e164 { - value 8; - description - "ITU-T E.164 (Switched Multimegabit Data Service (SMDS), - Frame Relay, ATM) Address Family."; - } - - enum f69 { - value 9; - description - "ITU-T F.69 (Telex) Address Family."; - } - - enum x121 { - value 10; - description - "ITU-T X.121 (X.25, Frame Relay) Address Family."; - } - - enum ipx { - value 11; - description - "Novell Internetwork Packet Exchange (IPX) - Address Family."; - } - - enum appletalk { - value 12; - description - "Apple AppleTalk Address Family."; - } - - enum decnet-iv { - value 13; - description - "Digital Equipment DECnet Phase IV Address Family."; - } - - enum vines { - value 14; - description - "Banyan Vines Address Family."; - } - - - - - - enum e164-nsap { - value 15; - description - "ITU-T E.164 with NSAP sub-address Address Family."; - } - - enum dns { - value 16; - description - "Domain Name System (DNS) Address Family."; - } - - enum distinguished-name { - value 17; - description - "Distinguished Name Address Family."; - } - - enum as-num { - value 18; - description - "Autonomous System (AS) Number Address Family."; - } - - enum xtp-v4 { - value 19; - description - "Xpress Transport Protocol (XTP) over IPv4 - Address Family."; - } - - enum xtp-v6 { - value 20; - description - "XTP over IPv6 Address Family."; - } - - enum xtp-native { - value 21; - description - "XTP native mode Address Family."; - } - - enum fc-port { - value 22; - description - "Fibre Channel (FC) World-Wide Port Name Address Family."; - } - enum fc-node { - value 23; - description - "FC World-Wide Node Name Address Family."; - } - - enum gwid { - value 24; - description - "ATM Gateway Identifier (GWID) Number Address Family."; - } - - enum l2vpn { - value 25; - description - "Layer 2 VPN (L2VPN) Address Family."; - } - - enum mpls-tp-section-eid { - value 26; - description - "MPLS Transport Profile (MPLS-TP) Section Endpoint - Identifier Address Family."; - } - - enum mpls-tp-lsp-eid { - value 27; - description - "MPLS-TP Label Switched Path (LSP) Endpoint Identifier - Address Family."; - } - - enum mpls-tp-pwe-eid { - value 28; - description - "MPLS-TP Pseudowire Endpoint Identifier Address Family."; - } - - enum mt-v4 { - value 29; - description - "Multi-Topology IPv4 Address Family."; - } - - - - - - enum mt-v6 { - value 30; - description - "Multi-Topology IPv6 Address Family."; - } - - enum bgp-sfc { - value 31; - description - "BGP SFC Address Family."; - reference - "RFC 9015: BGP Control Plane for the Network Service Header in Service Function Chaining."; - } - - enum eigrp-common-sf { - value 16384; - description - "Enhanced Interior Gateway Routing Protocol (EIGRP) - Common Service Family Address Family."; - } - - enum eigrp-v4-sf { - value 16385; - description - "EIGRP IPv4 Service Family Address Family."; - } - - enum eigrp-v6-sf { - value 16386; - description - "EIGRP IPv6 Service Family Address Family."; - } - - enum lcaf { - value 16387; - description - "Locator/ID Separation Protocol (LISP) - Canonical Address Format (LCAF) Address Family."; - } - - enum bgp-ls { - value 16388; - description - "Border Gateway Protocol - Link State (BGP-LS) - Address Family."; - } - - enum mac-48 { - value 16389; - description - "IEEE 48-bit MAC Address Family."; - } - - - - - enum mac-64 { - value 16390; - description - "IEEE 64-bit MAC Address Family."; - } - - enum trill-oui { - value 16391; - description - "Transparent Interconnection of Lots of Links (TRILL) - IEEE Organizationally Unique Identifier (OUI) - Address Family."; - } - - enum trill-mac-24 { - value 16392; - description - "TRILL final 3 octets of 48-bit MAC Address Family."; - } - - enum trill-mac-40 { - value 16393; - description - "TRILL final 5 octets of 64-bit MAC Address Family."; - } - - enum ipv6-64 { - value 16394; - description - "First 8 octets (64 bits) of IPv6 address - Address Family."; - } - - enum trill-rbridge-port-id { - value 16395; - description - "TRILL Routing Bridge (RBridge) Port ID Address Family."; - } - - enum trill-nickname { - value 16396; - description - "TRILL Nickname Address Family."; - } - - enum universally-unique-identifier { - value 16397; - description - "Universally Unique Identifier (UUID)."; - } - - enum routing-policy { - value 16398; - description - "Routing Policy Address Family."; - } - - enum mpls-namespaces { - value 16399; - description - "MPLS Namespaces Address Family."; - } - - } - - - - description - "Enumeration containing all the IANA-defined - Address Families."; - - } - - /*** Subsequent Address Family Identifiers (SAFIs) ***/ - /*** for multiprotocol BGP enumeration ***/ - - typedef bgp-safi { - type enumeration { - enum unicast-safi { - value 1; - description - "Unicast SAFI."; - } - - enum multicast-safi { - value 2; - description - "Multicast SAFI."; - } - - enum labeled-unicast-safi { - value 4; - description - "Labeled Unicast SAFI."; - } - - enum multicast-vpn-safi { - value 5; - description - "Multicast VPN SAFI."; - } - - enum pseudowire-safi { - value 6; - description - "Multi-segment Pseudowire VPN SAFI."; - } - - enum tunnel-encap-safi { - value 7; - description - "Tunnel Encap SAFI (OBSOLETE)."; - } - - - enum mcast-vpls-safi { - value 8; - description - "Multicast Virtual Private LAN Service (VPLS) SAFI."; - } - - enum bgp-sfc-safi { - value 9; - description - "BGP SFC SAFI."; - reference - "RFC 9015: BGP Control Plane for the Network Service Header in Service Function Chaining."; - } - - enum tunnel-safi { - value 64; - description - "Tunnel SAFI."; - } - - enum vpls-safi { - value 65; - description - "VPLS SAFI."; - } - - enum mdt-safi { - value 66; - description - "Multicast Distribution Tree (MDT) SAFI."; - } - - enum v4-over-v6-safi { - value 67; - description - "IPv4 over IPv6 SAFI."; - } - - enum v6-over-v4-safi { - value 68; - description - "IPv6 over IPv4 SAFI."; - } - - enum l1-vpn-auto-discovery-safi { - value 69; - description - "Layer 1 VPN Auto-Discovery SAFI."; - } - - enum evpn-safi { - value 70; - description - "Ethernet VPN (EVPN) SAFI."; - } - - enum bgp-ls-safi { - value 71; - description - "BGP-LS SAFI."; - } - - enum bgp-ls-vpn-safi { - value 72; - description - "BGP-LS VPN SAFI."; - } - - enum sr-te-safi { - value 73; - description - "Segment Routing - Traffic Engineering (SR-TE) SAFI."; - } - - enum sd-wan-capabilities-safi { - value 74; - description - "SD-WAN Capabilities SAFI."; - } - - enum routing-policy-safi { - value 75; - description - "Routing Policy SAFI."; - } - - enum classful-transport-safi { - value 76; - description - "Classful-Transport SAFI."; - } - - enum tunneled-traffic-flowspec-safi { - value 77; - description - "Tunneled Traffic Flowspec SAFI."; - } - - enum mcast-tree-safi { - value 78; - description - "MCAST-TREE SAFI."; - } - - enum bgp-dps-safi { - value 79; - description - "BGP-DPS (Dynamic Path Selection) SAFI."; - } - - enum bgp-ls-spf-safi { - value 80; - description - "BGP-LS-SPF SAFI."; - } - - enum bgp-car-safi { - value 83; - description - "BGP CAR SAFI."; - } - - enum bgp-vpn-car-safi { - value 84; - description - "BGP VPN CAR SAFI."; - } - - enum bgp-mup-safi { - value 85; - description - "BGP-MUP SAFI."; - } - - enum labeled-vpn-safi { - value 128; - description - "MPLS Labeled VPN SAFI."; - } - - enum multicast-mpls-vpn-safi { - value 129; - description - "Multicast for BGP/MPLS IP VPN SAFI."; - } - - enum route-target-safi { - value 132; - description - "Route Target SAFI."; - } - - enum flow-spec-safi { - value 133; - description - "Dissemination of Flow Specification rules SAFI."; - } - - enum l3vpn-flow-spec-safi { - value 134; - description - "L3VPN Dissemination of Flow Specification rules SAFI."; - } - - enum vpn-auto-discovery-safi { - value 140; - description - "VPN Auto-Discovery SAFI."; - } - } - description - "Enumeration for BGP SAFI."; - reference - "RFC 4760: Multiprotocol Extensions for BGP-4."; - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang deleted file mode 100644 index 82799ea03..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-bfd-types@2022-09-22.yang +++ /dev/null @@ -1,690 +0,0 @@ -module ietf-bfd-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-types"; - prefix bfd-types; - - import iana-bfd-types { - prefix iana-bfd-types; - reference - "RFC 9127: YANG Data Model for Bidirectional Forwarding - Detection (BFD)"; - } - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-routing { - prefix rt; - reference - "RFC 8349: A YANG Data Model for Routing Management - (NMDA Version)"; - } - import ietf-key-chain { - prefix key-chain; - reference - "RFC 8177: YANG Data Model for Key Chains"; - } - - organization - "IETF BFD Working Group"; - contact - "WG Web: - WG List: - - Editor: Reshad Rahman - - - Editor: Lianshu Zheng - - - Editor: Mahesh Jethanandani - "; - description - "This module contains a collection of BFD-specific YANG data type - definitions, as per RFC 5880, and also groupings that are common - to other BFD YANG modules. - - Copyright (c) 2022 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 9314; see the - RFC itself for full legal notices."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD) - RFC 9314: YANG Data Model for Bidirectional Forwarding - Detection (BFD)"; - - revision 2022-09-22 { - description - "This revision is not backwards compatible with the - previous version of this model. - - This revision adds an 'if-feature' statement called - 'client-base-cfg-parms' for client configuration parameters. - Clients expecting to use those parameters now need to - verify that the server declares support of the feature - before depending on the presence of the parameters. - - The change was introduced for clients that do not need - them and have to deviate to prevent them from being - included."; - reference - "RFC 9314: YANG Data Model for Bidirectional Forwarding - Detection (BFD)."; - } - revision 2021-10-21 { - description - "Initial revision."; - reference - "RFC 9127: YANG Data Model for Bidirectional Forwarding - Detection (BFD)"; - } - - /* - * Feature definitions - */ - - feature single-minimum-interval { - description - "This feature indicates that the server supports configuration - of one minimum interval value that is used for both transmit - and receive minimum intervals."; - } - - feature authentication { - description - "This feature indicates that the server supports BFD - authentication."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD), - Section 6.7"; - } - - feature demand-mode { - description - "This feature indicates that the server supports BFD Demand - mode."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD), - Section 6.6"; - } - - feature echo-mode { - description - "This feature indicates that the server supports BFD Echo - mode."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD), - Section 6.4"; - } - - feature client-base-cfg-parms { - description - "This feature allows protocol models to configure BFD client - session parameters."; - reference - "RFC 9314: YANG Data Model for Bidirectional Forwarding - Detection (BFD)."; - } - - /* - * Identity definitions - */ - - identity bfdv1 { - base rt:control-plane-protocol; - description - "BFD protocol version 1."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD)"; - } - - identity path-type { - description - "Base identity for the BFD path type. The path type indicates - the type of path on which BFD is running."; - } - - identity path-ip-sh { - base path-type; - description - "BFD on IP single-hop."; - reference - "RFC 5881: Bidirectional Forwarding Detection (BFD) - for IPv4 and IPv6 (Single Hop)"; - } - - identity path-ip-mh { - base path-type; - description - "BFD on IP multihop paths."; - reference - "RFC 5883: Bidirectional Forwarding Detection (BFD) for - Multihop Paths"; - } - - identity path-mpls-te { - base path-type; - description - "BFD on MPLS Traffic Engineering."; - reference - "RFC 5884: Bidirectional Forwarding Detection (BFD) - for MPLS Label Switched Paths (LSPs)"; - } - - identity path-mpls-lsp { - base path-type; - description - "BFD on an MPLS Label Switched Path."; - reference - "RFC 5884: Bidirectional Forwarding Detection (BFD) - for MPLS Label Switched Paths (LSPs)"; - } - - identity path-lag { - base path-type; - description - "Micro-BFD on LAG member links."; - reference - "RFC 7130: Bidirectional Forwarding Detection (BFD) on - Link Aggregation Group (LAG) Interfaces"; - } - - identity encap-type { - description - "Base identity for BFD encapsulation type."; - } - - identity encap-ip { - base encap-type; - description - "BFD with IP encapsulation."; - } - - /* - * Type definitions - */ - - typedef discriminator { - type uint32; - description - "BFD Discriminator as described in RFC 5880."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD)"; - } - - typedef state { - type enumeration { - enum adminDown { - value 0; - description - "'adminDown' state."; - } - enum down { - value 1; - description - "'Down' state."; - } - enum init { - value 2; - description - "'Init' state."; - } - enum up { - value 3; - description - "'Up' state."; - } - } - description - "BFD states as defined in RFC 5880."; - } - - typedef multiplier { - type uint8 { - range "1..255"; - } - description - "BFD multiplier as described in RFC 5880."; - } - - typedef hops { - type uint8 { - range "1..255"; - } - description - "This corresponds to Time To Live for IPv4 and corresponds to - the hop limit for IPv6."; - } - - /* - * Groupings - */ - - grouping auth-parms { - description - "Grouping for BFD authentication parameters - (see Section 6.7 of RFC 5880)."; - container authentication { - if-feature "authentication"; - presence "Enables BFD authentication (see Section 6.7 - of RFC 5880)."; - description - "Parameters for BFD authentication."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD), - Section 6.7"; - leaf key-chain { - type key-chain:key-chain-ref; - description - "Name of the 'key-chain' as per RFC 8177."; - } - leaf meticulous { - type boolean; - description - "Enables a meticulous mode as per Section 6.7 of - RFC 5880."; - } - } - } - - grouping base-cfg-parms { - description - "BFD grouping for base configuration parameters."; - leaf local-multiplier { - type multiplier; - default "3"; - description - "Multiplier transmitted by the local system."; - } - choice interval-config-type { - default "tx-rx-intervals"; - description - "Two interval values or one value used for both transmit and - receive."; - case tx-rx-intervals { - leaf desired-min-tx-interval { - type uint32; - units "microseconds"; - default "1000000"; - description - "Desired minimum transmit interval of control packets."; - } - leaf required-min-rx-interval { - type uint32; - units "microseconds"; - default "1000000"; - description - "Required minimum receive interval of control packets."; - } - } - case single-interval { - if-feature "single-minimum-interval"; - leaf min-interval { - type uint32; - units "microseconds"; - default "1000000"; - description - "Desired minimum transmit interval and required - minimum receive interval of control packets."; - } - } - } - } - - grouping client-cfg-parms { - description - "BFD grouping for configuration parameters - used by BFD clients, e.g., IGP or MPLS."; - leaf enabled { - type boolean; - default "false"; - description - "Indicates whether BFD is enabled."; - } - uses base-cfg-parms { - if-feature "client-base-cfg-parms"; - } - } - - grouping common-cfg-parms { - description - "BFD grouping for common configuration parameters."; - uses base-cfg-parms; - leaf demand-enabled { - if-feature "demand-mode"; - type boolean; - default "false"; - description - "To enable Demand mode."; - } - leaf admin-down { - type boolean; - default "false"; - description - "Indicates whether the BFD session is administratively - down."; - } - uses auth-parms; - } - - grouping all-session { - description - "BFD session operational information."; - leaf path-type { - type identityref { - base path-type; - } - config false; - description - "BFD path type. This indicates the path type that BFD is - running on."; - } - leaf ip-encapsulation { - type boolean; - config false; - description - "Indicates whether BFD encapsulation uses IP."; - } - leaf local-discriminator { - type discriminator; - config false; - description - "Local discriminator."; - } - leaf remote-discriminator { - type discriminator; - config false; - description - "Remote discriminator."; - } - leaf remote-multiplier { - type multiplier; - config false; - description - "Remote multiplier."; - } - leaf demand-capability { - if-feature "demand-mode"; - type boolean; - config false; - description - "Local Demand mode capability."; - } - leaf source-port { - when "../ip-encapsulation = 'true'" { - description - "Source port valid only when IP encapsulation is used."; - } - type inet:port-number; - config false; - description - "Source UDP port."; - } - leaf dest-port { - when "../ip-encapsulation = 'true'" { - description - "Destination port valid only when IP encapsulation - is used."; - } - type inet:port-number; - config false; - description - "Destination UDP port."; - } - container session-running { - config false; - description - "BFD 'session-running' information."; - leaf session-index { - type uint32; - description - "An index used to uniquely identify BFD sessions."; - } - leaf local-state { - type state; - description - "Local state."; - } - leaf remote-state { - type state; - description - "Remote state."; - } - leaf local-diagnostic { - type iana-bfd-types:diagnostic; - description - "Local diagnostic."; - } - leaf remote-diagnostic { - type iana-bfd-types:diagnostic; - description - "Remote diagnostic."; - } - leaf remote-authenticated { - type boolean; - description - "Indicates whether incoming BFD control packets are - authenticated."; - } - leaf remote-authentication-type { - when "../remote-authenticated = 'true'" { - description - "Only valid when incoming BFD control packets are - authenticated."; - } - if-feature "authentication"; - type iana-bfd-types:auth-type; - description - "Authentication type of incoming BFD control packets."; - } - leaf detection-mode { - type enumeration { - enum async-with-echo { - value 1; - description - "Async with echo."; - } - enum async-without-echo { - value 2; - description - "Async without echo."; - } - enum demand-with-echo { - value 3; - description - "Demand with echo."; - } - enum demand-without-echo { - value 4; - description - "Demand without echo."; - } - } - description - "Detection mode."; - } - leaf negotiated-tx-interval { - type uint32; - units "microseconds"; - description - "Negotiated transmit interval."; - } - leaf negotiated-rx-interval { - type uint32; - units "microseconds"; - description - "Negotiated receive interval."; - } - leaf detection-time { - type uint32; - units "microseconds"; - description - "Detection time."; - } - leaf echo-tx-interval-in-use { - when "../../path-type = 'bfd-types:path-ip-sh'" { - description - "Echo is supported for IP single-hop only."; - } - if-feature "echo-mode"; - type uint32; - units "microseconds"; - description - "Echo transmit interval in use."; - } - } - container session-statistics { - config false; - description - "BFD per-session statistics."; - leaf create-time { - type yang:date-and-time; - description - "Time and date when this session was created."; - } - leaf last-down-time { - type yang:date-and-time; - description - "Time and date of the last time this session went down."; - } - leaf last-up-time { - type yang:date-and-time; - description - "Time and date of the last time this session went up."; - } - leaf down-count { - type yang:counter32; - description - "The number of times this session has transitioned to the - 'down' state."; - } - leaf admin-down-count { - type yang:counter32; - description - "The number of times this session has transitioned to the - 'admin-down' state."; - } - leaf receive-packet-count { - type yang:counter64; - description - "Count of received packets in this session. This includes - valid and invalid received packets."; - } - leaf send-packet-count { - type yang:counter64; - description - "Count of sent packets in this session."; - } - leaf receive-invalid-packet-count { - type yang:counter64; - description - "Count of invalid received packets in this session."; - } - leaf send-failed-packet-count { - type yang:counter64; - description - "Count of packets that failed to be sent in this session."; - } - } - } - - grouping session-statistics-summary { - description - "Grouping for session statistics summary."; - container summary { - config false; - description - "BFD session statistics summary."; - leaf number-of-sessions { - type yang:gauge32; - description - "Number of BFD sessions."; - } - leaf number-of-sessions-up { - type yang:gauge32; - description - "Number of BFD sessions currently in the 'Up' state - (as defined in RFC 5880)."; - } - leaf number-of-sessions-down { - type yang:gauge32; - description - "Number of BFD sessions currently in the 'Down' or 'Init' - state but not 'adminDown' (as defined in RFC 5880)."; - } - leaf number-of-sessions-admin-down { - type yang:gauge32; - description - "Number of BFD sessions currently in the 'adminDown' state - (as defined in RFC 5880)."; - } - } - } - - grouping notification-parms { - description - "This group describes common parameters that will be sent - as part of BFD notifications."; - leaf local-discr { - type discriminator; - description - "BFD local discriminator."; - } - leaf remote-discr { - type discriminator; - description - "BFD remote discriminator."; - } - leaf new-state { - type state; - description - "Current BFD state."; - } - leaf state-change-reason { - type iana-bfd-types:diagnostic; - description - "Reason for the BFD state change."; - } - leaf time-of-last-state-change { - type yang:date-and-time; - description - "Calendar time of the most recent previous state change."; - } - leaf dest-addr { - type inet:ip-address; - description - "BFD peer address."; - } - leaf source-addr { - type inet:ip-address; - description - "BFD local address."; - } - leaf session-index { - type uint32; - description - "An index used to uniquely identify BFD sessions."; - } - leaf path-type { - type identityref { - base path-type; - } - description - "BFD path type."; - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang deleted file mode 100644 index b182f7f5a..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-te-topology@2023-09-28.yang +++ /dev/null @@ -1,2275 +0,0 @@ - module ietf-eth-te-topology { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology"; - prefix "etht"; - - import ietf-network { - prefix "nw"; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - import ietf-network-topology { - prefix "nt"; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - import ietf-te-topology { - prefix "tet"; - reference - "RFC 8795: YANG Data Model for Traffic Engineering - (TE) Topologies"; - } - - import ietf-yang-types { - prefix "yang"; - reference - "RFC 6991: Common YANG Data Types"; - } - - import ietf-eth-tran-types { - prefix "etht-types"; - reference - "RFC YYYY: A YANG Data Model for Transport Network Client - Signals"; - } - // RFC Ed.: replace YYYY with actual RFC number, update date - // information and remove this note - - organization - "IETF CCAMP Working Group"; - contact - "WG Web: - WG List: - - Editor: Haomian Zheng - - - Editor: Italo Busi - - - Editor: Aihua Guo - - - Editor: Yunbin Xu - - - Editor: Yang Zhao - - - Editor: Xufeng Liu - "; - - description - "This module defines a YANG data model for describing - layer-2 Ethernet transport topologies. The model fully - conforms to the Network Management Datastore - Architecture (NMDA). - - Copyright (c) 2023 IETF Trust and the persons identified - as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here."; - - revision 2023-09-28 { - description - "Initial Revision"; - reference - "RFC XXXX: A YANG Data Model for Ethernet TE Topology"; - // RFC Ed.: replace XXXX with actual RFC number, update date - // information and remove this note - } - - /* - * Groupings - */ - - grouping label-range-info { - description - "Ethernet technology-specific label range related - information with a presence container indicating that the - label range is an Ethernet technology-specific label range. - - This grouping SHOULD be used together with the - eth-label and eth-label-step groupings to provide Ethernet - technology-specific label information to the models which - use the label-restriction-info grouping defined in the module - ietf-te-types."; - - container ethernet-label-range { - presence - "Indicates the label range is an Ethernet label range. - - This container must not be present if there are other - presence containers or attributes indicating another type - of label range."; - description - "Ethernet-specific label range related information."; - - uses etht-types:eth-label-restriction; - } - } - - grouping eth-tran-topology-type { - description - "Identifies the Ethernet Transport topology type"; - - container eth-tran-topology { - presence "indicates a topology type of - Ethernet Transport Network."; - description "Eth transport topology type"; - } - } - - grouping ltp-bandwidth-profiles { - description - "A grouping which represents the bandwidth profile(s) - for the ETH LTP."; - - choice direction { - description - "Whether the bandwidth profiles are symmetrical or - asymmetrical"; - case symmetrical { - description - "The same bandwidth profile is used to describe the ingress - and the egress bandwidth profile."; - - container ingress-egress-bandwidth-profile { - description - "The bandwith profile used in the ingress and egress - direction."; - uses etht-types:etht-bandwidth-profiles; - } - } - case asymmetrical { - description - "Different ingress and egress bandwidth profiles - can be specified."; - container ingress-bandwidth-profile { - description - "The bandwidth profile used in the ingress direction."; - uses etht-types:etht-bandwidth-profiles; - } - container egress-bandwidth-profile { - description - "The bandwidth profile used in the egress direction."; - uses etht-types:etht-bandwidth-profiles; - } - } - } - } - grouping eth-ltp-attributes { - description - "Ethernet transport Link Termination Point (LTP) attributes"; - - leaf ltp-mac-address { - type yang:mac-address; - description - "The MAC address of the Ethernet LTP."; - } - leaf port-vlan-id { - type etht-types:vlanid; - description - "The Port VLAN ID of the Ethernet LTP."; - reference - "IEEE 802.1Q: Virtual Bridged Local Area Networks"; - } - leaf maximum-frame-size { - type uint16 { - range "64 .. 65535"; - } - description - "Maximum frame size"; - reference - "IEEE 802.1Q: Virtual Bridged Local Area Networks"; - } - uses ltp-bandwidth-profiles; - } - - grouping svc-vlan-classification { - description - "Grouping defining the capabilities for VLAN classification."; - - leaf-list supported-tag-types { - type etht-types:eth-tag-classify; - description - "List of VLAN tag types that can be used for the VLAN - classification. In case VLAN classification is not - supported, the list is empty."; - } - leaf vlan-bundling { - type boolean; - description - "In case VLAN classification is supported, indicates whether - VLAN bundling classification is also supported."; - reference - "MEF 10.3: Ethernet Services Attributes Phase 3"; - } - leaf vlan-range { - type etht-types:vid-range-type; - description - "In case VLAN classification is supported, indicates the - of available VLAN ID values."; - } - } - - grouping svc-vlan-push { - description - "Grouping defining the capabilities for VLAN push or swap - operations."; - - leaf-list supported-tag-types { - type etht-types:eth-tag-type; - description - "List of VLAN tag types that can be used to push or swap a - VLAN tag. In case VLAN push/swap is not supported, the list - is empty."; - reference - "IEEE 802.1Q: Virtual Bridged Local Area Networks"; - } - leaf vlan-range { - type etht-types:vid-range-type; - description - "In case VLAN push/swap operation is supported, the range - of available VLAN ID values."; - } - } - - grouping eth-svc-attributes { - description - "Ethernet Link Termination Point (LTP) service attributes."; - - container supported-classification { - description - "Service classification capability supported by the - Ethernet Link Termination Point (LTP)."; - - leaf port-classification { - type boolean; - description - "Indicates that the ETH LTP support port-based service - classification."; - } - container vlan-classification { - description - "Service classification capabilities based on the VLAN - tag(s) supported by the ETH LTP."; - leaf vlan-tag-classification { - type boolean; - description - "Indicates that the ETH LTP supports VLAN service - classification."; - } - container outer-tag { - description - "Service classification capabilities based on the outer - VLAN tag, supported by the ETH LTP."; - uses svc-vlan-classification; - } - container second-tag { - description - "Service classification capabilities based on the second - VLAN tag, supported by the ETH LTP."; - leaf second-tag-classification { - type boolean; - must ". = 'false' or " - + "../../vlan-tag-classification = 'true'" { - description - "VLAN service classification based on the second - VLAN tag can be supported only when VLAN service - classification"; - } - description - "Indicates that the ETH LTP support VLAN service - classification based on the second VLAN tag."; - } - uses svc-vlan-classification; - } - } - } - - container supported-vlan-operations { - description - "Reports the VLAN operations supported by the ETH LTP."; - - leaf asymmetrical-operations { - type boolean; - description - "Indicates whether the ETH LTP supports also asymmetrical - VLAN operations.It is assumed that symmetrical VLAN - operations are alwyas supported."; - } - leaf transparent-vlan-operations { - type boolean; - description - "Indicates that the ETH LTP supports transparent - operations."; - } - container vlan-pop { - description - "Indicates VLAN pop or swap operations capabilities."; - - leaf vlan-pop-operations { - type boolean; - description - "Indicates that the ETH LTP supports VLAN pop or - swap operations."; - } - leaf max-pop-tags { - type uint8 { - range "1..2"; - } - description - "Indicates the maximum number of tags that can be - popped/swapped."; - } - } - container vlan-push { - description - "Indicates VLAN push or swap operations capabilities."; - - leaf vlan-push-operation { - type boolean; - description - "Indicates that the ETH LTP supports VLAN push or - swap operations."; - } - container outer-tag { - description - "Indicates the supported VLAN operation capabilities - on the outer VLAN tag."; - uses svc-vlan-push; - } - container second-tag { - description - "Indicates the supported VLAN operation capabilities - on the second VLAN tag."; - leaf push-second-tag { - type boolean; - description - "Indicates that the ETH LTP supports VLAN push or swap - operations for the second VLAN tag."; - } - uses svc-vlan-push; - } - } - } - } - - /* - * Data nodes - */ - - augment "/nw:networks/nw:network/nw:network-types/" - + "tet:te-topology" { - description - "Augment network types to include ETH transport newtork"; - - uses eth-tran-topology-type; - } - - augment "/nw:networks/nw:network/nw:node/tet:te" - + "/tet:te-node-attributes" { - when "../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description "Augment only for Ethernet transport network."; - } - description "Augment TE node attributes."; - container eth-node { - presence "The TE node is an Ethernet node."; - description - "Presence container used only to indicate that the TE node - is an Ethernet node."; - } - } - - augment "/nw:networks/nw:network/nt:link" { - when "../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description "Augment only for Ethernet transport network."; - } - description "Augment link configuration"; - - container eth-svc { - presence - "When present, indicates that the Link supports Ethernet - client signals."; - description - "Presence container used only to indicate that the link - supports Ethernet client signals."; - } - } - - augment "/nw:networks/nw:network/nw:node/nt:termination-point" { - when "../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description "Augment only for Ethernet transport network."; - } - description - "Augment ETH LTP attributes"; - - container eth-svc { - presence - "When present, indicates that the Link Termination Point - (LTP) supports Ethernet client signals."; - description - "ETH LTP Service attributes."; - - uses eth-svc-attributes; - } - container eth-link-tp { - description - "Attributes of the Ethernet Link Termination Point (LTP)."; - uses eth-ltp-attributes; - } - } - - /* - * Augment TE bandwidth - */ - - augment "/nw:networks/nw:network/nw:node/nt:termination-point/" - + "tet:te/" - + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment maximum LSP TE bandwidth for the link termination - point (LTP)."; - case eth { - uses etht-types:eth-bandwidth; - } - } - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE bandwidth path constraints of the TE node - connectivity matrices."; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE bandwidth path constraints of the - connectivity matrix entry."; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE bandwidth path constraints of the TE node - connectivity matrices information source."; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE bandwidth path constraints of the - connectivity matrix entry information source"; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:client-layer-adaptation/tet:switching-capability/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment client TE bandwidth of the tunnel termination point - (TTP)"; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/tet:path-constraints/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE bandwidth path constraints for the TTP - Local Link Connectivities."; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/tet:path-constraints/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE bandwidth path constraints for the TTP - Local Link Connectivity entry."; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment maximum LSP TE bandwidth for the TE link."; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment maximum TE bandwidth for the TE link"; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment maximum reservable TE bandwidth for the TE link"; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment unreserved TE bandwidth for the TE Link"; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:interface-switching-capability/" - + "tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment maximum LSP TE bandwidth for the TE link - information source"; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment maximum TE bandwidth for the TE link - information source"; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment maximum reservable TE bandwidth for the TE link - information-source"; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment unreserved TE bandwidth of the TE link - information source"; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:interface-switching-capability/" - + "tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - description - "Augment maximum LSP TE bandwidth of the TE link - template"; - case eth { - uses etht-types:eth-bandwidth; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth" { - description - "Augment maximum TE bandwidth the TE link template"; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth" { - description - "Augment maximum reservable TE bandwidth for the TE link - template."; - uses etht-types:eth-bandwidth; - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth" { - description - "Augment unreserved TE bandwidth the TE link template"; - uses etht-types:eth-bandwidth; - } - - /* - * Augment TE label range information - */ - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the TE node - connectivity matrices."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the source LTP - of the connectivity matrix entry."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the destination LTP - of the connectivity matrix entry."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the TE node - connectivity matrices information source."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the source LTP - of the connectivity matrix entry information source."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the destination LTP - of the connectivity matrix entry information source."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the TTP - Local Link Connectivities."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the TTP - Local Link Connectivity entry."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the TE link."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range information for the TE link - information source."; - uses label-range-info; - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction" { - description - "Augment TE label range information for the TE link template."; - uses label-range-info; - } - - /* - * Augment TE label. - */ - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the TE node - connectivity matrices"; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/" - + "tet:label-restriction/tet:label-end/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the TE node - connectivity matrices"; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/" - + "tet:label-restriction/tet:label-step/" - + "tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the TE node - connectivity matrices"; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:underlay/tet:primary-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay primary path of the - TE node connectivity matrices"; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:underlay/tet:backup-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay backup path of the - TE node connectivity matrices"; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TE node connectivity - matrices"; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TE node connectivity - matrices"; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the TE node connectivity matrices"; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the source LTP - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the source LTP - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/" - + "tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the source LTP - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the destination LTP - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the destination LTP - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/" - + "tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the destination LTP - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:primary-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:backup-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:optimizations/" - + "tet:algorithm/tet:metric/tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:optimizations/" - + "tet:algorithm/tet:metric/tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the connectivity matrix entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the TE node connectivity - matrices information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the TE node connectivity - matrices information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the TE node connectivity - matrices information source."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TE node connectivity matrices of the information - source entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TE node connectivity matrices of the information - source entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TE node connectivity matrices - information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TE node connectivity matrices - information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the TE node connectivity matrices information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the source LTP - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label; - } - } - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the source LTP - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the source LTP - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the destination LTP - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the destination LTP - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the destination LTP - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the connectivity matrix entry - information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the connectivity matrix entry - information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the connectivity matrix entry information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the TTP - Local Link Connectivities."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/" - + "tet:te-label/tet:technology"{ - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the TTP - Local Link Connectivities."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/" - + "tet:technology"{ - when "../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the TTP - Local Link Connectivities."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TTP Local Link Connectivities."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TTP Local Link Connectivities."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TTP Local Link - Connectivities."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TTP Local Link - Connectivities."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the TTP Local Link Connectivities."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the TTP - Local Link Connectivity entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the TTP - Local Link Connectivity entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the TTP - Local Link Connectivity entry."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TTP Local Link Connectivity entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TTP Local Link Connectivity entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TTP Local Link - Connectivity entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TTP Local Link - Connectivity entry."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the TTP Local Link Connectivity entry."; - case eth { - uses etht-types:eth-label; - } - } - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TE link."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TE link."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the TE link."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the TE link."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the TE link."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range start for the TE link - information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range end for the TE link - information source."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "etht:eth-tran-topology" { - description - "Augmentation parameters apply only for networks with - Ethernet topology type."; - } - description - "Augment TE label range step for the TE link - information source."; - case eth { - uses etht-types:eth-label-step; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - description - "Augment TE label hop for the underlay primary path - of the TE link template."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - description - "Augment TE label hop for the underlay backup path - of the TE link template."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - description - "Augment TE label range start for the TE link template."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - description - "Augment TE label range end for the TE link template."; - case eth { - uses etht-types:eth-label; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - description - "Augment TE label range step for the TE link template."; - case eth { - uses etht-types:eth-label-step; - } - } - - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang deleted file mode 100644 index 222066adf..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-service@2023-10-23.yang +++ /dev/null @@ -1,1004 +0,0 @@ - module ietf-eth-tran-service { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service"; - - prefix "ethtsvc"; - import ietf-yang-types { - prefix "yang"; - reference "RFC 6991 - Common YANG Data Types"; - } - - import ietf-network { - prefix "nw"; - reference "RFC8345 - A YANG Data Model for Network Topologies"; - } - - import ietf-network-topology { - prefix "nt"; - reference "RFC8345 - A YANG Data Model for Network Topologies"; - } - - import ietf-te-types { - prefix "te-types"; - reference "RFC 8776 - Traffic Engineering Common YANG Types"; - } - - import ietf-eth-tran-types { - prefix "etht-types"; - reference "RFC XXXX - A YANG Data Model for Transport - Network Client Signals"; - } - - import ietf-routing-types { - prefix "rt-types"; - reference "RFC 8294 - Common YANG Data Types for the - Routing Area"; - - } - - import ietf-te { - prefix "te"; - reference "RFC YYYY - A YANG Data Model for Traffic - Engineering Tunnels and Interfaces"; - } - - organization - "Internet Engineering Task Force (IETF) CCAMP WG"; - contact - " - WG List: - - ID-draft editor: - Haomian Zheng (zhenghaomian@huawei.com); - Italo Busi (italo.busi@huawei.com); - Aihua Guo (aihuaguo.ietf@gmail.com); - Anton Snitser (antons@sedonasys.com);0 - Francesco Lazzeri (francesco.lazzeri@ericsson.com); - Yunbin Xu (xuyunbin@caict.ac.cn); - Yang Zhao (zhaoyangyjy@chinamobile.com); - Xufeng Liu (xufeng.liu.ietf@gmail.com); - Giuseppe Fioccola (giuseppe.fioccola@huawei.com); - Chaode Yu (yuchaode@huawei.com) - "; - - description - "This module defines a YANG data model for describing - the Ethernet services. The model fully conforms to the - Network Management Datastore Architecture (NMDA). - - Copyright (c) 2021 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - - revision 2023-10-23 { - description - "version -04 as an WG document"; - reference - "draft-ietf-ccamp-client-signal-yang"; - } - - /* - * Groupings - */ - - grouping vlan-classification { - description - "A grouping which represents classification - on an 802.1Q VLAN tag."; - - leaf tag-type { - type etht-types:eth-tag-classify; - description - "The tag type used for VLAN classification."; - } - choice individual-bundling-vlan { - description - "VLAN based classification can be individual - or bundling."; - - case individual-vlan { - leaf vlan-value { - type etht-types:vlanid; - description - "VLAN ID value."; - } - } - - case vlan-bundling { - leaf vlan-range { - type etht-types:vid-range-type; - description - "List of VLAN ID values."; - } - } - } - } - - grouping vlan-write { - description - "A grouping which represents push/pop operations - of an 802.1Q VLAN tag."; - - leaf tag-type { - type etht-types:eth-tag-type; - description - "The VLAN tag type to push/swap."; - } - leaf vlan-value { - type etht-types:vlanid; - description - "The VLAN ID value to push/swap."; - } - /* - * To be added: this attribute is used when: - * a) the ETH service has only one CoS (as in current version) - * b) as a default when a mapping between a given CoS value - * and the PCP value is not defined (in future versions) - */ - leaf default-pcp { - type uint8 { - range "0..7"; - } - description - "The default Priority Code Point (PCP) value to push/swap"; - } - } - - grouping vlan-operations { - description - "A grouping which represents VLAN operations."; - - leaf pop-tags { - type uint8 { - range "1..2"; - } - description - "The number of VLAN tags to pop (or swap if used in - conjunction with push-tags)"; - } - container push-tags { - description - "The VLAN tags to push (or swap if used in - conjunction with pop-tags)"; - - container outer-tag { - presence - "Indicates existence of the outermost VLAN tag to - push/swap"; - - description - "The outermost VLAN tag to push/swap."; - - uses vlan-write; - } - container second-tag { - must - '../outer-tag/tag-type = "etht-types:s-vlan-tag-type" and ' + - 'tag-type = "etht-types:c-vlan-tag-type"' - { - - error-message - " - When pushing/swapping two tags, the outermost tag must - be specified and of S-VLAN type and the second - outermost tag must be of C-VLAN tag type. - "; - description - " - For IEEE 802.1Q interoperability, when pushing/swapping - two tags, it is required that the outermost tag exists - and is an S-VLAN, and the second outermost tag is a - C-VLAN. - "; - } - - presence - "Indicates existence of a second outermost VLAN tag to - push/swap"; - - description - "The second outermost VLAN tag to push/swap."; - uses vlan-write; - } - } - } - - grouping named-or-value-bandwidth-profile { - description - "A grouping to configure a bandwdith profile either by - referencing a named bandwidth profile or by - configuring the values of the bandwidth profile attributes."; - choice style { - description - "Whether the bandwidth profile is named or defined by value"; - - case named { - description - "Named bandwidth profile."; - leaf bandwidth-profile-name { - type leafref { - path "/ethtsvc:etht-svc/ethtsvc:globals/" - + "ethtsvc:named-bandwidth-profiles/" - + "ethtsvc:bandwidth-profile-name"; - } - description - "Name of the bandwidth profile."; - } - } - case value { - description - "Bandwidth profile configured by value."; - uses etht-types:etht-bandwidth-profiles; - } - } - } - - grouping bandwidth-profiles { - description - "A grouping which represent bandwidth profile configuration."; - - choice direction { - description - "Whether the bandwidth profiles are symmetrical or - asymmetrical"; - case symmetrical { - description - "The same bandwidth profile is used to describe both - the ingress and the egress bandwidth profile."; - container ingress-egress-bandwidth-profile { - description - "The bandwdith profile used in both directions."; - uses named-or-value-bandwidth-profile; - } - } - case asymmetrical { - description - "Ingress and egress bandwidth profiles can be specified."; - container ingress-bandwidth-profile { - description - "The bandwdith profile used in the ingress direction."; - uses named-or-value-bandwidth-profile; - } - container egress-bandwidth-profile { - description - "The bandwdith profile used in the egress direction."; - uses named-or-value-bandwidth-profile; - } - } - } - } - - grouping etht-svc-access-parameters { - description - "ETH services access parameters"; - - leaf access-node-id { - type te-types:te-node-id; - description - "The identifier of the access node in - the ETH TE topology."; - } - - leaf access-node-uri { - type nw:node-id; - description - "The identifier of the access node in the network."; - } - - leaf access-ltp-id { - type te-types:te-tp-id; - description - "The TE link termination point identifier, used - together with access-node-id to identify the - access LTP."; - } - - leaf access-ltp-uri { - type nt:tp-id; - description - "The link termination point identifier in network topology, - used together with access-node-uri to identify the - access LTP."; - } - - leaf access-role { - type identityref { - base etht-types:access-role; - } - description - "Indicate the role of access, e.g., working or protection. "; - } - - container pm-config { - uses pm-config-grouping; - description - "This grouping is used to set the threshold value for - performance monitoring. "; - } - - container state { - config false; - description - "The state is used to monitor the status of service. "; - leaf operational-state { - type identityref { - base te-types:tunnel-state-type; - } - description - "Indicating the operational state of client signal. "; - } - leaf provisioning-state { - type identityref { - base te-types:lsp-state-type; - } - description - "Indicating the provisional state of client signal, - especially when there is a change, i.e., revise, create. "; - } - } - - leaf performance { - type identityref { - base etht-types:performance; - } - config false; - description - "Performance Monitoring for the service. "; - } - - } - - grouping etht-svc-tunnel-parameters { - description - "ETH services tunnel parameters."; - choice technology { - description - "Service multiplexing is optional and flexible."; - - case native-ethernet { - /* - placeholder to support proprietary multiplexing - (for further discussion) - */ - list eth-tunnels { - key name; - description - "ETH Tunnel list in native Ethernet scenario."; - uses tunnels-grouping; - } - } - - case frame-base { - list otn-tunnels { - key name; - description - "OTN Tunnel list in Frame-based scenario."; - uses tunnels-grouping; - } - } - - case mpls-tp { - container pw { - description - "Pseudowire information for Ethernet over MPLS-TP."; - uses pw-segment-grouping; - } - } - } - - /* - * Open issue: can we constraints it to be used only with mp services? - */ - leaf src-split-horizon-group { - type string; - description - "Identify a split horizon group at the Tunnel source TTP"; - } - leaf dst-split-horizon-group { - type string; - description - "Identify a split horizon group at the Tunnel destination TTP"; - } - } - - grouping etht-svc-pm-threshold-config { - description - "Configuraiton parameters for Ethernet service PM thresholds."; - - leaf sending-rate-high { - type uint64; - description - "High threshold of packet sending rate in kbps."; - } - leaf sending-rate-low { - type uint64; - description - "Low threshold of packet sending rate in kbps."; - } - leaf receiving-rate-high { - type uint64; - description - "High threshold of packet receiving rate in kbps."; - } - leaf receiving-rate-low { - type uint64; - description - "Low threshold of packet receiving rate in kbps."; - } - } - - grouping etht-svc-pm-stats { - description - "Ethernet service PM statistics."; - - leaf sending-rate-too-high { - type uint32; - description - "Counter that indicates the number of times the - sending rate is above the high threshold"; - } - leaf sending-rate-too-low { - type uint32; - description - "Counter that indicates the number of times the - sending rate is below the low threshold"; - } - leaf receiving-rate-too-high { - type uint32; - description - "Counter that indicates the number of times the - receiving rate is above the high threshold"; - } - leaf receiving-rate-too-low { - type uint32; - description - "Counter that indicates the number of times the - receiving rate is below the low threshold"; - } - } - - grouping etht-svc-instance-config { - description - "Configuraiton parameters for Ethernet services."; - - leaf etht-svc-name { - type string; - description - "Name of the ETH service."; - } - - leaf etht-svc-title { - type string; - description - "The Identifier of the ETH service."; - } - - leaf user-label { - type string; - description - "Alias of the ETH service."; - } - - leaf etht-svc-descr { - type string; - description - "Description of the ETH service."; - } - - leaf etht-svc-customer { - type string; - description - "Customer of the ETH service."; - } - - leaf etht-svc-type { - type etht-types:service-type; - description - "Type of ETH service (p2p, mp2mp or rmp)."; - /* Add default as p2p */ - } - - leaf etht-svc-lifecycle { - type etht-types:lifecycle-status; - description - "Lifecycle state of ETH service."; - /* Add default as installed */ - } - uses te-types:te-topology-identifier; - - uses resilience-grouping; - list etht-svc-end-points { - key etht-svc-end-point-name; - description - "The logical end point for the ETH service. "; - uses etht-svc-end-point-grouping; - } - - container alarm-shreshold { - description "threshold configuration for the E2E client signal"; - uses alarm-shreshold-grouping; - } - - container underlay { - description - "The unterlay tunnel information that carrying the - ETH service. "; - uses etht-svc-tunnel-parameters; - } - - leaf admin-status { - type identityref { - base te-types:tunnel-admin-state-type; - } - default te-types:tunnel-admin-state-up; - description "ETH service administrative state."; - } - } - - grouping etht-svc-instance-state { - description - "State parameters for Ethernet services."; - - leaf operational-state { - type identityref { - base te-types:tunnel-state-type; - } - default te-types:tunnel-state-up; - description "ETH service operational state."; - } - leaf provisioning-state { - type identityref { - base te-types:lsp-state-type; - } - description "ETH service provisioning state."; - } - leaf creation-time { - type yang:date-and-time; - description - "Time of ETH service creation."; - } - leaf last-updated-time { - type yang:date-and-time; - description - "Time of ETH service last update."; - } - - leaf created-by { - type string; - description - "The client signal is created by whom, - can be a system or staff ID."; - } - leaf last-updated-by { - type string; - description - "The client signal is last updated by whom, - can be a system or staff ID."; - } - leaf owned-by { - type string; - description - "The client signal is last updated by whom, - can be a system ID."; - } - container pm-state { - description - "PM data of E2E Ethernet service"; - uses pm-state-grouping; - } - container error-info { - description "error messages of configuration"; - uses error-info-grouping; - } - } - - grouping pm-state-grouping { - leaf latency { - description - "latency value of the E2E Ethernet service"; - type uint32; - units microsecond; - } - } - - grouping error-info-grouping { - leaf error-code { - description "error code"; - type uint16; - } - - leaf error-description { - description "detail message of error"; - type string; - } - - leaf error-timestamp { - description "the date and time error is happened"; - type yang:date-and-time; - } - } - - grouping alarm-shreshold-grouping { - leaf latency-threshold { - description "a threshold for the E2E client signal service's - latency. Once the latency value exceed this threshold, an alarm - should be triggered."; - type uint32; - units microsecond; - } - } - - /* - * Data nodes - */ - - container etht-svc { - description - "ETH services."; - - container globals { - description - "Globals Ethernet configuration data container"; - list named-bandwidth-profiles { - key bandwidth-profile-name; - description - "List of named bandwidth profiles used by - Ethernet services."; - - leaf bandwidth-profile-name { - type string; - description - "Name of the bandwidth profile."; - } - uses etht-types:etht-bandwidth-profiles; - } - } - list etht-svc-instances { - key etht-svc-name; - description - "The list of p2p ETH service instances"; - - uses etht-svc-instance-config; - - container state { - config false; - description - "Ethernet Service states."; - - uses etht-svc-instance-state; - } - } - } - - grouping resilience-grouping { - description - "Grouping for resilience configuration. "; - container resilience { - description - "To configure the data plane protection parameters, - currently a placeholder only, future candidate attributes - include, Revert, WTR, Hold-off Timer, ..."; - uses te:protection-restoration-properties; - } - } - - grouping etht-svc-end-point-grouping { - description - "Grouping for the end point configuration."; - leaf etht-svc-end-point-name { - type string; - description - "The name of the logical end point of ETH service. "; - } - - leaf etht-svc-end-point-id { - type string; - description - "The identifier of the logical end point of ETH service."; - } - - leaf etht-svc-end-point-descr { - type string; - description - "The description of the logical end point of ETH service. "; - } - - leaf topology-role { - type identityref { - base etht-types:topology-role; - } - description - "Indicating the underlay topology role, - e.g., hub,spoke, any-to-any "; - } - - container resilience { - description - "Placeholder for resilience configuration, for future study. "; - } - - list etht-svc-access-points { - key access-point-id; - min-elements "1"; - /* - Open Issue: - Is it possible to limit the max-elements only for p2p services? - max-elements "2"; - */ - description - "List of the ETH trasport services access point instances."; - - leaf access-point-id { - type string; - description - "ID of the service access point instance"; - } - uses etht-svc-access-parameters; - } - - leaf service-classification-type { - type identityref { - base etht-types:service-classification-type; - } - description - "Service classification type."; - } - - choice service-classification { - description - "Access classification can be port-based or - VLAN based."; - case port-classification { - /* no additional information */ - } - - case vlan-classification { - container outer-tag { - presence "The outermost VLAN tag exists"; - description - "Classifies traffic using the outermost VLAN tag."; - - uses vlan-classification; - } - container second-tag { - must - '../outer-tag/tag-type = "etht-types:classify-s-vlan" and ' + - 'tag-type = "etht-types:classify-c-vlan"' - { - error-message - " - When matching two tags, the outermost tag must be - specified and of S-VLAN type and the second - outermost tag must be of C-VLAN tag type. - "; - description - " - For IEEE 802.1Q interoperability, when matching two - tags, it is required that the outermost tag exists - and is an S-VLAN, and the second outermost tag is a - C-VLAN. - "; - } - presence "The second outermost VLAN tag exists"; - - description - "Classifies traffic using the second outermost VLAN tag."; - - uses vlan-classification; - } - } - } - - /* - * Open issue: can we constraints it to be used only with mp services? - */ - leaf split-horizon-group { - type string; - description "Identify a split horizon group"; - } - uses bandwidth-profiles; - - container vlan-operations { - description - "Configuration of VLAN operations."; - choice direction { - description - "Whether the VLAN operations are symmetrical or - asymmetrical"; - case symmetrical { - container symmetrical-operation { - uses vlan-operations; - description - "Symmetrical operations. - Expressed in the ingress direction, but - the reverse operation is applied to egress traffic"; - } - } - case asymmetrical { - container asymmetrical-operation { - description "Asymmetrical operations"; - container ingress { - uses vlan-operations; - description "Ingress operations"; - } - container egress { - uses vlan-operations; - description "Egress operations"; - } - } - } - } - } - } - - grouping pm-config-grouping { - description - "Grouping used for Performance Monitoring Configuration. "; - leaf pm-enable { - type boolean; - description - "Whether to enable the performance monitoring."; - } - - leaf sending-rate-high { - type uint64; - description - "The upperbound of sending rate."; - } - - leaf sending-rate-low { - type uint64; - description - "The lowerbound of sending rate."; - } - - leaf receiving-rate-high { - type uint64; - description - "The upperbound of receiving rate."; - } - - leaf receiving-rate-low { - type uint64; - description - "The lowerbound of receiving rate."; - } - } - - grouping pw-segment-grouping { - description - "Grouping used for PW configuration. "; - leaf pw-id { - type string; - description - "The Identifier information of pseudowire. "; - } - - leaf pw-name { - type string; - description - "The name information of pseudowire."; - } - - leaf transmit-label { - type rt-types:mpls-label; - description - "Transmit label information in PW. "; - } - - leaf receive-label { - type rt-types:mpls-label; - description - "Receive label information in PW. "; - } - leaf encapsulation-type { - type identityref { - base etht-types:encapsulation-type; - } - description - "The encapsulation type, raw or tag. "; - } - - leaf oper-status { - type identityref { - base te-types:tunnel-state-type; - } - config false; - description - "The operational state of the PW segment. "; - } - - container ingress-bandwidth-profile { - description - "Bandwidth Profile for ingress. "; - uses pw-segment-named-or-value-bandwidth-profile; - } - - list pw-paths { - key path-id; - description - "A list of pw paths. "; - - leaf path-id { - type uint8; - description - "The identifier of pw paths. "; - - } - - list tp-tunnels { - key name; - description - "Names of TP Tunnel underlay"; - leaf name { - type string; - description - "Names of TP Tunnel underlay"; - } - } - } - - } - grouping pw-segment-named-or-value-bandwidth-profile { - description - "A grouping to configure a bandwdith profile either by - referencing a named bandwidth profile or by - configuring the values of the bandwidth profile attributes."; - choice style { - description - "Whether the bandwidth profile is named or defined by value"; - case named { - description - "Named bandwidth profile."; - leaf bandwidth-profile-name { - type leafref { - path "/ethtsvc:etht-svc/ethtsvc:globals/" - + "ethtsvc:named-bandwidth-profiles/" - + "ethtsvc:bandwidth-profile-name"; - } - description - "Name of the bandwidth profile."; - } - } - case value { - description - "Bandwidth profile configured by value."; - uses etht-types:pw-segement-bandwidth-profile-grouping; - } - } - } - - grouping tunnels-grouping { - description - "A group of tunnels. "; - leaf name { - type leafref { - path "/te:te/te:tunnels/te:tunnel/te:name"; - require-instance false; - } - description "Dependency tunnel name"; - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - description "LSP encoding type"; - reference "RFC3945"; - } - leaf switching-type { - type identityref { - base te-types:switching-capabilities; - } - description "LSP switching type"; - reference "RFC3945"; - } - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang deleted file mode 100644 index f46908b34..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-eth-tran-types@2023-10-23.yang +++ /dev/null @@ -1,457 +0,0 @@ - module ietf-eth-tran-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types"; - - prefix "etht-types"; - - organization - "Internet Engineering Task Force (IETF) CCAMP WG"; - contact - " - WG List: - - ID-draft editor: - Haomian Zheng (zhenghaomian@huawei.com); - Italo Busi (italo.busi@huawei.com); - Aihua Guo (aihuaguo.ietf@gmail.com); - Anton Snitser (antons@sedonasys.com); - Francesco Lazzeri (francesco.lazzeri@ericsson.com); - Yunbin Xu (xuyunbin@caict.ac.cn); - Yang Zhao (zhaoyangyjy@chinamobile.com); - Xufeng Liu (xufeng.liu.ietf@gmail.com); - Giuseppe Fioccola (giuseppe.fioccola@huawei.com); - Chaode Yu (yuchaode@huawei.com) - "; - - description - "This module defines the ETH types. - The model fully conforms to the Network Management - Datastore Architecture (NMDA). - - Copyright (c) 2019 IETF Trust and the persons - identified as authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - - revision 2023-10-23 { - description - "version -05 as a WG draft"; - reference - "draft-ietf-ccamp-client-signal-yang"; - } - - /* - * Identities - */ - - identity eth-vlan-tag-type { - description - "ETH VLAN tag type."; - } - - identity c-vlan-tag-type { - base eth-vlan-tag-type; - description - "802.1Q Customer VLAN"; - } - - identity s-vlan-tag-type { - base eth-vlan-tag-type; - description - "802.1Q Service VLAN (QinQ)"; - } - - identity service-classification-type { - description - "Service classification."; - } - - identity port-classification { - base service-classification-type; - description - "Port classification."; - } - identity vlan-classification { - base service-classification-type; - description - "VLAN classification."; - } - - identity eth-vlan-tag-classify { - description - "VLAN tag classification."; - } - - identity classify-c-vlan { - base eth-vlan-tag-classify; - description - "Classify 802.1Q Customer VLAN tag. - Only C-tag type is accepted"; - } - - identity classify-s-vlan { - base eth-vlan-tag-classify; - description - "Classify 802.1Q Service VLAN (QinQ) tag. - Only S-tag type is accepted"; - } - - identity classify-s-or-c-vlan { - base eth-vlan-tag-classify; - description - "Classify S-VLAN or C-VLAN tag-classify. - Either tag is accepted"; - } - - identity bandwidth-profile-type-ir { - description - "Bandwidth Profile Types"; - } - - identity mef-10-bwp { - base bandwidth-profile-type-ir; - description - "MEF 10 Bandwidth Profile"; - } - - identity rfc-2697-bwp { - base bandwidth-profile-type-ir; - description - "RFC 2697 Bandwidth Profile"; - } - identity rfc-2698-bwp { - base bandwidth-profile-type-ir; - description - "RFC 2698 Bandwidth Profile"; - } - - identity rfc-4115-bwp { - base bandwidth-profile-type-ir; - description - "RFC 4115 Bandwidth Profile"; - } - - identity service-type-ir { - description - "Type of Ethernet service."; - } - - identity p2p-svc { - base service-type-ir; - description - "Ethernet point-to-point service (EPL, EVPL)."; - } - - identity rmp-svc { - base service-type-ir; - description - "Ethernet rooted-multitpoint service (E-TREE, EP-TREE)."; - } - - identity mp2mp-svc { - base service-type-ir; - description - "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN)."; - } - - identity lifecycle-status-ir { - description - "Lifecycle Status."; - } - - identity installed { - base lifecycle-status-ir; - description - "Installed."; - } - - identity planned { - base lifecycle-status-ir; - description - "Planned."; - } - - identity pending-removal { - base lifecycle-status-ir; - description - "Pending Removal."; - } - - /* - * Type Definitions - */ - - typedef eth-tag-type { - type identityref { - base eth-vlan-tag-type; - } - description - "Identifies a specific ETH VLAN tag type."; - } - - typedef eth-tag-classify { - type identityref { - base eth-vlan-tag-classify; - } - description - "Identifies a specific VLAN tag classification."; - } - - typedef vlanid { - type uint16 { - range "1..4094"; - } - description - "The 12-bit VLAN-ID used in the VLAN Tag header."; - } - - typedef vid-range-type { - type string { - pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" + - "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; - } - description - "A list of VLAN Ids, or non overlapping VLAN ranges, in - ascending order, between 1 and 4094. - This type is used to match an ordered list of VLAN Ids, or - contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the - range 1 to 4094, and included in the list in non overlapping - ascending order. - - For example: 1,10-100,50,500-1000"; - } - - typedef bandwidth-profile-type { - type identityref { - base bandwidth-profile-type-ir; - } - description - "Identifies a specific Bandwidth Profile type."; - } - - typedef service-type { - type identityref { - base service-type-ir; - } - description - "Identifies the type of Ethernet service."; - } - - typedef lifecycle-status { - type identityref { - base lifecycle-status-ir; - } - description - "Identifies the lLifecycle Status ."; - } - - /* - * Grouping Definitions - */ - - grouping etht-bandwidth-profiles { - description - "Bandwidth profile configuration paramters."; - - leaf bandwidth-profile-type { - type etht-types:bandwidth-profile-type; - description - "The type of bandwidth profile."; - } - leaf CIR { - type uint64; - description - "Committed Information Rate in Kbps"; - } - leaf CBS { - type uint64; - description - "Committed Burst Size in in KBytes"; - } - leaf EIR { - type uint64; - /* Need to indicate that EIR is not supported by RFC 2697 - - must - '../bw-profile-type = "mef-10-bwp" or ' + - '../bw-profile-type = "rfc-2698-bwp" or ' + - '../bw-profile-type = "rfc-4115-bwp"' - - must - '../bw-profile-type != "rfc-2697-bwp"' - */ - description - "Excess Information Rate in Kbps - In case of RFC 2698, PIR = CIR + EIR"; - } - leaf EBS { - type uint64; - description - "Excess Burst Size in KBytes. - In case of RFC 2698, PBS = CBS + EBS"; - } - leaf color-aware { - type boolean; - description - "Indicates weather the color-mode is - color-aware or color-blind."; - } - leaf coupling-flag { - type boolean; - /* Need to indicate that Coupling Flag is defined only for MEF 10 - - must - '../bw-profile-type = "mef-10-bwp"' - */ - description - "Coupling Flag."; - } - } - - identity topology-role { - description - "The role of underlay topology: e.g., hub, spoke, - any-to-any."; - } - - identity resilience { - description - "Placeholder for resilience information in data plane, - for future study. "; - } - - identity access-role { - description - "Indicating whether the access is a working or protection access."; - } - - identity root-primary { - base access-role; - description - "Designates the primary root UNI of an E-Tree service, and may also - designates the UNI access role of E-LINE and E-LAN service."; - } - - identity root-backup { - base access-role; - description - "Designates the backup root UNI of an E-Tree service."; - } - - identity leaf-access { - base access-role; - description - "Designates the leaf UNI of an E-Tree service."; - } - - identity leaf-edge { - base access-role; - description ""; - } - - identity performance { - description - "Placeholder for performance information, for future study."; - } - - identity encapsulation-type { - description - "Indicating how the service is encapsulated (to PW), e.g, raw or tag. "; - } - grouping pw-segement-bandwidth-profile-grouping { - description - "bandwidth profile grouping for PW segment. "; - leaf bandwidth-profile-type { - type etht-types:bandwidth-profile-type; - description - "The type of bandwidth profile."; - } - leaf CIR { - type uint64; - description - "Committed Information Rate in Kbps"; - } - leaf CBS { - type uint64; - description - "Committed Burst Size in in KBytes"; - } - leaf EIR { - type uint64; - /* Need to indicate that EIR is not supported by RFC 2697 - - must - '../bw-profile-type = "mef-10-bwp" or ' + - '../bw-profile-type = "rfc-2698-bwp" or ' + - '../bw-profile-type = "rfc-4115-bwp"' - - must - '../bw-profile-type != "rfc-2697-bwp"' - */ - description - "Excess Information Rate in Kbps - In case of RFC 2698, PIR = CIR + EIR"; - } - leaf EBS { - type uint64; - description - "Excess Burst Size in KBytes. - In case of RFC 2698, PBS = CBS + EBS"; - } - } - grouping eth-bandwidth { - description - "Available bandwith for ethernet."; - leaf eth-bandwidth { - type uint64{ - range "0..10000000000"; - } - units "Kbps"; - description - "Available bandwith value expressed in kilobits per second"; - } - } - - grouping eth-label-restriction { - description - "Label Restriction for ethernet."; - leaf tag-type { - type etht-types:eth-tag-type; - description "VLAN tag type."; - } - leaf priority { - type uint8; - description "priority."; - } - } - grouping eth-label { - description - "Label for ethernet."; - leaf vlanid { - type etht-types:vlanid; - description - "VLAN tag id."; - } - } - - grouping eth-label-step { - description "Label step for Ethernet VLAN"; - leaf eth-step { - type uint16 { - range "1..4095"; - } - default 1; - description - "Label step which represent possible increments for - an Ethernet VLAN tag."; - reference - "IEEE 802.1ad: Provider Bridges."; - } - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang deleted file mode 100644 index eacefb636..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-inet-types@2013-07-15.yang +++ /dev/null @@ -1,458 +0,0 @@ -module ietf-inet-types { - - namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; - prefix "inet"; - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: David Kessens - - - WG Chair: Juergen Schoenwaelder - - - Editor: Juergen Schoenwaelder - "; - - description - "This module contains a collection of generally useful derived - YANG data types for Internet addresses and related things. - - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - - revision 2013-07-15 { - description - "This revision adds the following new data types: - - ip-address-no-zone - - ipv4-address-no-zone - - ipv6-address-no-zone"; - reference - "RFC 6991: Common YANG Data Types"; - } - - revision 2010-09-24 { - description - "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - } - - /*** collection of types related to protocol fields ***/ - - typedef ip-version { - type enumeration { - enum unknown { - value "0"; - description - "An unknown or unspecified version of the Internet - protocol."; - } - enum ipv4 { - value "1"; - description - "The IPv4 protocol as defined in RFC 791."; - } - enum ipv6 { - value "2"; - description - "The IPv6 protocol as defined in RFC 2460."; - } - } - description - "This value represents the version of the IP protocol. - - In the value set and its semantics, this type is equivalent - to the InetVersion textual convention of the SMIv2."; - reference - "RFC 791: Internet Protocol - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification - RFC 4001: Textual Conventions for Internet Network Addresses"; - } - - typedef dscp { - type uint8 { - range "0..63"; - } - description - "The dscp type represents a Differentiated Services Code Point - that may be used for marking packets in a traffic stream. - In the value set and its semantics, this type is equivalent - to the Dscp textual convention of the SMIv2."; - reference - "RFC 3289: Management Information Base for the Differentiated - Services Architecture - RFC 2474: Definition of the Differentiated Services Field - (DS Field) in the IPv4 and IPv6 Headers - RFC 2780: IANA Allocation Guidelines For Values In - the Internet Protocol and Related Headers"; - } - - typedef ipv6-flow-label { - type uint32 { - range "0..1048575"; - } - description - "The ipv6-flow-label type represents the flow identifier or Flow - Label in an IPv6 packet header that may be used to - discriminate traffic flows. - - In the value set and its semantics, this type is equivalent - to the IPv6FlowLabel textual convention of the SMIv2."; - reference - "RFC 3595: Textual Conventions for IPv6 Flow Label - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; - } - - typedef port-number { - type uint16 { - range "0..65535"; - } - description - "The port-number type represents a 16-bit port number of an - Internet transport-layer protocol such as UDP, TCP, DCCP, or - SCTP. Port numbers are assigned by IANA. A current list of - all assignments is available from . - - Note that the port number value zero is reserved by IANA. In - situations where the value zero does not make sense, it can - be excluded by subtyping the port-number type. - In the value set and its semantics, this type is equivalent - to the InetPortNumber textual convention of the SMIv2."; - reference - "RFC 768: User Datagram Protocol - RFC 793: Transmission Control Protocol - RFC 4960: Stream Control Transmission Protocol - RFC 4340: Datagram Congestion Control Protocol (DCCP) - RFC 4001: Textual Conventions for Internet Network Addresses"; - } - - /*** collection of types related to autonomous systems ***/ - - typedef as-number { - type uint32; - description - "The as-number type represents autonomous system numbers - which identify an Autonomous System (AS). An AS is a set - of routers under a single technical administration, using - an interior gateway protocol and common metrics to route - packets within the AS, and using an exterior gateway - protocol to route packets to other ASes. IANA maintains - the AS number space and has delegated large parts to the - regional registries. - - Autonomous system numbers were originally limited to 16 - bits. BGP extensions have enlarged the autonomous system - number space to 32 bits. This type therefore uses an uint32 - base type without a range restriction in order to support - a larger autonomous system number space. - - In the value set and its semantics, this type is equivalent - to the InetAutonomousSystemNumber textual convention of - the SMIv2."; - reference - "RFC 1930: Guidelines for creation, selection, and registration - of an Autonomous System (AS) - RFC 4271: A Border Gateway Protocol 4 (BGP-4) - RFC 4001: Textual Conventions for Internet Network Addresses - RFC 6793: BGP Support for Four-Octet Autonomous System (AS) - Number Space"; - } - - /*** collection of types related to IP addresses and hostnames ***/ - - typedef ip-address { - type union { - type inet:ipv4-address; - type inet:ipv6-address; - } - description - "The ip-address type represents an IP address and is IP - version neutral. The format of the textual representation - implies the IP version. This type supports scoped addresses - by allowing zone identifiers in the address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - } - - typedef ipv4-address { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' - + '(%[\p{N}\p{L}]+)?'; - } - description - "The ipv4-address type represents an IPv4 address in - dotted-quad notation. The IPv4 address may include a zone - index, separated by a % sign. - - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - - The canonical format for the zone index is the numerical - format"; - } - - typedef ipv6-address { - type string { - pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' - + '(%[\p{N}\p{L}]+)?'; - pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' - + '(%.+)?'; - } - description - "The ipv6-address type represents an IPv6 address in full, - mixed, shortened, and shortened-mixed notation. The IPv6 - address may include a zone index, separated by a % sign. - - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - - The canonical format of IPv6 addresses uses the textual - representation defined in Section 4 of RFC 5952. The - canonical format for the zone index is the numerical - format as described in Section 11.2 of RFC 4007."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - - typedef ip-address-no-zone { - type union { - type inet:ipv4-address-no-zone; - type inet:ipv6-address-no-zone; - } - description - "The ip-address-no-zone type represents an IP address and is - IP version neutral. The format of the textual representation - implies the IP version. This type does not support scoped - addresses since it does not allow zone identifiers in the - address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - } - - typedef ipv4-address-no-zone { - type inet:ipv4-address { - pattern '[0-9\.]*'; - } - description - "An IPv4 address without a zone index. This type, derived from - ipv4-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - } - - typedef ipv6-address-no-zone { - type inet:ipv6-address { - pattern '[0-9a-fA-F:\.]*'; - } - description - "An IPv6 address without a zone index. This type, derived from - ipv6-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - - typedef ip-prefix { - type union { - type inet:ipv4-prefix; - type inet:ipv6-prefix; - } - description - "The ip-prefix type represents an IP prefix and is IP - version neutral. The format of the textual representations - implies the IP version."; - } - - typedef ipv4-prefix { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' - + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; - } - description - "The ipv4-prefix type represents an IPv4 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 32. - - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - - The canonical format of an IPv4 prefix has all bits of - the IPv4 address set to zero that are not part of the - IPv4 prefix."; - } - - typedef ipv6-prefix { - type string { - pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' - + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; - pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' - + '(/.+)'; - } - - description - "The ipv6-prefix type represents an IPv6 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 128. - - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - - The IPv6 address should have all bits that do not belong - to the prefix set to zero. - - The canonical format of an IPv6 prefix has all bits of - the IPv6 address set to zero that are not part of the - IPv6 prefix. Furthermore, the IPv6 address is represented - as defined in Section 4 of RFC 5952."; - reference - "RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - - /*** collection of domain name and URI types ***/ - - typedef domain-name { - type string { - pattern - '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' - + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' - + '|\.'; - length "1..253"; - } - description - "The domain-name type represents a DNS domain name. The - name SHOULD be fully qualified whenever possible. - - Internet domain names are only loosely specified. Section - 3.5 of RFC 1034 recommends a syntax (modified in Section - 2.1 of RFC 1123). The pattern above is intended to allow - for current practice in domain name use, and some possible - future expansion. It is designed to hold various types of - domain names, including names used for A or AAAA records - (host names) and other records, such as SRV records. Note - that Internet host names have a stricter syntax (described - in RFC 952) than the DNS recommendations in RFCs 1034 and - 1123, and that systems that want to store host names in - schema nodes using the domain-name type are recommended to - adhere to this stricter standard to ensure interoperability. - - The encoding of DNS names in the DNS protocol is limited - to 255 characters. Since the encoding consists of labels - prefixed by a length bytes and there is a trailing NULL - byte, only 253 characters can appear in the textual dotted - notation. - - The description clause of schema nodes using the domain-name - type MUST describe when and how these names are resolved to - IP addresses. Note that the resolution of a domain-name value - may require to query multiple DNS records (e.g., A for IPv4 - and AAAA for IPv6). The order of the resolution process and - which DNS record takes precedence can either be defined - explicitly or may depend on the configuration of the - resolver. - - Domain-name values use the US-ASCII encoding. Their canonical - format uses lowercase US-ASCII characters. Internationalized - domain names MUST be A-labels as per RFC 5890."; - reference - "RFC 952: DoD Internet Host Table Specification - RFC 1034: Domain Names - Concepts and Facilities - RFC 1123: Requirements for Internet Hosts -- Application - and Support - RFC 2782: A DNS RR for specifying the location of services - (DNS SRV) - RFC 5890: Internationalized Domain Names in Applications - (IDNA): Definitions and Document Framework"; - } - - typedef host { - type union { - type inet:ip-address; - type inet:domain-name; - } - description - "The host type represents either an IP address or a DNS - domain name."; - } - - typedef uri { - type string; - description - "The uri type represents a Uniform Resource Identifier - (URI) as defined by STD 66. - - Objects using the uri type MUST be in US-ASCII encoding, - and MUST be normalized as described by RFC 3986 Sections - 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary - percent-encoding is removed, and all case-insensitive - characters are set to lowercase except for hexadecimal - digits, which are normalized to uppercase as described in - Section 6.2.2.1. - - The purpose of this normalization is to help provide - unique URIs. Note that this normalization is not - sufficient to provide uniqueness. Two URIs that are - textually distinct after this normalization may still be - equivalent. - - Objects using the uri type may restrict the schemes that - they permit. For example, 'data:' and 'urn:' schemes - might not be appropriate. - - A zero-length URI is not a valid URI. This can be used to - express 'URI absent' where required. - - In the value set and its semantics, this type is equivalent - to the Uri SMIv2 textual convention defined in RFC 5017."; - reference - "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax - RFC 3305: Report from the Joint W3C/IETF URI Planning Interest - Group: Uniform Resource Identifiers (URIs), URLs, - and Uniform Resource Names (URNs): Clarifications - and Recommendations - RFC 5017: MIB Textual Conventions for Uniform Resource - Identifiers (URIs)"; - } - -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang deleted file mode 100644 index f66c205ce..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-interfaces@2018-02-20.yang +++ /dev/null @@ -1,1123 +0,0 @@ -module ietf-interfaces { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; - prefix if; - - import ietf-yang-types { - prefix yang; - } - - organization - "IETF NETMOD (Network Modeling) Working Group"; - - contact - "WG Web: - WG List: - - Editor: Martin Bjorklund - "; - - description - "This module contains a collection of YANG definitions for - managing network interfaces. - - Copyright (c) 2018 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8343; see - the RFC itself for full legal notices."; - - revision 2018-02-20 { - description - "Updated to support NMDA."; - reference - "RFC 8343: A YANG Data Model for Interface Management"; - } - - revision 2014-05-08 { - description - "Initial revision."; - reference - "RFC 7223: A YANG Data Model for Interface Management"; - } - - /* - * Typedefs - */ - - typedef interface-ref { - type leafref { - path "/if:interfaces/if:interface/if:name"; - } - description - "This type is used by data models that need to reference - interfaces."; - } - - /* - * Identities - */ - - identity interface-type { - description - "Base identity from which specific interface types are - derived."; - } - - /* - * Features - */ - - feature arbitrary-names { - description - "This feature indicates that the device allows user-controlled - interfaces to be named arbitrarily."; - } - feature pre-provisioning { - description - "This feature indicates that the device supports - pre-provisioning of interface configuration, i.e., it is - possible to configure an interface whose physical interface - hardware is not present on the device."; - } - feature if-mib { - description - "This feature indicates that the device implements - the IF-MIB."; - reference - "RFC 2863: The Interfaces Group MIB"; - } - - /* - * Data nodes - */ - - container interfaces { - description - "Interface parameters."; - - list interface { - key "name"; - - description - "The list of interfaces on the device. - - The status of an interface is available in this list in the - operational state. If the configuration of a - system-controlled interface cannot be used by the system - (e.g., the interface hardware present does not match the - interface type), then the configuration is not applied to - the system-controlled interface shown in the operational - state. If the configuration of a user-controlled interface - cannot be used by the system, the configured interface is - not instantiated in the operational state. - - System-controlled interfaces created by the system are - always present in this list in the operational state, - whether or not they are configured."; - - leaf name { - type string; - description - "The name of the interface. - - A device MAY restrict the allowed values for this leaf, - possibly depending on the type of the interface. - For system-controlled interfaces, this leaf is the - device-specific name of the interface. - - If a client tries to create configuration for a - system-controlled interface that is not present in the - operational state, the server MAY reject the request if - the implementation does not support pre-provisioning of - interfaces or if the name refers to an interface that can - never exist in the system. A Network Configuration - Protocol (NETCONF) server MUST reply with an rpc-error - with the error-tag 'invalid-value' in this case. - - If the device supports pre-provisioning of interface - configuration, the 'pre-provisioning' feature is - advertised. - - If the device allows arbitrarily named user-controlled - interfaces, the 'arbitrary-names' feature is advertised. - - When a configured user-controlled interface is created by - the system, it is instantiated with the same name in the - operational state. - - A server implementation MAY map this leaf to the ifName - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifName. The definition of - such a mechanism is outside the scope of this document."; - reference - "RFC 2863: The Interfaces Group MIB - ifName"; - } - - leaf description { - type string; - description - "A textual description of the interface. - - A server implementation MAY map this leaf to the ifAlias - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifAlias. The definition of - such a mechanism is outside the scope of this document. - - Since ifAlias is defined to be stored in non-volatile - storage, the MIB implementation MUST map ifAlias to the - value of 'description' in the persistently stored - configuration."; - reference - "RFC 2863: The Interfaces Group MIB - ifAlias"; - } - - leaf type { - type identityref { - base interface-type; - } - mandatory true; - description - "The type of the interface. - - When an interface entry is created, a server MAY - initialize the type leaf with a valid value, e.g., if it - is possible to derive the type from the name of the - interface. - - If a client tries to set the type of an interface to a - value that can never be used by the system, e.g., if the - type is not supported or if the type does not match the - name of the interface, the server MUST reject the request. - A NETCONF server MUST reply with an rpc-error with the - error-tag 'invalid-value' in this case."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - - leaf enabled { - type boolean; - default "true"; - description - "This leaf contains the configured, desired state of the - interface. - - Systems that implement the IF-MIB use the value of this - leaf in the intended configuration to set - IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry - has been initialized, as described in RFC 2863. - - Changes in this leaf in the intended configuration are - reflected in ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf link-up-down-trap-enable { - if-feature if-mib; - type enumeration { - enum enabled { - value 1; - description - "The device will generate linkUp/linkDown SNMP - notifications for this interface."; - } - enum disabled { - value 2; - description - "The device will not generate linkUp/linkDown SNMP - notifications for this interface."; - } - } - description - "Controls whether linkUp/linkDown SNMP notifications - should be generated for this interface. - - If this node is not configured, the value 'enabled' is - operationally used by the server for interfaces that do - not operate on top of any other interface (i.e., there are - no 'lower-layer-if' entries), and 'disabled' otherwise."; - reference - "RFC 2863: The Interfaces Group MIB - - ifLinkUpDownTrapEnable"; - } - - leaf admin-status { - if-feature if-mib; - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "Not ready to pass packets and not in some test mode."; - } - enum testing { - value 3; - description - "In some test mode."; - } - } - config false; - mandatory true; - description - "The desired state of the interface. - - This leaf has the same read semantics as ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf oper-status { - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - - description - "The interface does not pass any packets."; - } - enum testing { - value 3; - description - "In some test mode. No operational packets can - be passed."; - } - enum unknown { - value 4; - description - "Status cannot be determined for some reason."; - } - enum dormant { - value 5; - description - "Waiting for some external event."; - } - enum not-present { - value 6; - description - "Some component (typically hardware) is missing."; - } - enum lower-layer-down { - value 7; - description - "Down due to state of lower-layer interface(s)."; - } - } - config false; - mandatory true; - description - "The current operational state of the interface. - - This leaf has the same semantics as ifOperStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifOperStatus"; - } - - leaf last-change { - type yang:date-and-time; - config false; - description - "The time the interface entered its current operational - state. If the current state was entered prior to the - last re-initialization of the local network management - subsystem, then this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifLastChange"; - } - - leaf if-index { - if-feature if-mib; - type int32 { - range "1..2147483647"; - } - config false; - mandatory true; - description - "The ifIndex value for the ifEntry represented by this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifIndex"; - } - - leaf phys-address { - type yang:phys-address; - config false; - description - "The interface's address at its protocol sub-layer. For - example, for an 802.x interface, this object normally - contains a Media Access Control (MAC) address. The - interface's media-specific modules must define the bit - and byte ordering and the format of the value of this - object. For interfaces that do not have such an address - (e.g., a serial line), this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; - } - - leaf-list higher-layer-if { - type interface-ref; - config false; - description - "A list of references to interfaces layered on top of this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf-list lower-layer-if { - type interface-ref; - config false; - - description - "A list of references to interfaces layered underneath this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf speed { - type yang:gauge64; - units "bits/second"; - config false; - description - "An estimate of the interface's current bandwidth in bits - per second. For interfaces that do not vary in - bandwidth or for those where no accurate estimation can - be made, this node should contain the nominal bandwidth. - For interfaces that have no concept of bandwidth, this - node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - - ifSpeed, ifHighSpeed"; - } - - container statistics { - config false; - description - "A collection of interface-related statistics objects."; - - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - - leaf in-octets { - type yang:counter64; - description - "The total number of octets received on the interface, - including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } - - leaf in-unicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } - - leaf in-broadcast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } - - leaf in-multicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } - - leaf in-discards { - type yang:counter32; - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } - - leaf in-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } - - leaf in-unknown-protos { - type yang:counter32; - - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } - - leaf out-octets { - type yang:counter64; - description - "The total number of octets transmitted out of the - interface, including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } - - leaf out-unicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } - - leaf out-broadcast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } - - leaf out-multicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } - - leaf out-discards { - type yang:counter32; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } - - leaf out-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } - } - - } - } - - /* - * Legacy typedefs - */ - - typedef interface-state-ref { - type leafref { - path "/if:interfaces-state/if:interface/if:name"; - } - status deprecated; - description - "This type is used by data models that need to reference - the operationally present interfaces."; - } - - /* - * Legacy operational state data nodes - */ - - container interfaces-state { - config false; - status deprecated; - description - "Data nodes for the operational state of interfaces."; - - list interface { - key "name"; - status deprecated; - - description - "The list of interfaces on the device. - - System-controlled interfaces created by the system are - always present in this list, whether or not they are - configured."; - - leaf name { - type string; - status deprecated; - description - "The name of the interface. - - A server implementation MAY map this leaf to the ifName - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifName. The definition of - such a mechanism is outside the scope of this document."; - reference - "RFC 2863: The Interfaces Group MIB - ifName"; - } - - leaf type { - type identityref { - base interface-type; - } - mandatory true; - status deprecated; - description - "The type of the interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - - leaf admin-status { - if-feature if-mib; - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "Not ready to pass packets and not in some test mode."; - } - enum testing { - value 3; - description - "In some test mode."; - } - } - mandatory true; - status deprecated; - description - "The desired state of the interface. - - This leaf has the same read semantics as ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf oper-status { - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "The interface does not pass any packets."; - } - enum testing { - value 3; - description - "In some test mode. No operational packets can - be passed."; - } - enum unknown { - value 4; - description - "Status cannot be determined for some reason."; - } - enum dormant { - value 5; - description - "Waiting for some external event."; - } - enum not-present { - value 6; - description - "Some component (typically hardware) is missing."; - } - enum lower-layer-down { - value 7; - description - "Down due to state of lower-layer interface(s)."; - } - } - mandatory true; - status deprecated; - description - "The current operational state of the interface. - - This leaf has the same semantics as ifOperStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifOperStatus"; - } - - leaf last-change { - type yang:date-and-time; - status deprecated; - description - "The time the interface entered its current operational - state. If the current state was entered prior to the - last re-initialization of the local network management - subsystem, then this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifLastChange"; - } - - leaf if-index { - if-feature if-mib; - type int32 { - range "1..2147483647"; - } - mandatory true; - status deprecated; - description - "The ifIndex value for the ifEntry represented by this - interface."; - - reference - "RFC 2863: The Interfaces Group MIB - ifIndex"; - } - - leaf phys-address { - type yang:phys-address; - status deprecated; - description - "The interface's address at its protocol sub-layer. For - example, for an 802.x interface, this object normally - contains a Media Access Control (MAC) address. The - interface's media-specific modules must define the bit - and byte ordering and the format of the value of this - object. For interfaces that do not have such an address - (e.g., a serial line), this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; - } - - leaf-list higher-layer-if { - type interface-state-ref; - status deprecated; - description - "A list of references to interfaces layered on top of this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf-list lower-layer-if { - type interface-state-ref; - status deprecated; - description - "A list of references to interfaces layered underneath this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf speed { - type yang:gauge64; - units "bits/second"; - status deprecated; - description - "An estimate of the interface's current bandwidth in bits - per second. For interfaces that do not vary in - bandwidth or for those where no accurate estimation can - - be made, this node should contain the nominal bandwidth. - For interfaces that have no concept of bandwidth, this - node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - - ifSpeed, ifHighSpeed"; - } - - container statistics { - status deprecated; - description - "A collection of interface-related statistics objects."; - - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - status deprecated; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - - leaf in-octets { - type yang:counter64; - status deprecated; - description - "The total number of octets received on the interface, - including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } - - leaf in-unicast-pkts { - type yang:counter64; - status deprecated; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } - - leaf in-broadcast-pkts { - type yang:counter64; - status deprecated; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } - - leaf in-multicast-pkts { - type yang:counter64; - status deprecated; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } - - leaf in-discards { - type yang:counter32; - status deprecated; - - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } - - leaf in-errors { - type yang:counter32; - status deprecated; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } - - leaf in-unknown-protos { - type yang:counter32; - status deprecated; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } - - leaf out-octets { - type yang:counter64; - status deprecated; - description - "The total number of octets transmitted out of the - interface, including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } - - leaf out-unicast-pkts { - type yang:counter64; - status deprecated; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } - - leaf out-broadcast-pkts { - type yang:counter64; - status deprecated; - - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } - - leaf out-multicast-pkts { - type yang:counter64; - status deprecated; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } - - leaf out-discards { - type yang:counter32; - status deprecated; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } - - leaf out-errors { - type yang:counter32; - status deprecated; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } - } - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang deleted file mode 100644 index cbbfc0815..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-isis@2022-10-19.yang +++ /dev/null @@ -1,4455 +0,0 @@ -module ietf-isis { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; - prefix isis; - - import ietf-routing { - prefix rt; - reference - "RFC 8349: A YANG Data Model for Routing Management - (NMDA Version)"; - } - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-interfaces { - prefix if; - reference - "RFC 8343: A YANG Data Model for Interface Management"; - } - import ietf-key-chain { - prefix key-chain; - reference - "RFC 8177: YANG Data Model for Key Chains"; - } - import ietf-routing-types { - prefix rt-types; - reference - "RFC 8294: Common YANG Data Types for the Routing Area"; - } - import iana-routing-types { - prefix iana-rt-types; - reference - "RFC 8294: Common YANG Data Types for the Routing Area"; - } - import ietf-bfd-types { - prefix bfd-types; - reference - "RFC 9314: YANG Data Model for Bidirectional Forwarding - Detection (BFD)"; - } - - organization - "IETF LSR Working Group"; - contact - "WG Web: - WG List: - - Editor: Stephane Litkowski - - - Author: Derek Yeung - - - Author: Acee Lindem - - - Author: Jeffrey Zhang - - - Author: Ladislav Lhotka - "; - description - "This YANG module defines the generic configuration and - operational states for the IS-IS protocol common to all - vendor implementations. It is intended that the module - will be extended by vendors to define vendor-specific - IS-IS configuration parameters and policies - - for example, route maps or route policies. - - This YANG data model conforms to the Network Management - Datastore Architecture (NMDA) as described in RFC 8342. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here. - - Copyright (c) 2022 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Revised BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 9130; see the - RFC itself for full legal notices."; - reference - "RFC 8342: Network Management Datastore Architecture (NMDA)"; - - revision 2022-10-19 { - description - "Initial revision."; - reference - "RFC 9130: YANG Data Model for the IS-IS Protocol"; - } - - /* Identities */ - - identity isis { - base rt:routing-protocol; - description - "Identity for the IS-IS routing protocol."; - } - - identity lsp-log-reason { - description - "Base identity for a Link State PDU (LSP) - change log reason."; - } - - identity refresh { - base lsp-log-reason; - description - "Identity used when the LSP log reason is that an LSP - refresh was received."; - } - - identity content-change { - base lsp-log-reason; - description - "Identity used when the LSP log reason is - a change in the contents of the LSP."; - } - - identity frr-protection-method { - description - "Base identity for a Fast Reroute protection method."; - } - - identity frr-protection-method-lfa { - base frr-protection-method; - description - "Loop-Free Alternate as defined in RFC 5286."; - reference - "RFC 5286: Basic Specification for IP Fast Reroute: - Loop-Free Alternates"; - } - - identity frr-protection-method-rlfa { - base frr-protection-method; - description - "Remote Loop-Free Alternate as defined in RFC 7490."; - reference - "RFC 7490: Remote Loop-Free Alternate (LFA) - Fast Reroute (FRR)"; - } - - identity frr-protection-method-rsvpte { - base frr-protection-method; - description - "RSVP-TE as defined in RFC 4090."; - reference - "RFC 4090: Fast Reroute Extensions to RSVP-TE for - LSP Tunnels"; - } - - identity frr-protection-available-type { - description - "Base identity for Fast Reroute protection types - provided by an alternate path."; - } - - identity frr-protection-available-node-type { - base frr-protection-available-type; - description - "Node protection is provided by the alternate."; - } - - identity frr-protection-available-link-type { - base frr-protection-available-type; - description - "Link protection is provided by the alternate."; - } - - identity frr-protection-available-srlg-type { - base frr-protection-available-type; - description - "Shared Risk Link Group (SRLG) protection is provided by - the alternate."; - } - - identity frr-protection-available-downstream-type { - base frr-protection-available-type; - description - "The alternate is downstream of the node in the path."; - } - - identity frr-protection-available-other-type { - base frr-protection-available-type; - description - "The level of protection is unknown."; - } - - identity frr-alternate-type { - description - "Base identity for the IP Fast Reroute alternate type."; - } - - identity frr-alternate-type-equal-cost { - base frr-alternate-type; - description - "ECMP-based alternate."; - } - - identity frr-alternate-type-lfa { - base frr-alternate-type; - description - "LFA-based alternate."; - } - - identity frr-alternate-type-remote-lfa { - base frr-alternate-type; - description - "Remote-LFA-based alternate."; - } - - identity frr-alternate-type-tunnel { - base frr-alternate-type; - description - "Tunnel-based alternate (such as RSVP-TE or GRE)."; - } - - identity frr-alternate-mrt { - base frr-alternate-type; - description - "MRT-based alternate."; - } - - identity frr-alternate-tilfa { - base frr-alternate-type; - description - "TI-LFA-based alternate."; - } - - identity frr-alternate-other { - base frr-alternate-type; - description - "Other type of alternate."; - } - - identity unidirectional-link-delay-subtlv-flag { - description - "Base identity for the flag corresponding to the - Unidirectional Link Delay sub-TLV as defined in RFC 8570."; - reference - "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; - } - - identity unidirectional-link-delay-subtlv-a-flag { - base unidirectional-link-delay-subtlv-flag; - description - "The 'A' bit field represents the Anomalous (A) bit. - The A bit is set when the measured value of - this parameter exceeds its configured - maximum threshold. - The A bit is cleared when the measured value - falls below its configured reuse threshold. - If the A bit is clear, - the value represents steady-state link performance."; - } - - identity min-max-unidirectional-link-delay-subtlv-flag { - description - "Base identity for the flag corresponding to the Min/Max - Unidirectional Link Delay sub-TLV as defined in RFC 8570."; - reference - "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; - } - - identity min-max-unidirectional-link-delay-subtlv-a-flag { - base min-max-unidirectional-link-delay-subtlv-flag; - description - "The 'A' bit field represents the Anomalous (A) bit. - The A bit is set when the measured value of - this parameter exceeds its configured - maximum threshold. - The A bit is cleared when the measured value - falls below its configured reuse threshold. - If the A bit is clear, - the value represents steady-state link performance."; - } - - identity unidirectional-link-loss-subtlv-flag { - description - "Base identity for the flag corresponding to the - Unidirectional Link Loss sub-TLV as defined in RFC 8570."; - reference - "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; - } - - identity unidirectional-link-loss-subtlv-a-flag { - base unidirectional-link-loss-subtlv-flag; - description - "The 'A' bit field represents the Anomalous (A) bit. - The A bit is set when the measured value of - this parameter exceeds its configured - maximum threshold. - The A bit is cleared when the measured value - falls below its configured reuse threshold. - If the A bit is clear, - the value represents steady-state link performance."; - } - - identity tlv229-flag { - description - "Base identity for the flag corresponding to TLV 229 - (M-Topologies) as defined in RFC 5120."; - reference - "RFC 5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs)"; - } - - identity tlv229-overload-flag { - base tlv229-flag; - description - "If set, the originator is overloaded - and must be avoided in the path calculation."; - } - - identity tlv229-attached-flag { - base tlv229-flag; - description - "If set, the originator is attached to - another area using the referred metric."; - } - - identity router-capability-flag { - description - "Base identity for the flag corresponding to the - Router Capability TLV as defined in RFC 7981."; - reference - "RFC 7981: IS-IS Extensions for Advertising Router - Information"; - } - - identity router-capability-flooding-flag { - base router-capability-flag; - description - "Quote from RFC 7981: - 'If the S bit is set(1), the IS-IS Router CAPABILITY TLV - MUST be flooded across the entire routing domain. If the - S bit is not set(0), the TLV MUST NOT be leaked between - levels. This bit MUST NOT be altered during the TLV - leaking.'"; - } - - identity router-capability-down-flag { - base router-capability-flag; - description - "Quote from RFC 7981: - 'When the IS-IS Router CAPABILITY TLV is leaked from - Level 2 (L2) to Level 1 (L1), the D bit MUST be set. - Otherwise, this bit MUST be clear. IS-IS Router - CAPABILITY TLVs with the D bit set MUST NOT be leaked from - Level 1 to Level 2. This is to prevent TLV looping.'"; - } - - identity lsp-flag { - description - "Base identity for LSP attributes as defined in ISO 10589."; - reference - "ISO 10589: Intermediate System to Intermediate System - intra-domain routeing information exchange protocol - for use in conjunction with the protocol for providing - the connectionless-mode network service (ISO 8473)"; - } - - identity lsp-partitioned-flag { - base lsp-flag; - description - "Originator partition repair supported."; - } - - identity lsp-attached-error-metric-flag { - base lsp-flag; - description - "Set when the originator is attached to - another area using the error metric."; - } - - identity lsp-attached-delay-metric-flag { - base lsp-flag; - description - "Set when the originator is attached to - another area using the delay metric."; - } - - identity lsp-attached-expense-metric-flag { - base lsp-flag; - description - "Set when the originator is attached to - another area using the expense metric."; - } - - identity lsp-attached-default-metric-flag { - base lsp-flag; - description - "Set when the originator is attached to - another area using the default metric."; - } - - identity lsp-overload-flag { - base lsp-flag; - description - "If set, the originator is overloaded - and must be avoided in the path calculation."; - } - - identity lsp-l1-system-flag { - base lsp-flag; - description - "Set when the Intermediate System has an L1 type."; - } - - identity lsp-l2-system-flag { - base lsp-flag; - description - "Set when the Intermediate System has an L2 type."; - } - - /* Feature definitions */ - - feature osi-interface { - description - "Support of OSI-specific parameters on an interface."; - } - - feature poi-tlv { - description - "Support of the Purge Originator Identification (POI) TLV."; - reference - "RFC 6232: Purge Originator Identification TLV for IS-IS"; - } - - feature ietf-spf-delay { - description - "Support for the IETF SPF delay algorithm."; - reference - "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm - for Link-State IGPs"; - } - - feature bfd { - description - "Support for detection of IS-IS neighbor reachability - via BFD."; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD) - RFC 5881: Bidirectional Forwarding Detection (BFD) - for IPv4 and IPv6 (Single Hop)"; - } - - feature key-chain { - description - "Support of key chains for authentication."; - reference - "RFC 8177: YANG Data Model for Key Chains"; - } - - feature node-flag { - description - "Support for node flags for IS-IS prefixes."; - reference - "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 - Reachability"; - } - - feature node-tag { - description - "Support for node administrative tags for IS-IS - routing instances."; - reference - "RFC 7917: Advertising Node Administrative Tags in IS-IS"; - } - - feature ldp-igp-sync { - description - "Support for LDP IGP synchronization."; - reference - "RFC 5443: LDP IGP Synchronization"; - } - - feature fast-reroute { - description - "Support for IP Fast Reroute (IP FRR)."; - } - - feature nsr { - description - "Support for Non-Stop-Routing (NSR). The IS-IS NSR feature - allows a router with redundant control-plane capability - (e.g., dual Route Processor (RP) cards) to maintain its - state and adjacencies during planned and unplanned - IS-IS instance restarts. It differs from graceful restart - or Non-Stop Forwarding (NSF) in that no protocol signaling - or assistance from adjacent IS-IS neighbors is required to - recover control-plane state."; - } - - feature lfa { - description - "Support for Loop-Free Alternates (LFAs)."; - reference - "RFC 5286: Basic Specification for IP Fast Reroute: - Loop-Free Alternates"; - } - - feature remote-lfa { - description - "Support for remote LFAs (R-LFAs)."; - reference - "RFC 7490: Remote Loop-Free Alternate (LFA) - Fast Reroute (FRR)"; - } - - feature overload-max-metric { - description - "Support of overload by setting all links to the maximum - link metric. In IS-IS, the overload bit is usually used to - signal that a node cannot be used as a transit node. The - 'overload-max-metric' feature provides similar behavior, - also setting all the link metrics to MAX_METRIC."; - } - - feature prefix-tag { - description - "Support for 32-bit prefix tags."; - reference - "RFC 5130: A Policy Control Mechanism in IS-IS Using - Administrative Tags"; - } - - feature prefix-tag64 { - description - "Support for 64-bit prefix tags."; - reference - "RFC 5130: A Policy Control Mechanism in IS-IS Using - Administrative Tags"; - } - - feature auto-cost { - description - "Support for an IS-IS interface metric computation - according to a reference bandwidth."; - } - - feature te-rid { - description - "Traffic Engineering router ID."; - reference - "RFC 5305: IS-IS Extensions for Traffic Engineering - RFC 6119: IPv6 Traffic Engineering in IS-IS"; - } - - feature max-ecmp { - description - "Sets the maximum number of ECMP paths."; - } - - feature multi-topology { - description - "Support for Multi-Topology (MT) Routing."; - reference - "RFC 5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs)"; - } - - feature nlpid-control { - description - "Support for the advertisement of a Network Layer - Protocol Identifier within an IS-IS configuration."; - } - - feature graceful-restart { - description - "Support for IS-IS graceful restart."; - reference - "RFC 8706: Restart Signaling for IS-IS"; - } - - feature lsp-refresh { - description - "Configuration of the LSP refresh interval."; - } - - feature maximum-area-addresses { - description - "Support for 'maximum-area-addresses' configuration."; - } - - feature admin-control { - description - "Administrative control of the protocol state."; - } - - /* Type definitions */ - - typedef circuit-id { - type uint8; - description - "This type defines the circuit ID - associated with an interface."; - } - - typedef extended-circuit-id { - type uint32; - description - "This type defines the extended circuit ID - associated with an interface."; - } - - typedef interface-type { - type enumeration { - enum broadcast { - description - "Broadcast interface type."; - } - enum point-to-point { - description - "Point-to-point interface type."; - } - } - description - "This type defines the type of adjacency - to be established for the interface. - 'interface-type' determines the type - of Hello message that is used."; - } - - typedef level { - type enumeration { - enum level-1 { - description - "This enum indicates L1-only capability."; - } - enum level-2 { - description - "This enum indicates L2-only capability."; - } - enum level-all { - description - "This enum indicates capability for both levels."; - } - } - default "level-all"; - description - "This type defines the IS-IS level of an object."; - } - - typedef adj-state-type { - type enumeration { - enum up { - description - "This state indicates that the adjacency is established."; - } - enum down { - description - "This state indicates that the adjacency is - NOT established."; - } - enum init { - description - "This state indicates that the adjacency is being - established."; - } - enum failed { - description - "This state indicates that the adjacency has failed."; - } - } - description - "This type defines the states of an adjacency."; - } - - typedef if-state-type { - type enumeration { - enum up { - description - "'up' state."; - } - enum down { - description - "'down' state."; - } - } - description - "This type defines the state of an interface."; - } - - typedef level-number { - type uint8 { - range "1 .. 2"; - } - description - "This type defines the current IS-IS level."; - } - - typedef lsp-id { - type string { - pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' - + '{4}\.[0-9][0-9]-[0-9][0-9]'; - } - description - "This type defines the IS-IS LSP ID format using a - pattern. An example LSP ID is '0143.0438.AEF0.02-01'."; - } - - typedef area-address { - type string { - pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; - } - description - "This type defines the area address format."; - } - - typedef snpa { - type string { - length "0 .. 20"; - } - description - "This type defines the Subnetwork Point of Attachment (SNPA) - format. The SNPA should be encoded according to the rules - specified for the particular type of subnetwork being used. - As an example, for an Ethernet subnetwork, the SNPA is - encoded as a Media Access Control (MAC) address, such as - '00aa.bbcc.ddee'."; - } - - typedef system-id { - type string { - pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; - } - description - "This type defines the IS-IS system ID by using a pattern. - An example system ID is '0143.0438.AEF0'."; - } - - typedef extended-system-id { - type string { - pattern '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' - + '[0-9][0-9]'; - } - description - "This type defines the IS-IS system ID using a pattern. - 'extended-system-id' contains the pseudonode number - in addition to the system ID. - An example extended system ID is '0143.0438.AEF0.00'."; - } - - typedef wide-metric { - type uint32 { - range "0 .. 16777215"; - } - description - "This type defines the wide-style format of an IS-IS metric."; - } - - typedef std-metric { - type uint8 { - range "0 .. 63"; - } - description - "This type defines the old-style format of the IS-IS metric."; - } - - typedef mesh-group-state { - type enumeration { - enum mesh-inactive { - description - "The interface is not part of a mesh group."; - } - enum mesh-set { - description - "The interface is part of a mesh group."; - } - enum mesh-blocked { - description - "LSPs must not be flooded over this interface."; - } - } - description - "This type describes the mesh group state of an interface."; - } - - /* Grouping for notifications */ - - grouping notification-instance-hdr { - description - "Instance-specific IS-IS notification data grouping."; - leaf routing-protocol-name { - type leafref { - path "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/rt:name"; - } - description - "Name of the IS-IS instance."; - } - leaf isis-level { - type level; - description - "IS-IS level of the instance."; - } - } - - grouping notification-interface-hdr { - description - "Interface-specific IS-IS notification data grouping."; - leaf interface-name { - type if:interface-ref; - description - "IS-IS interface name."; - } - leaf interface-level { - type level; - description - "IS-IS level of the interface."; - } - leaf extended-circuit-id { - type extended-circuit-id; - description - "Extended circuit ID of the interface."; - } - } - - /* Groupings for IP Fast Reroute */ - - grouping instance-fast-reroute-config { - description - "This group defines the global configuration of IP - Fast Reroute (FRR)."; - container fast-reroute { - if-feature "fast-reroute"; - description - "This container may be augmented with global - parameters for IP FRR."; - container lfa { - if-feature "lfa"; - description - "This container may be augmented with - global parameters for Loop-Free Alternates (LFAs). - The creation of this container has no effect on - LFA activation."; - } - } - } - - grouping interface-lfa-config { - leaf candidate-enabled { - type boolean; - default "true"; - description - "Enables the interface to be used as a backup."; - } - leaf enabled { - type boolean; - default "false"; - description - "Activates the LFA. Per-prefix LFA computation is assumed."; - } - container remote-lfa { - if-feature "remote-lfa"; - leaf enabled { - type boolean; - default "false"; - description - "Activates the remote LFA (R-LFA)."; - } - description - "Remote LFA configuration."; - } - description - "Grouping for LFA interface configuration."; - } - - grouping interface-fast-reroute-config { - description - "This group defines the interface configuration of IP FRR."; - container fast-reroute { - if-feature "fast-reroute"; - container lfa { - if-feature "lfa"; - uses interface-lfa-config; - container level-1 { - uses interface-lfa-config; - description - "LFA level-1 configuration."; - } - container level-2 { - uses interface-lfa-config; - description - "LFA level-2 configuration."; - } - description - "LFA configuration."; - } - description - "Interface IP FRR configuration."; - } - } - - grouping instance-fast-reroute-state { - description - "IP FRR state data grouping."; - container protected-routes { - config false; - list address-family-stats { - key "address-family prefix alternate"; - leaf address-family { - type iana-rt-types:address-family; - description - "Address family."; - } - leaf prefix { - type inet:ip-prefix; - description - "Protected prefix."; - } - leaf alternate { - type inet:ip-address; - description - "Alternate next hop for the prefix."; - } - leaf alternate-type { - type identityref { - base frr-alternate-type; - } - description - "Type of alternate."; - } - leaf best { - type boolean; - description - "Set when the alternate is the preferred alternate; - clear otherwise."; - } - leaf non-best-reason { - type string { - length "1..255"; - } - description - "Information field that explains why the alternate - is not the best alternate. The length should be - limited to 255 Unicode characters. The expected format - is a single line of text."; - } - container protection-available { - leaf-list protection-types { - type identityref { - base frr-protection-available-type; - } - description - "This list contains a set of protection - types defined as identities. - An identity must be added for each type of - protection provided by the alternate. - As an example, if an alternate provides - SRLG, node, and link protection, three - identities must be added in this list: - one for SRLG protection, one for node - protection, and one for link protection."; - } - description - "Protection types provided by the alternate."; - } - leaf alternate-metric-1 { - type uint32; - description - "Metric from the Point of Local Repair (PLR) to the - destination through the alternate path."; - } - leaf alternate-metric-2 { - type uint32; - description - "Metric from the PLR to the alternate node."; - } - leaf alternate-metric-3 { - type uint32; - description - "Metric from the alternate node to the destination."; - } - description - "Per-address-family protected prefix statistics."; - } - description - "List of prefixes that are protected."; - } - container unprotected-routes { - config false; - list prefixes { - key "address-family prefix"; - leaf address-family { - type iana-rt-types:address-family; - description - "Address family."; - } - leaf prefix { - type inet:ip-prefix; - description - "Unprotected prefix."; - } - description - "Per-address-family unprotected prefix statistics."; - } - description - "List of prefixes that are not protected."; - } - list protection-statistics { - key "frr-protection-method"; - config false; - leaf frr-protection-method { - type identityref { - base frr-protection-method; - } - description - "Protection method used."; - } - list address-family-stats { - key "address-family"; - leaf address-family { - type iana-rt-types:address-family; - description - "Address family."; - } - leaf total-routes { - type yang:gauge32; - description - "Total prefixes."; - } - leaf unprotected-routes { - type yang:gauge32; - description - "Total prefixes that are not protected."; - } - leaf protected-routes { - type yang:gauge32; - description - "Total prefixes that are protected."; - } - leaf link-protected-routes { - type yang:gauge32; - description - "Total prefixes that are link protected."; - } - leaf node-protected-routes { - type yang:gauge32; - description - "Total prefixes that are node protected."; - } - description - "Per-address-family protected prefix statistics."; - } - description - "Global protection statistics."; - } - } - - /* Routing table and local Routing Information Base (RIB) - groupings */ - - grouping local-rib { - description - "Local RIB: RIB for routes computed by the local IS-IS - routing instance."; - container local-rib { - config false; - description - "Local RIB."; - list route { - key "prefix"; - description - "Routes."; - leaf prefix { - type inet:ip-prefix; - description - "Destination prefix."; - } - container next-hops { - description - "Next hops for the route."; - list next-hop { - key "next-hop"; - description - "List of next hops for the route."; - leaf outgoing-interface { - type if:interface-ref; - description - "Name of the outgoing interface."; - } - leaf next-hop { - type inet:ip-address; - description - "Next-hop address."; - } - } - } - leaf metric { - type uint32; - description - "Metric for this route."; - } - leaf level { - type level-number; - description - "Level number for this route."; - } - leaf route-tag { - type uint32; - description - "Route tag for this route."; - } - } - } - } - - grouping route-content { - description - "IS-IS protocol-specific route properties grouping."; - leaf metric { - type uint32; - description - "IS-IS metric of a route."; - } - leaf-list tag { - type uint64; - description - "List of tags associated with the route. This list - provides a consolidated view of both 32-bit and 64-bit - tags (RFC 5130) available for the prefix."; - reference - "RFC 5130: A Policy Control Mechanism in IS-IS Using - Administrative Tags"; - } - leaf route-type { - type enumeration { - enum l2-intra-area { - description - "Level-2 internal route. As per RFC 5302, - the prefix is directly connected to the - advertising router. It cannot be - distinguished from an L1->L2 inter-area - route."; - reference - "RFC 5302: Domain-Wide Prefix Distribution with - Two-Level IS-IS"; - } - enum l1-intra-area { - description - "Level-1 internal route. As per RFC 5302, - the prefix is directly connected to the - advertising router."; - } - enum l2-external { - description - "Level-2 external route. As per RFC 5302, - such a route is learned from other IGPs. - It cannot be distinguished from an L1->L2 - inter-area external route."; - } - enum l1-external { - description - "Level-1 external route. As per RFC 5302, - such a route is learned from other IGPs."; - } - enum l1-inter-area { - description - "These prefixes are learned via L2 routing."; - } - enum l1-inter-area-external { - description - "These prefixes are learned via L2 routing - towards a level-2 external route."; - } - } - description - "IS-IS route type."; - } - } - - /* Grouping definitions for configuration and operational states */ - - grouping adjacency-state { - container adjacencies { - config false; - list adjacency { - leaf neighbor-sys-type { - type level; - description - "Level capability of the neighboring system."; - } - leaf neighbor-sysid { - type system-id; - description - "The system ID of the neighbor."; - } - leaf neighbor-extended-circuit-id { - type extended-circuit-id; - description - "The circuit ID of the neighbor."; - } - leaf neighbor-snpa { - type snpa; - description - "The SNPA of the neighbor."; - } - leaf usage { - type level; - description - "Defines the level(s) activated for the adjacency. - On a point-to-point link, this might be level 1 and - level 2, but on a LAN, the usage will be level 1 - between neighbors at level 1 or level 2 between - neighbors at level 2."; - } - leaf hold-timer { - type rt-types:timer-value-seconds16; - units "seconds"; - description - "The holding time (in seconds) for this adjacency. - This value is based on received Hello PDUs and the - elapsed time since receipt."; - } - leaf neighbor-priority { - type uint8 { - range "0 .. 127"; - } - description - "Priority of the neighboring IS for becoming the - Designated Intermediate System (DIS)."; - } - leaf lastuptime { - type yang:timestamp; - description - "When the adjacency most recently entered the - 'up' state, measured in hundredths of a - second since the last reinitialization of - the network management subsystem. - The value is 0 if the adjacency has never - been in the 'up' state."; - } - leaf state { - type adj-state-type; - description - "This leaf describes the state of the interface."; - } - description - "List of operational adjacencies."; - } - description - "This container lists the adjacencies of - the local node."; - } - description - "Adjacency state."; - } - - grouping admin-control { - leaf enabled { - if-feature "admin-control"; - type boolean; - default "true"; - description - "Enables or disables the protocol."; - } - description - "Grouping for administrative control."; - } - - grouping ietf-spf-delay { - leaf initial-delay { - type rt-types:timer-value-milliseconds; - units "msec"; - default "50"; - description - "Delay used while in the QUIET state (milliseconds)."; - } - leaf short-delay { - type rt-types:timer-value-milliseconds; - units "msec"; - default "200"; - description - "Delay used while in the SHORT_WAIT state (milliseconds)."; - } - leaf long-delay { - type rt-types:timer-value-milliseconds; - units "msec"; - default "5000"; - description - "Delay used while in the LONG_WAIT state (milliseconds)."; - } - leaf hold-down { - type rt-types:timer-value-milliseconds; - units "msec"; - default "10000"; - description - "This timer value defines the period without any changes - for the IGP to be considered stable (in milliseconds)."; - } - leaf time-to-learn { - type rt-types:timer-value-milliseconds; - units "msec"; - default "500"; - description - "Duration used to learn all the IGP events - related to a single network event (milliseconds)."; - } - leaf current-state { - type enumeration { - enum quiet { - description - "QUIET state."; - } - enum short-wait { - description - "SHORT_WAIT state."; - } - enum long-wait { - description - "LONG_WAIT state."; - } - } - config false; - description - "Current SPF Back-Off algorithm state."; - } - leaf remaining-time-to-learn { - type rt-types:timer-value-milliseconds; - units "msec"; - config false; - description - "Remaining time until the time-to-learn timer fires."; - } - leaf remaining-hold-down { - type rt-types:timer-value-milliseconds; - units "msec"; - config false; - description - "Remaining time until the hold-down timer fires."; - } - leaf last-event-received { - type yang:timestamp; - config false; - description - "Time of the last IGP event received."; - } - leaf next-spf-time { - type yang:timestamp; - config false; - description - "Time when the next SPF has been scheduled."; - } - leaf last-spf-time { - type yang:timestamp; - config false; - description - "Time of the last SPF computation."; - } - description - "Grouping for IETF SPF delay configuration and state."; - reference - "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm - for Link-State IGPs"; - } - - grouping node-tag-config { - description - "IS-IS node tag configuration state."; - container node-tags { - if-feature "node-tag"; - list node-tag { - key "tag"; - leaf tag { - type uint32; - description - "Node tag value."; - } - description - "List of tags."; - } - description - "Container for node administrative tags."; - } - } - - grouping authentication-global-cfg { - choice authentication-type { - case key-chain { - if-feature "key-chain"; - leaf key-chain { - type key-chain:key-chain-ref; - description - "Reference to a key chain."; - } - } - case password { - leaf key { - type string; - description - "This leaf specifies the authentication key. The - length of the key may be dependent on the - cryptographic algorithm."; - } - leaf crypto-algorithm { - type identityref { - base key-chain:crypto-algorithm; - } - description - "Cryptographic algorithm associated with a key."; - } - } - description - "Choice of authentication."; - } - description - "Grouping for global authentication configuration."; - } - - grouping metric-type-global-cfg { - leaf value { - type enumeration { - enum wide-only { - description - "Advertises the new metric style only (RFC 5305)."; - reference - "RFC 5305: IS-IS Extensions for Traffic Engineering"; - } - enum old-only { - description - "Advertises the old metric style only (RFC 1195)."; - reference - "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and - dual environments"; - } - enum both { - description - "Advertises both metric styles."; - } - } - description - "Type of metric to be generated: - - - 'wide-only' means that only a new metric style - is generated. - - 'old-only' means that only an old metric style - is generated. - - 'both' means that both are advertised. - - This leaf only affects IPv4 metrics."; - } - description - "Grouping for global metric style configuration."; - } - - grouping metric-type-global-cfg-with-default { - leaf value { - type enumeration { - enum wide-only { - description - "Advertises the new metric style only (RFC 5305)."; - reference - "RFC 5305: IS-IS Extensions for Traffic Engineering"; - } - enum old-only { - description - "Advertises the old metric style only (RFC 1195)."; - reference - "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and - dual environments"; - } - enum both { - description - "Advertises both metric styles."; - } - } - default "wide-only"; - description - "Type of metric to be generated: - - - 'wide-only' means that only a new metric style - is generated. - - 'old-only' means that only an old metric style - is generated. - - 'both' means that both are advertised. - - This leaf only affects IPv4 metrics."; - } - description - "Grouping for global metric style configuration."; - } - - grouping default-metric-global-cfg { - leaf value { - type wide-metric; - description - "Value of the metric."; - } - description - "Global default metric configuration grouping."; - } - - grouping default-metric-global-cfg-with-default { - leaf value { - type wide-metric; - default "10"; - description - "Value of the metric."; - } - description - "Global default metric configuration grouping."; - } - - grouping overload-global-cfg { - leaf status { - type boolean; - default "false"; - description - "This leaf specifies the overload status."; - } - description - "Grouping for overload bit configuration."; - } - - grouping overload-max-metric-global-cfg { - leaf timeout { - type rt-types:timer-value-seconds16; - units "seconds"; - description - "Timeout (in seconds) of the overload condition."; - } - description - "Overload maximum metric configuration grouping."; - } - - grouping route-preference-global-cfg { - choice granularity { - case detail { - leaf internal { - type uint8; - description - "Protocol preference for internal routes."; - } - leaf external { - type uint8; - description - "Protocol preference for external routes."; - } - } - case coarse { - leaf default { - type uint8; - description - "Protocol preference for all IS-IS routes."; - } - } - description - "Choice for implementation of route preference."; - } - description - "Global route preference grouping."; - } - - grouping hello-authentication-cfg { - choice authentication-type { - case key-chain { - if-feature "key-chain"; - leaf key-chain { - type key-chain:key-chain-ref; - description - "Reference to a key chain."; - } - } - case password { - leaf key { - type string; - description - "Authentication key specification. The length of the - key may be dependent on the cryptographic algorithm."; - } - leaf crypto-algorithm { - type identityref { - base key-chain:crypto-algorithm; - } - description - "Cryptographic algorithm associated with a key."; - } - } - description - "Choice of authentication."; - } - description - "Grouping for Hello authentication."; - } - - grouping hello-interval-cfg { - leaf value { - type rt-types:timer-value-seconds16; - units "seconds"; - description - "Interval (in seconds) between successive Hello - messages."; - } - description - "Interval between Hello messages."; - } - - grouping hello-interval-cfg-with-default { - leaf value { - type rt-types:timer-value-seconds16; - units "seconds"; - default "10"; - description - "Interval (in seconds) between successive Hello - messages."; - } - description - "Interval between Hello messages."; - } - - grouping hello-multiplier-cfg { - leaf value { - type uint16; - description - "Number of missed Hello messages prior to - declaring the adjacency down."; - } - description - "Grouping for the number of missed Hello messages prior to - declaring the adjacency down."; - } - - grouping hello-multiplier-cfg-with-default { - leaf value { - type uint16; - default "3"; - description - "Number of missed Hello messages prior to - declaring the adjacency down."; - } - description - "Grouping for the number of missed Hello messages prior to - declaring the adjacency down."; - } - - grouping priority-cfg { - leaf value { - type uint8 { - range "0 .. 127"; - } - description - "Priority of the interface for DIS election."; - } - description - "Interface DIS election priority grouping."; - } - - grouping priority-cfg-with-default { - leaf value { - type uint8 { - range "0 .. 127"; - } - default "64"; - description - "Priority of the interface for DIS election."; - } - description - "Interface DIS election priority grouping."; - } - - grouping metric-cfg { - leaf value { - type wide-metric; - description - "Metric value."; - } - description - "Interface metric grouping."; - } - - grouping metric-cfg-with-default { - leaf value { - type wide-metric; - default "10"; - description - "Metric value."; - } - description - "Interface metric grouping."; - } - - grouping metric-parameters { - container metric-type { - uses metric-type-global-cfg-with-default; - container level-1 { - uses metric-type-global-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses metric-type-global-cfg; - description - "Configuration specific to level 2."; - } - description - "Metric style global configuration."; - } - container default-metric { - uses default-metric-global-cfg-with-default; - container level-1 { - uses default-metric-global-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses default-metric-global-cfg; - description - "Configuration specific to level 2."; - } - description - "Default metric global configuration."; - } - container auto-cost { - if-feature "auto-cost"; - description - "Interface auto-cost configuration state."; - leaf enabled { - type boolean; - description - "Enables or disables interface auto-cost."; - } - leaf reference-bandwidth { - when "../enabled = 'true'" { - description - "Only when auto-cost is enabled."; - } - type uint32 { - range "1..4294967"; - } - units "Mbits"; - description - "Configures the reference bandwidth used to automatically - determine the interface cost (Mbits). The cost is the - reference bandwidth divided by the interface speed, - with 1 being the minimum cost."; - } - } - description - "Grouping for global metric parameters."; - } - - grouping high-availability-parameters { - container graceful-restart { - if-feature "graceful-restart"; - leaf enabled { - type boolean; - default "false"; - description - "Enables graceful restart."; - } - leaf restart-interval { - type rt-types:timer-value-seconds16; - units "seconds"; - description - "Interval (in seconds) to attempt graceful restart prior - to failure."; - } - leaf helper-enabled { - type boolean; - default "true"; - description - "Enables a local IS-IS router as a graceful restart - helper."; - } - description - "Configuration of graceful restart."; - } - container nsr { - if-feature "nsr"; - description - "Non-Stop Routing (NSR) configuration."; - leaf enabled { - type boolean; - default "false"; - description - "Enables or disables NSR."; - } - } - description - "Grouping for high-availability parameters."; - } - - grouping authentication-parameters { - container authentication { - uses authentication-global-cfg; - container level-1 { - uses authentication-global-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses authentication-global-cfg; - description - "Configuration specific to level 2."; - } - description - "Authentication global configuration for - both LSPs and Sequence Number PDUs (SNPs)."; - } - description - "Grouping for authentication parameters."; - } - - grouping address-family-parameters { - container address-families { - if-feature "nlpid-control"; - list address-family-list { - key "address-family"; - leaf address-family { - type iana-rt-types:address-family; - description - "Address family."; - } - leaf enabled { - type boolean; - description - "Activates the address family."; - } - description - "List of address families and whether or not they - are activated."; - } - description - "Address family configuration."; - } - description - "Grouping for address family parameters."; - } - - grouping mpls-parameters { - container mpls { - container te-rid { - if-feature "te-rid"; - description - "Stable IS-IS router IP address used for Traffic - Engineering."; - leaf ipv4-router-id { - type inet:ipv4-address; - description - "Router ID value that would be used in TLV 134."; - } - leaf ipv6-router-id { - type inet:ipv6-address; - description - "Router ID value that would be used in TLV 140."; - } - } - container ldp { - container igp-sync { - if-feature "ldp-igp-sync"; - description - "This container may be augmented with global - parameters for LDP IGP synchronization."; - } - description - "LDP configuration."; - } - description - "MPLS configuration."; - } - description - "Grouping for MPLS global parameters."; - } - - grouping lsp-parameters { - leaf lsp-mtu { - type uint16; - units "bytes"; - default "1492"; - description - "Maximum size of an LSP PDU in bytes."; - } - leaf lsp-lifetime { - type uint16 { - range "1..65535"; - } - units "seconds"; - description - "Lifetime of the router's LSPs in seconds."; - } - leaf lsp-refresh { - if-feature "lsp-refresh"; - type rt-types:timer-value-seconds16; - units "seconds"; - description - "Refresh interval of the router's LSPs in seconds."; - } - leaf poi-tlv { - if-feature "poi-tlv"; - type boolean; - default "false"; - description - "Enables the advertisement of the IS-IS Purge Originator - Identification TLV."; - } - description - "Grouping for LSP global parameters."; - } - - grouping spf-parameters { - container spf-control { - leaf paths { - if-feature "max-ecmp"; - type uint16 { - range "1..65535"; - } - description - "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; - } - container ietf-spf-delay { - if-feature "ietf-spf-delay"; - uses ietf-spf-delay; - description - "IETF SPF delay algorithm configuration."; - } - description - "SPF calculation control."; - } - description - "Grouping for SPF global parameters."; - } - - grouping instance-config { - description - "IS-IS global configuration grouping."; - uses admin-control; - leaf level-type { - type level; - default "level-all"; - description - "Level of an IS-IS node. Can be 'level-1', 'level-2', or - 'level-all'."; - } - leaf system-id { - type system-id; - description - "System ID of the node."; - } - leaf maximum-area-addresses { - if-feature "maximum-area-addresses"; - type uint8; - default "3"; - description - "Maximum areas supported."; - } - leaf-list area-address { - type area-address; - description - "List of areas supported by the protocol instance."; - } - uses lsp-parameters; - uses high-availability-parameters; - uses node-tag-config; - uses metric-parameters; - uses authentication-parameters; - uses address-family-parameters; - uses mpls-parameters; - uses spf-parameters; - uses instance-fast-reroute-config; - container preference { - uses route-preference-global-cfg; - description - "Router preference configuration for IS-IS - protocol instance route installation."; - } - container overload { - uses overload-global-cfg; - description - "Router protocol instance overload state configuration."; - } - container overload-max-metric { - if-feature "overload-max-metric"; - uses overload-max-metric-global-cfg; - description - "Router protocol instance overload maximum - metric advertisement configuration."; - } - } - - grouping instance-state { - description - "IS-IS instance operational state."; - uses spf-log; - uses lsp-log; - uses hostname-db; - uses lsdb; - uses local-rib; - uses system-counters; - uses instance-fast-reroute-state; - leaf discontinuity-time { - type yang:date-and-time; - description - "The time of the most recent occasion at which any one - or more of this IS-IS instance's counters suffered a - discontinuity. If no such discontinuities have occurred - since the IS-IS instance was last reinitialized, then - this node contains the time the IS-IS instance was - reinitialized, which normally occurs when it was - created."; - } - } - - grouping multi-topology-config { - description - "Per-topology configuration."; - container default-metric { - uses default-metric-global-cfg; - container level-1 { - uses default-metric-global-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses default-metric-global-cfg; - description - "Configuration specific to level 2."; - } - description - "Default metric per-topology configuration."; - } - uses node-tag-config; - } - - grouping interface-config { - description - "Interface configuration grouping."; - uses admin-control; - leaf level-type { - type level; - default "level-all"; - description - "IS-IS level of the interface."; - } - leaf lsp-pacing-interval { - type rt-types:timer-value-milliseconds; - units "milliseconds"; - default "33"; - description - "Interval (in milliseconds) between LSP transmissions."; - } - leaf lsp-retransmit-interval { - type rt-types:timer-value-seconds16; - units "seconds"; - description - "Interval (in seconds) between LSP retransmissions."; - } - leaf passive { - type boolean; - default "false"; - description - "Indicates whether the interface is in passive mode (IS-IS - is not running, but the network is advertised)."; - } - leaf csnp-interval { - type rt-types:timer-value-seconds16; - units "seconds"; - default "10"; - description - "Interval (in seconds) between Complete Sequence Number - Packet (CSNP) messages."; - } - container hello-padding { - leaf enabled { - type boolean; - default "true"; - description - "IS-IS Hello padding activation. Enabled by default."; - } - description - "IS-IS Hello padding configuration."; - } - leaf mesh-group-enabled { - type mesh-group-state; - description - "IS-IS interface mesh group state."; - } - leaf mesh-group { - when "../mesh-group-enabled = 'mesh-set'" { - description - "Only valid when 'mesh-group-enabled' equals 'mesh-set'."; - } - type uint8; - description - "IS-IS interface mesh group ID."; - } - leaf interface-type { - type interface-type; - default "broadcast"; - description - "Type of adjacency to be established for the interface. - This dictates the type of Hello messages that are used."; - } - leaf-list tag { - if-feature "prefix-tag"; - type uint32; - description - "List of tags associated with the interface."; - } - leaf-list tag64 { - if-feature "prefix-tag64"; - type uint64; - description - "List of 64-bit tags associated with the interface."; - } - leaf node-flag { - if-feature "node-flag"; - type boolean; - default "false"; - description - "Sets the prefix as a node representative prefix."; - } - container hello-authentication { - uses hello-authentication-cfg; - container level-1 { - uses hello-authentication-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses hello-authentication-cfg; - description - "Configuration specific to level 2."; - } - description - "Authentication type to be used in Hello messages."; - } - container hello-interval { - uses hello-interval-cfg-with-default; - container level-1 { - uses hello-interval-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses hello-interval-cfg; - description - "Configuration specific to level 2."; - } - description - "Interval between Hello messages."; - } - container hello-multiplier { - uses hello-multiplier-cfg-with-default; - container level-1 { - uses hello-multiplier-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses hello-multiplier-cfg; - description - "Configuration specific to level 2."; - } - description - "Hello multiplier configuration."; - } - container priority { - must '../interface-type = "broadcast"' { - error-message "Priority only applies to broadcast " - + "interfaces."; - description - "Checks for a broadcast interface."; - } - uses priority-cfg-with-default; - container level-1 { - uses priority-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses priority-cfg; - description - "Configuration specific to level 2."; - } - description - "Priority for DIS election."; - } - container metric { - uses metric-cfg-with-default; - container level-1 { - uses metric-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses metric-cfg; - description - "Configuration specific to level 2."; - } - description - "Metric configuration."; - } - container bfd { - if-feature "bfd"; - description - "BFD interface configuration."; - uses bfd-types:client-cfg-parms; - reference - "RFC 5880: Bidirectional Forwarding Detection (BFD) - RFC 5881: Bidirectional Forwarding Detection - (BFD) for IPv4 and IPv6 (Single Hop) - RFC 9314: YANG Data Model for Bidirectional Forwarding - Detection (BFD)"; - } - container address-families { - if-feature "nlpid-control"; - list address-family-list { - key "address-family"; - leaf address-family { - type iana-rt-types:address-family; - description - "Address family."; - } - description - "List of address families."; - } - description - "Interface address families."; - } - container mpls { - container ldp { - leaf igp-sync { - if-feature "ldp-igp-sync"; - type boolean; - default "false"; - description - "Enables IGP/LDP synchronization."; - } - description - "Configuration related to LDP."; - } - description - "MPLS configuration for IS-IS interfaces."; - } - uses interface-fast-reroute-config; - } - - grouping multi-topology-interface-config { - description - "IS-IS interface topology configuration."; - container metric { - uses metric-cfg; - container level-1 { - uses metric-cfg; - description - "Configuration specific to level 1."; - } - container level-2 { - uses metric-cfg; - description - "Configuration specific to level 2."; - } - description - "Metric IS-IS interface configuration."; - } - } - - grouping interface-state { - description - "IS-IS interface operational state."; - uses adjacency-state; - uses event-counters; - uses packet-counters; - leaf discontinuity-time { - type yang:date-and-time; - description - "The time of the most recent occasion at which any one - or more of this IS-IS interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the IS-IS interface was last reinitialized, then - this node contains the time the IS-IS interface was - reinitialized, which normally occurs when it was - created."; - } - } - - /* Grouping for the hostname database */ - - grouping hostname-db { - container hostnames { - config false; - list hostname { - key "system-id"; - leaf system-id { - type system-id; - description - "System ID associated with the hostname."; - } - leaf hostname { - type string { - length "1..255"; - } - description - "Hostname associated with the system ID - as defined in RFC 5301."; - reference - "RFC 5301: Dynamic Hostname Exchange Mechanism - for IS-IS"; - } - description - "List of system ID / hostname associations."; - } - description - "Hostname-to-system-ID mapping database."; - } - description - "Grouping for hostname-to-system-ID mapping database."; - } - - /* Groupings for counters */ - - grouping system-counters { - container system-counters { - config false; - list level { - key "level"; - leaf level { - type level-number; - description - "IS-IS level."; - } - leaf corrupted-lsps { - type uint32; - description - "Number of corrupted in-memory LSPs detected. - LSPs received from the wire with a bad - checksum are silently dropped and not counted. - LSPs received from the wire with parse errors - are counted by 'lsp-errors'."; - } - leaf authentication-type-fails { - type uint32; - description - "Number of authentication type mismatches."; - } - leaf authentication-fails { - type uint32; - description - "Number of authentication key failures."; - } - leaf database-overload { - type uint32; - description - "Number of times the database has become - overloaded."; - } - leaf own-lsp-purge { - type uint32; - description - "Number of times a zero-aged copy of the system's - own LSP is received from some other IS-IS node."; - } - leaf manual-address-drop-from-area { - type uint32; - description - "Number of times a manual address - has been dropped from the area."; - } - leaf max-sequence { - type uint32; - description - "Number of times the system has attempted - to exceed the maximum sequence number."; - } - leaf sequence-number-skipped { - type uint32; - description - "Number of times a sequence number skip has - occurred."; - } - leaf id-len-mismatch { - type uint32; - description - "Number of times a PDU is received with a - different value for the ID field length - than that of the receiving system."; - } - leaf partition-changes { - type uint32; - description - "Number of partition changes detected."; - } - leaf lsp-errors { - type uint32; - description - "Number of LSPs received with errors."; - } - leaf spf-runs { - type uint32; - description - "Number of times SPF was run at this level."; - } - description - "List of supported levels."; - } - description - "List of counters for the IS-IS protocol instance."; - } - description - "Grouping for IS-IS system counters."; - } - - grouping event-counters { - container event-counters { - config false; - leaf adjacency-changes { - type uint32; - description - "The number of times an adjacency state change has - occurred on this interface."; - } - leaf adjacency-number { - type uint32; - description - "The number of adjacencies on this interface."; - } - leaf init-fails { - type uint32; - description - "The number of times initialization of this interface has - failed. This counts events such as Point-to-Point - Protocol (PPP) Network Control Protocol (NCP) failures. - Failures to form an adjacency are counted by - 'adjacency-rejects'."; - } - leaf adjacency-rejects { - type uint32; - description - "The number of times an adjacency has been - rejected on this interface."; - } - leaf id-len-mismatch { - type uint32; - description - "The number of times an IS-IS PDU with an ID - field length different from that for this - system has been received on this interface."; - } - leaf max-area-addresses-mismatch { - type uint32; - description - "The number of times an IS-IS PDU has been - received on this interface with the - max area address field differing from that of - this system."; - } - leaf authentication-type-fails { - type uint32; - description - "Number of authentication type mismatches."; - } - leaf authentication-fails { - type uint32; - description - "Number of authentication key failures."; - } - leaf lan-dis-changes { - type uint32; - description - "The number of times the DIS has changed on this - interface at this level. If the interface type is - 'point-to-point', the count is zero."; - } - description - "IS-IS interface event counters."; - } - description - "Grouping for IS-IS interface event counters."; - } - - grouping packet-counters { - container packet-counters { - config false; - list level { - key "level"; - leaf level { - type level-number; - description - "IS-IS level."; - } - container iih { - leaf in { - type uint32; - description - "Received IS-IS Hello (IIH) PDUs."; - } - leaf out { - type uint32; - description - "Sent IIH PDUs."; - } - description - "Number of IIH PDUs received/sent."; - } - container ish { - leaf in { - type uint32; - description - "Received Intermediate System Hello (ISH) PDUs."; - } - leaf out { - type uint32; - description - "Sent ISH PDUs."; - } - description - "ISH PDUs received/sent."; - } - container esh { - leaf in { - type uint32; - description - "Received End System Hello (ESH) PDUs."; - } - leaf out { - type uint32; - description - "Sent ESH PDUs."; - } - description - "Number of ESH PDUs received/sent."; - } - container lsp { - leaf in { - type uint32; - description - "Received Link State PDU (LSP) PDUs."; - } - leaf out { - type uint32; - description - "Sent LSP PDUs."; - } - description - "Number of LSP PDUs received/sent."; - } - container psnp { - leaf in { - type uint32; - description - "Received Partial Sequence Number PDU (PSNP) PDUs."; - } - leaf out { - type uint32; - description - "Sent PSNP PDUs."; - } - description - "Number of PSNP PDUs received/sent."; - } - container csnp { - leaf in { - type uint32; - description - "Received Complete Sequence Number PDU (CSNP) PDUs."; - } - leaf out { - type uint32; - description - "Sent CSNP PDUs."; - } - description - "Number of CSNP PDUs received/sent."; - } - container unknown { - leaf in { - type uint32; - description - "Received unknown PDUs."; - } - description - "Number of unknown PDUs received."; - } - description - "List of packet counters for supported levels."; - } - description - "Packet counters per IS-IS level."; - } - description - "Grouping for packet counters per IS-IS level."; - } - - /* Groupings for various log buffers */ - - grouping spf-log { - container spf-log { - config false; - list event { - key "id"; - leaf id { - type yang:counter32; - description - "Event identifier. A purely internal value. - The most recent events are expected to have a bigger - ID number."; - } - leaf spf-type { - type enumeration { - enum full { - description - "Full SPF computation."; - } - enum route-only { - description - "SPF computation of route reachability - only."; - } - } - description - "Type of SPF computation performed."; - } - leaf level { - type level-number; - description - "IS-IS level number for the SPF computation."; - } - leaf schedule-timestamp { - type yang:timestamp; - description - "Timestamp of when the SPF computation was - scheduled."; - } - leaf start-timestamp { - type yang:timestamp; - description - "Timestamp of when the SPF computation started."; - } - leaf end-timestamp { - type yang:timestamp; - description - "Timestamp of when the SPF computation ended."; - } - list trigger-lsp { - key "lsp"; - leaf lsp { - type lsp-id; - description - "LSP ID of the LSP that triggered the SPF - computation."; - } - leaf sequence { - type uint32; - description - "Sequence number of the LSP that triggered the SPF - computation."; - } - description - "This list includes the LSPs that triggered the - SPF computation."; - } - description - "List of computation events. Implemented as a - wrapping buffer."; - } - description - "This container lists the SPF computation events."; - } - description - "Grouping for SPF log events."; - } - - grouping lsp-log { - container lsp-log { - config false; - list event { - key "id"; - leaf id { - type yang:counter32; - description - "Event identifier. A purely internal value. - The most recent events are expected to have a bigger - ID number."; - } - leaf level { - type level-number; - description - "IS-IS level number for the LSP."; - } - container lsp { - leaf lsp { - type lsp-id; - description - "LSP ID of the LSP."; - } - leaf sequence { - type uint32; - description - "Sequence number of the LSP."; - } - description - "LSP identification container for either the received - LSP or the locally generated LSP."; - } - leaf received-timestamp { - type yang:timestamp; - description - "This is the timestamp when the LSP was received. - In the case of a local LSP update, the timestamp refers - to the LSP origination time."; - } - leaf reason { - type identityref { - base lsp-log-reason; - } - description - "Type of LSP change."; - } - description - "List of LSP events. Implemented as a wrapping buffer."; - } - description - "This container lists the LSP log. - Local LSP modifications are also included in the list."; - } - description - "Grouping for the LSP log."; - } - - /* Groupings for the Link State Database (LSDB) descriptions */ - /* Unknown TLV and sub-TLV descriptions */ - - grouping tlv { - description - "Type-Length-Value (TLV)."; - leaf type { - type uint16; - description - "TLV type."; - } - leaf length { - type uint16; - description - "TLV length (octets)."; - } - leaf value { - type yang:hex-string; - description - "TLV value."; - } - } - - grouping unknown-tlvs { - description - "Unknown TLVs grouping. Used for unknown TLVs or - unknown sub-TLVs."; - container unknown-tlvs { - description - "All unknown TLVs."; - list unknown-tlv { - description - "Unknown TLV."; - uses tlv; - } - } - } - - /* TLVs and sub-TLVs for prefixes */ - - grouping prefix-reachability-attributes { - description - "Grouping for extended reachability attributes of an - IPv4 or IPv6 prefix."; - leaf external-prefix-flag { - type boolean; - description - "External prefix flag."; - } - leaf readvertisement-flag { - type boolean; - description - "Re-advertisement flag."; - } - leaf node-flag { - type boolean; - description - "Node flag."; - } - } - - grouping prefix-ipv4-source-router-id { - description - "Grouping for the IPv4 source router ID of a prefix - advertisement."; - leaf ipv4-source-router-id { - type inet:ipv4-address; - description - "IPv4 source router ID address."; - } - } - - grouping prefix-ipv6-source-router-id { - description - "Grouping for the IPv6 source router ID of a prefix - advertisement."; - leaf ipv6-source-router-id { - type inet:ipv6-address; - description - "IPv6 source router ID address."; - } - } - - grouping prefix-attributes-extension { - description - "Prefix extended attributes as defined in RFC 7794."; - reference - "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 - Reachability"; - uses prefix-reachability-attributes; - uses prefix-ipv4-source-router-id; - uses prefix-ipv6-source-router-id; - } - - grouping prefix-ipv4-std { - description - "Grouping for attributes of an IPv4 standard prefix - as defined in RFC 1195."; - reference - "RFC 1195: Use of OSI IS-IS for routing in TCP/IP and - dual environments"; - leaf ip-prefix { - type inet:ipv4-address; - description - "IPv4 prefix address."; - } - leaf prefix-len { - type uint8; - description - "IPv4 prefix length (in bits)."; - } - leaf i-e { - type boolean; - description - "Internal or external (I/E) metric bit value. - Set to 'false' to indicate an internal metric."; - } - container default-metric { - leaf metric { - type std-metric; - description - "Default IS-IS metric for the IPv4 prefix."; - } - description - "IS-IS default metric container."; - } - container delay-metric { - leaf metric { - type std-metric; - description - "IS-IS delay metric for the IPv4 prefix."; - } - leaf supported { - type boolean; - default "false"; - description - "Indicates whether the IS-IS delay metric is supported."; - } - description - "IS-IS delay metric container."; - } - container expense-metric { - leaf metric { - type std-metric; - description - "IS-IS expense metric for the IPv4 prefix."; - } - leaf supported { - type boolean; - default "false"; - description - "Indicates whether the IS-IS expense metric is supported."; - } - description - "IS-IS expense metric container."; - } - container error-metric { - leaf metric { - type std-metric; - description - "This leaf describes the IS-IS error metric value."; - } - leaf supported { - type boolean; - default "false"; - description - "Indicates whether the IS-IS error metric is supported."; - } - description - "IS-IS error metric container."; - } - } - - grouping prefix-ipv4-extended { - description - "Grouping for attributes of an IPv4 extended prefix - as defined in RFC 5305."; - reference - "RFC 5305: IS-IS Extensions for Traffic Engineering"; - leaf up-down { - type boolean; - description - "Value of the up/down bit. - Set to 'true' when the prefix has been advertised down - the hierarchy."; - } - leaf ip-prefix { - type inet:ipv4-address; - description - "IPv4 prefix address."; - } - leaf prefix-len { - type uint8; - description - "IPv4 prefix length (in bits)."; - } - leaf metric { - type wide-metric; - description - "IS-IS wide metric value."; - } - leaf-list tag { - type uint32; - description - "List of 32-bit tags associated with the IPv4 prefix."; - } - leaf-list tag64 { - type uint64; - description - "List of 64-bit tags associated with the IPv4 prefix."; - } - uses prefix-attributes-extension; - } - - grouping prefix-ipv6-extended { - description - "Grouping for attributes of an IPv6 prefix - as defined in RFC 5308."; - reference - "RFC 5308: Routing IPv6 with IS-IS"; - leaf up-down { - type boolean; - description - "Value of the up/down bit. - Set to 'true' when the prefix has been advertised down - the hierarchy."; - } - leaf ip-prefix { - type inet:ipv6-address; - description - "IPv6 prefix address."; - } - leaf prefix-len { - type uint8; - description - "IPv6 prefix length (in bits)."; - } - leaf metric { - type wide-metric; - description - "IS-IS wide metric value."; - } - leaf-list tag { - type uint32; - description - "List of 32-bit tags associated with the IPv6 prefix."; - } - leaf-list tag64 { - type uint64; - description - "List of 64-bit tags associated with the IPv6 prefix."; - } - uses prefix-attributes-extension; - } - - /* TLVs and sub-TLVs for neighbors */ - - grouping neighbor-link-attributes { - description - "Grouping for link attributes as defined - in RFC 5029."; - reference - "RFC 5029: Definition of an IS-IS Link Attribute Sub-TLV"; - leaf link-attributes-flags { - type uint16; - description - "Flags for the link attributes."; - } - } - - grouping neighbor-gmpls-extensions { - description - "Grouping for GMPLS attributes of a neighbor as defined - in RFC 5307."; - reference - "RFC 5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)"; - leaf link-local-id { - type uint32; - description - "Local identifier of the link."; - } - leaf remote-local-id { - type uint32; - description - "Remote identifier of the link."; - } - leaf protection-capability { - type uint8; - description - "Describes the protection capabilities - of the link. This is the value of the - first octet of the sub-TLV type 20 value."; - } - container interface-switching-capability { - description - "Interface switching capabilities of the link."; - leaf switching-capability { - type uint8; - description - "Switching capability of the link."; - } - leaf encoding { - type uint8; - description - "Type of encoding of the LSP being used."; - } - container max-lsp-bandwidths { - description - "Per-priority maximum LSP bandwidths."; - list max-lsp-bandwidth { - leaf priority { - type uint8 { - range "0 .. 7"; - } - description - "Priority from 0 to 7."; - } - leaf bandwidth { - type rt-types:bandwidth-ieee-float32; - description - "Maximum LSP bandwidth."; - } - description - "List of maximum LSP bandwidths for different - priorities."; - } - } - container tdm-specific { - when '../switching-capability = 100'; - description - "Switching-capability-specific information applicable - when the switching type is Time-Division Multiplexing - (TDM)."; - leaf minimum-lsp-bandwidth { - type rt-types:bandwidth-ieee-float32; - description - "Minimum LSP bandwidth."; - } - leaf indication { - type uint8; - description - "Indicates whether the interface supports Standard - or Arbitrary SONET/SDH (Synchronous Optical Network / - Synchronous Digital Hierarchy)."; - } - } - container psc-specific { - when "../switching-capability >= 1 and - ../switching-capability <= 4"; - description - "Switching-capability-specific information applicable - when the switching type is PSC1, PSC2, PSC3, or PSC4 - ('PSC' stands for 'Packet Switching Capability')."; - leaf minimum-lsp-bandwidth { - type rt-types:bandwidth-ieee-float32; - description - "Minimum LSP bandwidth."; - } - leaf mtu { - type uint16; - units "bytes"; - description - "Interface MTU."; - } - } - } - } - - grouping neighbor-extended-te-extensions { - description - "Grouping for TE attributes of a neighbor as defined - in RFC 8570."; - reference - "RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; - container unidirectional-link-delay { - description - "Container for the average delay - from the local neighbor to the remote neighbor."; - container flags { - leaf-list unidirectional-link-delay-subtlv-flags { - type identityref { - base unidirectional-link-delay-subtlv-flag; - } - description - "This list contains identities for the bits that - are set."; - } - description - "Unidirectional Link Delay sub-TLV flags."; - } - leaf value { - type uint32; - units "usec"; - description - "Delay value expressed in microseconds."; - } - } - container min-max-unidirectional-link-delay { - description - "Container for the minimum and maximum delay - from the local neighbor to the remote neighbor."; - container flags { - leaf-list min-max-unidirectional-link-delay-subtlv-flags { - type identityref { - base min-max-unidirectional-link-delay-subtlv-flag; - } - description - "This list contains identities for the bits that - are set."; - } - description - "Min/Max Unidirectional Link Delay sub-TLV flags."; - } - leaf min-value { - type uint32; - units "usec"; - description - "Minimum delay value expressed in microseconds."; - } - leaf max-value { - type uint32; - units "usec"; - description - "Maximum delay value expressed in microseconds."; - } - } - container unidirectional-link-delay-variation { - description - "Container for the average delay variation - from the local neighbor to the remote neighbor."; - leaf value { - type uint32; - units "usec"; - description - "Delay variation value expressed in microseconds."; - } - } - container unidirectional-link-loss { - description - "Container for packet loss from the local neighbor to the - remote neighbor."; - container flags { - leaf-list unidirectional-link-loss-subtlv-flags { - type identityref { - base unidirectional-link-loss-subtlv-flag; - } - description - "This list contains identities for the bits that - are set."; - } - description - "Unidirectional Link Loss sub-TLV flags."; - } - leaf value { - type uint32; - units "percent"; - description - "Link packet loss expressed as a percentage of - the total traffic sent over a configurable interval."; - } - } - container unidirectional-link-residual-bandwidth { - description - "Container for the residual bandwidth - from the local neighbor to the remote neighbor."; - leaf value { - type rt-types:bandwidth-ieee-float32; - units "Bps"; - description - "Residual bandwidth."; - } - } - container unidirectional-link-available-bandwidth { - description - "Container for the available bandwidth - from the local neighbor to the remote neighbor."; - leaf value { - type rt-types:bandwidth-ieee-float32; - units "Bps"; - description - "Available bandwidth."; - } - } - container unidirectional-link-utilized-bandwidth { - description - "Container for the utilized bandwidth - from the local neighbor to the remote neighbor."; - leaf value { - type rt-types:bandwidth-ieee-float32; - units "Bps"; - description - "Utilized bandwidth."; - } - } - } - - grouping neighbor-te-extensions { - description - "Grouping for TE attributes of a neighbor as defined - in RFC 5305."; - reference - "RFC 5305: IS-IS Extensions for Traffic Engineering"; - leaf admin-group { - type uint32; - description - "Administrative Group / Resource Class/Color."; - } - container local-if-ipv4-addrs { - description - "All local interface IPv4 addresses."; - leaf-list local-if-ipv4-addr { - type inet:ipv4-address; - description - "List of local interface IPv4 addresses."; - } - } - container remote-if-ipv4-addrs { - description - "All remote interface IPv4 addresses."; - leaf-list remote-if-ipv4-addr { - type inet:ipv4-address; - description - "List of remote interface IPv4 addresses."; - } - } - leaf te-metric { - type uint32; - description - "TE metric."; - } - leaf max-bandwidth { - type rt-types:bandwidth-ieee-float32; - description - "Maximum bandwidth."; - } - leaf max-reservable-bandwidth { - type rt-types:bandwidth-ieee-float32; - description - "Maximum reservable bandwidth."; - } - container unreserved-bandwidths { - description - "All unreserved bandwidths."; - list unreserved-bandwidth { - leaf priority { - type uint8 { - range "0 .. 7"; - } - description - "Priority from 0 to 7."; - } - leaf unreserved-bandwidth { - type rt-types:bandwidth-ieee-float32; - description - "Unreserved bandwidth."; - } - description - "List of unreserved bandwidths for different - priorities."; - } - } - } - - grouping neighbor-extended { - description - "Grouping for attributes of an IS-IS extended neighbor."; - leaf neighbor-id { - type extended-system-id; - description - "System ID of the extended neighbor."; - } - container instances { - description - "List of all adjacencies between the local - system and the neighbor system ID."; - list instance { - key "id"; - leaf id { - type uint32; - description - "Unique identifier of an instance of a - particular neighbor."; - } - leaf metric { - type wide-metric; - description - "IS-IS wide metric for the extended neighbor."; - } - uses neighbor-gmpls-extensions; - uses neighbor-te-extensions; - uses neighbor-extended-te-extensions; - uses neighbor-link-attributes; - uses unknown-tlvs; - description - "Instance of a particular adjacency."; - } - } - } - - grouping neighbor { - description - "IS-IS standard neighbor grouping."; - leaf neighbor-id { - type extended-system-id; - description - "IS-IS neighbor system ID."; - } - container instances { - description - "List of all adjacencies between the local - system and the neighbor system ID."; - list instance { - key "id"; - leaf id { - type uint32; - description - "Unique identifier of an instance of a - particular neighbor."; - } - leaf i-e { - type boolean; - description - "Internal or external (I/E) metric bit value. - Set to 'false' to indicate an internal metric."; - } - container default-metric { - leaf metric { - type std-metric; - description - "IS-IS default metric value."; - } - description - "IS-IS default metric container."; - } - container delay-metric { - leaf metric { - type std-metric; - description - "IS-IS delay metric value."; - } - leaf supported { - type boolean; - default "false"; - description - "IS-IS delay metric supported."; - } - description - "IS-IS delay metric container."; - } - container expense-metric { - leaf metric { - type std-metric; - description - "IS-IS expense metric value."; - } - leaf supported { - type boolean; - default "false"; - description - "IS-IS expense metric supported."; - } - description - "IS-IS expense metric container."; - } - container error-metric { - leaf metric { - type std-metric; - description - "IS-IS error metric value."; - } - leaf supported { - type boolean; - default "false"; - description - "IS-IS error metric supported."; - } - description - "IS-IS error metric container."; - } - description - "Instance of a particular adjacency as defined in - ISO 10589."; - reference - "ISO 10589: Intermediate System to Intermediate System - intra-domain routeing information exchange protocol - for use in conjunction with the protocol for providing - the connectionless-mode network service (ISO 8473)"; - } - } - } - - /* Top-level TLVs */ - - grouping tlv132-ipv4-addresses { - leaf-list ipv4-addresses { - type inet:ipv4-address; - description - "List of IPv4 addresses of the IS-IS node. The IS-IS - reference is TLV 132."; - } - description - "Grouping for TLV 132."; - } - - grouping tlv232-ipv6-addresses { - leaf-list ipv6-addresses { - type inet:ipv6-address; - description - "List of IPv6 addresses of the IS-IS node. The IS-IS - reference is TLV 232."; - } - description - "Grouping for TLV 232."; - } - - grouping tlv134-ipv4-te-rid { - leaf ipv4-te-routerid { - type inet:ipv4-address; - description - "IPv4 Traffic Engineering router ID of the IS-IS node. - The IS-IS reference is TLV 134."; - } - description - "Grouping for TLV 134."; - } - - grouping tlv140-ipv6-te-rid { - leaf ipv6-te-routerid { - type inet:ipv6-address; - description - "IPv6 Traffic Engineering router ID of the IS-IS node. - The IS-IS reference is TLV 140."; - } - description - "Grouping for TLV 140."; - } - - grouping tlv129-protocols { - leaf-list protocol-supported { - type uint8; - description - "List of supported protocols of the IS-IS node. - The IS-IS reference is TLV 129."; - } - description - "Grouping for TLV 129."; - } - - grouping tlv137-hostname { - leaf dynamic-hostname { - type string; - description - "Hostname of the IS-IS node. The IS-IS reference - is TLV 137."; - } - description - "Grouping for TLV 137."; - } - - grouping tlv10-authentication { - container authentication { - leaf authentication-type { - type identityref { - base key-chain:crypto-algorithm; - } - description - "Authentication type to be used with an IS-IS node."; - } - leaf authentication-key { - type string; - description - "Authentication key to be used. For security reasons, - the authentication key MUST NOT be presented in - a cleartext format in response to any request - (e.g., via get or get-config)."; - } - description - "IS-IS node authentication information container. The - IS-IS reference is TLV 10."; - } - description - "Grouping for TLV 10."; - } - - grouping tlv229-mt { - container mt-entries { - list topology { - description - "List of topologies supported."; - leaf mt-id { - type uint16 { - range "0 .. 4095"; - } - description - "Multi-Topology (MT) identifier of the topology."; - } - container attributes { - leaf-list flags { - type identityref { - base tlv229-flag; - } - description - "This list contains identities for the bits that - are set."; - } - description - "TLV 229 flags."; - } - } - description - "IS-IS node topology information container. The - IS-IS reference is TLV 229."; - } - description - "Grouping for TLV 229."; - } - - grouping tlv242-router-capabilities { - container router-capabilities { - list router-capability { - container flags { - leaf-list router-capability-flags { - type identityref { - base router-capability-flag; - } - description - "This list contains identities for the bits that - are set."; - } - description - "Router Capability flags."; - } - container node-tags { - if-feature "node-tag"; - list node-tag { - leaf tag { - type uint32; - description - "Node tag value."; - } - description - "List of tags."; - } - description - "Container for node administrative tags."; - } - uses unknown-tlvs; - description - "IS-IS node capabilities. This list element may - be extended with detailed information. The IS-IS - reference is TLV 242."; - } - description - "List of Router Capability TLVs."; - } - description - "Grouping for TLV 242."; - } - - grouping tlv138-srlg { - description - "Grouping for TLV 138."; - container links-srlgs { - list links { - leaf neighbor-id { - type extended-system-id; - description - "System ID of the extended neighbor."; - } - leaf flags { - type uint8; - description - "Flags associated with the link."; - } - leaf link-local-id { - type union { - type inet:ip-address; - type uint32; - } - description - "Local identifier of the link. - It could be an IPv4 address or a local identifier."; - } - leaf link-remote-id { - type union { - type inet:ip-address; - type uint32; - } - description - "Remote identifier of the link. - It could be an IPv4 address or a remotely learned - identifier."; - } - container srlgs { - description - "List of SRLGs."; - leaf-list srlg { - type uint32; - description - "SRLG value of the link."; - } - } - description - "SRLG attribute of a link."; - } - description - "List of links with SRLGs."; - } - } - - /* Grouping for LSDB descriptions */ - - grouping lsp-entry { - description - "IS-IS LSP database entry grouping."; - leaf decoded-completed { - type boolean; - description - "The IS-IS LSP body has been fully decoded."; - } - leaf raw-data { - type yang:hex-string; - description - "The hexadecimal representation of the complete LSP - as received or originated, in network byte order."; - } - leaf lsp-id { - type lsp-id; - description - "LSP ID of the LSP."; - } - leaf checksum { - type uint16; - description - "LSP checksum."; - } - leaf remaining-lifetime { - type uint16; - units "seconds"; - description - "Remaining lifetime (in seconds) until LSP expiration."; - } - leaf sequence { - type uint32; - description - "This leaf describes the sequence number of the LSP."; - } - container attributes { - leaf-list lsp-flags { - type identityref { - base lsp-flag; - } - description - "This list contains identities for the bits that - are set."; - } - description - "LSP attributes."; - } - uses tlv132-ipv4-addresses; - uses tlv232-ipv6-addresses; - uses tlv134-ipv4-te-rid; - uses tlv140-ipv6-te-rid; - uses tlv129-protocols; - uses tlv137-hostname; - uses tlv10-authentication; - uses tlv229-mt; - uses tlv242-router-capabilities; - uses tlv138-srlg; - uses unknown-tlvs; - container is-neighbor { - list neighbor { - key "neighbor-id"; - uses neighbor; - description - "List of neighbors."; - } - description - "Standard IS neighbors container. The IS-IS reference is - TLV 2."; - } - container extended-is-neighbor { - list neighbor { - key "neighbor-id"; - uses neighbor-extended; - description - "List of extended IS neighbors."; - } - description - "Standard IS extended neighbors container. The IS-IS - reference is TLV 22."; - } - container ipv4-internal-reachability { - list prefixes { - uses prefix-ipv4-std; - description - "List of prefixes."; - } - description - "IPv4 internal reachability information container. - The IS-IS reference is TLV 128."; - } - container ipv4-external-reachability { - list prefixes { - uses prefix-ipv4-std; - description - "List of prefixes."; - } - description - "IPv4 external reachability information container. The - IS-IS reference is TLV 130."; - } - container extended-ipv4-reachability { - list prefixes { - uses prefix-ipv4-extended; - uses unknown-tlvs; - description - "List of prefixes."; - } - description - "IPv4 extended reachability information container. The - IS-IS reference is TLV 135."; - } - container mt-is-neighbor { - list neighbor { - leaf mt-id { - type uint16 { - range "0 .. 4095"; - } - description - "Multi-Topology (MT) identifier."; - } - uses neighbor-extended; - description - "List of neighbors."; - } - description - "IS-IS MT neighbor container. The IS-IS reference is - TLV 223."; - } - container mt-extended-ipv4-reachability { - list prefixes { - leaf mt-id { - type uint16 { - range "0 .. 4095"; - } - description - "MT identifier."; - } - uses prefix-ipv4-extended; - uses unknown-tlvs; - description - "List of extended prefixes."; - } - description - "IPv4 MT extended reachability information container. - The IS-IS reference is TLV 235."; - reference - "RFC 5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs)"; - } - container mt-ipv6-reachability { - list prefixes { - leaf mt-id { - type uint16 { - range "0 .. 4095"; - } - description - "MT identifier."; - } - uses prefix-ipv6-extended; - uses unknown-tlvs; - description - "List of IPv6 extended prefixes."; - } - description - "IPv6 MT extended reachability information container. - The IS-IS reference is TLV 237."; - reference - "RFC 5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs)"; - } - container ipv6-reachability { - list prefixes { - uses prefix-ipv6-extended; - uses unknown-tlvs; - description - "List of IPv6 prefixes."; - } - description - "IPv6 reachability information container. The IS-IS - reference is TLV 236."; - } - } - - grouping lsdb { - description - "Link State Database (LSDB) grouping."; - container database { - config false; - list levels { - key "level"; - leaf level { - type level-number; - description - "LSDB level number (1 or 2)."; - } - list lsp { - key "lsp-id"; - uses lsp-entry; - description - "List of LSPs in the LSDB."; - } - description - "List of LSPs for the LSDB-level container."; - } - description - "IS-IS LSDB container."; - } - } - - /* Augmentations */ - - augment "/rt:routing/" - + "rt:ribs/rt:rib/rt:routes/rt:route" { - when "derived-from-or-self(rt:source-protocol, 'isis:isis')" { - description - "IS-IS-specific route attributes."; - } - uses route-content; - description - "This augments the route object in the Routing Information - Base (RIB) with IS-IS-specific attributes."; - } - - augment "/if:interfaces/if:interface" { - leaf clns-mtu { - if-feature "osi-interface"; - type uint16; - description - "Connectionless-mode Network Service (CLNS) MTU of the - interface."; - } - description - "ISO-specific interface parameters."; - } - - augment "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol" { - when "derived-from-or-self(rt:type, 'isis:isis')" { - description - "This augmentation is only valid when the routing protocol - instance type is 'isis'."; - } - description - "This augments a routing protocol instance with IS-IS-specific - parameters."; - container isis { - must 'count(area-address) > 0' { - error-message "At least one area address must be " - + "configured."; - description - "Enforces the configuration of at least one area."; - } - uses instance-config; - uses instance-state; - container topologies { - if-feature "multi-topology"; - list topology { - key "name"; - leaf enabled { - type boolean; - description - "Enables the topology configuration."; - } - leaf name { - type leafref { - path "../../../../../../rt:ribs/rt:rib/rt:name"; - } - description - "RIB corresponding to the topology."; - } - uses multi-topology-config; - description - "List of topologies."; - } - description - "MT container."; - } - container interfaces { - list interface { - key "name"; - leaf name { - type if:interface-ref; - description - "Reference to the interface within - the routing instance."; - } - uses interface-config; - uses interface-state; - container topologies { - if-feature "multi-topology"; - list topology { - key "name"; - leaf name { - type leafref { - path "../../../../../../../../" - + "rt:ribs/rt:rib/rt:name"; - } - description - "RIB corresponding to the topology."; - } - uses multi-topology-interface-config; - description - "List of interface topologies."; - } - description - "MT container."; - } - description - "List of IS-IS interfaces."; - } - description - "Configuration container specific to IS-IS interfaces."; - } - description - "IS-IS configuration/state top-level container."; - } - } - - /* RPC methods */ - - rpc clear-adjacency { - description - "This RPC request clears a particular set of IS-IS - adjacencies. If the operation fails for an internal - reason, then the 'error-tag' and 'error-app-tag' should be - set indicating the reason for the failure."; - reference - "RFC 6241: Network Configuration Protocol (NETCONF)"; - input { - leaf routing-protocol-instance-name { - type leafref { - path "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/rt:name"; - } - mandatory true; - description - "Name of the IS-IS protocol instance whose IS-IS - adjacency is being cleared. - - If the corresponding IS-IS instance doesn't exist, - then the operation will fail with an 'error-tag' of - 'data-missing' and an 'error-app-tag' of - 'routing-protocol-instance-not-found'."; - } - leaf level { - type level; - description - "IS-IS level of the adjacency to be cleared. If the - IS-IS level is 'level-all', level-1 and level-2 - adjacencies would both be cleared. - - If the value provided is different from the value - authorized in the enum type, then the operation - SHALL fail with an 'error-tag' of 'data-missing' and - an 'error-app-tag' of 'bad-isis-level'."; - } - leaf interface { - type if:interface-ref; - description - "IS-IS interface name. - - If the corresponding IS-IS interface doesn't exist, - then the operation SHALL fail with an 'error-tag' of - 'data-missing' and an 'error-app-tag' of - 'isis-interface-not-found'."; - } - } - } - - rpc clear-database { - description - "This RPC request clears a particular IS-IS database. - Additionally, all neighbor adjacencies will be forced to - the DOWN state and self-originated LSPs will be - reoriginated. If the operation fails for an IS-IS - internal reason, then the 'error-tag' and 'error-app-tag' - should be set indicating the reason for the failure."; - input { - leaf routing-protocol-instance-name { - type leafref { - path "/rt:routing/rt:control-plane-protocols/" - + "rt:control-plane-protocol/rt:name"; - } - mandatory true; - description - "Name of the IS-IS protocol instance whose IS-IS - database or databases are being cleared. - - If the corresponding IS-IS instance doesn't exist, - then the operation will fail with an 'error-tag' of - 'data-missing' and an 'error-app-tag' of - 'routing-protocol-instance-not-found'."; - } - leaf level { - type level; - description - "IS-IS level of the adjacency to be cleared. If the - IS-IS level is 'level-all', the databases for both - level 1 and level 2 would be cleared. - - If the value provided is different from the value - authorized in the enum type, then the operation - SHALL fail with an 'error-tag' of 'data-missing' and - an 'error-app-tag' of 'bad-isis-level'."; - } - } - } - - /* Notifications */ - - notification database-overload { - uses notification-instance-hdr; - leaf overload { - type enumeration { - enum off { - description - "Indicates that the IS-IS instance has left the - overload state."; - } - enum on { - description - "Indicates that the IS-IS instance has entered the - overload state."; - } - } - description - "New overload state of the IS-IS instance."; - } - description - "This notification is sent when an IS-IS instance - overload state changes."; - } - - notification lsp-too-large { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf pdu-size { - type uint32; - description - "Size of the LSP PDU."; - } - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - description - "This notification is sent when an attempt to propagate - an LSP that is larger than the dataLinkBlockSize (ISO 10589) - for the circuit occurs. The generation of the notification - must be throttled with at least 5 seconds between successive - notifications."; - reference - "ISO 10589: Intermediate System to Intermediate System - intra-domain routeing information exchange protocol - for use in conjunction with the protocol for providing - the connectionless-mode network service (ISO 8473)"; - } - - notification if-state-change { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf state { - type if-state-type; - description - "Interface state."; - } - description - "This notification is sent when an interface - state change is detected."; - } - - notification corrupted-lsp-detected { - uses notification-instance-hdr; - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - description - "This notification is sent when an LSP that was stored in - memory has become corrupted."; - } - - notification attempt-to-exceed-max-sequence { - uses notification-instance-hdr; - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - description - "This notification is sent when the system - wraps the 32-bit sequence counter of an LSP."; - } - - notification id-len-mismatch { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf pdu-field-len { - type uint8; - description - "Value for the system ID length in the received PDU."; - } - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - description - "This notification is sent when a PDU with a different value - for the system ID length is received. The generation of the - notification must be throttled with at least 5 seconds - between successive notifications."; - } - - notification max-area-addresses-mismatch { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf max-area-addresses { - type uint8; - description - "Received number of supported areas."; - } - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - description - "This notification is sent when a PDU with a different value - for the Maximum Area Addresses has been received. The - generation of the notification must be throttled with - at least 5 seconds between successive notifications."; - } - - notification own-lsp-purge { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - description - "This notification is sent when the system receives - a PDU with its own system ID and zero age."; - } - - notification sequence-number-skipped { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - description - "This notification is sent when the system receives a - PDU with its own system ID and different contents. The - system has to originate the LSP with a higher sequence - number."; - } - - notification authentication-type-failure { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - description - "This notification is sent when the system receives a - PDU with the wrong authentication type field. - The generation of the notification must be throttled - with at least 5 seconds between successive notifications."; - } - - notification authentication-failure { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - description - "This notification is sent when the system receives - a PDU on which authentication fails. The generation of the - notification must be throttled with at least 5 seconds - between successive notifications."; - } - - notification version-skew { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf protocol-version { - type uint8; - description - "Protocol version received in the PDU."; - } - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - description - "This notification is sent when the system receives a - PDU with a different protocol version number. - The generation of the notification must be throttled - with at least 5 seconds between successive notifications."; - } - - notification area-mismatch { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - description - "This notification is sent when the system receives a - Hello PDU from an IS that does not share any area - address. The generation of the notification must be - throttled with at least 5 seconds between successive - notifications."; - } - - notification rejected-adjacency { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - leaf reason { - type string { - length "0..255"; - } - description - "The system may provide a reason to reject the - adjacency. If the reason is not available, - the reason string will not be returned. - The expected format is a single line of text."; - } - description - "This notification is sent when the system receives a - Hello PDU from an IS but does not establish an adjacency - for some reason. The generation of the notification - must be throttled with at least 5 seconds between - successive notifications."; - } - - notification protocols-supported-mismatch { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - leaf-list protocols { - type uint8; - description - "List of protocols supported by the remote system."; - } - description - "This notification is sent when the system receives a - non-pseudonode LSP that has no matching protocols - supported. The generation of the notification must be - throttled with at least 5 seconds between successive - notifications."; - } - - notification lsp-error-detected { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - leaf raw-pdu { - type binary; - description - "Received raw PDU."; - } - leaf error-offset { - type uint32; - description - "If the problem is a malformed TLV, the error offset - points to the start of the TLV. If the problem is with - the LSP header, the error offset points to the errant - byte."; - } - leaf tlv-type { - type uint8; - description - "If the problem is a malformed TLV, the TLV type is set - to the type value of the suspicious TLV. Otherwise, - this leaf is not present."; - } - description - "This notification is sent when the system receives an - LSP with a parse error. The generation of the notification - must be throttled with at least 5 seconds between - successive notifications."; - } - - notification adjacency-state-change { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf neighbor { - type string { - length "1..255"; - } - description - "Name of the neighbor. It corresponds to the hostname - associated with the system ID of the neighbor in the - mapping database (RFC 5301). If the name of the neighbor - is not available, it is not returned."; - reference - "RFC 5301: Dynamic Hostname Exchange Mechanism for IS-IS"; - } - leaf neighbor-system-id { - type system-id; - description - "Neighbor system ID."; - } - leaf state { - type adj-state-type; - description - "New state of the IS-IS adjacency."; - } - leaf reason { - type string { - length "1..255"; - } - description - "If the adjacency is going to the 'down' state, this leaf - provides a reason for the adjacency going down. The reason - is provided as text. If the adjacency is going to the 'up' - state, no reason is provided. The expected format is a - single line of text."; - } - description - "This notification is sent when an IS-IS adjacency - moves to the 'up' state or the 'down' state."; - } - - notification lsp-received { - uses notification-instance-hdr; - uses notification-interface-hdr; - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - leaf sequence { - type uint32; - description - "Sequence number of the received LSP."; - } - leaf received-timestamp { - type yang:timestamp; - description - "Timestamp when the LSP was received."; - } - leaf neighbor-system-id { - type system-id; - description - "Neighbor system ID of the LSP sender."; - } - description - "This notification is sent when an LSP is received. - The generation of the notification must be throttled with - at least 5 seconds between successive notifications."; - } - - notification lsp-generation { - uses notification-instance-hdr; - leaf lsp-id { - type lsp-id; - description - "LSP ID."; - } - leaf sequence { - type uint32; - description - "Sequence number of the received LSP."; - } - leaf send-timestamp { - type yang:timestamp; - description - "Timestamp when the LSP was regenerated."; - } - description - "This notification is sent when an LSP is regenerated. - The generation of the notification must be throttled with - at least 5 seconds between successive notifications."; - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang deleted file mode 100644 index 445d1994a..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-key-chain@2017-06-15.yang +++ /dev/null @@ -1,382 +0,0 @@ -module ietf-key-chain { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain"; - prefix key-chain; - - import ietf-yang-types { - prefix yang; - } - import ietf-netconf-acm { - prefix nacm; - } - - organization - "IETF RTGWG - Routing Area Working Group"; - contact - "WG Web: - WG List: - - Editor: Acee Lindem - - Yingzhen Qu - - Derek Yeung - - Ing-Wher Chen - - Jeffrey Zhang - "; - - description - "This YANG module defines the generic configuration - data for key chains. It is intended that the module - will be extended by vendors to define vendor-specific - key chain configuration parameters. - - Copyright (c) 2017 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8177; - see the RFC itself for full legal notices."; - - reference "RFC 8177"; - - revision 2017-06-15 { - description - "Initial RFC Revision"; - reference "RFC 8177: YANG Data Model for Key Chains"; - } - - feature hex-key-string { - description - "Support hexadecimal key string."; - } - - feature accept-tolerance { - description - "Support the tolerance or acceptance limit."; - } - - feature independent-send-accept-lifetime { - description - "Support for independent send and accept key lifetimes."; - } - - feature crypto-hmac-sha-1-12 { - description - "Support for TCP HMAC-SHA-1 12-byte digest hack."; - } - - feature cleartext { - description - "Support for cleartext algorithm. Usage is - NOT RECOMMENDED."; - } - - feature aes-cmac-prf-128 { - description - "Support for AES Cipher-based Message Authentication - Code Pseudorandom Function."; - } - - feature aes-key-wrap { - description - "Support for Advanced Encryption Standard (AES) Key Wrap."; - } - - feature replay-protection-only { - description - "Provide replay protection without any authentication - as required by protocols such as Bidirectional - Forwarding Detection (BFD)."; - } - identity crypto-algorithm { - description - "Base identity of cryptographic algorithm options."; - } - - identity hmac-sha-1-12 { - base crypto-algorithm; - if-feature "crypto-hmac-sha-1-12"; - description - "The HMAC-SHA1-12 algorithm."; - } - - identity aes-cmac-prf-128 { - base crypto-algorithm; - if-feature "aes-cmac-prf-128"; - description - "The AES-CMAC-PRF-128 algorithm - required by - RFC 5926 for TCP-AO key derivation functions."; - } - - identity md5 { - base crypto-algorithm; - description - "The MD5 algorithm."; - } - - identity sha-1 { - base crypto-algorithm; - description - "The SHA-1 algorithm."; - } - - identity hmac-sha-1 { - base crypto-algorithm; - description - "HMAC-SHA-1 authentication algorithm."; - } - - identity hmac-sha-256 { - base crypto-algorithm; - description - "HMAC-SHA-256 authentication algorithm."; - } - - identity hmac-sha-384 { - base crypto-algorithm; - description - "HMAC-SHA-384 authentication algorithm."; - } - - identity hmac-sha-512 { - base crypto-algorithm; - description - "HMAC-SHA-512 authentication algorithm."; - } - - identity cleartext { - base crypto-algorithm; - if-feature "cleartext"; - description - "cleartext."; - } - - identity replay-protection-only { - base crypto-algorithm; - if-feature "replay-protection-only"; - description - "Provide replay protection without any authentication as - required by protocols such as Bidirectional Forwarding - Detection (BFD)."; - } - - typedef key-chain-ref { - type leafref { - path - "/key-chain:key-chains/key-chain:key-chain/key-chain:name"; - } - description - "This type is used by data models that need to reference - configured key chains."; - } - - grouping lifetime { - description - "Key lifetime specification."; - choice lifetime { - default "always"; - description - "Options for specifying key accept or send lifetimes"; - case always { - leaf always { - type empty; - description - "Indicates key lifetime is always valid."; - } - } - case start-end-time { - leaf start-date-time { - type yang:date-and-time; - description - "Start time."; - } - choice end-time { - default "infinite"; - description - "End-time setting."; - case infinite { - leaf no-end-time { - type empty; - description - "Indicates key lifetime end-time is infinite."; - } - } - case duration { - leaf duration { - type uint32 { - range "1..2147483646"; - } - units "seconds"; - description - "Key lifetime duration, in seconds"; - } - } - case end-date-time { - leaf end-date-time { - type yang:date-and-time; - description - "End time."; - } - } - } - } - } - } - - container key-chains { - description - "All configured key-chains on the device."; - list key-chain { - key "name"; - description - "List of key-chains."; - leaf name { - type string; - description - "Name of the key-chain."; - } - leaf description { - type string; - description - "A description of the key-chain"; - } - container accept-tolerance { - if-feature "accept-tolerance"; - description - "Tolerance for key lifetime acceptance (seconds)."; - leaf duration { - type uint32; - units "seconds"; - default "0"; - description - "Tolerance range, in seconds."; - } - } - leaf last-modified-timestamp { - type yang:date-and-time; - config false; - description - "Timestamp of the most recent update to the key-chain"; - } - list key { - key "key-id"; - description - "Single key in key chain."; - leaf key-id { - type uint64; - description - "Numeric value uniquely identifying the key"; - } - container lifetime { - description - "Specify a key's lifetime."; - choice lifetime { - description - "Options for specification of send and accept - lifetimes."; - case send-and-accept-lifetime { - description - "Send and accept key have the same lifetime."; - container send-accept-lifetime { - description - "Single lifetime specification for both - send and accept lifetimes."; - uses lifetime; - } - } - case independent-send-accept-lifetime { - if-feature "independent-send-accept-lifetime"; - description - "Independent send and accept key lifetimes."; - container send-lifetime { - description - "Separate lifetime specification for send - lifetime."; - uses lifetime; - } - container accept-lifetime { - description - "Separate lifetime specification for accept - lifetime."; - uses lifetime; - } - } - } - } - leaf crypto-algorithm { - type identityref { - base crypto-algorithm; - } - mandatory true; - description - "Cryptographic algorithm associated with key."; - } - container key-string { - description - "The key string."; - nacm:default-deny-all; - choice key-string-style { - description - "Key string styles"; - case keystring { - leaf keystring { - type string; - description - "Key string in ASCII format."; - } - } - case hexadecimal { - if-feature "hex-key-string"; - leaf hexadecimal-string { - type yang:hex-string; - description - "Key in hexadecimal string format. When compared - to ASCII, specification in hexadecimal affords - greater key entropy with the same number of - internal key-string octets. Additionally, it - discourages usage of well-known words or - numbers."; - } - } - } - } - leaf send-lifetime-active { - type boolean; - config false; - description - "Indicates if the send lifetime of the - key-chain key is currently active."; - } - leaf accept-lifetime-active { - type boolean; - config false; - description - "Indicates if the accept lifetime of the - key-chain key is currently active."; - } - } - } - container aes-key-wrap { - if-feature "aes-key-wrap"; - description - "AES Key Wrap encryption for key-chain key-strings. The - encrypted key-strings are encoded as hexadecimal key - strings using the hex-key-string leaf."; - leaf enable { - type boolean; - default "false"; - description - "Enable AES Key Wrap encryption."; - } - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang deleted file mode 100644 index 2bf5402a3..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-te-topology@2024-06-08.yang +++ /dev/null @@ -1,208 +0,0 @@ -module ietf-l3-te-topology { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-l3-te-topology"; - prefix "l3tet"; - - import ietf-network { - prefix "nw"; - reference "RFC 8345: A YANG Data Model for Network Topologies"; - } - import ietf-network-topology { - prefix "nt"; - reference "RFC 8345: A YANG Data Model for Network Topologies"; - } - import ietf-l3-unicast-topology { - prefix "l3t"; - reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; - } - import ietf-te-topology { - prefix "tet"; - reference - "RFC 8795: YANG Data Model for Traffic Engineering (TE) - Topologies"; - } - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "WG Web: - WG List: - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - - - Editor: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Himanshu Shah - - - Editor: Oscar Gonzalez De Dios - "; - - description - "YANG data model for representing and manipulating Layer 3 TE - Topologies. - - Copyright (c) 2024 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Revised BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; - - revision 2024-06-08 { - description - "Initial revision"; - reference "RFC XXXX: YANG Data Model for Layer 3 TE Topologies"; - } - - grouping l3-te-topology-type { - description - "Identifies the L3 TE topology type."; - container l3-te { - presence - "Indicates L3 TE Topology"; - description - "Its presence identifies the L3 TE topology type."; - } - } - - augment "/nw:networks/nw:network/nw:network-types/" - + "l3t:l3-unicast-topology" { - description - "Defines the L3 TE topology type."; - uses l3-te-topology-type; - } - - augment "/nw:networks/nw:network/l3t:l3-topology-attributes" { - when "../nw:network-types/l3t:l3-unicast-topology/l3tet:l3-te" { - description - "Augment only for L3 TE topology"; - } - description - "Augment topology configuration"; - uses l3-te-topology-attributes; - } - - augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" { - when "../../nw:network-types/l3t:l3-unicast-topology/" - + "l3tet:l3-te" { - description - "Augment only for L3 TE topology"; - } - description - "Augment node configuration"; - uses l3-te-node-attributes; - } - - augment "/nw:networks/nw:network/nw:node/nt:termination-point/" - + "l3t:l3-termination-point-attributes" { - when "../../../nw:network-types/l3t:l3-unicast-topology/" - + "l3tet:l3-te" { - description - "Augment only for L3 TE topology"; - } - description - "Augment termination point configuration"; - uses l3-te-tp-attributes; - } - - augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" { - when "../../nw:network-types/l3t:l3-unicast-topology/" - + "l3tet:l3-te" { - description - "Augment only for L3 TE topology"; - } - description - "Augment link configuration"; - uses l3-te-link-attributes; - } - - grouping l3-te-topology-attributes { - description - "L3 TE topology scope attributes"; - container l3-te-topology-attributes { - must "/nw:networks/nw:network" - + "[nw:network-id = current()/network-ref]/" - + "nw:network-types/tet:te-topology" { - error-message - "The referenced network must be a TE topology."; - description - "The referenced network must be a TE topology."; - } - description - "Containing TE topology references"; - uses nw:network-ref; - } // l3-te-topology-attributes - } // l3-te-topology-attributes - - grouping l3-te-node-attributes { - description - "L3 TE node scope attributes"; - container l3-te-node-attributes { - must "/nw:networks/nw:network" - + "[nw:network-id = current()/network-ref]/" - + "nw:network-types/tet:te-topology" { - error-message - "The referenced network must be a TE topology."; - description - "The referenced network must be a TE topology."; - } - description - "Containing TE node references"; - uses nw:node-ref; - } // l3-te - } // l3-te-node-attributes - - grouping l3-te-tp-attributes { - description - "L3 TE termination point scope attributes"; - container l3-te-tp-attributes { - must "/nw:networks/nw:network" - + "[nw:network-id = current()/network-ref]/" - + "nw:network-types/tet:te-topology" { - error-message - "The referenced network must be a TE topology."; - description - "The referenced network must be a TE topology."; - } - description - "Containing TE termination point references"; - uses nt:tp-ref; - } // l3-te - } // l3-te-tp-attributes - - grouping l3-te-link-attributes { - description - "L3 TE link scope attributes"; - container l3-te-link-attributes { - must "/nw:networks/nw:network" - + "[nw:network-id = current()/network-ref]/" - + "nw:network-types/tet:te-topology" { - error-message - "The referenced network must be a TE topology."; - description - "The referenced network must be a TE topology."; - } - description - "Containing TE link references"; - uses nt:link-ref; - } - } // l3-te-link-attributes -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang deleted file mode 100644 index 39fcebd76..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-l3-unicast-topology@2018-02-26.yang +++ /dev/null @@ -1,359 +0,0 @@ -module ietf-l3-unicast-topology { - yang-version 1.1; - namespace - "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; - prefix "l3t"; - import ietf-network { - prefix "nw"; - } - import ietf-network-topology { - prefix "nt"; - } - import ietf-inet-types { - prefix "inet"; - } - import ietf-routing-types { - prefix "rt-types"; - } - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - contact - "WG Web: - WG List: - Editor: Alexander Clemm - - Editor: Jan Medved - - Editor: Robert Varga - - Editor: Xufeng Liu - - Editor: Nitin Bahadur - - Editor: Hariharan Ananthakrishnan - "; - description - "This module defines a model for Layer 3 Unicast - topologies. - - Copyright (c) 2018 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of - RFC 8346; see the RFC itself for full legal notices."; - revision "2018-02-26" { - description - "Initial revision."; - reference - "RFC 8346: A YANG Data Model for Layer 3 Topologies"; - } - - identity flag-identity { - description "Base type for flags"; - } - - typedef l3-event-type { - type enumeration { - enum "add" { - description - "A Layer 3 node, link, prefix, or termination point has - been added"; - } - enum "remove" { - description - "A Layer 3 node, link, prefix, or termination point has - been removed"; - } - enum "update" { - description - "A Layer 3 node, link, prefix, or termination point has - been updated"; - } - } - description "Layer 3 event type for notifications"; - } - - typedef prefix-flag-type { - type identityref { - base "flag-identity"; - } - description "Prefix flag attributes"; - } - - typedef node-flag-type { - type identityref { - base "flag-identity"; - } - description "Node flag attributes"; - } - - typedef link-flag-type { - type identityref { - base "flag-identity"; - } - description "Link flag attributes"; - } - - typedef l3-flag-type { - type identityref { - base "flag-identity"; - } - description "L3 flag attributes"; - } - - grouping l3-prefix-attributes { - description - "L3 prefix attributes"; - leaf prefix { - type inet:ip-prefix; - description - "IP prefix value"; - } - leaf metric { - type uint32; - description - "Prefix metric"; - } - leaf-list flag { - type prefix-flag-type; - description - "Prefix flags"; - } - } - grouping l3-unicast-topology-type { - description "Identifies the topology type to be L3 Unicast."; - container l3-unicast-topology { - presence "indicates L3 Unicast topology"; - description - "The presence of the container node indicates L3 Unicast - topology"; - } - } - grouping l3-topology-attributes { - description "Topology scope attributes"; - container l3-topology-attributes { - description "Contains topology attributes"; - leaf name { - type string; - description - "Name of the topology"; - } - leaf-list flag { - type l3-flag-type; - description - "Topology flags"; - } - } - } - grouping l3-node-attributes { - description "L3 node scope attributes"; - container l3-node-attributes { - description - "Contains node attributes"; - leaf name { - type inet:domain-name; - description - "Node name"; - } - leaf-list flag { - type node-flag-type; - description - "Node flags"; - } - leaf-list router-id { - type rt-types:router-id; - description - "Router-id for the node"; - } - list prefix { - key "prefix"; - description - "A list of prefixes along with their attributes"; - uses l3-prefix-attributes; - } - } - } - grouping l3-link-attributes { - description - "L3 link scope attributes"; - container l3-link-attributes { - description - "Contains link attributes"; - leaf name { - type string; - description - "Link Name"; - } - leaf-list flag { - type link-flag-type; - description - "Link flags"; - } - leaf metric1 { - type uint64; - description - "Link Metric 1"; - } - leaf metric2 { - type uint64; - description - "Link Metric 2"; - } - } - } - grouping l3-termination-point-attributes { - description "L3 termination point scope attributes"; - container l3-termination-point-attributes { - description - "Contains termination point attributes"; - choice termination-point-type { - description - "Indicates the termination point type"; - case ip { - leaf-list ip-address { - type inet:ip-address; - description - "IPv4 or IPv6 address."; - } - } - case unnumbered { - leaf unnumbered-id { - type uint32; - description - "Unnumbered interface identifier. - The identifier will correspond to the ifIndex value - of the interface, i.e., the ifIndex value of the - ifEntry that represents the interface in - implementations where the Interfaces Group MIB - (RFC 2863) is supported."; - reference - "RFC 2863: The Interfaces Group MIB"; - } - } - case interface-name { - leaf interface-name { - type string; - description - "Name of the interface. The name can (but does not - have to) correspond to an interface reference of a - containing node's interface, i.e., the path name of a - corresponding interface data node on the containing - node reminiscent of data type interface-ref defined - in RFC 8343. It should be noted that data type - interface-ref of RFC 8343 cannot be used directly, - - as this data type is used to reference an interface - in a datastore of a single node in the network, not - to uniquely reference interfaces across a network."; - reference - "RFC 8343: A YANG Data Model for Interface Management"; - } - } - } - } - } - augment "/nw:networks/nw:network/nw:network-types" { - description - "Introduces new network type for L3 Unicast topology"; - uses l3-unicast-topology-type; - } - augment "/nw:networks/nw:network" { - when "nw:network-types/l3t:l3-unicast-topology" { - description - "Augmentation parameters apply only for networks with - L3 Unicast topology"; - } - description - "L3 Unicast for the network as a whole"; - uses l3-topology-attributes; - } - augment "/nw:networks/nw:network/nw:node" { - when "../nw:network-types/l3t:l3-unicast-topology" { - description - "Augmentation parameters apply only for networks with - L3 Unicast topology"; - } - description - "L3 Unicast node-level attributes "; - uses l3-node-attributes; - } - augment "/nw:networks/nw:network/nt:link" { - when "../nw:network-types/l3t:l3-unicast-topology" { - description - "Augmentation parameters apply only for networks with - L3 Unicast topology"; - } - description - "Augments topology link attributes"; - uses l3-link-attributes; - } - augment "/nw:networks/nw:network/nw:node/" - +"nt:termination-point" { - when "../../nw:network-types/l3t:l3-unicast-topology" { - description - "Augmentation parameters apply only for networks with - L3 Unicast topology"; - } - description "Augments topology termination point configuration"; - uses l3-termination-point-attributes; - } - notification l3-node-event { - description - "Notification event for L3 node"; - leaf l3-event-type { - type l3-event-type; - description - "Event type"; - } - uses nw:node-ref; - uses l3-unicast-topology-type; - uses l3-node-attributes; - } - notification l3-link-event { - description - "Notification event for L3 link"; - leaf l3-event-type { - type l3-event-type; - description - "Event type"; - } - uses nt:link-ref; - uses l3-unicast-topology-type; - uses l3-link-attributes; - } - notification l3-prefix-event { - description - "Notification event for L3 prefix"; - leaf l3-event-type { - type l3-event-type; - description - "Event type"; - } - uses nw:node-ref; - uses l3-unicast-topology-type; - container prefix { - description - "Contains L3 prefix attributes"; - uses l3-prefix-attributes; - } - } - notification termination-point-event { - description - "Notification event for L3 termination point"; - leaf l3-event-type { - type l3-event-type; - description - "Event type"; - } - uses nt:tp-ref; - uses l3-unicast-topology-type; - uses l3-termination-point-attributes; - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang deleted file mode 100644 index 188336931..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-layer1-types@2022-10-14.yang +++ /dev/null @@ -1,1414 +0,0 @@ - module ietf-layer1-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-layer1-types"; - prefix "l1-types"; - - import ietf-routing-types { - prefix rt-types; - reference - "RFC 8294: Common YANG Data Types for the Routing Area"; - } - - organization - "IETF CCAMP Working Group"; - contact - "WG Web: - WG List: - - Editor: Haomian Zheng - - - Editor: Italo Busi - "; - - description - "This module defines Layer 1 types. The model fully conforms - to the Network Management Datastore Architecture (NMDA). - - Copyright (c) 2022 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - - - - - they appear in all capitals, as shown here."; - - revision "2022-10-14" { - description - "Initial Version"; - reference - "RFC XXXX: A YANG Data Model for Layer 1 Types"; - // RFC Editor: replace XXXX with actual RFC number, update date - // information and remove this note - } - - /* - * Identities - */ - - identity tributary-slot-granularity { - description - "Tributary Slot Granularity (TSG)"; - reference - "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity tsg-1.25G { - base tributary-slot-granularity; - description - "1.25G tributary slot granularity"; - } - - identity tsg-2.5G { - base tributary-slot-granularity; - description - "2.5G tributary slot granularity"; - } - - identity tsg-5G { - base tributary-slot-granularity; - description - "5G tributary slot granularity"; - } - - identity odu-type { - description - "Base identity from which specific Optical Data Unit (ODU) - type is derived."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - - - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODU0 { - base odu-type; - description - "ODU0 type (1.24Gb/s)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODU1 { - base odu-type; - description - "ODU1 type (2.49Gb/s)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODU2 { - base odu-type; - description - "ODU2 type (10.03Gb/s)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODU2e { - base odu-type; - description - "ODU2e type (10.39Gb/s)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - - - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODU3 { - base odu-type; - description - "ODU3 type (40.31Gb/s)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODU4 { - base odu-type; - description - "ODU4 type (104.79Gb/s)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODUflex { - base odu-type; - description - "ODUflex type (flexible bit rate, not resizable). - - It could be used for any type of ODUflex, including - ODUflex(CBR), ODUflex(GFP), ODUflex(GFP,n,k), ODUflex(IMP,s), - ODUflex(IMP) and ODUflex(FlexE-aware)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ODUflex-resizable { - base odu-type; - description - "ODUflex protocol (flexible bit rate, resizable). - - - - - It could be used only for ODUflex(GFP,n,k)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity protocol { - description - "Base identity from which specific protocol is derived."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity Ethernet { - base protocol; - description - "Ethernet protocol."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity Fibre-Channel { - base protocol; - description - "Fibre-Channel (FC) protocol."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity SDH { - base protocol; - description - "SDH protocol."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity SONET { - base protocol; - description - "SONET protocol."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - - - - identity client-signal { - description - "Base identity from which specific Constant Bit Rate (CBR) - client signal is derived"; - } - - identity coding-func { - description - "Base identity from which specific coding function - is derived."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ETH-1Gb { - base client-signal; - description - "Client signal type of 1GbE"; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ETH-10Gb-LAN { - base client-signal; - description - "Client signal type of ETH-10Gb-LAN (10.3 Gb/s)"; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - IEEE 802.3-2018, Clause 49: IEEE Standard for Ethernet"; - } - - identity ETH-10Gb-WAN { - base client-signal; - description - "Client signal type of ETH-10Gb-WAN (9.95 Gb/s)"; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - - - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - IEEE 802.3-2018, Clause 50: IEEE Standard for Ethernet"; - } - - identity ETH-40Gb { - base client-signal; - description - "Client signal type of 40GbE"; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ETH-100Gb { - base client-signal; - description - "Client signal type of 100GbE"; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity STM-1 { - base client-signal; - base coding-func; - description - "Client signal type of STM-1; - STM-1 G.707 (N=1) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity STM-4 { - base client-signal; - - - - - base coding-func; - description - "Client signal type of STM-4; - STM-4 G.707 (N=4) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity STM-16 { - base client-signal; - base coding-func; - description - "Client signal type of STM-16; - STM-16 G.707 (N=16) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity STM-64 { - base client-signal; - base coding-func; - description - "Client signal type of STM-64; - STM-64 G.707 (N=64) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity STM-256 { - base client-signal; - - - - - base coding-func; - description - "Client signal type of STM-256; - STM-256 G.707 (N=256) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity OC-3 { - base client-signal; - base coding-func; - description - "Client signal type of OC3; - OC-3 GR-253-CORE (N=3) coding function."; - reference - "ANSI T1.105-1995: Synchronous Optical Network (SONET) - Basic Description including Multiplex Structure, Rates, - and Formats - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity OC-12 { - base client-signal; - base coding-func; - description - "Client signal type of OC12; - OC-12 GR-253-CORE (N=12) coding function."; - reference - "ANSI T1.105-1995: Synchronous Optical Network (SONET) - Basic Description including Multiplex Structure, Rates, - and Formats - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity OC-48 { - base client-signal; - base coding-func; - description - "Client signal type of OC48; - OC-48 GR-253-CORE (N=48) coding function."; - - - - - reference - "ANSI T1.105-1995: Synchronous Optical Network (SONET) - Basic Description including Multiplex Structure, Rates, - and Formats - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity OC-192 { - base client-signal; - base coding-func; - description - "Client signal type of OC192; - OC-192 GR-253-CORE (N=192) coding function."; - reference - "ANSI T1.105-1995: Synchronous Optical Network (SONET) - Basic Description including Multiplex Structure, Rates, - and Formats - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity OC-768 { - base client-signal; - base coding-func; - description - "Client signal type of OC768; - OC-768 GR-253-CORE (N=768) coding function."; - reference - "ANSI T1.105-1995: Synchronous Optical Network (SONET) - Basic Description including Multiplex Structure, Rates, - and Formats - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FC-100 { - base client-signal; - base coding-func; - description - "Client signal type of Fibre Channel FC-100; - FC-100 FC-FS-2 (1.0625 Gb/s) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - - - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FC-200 { - base client-signal; - base coding-func; - description - "Client signal type of Fibre Channel FC-200; - FC-200 FC-FS-2 (2.125 Gb/s) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FC-400 { - base client-signal; - base coding-func; - description - "Client signal type of Fibre Channel FC-400; - FC-400 FC-FS-2 (4.250 Gb/s) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FC-800 { - base client-signal; - base coding-func; - description - "Client signal type of Fibre Channel FC-800; - FC-800 FC-FS-2 (8.500 Gb/s) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - - - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FC-1200 { - base client-signal; - base coding-func; - description - "Client signal type of Fibre Channel FC-1200; - FC-1200 FC-10GFC (10.51875 Gb/s) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FC-1600 { - base client-signal; - base coding-func; - description - "Client signal type of Fibre Channel FC-1600; - FC-1600 FC-FS-3 (14.025 Gb/s) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FC-3200 { - base client-signal; - base coding-func; - description - "Client signal type of Fibre Channel FC-3200; - FC-3200 FC-FS-4 (28.05 Gb/s) coding function."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN) - - - - - MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FICON-4G { - base client-signal; - description - "Client signal type of Fibre Connection 4G"; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity FICON-8G { - base client-signal; - description - "Client signal type of Fibre Connection 8G"; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks - - ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - - identity ETH-1000X { - base coding-func; - description - "1000BASE-X PCS clause 36 coding function."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ETH-10GW { - base coding-func; - description - "10GBASE-W (WAN PHY) PCS clause 49 and WIS clause 50 - coding function."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ETH-10GR { - base coding-func; - description - "10GBASE-R (LAN PHY) PCS clause 49 coding function."; - - - - - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ETH-40GR { - base coding-func; - description - "40GBASE-R PCS clause 82 coding function."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ETH-100GR { - base coding-func; - description - "100GBASE-R PCS clause 82 coding function."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity optical-interface-func { - description - "Base identity from which optical-interface-function - is derived."; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity SX-PMD-1000 { - base optical-interface-func; - description - "SX-PMD-clause-38 Optical Interface function for - 1000BASE-X PCS-36"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity LX-PMD-1000 { - base optical-interface-func; - description - "LX-PMD-clause-38 Optical Interface function for - 1000BASE-X PCS-36"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity LX10-PMD-1000 { - base optical-interface-func; - - - - - description - "LX10-PMD-clause-59 Optical Interface function for - 1000BASE-X PCS-36"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity BX10-PMD-1000 { - base optical-interface-func; - description - "BX10-PMD-clause-59 Optical Interface function for - 1000BASE-X PCS-36"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity LW-PMD-10G { - base optical-interface-func; - description - "LW-PMD-clause-52 Optical Interface function for - 10GBASE-W PCS-49-WIS-50"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity EW-PMD-10G { - base optical-interface-func; - description - "EW-PMD-clause-52 Optical Interface function for - 10GBASE-W PCS-49-WIS-50"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity LR-PMD-10G { - base optical-interface-func; - description - "LR-PMD-clause-52 Optical Interface function for - 10GBASE-R PCS-49"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ER-PMD-10G { - base optical-interface-func; - description - "ER-PMD-clause-52 Optical Interface function for - 10GBASE-R PCS-49"; - - - - - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity LR4-PMD-40G { - base optical-interface-func; - description - "LR4-PMD-clause-87 Optical Interface function for - 40GBASE-R PCS-82"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ER4-PMD-40G { - base optical-interface-func; - description - "ER4-PMD-clause-87 Optical Interface function for - 40GBASE-R PCS-82"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity FR-PMD-40G { - base optical-interface-func; - description - "FR-PMD-clause-89 Optical Interface function for - 40GBASE-R PCS-82"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity LR4-PMD-100G { - base optical-interface-func; - description - "LR4-PMD-clause-88 Optical Interface function for - 100GBASE-R PCS-82"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - identity ER4-PMD-100G { - base optical-interface-func; - description - "ER4-PMD-clause-88 Optical Interface function for - 100GBASE-R PCS-82"; - reference - "MEF63: Subscriber Layer 1 Service Attributes"; - } - - - - - /* - * Typedefs - */ - - typedef otn-tpn { - type uint16 { - range "1..4095"; - } - description - "Tributary Port Number (TPN) for OTN. "; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks."; - } - - typedef otn-ts { - type uint16 { - range "1..4095"; - } - description - "Tributary Slot (TS) for OTN."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of Evolving - G.709 Optical Transport Networks."; - } - - typedef otn-label-range-type { - type enumeration { - enum trib-slot { - description - "Defines a range of OTN tributary slots (TS)."; - } - enum trib-port { - description - "Defines a range of OTN tributary ports (TPN)."; - } - } - description - "Defines the type of OTN label range: TS or TPN. "; - } - - typedef gfp-k { - type enumeration { - enum 2 { - description - "The ODU2.ts rate (1,249,177.230 kbit/s) is used - to compute the rate of an ODUflex(GFP,n,2). "; - } - - - - - enum 3 { - description - "The ODU3.ts rate (1,254,470.354 kbit/s) is used - to compute the rate of an ODUflex(GFP,n,3). "; - } - enum 4 { - description - "The ODU4.ts rate (1,301,467.133 kbit/s) is used - to compute the rate of an ODUflex(GFP,n,4). "; - } - } - description - "The ODUk.ts used to compute the rate of an ODUflex(GFP,n,k)"; - reference - "ITU-T G.709 v6.0 (06/2020), Table 7-8 and L.7: Interfaces for - the Optical Transport Network (OTN)"; - } - - typedef flexe-client-rate { - type union { - type uint16; - type enumeration { - enum "10G" { - description - "Represents a 10G FlexE Client signal (s=2)"; - } - enum "40G" { - description - "Represents a 40G FlexE Client signal (s=8)"; - } - } - } - description - "The FlexE Client signal rate (s x 5,156,250.000 kbit/s) - used to compute the rate of an ODUflex(IMP, s). - Valid values for s are s=2 (10G), s=4 (40G) and - s=5 x n (n x 25G). - In the first two cases an enumeration value - (either 10G or 40G) is used, while in the latter case - the value of n is used"; - reference - "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the - Optical Transport Network (OTN)"; - } - - typedef odtu-flex-type { - type enumeration { - enum "2" { - - - - - description - "The ODTU2.ts ODTU type."; - } - enum "3" { - description - "The ODTU3.ts ODTU type."; - } - enum "4" { - description - "The ODTU4.ts ODTU type."; - } - enum "Cn" { - description - "The ODTUCn.ts ODTU type."; - } - } - description - "The type of Optical Data Tributary Unit (ODTU), - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by an ODUflex LSP, according to - the (19-1a) and (20-1a) formulas defined in G.709."; - reference - "ITU-T G.709 v6.0 (06/2020), Table 7-7, clause 19.6 and - clause 20.5: Interfaces for the Optical Transport - Network (OTN)"; - } - - typedef bandwidth-scientific-notation { - type string { - pattern - '0(\.0?)?([eE](\+)?0?)?|' - + '[1-9](\.[0-9]{0,6})?[eE](\+)?(9[0-6]|[1-8][0-9]|0?[0-9])?'; - } - units "bps"; - description - "Bandwidth values, expressed using the scientific notation - in bits per second. - - The encoding format is the external decimal-significant - character sequences specified in IEEE 754 and ISO/IEC C99 - for 32-bit decimal floating-point numbers: - (-1)**(S) * 10**(Exponent) * (Significant), - where Significant uses 7 digits. - - An implementation for this representation MAY use decimal32 - or binary32. The range of the Exponent is from -95 to +96 - for decimal32, and from -38 to +38 for binary32. - As a bandwidth value, the format is restricted to be - - - - - normalized, non-negative, and non-fraction: - n.dddddde{+}dd, N.DDDDDDE{+}DD, 0e0 or 0E0, - where 'd' and 'D' are decimal digits; 'n' and 'N' are - non-zero decimal digits; 'e' and 'E' indicate a power of ten. - Some examples are 0e0, 1e10, and 9.953e9."; - reference - "IEEE Std 754-2008: IEEE Standard for Floating-Point - Arithmetic. - ISO/IEC C99: Information technology - Programming - Languages - C."; - } - - /* - * Groupings - */ - - grouping otn-link-bandwidth { - description - "Bandwidth attributes for OTN links"; - container otn { - description - "Bandwidth attributes for OTN links"; - list odulist { - key "odu-type"; - description - "OTN bandwidth definition"; - leaf odu-type { - type identityref { - base odu-type; - } - description "ODU type"; - } - leaf number { - type uint16; - description "Number of ODUs"; - } - leaf ts-number { - when 'derived-from-or-self(../odu-type,"ODUflex") or - derived-from-or-self(../odu-type, - "ODUflex-resizable")' { - description - "Applicable when odu-type is ODUflex or - ODUflex-resizable"; - } - type uint16 { - range "1..4095"; - } - description - - - - - "The number of Tributary Slots (TS) that - could be used by all the ODUflex LSPs."; - } - } - } - } - - grouping otn-path-bandwidth { - description - "Bandwidth attributes for OTN paths."; - container otn { - description - "Bandwidth attributes for OTN paths."; - leaf odu-type { - type identityref { - base odu-type; - } - description "ODU type"; - } - choice oduflex-type { - when 'derived-from-or-self(./odu-type,"ODUflex") or - derived-from-or-self(./odu-type, - "ODUflex-resizable")' { - description - "Applicable when odu-type is ODUflex or - ODUflex-resizable"; - } - description - "Types of ODUflex used to compute the ODUflex - nominal bit rate."; - reference - "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the - Optical Transport Network (OTN)"; - case generic { - leaf nominal-bit-rate { - type union { - type l1-types:bandwidth-scientific-notation; - type rt-types:bandwidth-ieee-float32; - } - mandatory true; - description - "Nominal ODUflex bit rate."; - } - } - case cbr { - leaf client-type { - type identityref { - base client-signal; - - - - - } - mandatory true; - description - "The type of Constant Bit Rate (CBR) client signal - of an ODUflex(CBR)."; - } - } - case gfp-n-k { - leaf gfp-n { - type uint8 { - range "1..80"; - } - mandatory true; - description - "The value of n for an ODUflex(GFP,n,k)."; - reference - "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: - Interfaces for the Optical Transport Network (OTN)"; - } - leaf gfp-k { - type gfp-k; - description - "The value of k for an ODUflex(GFP,n,k). - - If omitted, it is calculated from the value of gfp-n - as described in Table 7-8 of G.709"; - reference - "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7: - Interfaces for the Optical Transport Network (OTN)"; - } - } - case flexe-client { - leaf flexe-client { - type flexe-client-rate; - mandatory true; - description - "The rate of the FlexE-client for an ODUflex(IMP,s)."; - } - } - case flexe-aware { - leaf flexe-aware-n { - type uint16; - mandatory true; - description - "The rate of FlexE-aware client signal - for ODUflex(FlexE-aware)"; - } - } - - - - - case packet { - leaf opuflex-payload-rate { - type union { - type l1-types:bandwidth-scientific-notation; - type rt-types:bandwidth-ieee-float32; - } - mandatory true; - description - "Either the GFP-F encapsulated packet client nominal - bit rate for an ODUflex(GFP) or the 64b/66b encoded - packet client nominal bit rate for an ODUflex(IMP)."; - } - } - } - } - } - - grouping otn-max-path-bandwidth { - description - "Maximum bandwidth attributes for OTN paths."; - container otn { - description - "Maximum bandwidth attributes for OTN paths."; - leaf odu-type { - type identityref { - base odu-type; - } - description "ODU type"; - } - leaf max-ts-number { - when 'derived-from-or-self(../odu-type,"ODUflex") or - derived-from-or-self(../odu-type, - "ODUflex-resizable")' { - description - "Applicable when odu-type is ODUflex or - ODUflex-resizable"; - } - type uint16 { - range "1..4095"; - } - description - "The maximum number of Tributary Slots (TS) that could be - used by an ODUflex LSP."; - } - } - } - - grouping otn-label-range-info { - - - - - description - "Label range information for OTN. - - This grouping SHOULD be used together with the - otn-label-start-end and otn-label-step groupings to provide - OTN technology-specific label information to the models which - use the label-restriction-info grouping defined in the module - ietf-te-types."; - container otn-label-range { - description - "Label range information for OTN."; - leaf range-type { - type otn-label-range-type; - description "The type of range (e.g., TPN or TS) - to which the label range applies"; - } - leaf tsg { - type identityref { - base tributary-slot-granularity; - } - description - "Tributary slot granularity (TSG) to which the label range - applies. - - This leaf MUST be present when the range-type is TS. - - This leaf MAY be omitted when mapping an ODUk over an OTUk - Link. In this case the range-type is tpn, with only one - entry (ODUk), and the tpn range has only one value (1)."; - reference - "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - leaf-list odu-type-list { - type identityref { - base odu-type; - } - description - "List of ODU types to which the label range applies. - - An Empty odu-type-list means that the label range - applies to all the supported ODU types."; - } - leaf priority { - type uint8 { - range 0..7; - } - description - - - - - "Priority in Interface Switching Capability - Descriptor (ISCD)."; - reference - "RFC4203: OSPF Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)"; - } - } - } - - grouping otn-label-start-end { - description - "The OTN label-start or label-end used to specify an OTN label - range. - - This grouping is dependent on the range-type defined in the - otn-label-range-info grouping. - - This grouping SHOULD be used together with the - otn-label-range-info and otn-label-step groupings to provide - OTN technology-specific label information to the models which - use the label-restriction-info grouping defined in the module - ietf-te-types."; - container otn { - description - "Label start or label end for OTN."; - choice range-type { - description - "OTN label range type, either TPN range or TS range"; - case trib-port { - leaf tpn { - when "../../../../otn-label-range/range-type = - 'trib-port'" { - description - "Valid only when range-type represented by - trib-port"; - } - type otn-tpn; - description - "Tributary Port Number (TPN)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of - Evolving G.709 Optical Transport Networks."; - } - } - case trib-slot { - leaf ts { - when "../../../../otn-label-range/range-type = - 'trib-slot'" { - - - - - description - "Valid only when range-type represented by - trib-slot"; - } - type otn-ts; - description - "Tributary Slot (TS) number."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of - Evolving G.709 Optical Transport Networks"; - } - } - } - } - } - - grouping otn-label-hop { - description "OTN Label"; - reference - "RFC7139, section 6: GMPLS Signaling Extensions for Control of - Evolving G.709 Optical Transport Networks"; - container otn { - description - "Label hop for OTN."; - leaf tpn { - type otn-tpn; - description - "Tributary Port Number (TPN)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of - Evolving G.709 Optical Transport Networks."; - } - leaf tsg { - type identityref { - base tributary-slot-granularity; - } - description "Tributary Slot Granularity (TSG)."; - reference - "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - leaf ts-list { - type string { - pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" - + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; - } - description - "A list of available Tributary Slots (TS) ranging - - - - - between 1 and 4095. If multiple values or - ranges are given, they all MUST be disjoint - and MUST be in ascending order. - For example 1-20,25,50-1000."; - reference - "RFC 7139: GMPLS Signaling Extensions for Control - of Evolving G.709 Optical Transport Networks"; - } - } - } - - grouping otn-label-step { - description - "Label step for OTN. - - This grouping is dependent on the range-type defined in the - otn-label-range-info grouping. - - This grouping SHOULD be used together with the - otn-label-range-info and otn-label-start-end groupings to - provide OTN technology-specific label information to the - models which use the label-restriction-info grouping defined - in the module ietf-te-types."; - container otn { - description - "Label step for OTN"; - choice range-type { - description - "OTN label range type, either TPN range or TS range"; - case trib-port { - leaf tpn { - when "../../../otn-label-range/range-type = - 'trib-port'" { - description - "Valid only when range-type represented by - trib-port"; - } - type otn-tpn; - description - "Label step which represents possible increments for - Tributary Port Number (TPN)."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of - Evolving G.709 Optical Transport Networks."; - } - } - case trib-slot { - leaf ts { - - - - - when "../../../otn-label-range/range-type = - 'trib-slot'" { - description - "Valid only when range-type represented by - trib-slot"; - } - type otn-ts; - description - "Label step which represents possible increments for - Tributary Slot (TS) number."; - reference - "RFC7139: GMPLS Signaling Extensions for Control of - Evolving G.709 Optical Transport Networks."; - } - } - } - } - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang deleted file mode 100644 index bf4855faf..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-netconf-acm@2018-02-14.yang +++ /dev/null @@ -1,464 +0,0 @@ -module ietf-netconf-acm { - - namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm"; - - prefix nacm; - - import ietf-yang-types { - prefix yang; - } - - organization - "IETF NETCONF (Network Configuration) Working Group"; - - contact - "WG Web: - WG List: - - Author: Andy Bierman - - - Author: Martin Bjorklund - "; - - description - "Network Configuration Access Control Model. - - Copyright (c) 2012 - 2018 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD - License set forth in Section 4.c of the IETF Trust's - Legal Provisions Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8341; see - the RFC itself for full legal notices."; - - revision "2018-02-14" { - description - "Added support for YANG 1.1 actions and notifications tied to - data nodes. Clarified how NACM extensions can be used by - other data models."; - reference - "RFC 8341: Network Configuration Access Control Model"; - } - - revision "2012-02-22" { - description - "Initial version."; - reference - "RFC 6536: Network Configuration Protocol (NETCONF) - Access Control Model"; - } - - /* - * Extension statements - */ - - extension default-deny-write { - description - "Used to indicate that the data model node - represents a sensitive security system parameter. - - If present, the NETCONF server will only allow the designated - 'recovery session' to have write access to the node. An - explicit access control rule is required for all other users. - - If the NACM module is used, then it must be enabled (i.e., - /nacm/enable-nacm object equals 'true'), or this extension - is ignored. - - The 'default-deny-write' extension MAY appear within a data - definition statement. It is ignored otherwise."; - } - - extension default-deny-all { - description - "Used to indicate that the data model node - controls a very sensitive security system parameter. - - If present, the NETCONF server will only allow the designated - 'recovery session' to have read, write, or execute access to - the node. An explicit access control rule is required for all - other users. - - If the NACM module is used, then it must be enabled (i.e., - /nacm/enable-nacm object equals 'true'), or this extension - is ignored. - - The 'default-deny-all' extension MAY appear within a data - definition statement, 'rpc' statement, or 'notification' - statement. It is ignored otherwise."; - } - - /* - * Derived types - */ - - typedef user-name-type { - type string { - length "1..max"; - } - description - "General-purpose username string."; - } - - typedef matchall-string-type { - type string { - pattern '\*'; - } - description - "The string containing a single asterisk '*' is used - to conceptually represent all possible values - for the particular leaf using this data type."; - } - - typedef access-operations-type { - type bits { - bit create { - description - "Any protocol operation that creates a - new data node."; - } - bit read { - description - "Any protocol operation or notification that - returns the value of a data node."; - } - bit update { - description - "Any protocol operation that alters an existing - data node."; - } - bit delete { - description - "Any protocol operation that removes a data node."; - } - bit exec { - description - "Execution access to the specified protocol operation."; - } - } - description - "Access operation."; - } - - typedef group-name-type { - type string { - length "1..max"; - pattern '[^\*].*'; - } - description - "Name of administrative group to which - users can be assigned."; - } - - typedef action-type { - type enumeration { - enum permit { - description - "Requested action is permitted."; - } - enum deny { - description - "Requested action is denied."; - } - } - description - "Action taken by the server when a particular - rule matches."; - } - - typedef node-instance-identifier { - type yang:xpath1.0; - description - "Path expression used to represent a special - data node, action, or notification instance-identifier - string. - - A node-instance-identifier value is an - unrestricted YANG instance-identifier expression. - All the same rules as an instance-identifier apply, - except that predicates for keys are optional. If a key - predicate is missing, then the node-instance-identifier - represents all possible server instances for that key. - - This XML Path Language (XPath) expression is evaluated in the - following context: - - o The set of namespace declarations are those in scope on - the leaf element where this type is used. - - o The set of variable bindings contains one variable, - 'USER', which contains the name of the user of the - current session. - - o The function library is the core function library, but - note that due to the syntax restrictions of an - instance-identifier, no functions are allowed. - - o The context node is the root node in the data tree. - - The accessible tree includes actions and notifications tied - to data nodes."; - } - - /* - * Data definition statements - */ - - container nacm { - nacm:default-deny-all; - - description - "Parameters for NETCONF access control model."; - - leaf enable-nacm { - type boolean; - default "true"; - description - "Enables or disables all NETCONF access control - enforcement. If 'true', then enforcement - is enabled. If 'false', then enforcement - is disabled."; - } - - leaf read-default { - type action-type; - default "permit"; - description - "Controls whether read access is granted if - no appropriate rule is found for a - particular read request."; - } - - leaf write-default { - type action-type; - default "deny"; - description - "Controls whether create, update, or delete access - is granted if no appropriate rule is found for a - particular write request."; - } - - leaf exec-default { - type action-type; - default "permit"; - description - "Controls whether exec access is granted if no appropriate - rule is found for a particular protocol operation request."; - } - - leaf enable-external-groups { - type boolean; - default "true"; - description - "Controls whether the server uses the groups reported by the - NETCONF transport layer when it assigns the user to a set of - NACM groups. If this leaf has the value 'false', any group - names reported by the transport layer are ignored by the - server."; - } - - leaf denied-operations { - type yang:zero-based-counter32; - config false; - mandatory true; - description - "Number of times since the server last restarted that a - protocol operation request was denied."; - } - - leaf denied-data-writes { - type yang:zero-based-counter32; - config false; - mandatory true; - description - "Number of times since the server last restarted that a - protocol operation request to alter - a configuration datastore was denied."; - } - - leaf denied-notifications { - type yang:zero-based-counter32; - config false; - mandatory true; - description - "Number of times since the server last restarted that - a notification was dropped for a subscription because - access to the event type was denied."; - } - - container groups { - description - "NETCONF access control groups."; - - list group { - key name; - - description - "One NACM group entry. This list will only contain - configured entries, not any entries learned from - any transport protocols."; - - leaf name { - type group-name-type; - description - "Group name associated with this entry."; - } - - leaf-list user-name { - type user-name-type; - description - "Each entry identifies the username of - a member of the group associated with - this entry."; - } - } - } - - list rule-list { - key name; - ordered-by user; - description - "An ordered collection of access control rules."; - - leaf name { - type string { - length "1..max"; - } - description - "Arbitrary name assigned to the rule-list."; - } - leaf-list group { - type union { - type matchall-string-type; - type group-name-type; - } - description - "List of administrative groups that will be - assigned the associated access rights - defined by the 'rule' list. - - The string '*' indicates that all groups apply to the - entry."; - } - - list rule { - key name; - ordered-by user; - description - "One access control rule. - - Rules are processed in user-defined order until a match is - found. A rule matches if 'module-name', 'rule-type', and - 'access-operations' match the request. If a rule - matches, the 'action' leaf determines whether or not - access is granted."; - - leaf name { - type string { - length "1..max"; - } - description - "Arbitrary name assigned to the rule."; - } - - leaf module-name { - type union { - type matchall-string-type; - type string; - } - default "*"; - description - "Name of the module associated with this rule. - - This leaf matches if it has the value '*' or if the - object being accessed is defined in the module with the - specified module name."; - } - choice rule-type { - description - "This choice matches if all leafs present in the rule - match the request. If no leafs are present, the - choice matches all requests."; - case protocol-operation { - leaf rpc-name { - type union { - type matchall-string-type; - type string; - } - description - "This leaf matches if it has the value '*' or if - its value equals the requested protocol operation - name."; - } - } - case notification { - leaf notification-name { - type union { - type matchall-string-type; - type string; - } - description - "This leaf matches if it has the value '*' or if its - value equals the requested notification name."; - } - } - - case data-node { - leaf path { - type node-instance-identifier; - mandatory true; - description - "Data node instance-identifier associated with the - data node, action, or notification controlled by - this rule. - - Configuration data or state data - instance-identifiers start with a top-level - data node. A complete instance-identifier is - required for this type of path value. - - The special value '/' refers to all possible - datastore contents."; - } - } - } - - leaf access-operations { - type union { - type matchall-string-type; - type access-operations-type; - } - default "*"; - description - "Access operations associated with this rule. - - This leaf matches if it has the value '*' or if the - bit corresponding to the requested operation is set."; - } - - leaf action { - type action-type; - mandatory true; - description - "The access control action associated with the - rule. If a rule has been determined to match a - particular request, then this object is used - to determine whether to permit or deny the - request."; - } - - leaf comment { - type string; - description - "A textual description of the access rule."; - } - } - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang deleted file mode 100644 index 0538ac01b..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network-topology@2018-02-26.yang +++ /dev/null @@ -1,294 +0,0 @@ - module ietf-network-topology { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology"; - prefix nt; - - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-network { - prefix nw; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - - - Editor: Xufeng Liu - "; - - description - "This module defines a common base model for a network topology, - augmenting the base network data model with links to connect - nodes, as well as termination points to terminate links - on nodes. - - Copyright (c) 2018 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8345; - see the RFC itself for full legal notices."; - - revision 2018-02-26 { - description - "Initial revision."; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - typedef link-id { - type inet:uri; - description - "An identifier for a link in a topology. The precise - structure of the link-id will be up to the implementation. - The identifier SHOULD be chosen such that the same link in a - real network topology will always be identified through the - same identifier, even if the data model is instantiated in - separate datastores. An implementation MAY choose to capture - semantics in the identifier -- for example, to indicate the - type of link and/or the type of topology of which the link is - a part."; - } - - typedef tp-id { - type inet:uri; - description - "An identifier for termination points on a node. The precise - structure of the tp-id will be up to the implementation. - The identifier SHOULD be chosen such that the same termination - point in a real network topology will always be identified - through the same identifier, even if the data model is - instantiated in separate datastores. An implementation MAY - choose to capture semantics in the identifier -- for example, - to indicate the type of termination point and/or the type of - node that contains the termination point."; - } - - grouping link-ref { - description - "This grouping can be used to reference a link in a specific - network. Although it is not used in this module, it is - defined here for the convenience of augmenting modules."; - leaf link-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id=current()/../"+ - "network-ref]/nt:link/nt:link-id"; - require-instance false; - } - description - "A type for an absolute reference to a link instance. - (This type should not be used for relative references. - In such a case, a relative path should be used instead.)"; - } - uses nw:network-ref; - } - - grouping tp-ref { - description - "This grouping can be used to reference a termination point - in a specific node. Although it is not used in this module, - it is defined here for the convenience of augmenting - modules."; - leaf tp-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id=current()/../"+ - "network-ref]/nw:node[nw:node-id=current()/../"+ - "node-ref]/nt:termination-point/nt:tp-id"; - require-instance false; - } - description - "A type for an absolute reference to a termination point. - (This type should not be used for relative references. - In such a case, a relative path should be used instead.)"; - } - uses nw:node-ref; - } - - augment "/nw:networks/nw:network" { - description - "Add links to the network data model."; - list link { - key "link-id"; - description - "A network link connects a local (source) node and - a remote (destination) node via a set of the respective - node's termination points. It is possible to have several - links between the same source and destination nodes. - Likewise, a link could potentially be re-homed between - termination points. Therefore, in order to ensure that we - would always know to distinguish between links, every link - is identified by a dedicated link identifier. Note that a - link models a point-to-point link, not a multipoint link."; - leaf link-id { - type link-id; - description - "The identifier of a link in the topology. - A link is specific to a topology to which it belongs."; - } - container source { - description - "This container holds the logical source of a particular - link."; - leaf source-node { - type leafref { - path "../../../nw:node/nw:node-id"; - require-instance false; - } - description - "Source node identifier. Must be in the same topology."; - } - leaf source-tp { - type leafref { - path "../../../nw:node[nw:node-id=current()/../"+ - "source-node]/termination-point/tp-id"; - require-instance false; - } - description - "This termination point is located within the source node - and terminates the link."; - } - } - - container destination { - description - "This container holds the logical destination of a - particular link."; - leaf dest-node { - type leafref { - path "../../../nw:node/nw:node-id"; - require-instance false; - } - description - "Destination node identifier. Must be in the same - network."; - } - leaf dest-tp { - type leafref { - path "../../../nw:node[nw:node-id=current()/../"+ - "dest-node]/termination-point/tp-id"; - require-instance false; - } - description - "This termination point is located within the - destination node and terminates the link."; - } - } - list supporting-link { - key "network-ref link-ref"; - description - "Identifies the link or links on which this link depends."; - leaf network-ref { - type leafref { - path "../../../nw:supporting-network/nw:network-ref"; - require-instance false; - } - description - "This leaf identifies in which underlay topology - the supporting link is present."; - } - - leaf link-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id=current()/"+ - "../network-ref]/link/link-id"; - require-instance false; - } - description - "This leaf identifies a link that is a part - of this link's underlay. Reference loops in which - a link identifies itself as its underlay, either - directly or transitively, are not allowed."; - } - } - } - } - augment "/nw:networks/nw:network/nw:node" { - description - "Augments termination points that terminate links. - Termination points can ultimately be mapped to interfaces."; - list termination-point { - key "tp-id"; - description - "A termination point can terminate a link. - Depending on the type of topology, a termination point - could, for example, refer to a port or an interface."; - leaf tp-id { - type tp-id; - description - "Termination point identifier."; - } - list supporting-termination-point { - key "network-ref node-ref tp-ref"; - description - "This list identifies any termination points on which a - given termination point depends or onto which it maps. - Those termination points will themselves be contained - in a supporting node. This dependency information can be - inferred from the dependencies between links. Therefore, - this item is not separately configurable. Hence, no - corresponding constraint needs to be articulated. - The corresponding information is simply provided by the - implementing system."; - - leaf network-ref { - type leafref { - path "../../../nw:supporting-node/nw:network-ref"; - require-instance false; - } - description - "This leaf identifies in which topology the - supporting termination point is present."; - } - leaf node-ref { - type leafref { - path "../../../nw:supporting-node/nw:node-ref"; - require-instance false; - } - description - "This leaf identifies in which node the supporting - termination point is present."; - } - leaf tp-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id=current()/"+ - "../network-ref]/nw:node[nw:node-id=current()/../"+ - "node-ref]/termination-point/tp-id"; - require-instance false; - } - description - "Reference to the underlay node (the underlay node must - be in a different topology)."; - } - } - } - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang deleted file mode 100644 index d9da81eee..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-network@2018-02-26.yang +++ /dev/null @@ -1,193 +0,0 @@ - module ietf-network { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network"; - prefix nw; - - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - - - Editor: Xufeng Liu - "; - - description - "This module defines a common base data model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2018 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8345; - see the RFC itself for full legal notices."; - - revision 2018-02-26 { - description - "Initial revision."; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - typedef node-id { - type inet:uri; - description - "Identifier for a node. The precise structure of the node-id - will be up to the implementation. For example, some - implementations MAY pick a URI that includes the network-id - as part of the path. The identifier SHOULD be chosen - such that the same node in a real network topology will - always be identified through the same identifier, even if - the data model is instantiated in separate datastores. An - implementation MAY choose to capture semantics in the - identifier -- for example, to indicate the type of node."; - } - - typedef network-id { - type inet:uri; - description - "Identifier for a network. The precise structure of the - network-id will be up to the implementation. The identifier - SHOULD be chosen such that the same network will always be - identified through the same identifier, even if the data model - is instantiated in separate datastores. An implementation MAY - choose to capture semantics in the identifier -- for example, - to indicate the type of network."; - } - - grouping network-ref { - description - "Contains the information necessary to reference a network -- - for example, an underlay network."; - leaf network-ref { - type leafref { - path "/nw:networks/nw:network/nw:network-id"; - require-instance false; - } - description - "Used to reference a network -- for example, an underlay - network."; - } - } - - grouping node-ref { - description - "Contains the information necessary to reference a node."; - leaf node-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id=current()/../"+ - "network-ref]/nw:node/nw:node-id"; - require-instance false; - } - description - "Used to reference a node. - Nodes are identified relative to the network that - contains them."; - } - uses network-ref; - } - - container networks { - description - "Serves as a top-level container for a list of networks."; - list network { - key "network-id"; - description - "Describes a network. - A network typically contains an inventory of nodes, - topological information (augmented through the - network-topology data model), and layering information."; - leaf network-id { - type network-id; - description - "Identifies a network."; - } - container network-types { - description - "Serves as an augmentation target. - The network type is indicated through corresponding - presence containers augmented into this container."; - } - list supporting-network { - key "network-ref"; - description - "An underlay network, used to represent layered network - topologies."; - leaf network-ref { - type leafref { - path "/nw:networks/nw:network/nw:network-id"; - require-instance false; - } - description - "References the underlay network."; - } - } - - list node { - key "node-id"; - description - "The inventory of nodes of this network."; - leaf node-id { - type node-id; - description - "Uniquely identifies a node within the containing - network."; - } - list supporting-node { - key "network-ref node-ref"; - description - "Represents another node that is in an underlay network - and that supports this node. Used to represent layering - structure."; - leaf network-ref { - type leafref { - path "../../../nw:supporting-network/nw:network-ref"; - require-instance false; - } - description - "References the underlay network of which the - underlay node is a part."; - } - leaf node-ref { - type leafref { - path "/nw:networks/nw:network/nw:node/nw:node-id"; - require-instance false; - } - description - "References the underlay node itself."; - } - } - } - } - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang deleted file mode 100644 index 587612e8e..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-otn-topology@2023-07-06.yang +++ /dev/null @@ -1,2405 +0,0 @@ - module ietf-otn-topology { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology"; - prefix "otnt"; - - import ietf-network { - prefix "nw"; - reference "RFC 8345: A YANG Data Model for Network Topologies"; - } - - import ietf-network-topology { - prefix "nt"; - reference "RFC 8345: A YANG Data Model for Network Topologies"; - } - - import ietf-te-topology { - prefix "tet"; - reference - "RFC 8795: YANG Data Model for Traffic Engineering - (TE) Topologies"; - } - - import ietf-layer1-types { - prefix "l1-types"; - reference - "I-D.ietf-ccamp-layer1-types: A YANG Data Model - for Layer 1 Types"; - } - - organization - "IETF CCAMP Working Group"; - contact - "WG Web: - WG List: - - Editor: Haomian Zheng - - - Editor: Italo Busi - - - Editor: Xufeng Liu - - - Editor: Sergio Belotti - - - - - - Editor: Oscar Gonzalez de Dios - "; - - description - "This module defines a protocol independent Layer 1/ODU topology - data model. The model fully conforms - to the Network Management Datastore Architecture (NMDA). - - Copyright (c) 2023 IETF Trust and the persons identified - as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here."; - - revision 2023-07-06 { - description - "Initial Revision"; - reference - "RFC XXXX: A YANG Data Model for Optical Transport Network - Topology"; - // RFC Ed.: replace XXXX with actual RFC number, update date - // information and remove this note - } - - /* - * Groupings - */ - - grouping label-range-info { - description - "OTN technology-specific label range related information with - a presence container indicating that the label range is an - OTN technology-specific label range. - - This grouping SHOULD be used together with the - - - - - otn-label-start-end and otn-label-step groupings to provide - OTN technology-specific label information to the models which - use the label-restriction-info grouping defined in the module - ietf-te-types."; - uses l1-types:otn-label-range-info { - refine otn-label-range { - presence - "Indicates the label range is an OTN label range. - - This container MUST NOT be present if there are other - presence containers or attributes indicating another type - of label range."; - } - } - } - - /* - * Data nodes - */ - - augment "/nw:networks/nw:network/nw:network-types/" - + "tet:te-topology" { - container otn-topology { - presence "indicates a topology type of Optical Transport - Network (OTN)-electrical layer."; - description "OTN topology type"; - } - description "augment network types to include OTN newtork"; - } - - augment "/nw:networks/nw:network/nw:node/tet:te" - + "/tet:te-node-attributes" { - when "../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description "Augment only for OTN network."; - } - description "Augment TE node attributes."; - container otn-node { - presence "The TE node is an OTN node."; - description - "Introduce new TE node type for OTN node."; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes" { - when "../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - - - - - description "Augment only for OTN network."; - } - description "Augment link configuration"; - - container otn-link { - description - "Attributes of the OTN Link."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs set up - on this OTN Link."; - } - leaf tsg { - type identityref { - base l1-types:tributary-slot-granularity; - } - description "Tributary slot granularity."; - reference - "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical - Transport Network (OTN)"; - } - leaf distance { - type uint32; - description "distance in the unit of kilometers"; - } - } - container client-svc { - presence - "When present, indicates that the Link supports Costant - Bit Rate (CBR) client signals."; - description - "Attributes of the Link supporting CBR client signals."; - leaf-list supported-client-signal { - type identityref { - base l1-types:client-signal; - } - min-elements 1; - description - "List of client signal types supported by the Link."; - } - } - } - - augment "/nw:networks/nw:network/nw:node/nt:termination-point/" - + "tet:te" { - - - - - when "../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description "Augment only for OTN network"; - } - description "OTN TP attributes config in ODU topology."; - - container otn-ltp { - description - "Attributes of the OTN Link Termination Point (LTP)."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs set up - on this OTN Link Termination Point (LTP)."; - } - } - container client-svc { - presence - "When present, indicates that the Link Termination Point - (LTP) supports Costant Bit Rate (CBR) client signals."; - description - "OTN LTP Service attributes."; - leaf-list supported-client-signal { - type identityref { - base l1-types:client-signal; - } - description - "List of client signal types supported by the LTP."; - } - } - } - - /* - * Augment TE bandwidth - */ - - augment "/nw:networks/nw:network/nw:node/nt:termination-point/" - + "tet:te/" - + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - - - - - description - "Augment maximum LSP TE bandwidth for the link termination - point (LTP)."; - case otn { - uses l1-types:otn-max-path-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link Termination - Point (LTP) is used to compute the number of Tributary - Slots (TS) required by the ODUflex LSPs set up on this - OTN LTP."; - } - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE bandwidth path constraints of the TE node - connectivity matrices."; - case otn { - uses l1-types:otn-link-bandwidth { - augment otn { - description - "Augment OTN link bandwidth information."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs - set up along the underlay paths of these OTN - connectivity matrices."; - } - } - } - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - - - - - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE bandwidth path constraints of the - connectivity matrix entry."; - case otn { - uses l1-types:otn-link-bandwidth { - augment otn { - description - "Augment OTN link bandwidth information."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs - set up along the underlay path of this OTN - connectivity matrix entry."; - } - } - } - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE bandwidth path constraints of the TE node - connectivity matrices information source."; - case otn { - uses l1-types:otn-link-bandwidth { - augment otn { - description - "Augment OTN link bandwidth information."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - - - - - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs - set up along the underlay paths of these OTN - connectivity matrices."; - } - } - } - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE bandwidth path constraints of the - connectivity matrix entry information source"; - case otn { - uses l1-types:otn-link-bandwidth { - augment otn { - description - "Augment OTN link bandwidth information."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs - set up along the underlay path of this OTN - connectivity matrix entry."; - } - } - } - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:client-layer-adaptation/tet:switching-capability/" - + "tet:te-bandwidth/tet:technology" { - - - - - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment client TE bandwidth of the tunnel termination point - (TTP)"; - case otn { - uses l1-types:otn-link-bandwidth { - augment otn { - description - "Augment OTN link bandwidth information."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs - terminated on this OTN Tunnel Termination Point - (TTP)."; - } - } - } - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/tet:path-constraints/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE bandwidth path constraints for the TTP - Local Link Connectivities."; - case otn { - uses l1-types:otn-link-bandwidth { - augment otn { - description - "Augment OTN link bandwidth information."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - - - - - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs - set up along the underlay paths of these OTN Local - Link Connectivities."; - } - } - } - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/tet:path-constraints/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE bandwidth path constraints for the TTP - Local Link Connectivity entry."; - case otn { - uses l1-types:otn-link-bandwidth { - augment otn { - description - "Augment OTN link bandwidth information."; - leaf odtu-flex-type { - type l1-types:odtu-flex-type; - description - "The type of Optical Data Tributary Unit (ODTU) - whose nominal bitrate is used to compute the number of - Tributary Slots (TS) required by the ODUflex LSPs - set up along the underlay path of this OTN Local - Link Connectivyt entry."; - } - } - } - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" - - - - - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment maximum LSP TE bandwidth for the TE link."; - case otn { - uses l1-types:otn-max-path-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment maximum TE bandwidth for the TE link"; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - - - - - } - description - "Augment maximum reservable TE bandwidth for the TE link"; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment unreserved TE bandwidth for the TE Link"; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:interface-switching-capability/" - + "tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment maximum LSP TE bandwidth for the TE link - information source"; - case otn { - uses l1-types:otn-max-path-bandwidth { - description - - - - - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment maximum TE bandwidth for the TE link - information source"; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment maximum reservable TE bandwidth for the TE link - information-source"; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - - - - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment unreserved TE bandwidth of the TE link - information source"; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on this OTN Link."; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:interface-switching-capability/" - + "tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - description - "Augment maximum LSP TE bandwidth of the TE link - template"; - case otn { - uses l1-types:otn-max-path-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on the OTN Link that uses this - Link Template."; - } - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth" { - description - "Augment maximum TE bandwidth the TE link template"; - uses l1-types:otn-link-bandwidth { - description - - - - - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on the OTN Link that uses this - Link Template."; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth" { - description - "Augment maximum reservable TE bandwidth for the TE link - template."; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on the OTN Link that uses this - Link Template."; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth" { - description - "Augment unreserved TE bandwidth the TE link template"; - uses l1-types:otn-link-bandwidth { - description - "The odtu-flex-type attribute of the OTN Link is used - to compute the number of Tributary Slots (TS) required - by the ODUflex LSPs set up on the OTN Link that uses this - Link Template."; - } - } - - /* - * Augment TE label range information - */ - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - - - - - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the TE node - connectivity matrices."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the source LTP - of the connectivity matrix entry."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the destination LTP - of the connectivity matrix entry."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - - - - - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the TE node - connectivity matrices information source."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the source LTP - of the connectivity matrix entry information source."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the destination LTP - of the connectivity matrix entry information source."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - - - - - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the TTP - Local Link Connectivities."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the TTP - Local Link Connectivity entry."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range information for the TE link."; - uses label-range-info; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction" { - when "../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - - - - - } - description - "Augment TE label range information for the TE link - information source."; - uses label-range-info; - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction" { - description - "Augment TE label range information for the TE link template."; - uses label-range-info; - } - - /* - * Augment TE label - */ - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the TE node - connectivity matrices"; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/" - + "tet:label-restriction/tet:label-end/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - - - - - } - description - "Augment TE label range end for the TE node - connectivity matrices"; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:label-restrictions/" - + "tet:label-restriction/tet:label-step/" - + "tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the TE node - connectivity matrices"; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:underlay/tet:primary-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay primary path of the - TE node connectivity matrices"; - case otn { - uses l1-types:otn-label-hop; - } - } - - - - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:underlay/tet:backup-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay backup path of the - TE node connectivity matrices"; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TE node connectivity - matrices"; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - - - - - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TE node connectivity - matrices"; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the TE node connectivity matrices"; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - - - - - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the source LTP - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the source LTP - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:from/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/" - + "tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - - - - - "Augment TE label range step for the source LTP - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the destination LTP - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the destination LTP - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - - - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:to/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/" - + "tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the destination LTP - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:primary-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:backup-path/tet:path-element/" - + "tet:type/tet:label/tet:label-hop/" - + "tet:te-label/tet:technology" { - - - - - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:optimizations/" - + "tet:algorithm/tet:metric/tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/tet:optimizations/" - + "tet:algorithm/tet:metric/tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - - - - - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the connectivity matrix entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the TE node connectivity - matrices information source."; - case otn { - - - - - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the TE node connectivity - matrices information source."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/" - + "tet:connectivity-matrices/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the TE node connectivity - matrices information source."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - - - - - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TE node connectivity matrices of the information - source entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TE node connectivity matrices of the information - source entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - - - - - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TE node connectivity matrices - information source."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TE node connectivity matrices - information source."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the computed path route objects - - - - - of the TE node connectivity matrices information source."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the source LTP - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-start-end; - } - } - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the source LTP - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - - - - - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:from/tet:label-restrictions/" - + "tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the source LTP - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the destination LTP - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - - - - - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the destination LTP - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:to/tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the destination LTP - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the connectivity matrix entry information source."; - case otn { - - - - - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the connectivity matrix entry - information source."; - case otn { - uses l1-types:otn-label-hop; - } - } - - - - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the connectivity matrix entry - information source."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the connectivity matrix entry information source."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - - - - - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/" - + "tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the TTP - Local Link Connectivities."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/" - + "tet:te-label/tet:technology"{ - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the TTP - Local Link Connectivities."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/" - + "tet:technology"{ - when "../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - - - - - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the TTP - Local Link Connectivities."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TTP Local Link Connectivities."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TTP Local Link Connectivities."; - case otn { - - - - - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TTP Local Link - Connectivities."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TTP Local Link - Connectivities."; - case otn { - - - - - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the TTP Local Link Connectivities."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the TTP - Local Link Connectivity entry."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - - - - - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the TTP - Local Link Connectivity entry."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the TTP - Local Link Connectivity entry."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - - - - - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TTP Local Link Connectivity entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TTP Local Link Connectivity entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-exclude-objects/" - + "tet:route-object-exclude-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - - - - - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects excluded - by the path computation of the TTP Local Link - Connectivity entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:optimizations/tet:algorithm/tet:metric/" - + "tet:optimization-metric/" - + "tet:explicit-route-include-objects/" - + "tet:route-object-include-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the explicit route objects included - by the path computation of the TTP Local Link - Connectivity entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/" - + "tet:path-properties/tet:path-route-objects/" - + "tet:path-route-object/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - - - - - OTN topology type."; - } - description - "Augment TE label hop for the computed path route objects - of the TTP Local Link Connectivity entry."; - case otn { - uses l1-types:otn-label-hop; - } - } - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay primary path - of the TE link."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - when "../../../../../../../../" - + "nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label hop for the underlay backup path - of the TE link."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - - - - - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the TE link."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the TE link."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range step for the TE link."; - case otn { - uses l1-types:otn-label-step; - } - - - - - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range start for the TE link - information source."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - description - "Augment TE label range end for the TE link - information source."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "otnt:otn-topology" { - description - "Augmentation parameters apply only for networks with - OTN topology type."; - } - - - - - description - "Augment TE label range step for the TE link - information source."; - case otn { - uses l1-types:otn-label-step; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:underlay/tet:primary-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - description - "Augment TE label hop for the underlay primary path - of the TE link template."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:underlay/tet:backup-path/tet:path-element/tet:type/" - + "tet:label/tet:label-hop/tet:te-label/tet:technology" { - description - "Augment TE label hop for the underlay backup path - of the TE link template."; - case otn { - uses l1-types:otn-label-hop; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-start/tet:te-label/tet:technology" { - description - "Augment TE label range start for the TE link template."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-end/tet:te-label/tet:technology" { - description - - - - - "Augment TE label range end for the TE link template."; - case otn { - uses l1-types:otn-label-start-end; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:label-restrictions/tet:label-restriction/" - + "tet:label-step/tet:technology" { - description - "Augment TE label range step for the TE link template."; - case otn { - uses l1-types:otn-label-step; - } - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang deleted file mode 100644 index 24319c155..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing-types@2017-12-04.yang +++ /dev/null @@ -1,771 +0,0 @@ -module ietf-routing-types { - namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; - prefix rt-types; - - import ietf-yang-types { - prefix yang; - } - import ietf-inet-types { - prefix inet; - } - - organization - "IETF RTGWG - Routing Area Working Group"; - contact - "WG Web: - WG List: - - Editors: Xufeng Liu - - Yingzhen Qu - - Acee Lindem - - Christian Hopps - - Lou Berger - "; - - description - "This module contains a collection of YANG data types - considered generally useful for routing protocols. - - Copyright (c) 2017 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8294; see - the RFC itself for full legal notices."; - revision 2017-12-04 { - description "Initial revision."; - reference - "RFC 8294: Common YANG Data Types for the Routing Area. - Section 3."; - } - - /*** Identities related to MPLS/GMPLS ***/ - - identity mpls-label-special-purpose-value { - description - "Base identity for deriving identities describing - special-purpose Multiprotocol Label Switching (MPLS) label - values."; - reference - "RFC 7274: Allocating and Retiring Special-Purpose MPLS - Labels."; - } - - identity ipv4-explicit-null-label { - base mpls-label-special-purpose-value; - description - "This identity represents the IPv4 Explicit NULL Label."; - reference - "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; - } - - identity router-alert-label { - base mpls-label-special-purpose-value; - description - "This identity represents the Router Alert Label."; - reference - "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; - } - - identity ipv6-explicit-null-label { - base mpls-label-special-purpose-value; - description - "This identity represents the IPv6 Explicit NULL Label."; - reference - "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; - } - - identity implicit-null-label { - base mpls-label-special-purpose-value; - description - "This identity represents the Implicit NULL Label."; - reference - "RFC 3032: MPLS Label Stack Encoding. Section 2.1."; - } - - identity entropy-label-indicator { - base mpls-label-special-purpose-value; - description - "This identity represents the Entropy Label Indicator."; - reference - "RFC 6790: The Use of Entropy Labels in MPLS Forwarding. - Sections 3 and 10.1."; - } - - identity gal-label { - base mpls-label-special-purpose-value; - description - "This identity represents the Generic Associated Channel - (G-ACh) Label (GAL)."; - reference - "RFC 5586: MPLS Generic Associated Channel. - Sections 4 and 10."; - } - - identity oam-alert-label { - base mpls-label-special-purpose-value; - description - "This identity represents the OAM Alert Label."; - reference - "RFC 3429: Assignment of the 'OAM Alert Label' for - Multiprotocol Label Switching Architecture (MPLS) - Operation and Maintenance (OAM) Functions. - Sections 3 and 6."; - } - - identity extension-label { - base mpls-label-special-purpose-value; - description - "This identity represents the Extension Label."; - reference - "RFC 7274: Allocating and Retiring Special-Purpose MPLS - Labels. Sections 3.1 and 5."; - } - - /*** Collection of types related to routing ***/ - - typedef router-id { - type yang:dotted-quad; - description - "A 32-bit number in the dotted-quad format assigned to each - router. This number uniquely identifies the router within - an Autonomous System."; - } - - /*** Collection of types related to VPNs ***/ - - typedef route-target { - type string { - pattern - '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' - + '42949672[0-8][0-9]|' - + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' - + '42949[0-5][0-9]{4}|' - + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' - + '42[0-8][0-9]{7}|4[01][0-9]{8}|' - + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' - + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' - + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' - + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' - + '655[0-2][0-9]|' - + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' - + '(2:(429496729[0-5]|42949672[0-8][0-9]|' - + '4294967[01][0-9]{2}|' - + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' - + '4294[0-8][0-9]{5}|' - + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' - + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' - + '(6(:[a-fA-F0-9]{2}){6})|' - + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' - + '[0-9a-fA-F]{1,12})'; - } - - description - "A Route Target is an 8-octet BGP extended community - initially identifying a set of sites in a BGP VPN - (RFC 4364). However, it has since taken on a more general - role in BGP route filtering. A Route Target consists of two - or three fields: a 2-octet Type field, an administrator - field, and, optionally, an assigned number field. - - According to the data formats for types 0, 1, 2, and 6 as - defined in RFC 4360, RFC 5668, and RFC 7432, the encoding - pattern is defined as: - - 0:2-octet-asn:4-octet-number - 1:4-octet-ipv4addr:2-octet-number - 2:4-octet-asn:2-octet-number - 6:6-octet-mac-address - - Additionally, a generic pattern is defined for future - Route Target types: - - 2-octet-other-hex-number:6-octet-hex-number - - Some valid examples are 0:100:100, 1:1.1.1.1:100, - 2:1234567890:203, and 6:26:00:08:92:78:00."; - reference - "RFC 4360: BGP Extended Communities Attribute. - RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). - RFC 5668: 4-Octet AS Specific BGP Extended Community. - RFC 7432: BGP MPLS-Based Ethernet VPN."; - } - - typedef ipv6-route-target { - type string { - pattern - '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - } - description - "An IPv6 Route Target is a 20-octet BGP IPv6 Address - Specific Extended Community serving the same function - as a standard 8-octet Route Target, except that it only - allows an IPv6 address as the global administrator. - The format is . - - Two valid examples are 2001:db8::1:6544 and - 2001:db8::5eb1:791:6b37:17958."; - reference - "RFC 5701: IPv6 Address Specific BGP Extended Community - Attribute."; - } - - typedef route-target-type { - type enumeration { - enum import { - value 0; - description - "The Route Target applies to route import."; - } - enum export { - value 1; - description - "The Route Target applies to route export."; - } - - enum both { - value 2; - description - "The Route Target applies to both route import and - route export."; - } - } - description - "Indicates the role a Route Target takes in route filtering."; - reference - "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; - } - - typedef route-distinguisher { - type string { - pattern - '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' - + '42949672[0-8][0-9]|' - + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' - + '42949[0-5][0-9]{4}|' - + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' - + '42[0-8][0-9]{7}|4[01][0-9]{8}|' - + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' - + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' - + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' - + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' - + '655[0-2][0-9]|' - + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' - + '(2:(429496729[0-5]|42949672[0-8][0-9]|' - + '4294967[01][0-9]{2}|' - + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' - + '4294[0-8][0-9]{5}|' - + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' - + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' - + '(6(:[a-fA-F0-9]{2}){6})|' - + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' - + '[0-9a-fA-F]{1,12})'; - } - - description - "A Route Distinguisher is an 8-octet value used to - distinguish routes from different BGP VPNs (RFC 4364). - A Route Distinguisher will have the same format as a - Route Target as per RFC 4360 and will consist of - two or three fields: a 2-octet Type field, an administrator - field, and, optionally, an assigned number field. - - According to the data formats for types 0, 1, 2, and 6 as - defined in RFC 4360, RFC 5668, and RFC 7432, the encoding - pattern is defined as: - - 0:2-octet-asn:4-octet-number - 1:4-octet-ipv4addr:2-octet-number - 2:4-octet-asn:2-octet-number - 6:6-octet-mac-address - - Additionally, a generic pattern is defined for future - route discriminator types: - - 2-octet-other-hex-number:6-octet-hex-number - - Some valid examples are 0:100:100, 1:1.1.1.1:100, - 2:1234567890:203, and 6:26:00:08:92:78:00."; - reference - "RFC 4360: BGP Extended Communities Attribute. - RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). - RFC 5668: 4-Octet AS Specific BGP Extended Community. - RFC 7432: BGP MPLS-Based Ethernet VPN."; - } - - typedef route-origin { - type string { - pattern - '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' - + '42949672[0-8][0-9]|' - + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' - + '42949[0-5][0-9]{4}|' - + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' - + '42[0-8][0-9]{7}|4[01][0-9]{8}|' - + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' - + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' - + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' - + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' - + '655[0-2][0-9]|' - + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' - + '(2:(429496729[0-5]|42949672[0-8][0-9]|' - + '4294967[01][0-9]{2}|' - + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' - + '4294[0-8][0-9]{5}|' - + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' - + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' - + '(6(:[a-fA-F0-9]{2}){6})|' - + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' - + '[0-9a-fA-F]{1,12})'; - } - description - "A Route Origin is an 8-octet BGP extended community - identifying the set of sites where the BGP route - originated (RFC 4364). A Route Origin will have the same - format as a Route Target as per RFC 4360 and will consist - of two or three fields: a 2-octet Type field, an - administrator field, and, optionally, an assigned number - field. - - According to the data formats for types 0, 1, 2, and 6 as - defined in RFC 4360, RFC 5668, and RFC 7432, the encoding - pattern is defined as: - - 0:2-octet-asn:4-octet-number - 1:4-octet-ipv4addr:2-octet-number - 2:4-octet-asn:2-octet-number - 6:6-octet-mac-address - Additionally, a generic pattern is defined for future - Route Origin types: - - 2-octet-other-hex-number:6-octet-hex-number - - Some valid examples are 0:100:100, 1:1.1.1.1:100, - 2:1234567890:203, and 6:26:00:08:92:78:00."; - reference - "RFC 4360: BGP Extended Communities Attribute. - RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). - RFC 5668: 4-Octet AS Specific BGP Extended Community. - RFC 7432: BGP MPLS-Based Ethernet VPN."; - } - - typedef ipv6-route-origin { - type string { - pattern - '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' - + ':' - + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' - + '6[0-4][0-9]{3}|' - + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; - } - description - "An IPv6 Route Origin is a 20-octet BGP IPv6 Address - Specific Extended Community serving the same function - as a standard 8-octet route, except that it only allows - an IPv6 address as the global administrator. The format - is . - - Two valid examples are 2001:db8::1:6544 and - 2001:db8::5eb1:791:6b37:17958."; - reference - "RFC 5701: IPv6 Address Specific BGP Extended Community - Attribute."; - } - - /*** Collection of types common to multicast ***/ - - typedef ipv4-multicast-group-address { - type inet:ipv4-address { - pattern '(2((2[4-9])|(3[0-9]))\.).*'; - } - description - "This type represents an IPv4 multicast group address, - which is in the range of 224.0.0.0 to 239.255.255.255."; - reference - "RFC 1112: Host Extensions for IP Multicasting."; - } - - typedef ipv6-multicast-group-address { - type inet:ipv6-address { - pattern '(([fF]{2}[0-9a-fA-F]{2}):).*'; - } - description - "This type represents an IPv6 multicast group address, - which is in the range of ff00::/8."; - reference - "RFC 4291: IP Version 6 Addressing Architecture. Section 2.7. - RFC 7346: IPv6 Multicast Address Scopes."; - } - - typedef ip-multicast-group-address { - type union { - type ipv4-multicast-group-address; - type ipv6-multicast-group-address; - } - description - "This type represents a version-neutral IP multicast group - address. The format of the textual representation implies - the IP version."; - } - - typedef ipv4-multicast-source-address { - type union { - type enumeration { - enum * { - description - "Any source address."; - } - } - type inet:ipv4-address; - } - description - "Multicast source IPv4 address type."; - } - - typedef ipv6-multicast-source-address { - type union { - type enumeration { - enum * { - description - "Any source address."; - } - } - type inet:ipv6-address; - } - description - "Multicast source IPv6 address type."; - } - - /*** Collection of types common to protocols ***/ - - typedef bandwidth-ieee-float32 { - type string { - pattern - '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' - + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' - + '1[01][0-9]|0?[0-9]?[0-9])?)'; - } - description - "Bandwidth in IEEE 754 floating-point 32-bit binary format: - (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), - where Exponent uses 8 bits and Fraction uses 23 bits. - The units are octets per second. - The encoding format is the external hexadecimal-significant - character sequences specified in IEEE 754 and ISO/IEC C99. - The format is restricted to be normalized, non-negative, and - non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0, - where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are - integers in the range of [0..127]. - When six hexadecimal digits are used for 'hhhhhh' or - 'HHHHHH', the least significant digit must be an even - number. 'x' and 'X' indicate hexadecimal; 'p' and 'P' - indicate a power of two. Some examples are 0x0p0, 0x1p10, - and 0x1.abcde2p+20."; - reference - "IEEE Std 754-2008: IEEE Standard for Floating-Point - Arithmetic. - ISO/IEC C99: Information technology - Programming - Languages - C."; - } - - typedef link-access-type { - type enumeration { - enum broadcast { - description - "Specify broadcast multi-access network."; - } - enum non-broadcast-multiaccess { - description - "Specify Non-Broadcast Multi-Access (NBMA) network."; - } - enum point-to-multipoint { - description - "Specify point-to-multipoint network."; - } - enum point-to-point { - description - "Specify point-to-point network."; - } - } - description - "Link access type."; - } - - typedef timer-multiplier { - type uint8; - description - "The number of timer value intervals that should be - interpreted as a failure."; - } - - typedef timer-value-seconds16 { - type union { - type uint16 { - range "1..65535"; - } - type enumeration { - enum infinity { - description - "The timer is set to infinity."; - } - enum not-set { - description - "The timer is not set."; - } - } - } - units "seconds"; - description - "Timer value type, in seconds (16-bit range)."; - } - - typedef timer-value-seconds32 { - type union { - type uint32 { - range "1..4294967295"; - } - type enumeration { - enum infinity { - description - "The timer is set to infinity."; - } - enum not-set { - description - "The timer is not set."; - } - } - } - units "seconds"; - description - "Timer value type, in seconds (32-bit range)."; - } - - typedef timer-value-milliseconds { - type union { - type uint32 { - range "1..4294967295"; - } - type enumeration { - enum infinity { - description - "The timer is set to infinity."; - } - enum not-set { - description - "The timer is not set."; - } - } - } - units "milliseconds"; - description - "Timer value type, in milliseconds."; - } - - typedef percentage { - type uint8 { - range "0..100"; - } - description - "Integer indicating a percentage value."; - } - - typedef timeticks64 { - type uint64; - description - "This type is based on the timeticks type defined in - RFC 6991, but with 64-bit width. It represents the time, - modulo 2^64, in hundredths of a second between two epochs."; - reference - "RFC 6991: Common YANG Data Types."; - } - - typedef uint24 { - type uint32 { - range "0..16777215"; - } - description - "24-bit unsigned integer."; - } - - /*** Collection of types related to MPLS/GMPLS ***/ - - typedef generalized-label { - type binary; - description - "Generalized Label. Nodes sending and receiving the - Generalized Label are aware of the link-specific - label context and type."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description. Section 3.2."; - } - - typedef mpls-label-special-purpose { - type identityref { - base mpls-label-special-purpose-value; - } - description - "This type represents the special-purpose MPLS label values."; - reference - "RFC 3032: MPLS Label Stack Encoding. - RFC 7274: Allocating and Retiring Special-Purpose MPLS - Labels."; - } - - typedef mpls-label-general-use { - type uint32 { - range "16..1048575"; - } - description - "The 20-bit label value in an MPLS label stack as specified - in RFC 3032. This label value does not include the - encodings of Traffic Class and TTL (Time to Live). - The label range specified by this type is for general use, - with special-purpose MPLS label values excluded."; - reference - "RFC 3032: MPLS Label Stack Encoding."; - } - - typedef mpls-label { - type union { - type mpls-label-special-purpose; - type mpls-label-general-use; - } - description - "The 20-bit label value in an MPLS label stack as specified - in RFC 3032. This label value does not include the - encodings of Traffic Class and TTL."; - reference - "RFC 3032: MPLS Label Stack Encoding."; - } - - /*** Groupings **/ - - grouping mpls-label-stack { - description - "This grouping specifies an MPLS label stack. The label - stack is encoded as a list of label stack entries. The - list key is an identifier that indicates the relative - ordering of each entry, with the lowest-value identifier - corresponding to the top of the label stack."; - container mpls-label-stack { - description - "Container for a list of MPLS label stack entries."; - list entry { - key "id"; - description - "List of MPLS label stack entries."; - leaf id { - type uint8; - description - "Identifies the entry in a sequence of MPLS label - stack entries. An entry with a smaller identifier - value precedes an entry with a larger identifier - value in the label stack. The value of this ID has - no semantic meaning other than relative ordering - and referencing the entry."; - } - leaf label { - type rt-types:mpls-label; - description - "Label value."; - } - - leaf ttl { - type uint8; - description - "Time to Live (TTL)."; - reference - "RFC 3032: MPLS Label Stack Encoding."; - } - leaf traffic-class { - type uint8 { - range "0..7"; - } - description - "Traffic Class (TC)."; - reference - "RFC 5462: Multiprotocol Label Switching (MPLS) Label - Stack Entry: 'EXP' Field Renamed to 'Traffic Class' - Field."; - } - } - } - } - - grouping vpn-route-targets { - description - "A grouping that specifies Route Target import-export rules - used in BGP-enabled VPNs."; - reference - "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). - RFC 4664: Framework for Layer 2 Virtual Private Networks - (L2VPNs)."; - list vpn-target { - key "route-target"; - description - "List of Route Targets."; - leaf route-target { - type rt-types:route-target; - description - "Route Target value."; - } - leaf route-target-type { - type rt-types:route-target-type; - mandatory true; - description - "Import/export type of the Route Target."; - } - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang deleted file mode 100644 index 9e259f0e6..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-routing@2018-03-13.yang +++ /dev/null @@ -1,684 +0,0 @@ -module ietf-routing { - yang-version "1.1"; - namespace "urn:ietf:params:xml:ns:yang:ietf-routing"; - prefix "rt"; - - import ietf-yang-types { - prefix "yang"; - } - - import ietf-interfaces { - prefix "if"; - description - "An 'ietf-interfaces' module version that is compatible with - the Network Management Datastore Architecture (NMDA) - is required."; - } - - organization - "IETF NETMOD (Network Modeling) Working Group"; - contact - "WG Web: - WG List: - - Editor: Ladislav Lhotka - - Acee Lindem - - Yingzhen Qu - "; - - description - "This YANG module defines essential components for the management - of a routing subsystem. The model fully conforms to the Network - Management Datastore Architecture (NMDA). - - Copyright (c) 2018 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC 8349; see - the RFC itself for full legal notices."; - - revision 2018-03-13 { - description - "Network Management Datastore Architecture (NMDA) revision."; - reference - "RFC 8349: A YANG Data Model for Routing Management - (NMDA Version)"; - } - - revision 2016-11-04 { - description - "Initial revision."; - reference - "RFC 8022: A YANG Data Model for Routing Management"; - } - - /* Features */ - feature multiple-ribs { - description - "This feature indicates that the server supports - user-defined RIBs. - - Servers that do not advertise this feature SHOULD provide - exactly one system-controlled RIB per supported address family - and also make it the default RIB. This RIB then appears as an - entry in the list '/routing/ribs/rib'."; - } - - feature router-id { - description - "This feature indicates that the server supports an explicit - 32-bit router ID that is used by some routing protocols. - - Servers that do not advertise this feature set a router ID - algorithmically, usually to one of the configured IPv4 - addresses. However, this algorithm is implementation - specific."; - } - - /* Identities */ - - identity address-family { - description - "Base identity from which identities describing address - families are derived."; - } - identity ipv4 { - base address-family; - description - "This identity represents an IPv4 address family."; - } - - identity ipv6 { - base address-family; - description - "This identity represents an IPv6 address family."; - } - - identity control-plane-protocol { - description - "Base identity from which control-plane protocol identities are - derived."; - } - - identity routing-protocol { - base control-plane-protocol; - description - "Identity from which Layer 3 routing protocol identities are - derived."; - } - - identity direct { - base routing-protocol; - description - "Routing pseudo-protocol that provides routes to directly - connected networks."; - } - - identity static { - base routing-protocol; - description - "'Static' routing pseudo-protocol."; - } - - /* Type Definitions */ - - typedef route-preference { - type uint32; - description - "This type is used for route preferences."; - } - - /* Groupings */ - - grouping address-family { - description - "This grouping provides a leaf identifying an address - family."; - leaf address-family { - type identityref { - base address-family; - } - mandatory true; - description - "Address family."; - } - } - - grouping router-id { - description - "This grouping provides a router ID."; - leaf router-id { - type yang:dotted-quad; - description - "A 32-bit number in the form of a dotted quad that is used by - some routing protocols identifying a router."; - reference - "RFC 2328: OSPF Version 2"; - } - } - - grouping special-next-hop { - description - "This grouping provides a leaf with an enumeration of special - next hops."; - leaf special-next-hop { - type enumeration { - enum blackhole { - description - "Silently discard the packet."; - } - enum unreachable { - description - "Discard the packet and notify the sender with an error - message indicating that the destination host is - unreachable."; - } - enum prohibit { - description - "Discard the packet and notify the sender with an error - message indicating that the communication is - administratively prohibited."; - } - enum receive { - description - "The packet will be received by the local system."; - } - } - description - "Options for special next hops."; - } - } - - grouping next-hop-content { - description - "Generic parameters of next hops in static routes."; - choice next-hop-options { - mandatory true; - description - "Options for next hops in static routes. - - It is expected that further cases will be added through - augments from other modules."; - case simple-next-hop { - description - "This case represents a simple next hop consisting of the - next-hop address and/or outgoing interface. - - Modules for address families MUST augment this case with a - leaf containing a next-hop address of that address - family."; - leaf outgoing-interface { - type if:interface-ref; - description - "Name of the outgoing interface."; - } - } - case special-next-hop { - uses special-next-hop; - } - case next-hop-list { - container next-hop-list { - description - "Container for multiple next hops."; - list next-hop { - key "index"; - description - "An entry in a next-hop list. - - Modules for address families MUST augment this list - with a leaf containing a next-hop address of that - address family."; - leaf index { - type string; - description - "A user-specified identifier utilized to uniquely - reference the next-hop entry in the next-hop list. - The value of this index has no semantic meaning - other than for referencing the entry."; - } - leaf outgoing-interface { - type if:interface-ref; - description - "Name of the outgoing interface."; - } - } - } - } - } - } - - grouping next-hop-state-content { - description - "Generic state parameters of next hops."; - choice next-hop-options { - mandatory true; - description - "Options for next hops. - - It is expected that further cases will be added through - augments from other modules, e.g., for recursive - next hops."; - case simple-next-hop { - description - "This case represents a simple next hop consisting of the - next-hop address and/or outgoing interface. - - Modules for address families MUST augment this case with a - leaf containing a next-hop address of that address - family."; - leaf outgoing-interface { - type if:interface-ref; - description - "Name of the outgoing interface."; - } - } - case special-next-hop { - uses special-next-hop; - } - case next-hop-list { - container next-hop-list { - description - "Container for multiple next hops."; - list next-hop { - description - "An entry in a next-hop list. - - Modules for address families MUST augment this list - with a leaf containing a next-hop address of that - address family."; - leaf outgoing-interface { - type if:interface-ref; - description - "Name of the outgoing interface."; - } - } - } - } - } - } - - grouping route-metadata { - description - "Common route metadata."; - leaf source-protocol { - type identityref { - base routing-protocol; - } - mandatory true; - description - "Type of the routing protocol from which the route - originated."; - } - leaf active { - type empty; - description - "The presence of this leaf indicates that the route is - preferred among all routes in the same RIB that have the - same destination prefix."; - } - leaf last-updated { - type yang:date-and-time; - description - "Timestamp of the last modification of the route. If the - route was never modified, it is the time when the route was - inserted into the RIB."; - } - } - - /* Data nodes */ - - container routing { - description - "Configuration parameters for the routing subsystem."; - uses router-id { - if-feature "router-id"; - description - "Support for the global router ID. Routing protocols - that use a router ID can use this parameter or override it - with another value."; - } - container interfaces { - config false; - description - "Network-layer interfaces used for routing."; - leaf-list interface { - type if:interface-ref; - description - "Each entry is a reference to the name of a configured - network-layer interface."; - } - } - container control-plane-protocols { - description - "Support for control-plane protocol instances."; - list control-plane-protocol { - key "type name"; - description - "Each entry contains a control-plane protocol instance."; - leaf type { - type identityref { - base control-plane-protocol; - } - description - "Type of the control-plane protocol -- an identity - derived from the 'control-plane-protocol' - base identity."; - } - leaf name { - type string; - description - "An arbitrary name of the control-plane protocol - instance."; - } - leaf description { - type string; - description - "Textual description of the control-plane protocol - instance."; - } - container static-routes { - when "derived-from-or-self(../type, 'rt:static')" { - description - "This container is only valid for the 'static' routing - protocol."; - } - description - "Support for the 'static' pseudo-protocol. - - Address-family-specific modules augment this node with - their lists of routes."; - } - } - } - container ribs { - description - "Support for RIBs."; - list rib { - key "name"; - description - "Each entry contains a configuration for a RIB identified - by the 'name' key. - - Entries having the same key as a system-controlled entry - in the list '/routing/ribs/rib' are used for - configuring parameters of that entry. Other entries - define additional user-controlled RIBs."; - leaf name { - type string; - description - "The name of the RIB. - - For system-controlled entries, the value of this leaf - must be the same as the name of the corresponding entry - in the operational state. - - For user-controlled entries, an arbitrary name can be - used."; - } - uses address-family { - description - "The address family of the system-controlled RIB."; - } - - leaf default-rib { - if-feature "multiple-ribs"; - type boolean; - default "true"; - config false; - description - "This flag has the value of 'true' if and only if the RIB - is the default RIB for the given address family. - - By default, control-plane protocols place their routes - in the default RIBs."; - } - container routes { - config false; - description - "Current contents of the RIB."; - list route { - description - "A RIB route entry. This data node MUST be augmented - with information specific to routes of each address - family."; - leaf route-preference { - type route-preference; - description - "This route attribute, also known as 'administrative - distance', allows for selecting the preferred route - among routes with the same destination prefix. A - smaller value indicates a route that is - more preferred."; - } - container next-hop { - description - "Route's next-hop attribute."; - uses next-hop-state-content; - } - uses route-metadata; - } - } - action active-route { - description - "Return the active RIB route that is used for the - destination address. - - Address-family-specific modules MUST augment input - parameters with a leaf named 'destination-address'."; - output { - container route { - description - "The active RIB route for the specified destination. - - If no route exists in the RIB for the destination - address, no output is returned. - - Address-family-specific modules MUST augment this - container with appropriate route contents."; - container next-hop { - description - "Route's next-hop attribute."; - uses next-hop-state-content; - } - uses route-metadata; - } - } - } - leaf description { - type string; - description - "Textual description of the RIB."; - } - } - } - } - - /* - * The subsequent data nodes are obviated and obsoleted - * by the Network Management Datastore Architecture - * as described in RFC 8342. - */ - container routing-state { - config false; - status obsolete; - description - "State data of the routing subsystem."; - uses router-id { - status obsolete; - description - "Global router ID. - - It may be either configured or assigned algorithmically by - the implementation."; - } - container interfaces { - status obsolete; - description - "Network-layer interfaces used for routing."; - leaf-list interface { - type if:interface-state-ref; - status obsolete; - description - "Each entry is a reference to the name of a configured - network-layer interface."; - } - } - container control-plane-protocols { - status obsolete; - description - "Container for the list of routing protocol instances."; - list control-plane-protocol { - key "type name"; - status obsolete; - description - "State data of a control-plane protocol instance. - - An implementation MUST provide exactly one - system-controlled instance of the 'direct' - pseudo-protocol. Instances of other control-plane - protocols MAY be created by configuration."; - leaf type { - type identityref { - base control-plane-protocol; - } - status obsolete; - description - "Type of the control-plane protocol."; - } - leaf name { - type string; - status obsolete; - description - "The name of the control-plane protocol instance. - - For system-controlled instances, this name is - persistent, i.e., it SHOULD NOT change across - reboots."; - } - } - } - container ribs { - status obsolete; - description - "Container for RIBs."; - list rib { - key "name"; - min-elements 1; - status obsolete; - description - "Each entry represents a RIB identified by the 'name' - key. All routes in a RIB MUST belong to the same address - family. - - An implementation SHOULD provide one system-controlled - default RIB for each supported address family."; - leaf name { - type string; - status obsolete; - description - "The name of the RIB."; - } - uses address-family { - status obsolete; - description - "The address family of the RIB."; - } - leaf default-rib { - if-feature "multiple-ribs"; - type boolean; - default "true"; - status obsolete; - description - "This flag has the value of 'true' if and only if the - RIB is the default RIB for the given address family. - - By default, control-plane protocols place their routes - in the default RIBs."; - } - container routes { - status obsolete; - description - "Current contents of the RIB."; - list route { - status obsolete; - description - "A RIB route entry. This data node MUST be augmented - with information specific to routes of each address - family."; - leaf route-preference { - type route-preference; - status obsolete; - description - "This route attribute, also known as 'administrative - distance', allows for selecting the preferred route - among routes with the same destination prefix. A - smaller value indicates a route that is - more preferred."; - } - container next-hop { - status obsolete; - description - "Route's next-hop attribute."; - uses next-hop-state-content { - status obsolete; - description - "Route's next-hop attribute operational state."; - } - } - uses route-metadata { - status obsolete; - description - "Route metadata."; - } - } - } - action active-route { - status obsolete; - description - "Return the active RIB route that is used for the - destination address. - - Address-family-specific modules MUST augment input - parameters with a leaf named 'destination-address'."; - output { - container route { - status obsolete; - description - "The active RIB route for the specified - destination. - - If no route exists in the RIB for the destination - address, no output is returned. - - Address-family-specific modules MUST augment this - container with appropriate route contents."; - container next-hop { - status obsolete; - description - "Route's next-hop attribute."; - uses next-hop-state-content { - status obsolete; - description - "Active route state data."; - } - } - uses route-metadata { - status obsolete; - description - "Active route metadata."; - } - } - } - } - } - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang deleted file mode 100644 index 67be760a1..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-packet-types@2025-01-24.yang +++ /dev/null @@ -1,835 +0,0 @@ -module ietf-te-packet-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-te-packet-types"; - prefix te-packet-types; - - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-te-types { - prefix te-types; - reference - "RFC XXXX: Common YANG Data Types for Traffic Engineering"; - } - - // RFC Editor: replace XXXX with actual RFC number - // and remove this note - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - contact - "WG Web: - WG List: - - Editor: Tarek Saad - - - Editor: Rakesh Gandhi - - - Editor: Vishnu Pavan Beeram - - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - "; - description - "This YANG module contains a collection of generally useful YANG - data type definitions specific to Packet Traffic Engineering - (TE). - - The model conforms to the Network Management Datastore - Architecture (NMDA). - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here. - - Copyright (c) 2025 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Revised BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; - - revision 2025-01-24 { - description - "This revision adds the following new identities: - - bandwidth-profile-type; - - link-metric-delay-variation; - - link-metric-loss; - - path-metric-delay-variation; - - path-metric-loss. - - This revision adds the following new groupings: - - bandwidth-profile-parameters; - - te-packet-path-bandwidth; - - te-packet-link-bandwidth. - - This revision provides also few editorial changes."; - reference - "RFC XXXX: Common YANG Data Types for Traffic Engineering"; - } - - // RFC Editor: replace XXXX with actual RFC number, update date - // information and remove this note - - revision 2020-06-10 { - description - "Latest revision of TE MPLS types."; - reference - "RFC 8776: Common YANG Data Types for Traffic Engineering"; - } - - /* - * Identities - */ - - identity bandwidth-profile-type { - description - "Bandwidth Profile Types"; - } - - identity mef-10 { - base bandwidth-profile-type; - description - "MEF 10 Bandwidth Profile"; - reference - "MEF 10.3: Ethernet Services Attributes Phase 3"; - } - - identity rfc-2697 { - base bandwidth-profile-type; - description - "RFC 2697 Bandwidth Profile"; - reference - "RFC 2697: A Single Rate Three Color Marker"; - } - - identity rfc-2698 { - base bandwidth-profile-type; - description - "RFC 2698 Bandwidth Profile"; - reference - "RFC 2698: A Two Rate Three Color Marker"; - } - - // Derived identities from te-types:link-metric-type - - identity link-metric-delay-variation { - base te-types:link-metric-type; - description - "The Unidirectional Delay Variation Metric, - measured in units of microseconds."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions, - Section 4.3 - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions, - Section 4.3"; - } - - identity link-metric-loss { - base te-types:link-metric-type; - description - "The Unidirectional Link Loss Metric, - measured in units of 0.000003%."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions, - Section 4.4 - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions, - Section 4.4"; - } - - // Derived identities from te-types:link-metric-type - - identity path-metric-delay-variation { - base te-types:path-metric-type; - description - "The Path Delay Variation Metric, - measured in units of microseconds."; - reference - "RFC 8233: Extensions to the Path Computation Element - Communication Protocol (PCEP) to Compute - Service-Aware Label Switched Paths (LSPs), - Section 3.1.2"; - } - - identity path-metric-loss { - base te-types:path-metric-type; - description - "The Path Loss Metric, measured in units of 0.000003%."; - reference - "RFC 8233: Extensions to the Path Computation Element - Communication Protocol (PCEP) to Compute - Service-Aware Label Switched Paths (LSPs), - Section 3.1.3"; - } - - identity backup-protection-type { - description - "Base identity for the backup protection type."; - } - - identity backup-protection-link { - base backup-protection-type; - description - "Backup provides link protection only."; - } - - identity backup-protection-node-link { - base backup-protection-type; - description - "Backup offers node (preferred) or link protection."; - } - - identity bc-model-type { - description - "Base identity for the Diffserv-TE Bandwidth Constraints - Model type."; - reference - "RFC 4124: Protocol Extensions for Support of Diffserv-aware - MPLS Traffic Engineering"; - } - - identity bc-model-rdm { - base bc-model-type; - description - "Russian Dolls Bandwidth Constraints Model type."; - reference - "RFC 4127: Russian Dolls Bandwidth Constraints Model for - Diffserv-aware MPLS Traffic Engineering"; - } - - identity bc-model-mam { - base bc-model-type; - description - "Maximum Allocation Bandwidth Constraints Model type."; - reference - "RFC 4125: Maximum Allocation Bandwidth Constraints Model for - Diffserv-aware MPLS Traffic Engineering"; - } - - identity bc-model-mar { - base bc-model-type; - description - "Maximum Allocation with Reservation Bandwidth Constraints - Model type."; - reference - "RFC 4126: Max Allocation with Reservation Bandwidth - Constraints Model for Diffserv-aware MPLS Traffic - Engineering & Performance Comparisons"; - } - - /* - * Typedefs - */ - - typedef te-bandwidth-requested-type { - type enumeration { - enum specified-value { - description - "Bandwidth value is explicitly specified."; - } - enum specified-profile { - description - "Bandwidth profile is explicitly specified."; - } - enum auto { - description - "Bandwidth is automatically computed."; - } - } - description - "Enumerated type for specifying whether bandwidth is - explicitly specified or automatically computed."; - } - - typedef te-class-type { - type uint8; - description - "Diffserv-TE Class-Type. - Defines a set of Traffic Trunks crossing a link that is - governed by a specific set of bandwidth constraints. - - Class-Type is used for the purposes of link bandwidth - allocation, constraint-based routing, and admission control."; - reference - "RFC 4124: Protocol Extensions for Support of Diffserv-aware - MPLS Traffic Engineering"; - } - - typedef bc-type { - type uint8 { - range "0..7"; - } - description - "Diffserv-TE bandwidth constraints as defined in RFC 4124."; - reference - "RFC 4124: Protocol Extensions for Support of Diffserv-aware - MPLS Traffic Engineering"; - } - - typedef bandwidth-kbps { - type uint64; - units "kilobits per second"; - description - "Bandwidth values, expressed in kilobits per second."; - } - - typedef bandwidth-mbps { - type uint64; - units "megabits per second"; - description - "Bandwidth values, expressed in megabits per second."; - } - - typedef bandwidth-gbps { - type uint64; - units "gigabits per second"; - description - "Bandwidth values, expressed in gigabits per second."; - } - - /* - * Groupings - */ - - grouping performance-metrics-attributes-packet { - description - "Contains Performance Metrics (PM) information."; - uses te-types:performance-metrics-attributes { - augment "performance-metrics-one-way" { - description - "Performance Metrics (PM) one-way packet-specific - augmentation for a generic PM grouping."; - leaf one-way-min-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - description - "One-way minimum delay or latency."; - } - leaf one-way-min-delay-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "One-way minimum delay or latency normality."; - } - leaf one-way-max-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - description - "One-way maximum delay or latency."; - } - leaf one-way-max-delay-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "One-way maximum delay or latency normality."; - } - leaf one-way-delay-variation { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - description - "One-way delay variation."; - reference - "RFC 5481: Packet Delay Variation Applicability - Statement, Section 4.2"; - } - leaf one-way-delay-variation-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "One-way delay variation normality."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions - RFC 7823: Performance-Based Path Selection for - Explicitly Routed Label Switched Paths (LSPs) - Using TE Metric Extensions"; - } - leaf one-way-packet-loss { - type decimal64 { - fraction-digits 6; - range "0..50.331642"; - } - units "%"; - description - "One-way packet loss as a percentage of the total traffic - sent over a configurable interval. - - The finest precision is 0.000003%."; - reference - "RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions, Section 4.4"; - } - leaf one-way-packet-loss-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Packet loss normality."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions - RFC 7823: Performance-Based Path Selection for - Explicitly Routed Label Switched Paths (LSPs) - Using TE Metric Extensions"; - } - } - augment "performance-metrics-two-way" { - description - "Performance Metrics (PM) two-way packet-specific - augmentation for a generic PM grouping."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE - Metric Extensions"; - leaf two-way-min-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Two-way minimum delay or latency."; - } - leaf two-way-min-delay-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Two-way minimum delay or latency normality."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions - RFC 7823: Performance-Based Path Selection for - Explicitly Routed Label Switched Paths (LSPs) - Using TE Metric Extensions"; - } - leaf two-way-max-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Two-way maximum delay or latency."; - } - leaf two-way-max-delay-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Two-way maximum delay or latency normality."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions - RFC 7823: Performance-Based Path Selection for - Explicitly Routed Label Switched Paths (LSPs) - Using TE Metric Extensions"; - } - leaf two-way-delay-variation { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Two-way delay variation."; - reference - "RFC 5481: Packet Delay Variation Applicability - Statement, Section 4.2"; - } - leaf two-way-delay-variation-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Two-way delay variation normality."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions - RFC 7823: Performance-Based Path Selection for - Explicitly Routed Label Switched Paths (LSPs) - Using TE Metric Extensions"; - } - leaf two-way-packet-loss { - type decimal64 { - fraction-digits 6; - range "0..50.331642"; - } - units "%"; - default "0"; - description - "Two-way packet loss as a percentage of the total traffic - sent over a configurable interval. - - The finest precision is 0.000003%."; - } - leaf two-way-packet-loss-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Two-way packet loss normality."; - } - } - } - } - - grouping one-way-performance-metrics-packet { - description - "One-way packet Performance Metrics (PM) throttle grouping."; - leaf one-way-min-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "One-way minimum delay or latency."; - } - leaf one-way-max-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "One-way maximum delay or latency."; - } - leaf one-way-delay-variation { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "One-way delay variation."; - } - leaf one-way-packet-loss { - type decimal64 { - fraction-digits 6; - range "0..50.331642"; - } - units "%"; - default "0"; - description - "One-way packet loss as a percentage of the total traffic - sent over a configurable interval. - - The finest precision is 0.000003%."; - } - } - - grouping one-way-performance-metrics-gauge-packet { - description - "One-way packet Performance Metrics (PM) throttle grouping. - - This grouping is used to report the same metrics defined in - the one-way-performance-metrics-packet grouping, using gauges - instead of uint32 data types and referencing IPPM RFCs - instead of IGP-TE RFCs."; - leaf one-way-min-delay { - type yang:gauge64; - units "microseconds"; - description - "One-way minimum delay or latency."; - } - leaf one-way-max-delay { - type yang:gauge64; - units "microseconds"; - description - "One-way maximum delay or latency."; - reference - "RFC 7679: A One-Way Delay Metric for IP Performance - Metrics (IPPM)"; - } - leaf one-way-delay-variation { - type yang:gauge64; - units "microseconds"; - description - "One-way delay variation."; - reference - "RFC 3393: IP Packet Delay Variation Metric for IP - Performance Metrics (IPPM)"; - } - leaf one-way-packet-loss { - type decimal64 { - fraction-digits 5; - range "0..100"; - } - description - "The ratio of packets dropped to packets transmitted between - two endpoints."; - reference - "RFC 7680: A One-Way Loss Metric for IP Performance - Metrics (IPPM)"; - } - } - - grouping two-way-performance-metrics-packet { - description - "Two-way packet Performance Metrics (PM) throttle grouping."; - leaf two-way-min-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Two-way minimum delay or latency."; - } - leaf two-way-max-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Two-way maximum delay or latency."; - } - leaf two-way-delay-variation { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Two-way delay variation."; - } - leaf two-way-packet-loss { - type decimal64 { - fraction-digits 6; - range "0..50.331642"; - } - units "%"; - default "0"; - description - "Two-way packet loss as a percentage of the total traffic - sent over a configurable interval. - - The finest precision is 0.000003%."; - } - } - - grouping two-way-performance-metrics-gauge-packet { - description - "Two-way packet Performance Metrics (PM) throttle grouping. - - This grouping is used to report the same metrics defined in - the two-way-performance-metrics-packet grouping, using gauges - instead of uint32 data types and referencing IPPM RFCs - instead of IGP-TE RFCs."; - leaf two-way-min-delay { - type yang:gauge64; - units "microseconds"; - description - "Two-way minimum delay or latency."; - reference - "RFC 2681: A Round-trip Delay Metric for IPPM"; - } - leaf two-way-max-delay { - type yang:gauge64; - units "microseconds"; - description - "Two-way maximum delay or latency."; - reference - "RFC 2681: A Round-trip Delay Metric for IPPM"; - } - leaf two-way-delay-variation { - type yang:gauge64; - units "microseconds"; - description - "Two-way delay variation."; - reference - "RFC 5481: Packet Delay Variation Applicability Statement"; - } - leaf two-way-packet-loss { - type decimal64 { - fraction-digits 5; - range "0..100"; - } - description - "The ratio of packets dropped to packets transmitted between - two endpoints."; - } - } - - grouping performance-metrics-throttle-container-packet { - description - "Packet Performance Metrics (PM) threshold grouping."; - uses te-types:performance-metrics-throttle-container { - augment "throttle/threshold-out" { - description - "Performance Metrics (PM) threshold-out packet - augmentation for a generic grouping."; - uses one-way-performance-metrics-packet; - uses two-way-performance-metrics-packet; - } - augment "throttle/threshold-in" { - description - "Performance Metrics (PM) threshold-in packet augmentation - for a generic grouping."; - uses one-way-performance-metrics-packet; - uses two-way-performance-metrics-packet; - } - augment "throttle/threshold-accelerated-advertisement" { - description - "Performance Metrics (PM) accelerated advertisement packet - augmentation for a generic grouping."; - uses one-way-performance-metrics-packet; - uses two-way-performance-metrics-packet; - } - } - } - - grouping bandwidth-profile-parameters { - description - "Common parameters to define bandwidth profiles in packet - networks."; - leaf cir { - type uint64; - units "bits per second"; - description - "Committed Information Rate (CIR)."; - } - leaf cbs { - type uint64; - units "bytes"; - description - "Committed Burst Size (CBS)."; - } - leaf eir { - type uint64; - units "bits per second"; - description - "Excess Information Rate (EIR)."; - } - leaf ebs { - type uint64; - units "bytes"; - description - "Excess Burst Size (EBS)."; - } - leaf pir { - type uint64; - units "bits per second"; - description - "Peak Information Rate (PIR)."; - } - leaf pbs { - type uint64; - units "bytes"; - description - "Peak Burst Size (PBS)."; - } - } - - grouping te-packet-path-bandwidth { - description - "Bandwidth attributes for TE Packet paths."; - container packet-bandwidth { - description - "Bandwidth attributes for TE Packet paths."; - leaf specification-type { - type te-bandwidth-requested-type; - description - "The bandwidth specification type, either explicitly - specified or automatically computed."; - } - leaf set-bandwidth { - when "../specification-type = 'specified-value'" { - description - "When the bandwidth value is explicitly specified."; - } - type bandwidth-kbps; - description - "Set the bandwidth value explicitly, e.g., using offline - calculation."; - } - container bandwidth-profile { - when "../specification-type = 'specified-profile'" { - description - "When the bandwidth profile is explicitly specified."; - } - description - "Set the bandwidth profile attributes explicitly."; - leaf bandwidth-profile-name { - type string; - description - "Name of Bandwidth Profile."; - } - leaf bandwidth-profile-type { - type identityref { - base bandwidth-profile-type; - } - description - "Type of Bandwidth Profile."; - } - uses bandwidth-profile-parameters; - } - leaf class-type { - type te-types:te-ds-class; - description - "The Class-Type of traffic transported by the LSP."; - reference - "RFC 4124: Protocol Extensions for Support of - Diffserv-aware MPLS Traffic Engineering, - Section 4.3.1"; - } - leaf signaled-bandwidth { - type te-packet-types:bandwidth-kbps; - config false; - description - "The currently signaled bandwidth of the LSP. - - In the case where the bandwidth is specified - explicitly, then this will match the value of the - set-bandwidth leaf. - - In the cases where the bandwidth is dynamically - computed by the system, the current value of the - bandwidth should be reflected."; - } - } - } - - grouping te-packet-link-bandwidth { - description - "Bandwidth attributes for Packet TE links."; - leaf packet-bandwidth { - type uint64; - units "bits per second"; - description - "Bandwidth value for Packet TE links."; - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang deleted file mode 100644 index 0b8801bf7..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology-packet@2024-06-08.yang +++ /dev/null @@ -1,734 +0,0 @@ -module ietf-te-topology-packet { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-packet"; - - prefix "tet-pkt"; - - import ietf-network { - prefix "nw"; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - import ietf-network-topology { - prefix "nt"; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - import ietf-routing-types { - prefix "rt-types"; - reference - "RFC 8294: Common YANG Data Types for the Routing Area"; - } - - import ietf-te-topology { - prefix "tet"; - reference - "RFC 8795: YANG Data Model for Traffic Engineering (TE) - Topologies"; - } - - import ietf-te-types { - prefix "te-types"; - reference - "I-D.ietf-teas-rfc8776-update: Common YANG Data Types for - Traffic Engineering"; - } - - import ietf-te-packet-types { - prefix "te-packet-types"; - reference - "I-D.ietf-teas-rfc8776-update: Common YANG Data Types for - Traffic Engineering"; - } - - organization - "Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "WG Web: - WG List: - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - - - Editor: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Himanshu Shah - - - Editor: Oscar Gonzalez De Dios - "; - - description - "YANG data model for representing and manipulating PSC (Packet - Switching) TE Topologies. - - Copyright (c) 2024 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Revised BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; - - revision 2024-06-08 { - description - "Initial revision"; - reference - "RFC XXXX: YANG Data Model for Layer 3 TE Topologies"; - } - - /* - * Features - */ - - feature te-performance-metric { - description - "This feature indicates that the system supports - TE performance metric."; - reference - "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. - RFC8570: IS-IS Traffic Engineering (TE) Metric Extensions. - RFC7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; - } - - /* - * Groupings - */ - grouping packet-switch-capable-container { - description - "The container of packet switch capable attributes."; - container packet-switch-capable { - description - "Interface has packet-switching capabilities."; - leaf minimum-lsp-bandwidth { - type rt-types:bandwidth-ieee-float32; - description - "Minimum LSP Bandwidth. Units in bytes per second"; - } - leaf interface-mtu { - type uint16; - description - "Interface MTU."; - } - } - } - - /* - * Augmentations - */ - /* Augmentations to network-types */ - augment "/nw:networks/nw:network/nw:network-types/" - + "tet:te-topology" { - description - "Defines the packet TE topology type."; - container packet { - presence - "Indicates packet TE topology."; - description - "Its presence identifies the packet TE topology type."; - } - } - - /* Augmentations to connectivity-matrix */ - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices" { - when "../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augment only for packet TE topology"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - refine performance-metrics-one-way { - config false; - } - refine performance-metrics-two-way { - config false; - } - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augment only for packet TE topology"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - refine performance-metrics-one-way { - config false; - } - refine performance-metrics-two-way { - config false; - } - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices" { - when "../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augment only for packet TE topology"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augment only for packet TE topology"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - /* Augmentations to tunnel-termination-point */ - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities" { - when "../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augment only for packet TE topology"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - refine performance-metrics-one-way { - config false; - } - refine performance-metrics-two-way { - config false; - } - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augment only for packet TE topology"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - refine performance-metrics-one-way { - config false; - } - refine performance-metrics-two-way { - config false; - } - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - /* Augmentations to te-link-attributes */ - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes" { - when "tet:interface-switching-capability " - + "[tet:switching-capability = 'te-types:switching-psc1']" { - description - "Valid only for PSC"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - refine performance-metrics-one-way { - config false; - } - refine performance-metrics-two-way { - config false; - } - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes" { - when "(../../../nw:network-types/tet:te-topology/tet-pkt:packet)" - + " and (tet:interface-switching-capability " - + "[tet:switching-capability = 'te-types:switching-psc1'])" { - description - "Valid only for PSC"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - refine performance-metrics-one-way { - config false; - } - refine performance-metrics-two-way { - config false; - } - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry" { - when "(../../../nw:network-types/tet:te-topology/tet-pkt:packet)" - + " and (tet:interface-switching-capability " - + "[tet:switching-capability = 'te-types:switching-psc1'])" { - description - "Valid only for PSC"; - } - description - "Parameters for PSC TE topology."; - uses te-packet-types:performance-metrics-attributes-packet { - if-feature te-performance-metric; - } - uses - te-packet-types:performance-metrics-throttle-container-packet { - if-feature te-performance-metric; - } - } - - /* Augmentations to interface-switching-capability */ - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:interface-switching-capability" { - when "tet:switching-capability = 'te-types:switching-psc1' " { - description - "Valid only for PSC"; - } - description - "Parameters for PSC TE topology."; - uses packet-switch-capable-container; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:interface-switching-capability" { - when "(../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet) and " - + "(tet:switching-capability = 'te-types:switching-psc1')" { - description - "Valid only for PSC"; - } - description - "Parameters for PSC TE topology."; - uses packet-switch-capable-container; - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:interface-switching-capability" { - when "(../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet) and " - + "(tet:switching-capability = 'te-types:switching-psc1')" { - description - "Valid only for PSC"; - } - description - "Parameters for PSC TE topology."; - uses packet-switch-capable-container; - } - - /* - * Augment TE bandwidth - */ - - augment "/nw:networks/nw:network/nw:node/nt:termination-point/" - + "tet:te/" - + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment maximum LSP TE bandwidth for the link termination - point (LTP)."; - case packet { - uses te-packet-types:te-packet-path-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment TE bandwidth path constraints of the TE node - connectivity matrices."; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:te-node-attributes/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment TE bandwidth path constraints of the - connectivity matrix entry."; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment TE bandwidth path constraints of the TE node - connectivity matrices information source."; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:information-source-entry/tet:connectivity-matrices/" - + "tet:connectivity-matrix/" - + "tet:path-constraints/tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment TE bandwidth path constraints of the - connectivity matrix entry information source"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:client-layer-adaptation/tet:switching-capability/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment client TE bandwidth of the tunnel termination point - (TTP)"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/tet:path-constraints/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment TE bandwidth path constraints for the TTP - Local Link Connectivities."; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nw:node/tet:te/" - + "tet:tunnel-termination-point/" - + "tet:local-link-connectivities/" - + "tet:local-link-connectivity/tet:path-constraints/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment TE bandwidth path constraints for the TTP - Local Link Connectivity entry."; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment maximum LSP TE bandwidth for the TE link."; - case packet { - uses te-packet-types:te-packet-path-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment maximum TE bandwidth for the TE link"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment maximum reservable TE bandwidth for the TE link"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment unreserved TE bandwidth for the TE Link"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:interface-switching-capability/" - + "tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment maximum LSP TE bandwidth for the TE link - information source"; - case packet { - uses te-packet-types:te-packet-path-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment maximum TE bandwidth for the TE link - information source"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment maximum reservable TE bandwidth for the TE link - information-source"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:information-source-entry/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet" { - description - "Augmentation parameters apply only for networks with - Packet TE topology type."; - } - description - "Augment unreserved TE bandwidth of the TE link - information source"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:interface-switching-capability/" - + "tet:max-lsp-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - description - "Augment maximum LSP TE bandwidth of the TE link - template"; - case packet { - uses te-packet-types:te-packet-path-bandwidth; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:max-link-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - description - "Augment maximum TE bandwidth the TE link template"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:max-resv-link-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - description - "Augment maximum reservable TE bandwidth for the TE link - template."; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } - - augment "/nw:networks/tet:te/tet:templates/" - + "tet:link-template/tet:te-link-attributes/" - + "tet:unreserved-bandwidth/" - + "tet:te-bandwidth/tet:technology" { - description - "Augment unreserved TE bandwidth the TE link template"; - case packet { - uses te-packet-types:te-packet-link-bandwidth; - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang deleted file mode 100644 index 6d76a77b2..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-topology@2020-08-06.yang +++ /dev/null @@ -1,1952 +0,0 @@ -module ietf-te-topology { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; - prefix tet; - - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-te-types { - prefix te-types; - reference - "RFC 8776: Common YANG Data Types for Traffic Engineering"; - } - import ietf-network { - prefix nw; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - import ietf-network-topology { - prefix nt; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - contact - "WG Web: - WG List: - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - - - Editor: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Himanshu Shah - - - Editor: Oscar Gonzalez de Dios - "; - description - "This YANG module defines a TE topology model for representing, - retrieving, and manipulating technology-agnostic TE topologies. - - Copyright (c) 2020 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Simplified BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8795; see the - RFC itself for full legal notices."; - - revision 2020-08-06 { - description - "Initial revision."; - reference - "RFC 8795: YANG Data Model for Traffic Engineering (TE) - Topologies"; - } - - /* - * Features - */ - - feature nsrlg { - description - "This feature indicates that the system supports NSRLGs - (Non-Shared Risk Link Groups)."; - } - - feature te-topology-hierarchy { - description - "This feature indicates that the system allows an underlay - and/or overlay TE topology hierarchy."; - } - - feature template { - description - "This feature indicates that the system supports - template configuration."; - } - - /* - * Typedefs - */ - - typedef geographic-coordinate-degree { - type decimal64 { - fraction-digits 8; - } - description - "Decimal degree (DD) used to express latitude and longitude - geographic coordinates."; - } - // geographic-coordinate-degree - - typedef te-info-source { - type enumeration { - enum unknown { - description - "The source is unknown."; - } - enum locally-configured { - description - "Configured entity."; - } - enum ospfv2 { - description - "OSPFv2."; - } - enum ospfv3 { - description - "OSPFv3."; - } - enum isis { - description - "IS-IS."; - } - enum bgp-ls { - description - "BGP-LS."; - reference - "RFC 7752: North-Bound Distribution of Link-State and - Traffic Engineering (TE) Information Using BGP"; - } - enum system-processed { - description - "System-processed entity."; - } - enum other { - description - "Other source."; - } - } - description - "Describes the type of source that has provided the - related information, and the source's credibility."; - } - // te-info-source - - /* - * Groupings - */ - - grouping connectivity-matrix-entry-path-attributes { - description - "Attributes of a connectivity matrix entry."; - leaf is-allowed { - type boolean; - description - "'true' - switching is allowed; - 'false' - switching is disallowed."; - } - container underlay { - if-feature "te-topology-hierarchy"; - description - "Attributes of the TE link underlay."; - reference - "RFC 4206: Label Switched Paths (LSP) Hierarchy with - Generalized Multi-Protocol Label Switching (GMPLS) - Traffic Engineering (TE)"; - uses te-link-underlay-attributes; - } - uses te-types:generic-path-constraints; - uses te-types:generic-path-optimization; - uses te-types:generic-path-properties; - } - // connectivity-matrix-entry-path-attributes - - grouping geolocation-container { - description - "Contains a GPS location."; - container geolocation { - config false; - description - "Contains a GPS location."; - leaf altitude { - type int64; - units "millimeters"; - description - "Distance above sea level."; - } - leaf latitude { - type geographic-coordinate-degree { - range "-90..90"; - } - description - "Relative position north or south on the Earth's surface."; - } - leaf longitude { - type geographic-coordinate-degree { - range "-180..180"; - } - description - "Angular distance east or west on the Earth's surface."; - } - } - // geolocation - } - // geolocation-container - - grouping information-source-state-attributes { - description - "The attributes identifying the source that has provided the - related information, and the source's credibility."; - leaf credibility-preference { - type uint16; - description - "The preference value for calculating the Traffic - Engineering database credibility value used for - tie-break selection between different information-source - values. A higher value is preferable."; - } - leaf logical-network-element { - type string; - description - "When applicable, this is the name of a logical network - element from which the information is learned."; - } - leaf network-instance { - type string; - description - "When applicable, this is the name of a network instance - from which the information is learned."; - } - } - // information-source-state-attributes - - grouping information-source-per-link-attributes { - description - "Per-node container of the attributes identifying the source - that has provided the related information, and the source's - credibility."; - leaf information-source { - type te-info-source; - config false; - description - "Indicates the type of information source."; - } - leaf information-source-instance { - type string; - config false; - description - "The name indicating the instance of the information - source."; - } - container information-source-state { - config false; - description - "Contains state attributes related to the information - source."; - uses information-source-state-attributes; - container topology { - description - "When the information is processed by the system, - the attributes in this container indicate which topology - is used to generate the result information."; - uses nt:link-ref; - } - } - } - // information-source-per-link-attributes - - grouping information-source-per-node-attributes { - description - "Per-node container of the attributes identifying the source - that has provided the related information, and the source's - credibility."; - leaf information-source { - type te-info-source; - config false; - description - "Indicates the type of information source."; - } - leaf information-source-instance { - type string; - config false; - description - "The name indicating the instance of the information - source."; - } - container information-source-state { - config false; - description - "Contains state attributes related to the information - source."; - uses information-source-state-attributes; - container topology { - description - "When the information is processed by the system, - the attributes in this container indicate which topology - is used to generate the result information."; - uses nw:node-ref; - } - } - } - // information-source-per-node-attributes - - grouping interface-switching-capability-list { - description - "List of Interface Switching Capability Descriptors (ISCDs)."; - list interface-switching-capability { - key "switching-capability encoding"; - description - "List of ISCDs for this link."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description - RFC 4203: OSPF Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)"; - leaf switching-capability { - type identityref { - base te-types:switching-capabilities; - } - description - "Switching capability for this interface."; - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - description - "Encoding supported by this interface."; - } - uses te-link-iscd-attributes; - } - // interface-switching-capability - } - // interface-switching-capability-list - - grouping statistics-per-link { - description - "Statistics attributes per TE link."; - leaf discontinuity-time { - type yang:date-and-time; - description - "The time of the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - /* Administrative attributes */ - leaf disables { - type yang:counter32; - description - "Number of times that a link was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that a link was enabled."; - } - leaf maintenance-clears { - type yang:counter32; - description - "Number of times that a link was taken out of maintenance."; - } - leaf maintenance-sets { - type yang:counter32; - description - "Number of times that a link was put in maintenance."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that a link was modified."; - } - /* Operational attributes */ - leaf downs { - type yang:counter32; - description - "Number of times that a link was set to an operational state - of 'down'."; - } - leaf ups { - type yang:counter32; - description - "Number of times that a link was set to an operational state - of 'up'."; - } - /* Recovery attributes */ - leaf fault-clears { - type yang:counter32; - description - "Number of times that a link experienced a fault-clear - event."; - } - leaf fault-detects { - type yang:counter32; - description - "Number of times that a link experienced fault detection."; - } - leaf protection-switches { - type yang:counter32; - description - "Number of times that a link experienced protection - switchover."; - } - leaf protection-reverts { - type yang:counter32; - description - "Number of times that a link experienced protection - reversion."; - } - leaf restoration-failures { - type yang:counter32; - description - "Number of times that a link experienced restoration - failure."; - } - leaf restoration-starts { - type yang:counter32; - description - "Number of times that a link experienced restoration - start."; - } - leaf restoration-successes { - type yang:counter32; - description - "Number of times that a link experienced restoration - success."; - } - leaf restoration-reversion-failures { - type yang:counter32; - description - "Number of times that a link experienced restoration - reversion failure."; - } - leaf restoration-reversion-starts { - type yang:counter32; - description - "Number of times that a link experienced restoration - reversion start."; - } - leaf restoration-reversion-successes { - type yang:counter32; - description - "Number of times that a link experienced restoration - reversion success."; - } - } - // statistics-per-link - - grouping statistics-per-node { - description - "Statistics attributes per TE node."; - leaf discontinuity-time { - type yang:date-and-time; - description - "The time of the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - container node { - description - "Contains statistics attributes at the TE node level."; - leaf disables { - type yang:counter32; - description - "Number of times that a node was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that a node was enabled."; - } - leaf maintenance-sets { - type yang:counter32; - description - "Number of times that a node was put in maintenance."; - } - leaf maintenance-clears { - type yang:counter32; - description - "Number of times that a node was taken out of - maintenance."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that a node was modified."; - } - } - // node - container connectivity-matrix-entry { - description - "Contains statistics attributes at the level of a - connectivity matrix entry."; - leaf creates { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - created."; - reference - "RFC 6241: Network Configuration Protocol (NETCONF), - Section 7.2, 'create' operation"; - } - leaf deletes { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - deleted."; - reference - "RFC 6241: Network Configuration Protocol (NETCONF), - Section 7.2, 'delete' operation"; - } - leaf disables { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - enabled."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - modified."; - } - } - // connectivity-matrix-entry - } - // statistics-per-node - - grouping statistics-per-ttp { - description - "Statistics attributes per TE TTP (Tunnel Termination Point)."; - leaf discontinuity-time { - type yang:date-and-time; - description - "The time of the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - container tunnel-termination-point { - description - "Contains statistics attributes at the TE TTP level."; - /* Administrative attributes */ - leaf disables { - type yang:counter32; - description - "Number of times that a TTP was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that a TTP was enabled."; - } - leaf maintenance-clears { - type yang:counter32; - description - "Number of times that a TTP was taken out of maintenance."; - } - leaf maintenance-sets { - type yang:counter32; - description - "Number of times that a TTP was put in maintenance."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that a TTP was modified."; - } - /* Operational attributes */ - leaf downs { - type yang:counter32; - description - "Number of times that a TTP was set to an operational state - of 'down'."; - } - leaf ups { - type yang:counter32; - description - "Number of times that a TTP was set to an operational state - of 'up'."; - } - leaf in-service-clears { - type yang:counter32; - description - "Number of times that a TTP was taken out of service - (TE tunnel was released)."; - } - leaf in-service-sets { - type yang:counter32; - description - "Number of times that a TTP was put in service by a TE - tunnel (TE tunnel was set up)."; - } - } - // tunnel-termination-point - container local-link-connectivity { - description - "Contains statistics attributes at the TE LLCL (Local Link - Connectivity List) level."; - leaf creates { - type yang:counter32; - description - "Number of times that an LLCL entry was created."; - reference - "RFC 6241: Network Configuration Protocol (NETCONF), - Section 7.2, 'create' operation"; - } - leaf deletes { - type yang:counter32; - description - "Number of times that an LLCL entry was deleted."; - reference - "RFC 6241: Network Configuration Protocol (NETCONF), - Section 7.2, 'delete' operation"; - } - leaf disables { - type yang:counter32; - description - "Number of times that an LLCL entry was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that an LLCL entry was enabled."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that an LLCL entry was modified."; - } - } - // local-link-connectivity - } - // statistics-per-ttp - - grouping te-link-augment { - description - "Augmentation for a TE link."; - uses te-link-config; - uses te-link-state-derived; - container statistics { - config false; - description - "Statistics data."; - uses statistics-per-link; - } - } - // te-link-augment - - grouping te-link-config { - description - "TE link configuration grouping."; - choice bundle-stack-level { - description - "The TE link can be partitioned into bundled links or - component links."; - case bundle { - container bundled-links { - description - "A set of bundled links."; - reference - "RFC 4201: Link Bundling in MPLS Traffic - Engineering (TE)"; - list bundled-link { - key "sequence"; - description - "Specifies a bundled interface that is - further partitioned."; - leaf sequence { - type uint32; - description - "Identifies the sequence in the bundle."; - } - } - } - } - case component { - container component-links { - description - "A set of component links."; - list component-link { - key "sequence"; - description - "Specifies a component interface that is - sufficient to unambiguously identify the - appropriate resources."; - leaf sequence { - type uint32; - description - "Identifies the sequence in the bundle."; - } - leaf src-interface-ref { - type string; - description - "Reference to a component link interface on the - source node."; - } - leaf des-interface-ref { - type string; - description - "Reference to a component link interface on the - destination node."; - } - } - } - } - } - // bundle-stack-level - leaf-list te-link-template { - if-feature "template"; - type leafref { - path "../../../../te/templates/link-template/name"; - } - description - "The reference to a TE link template."; - } - uses te-link-config-attributes; - } - // te-link-config - - grouping te-link-config-attributes { - description - "Link configuration attributes in a TE topology."; - container te-link-attributes { - description - "Link attributes in a TE topology."; - leaf access-type { - type te-types:te-link-access-type; - description - "Link access type, which can be point-to-point or - multi-access."; - } - container external-domain { - description - "For an inter-domain link, specifies the attributes of - the remote end of the link, to facilitate the signaling at - the local end."; - uses nw:network-ref; - leaf remote-te-node-id { - type te-types:te-node-id; - description - "Remote TE node identifier, used together with - 'remote-te-link-tp-id' to identify the remote Link - Termination Point (LTP) in a different domain."; - } - leaf remote-te-link-tp-id { - type te-types:te-tp-id; - description - "Remote TE LTP identifier, used together with - 'remote-te-node-id' to identify the remote LTP in a - different domain."; - } - } - leaf is-abstract { - type empty; - description - "Present if the link is abstract."; - } - leaf name { - type string; - description - "Link name."; - } - container underlay { - if-feature "te-topology-hierarchy"; - description - "Attributes of the TE link underlay."; - reference - "RFC 4206: Label Switched Paths (LSP) Hierarchy with - Generalized Multi-Protocol Label Switching (GMPLS) - Traffic Engineering (TE)"; - uses te-link-underlay-attributes; - } - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the link."; - } - uses te-link-info-attributes; - } - // te-link-attributes - } - // te-link-config-attributes - - grouping te-link-info-attributes { - description - "Advertised TE information attributes."; - leaf link-index { - type uint64; - description - "The link identifier. If OSPF is used, this object - represents an ospfLsdbID. If IS-IS is used, this object - represents an isisLSPID. If a locally configured link is - used, this object represents a unique value, which is - locally defined in a router."; - } - leaf administrative-group { - type te-types:admin-groups; - description - "Administrative group or color of the link. - This attribute covers both administrative groups (defined - in RFCs 3630 and 5305) and Extended Administrative Groups - (defined in RFC 7308)."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2 - RFC 5305: IS-IS Extensions for Traffic Engineering - RFC 7308: Extended Administrative Groups in MPLS Traffic - Engineering (MPLS-TE)"; - } - uses interface-switching-capability-list; - uses te-types:label-set-info; - leaf link-protection-type { - type identityref { - base te-types:link-protection-type; - } - description - "Link Protection Type desired for this link."; - reference - "RFC 4202: Routing Extensions in Support of - Generalized Multi-Protocol Label Switching (GMPLS)"; - } - container max-link-bandwidth { - uses te-types:te-bandwidth; - description - "Maximum bandwidth that can be seen on this link in this - direction. Units are in bytes per second."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2 - RFC 5305: IS-IS Extensions for Traffic Engineering"; - } - container max-resv-link-bandwidth { - uses te-types:te-bandwidth; - description - "Maximum amount of bandwidth that can be reserved in this - direction in this link. Units are in bytes per second."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2 - RFC 5305: IS-IS Extensions for Traffic Engineering"; - } - list unreserved-bandwidth { - key "priority"; - max-elements 8; - description - "Unreserved bandwidth for priority levels 0-7. Units are in - bytes per second."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2 - RFC 5305: IS-IS Extensions for Traffic Engineering"; - leaf priority { - type uint8 { - range "0..7"; - } - description - "Priority."; - } - uses te-types:te-bandwidth; - } - leaf te-default-metric { - type uint32; - description - "Traffic Engineering metric."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2 - RFC 5305: IS-IS Extensions for Traffic Engineering"; - } - leaf te-delay-metric { - type uint32; - description - "Traffic Engineering delay metric."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions"; - } - leaf te-igp-metric { - type uint32; - description - "IGP metric used for Traffic Engineering."; - reference - "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a - second MPLS Traffic Engineering (TE) Metric"; - } - container te-srlgs { - description - "Contains a list of SRLGs."; - leaf-list value { - type te-types:srlg; - description - "SRLG value."; - reference - "RFC 4202: Routing Extensions in Support of - Generalized Multi-Protocol Label Switching (GMPLS)"; - } - } - container te-nsrlgs { - if-feature "nsrlg"; - description - "Contains a list of NSRLGs (Non-Shared Risk Link Groups). - When an abstract TE link is configured, this list specifies - the request that underlay TE paths need to be mutually - disjoint with other TE links in the same groups."; - leaf-list id { - type uint32; - description - "NSRLG ID, uniquely configured within a topology."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - } - } - // te-link-info-attributes - - grouping te-link-iscd-attributes { - description - "TE link ISCD attributes."; - reference - "RFC 4203: OSPF Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS), Section 1.4"; - list max-lsp-bandwidth { - key "priority"; - max-elements 8; - description - "Maximum Label Switched Path (LSP) bandwidth at - priorities 0-7."; - leaf priority { - type uint8 { - range "0..7"; - } - description - "Priority."; - } - uses te-types:te-bandwidth; - } - } - // te-link-iscd-attributes - - grouping te-link-state-derived { - description - "Link state attributes in a TE topology."; - leaf oper-status { - type te-types:te-oper-status; - config false; - description - "The current operational state of the link."; - } - leaf is-transitional { - type empty; - config false; - description - "Present if the link is transitional; used as an - alternative approach in lieu of 'inter-layer-lock-id' - for path computation in a TE topology covering multiple - layers or multiple regions."; - reference - "RFC 5212: Requirements for GMPLS-Based Multi-Region and - Multi-Layer Networks (MRN/MLN) - RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)"; - } - uses information-source-per-link-attributes; - list information-source-entry { - key "information-source information-source-instance"; - config false; - description - "A list of information sources learned, including the source - that is used."; - uses information-source-per-link-attributes; - uses te-link-info-attributes; - } - container recovery { - config false; - description - "Status of the recovery process."; - leaf restoration-status { - type te-types:te-recovery-status; - description - "Restoration status."; - } - leaf protection-status { - type te-types:te-recovery-status; - description - "Protection status."; - } - } - container underlay { - if-feature "te-topology-hierarchy"; - config false; - description - "State attributes for the TE link underlay."; - leaf dynamic { - type boolean; - description - "'true' if the underlay is dynamically created."; - } - leaf committed { - type boolean; - description - "'true' if the underlay is committed."; - } - } - } - // te-link-state-derived - - grouping te-link-underlay-attributes { - description - "Attributes for the TE link underlay."; - reference - "RFC 4206: Label Switched Paths (LSP) Hierarchy with - Generalized Multi-Protocol Label Switching (GMPLS) - Traffic Engineering (TE)"; - leaf enabled { - type boolean; - description - "'true' if the underlay is enabled. - 'false' if the underlay is disabled."; - } - container primary-path { - description - "The service path on the underlay topology that - supports this link."; - uses nw:network-ref; - list path-element { - key "path-element-id"; - description - "A list of path elements describing the service path."; - leaf path-element-id { - type uint32; - description - "To identify the element in a path."; - } - uses te-path-element; - } - } - // primary-path - list backup-path { - key "index"; - description - "A list of backup service paths on the underlay topology that - protect the underlay primary path. If the primary path is - not protected, the list contains zero elements. If the - primary path is protected, the list contains one or more - elements."; - leaf index { - type uint32; - description - "A sequence number to identify a backup path."; - } - uses nw:network-ref; - list path-element { - key "path-element-id"; - description - "A list of path elements describing the backup service - path."; - leaf path-element-id { - type uint32; - description - "To identify the element in a path."; - } - uses te-path-element; - } - } - // backup-path - leaf protection-type { - type identityref { - base te-types:lsp-protection-type; - } - description - "Underlay protection type desired for this link."; - } - container tunnel-termination-points { - description - "Underlay TTPs desired for this link."; - leaf source { - type binary; - description - "Source TTP identifier."; - } - leaf destination { - type binary; - description - "Destination TTP identifier."; - } - } - container tunnels { - description - "Underlay TE tunnels supporting this TE link."; - leaf sharing { - type boolean; - default "true"; - description - "'true' if the underlay tunnel can be shared with other - TE links; - 'false' if the underlay tunnel is dedicated to this - TE link. - This leaf is the default option for all TE tunnels - and may be overridden by the per-TE-tunnel value."; - } - list tunnel { - key "tunnel-name"; - description - "Zero, one, or more underlay TE tunnels that support this - TE link."; - leaf tunnel-name { - type string; - description - "A tunnel name uniquely identifies an underlay TE tunnel, - used together with the 'source-node' value for this - link."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; - } - leaf sharing { - type boolean; - description - "'true' if the underlay tunnel can be shared with other - TE links; - 'false' if the underlay tunnel is dedicated to this - TE link."; - } - } - // tunnel - } - // tunnels - } - // te-link-underlay-attributes - - grouping te-node-augment { - description - "Augmentation for a TE node."; - uses te-node-config; - uses te-node-state-derived; - container statistics { - config false; - description - "Statistics data."; - uses statistics-per-node; - } - list tunnel-termination-point { - key "tunnel-tp-id"; - description - "A termination point can terminate a tunnel."; - leaf tunnel-tp-id { - type binary; - description - "TTP identifier."; - } - uses te-node-tunnel-termination-point-config; - leaf oper-status { - type te-types:te-oper-status; - config false; - description - "The current operational state of the TTP."; - } - uses geolocation-container; - container statistics { - config false; - description - "Statistics data."; - uses statistics-per-ttp; - } - // Relationship to other TTPs - list supporting-tunnel-termination-point { - key "node-ref tunnel-tp-ref"; - description - "Identifies the TTPs on which this TTP depends."; - leaf node-ref { - type inet:uri; - description - "This leaf identifies the node in which the supporting - TTP is present. - This node is either the supporting node or a node in - an underlay topology."; - } - leaf tunnel-tp-ref { - type binary; - description - "Reference to a TTP that is in either the supporting node - or a node in an underlay topology."; - } - } - // supporting-tunnel-termination-point - } - // tunnel-termination-point - } - // te-node-augment - - grouping te-node-config { - description - "TE node configuration grouping."; - leaf-list te-node-template { - if-feature "template"; - type leafref { - path "../../../../te/templates/node-template/name"; - } - description - "The reference to a TE node template."; - } - uses te-node-config-attributes; - } - // te-node-config - - grouping te-node-config-attributes { - description - "Configuration node attributes in a TE topology."; - container te-node-attributes { - description - "Contains node attributes in a TE topology."; - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the link."; - } - uses te-node-connectivity-matrices; - uses te-node-info-attributes; - } - } - // te-node-config-attributes - - grouping te-node-config-attributes-template { - description - "Configuration node attributes for a template in a TE - topology."; - container te-node-attributes { - description - "Contains node attributes in a TE topology."; - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the link."; - } - uses te-node-info-attributes; - } - } - // te-node-config-attributes-template - - grouping te-node-connectivity-matrices { - description - "Connectivity matrix on a TE node."; - container connectivity-matrices { - description - "Contains a connectivity matrix on a TE node."; - leaf number-of-entries { - type uint16; - description - "The number of connectivity matrix entries. - If this number is specified in the configuration request, - the number is the requested number of entries, which may - not all be listed in the list; - if this number is reported in the state data, - the number is the current number of operational entries."; - } - uses te-types:label-set-info; - uses connectivity-matrix-entry-path-attributes; - list connectivity-matrix { - key "id"; - description - "Represents a node's switching limitations, i.e., - limitations in the interconnecting network TE links - across the node."; - reference - "RFC 7579: General Network Element Constraint Encoding - for GMPLS-Controlled Networks"; - leaf id { - type uint32; - description - "Identifies the connectivity matrix entry."; - } - } - // connectivity-matrix - } - // connectivity-matrices - } - // te-node-connectivity-matrices - - grouping te-node-connectivity-matrix-attributes { - description - "Termination point references of a connectivity matrix entry."; - container from { - description - "Reference to a source LTP."; - leaf tp-ref { - type leafref { - path "../../../../../../nt:termination-point/nt:tp-id"; - } - description - "Relative reference to a termination point."; - } - uses te-types:label-set-info; - } - container to { - description - "Reference to a destination LTP."; - leaf tp-ref { - type leafref { - path "../../../../../../nt:termination-point/nt:tp-id"; - } - description - "Relative reference to a termination point."; - } - uses te-types:label-set-info; - } - uses connectivity-matrix-entry-path-attributes; - } - // te-node-connectivity-matrix-attributes - - grouping te-node-info-attributes { - description - "Advertised TE information attributes."; - leaf domain-id { - type uint32; - description - "Identifies the domain to which this node belongs. - This attribute is used to support inter-domain links."; - reference - "RFC 5152: A Per-Domain Path Computation Method for - Establishing Inter-Domain Traffic Engineering (TE) - Label Switched Paths (LSPs) - RFC 5316: ISIS Extensions in Support of Inter-Autonomous - System (AS) MPLS and GMPLS Traffic Engineering - RFC 5392: OSPF Extensions in Support of Inter-Autonomous - System (AS) MPLS and GMPLS Traffic Engineering"; - } - leaf is-abstract { - type empty; - description - "Present if the node is abstract; not present if the node - is actual."; - } - leaf name { - type string; - description - "Node name."; - } - leaf-list signaling-address { - type inet:ip-address; - description - "The node's signaling address."; - } - container underlay-topology { - if-feature "te-topology-hierarchy"; - description - "When an abstract node encapsulates a topology, the - attributes in this container point to said topology."; - uses nw:network-ref; - } - } - // te-node-info-attributes - - grouping te-node-state-derived { - description - "Node state attributes in a TE topology."; - leaf oper-status { - type te-types:te-oper-status; - config false; - description - "The current operational state of the node."; - } - uses geolocation-container; - leaf is-multi-access-dr { - type empty; - config false; - description - "The presence of this attribute indicates that this TE node - is a pseudonode elected as a designated router."; - reference - "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual - Environments - RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2"; - } - uses information-source-per-node-attributes; - list information-source-entry { - key "information-source information-source-instance"; - config false; - description - "A list of information sources learned, including the source - that is used."; - uses information-source-per-node-attributes; - uses te-node-connectivity-matrices; - uses te-node-info-attributes; - } - } - // te-node-state-derived - - grouping te-node-tunnel-termination-point-config { - description - "Termination capability of a TTP on a TE node."; - uses te-node-tunnel-termination-point-config-attributes; - container local-link-connectivities { - description - "Contains an LLCL for a TTP on a TE node."; - leaf number-of-entries { - type uint16; - description - "The number of LLCL entries. - If this number is specified in the configuration request, - the number is the requested number of entries, which may - not all be listed in the list; - if this number is reported in the state data, - the number is the current number of operational entries."; - } - uses te-types:label-set-info; - uses connectivity-matrix-entry-path-attributes; - } - } - // te-node-tunnel-termination-point-config - - grouping te-node-tunnel-termination-point-config-attributes { - description - "Configuration attributes of a TTP on a TE node."; - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the TTP."; - } - leaf name { - type string; - description - "A descriptive name for the TTP."; - } - leaf switching-capability { - type identityref { - base te-types:switching-capabilities; - } - description - "Switching capability for this interface."; - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - description - "Encoding supported by this interface."; - } - leaf-list inter-layer-lock-id { - type uint32; - description - "Inter-layer lock ID, used for path computation in a TE - topology covering multiple layers or multiple regions."; - reference - "RFC 5212: Requirements for GMPLS-Based Multi-Region and - Multi-Layer Networks (MRN/MLN) - RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)"; - } - leaf protection-type { - type identityref { - base te-types:lsp-protection-type; - } - description - "The protection type that this TTP is capable of."; - } - container client-layer-adaptation { - description - "Contains capability information to support a client-layer - adaptation in a multi-layer topology."; - list switching-capability { - key "switching-capability encoding"; - description - "List of supported switching capabilities."; - reference - "RFC 4202: Routing Extensions in Support of - Generalized Multi-Protocol Label Switching (GMPLS) - RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)"; - leaf switching-capability { - type identityref { - base te-types:switching-capabilities; - } - description - "Switching capability for the client-layer adaptation."; - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - description - "Encoding supported by the client-layer adaptation."; - } - uses te-types:te-bandwidth; - } - } - } - // te-node-tunnel-termination-point-config-attributes - - grouping te-node-tunnel-termination-point-llc-list { - description - "LLCL of a TTP on a TE node."; - list local-link-connectivity { - key "link-tp-ref"; - description - "The termination capabilities between the TTP and the LTP. - This capability information can be used to compute - the tunnel path. - The Interface Adjustment Capability Descriptors (IACDs) - (defined in RFC 6001) on each LTP can be derived from - this list."; - reference - "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)"; - leaf link-tp-ref { - type leafref { - path "../../../../../nt:termination-point/nt:tp-id"; - } - description - "LTP."; - } - uses te-types:label-set-info; - uses connectivity-matrix-entry-path-attributes; - } - } - // te-node-tunnel-termination-point-llc-list - - grouping te-path-element { - description - "A group of attributes defining an element in a TE path, - such as a TE node, TE link, TE atomic resource, or label."; - uses te-types:explicit-route-hop; - } - // te-path-element - - grouping te-termination-point-augment { - description - "Augmentation for a TE termination point."; - leaf te-tp-id { - type te-types:te-tp-id; - description - "An identifier that uniquely identifies a TE termination - point."; - } - container te { - must '../te-tp-id'; - presence "TE support"; - description - "Indicates TE support."; - uses te-termination-point-config; - leaf oper-status { - type te-types:te-oper-status; - config false; - description - "The current operational state of the LTP."; - } - uses geolocation-container; - } - } - // te-termination-point-augment - - grouping te-termination-point-config { - description - "TE termination point configuration grouping."; - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the LTP."; - } - leaf name { - type string; - description - "A descriptive name for the LTP."; - } - uses interface-switching-capability-list; - leaf inter-domain-plug-id { - type binary; - description - "A network-wide unique number that identifies on the - network a connection that supports a given inter-domain - TE link. This is a more flexible alternative to specifying - 'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link - when the provider either does not know 'remote-te-node-id' - and 'remote-te-link-tp-id' or needs to give the client the - flexibility to mix and match multiple topologies."; - } - leaf-list inter-layer-lock-id { - type uint32; - description - "Inter-layer lock ID, used for path computation in a TE - topology covering multiple layers or multiple regions."; - reference - "RFC 5212: Requirements for GMPLS-Based Multi-Region and - Multi-Layer Networks (MRN/MLN) - RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)"; - } - } - // te-termination-point-config - - grouping te-topologies-augment { - description - "Augmentation for TE topologies."; - container te { - presence "TE support"; - description - "Indicates TE support."; - container templates { - description - "Configuration parameters for templates used for a TE - topology."; - list node-template { - if-feature "template"; - key "name"; - leaf name { - type te-types:te-template-name; - description - "The name to identify a TE node template."; - } - description - "The list of TE node templates used to define sharable - and reusable TE node attributes."; - uses template-attributes; - uses te-node-config-attributes-template; - } - // node-template - list link-template { - if-feature "template"; - key "name"; - leaf name { - type te-types:te-template-name; - description - "The name to identify a TE link template."; - } - description - "The list of TE link templates used to define sharable - and reusable TE link attributes."; - uses template-attributes; - uses te-link-config-attributes; - } - // link-template - } - // templates - } - // te - } - // te-topologies-augment - - grouping te-topology-augment { - description - "Augmentation for a TE topology."; - uses te-types:te-topology-identifier; - container te { - must '../te-topology-identifier/provider-id' - + ' and ../te-topology-identifier/client-id' - + ' and ../te-topology-identifier/topology-id'; - presence "TE support"; - description - "Indicates TE support."; - uses te-topology-config; - uses geolocation-container; - } - } - // te-topology-augment - - grouping te-topology-config { - description - "TE topology configuration grouping."; - leaf name { - type string; - description - "Name of the TE topology. This attribute is optional and can - be specified by the operator to describe the TE topology, - which can be useful when 'network-id' (RFC 8345) is not - descriptive and not modifiable because of being generated - by the system."; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - leaf preference { - type uint8 { - range "1..255"; - } - description - "Specifies a preference for this topology. A lower number - indicates a higher preference."; - } - leaf optimization-criterion { - type identityref { - base te-types:objective-function-type; - } - description - "Optimization criterion applied to this topology."; - reference - "RFC 3272: Overview and Principles of Internet Traffic - Engineering"; - } - list nsrlg { - if-feature "nsrlg"; - key "id"; - description - "List of NSRLGs (Non-Shared Risk Link Groups)."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - leaf id { - type uint32; - description - "Identifies the NSRLG entry."; - } - leaf disjointness { - type te-types:te-path-disjointness; - description - "The type of resource disjointness."; - } - } - // nsrlg - } - // te-topology-config - - grouping template-attributes { - description - "Common attributes for all templates."; - leaf priority { - type uint16; - description - "The preference value for resolving conflicts between - different templates. When two or more templates specify - values for one configuration attribute, the value from the - template with the highest priority is used. - A lower number indicates a higher priority. The highest - priority is 0."; - } - leaf reference-change-policy { - type enumeration { - enum no-action { - description - "When an attribute changes in this template, the - configuration node referring to this template does - not take any action."; - } - enum not-allowed { - description - "When any configuration object has a reference to this - template, changing this template is not allowed."; - } - enum cascade { - description - "When an attribute changes in this template, the - configuration object referring to this template applies - the new attribute value to the corresponding - configuration."; - } - } - description - "This attribute specifies the action taken for a - configuration node that has a reference to this template."; - } - } - // template-attributes - - /* - * Data nodes - */ - - augment "/nw:networks/nw:network/nw:network-types" { - description - "Introduces a new network type for a TE topology."; - container te-topology { - presence "Indicates a TE topology"; - description - "Its presence identifies the TE topology type."; - } - } - - augment "/nw:networks" { - description - "Augmentation parameters for TE topologies."; - uses te-topologies-augment; - } - - augment "/nw:networks/nw:network" { - when 'nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Configuration parameters for a TE topology."; - uses te-topology-augment; - } - - augment "/nw:networks/nw:network/nw:node" { - when '../nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Configuration parameters for TE at the node level."; - leaf te-node-id { - type te-types:te-node-id; - description - "The identifier of a node in the TE topology. - A node is specific to a topology to which it belongs."; - } - container te { - must '../te-node-id' { - description - "'te-node-id' is mandatory."; - } - must 'count(../nw:supporting-node)<=1' { - description - "For a node in a TE topology, there cannot be more - than one supporting node. If multiple nodes are - abstracted, the 'underlay-topology' field is used."; - } - presence "TE support"; - description - "Indicates TE support."; - uses te-node-augment; - } - } - - augment "/nw:networks/nw:network/nt:link" { - when '../nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Configuration parameters for TE at the link level."; - container te { - must 'count(../nt:supporting-link)<=1' { - description - "For a link in a TE topology, there cannot be more - than one supporting link. If one or more link paths are - abstracted, the underlay is used."; - } - presence "TE support"; - description - "Indicates TE support."; - uses te-link-augment; - } - } - - augment "/nw:networks/nw:network/nw:node/" - + "nt:termination-point" { - when '../../nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Configuration parameters for TE at the termination point - level."; - uses te-termination-point-augment; - } - - augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/" - + "bundle/bundled-links/bundled-link" { - when '../../../../nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Augmentation for a TE bundled link."; - leaf src-tp-ref { - type leafref { - path "../../../../../nw:node[nw:node-id = " - + "current()/../../../../nt:source/" - + "nt:source-node]/" - + "nt:termination-point/nt:tp-id"; - require-instance true; - } - description - "Reference to another TE termination point on the - same source node."; - } - leaf des-tp-ref { - type leafref { - path "../../../../../nw:node[nw:node-id = " - + "current()/../../../../nt:destination/" - + "nt:dest-node]/" - + "nt:termination-point/nt:tp-id"; - require-instance true; - } - description - "Reference to another TE termination point on the - same destination node."; - } - } - - augment "/nw:networks/nw:network/nw:node/te/" - + "information-source-entry/connectivity-matrices/" - + "connectivity-matrix" { - when '../../../../../nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Augmentation for the TE node connectivity matrix."; - uses te-node-connectivity-matrix-attributes; - } - - augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/" - + "connectivity-matrices/connectivity-matrix" { - when '../../../../../nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Augmentation for the TE node connectivity matrix."; - uses te-node-connectivity-matrix-attributes; - } - - augment "/nw:networks/nw:network/nw:node/te/" - + "tunnel-termination-point/local-link-connectivities" { - when '../../../../nw:network-types/tet:te-topology' { - description - "Augmentation parameters apply only for networks with a - TE topology type."; - } - description - "Augmentation for TE node TTP LLCs (Local Link - Connectivities)."; - uses te-node-tunnel-termination-point-llc-list; - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang deleted file mode 100644 index b0e9af256..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-te-types@2025-01-24.yang +++ /dev/null @@ -1,4473 +0,0 @@ -module ietf-te-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; - prefix te-types; - - import ietf-inet-types { - prefix inet; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types"; - } - import ietf-routing-types { - prefix rt-types; - reference - "RFC 8294: Common YANG Data Types for the Routing Area"; - } - import ietf-network { - prefix nw; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - import ietf-network-topology { - prefix nt; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - contact - "WG Web: - WG List: - - Editor: Tarek Saad - - - Editor: Rakesh Gandhi - - - Editor: Vishnu Pavan Beeram - - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - "; - description - "This YANG module contains a collection of generally useful - YANG data type definitions specific to TE. - - The model conforms to the Network Management Datastore - Architecture (NMDA). - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here. - - Copyright (c) 2025 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Revised BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX - (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself - for full legal notices."; - - revision 2025-01-24 { - description - "This revision adds the following new identities: - - lsp-provisioning-error-reason; - - association-type-diversity; - - tunnel-admin-state-auto; - - lsp-restoration-restore-none; - - restoration-scheme-rerouting; - - path-metric-optimization-type; - - link-path-metric-type; - - link-metric-type and its derived identities; - - path-computation-error-reason and its derived identities; - - protocol-origin-type and its derived identities; - - svec-objective-function-type and its derived identities; - - svec-metric-type and its derived identities. - - This revision adds the following new data types: - - path-type. - - This revision adds the following new groupings: - - explicit-route-hop-with-srlg; - - encoding-and-switching-type; - - te-generic-node-id. - - This revision updates the following identities: - - objective-function-type; - - action-exercise; - - path-metric-type; - - path-metric-te; - - path-metric-igp; - - path-metric-hop; - - path-metric-delay-average; - - path-metric-delay-minimum; - - path-metric-residual-bandwidth; - - path-metric-optimize-includes; - - path-metric-optimize-excludes; - - te-optimization-criterion. - - This revision updates the following data types: - - te-node-id. - - This revision updates the following groupings: - - explicit-route-hop: - - adds the following leaves: - - node-id-uri; - - link-tp-id-uri; - - updates the following leaves: - - node-id; - - link-tp-id; - - record-route-state: - - adds the following leaves: - - node-id-uri; - - link-tp-id-uri; - - updates the following leaves: - - node-id; - - link-tp-id; - - optimization-metric-entry: - - updates the following leaves: - - metric-type; - - tunnel-constraints; - - adds the following leaves: - - network-id; - - path-constraints-route-objects: - - updates the following containers: - - explicit-route-objects-always; - - generic-path-metric-bounds: - - updates the following leaves: - - metric-type; - - generic-path-optimization - - adds the following leaves: - - tiebreaker; - - deprecate the following containers: - - tiebreakers. - - This revision obsoletes the following identities: - - of-minimize-agg-bandwidth-consumption; - - of-minimize-load-most-loaded-link; - - of-minimize-cost-path-set; - - lsp-protection-reroute-extra; - - lsp-protection-reroute. - - This revision provides also few editorial changes."; - reference - "RFC XXXX: Common YANG Data Types for Traffic Engineering"; - } - - // RFC Editor: replace XXXX with actual RFC number, update date - // information and remove this note - - revision 2020-06-10 { - description - "Initial Version of TE types."; - reference - "RFC 8776: Common YANG Data Types for Traffic Engineering"; - } - - /* - * Features - */ - - feature p2mp-te { - description - "Indicates support for Point-to-Multipoint TE (P2MP-TE)."; - reference - "RFC 4875: Extensions to Resource Reservation Protocol - - Traffic Engineering (RSVP-TE) for - Point-to-Multipoint TE Label Switched Paths (LSPs)"; - } - - feature frr-te { - description - "Indicates support for TE Fast Reroute (FRR)."; - reference - "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels"; - } - - feature extended-admin-groups { - description - "Indicates support for TE link extended administrative - groups."; - reference - "RFC 7308: Extended Administrative Groups in MPLS Traffic - Engineering (MPLS-TE)"; - } - - feature named-path-affinities { - description - "Indicates support for named path affinities."; - } - - feature named-extended-admin-groups { - description - "Indicates support for named extended administrative groups."; - } - - feature named-srlg-groups { - description - "Indicates support for named Shared Risk Link Group (SRLG)."; - } - - feature named-path-constraints { - description - "Indicates support for named path constraints."; - } - - feature path-optimization-metric { - description - "Indicates support for path optimization metrics."; - } - - feature path-optimization-objective-function { - description - "Indicates support for path optimization objective functions."; - } - - /* - * Identities - */ - - identity lsp-provisioning-error-reason { - description - "Base identity for LSP provisioning errors."; - } - - identity session-attributes-flags { - description - "Base identity for the RSVP-TE session attributes flags."; - } - - identity local-protection-desired { - base session-attributes-flags; - description - "Local protection is desired."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 4.7.1"; - } - - identity se-style-desired { - base session-attributes-flags; - description - "Shared explicit style, to allow the LSP to be established - and share resources with the old LSP."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; - } - - identity local-recording-desired { - base session-attributes-flags; - description - "Label recording is desired."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 4.7.1"; - } - - identity bandwidth-protection-desired { - base session-attributes-flags; - description - "Requests FRR bandwidth protection on LSRs, if present."; - reference - "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP - Tunnels"; - } - - identity node-protection-desired { - base session-attributes-flags; - description - "Requests FRR node protection on LSRs, if present."; - reference - "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP - Tunnels"; - } - - identity path-reevaluation-request { - base session-attributes-flags; - description - "This flag indicates that a path re-evaluation (of the - current path in use) is requested. - - Note that this does not trigger any LSP reroutes but - instead just signals a request to evaluate whether a - preferable path exists."; - reference - "RFC 4736: Reoptimization of Multiprotocol Label Switching - (MPLS) Traffic Engineering (TE) Loosely Routed - Label Switched Path (LSP)"; - } - - identity soft-preemption-desired { - base session-attributes-flags; - description - "Soft preemption of LSP resources is desired."; - reference - "RFC 5712: MPLS Traffic Engineering Soft Preemption"; - } - - identity lsp-attributes-flags { - description - "Base identity for LSP attributes flags."; - } - - identity end-to-end-rerouting-desired { - base lsp-attributes-flags; - description - "Indicates end-to-end rerouting behavior for an LSP - undergoing establishment. - - This MAY also be used to specify the behavior of end-to-end - LSP recovery for established LSPs."; - reference - "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS - RSVP-TE - RFC 5420: Encoding of Attributes for MPLS LSP Establishment - Using Resource Reservation Protocol Traffic - Engineering (RSVP-TE) - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity boundary-rerouting-desired { - base lsp-attributes-flags; - description - "Indicates boundary rerouting behavior for an LSP undergoing - establishment. - - This MAY also be used to specify segment-based LSP recovery - through nested crankback for established LSPs. - - The boundary Area Border Router (ABR) / Autonomous System - Border Router (ASBR) can decide to forward the PathErr - message upstream to either an upstream boundary ABR/ASBR or - the ingress LSR. - - Alternatively, it can try to select another egress boundary - LSR."; - reference - "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS - RSVP-TE - RFC 5420: Encoding of Attributes for MPLS LSP Establishment - Using Resource Reservation Protocol Traffic - Engineering (RSVP-TE) - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity segment-based-rerouting-desired { - base lsp-attributes-flags; - description - "Indicates segment-based rerouting behavior for an LSP - undergoing establishment. - - This MAY also be used to specify segment-based LSP recovery - for established LSPs."; - reference - "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS - RSVP-TE - RFC 5420: Encoding of Attributes for MPLS LSP Establishment - Using Resource Reservation Protocol - Traffic Engineering (RSVP-TE) - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity lsp-integrity-required { - base lsp-attributes-flags; - description - "Indicates that LSP integrity is required."; - reference - "RFC 4875: Extensions to Resource Reservation Protocol - - Traffic Engineering (RSVP-TE) for - Point-to-Multipoint TE Label Switched Paths (LSPs) - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity contiguous-lsp-desired { - base lsp-attributes-flags; - description - "Indicates that a contiguous LSP is desired."; - reference - "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering -- - Resource Reservation Protocol-Traffic Engineering - (RSVP-TE) Extensions - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity lsp-stitching-desired { - base lsp-attributes-flags; - description - "Indicates that LSP stitching is desired."; - reference - "RFC 5150: Label Switched Path Stitching with Generalized - Multiprotocol Label Switching Traffic Engineering - (GMPLS TE) - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity pre-planned-lsp-flag { - base lsp-attributes-flags; - description - "Indicates that the LSP MUST be provisioned in the - control plane only."; - reference - "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for - Multi-Layer and Multi-Region Networks (MLN/MRN) - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity non-php-behavior-flag { - base lsp-attributes-flags; - description - "Indicates that non-PHP (non-Penultimate Hop Popping) - behavior for the LSP is desired."; - reference - "RFC 6511: Non-Penultimate Hop Popping Behavior and - Out-of-Band Mapping for RSVP-TE Label Switched - Paths - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity oob-mapping-flag { - base lsp-attributes-flags; - description - "Indicates that signaling of the egress binding information - is out of band (e.g., via the Border Gateway Protocol - (BGP))."; - reference - "RFC 6511: Non-Penultimate Hop Popping Behavior and - Out-of-Band Mapping for RSVP-TE Label Switched - Paths - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity entropy-label-capability { - base lsp-attributes-flags; - description - "Indicates entropy label capability."; - reference - "RFC 6790: The Use of Entropy Labels in MPLS Forwarding - RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO)"; - } - - identity oam-mep-entity-desired { - base lsp-attributes-flags; - description - "OAM Maintenance Entity Group End Point (MEP) entities - desired."; - reference - "RFC 7260: GMPLS RSVP-TE Extensions for Operations, - Administration, and Maintenance (OAM) - Configuration"; - } - - identity oam-mip-entity-desired { - base lsp-attributes-flags; - description - "OAM Maintenance Entity Group Intermediate Points (MIP) - entities desired."; - reference - "RFC 7260: GMPLS RSVP-TE Extensions for Operations, - Administration, and Maintenance (OAM) - Configuration"; - } - - identity srlg-collection-desired { - base lsp-attributes-flags; - description - "Shared Risk Link Group (SRLG) collection desired."; - reference - "RFC 7570: Label Switched Path (LSP) Attribute in the - Explicit Route Object (ERO) - RFC 8001: RSVP-TE Extensions for Collecting Shared Risk - Link Group (SRLG) Information"; - } - - identity loopback-desired { - base lsp-attributes-flags; - description - "This flag indicates that a particular node on the LSP is - required to enter loopback mode. - - This can also be used to specify the loopback state of the - node."; - reference - "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and - Loopback"; - } - - identity p2mp-te-tree-eval-request { - base lsp-attributes-flags; - description - "P2MP-TE tree re-evaluation request."; - reference - "RFC 8149: RSVP Extensions for Reoptimization of Loosely - Routed Point-to-Multipoint Traffic Engineering - Label Switched Paths (LSPs)"; - } - - identity rtm-set-desired { - base lsp-attributes-flags; - description - "Residence Time Measurement (RTM) attribute flag requested."; - reference - "RFC 8169: Residence Time Measurement in MPLS Networks"; - } - - identity link-protection-type { - description - "Base identity for the link protection type."; - } - - identity link-protection-unprotected { - base link-protection-type; - description - "Unprotected link type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity link-protection-extra-traffic { - base link-protection-type; - description - "Extra-Traffic protected link type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity link-protection-shared { - base link-protection-type; - description - "Shared protected link type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity link-protection-1-for-1 { - base link-protection-type; - description - "One-for-one (1:1) protected link type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity link-protection-1-plus-1 { - base link-protection-type; - description - "One-plus-one (1+1) protected link type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity link-protection-enhanced { - base link-protection-type; - description - "A compound link protection type derived from the underlay - TE tunnel protection configuration supporting the TE link."; - } - - identity association-type { - description - "Base identity for the tunnel association."; - } - - identity association-type-recovery { - base association-type; - description - "Association type for recovery, used to associate LSPs of the - same tunnel for recovery."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery - RFC 6780: RSVP ASSOCIATION Object Extensions"; - } - - identity association-type-resource-sharing { - base association-type; - description - "Association type for resource sharing, used to enable - resource sharing during make-before-break."; - reference - "RFC 4873: GMPLS Segment Recovery - RFC 6780: RSVP ASSOCIATION Object Extensions"; - } - - identity association-type-double-sided-bidir { - base association-type; - description - "Association type for double-sided bidirectional LSPs, - used to associate two LSPs of two tunnels that are - independently configured on either endpoint."; - reference - "RFC 7551: RSVP-TE Extensions for Associated Bidirectional - Label Switched Paths (LSPs)"; - } - - identity association-type-single-sided-bidir { - base association-type; - description - "Association type for single-sided bidirectional LSPs, - used to associate two LSPs of two tunnels, where one - tunnel is configured on one side/endpoint and the other - tunnel is dynamically created on the other endpoint."; - reference - "RFC 6780: RSVP ASSOCIATION Object Extensions - RFC 7551: RSVP-TE Extensions for Associated Bidirectional - Label Switched Paths (LSPs)"; - } - - identity association-type-diversity { - base association-type; - description - "Association Type diversity used to associate LSPs whose - paths are to be diverse from each other."; - reference - "RFC 8800: Path Computation Element Communication Protocol - (PCEP) Extension for Label Switched Path (LSP) - Diversity Constraint Signaling"; - } - - identity objective-function-type { - description - "Base identity for path objective function types."; - } - - identity of-minimize-cost-path { - base objective-function-type; - description - "Objective function for minimizing path cost."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity of-minimize-load-path { - base objective-function-type; - description - "Objective function for minimizing the load on one or more - paths."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity of-maximize-residual-bandwidth { - base objective-function-type; - description - "Objective function for maximizing residual bandwidth."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity of-minimize-agg-bandwidth-consumption { - base objective-function-type; - status obsolete; - description - "Objective function for minimizing aggregate bandwidth - consumption. - - This identity has been obsoleted: the - 'svec-of-minimize-agg-bandwidth-consumption' identity SHOULD - be used instead."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity of-minimize-load-most-loaded-link { - base objective-function-type; - status obsolete; - description - "Objective function for minimizing the load on the link that - is carrying the highest load. - - This identity has been obsoleted: the - 'svec-of-minimize-load-most-loaded-link' identity SHOULD - be used instead."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity of-minimize-cost-path-set { - base objective-function-type; - status obsolete; - description - "Objective function for minimizing the cost on a path set. - - This identity has been obsoleted: the - 'svec-of-minimize-cost-path-set' identity SHOULD - be used instead."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity path-computation-method { - description - "Base identity for supported path computation mechanisms."; - } - - identity path-locally-computed { - base path-computation-method; - description - "Indicates a constrained-path LSP in which the - path is computed by the local LER."; - reference - "RFC 9522: Overview and Principles of Internet Traffic - Engineering, Section 4.4"; - } - - identity path-externally-queried { - base path-computation-method; - description - "Constrained-path LSP in which the path is obtained by - querying an external source, such as a PCE server. - In the case that an LSP is defined to be externally queried, - it may also have associated explicit definitions (provided - to the external source to aid computation). - - The path that is returned by the external source may - require further local computation on the device."; - reference - "RFC 9522: Overview and Principles of Internet Traffic - Engineering - RFC 4657: Path Computation Element (PCE) Communication - Protocol Generic Requirements"; - } - - identity path-explicitly-defined { - base path-computation-method; - description - "Constrained-path LSP in which the path is - explicitly specified as a collection of strict and/or loose - hops."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 9522: Overview and Principles of Internet Traffic - Engineering"; - } - - identity lsp-metric-type { - description - "Base identity for the LSP metric specification types."; - } - - identity lsp-metric-relative { - base lsp-metric-type; - description - "The metric specified for the LSPs to which this identity - refers is specified as a value relative to the IGP metric - cost to the LSP's tail end."; - reference - "RFC 4657: Path Computation Element (PCE) Communication - Protocol Generic Requirements"; - } - - identity lsp-metric-absolute { - base lsp-metric-type; - description - "The metric specified for the LSPs to which this identity - refers is specified as an absolute value."; - reference - "RFC 4657: Path Computation Element (PCE) Communication - Protocol Generic Requirements"; - } - - identity lsp-metric-inherited { - base lsp-metric-type; - description - "The metric for the LSPs to which this identity refers is - not specified explicitly; rather, it is directly inherited - from the IGP cost."; - reference - "RFC 4657: Path Computation Element (PCE) Communication - Protocol Generic Requirements"; - } - - identity te-tunnel-type { - description - "Base identity from which specific tunnel types are derived."; - } - - identity te-tunnel-p2p { - base te-tunnel-type; - description - "TE Point-to-Point (P2P) tunnel type."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; - } - - identity te-tunnel-p2mp { - base te-tunnel-type; - description - "TE P2MP tunnel type."; - reference - "RFC 4875: Extensions to Resource Reservation Protocol - - Traffic Engineering (RSVP-TE) for - Point-to-Multipoint TE Label Switched Paths - (LSPs)"; - } - - identity tunnel-action-type { - description - "Base identity from which specific tunnel action types - are derived."; - } - - identity tunnel-action-resetup { - base tunnel-action-type; - description - "TE tunnel action that tears down the tunnel's current LSP - (if any) and attempts to re-establish a new LSP."; - } - - identity tunnel-action-reoptimize { - base tunnel-action-type; - description - "TE tunnel action that reoptimizes the placement of the - tunnel LSP(s)."; - } - - identity tunnel-action-switchpath { - base tunnel-action-type; - description - "TE tunnel action that switches the tunnel's LSP to use the - specified path."; - } - - identity te-action-result { - description - "Base identity from which specific TE action results - are derived."; - } - - identity te-action-success { - base te-action-result; - description - "TE action was successful."; - } - - identity te-action-fail { - base te-action-result; - description - "TE action failed."; - } - - identity tunnel-action-inprogress { - base te-action-result; - description - "TE action is in progress."; - } - - identity tunnel-admin-state-type { - description - "Base identity for TE tunnel administrative states."; - } - - identity tunnel-admin-state-up { - base tunnel-admin-state-type; - description - "Tunnel's administrative state is up."; - } - - identity tunnel-admin-state-down { - base tunnel-admin-state-type; - description - "Tunnel's administrative state is down."; - } - - identity tunnel-admin-state-auto { - base tunnel-admin-state-type; - description - "Tunnel administrative auto state. The administrative status - in state datastore transitions to 'tunnel-admin-up' when the - tunnel used by the client layer, and to 'tunnel-admin-down' - when it is not used by the client layer."; - } - - identity tunnel-state-type { - description - "Base identity for TE tunnel states."; - } - - identity tunnel-state-up { - base tunnel-state-type; - description - "Tunnel's state is up."; - } - - identity tunnel-state-down { - base tunnel-state-type; - description - "Tunnel's state is down."; - } - - identity lsp-state-type { - description - "Base identity for TE LSP states."; - } - - identity lsp-path-computing { - base lsp-state-type; - description - "State path computation is in progress."; - } - - identity lsp-path-computation-ok { - base lsp-state-type; - description - "State path computation was successful."; - } - - identity lsp-path-computation-failed { - base lsp-state-type; - description - "State path computation failed."; - } - - identity lsp-state-setting-up { - base lsp-state-type; - description - "State is being set up."; - } - - identity lsp-state-setup-ok { - base lsp-state-type; - description - "State setup was successful."; - } - - identity lsp-state-setup-failed { - base lsp-state-type; - description - "State setup failed."; - } - - identity lsp-state-up { - base lsp-state-type; - description - "State is up."; - } - - identity lsp-state-tearing-down { - base lsp-state-type; - description - "State is being torn down."; - } - - identity lsp-state-down { - base lsp-state-type; - description - "State is down."; - } - - identity path-invalidation-action-type { - description - "Base identity for TE path invalidation action types."; - } - - identity path-invalidation-action-drop { - base path-invalidation-action-type; - description - "Upon invalidation of the TE tunnel path, the tunnel remains - valid, but any packet mapped over the tunnel is dropped."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 2.5"; - } - - identity path-invalidation-action-teardown { - base path-invalidation-action-type; - description - "TE path invalidation action teardown."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 2.5"; - } - - identity lsp-restoration-type { - description - "Base identity from which LSP restoration types are derived."; - } - - identity lsp-restoration-restore-none { - base lsp-restoration-type; - description - "No LSP affected by a failure is restored."; - } - - identity lsp-restoration-restore-any { - base lsp-restoration-type; - description - "Any LSP affected by a failure is restored."; - } - - identity lsp-restoration-restore-all { - base lsp-restoration-type; - description - "Affected LSPs are restored after all LSPs of the tunnel are - broken."; - } - - identity restoration-scheme-type { - description - "Base identity for LSP restoration schemes."; - } - - identity restoration-scheme-rerouting { - base restoration-scheme-type; - description - "Restoration LSP is computed, signalled and configured after - the failure detection. - - This restoration scheme is also known as - 'Full LSP Re-routing', with the alternate route being - computed after the failure occurs."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity restoration-scheme-preconfigured { - base restoration-scheme-type; - description - "Restoration LSP is precomputed, presignalled and - preconfigured prior to the failure."; - } - - identity restoration-scheme-precomputed { - base restoration-scheme-type; - description - "Restoration LSP is precomputed, but not presignalled nor - preconfigured, prior to the failure. - - This restoration scheme is also known as - 'Full LSP Re-routing', with the alternate route being - pre-computed and stored for use when the failure occurs."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity restoration-scheme-presignaled { - base restoration-scheme-type; - description - "Restoration LSP is presignaled, but not preconfigured, - prior to the failure. - - This restoration scheme is also known as - 'Pre-planned LSP Re-routing'."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-type { - description - "Base identity from which LSP protection types are derived."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-unprotected { - base lsp-protection-type; - description - "'Unprotected' LSP protection type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-reroute-extra { - base lsp-protection-type; - status obsolete; - description - "'(Full) Rerouting' LSP protection type. - - This identity has been obsoleted: the - 'restoration-scheme-rerouting' identity SHOULD be used - instead."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-reroute { - base lsp-protection-type; - status obsolete; - description - "'Rerouting without Extra-Traffic' LSP protection type. - - This identity has been obsoleted: the - 'restoration-scheme-rerouting' identity SHOULD be used - instead."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-1-for-n { - base lsp-protection-type; - description - "'1:N Protection with Extra-Traffic' LSP protection type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-1-for-1 { - base lsp-protection-type; - description - "LSP protection '1:1 Protection Type'."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-unidir-1-plus-1 { - base lsp-protection-type; - description - "'1+1 Unidirectional Protection' LSP protection type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-bidir-1-plus-1 { - base lsp-protection-type; - description - "'1+1 Bidirectional Protection' LSP protection type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-extra-traffic { - base lsp-protection-type; - description - "Extra-Traffic LSP protection type."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - identity lsp-protection-state { - description - "Base identity of protection states for reporting purposes."; - } - - identity normal { - base lsp-protection-state; - description - "Normal state."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity signal-fail-of-protection { - base lsp-protection-state; - description - "The protection transport entity has a signal fail condition - that is of higher priority than the forced switchover - command."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity lockout-of-protection { - base lsp-protection-state; - description - "A Loss of Protection (LoP) command is active."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity forced-switch { - base lsp-protection-state; - description - "A forced switchover command is active."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity signal-fail { - base lsp-protection-state; - description - "There is a signal fail condition on either the working path - or the protection path."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity signal-degrade { - base lsp-protection-state; - description - "There is a signal degrade condition on either the working - path or the protection path."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity manual-switch { - base lsp-protection-state; - description - "A manual switchover command is active."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity wait-to-restore { - base lsp-protection-state; - description - "A Wait-to-Restore (WTR) timer is running."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity do-not-revert { - base lsp-protection-state; - description - "A Do Not Revert (DNR) condition is active because of - non-revertive behavior."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity failure-of-protocol { - base lsp-protection-state; - description - "LSP protection is not working because of a protocol failure - condition."; - reference - "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection - to Match the Operational Expectations of - Synchronous Digital Hierarchy, Optical Transport - Network, and Ethernet Transport Network Operators - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity protection-external-commands { - description - "Base identity from which protection-related external commands - used for troubleshooting purposes are derived."; - } - - identity action-freeze { - base protection-external-commands; - description - "A temporary configuration action initiated by an operator - command that prevents any switchover action from being taken - and, as such, freezes the current state."; - reference - "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection - to Match the Operational Expectations of - Synchronous Digital Hierarchy, Optical Transport - Network, and Ethernet Transport Network Operators - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity clear-freeze { - base protection-external-commands; - description - "An action that clears the active freeze state."; - reference - "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection - to Match the Operational Expectations of - Synchronous Digital Hierarchy, Optical Transport - Network, and Ethernet Transport Network Operators - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity action-lockout-of-normal { - base protection-external-commands; - description - "A temporary configuration action initiated by an operator - command to ensure that the normal traffic is not allowed - to use the protection transport entity."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity clear-lockout-of-normal { - base protection-external-commands; - description - "An action that clears the active lockout of the - normal state."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity action-lockout-of-protection { - base protection-external-commands; - description - "A temporary configuration action initiated by an operator - command to ensure that the protection transport entity is - temporarily not available to transport a traffic signal - (either normal or Extra-Traffic)."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity action-forced-switch { - base protection-external-commands; - description - "A switchover action initiated by an operator command to - switch the Extra-Traffic signal, the normal traffic signal, - or the null signal to the protection transport entity, - unless a switchover command of equal or higher priority is - in effect."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity action-manual-switch { - base protection-external-commands; - description - "A switchover action initiated by an operator command to - switch the Extra-Traffic signal, the normal traffic signal, - or the null signal to the protection transport entity, - unless a fault condition exists on other transport entities - or a switchover command of equal or higher priority is in - effect."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity action-exercise { - base protection-external-commands; - description - "An action that starts testing whether or not Automatic - Protection Switching (APS) communication is operating - correctly. - - It is of lower priority than any other state or command."; - reference - "RFC 7271: MPLS Transport Profile (MPLS-TP) Linear Protection - to Match the Operational Expectations of - Synchronous Digital Hierarchy, Optical Transport - Network, and Ethernet Transport Network Operators - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity clear { - base protection-external-commands; - description - "An action that clears the active near-end lockout of a - protection, forced switchover, manual switchover, - Wait-to-Restore (WTR) state, or exercise command."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - identity switching-capabilities { - description - "Base identity for interface switching capabilities."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity switching-psc1 { - base switching-capabilities; - description - "Packet-Switch Capable-1 (PSC-1)."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity switching-evpl { - base switching-capabilities; - description - "Ethernet Virtual Private Line (EVPL)."; - reference - "RFC 6004: Generalized MPLS (GMPLS) Support for Metro - Ethernet Forum and G.8011 Ethernet Service - Switching"; - } - - identity switching-l2sc { - base switching-capabilities; - description - "Layer-2 Switch Capable (L2SC)."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity switching-tdm { - base switching-capabilities; - description - "Time-Division-Multiplex Capable (TDM)."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity switching-otn { - base switching-capabilities; - description - "OTN-TDM capable."; - reference - "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS - Control of Evolving G.709 Optical Transport - Networks"; - } - - identity switching-dcsc { - base switching-capabilities; - description - "Data Channel Switching Capable (DCSC)."; - reference - "RFC 6002: Generalized MPLS (GMPLS) Data Channel - Switching Capable (DCSC) and Channel Set Label - Extensions"; - } - - identity switching-lsc { - base switching-capabilities; - description - "Lambda-Switch Capable (LSC)."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity switching-fsc { - base switching-capabilities; - description - "Fiber-Switch Capable (FSC)."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-types { - description - "Base identity for encoding types."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-packet { - base lsp-encoding-types; - description - "Packet LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-ethernet { - base lsp-encoding-types; - description - "Ethernet LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-pdh { - base lsp-encoding-types; - description - "ANSI/ETSI PDH LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-sdh { - base lsp-encoding-types; - description - "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-digital-wrapper { - base lsp-encoding-types; - description - "Digital Wrapper LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-lambda { - base lsp-encoding-types; - description - "Lambda (photonic) LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-fiber { - base lsp-encoding-types; - description - "Fiber LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-fiber-channel { - base lsp-encoding-types; - description - "FiberChannel LSP encoding."; - reference - "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description"; - } - - identity lsp-encoding-oduk { - base lsp-encoding-types; - description - "G.709 ODUk (Digital Path) LSP encoding."; - reference - "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Extensions for G.709 Optical Transport - Networks Control"; - } - - identity lsp-encoding-optical-channel { - base lsp-encoding-types; - description - "G.709 Optical Channel LSP encoding."; - reference - "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Extensions for G.709 Optical Transport - Networks Control"; - } - - identity lsp-encoding-line { - base lsp-encoding-types; - description - "Line (e.g., 8B/10B) LSP encoding."; - reference - "RFC 6004: Generalized MPLS (GMPLS) Support for Metro - Ethernet Forum and G.8011 Ethernet Service - Switching"; - } - - identity path-signaling-type { - description - "Base identity from which specific LSP path setup types - are derived."; - } - - identity path-setup-static { - base path-signaling-type; - description - "Static LSP provisioning path setup."; - } - - identity path-setup-rsvp { - base path-signaling-type; - description - "RSVP-TE signaling path setup."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; - } - - identity path-setup-sr { - base path-signaling-type; - description - "Segment-routing path setup."; - } - - identity path-scope-type { - description - "Base identity from which specific path scope types are - derived."; - } - - identity path-scope-segment { - base path-scope-type; - description - "Path scope segment."; - reference - "RFC 4873: GMPLS Segment Recovery"; - } - - identity path-scope-end-to-end { - base path-scope-type; - description - "Path scope end to end."; - reference - "RFC 4873: GMPLS Segment Recovery"; - } - - identity route-usage-type { - description - "Base identity for route usage."; - } - - identity route-include-object { - base route-usage-type; - description - "'Include route' object."; - } - - identity route-exclude-object { - base route-usage-type; - description - "'Exclude route' object."; - reference - "RFC 4874: Exclude Routes - Extension to Resource ReserVation - Protocol-Traffic Engineering (RSVP-TE)"; - } - - identity route-exclude-srlg { - base route-usage-type; - description - "Excludes Shared Risk Link Groups (SRLGs)."; - reference - "RFC 4874: Exclude Routes - Extension to Resource ReserVation - Protocol-Traffic Engineering (RSVP-TE)"; - } - - identity path-metric-optimization-type { - description - "Base identity used to define the path metric optimization - types."; - } - - identity link-path-metric-type { - description - "Base identity used to define the link and the path metric - types. - - The unit of the path metric value is interpreted in the - context of the path metric type and the derived identities - SHOULD describe the unit of the path metric types they - define."; - } - - identity link-metric-type { - base link-path-metric-type; - description - "Base identity for the link metric types."; - } - - identity link-metric-te { - base link-metric-type; - description - "Traffic Engineering (TE) Link Metric."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2, Section 2.5.5 - RFC 5305: IS-IS Extensions for Traffic Engineering, - Section 3.7"; - } - - identity link-metric-igp { - base link-metric-type; - description - "Interior Gateway Protocol (IGP) Link Metric."; - reference - "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric - as a second MPLS Traffic Engineering (TE) - Metric"; - } - - identity link-metric-delay-average { - base link-metric-type; - description - "Unidirectional Link Delay, measured in units of - microseconds."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions, Section 4.1 - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions, Section 4.1"; - } - - identity link-metric-delay-minimum { - base link-metric-type; - description - "Minimum unidirectional Link Delay, measured in units of - microseconds."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions, Section 4.2 - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions, Section 4.2"; - } - - identity link-metric-delay-maximum { - base link-metric-type; - description - "Maximum unidirectional Link Delay, measured in units of - microseconds."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions, Section 4.2 - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions, Section 4.2"; - } - - identity link-metric-residual-bandwidth { - base link-metric-type; - description - "Unidirectional Residual Bandwidth, measured in units of - bytes per second. - - It is defined to be Maximum Bandwidth minus the bandwidth - currently allocated to LSPs."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric - Extensions, Section 4.5 - RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions, Section 4.5"; - } - - identity path-metric-type { - base link-path-metric-type; - base path-metric-optimization-type; - description - "Base identity for the path metric types."; - } - - identity path-metric-te { - base path-metric-type; - description - "Traffic Engineering (TE) Path Metric."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP), Section 7.8"; - } - - identity path-metric-igp { - base path-metric-type; - description - "Interior Gateway Protocol (IGP) Path Metric."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP), section 7.8"; - } - - identity path-metric-hop { - base path-metric-type; - description - "Hop Count Path Metric."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP), Section 7.8"; - } - - identity path-metric-delay-average { - base path-metric-type; - description - "The Path Delay Metric, measured in units of - microseconds."; - reference - "RFC 8233: Extensions to the Path Computation Element - Communication Protocol (PCEP) to Compute - Service-Aware Label Switched Paths (LSPs), - Section 3.1.1"; - } - - identity path-metric-delay-minimum { - base path-metric-type; - description - "The Path Min Delay Metric, measured in units of - microseconds."; - reference - "I-D.ietf-pce-sid-algo: Carrying SR-Algorithm information - in PCE-based Networks, - draft-ietf-pce-sid-algo-14, - Sections 3.5.1 and 3.5.2"; - } - - identity path-metric-residual-bandwidth { - base path-metric-type; - description - "The Path Residual Bandwidth, defined as the minimum Link - Residual Bandwidth all the links along the path. - - The Path Residual Bandwidth can be seen as the path - metric associated with the Maximum residual Bandwidth Path - (MBP) objective function."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity path-metric-optimize-includes { - base path-metric-optimization-type; - description - "A metric that optimizes the number of included resources - specified in a set."; - } - - identity path-metric-optimize-excludes { - base path-metric-optimization-type; - description - "A metric that optimizes to a maximum the number of excluded - resources specified in a set."; - } - - identity path-tiebreaker-type { - description - "Base identity for the path tiebreaker type."; - } - - identity path-tiebreaker-minfill { - base path-tiebreaker-type; - description - "Min-Fill LSP path placement: selects the path with the most - available bandwidth (load balance LSPs over more links)."; - } - - identity path-tiebreaker-maxfill { - base path-tiebreaker-type; - description - "Max-Fill LSP path placement: selects the path with the least - available bandwidth (packing more LSPs over few links)."; - } - - identity path-tiebreaker-random { - base path-tiebreaker-type; - description - "Random LSP path placement."; - } - - identity resource-affinities-type { - description - "Base identity for resource class affinities."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 2702: Requirements for Traffic Engineering Over MPLS"; - } - - identity resource-aff-include-all { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel, all of which must be present for a link - to be acceptable."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 2702: Requirements for Traffic Engineering Over MPLS"; - } - - identity resource-aff-include-any { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel, any of which must be present for a link - to be acceptable."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 2702: Requirements for Traffic Engineering Over MPLS"; - } - - identity resource-aff-exclude-any { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel, any of which renders a link unacceptable."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 2702: Requirements for Traffic Engineering Over MPLS"; - } - - identity te-optimization-criterion { - description - "Base identity for the TE optimization criteria."; - reference - "RFC 9522: Overview and Principles of Internet Traffic - Engineering"; - } - - identity not-optimized { - base te-optimization-criterion; - description - "Optimization is not applied."; - } - - identity cost { - base te-optimization-criterion; - description - "Optimized on cost."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity delay { - base te-optimization-criterion; - description - "Optimized on delay."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity path-computation-srlg-type { - description - "Base identity for Shared Risk Link Group (SRLG) path - computation."; - } - - identity srlg-ignore { - base path-computation-srlg-type; - description - "Ignores Shared Risk Link Groups (SRLGs) in the path - computation."; - } - - identity srlg-strict { - base path-computation-srlg-type; - description - "Includes a strict Shared Risk Link Group (SRLG) check in - the path computation."; - } - - identity srlg-preferred { - base path-computation-srlg-type; - description - "Includes a preferred Shared Risk Link Group (SRLG) check in - the path computation."; - } - - identity srlg-weighted { - base path-computation-srlg-type; - description - "Includes a weighted Shared Risk Link Group (SRLG) check in - the path computation."; - } - - identity path-computation-error-reason { - description - "Base identity for path computation error reasons."; - } - - identity path-computation-error-path-not-found { - base path-computation-error-reason; - description - "Path computation has failed because of an unspecified - reason."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP), Section 7.5"; - } - - identity path-computation-error-no-topology { - base path-computation-error-reason; - description - "Path computation has failed because there is no topology - with the provided topology-identifier."; - } - - identity path-computation-error-no-dependent-server { - base path-computation-error-reason; - description - "Path computation has failed because one or more dependent - path computation servers are unavailable. - - The dependent path computation server could be - a Backward-Recursive Path Computation (BRPC) downstream - PCE or a child PCE."; - reference - "RFC 5441: A Backward-Recursive PCE-Based Computation (BRPC) - Procedure to Compute Shortest Constrained - Inter-Domain Traffic Engineering Label Switched - Paths - RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture"; - } - - identity path-computation-error-pce-unavailable { - base path-computation-error-reason; - description - "Path computation has failed because PCE is not available. - - It corresponds to bit 31 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP) - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-no-inclusion-hop { - base path-computation-error-reason; - description - "Path computation has failed because there is no - node or link provided by one or more inclusion hops."; - } - - identity path-computation-error-destination-unknown-in-domain { - base path-computation-error-reason; - description - "Path computation has failed because the destination node is - unknown in indicated destination domain. - - It corresponds to bit 19 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-no-resource { - base path-computation-error-reason; - description - "Path computation has failed because there is no - available resource in one or more domains. - - It corresponds to bit 20 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-child-pce-unresponsive { - base path-computation-error-no-dependent-server; - description - "Path computation has failed because child PCE is not - responsive. - - It corresponds to bit 21 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-destination-domain-unknown { - base path-computation-error-reason; - description - "Path computation has failed because the destination domain - was unknown. - - It corresponds to bit 22 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-p2mp { - base path-computation-error-reason; - description - "Path computation has failed because of P2MP reachability - problem. - - It corresponds to bit 24 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 8306: Extensions to the Path Computation Element - Communication Protocol (PCEP) for - Point-to-Multipoint Traffic Engineering Label - Switched Paths - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-no-gco-migration { - base path-computation-error-reason; - description - "Path computation has failed because of no Global Concurrent - Optimization (GCO) migration path found. - - It corresponds to bit 26 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 5557: Path Computation Element Communication Protocol - (PCEP) Requirements and Protocol Extensions in - Support of Global Concurrent Optimization - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-no-gco-solution { - base path-computation-error-reason; - description - "Path computation has failed because of no GCO solution - found. - - It corresponds to bit 25 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 5557: Path Computation Element Communication Protocol - (PCEP) Requirements and Protocol Extensions in - Support of Global Concurrent Optimization - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-pks-expansion { - base path-computation-error-reason; - description - "Path computation has failed because of Path-Key Subobject - (PKS) expansion failure. - - It corresponds to bit 27 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 5520: Preserving Topology Confidentiality in - Inter-Domain Path Computation Using a - Path-Key-Based Mechanism - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-brpc-chain-unavailable { - base path-computation-error-no-dependent-server; - description - "Path computation has failed because PCE BRPC chain - unavailable. - - It corresponds to bit 28 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 5441: A Backward-Recursive PCE-Based Computation (BRPC) - Procedure to Compute Shortest Constrained - Inter-Domain Traffic Engineering Label Switched - Paths - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-source-unknown { - base path-computation-error-reason; - description - "Path computation has failed because source node is - unknown. - - It corresponds to bit 29 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP); - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity path-computation-error-destination-unknown { - base path-computation-error-reason; - description - "Path computation has failed because destination node is - unknown. - - It corresponds to bit 30 of the Flags field of the - NO-PATH-VECTOR TLV."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP); - - https://www.iana.org/assignments/pcep - /pcep.xhtml#no-path-vector-tlv"; - } - - identity protocol-origin-type { - description - "Base identity for protocol origin type."; - } - - identity protocol-origin-api { - base protocol-origin-type; - description - "Protocol origin is via Application Programming Interface - (API)."; - } - - identity protocol-origin-pcep { - base protocol-origin-type; - description - "Protocol origin is Path Computation Engine Protocol - (PCEP)."; - reference - "RFC 5440: Path Computation Element (PCE) Communication - Protocol (PCEP)"; - } - - identity protocol-origin-bgp { - base protocol-origin-type; - description - "Protocol origin is Border Gateway Protocol (BGP)."; - reference - "RFC 9012: The BGP Tunnel Encapsulation Attribute"; - } - - identity svec-objective-function-type { - description - "Base identity for SVEC objective function type."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol (PCEP)"; - } - - identity svec-of-minimize-agg-bandwidth-consumption { - base svec-objective-function-type; - description - "Objective function for minimizing aggregate bandwidth - consumption (MBC)."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity svec-of-minimize-load-most-loaded-link { - base svec-objective-function-type; - description - "Objective function for minimizing the load on the link that - is carrying the highest load (MLL)."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity svec-of-minimize-cost-path-set { - base svec-objective-function-type; - description - "Objective function for minimizing the cost on a path set - (MCC)."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity svec-of-minimize-common-transit-domain { - base svec-objective-function-type; - description - "Objective function for minimizing the number of common - transit domains (MCTD)."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture."; - } - - identity svec-of-minimize-shared-link { - base svec-objective-function-type; - description - "Objective function for minimizing the number of shared - links (MSL)."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture."; - } - - identity svec-of-minimize-shared-srlg { - base svec-objective-function-type; - description - "Objective function for minimizing the number of shared - Shared Risk Link Groups (SRLG) (MSS)."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture."; - } - - identity svec-of-minimize-shared-nodes { - base svec-objective-function-type; - description - "Objective function for minimizing the number of shared - nodes (MSN)."; - reference - "RFC 8685: Path Computation Element Communication Protocol - (PCEP) Extensions for the Hierarchical Path - Computation Element (H-PCE) Architecture."; - } - - identity svec-metric-type { - description - "Base identity for SVEC metric type."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol (PCEP)"; - } - - identity svec-metric-cumulative-te { - base svec-metric-type; - description - "Cumulative TE cost."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity svec-metric-cumulative-igp { - base svec-metric-type; - description - "Cumulative IGP cost."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity svec-metric-cumulative-hop { - base svec-metric-type; - description - "Cumulative Hop path metric."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity svec-metric-aggregate-bandwidth-consumption { - base svec-metric-type; - description - "Aggregate bandwidth consumption."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - identity svec-metric-load-of-the-most-loaded-link { - base svec-metric-type; - description - "Load of the most loaded link."; - reference - "RFC 5541: Encoding of Objective Functions in the Path - Computation Element Communication Protocol - (PCEP)"; - } - - /* - * Typedefs - */ - - typedef admin-group { - type yang:hex-string { - /* 01:02:03:04 */ - length "1..11"; - } - description - "Administrative group / resource class / color representation - in 'hex-string' type. - - The most significant byte in the hex-string is the farthest - to the left in the byte sequence. - - Leading zero bytes in the configured value may be omitted - for brevity."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2 - RFC 5305: IS-IS Extensions for Traffic Engineering - RFC 7308: Extended Administrative Groups in MPLS Traffic - Engineering (MPLS-TE)"; - } - - typedef admin-groups { - type union { - type admin-group; - type extended-admin-group; - } - description - "Derived types for TE administrative groups."; - } - - typedef extended-admin-group { - type yang:hex-string; - description - "Extended administrative group / resource class / color - representation in 'hex-string' type. - - The most significant byte in the hex-string is the farthest - to the left in the byte sequence. - - Leading zero bytes in the configured value may be omitted - for brevity."; - reference - "RFC 7308: Extended Administrative Groups in MPLS Traffic - Engineering (MPLS-TE)"; - } - - typedef path-attribute-flags { - type union { - type identityref { - base session-attributes-flags; - } - type identityref { - base lsp-attributes-flags; - } - } - description - "Path attributes flags type."; - } - - typedef performance-metrics-normality { - type enumeration { - enum unknown { - value 0; - description - "Unknown."; - } - enum normal { - value 1; - description - "Normal. - - Indicates that the anomalous bit is not set."; - } - enum abnormal { - value 2; - description - "Abnormal. - - Indicates that the anomalous bit is set."; - } - } - description - "Indicates whether a performance metric is normal (anomalous - bit not set), abnormal (anomalous bit set), or unknown."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions"; - } - - typedef srlg { - type uint32; - description - "Shared Risk Link Group (SRLG) type."; - reference - "RFC 4203: OSPF Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS) - RFC 5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)"; - } - - typedef te-common-status { - type enumeration { - enum up { - description - "Enabled."; - } - enum down { - description - "Disabled."; - } - enum testing { - description - "In some test mode."; - } - enum preparing-maintenance { - description - "The resource is disabled in the control plane to prepare - for a graceful shutdown for maintenance purposes."; - reference - "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS - Traffic Engineering Networks"; - } - enum maintenance { - description - "The resource is disabled in the data plane for maintenance - purposes."; - } - enum unknown { - description - "Status is unknown."; - } - } - description - "Defines a type representing the common states of a TE - resource."; - } - - typedef te-bandwidth { - type string { - pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' - + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' - + '[pP](\+)?(12[0-7]|' - + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' - + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' - + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?' - + '[pP](\+)?(12[0-7]|' - + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; - } - description - "This is the generic bandwidth type. - - It is a string containing a list of numbers separated by - commas, where each of these numbers can be non-negative - decimal, hex integer, or hex float: - - (dec | hex | float)[*(','(dec | hex | float))] - - For the packet-switching type, the string encoding may follow - the type 'bandwidth-ieee-float32' as defined in RFC 8294 - (e.g., 0x1p10), where the units are in bytes per second. - - Canonically, the string is represented as all lowercase and in - hex, where the prefix '0x' precedes the hex number."; - reference - "RFC 8294: Common YANG Data Types for the Routing Area - ITU-T G.709: Interfaces for the optical transport network - - Edition 6.0 (06/2020)"; - } - - typedef te-ds-class { - type uint8 { - range "0..7"; - } - description - "The Differentiated Services Class-Type of traffic."; - reference - "RFC 4124: Protocol Extensions for Support of Diffserv-aware - MPLS Traffic Engineering, Section 4.3.1"; - } - - typedef te-global-id { - type uint32; - description - "An identifier to uniquely identify an operator, which can be - either a provider or a client. - - The definition of this type is taken from RFCs 6370 and 5003. - - This attribute type is used solely to provide a globally - unique context for TE topologies."; - reference - "RFC 5003: Attachment Individual Identifier (AII) Types for - Aggregation - RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers"; - } - - typedef te-hop-type { - type enumeration { - enum loose { - description - "A loose hop in an explicit path."; - } - enum strict { - description - "A strict hop in an explicit path."; - } - } - description - "Enumerated type for specifying loose or strict paths."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 4.3.3"; - } - - typedef te-link-access-type { - type enumeration { - enum point-to-point { - description - "The link is point-to-point."; - } - enum multi-access { - description - "The link is multi-access, including broadcast and NBMA."; - } - } - description - "Defines a type representing the access type of a TE link."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2"; - } - - typedef te-label-direction { - type enumeration { - enum forward { - description - "Label allocated for the forward LSP direction."; - } - enum reverse { - description - "Label allocated for the reverse LSP direction."; - } - } - description - "Enumerated type for specifying the forward or reverse - label."; - } - - typedef te-link-direction { - type enumeration { - enum incoming { - description - "The explicit route represents an incoming link on - a node."; - } - enum outgoing { - description - "The explicit route represents an outgoing link on - a node."; - } - } - description - "Enumerated type for specifying the direction of a link on - a node."; - } - - typedef te-metric { - type uint32; - description - "Traffic Engineering (TE) metric."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2, Section 2.5.5 - RFC 5305: IS-IS Extensions for Traffic Engineering, - Section 3.7"; - } - - typedef te-node-id { - type union { - type yang:dotted-quad; - type inet:ipv6-address-no-zone; - } - description - "A type representing the identifier for a node in a TE - topology. - - The identifier is represented either as 4 octets in - dotted-quad notation, or as 16 octets in full, mixed, - shortened, or shortened-mixed IPv6 address notation. - - This attribute MAY be mapped to the Router Address TLV - described in Section 2.4.1 of RFC 3630, the TE Router ID - described in Section 3 of RFC 6827, the Traffic Engineering - Router ID TLV described in Section 4.3 of RFC 5305, the TE - Router ID TLV described in Section 3.2.1 of RFC 6119, or the - IPv6 TE Router ID TLV described in Section 4.1 of RFC 6119. - - The reachability of such a TE node MAY be achieved by a - mechanism such as that described in Section 6.2 of RFC 6827."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2, Section 2.4.1 - RFC 5305: IS-IS Extensions for Traffic Engineering, - Section 4.3 - RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1 - RFC 6827: Automatically Switched Optical Network (ASON) - Routing for OSPFv2 Protocols, Section 3"; - } - - typedef te-oper-status { - type te-common-status; - description - "Defines a type representing the operational status of - a TE resource."; - } - - typedef te-admin-status { - type te-common-status; - description - "Defines a type representing the administrative status of - a TE resource."; - } - - typedef te-path-disjointness { - type bits { - bit node { - position 0; - description - "Node disjoint."; - } - bit link { - position 1; - description - "Link disjoint."; - } - bit srlg { - position 2; - description - "Shared Risk Link Group (SRLG) disjoint."; - } - } - description - "Type of the resource disjointness for a TE tunnel path."; - reference - "RFC 4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - - typedef te-recovery-status { - type enumeration { - enum normal { - description - "Both the recovery span and the working span are fully - allocated and active, data traffic is being - transported over (or selected from) the working - span, and no trigger events are reported."; - } - enum recovery-started { - description - "The recovery action has been started but not completed."; - } - enum recovery-succeeded { - description - "The recovery action has succeeded. - - The working span has reported a failure/degrade condition, - and the user traffic is being transported (or selected) - on the recovery span."; - } - enum recovery-failed { - description - "The recovery action has failed."; - } - enum reversion-started { - description - "The reversion has started."; - } - enum reversion-succeeded { - description - "The reversion action has succeeded."; - } - enum reversion-failed { - description - "The reversion has failed."; - } - enum recovery-unavailable { - description - "The recovery is unavailable, as a result of either an - operator's lockout command or a failure condition - detected on the recovery span."; - } - enum recovery-admin { - description - "The operator has issued a command to switch the user - traffic to the recovery span."; - } - enum wait-to-restore { - description - "The recovery domain is recovering from a failure/degrade - condition on the working span that is being controlled by - the Wait-to-Restore (WTR) timer."; - } - } - description - "Defines the status of a recovery action."; - reference - "RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection - RFC 4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - - typedef te-template-name { - type string { - pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; - } - description - "A type for the name of a TE node template or TE link - template."; - } - - typedef te-topology-event-type { - type enumeration { - enum add { - value 0; - description - "A TE node or TE link has been added."; - } - enum remove { - value 1; - description - "A TE node or TE link has been removed."; - } - enum update { - value 2; - description - "A TE node or TE link has been updated."; - } - } - description - "TE event type for notifications."; - } - - typedef te-topology-id { - type union { - type string { - length "0"; - // empty string - } - type string { - pattern '([a-zA-Z0-9\-_.]+:)*' - + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; - } - } - description - "An identifier for a topology. - - It is optional to have one or more prefixes at the beginning, - separated by colons. - - The prefixes can be 'network-types' as defined in the - 'ietf-network' module in RFC 8345, to help the user better - understand the topology before further inquiry is made."; - reference - "RFC 8345: A YANG Data Model for Network Topologies"; - } - - typedef te-tp-id { - type union { - type uint32; - // Unnumbered - type inet:ip-address; - // IPv4 or IPv6 address - } - description - "An identifier for a TE link endpoint on a node. - - This attribute is mapped to a local or remote link identifier - as defined in RFCs 3630 and 5305."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2 - RFC 5305: IS-IS Extensions for Traffic Engineering"; - } - - typedef path-type { - type enumeration { - enum primary-path { - description - "Indicates that the TE path is a primary path."; - } - enum secondary-path { - description - "Indicates that the TE path is a secondary path."; - } - enum primary-reverse-path { - description - "Indicates that the TE path is a primary reverse path."; - } - enum secondary-reverse-path { - description - "Indicates that the TE path is a secondary reverse path."; - } - } - description - "The type of TE path, indicating whether a path is a primary, - or a reverse primary, or a secondary, or a reverse secondary - path."; - } - - /* - * TE bandwidth groupings - */ - - grouping te-bandwidth { - description - "This grouping defines the generic TE bandwidth. - - For some known data-plane technologies, specific modeling - structures are specified. - - The string-encoded 'te-bandwidth' type is used for - unspecified technologies. - - The modeling structure can be augmented later for other - technologies."; - container te-bandwidth { - description - "Container that specifies TE bandwidth. - - The choices can be augmented for specific data-plane - technologies."; - choice technology { - default "generic"; - description - "Data-plane technology type."; - case generic { - leaf generic { - type te-bandwidth; - description - "Bandwidth specified in a generic format."; - } - } - } - } - } - - /* - * TE label groupings - */ - - grouping te-label { - description - "This grouping defines the generic TE label. - - The modeling structure can be augmented for each technology. - - For unspecified technologies, 'rt-types:generalized-label' - is used."; - container te-label { - description - "Container that specifies the TE label. - - The choices can be augmented for specific data-plane - technologies."; - choice technology { - default "generic"; - description - "Data-plane technology type."; - case generic { - leaf generic { - type rt-types:generalized-label; - description - "TE label specified in a generic format."; - } - } - } - leaf direction { - type te-label-direction; - default "forward"; - description - "Label direction."; - } - } - } - - grouping te-topology-identifier { - description - "Augmentation for a TE topology."; - container te-topology-identifier { - description - "TE topology identifier container."; - leaf provider-id { - type te-global-id; - default "0"; - description - "An identifier to uniquely identify a provider. - If omitted, it assumes that the topology provider ID - value = 0 (the default)."; - } - leaf client-id { - type te-global-id; - default "0"; - description - "An identifier to uniquely identify a client. - If omitted, it assumes that the topology client ID - value = 0 (the default)."; - } - leaf topology-id { - type te-topology-id; - default ""; - description - "When the datastore contains several topologies, - 'topology-id' distinguishes between them. - - If omitted, the default (empty) string for this leaf is - assumed."; - } - } - } - - /* - * TE performance metrics groupings - */ - - grouping performance-metrics-one-way-delay-loss { - description - "Performance Metrics (PM) information in real time that can - be applicable to links or connections. - - PM defined in this grouping are applicable to generic TE PM - as well as packet TE PM."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; - leaf one-way-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - description - "One-way delay or latency."; - } - leaf one-way-delay-normality { - type te-types:performance-metrics-normality; - description - "One-way delay normality."; - } - } - - grouping performance-metrics-two-way-delay-loss { - description - "Performance Metrics (PM) information in real time that can be - applicable to links or connections. - - PM defined in this grouping are applicable to generic TE PM - as well as packet TE PM."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; - leaf two-way-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - description - "Two-way delay or latency."; - } - leaf two-way-delay-normality { - type te-types:performance-metrics-normality; - description - "Two-way delay normality."; - } - } - - grouping performance-metrics-one-way-bandwidth { - description - "Performance Metrics (PM) information in real time that can be - applicable to links. - - PM defined in this grouping are applicable to generic TE PM - as well as packet TE PM."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; - leaf one-way-residual-bandwidth { - type rt-types:bandwidth-ieee-float32; - units "bytes per second"; - default "0x0p0"; - description - "Residual bandwidth that subtracts tunnel reservations from - Maximum Bandwidth (or link capacity) (RFC 3630) and - provides an aggregated remainder across QoS classes."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2"; - } - leaf one-way-residual-bandwidth-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Residual bandwidth normality."; - } - leaf one-way-available-bandwidth { - type rt-types:bandwidth-ieee-float32; - units "bytes per second"; - default "0x0p0"; - description - "Available bandwidth that is defined to be residual - bandwidth minus the measured bandwidth used for the - actual forwarding of non-RSVP-TE LSP packets. - - For a bundled link, available bandwidth is defined to be - the sum of the component link available bandwidths."; - } - leaf one-way-available-bandwidth-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Available bandwidth normality."; - } - leaf one-way-utilized-bandwidth { - type rt-types:bandwidth-ieee-float32; - units "bytes per second"; - default "0x0p0"; - description - "Bandwidth utilization that represents the actual - utilization of the link (i.e., as measured in the router). - For a bundled link, bandwidth utilization is defined to - be the sum of the component link bandwidth utilizations."; - } - leaf one-way-utilized-bandwidth-normality { - type te-types:performance-metrics-normality; - default "normal"; - description - "Bandwidth utilization normality."; - } - } - - grouping one-way-performance-metrics { - description - "One-way Performance Metrics (PM) throttle grouping."; - leaf one-way-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "One-way delay or latency."; - } - leaf one-way-residual-bandwidth { - type rt-types:bandwidth-ieee-float32; - units "bytes per second"; - default "0x0p0"; - description - "Residual bandwidth that subtracts tunnel reservations from - Maximum Bandwidth (or link capacity) (RFC 3630) and - provides an aggregated remainder across QoS classes."; - reference - "RFC 3630: Traffic Engineering (TE) Extensions to OSPF - Version 2"; - } - leaf one-way-available-bandwidth { - type rt-types:bandwidth-ieee-float32; - units "bytes per second"; - default "0x0p0"; - description - "Available bandwidth that is defined to be residual - bandwidth minus the measured bandwidth used for the - actual forwarding of non-RSVP-TE LSP packets. - - For a bundled link, available bandwidth is defined to be - the sum of the component link available bandwidths."; - } - leaf one-way-utilized-bandwidth { - type rt-types:bandwidth-ieee-float32; - units "bytes per second"; - default "0x0p0"; - description - "Bandwidth utilization that represents the actual - utilization of the link (i.e., as measured in the router). - For a bundled link, bandwidth utilization is defined to - be the sum of the component link bandwidth utilizations."; - } - } - - grouping two-way-performance-metrics { - description - "Two-way Performance Metrics (PM) throttle grouping."; - leaf two-way-delay { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Two-way delay or latency."; - } - } - - grouping performance-metrics-thresholds { - description - "Grouping for configurable thresholds for measured - attributes."; - uses one-way-performance-metrics; - uses two-way-performance-metrics; - } - - grouping performance-metrics-attributes { - description - "Contains Performance Metrics (PM) attributes."; - container performance-metrics-one-way { - description - "One-way link performance information in real time."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; - uses performance-metrics-one-way-delay-loss; - uses performance-metrics-one-way-bandwidth; - } - container performance-metrics-two-way { - description - "Two-way link performance information in real time."; - reference - "RFC 6374: Packet Loss and Delay Measurement for MPLS - Networks"; - uses performance-metrics-two-way-delay-loss; - } - } - - grouping performance-metrics-throttle-container { - description - "Controls Performance Metrics (PM) throttling."; - container throttle { - must 'suppression-interval >= measure-interval' { - error-message "'suppression-interval' cannot be less than " - + "'measure-interval'."; - description - "Constraint on 'suppression-interval' and - 'measure-interval'."; - } - description - "Link performance information in real time."; - reference - "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions - RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions - RFC 7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; - leaf one-way-delay-offset { - type uint32 { - range "0..16777215"; - } - units "microseconds"; - default "0"; - description - "Offset value to be added to the measured delay value."; - } - leaf measure-interval { - type uint32; - units "seconds"; - default "30"; - description - "Interval to measure the extended metric values."; - } - leaf advertisement-interval { - type uint32; - units "seconds"; - default "0"; - description - "Interval to advertise the extended metric values."; - } - leaf suppression-interval { - type uint32 { - range "1..max"; - } - units "seconds"; - default "120"; - description - "Interval to suppress advertisement of the extended metric - values."; - reference - "RFC 8570: IS-IS Traffic Engineering (TE) Metric - Extensions, Section 6"; - } - container threshold-out { - description - "If the measured parameter falls outside an upper bound - for all but the minimum-delay metric (or a lower bound - for the minimum-delay metric only) and the advertised - value is not already outside that bound, an 'anomalous' - announcement (anomalous bit set) will be triggered."; - uses performance-metrics-thresholds; - } - container threshold-in { - description - "If the measured parameter falls inside an upper bound - for all but the minimum-delay metric (or a lower bound - for the minimum-delay metric only) and the advertised - value is not already inside that bound, a 'normal' - announcement (anomalous bit cleared) will be triggered."; - uses performance-metrics-thresholds; - } - container threshold-accelerated-advertisement { - description - "When the difference between the last advertised value and - the current measured value exceeds this threshold, an - 'anomalous' announcement (anomalous bit set) will be - triggered."; - uses performance-metrics-thresholds; - } - } - } - - /* - * TE tunnel generic groupings - */ - - grouping explicit-route-hop { - description - "The explicit route entry grouping."; - choice type { - description - "The explicit route entry type."; - case numbered-node-hop { - container numbered-node-hop { - must 'node-id-uri or node-id' { - description - "At least one node identifier needs to be present."; - } - description - "Numbered node route hop."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 4.3, EXPLICIT_ROUTE in RSVP-TE - RFC 3477: Signalling Unnumbered Links in Resource - ReSerVation Protocol - Traffic Engineering - (RSVP-TE)"; - leaf node-id-uri { - type nw:node-id; - description - "The identifier of a node in the topology."; - } - leaf node-id { - type te-node-id; - description - "The identifier of a node in the TE topology."; - } - leaf hop-type { - type te-hop-type; - default "strict"; - description - "Strict or loose hop."; - } - } - } - case numbered-link-hop { - container numbered-link-hop { - description - "Numbered link explicit route hop."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 4.3, EXPLICIT_ROUTE in RSVP-TE - RFC 3477: Signalling Unnumbered Links in Resource - ReSerVation Protocol - Traffic Engineering - (RSVP-TE)"; - leaf link-tp-id { - type te-tp-id; - mandatory true; - description - "TE Link Termination Point (LTP) identifier."; - } - leaf hop-type { - type te-hop-type; - default "strict"; - description - "Strict or loose hop."; - } - leaf direction { - type te-link-direction; - default "outgoing"; - description - "Link route object direction."; - } - } - } - case unnumbered-link-hop { - container unnumbered-link-hop { - must '(link-tp-id-uri or link-tp-id) and ' - + '(node-id-uri or node-id)' { - description - "At least one node identifier and at least one Link - Termination Point (LTP) identifier need to be - present."; - } - description - "Unnumbered link explicit route hop."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels, - Section 4.3, EXPLICIT_ROUTE in RSVP-TE - RFC 3477: Signalling Unnumbered Links in Resource - ReSerVation Protocol - Traffic Engineering - (RSVP-TE)"; - leaf link-tp-id-uri { - type nt:tp-id; - description - "Link Termination Point (LTP) identifier."; - } - leaf link-tp-id { - type te-tp-id; - description - "TE LTP identifier. - - The combination of the TE link ID and the TE node ID - is used to identify an unnumbered TE link."; - } - leaf node-id-uri { - type nw:node-id; - description - "The identifier of a node in the topology."; - } - leaf node-id { - type te-node-id; - description - "The identifier of a node in the TE topology."; - } - leaf hop-type { - type te-hop-type; - default "strict"; - description - "Strict or loose hop."; - } - leaf direction { - type te-link-direction; - default "outgoing"; - description - "Link route object direction."; - } - } - } - case as-number { - container as-number-hop { - description - "AS explicit route hop."; - leaf as-number { - type inet:as-number; - mandatory true; - description - "The Autonomous System (AS) number."; - } - leaf hop-type { - type te-hop-type; - default "strict"; - description - "Strict or loose hop."; - } - } - } - case label { - description - "The label explicit route hop type."; - container label-hop { - description - "Label hop type."; - uses te-label; - } - } - } - } - - grouping explicit-route-hop-with-srlg { - description - "Augments the explicit route entry grouping with Shared Risk - Link Group (SRLG) hop type."; - uses explicit-route-hop { - augment "type" { - description - "Augmentation for a generic explicit route for Shared - Risk Link Group (SRLG) inclusion or exclusion."; - case srlg { - description - "An Shared Risk Link Group (SRLG) value to be - included or excluded."; - container srlg { - description - "Shared Risk Link Group (SRLG) container."; - leaf srlg { - type uint32; - description - "Shared Risk Link Group (SRLG) value."; - } - } - } - } - } - } - - grouping record-route-state { - description - "The Record Route grouping."; - leaf index { - type uint32; - description - "Record Route hop index. - - The index is used to identify an entry in the list. - - The order of entries is defined by the user without relying - on key values."; - } - choice type { - description - "The Record Route entry type."; - case numbered-node-hop { - description - "Numbered node route hop."; - container numbered-node-hop { - must 'node-id-uri or node-id' { - description - "At least one node identifier need to be present."; - } - description - "Numbered node route hop container."; - leaf node-id-uri { - type nw:node-id; - description - "The identifier of a node in the topology."; - } - leaf node-id { - type te-node-id; - description - "The identifier of a node in the TE topology."; - } - leaf-list flags { - type path-attribute-flags; - description - "Path attributes flags."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP - Tunnels - RFC 4561: Definition of a Record Route Object (RRO) - Node-Id Sub-Object"; - } - } - } - case numbered-link-hop { - description - "Numbered link route hop."; - container numbered-link-hop { - description - "Numbered link route hop container."; - leaf link-tp-id { - type te-tp-id; - mandatory true; - description - "Numbered TE LTP identifier."; - } - leaf-list flags { - type path-attribute-flags; - description - "Path attributes flags."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP - Tunnels - RFC 4561: Definition of a Record Route Object (RRO) - Node-Id Sub-Object"; - } - } - } - case unnumbered-link-hop { - description - "Unnumbered link route hop."; - container unnumbered-link-hop { - must '(link-tp-id-uri or link-tp-id) and ' - + '(node-id-uri or node-id)' { - description - "At least one node identifier and at least one Link - Termination Point (LTP) identifier need to be - present."; - } - description - "Unnumbered link Record Route hop."; - reference - "RFC 3477: Signalling Unnumbered Links in Resource - ReSerVation Protocol - Traffic Engineering - (RSVP-TE)"; - leaf link-tp-id-uri { - type nt:tp-id; - description - "Link Termination Point (LTP) identifier."; - } - leaf link-tp-id { - type te-tp-id; - description - "TE LTP identifier. - - The combination of the TE link ID and the TE node ID - is used to identify an unnumbered TE link."; - } - leaf node-id-uri { - type nw:node-id; - description - "The identifier of a node in the topology."; - } - leaf node-id { - type te-node-id; - description - "The identifier of a node in the TE topology."; - } - leaf-list flags { - type path-attribute-flags; - description - "Path attributes flags."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP - Tunnels - RFC 4561: Definition of a Record Route Object (RRO) - Node-Id Sub-Object"; - } - } - } - case label { - description - "The label Record Route entry types."; - container label-hop { - description - "Label route hop type."; - uses te-label; - leaf-list flags { - type path-attribute-flags; - description - "Path attributes flags."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels - RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP - Tunnels - RFC 4561: Definition of a Record Route Object (RRO) - Node-Id Sub-Object"; - } - } - } - } - } - - grouping label-restriction-info { - description - "Label set item information."; - leaf restriction { - type enumeration { - enum inclusive { - description - "The label or label range is inclusive."; - } - enum exclusive { - description - "The label or label range is exclusive."; - } - } - default "inclusive"; - description - "Indicates whether the list item is inclusive or exclusive."; - } - leaf index { - type uint32; - description - "The index of the label restriction list entry."; - } - container label-start { - must "(not(../label-end/te-label/direction) and" - + " not(te-label/direction))" - + " or " - + "(../label-end/te-label/direction = te-label/direction)" - + " or " - + "(not(te-label/direction) and" - + " (../label-end/te-label/direction = 'forward'))" - + " or " - + "(not(../label-end/te-label/direction) and" - + " (te-label/direction = 'forward'))" { - error-message "'label-start' and 'label-end' must have the " - + "same direction."; - } - description - "This is the starting label if a label range is specified. - This is the label value if a single label is specified, - in which case the 'label-end' attribute is not set."; - uses te-label; - } - container label-end { - must "(not(../label-start/te-label/direction) and" - + " not(te-label/direction))" - + " or " - + "(../label-start/te-label/direction = te-label/direction)" - + " or " - + "(not(te-label/direction) and" - + " (../label-start/te-label/direction = 'forward'))" - + " or " - + "(not(../label-start/te-label/direction) and" - + " (te-label/direction = 'forward'))" { - error-message "'label-start' and 'label-end' must have the " - + "same direction."; - } - description - "This is the ending label if a label range is specified. - This attribute is not set if a single label is specified."; - uses te-label; - } - container label-step { - description - "The step increment between labels in the label range. - - The label start/end values MUST be consistent with the sign - of label step. - - For example: - 'label-start' < 'label-end' enforces 'label-step' > 0 - 'label-start' > 'label-end' enforces 'label-step' < 0."; - choice technology { - default "generic"; - description - "Data-plane technology type."; - case generic { - leaf generic { - type int32; - default "1"; - description - "Label range step."; - } - } - } - } - leaf range-bitmap { - type yang:hex-string; - description - "When there are gaps between 'label-start' and 'label-end', - this attribute is used to specify the positions - of the used labels. - - This is represented in big endian as 'hex-string'. - - In case the restriction is 'inclusive', the bit-position is - set if the corresponding mapped label is available. - In this case, if the range-bitmap is not present, all the - labels in the range are available. - - In case the restriction is 'exclusive', the bit-position is - set if the corresponding mapped label is not available. - In this case, if the range-bitmap is not present, all the - labels in the range are not available. - - The most significant byte in the hex-string is the farthest - to the left in the byte sequence. - - Leading zero bytes in the configured value may be omitted - for brevity. - - Each bit position in the 'range-bitmap' 'hex-string' maps - to a label in the range derived from 'label-start'. - - For example, assuming that 'label-start' = 16000 and - 'range-bitmap' = 0x01000001, then: - - bit position (0) is set, and the corresponding mapped - label from the range is 16000 + (0 * 'label-step') or - 16000 for default 'label-step' = 1. - - bit position (24) is set, and the corresponding mapped - label from the range is 16000 + (24 * 'label-step') or - 16024 for default 'label-step' = 1."; - } - } - - grouping label-set-info { - description - "Grouping for the list of label restrictions specifying what - labels may or may not be used."; - container label-restrictions { - description - "The label restrictions container."; - list label-restriction { - key "index"; - description - "The absence of the label restrictions container implies - that all labels are acceptable; otherwise, only restricted - labels are available."; - reference - "RFC 7579: General Network Element Constraint Encoding - for GMPLS-Controlled Networks"; - uses label-restriction-info; - } - } - } - - grouping optimization-metric-entry { - description - "Optimization metrics configuration grouping."; - leaf metric-type { - type identityref { - base path-metric-optimization-type; - } - description - "Identifies the 'metric-type' that the path computation - process uses for optimization."; - } - leaf weight { - type uint8; - default "1"; - description - "TE path metric normalization weight."; - } - container explicit-route-exclude-objects { - when "../metric-type = " - + "'te-types:path-metric-optimize-excludes'"; - description - "Container for the 'exclude route' object list."; - uses path-route-exclude-objects; - } - container explicit-route-include-objects { - when "../metric-type = " - + "'te-types:path-metric-optimize-includes'"; - description - "Container for the 'include route' object list."; - uses path-route-include-objects; - } - } - - grouping common-constraints { - description - "Common constraints grouping that can be set on - a constraint set or directly on the tunnel."; - uses te-bandwidth { - description - "A requested bandwidth to use for path computation."; - } - leaf link-protection { - type identityref { - base link-protection-type; - } - default "te-types:link-protection-unprotected"; - description - "Link protection type required for the links included - in the computed path."; - reference - "RFC 4202: Routing Extensions in Support of - Generalized Multi-Protocol Label Switching - (GMPLS)"; - } - leaf setup-priority { - type uint8 { - range "0..7"; - } - default "7"; - description - "TE LSP requested setup priority."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; - } - leaf hold-priority { - type uint8 { - range "0..7"; - } - default "7"; - description - "TE LSP requested hold priority."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels"; - } - leaf signaling-type { - type identityref { - base path-signaling-type; - } - default "te-types:path-setup-rsvp"; - description - "TE tunnel path signaling type."; - } - } - - grouping tunnel-constraints { - description - "Tunnel constraints grouping that can be set on - a constraint set or directly on the tunnel."; - leaf network-id { - type nw:network-id; - description - "The network topology identifier."; - } - uses te-topology-identifier; - uses common-constraints; - } - - grouping path-constraints-route-objects { - description - "List of route entries to be included or excluded when - performing the path computation."; - container explicit-route-objects { - description - "Container for the explicit route object lists."; - list route-object-exclude-always { - key "index"; - ordered-by user; - description - "List of route objects to always exclude from the path - computation."; - leaf index { - type uint32; - description - "Explicit Route Object index. - - The index is used to identify an entry in the list. - - The order of entries is defined by the user without - relying on key values."; - } - uses explicit-route-hop; - } - list route-object-include-exclude { - key "index"; - ordered-by user; - description - "List of route objects to include or exclude in the path - computation."; - leaf explicit-route-usage { - type identityref { - base route-usage-type; - } - default "te-types:route-include-object"; - description - "Indicates whether to include or exclude the - route object. - - The default is to include it."; - } - leaf index { - type uint32; - description - "Route object include-exclude index. - - The index is used to identify an entry in the list. - - The order of entries is defined by the user without - relying on key values."; - } - uses explicit-route-hop-with-srlg; - } - } - } - - grouping path-route-include-objects { - description - "List of route objects to be included when performing - the path computation."; - list route-object-include-object { - key "index"; - ordered-by user; - description - "List of Explicit Route Objects to be included in the - path computation."; - leaf index { - type uint32; - description - "Route object entry index. - - The index is used to identify an entry in the list. - - The order of entries is defined by the user without - relying on key values."; - } - uses explicit-route-hop; - } - } - - grouping path-route-exclude-objects { - description - "List of route objects to be excluded when performing - the path computation."; - list route-object-exclude-object { - key "index"; - ordered-by user; - description - "List of Explicit Route Objects to be excluded in the - path computation."; - leaf index { - type uint32; - description - "Route object entry index. - - The index is used to identify an entry in the list. - - The order of entries is defined by the user without - relying on key values."; - } - uses explicit-route-hop-with-srlg; - } - } - - grouping generic-path-metric-bounds { - description - "TE path metric bounds grouping."; - container path-metric-bounds { - description - "Top-level container for the list of path metric bounds."; - list path-metric-bound { - key "metric-type"; - description - "List of path metric bounds, which can apply to link and - path metrics. - - TE paths which have at least one path metric which - exceeds the specified bounds MUST NOT be selected. - - TE paths that traverse TE links which have at least one - link metric which exceeds the specified bounds MUST NOT - be selected."; - leaf metric-type { - type identityref { - base link-path-metric-type; - } - description - "Identifies an entry in the list of 'metric-type' items - bound for the TE path."; - } - leaf upper-bound { - type uint64; - default "0"; - description - "Upper bound on the specified 'metric-type'. - - A zero indicates an unbounded upper limit for the - specified 'metric-type'. - - The unit of is interpreted in the context of the - 'metric-type' identity."; - } - } - } - } - - grouping generic-path-optimization { - description - "TE generic path optimization grouping."; - container optimizations { - description - "The objective function container that includes - attributes to impose when computing a TE path."; - choice algorithm { - description - "Optimizations algorithm."; - case metric { - if-feature "path-optimization-metric"; - /* Optimize by metric */ - list optimization-metric { - key "metric-type"; - description - "TE path metric type."; - uses optimization-metric-entry; - } - /* Tiebreakers */ - container tiebreakers { - status deprecated; - description - "Container for the list of tiebreakers. - - This container has been deprecated by the tiebreaker - leaf."; - list tiebreaker { - key "tiebreaker-type"; - status deprecated; - description - "The list of tiebreaker criteria to apply on an - equally favored set of paths, in order to pick - the best."; - leaf tiebreaker-type { - type identityref { - base path-metric-type; - } - status deprecated; - description - "Identifies an entry in the list of tiebreakers."; - } - } - } - } - case objective-function { - if-feature "path-optimization-objective-function"; - /* Objective functions */ - container objective-function { - description - "The objective function container that includes - attributes to impose when computing a TE path."; - leaf objective-function-type { - type identityref { - base objective-function-type; - } - default "te-types:of-minimize-cost-path"; - description - "Objective function entry."; - } - } - } - } - } - leaf tiebreaker { - type identityref { - base path-tiebreaker-type; - } - default "te-types:path-tiebreaker-random"; - description - "The tiebreaker criteria to apply on an equally favored set - of paths, in order to pick the best."; - } - } - - grouping generic-path-affinities { - description - "Path affinities grouping."; - container path-affinities-values { - description - "Path affinities represented as values."; - list path-affinities-value { - key "usage"; - description - "List of named affinity constraints."; - leaf usage { - type identityref { - base resource-affinities-type; - } - description - "Identifies an entry in the list of value affinity - constraints."; - } - leaf value { - type admin-groups; - default ""; - description - "The affinity value. - - The default is empty."; - } - } - } - container path-affinity-names { - description - "Path affinities represented as names."; - list path-affinity-name { - key "usage"; - description - "List of named affinity constraints."; - leaf usage { - type identityref { - base resource-affinities-type; - } - description - "Identifies an entry in the list of named affinity - constraints."; - } - list affinity-name { - key "name"; - description - "List of named affinities."; - leaf name { - type string; - description - "Identifies a named affinity entry."; - } - } - } - } - } - - grouping generic-path-srlgs { - description - "Path Shared Risk Link Group (SRLG) grouping."; - container path-srlgs-lists { - description - "Path Shared Risk Link Group (SRLG) properties container."; - list path-srlgs-list { - key "usage"; - description - "List of Shared Risk Link Group (SRLG) values to be - included or excluded."; - leaf usage { - type identityref { - base route-usage-type; - } - description - "Identifies an entry in a list of Shared Risk Link Groups - (SRLGs) to either include or exclude."; - } - leaf-list values { - type srlg; - description - "List of Shared Risk Link Group (SRLG) values."; - } - } - } - container path-srlgs-names { - description - "Container for the list of named Shared Risk Link Groups - (SRLGs)."; - list path-srlgs-name { - key "usage"; - description - "List of named Shared Risk Link Groups (SRLGs) to be - included or excluded."; - leaf usage { - type identityref { - base route-usage-type; - } - description - "Identifies an entry in a list of named Shared Risk Link - Groups (SRLGs) to either include or exclude."; - } - leaf-list names { - type string; - description - "List of named Shared Risk Link Groups (SRLGs)."; - } - } - } - } - - grouping generic-path-disjointness { - description - "Path disjointness grouping."; - leaf disjointness { - type te-path-disjointness; - description - "The type of resource disjointness. - When configured for a primary path, the disjointness level - applies to all secondary LSPs. - - When configured for a secondary path, the disjointness - level overrides the level configured for the primary path."; - } - } - - grouping common-path-constraints-attributes { - description - "Common path constraints configuration grouping."; - uses common-constraints; - uses generic-path-metric-bounds; - uses generic-path-affinities; - uses generic-path-srlgs; - } - - grouping generic-path-constraints { - description - "Global named path constraints configuration grouping."; - container path-constraints { - description - "TE named path constraints container."; - uses common-path-constraints-attributes; - uses generic-path-disjointness; - } - } - - grouping generic-path-properties { - description - "TE generic path properties grouping."; - container path-properties { - config false; - description - "The TE path properties."; - list path-metric { - key "metric-type"; - description - "TE path metric type."; - leaf metric-type { - type identityref { - base path-metric-type; - } - description - "TE path metric type."; - } - leaf accumulative-value { - type uint64; - description - "TE path metric accumulative value."; - } - } - uses generic-path-affinities; - uses generic-path-srlgs; - container path-route-objects { - description - "Container for the list of route objects either returned by - the computation engine or actually used by an LSP."; - list path-route-object { - key "index"; - ordered-by user; - description - "List of route objects either returned by the computation - engine or actually used by an LSP."; - leaf index { - type uint32; - description - "Route object entry index. - - The index is used to identify an entry in the list. - - The order of entries is defined by the user without - relying on key values."; - } - uses explicit-route-hop; - } - } - } - } - - grouping encoding-and-switching-type { - description - "Common grouping to define the LSP encoding and - switching types"; - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - description - "LSP encoding type."; - reference - "RFC 3945: Generalized Multi-Protocol Label Switching (GMPLS) - Architecture"; - } - leaf switching-type { - type identityref { - base te-types:switching-capabilities; - } - description - "LSP switching type."; - reference - "RFC 3945: Generalized Multi-Protocol Label Switching (GMPLS) - Architecture"; - } - } - - grouping te-generic-node-id { - description - "A reusable grouping for a TE generic node identifier."; - leaf id { - type union { - type te-node-id; - type inet:ip-address; - type nw:node-id; - } - description - "The identifier of the node. - - It can be represented as IP address or dotted quad address - or as an URI. - - The type data node disambiguates the union type."; - } - leaf type { - type enumeration { - enum ip { - description - "IP address representation of the node identifier."; - } - enum te-id { - description - "TE identifier of the node"; - } - enum node-id { - description - "URI representation of the node identifier."; - } - } - description - "Type of node identifier representation."; - } - } -} diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang deleted file mode 100644 index f0157bcc8..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-service@2023-10-23.yang +++ /dev/null @@ -1,325 +0,0 @@ - module ietf-trans-client-service { - /* TODO: FIXME */ - yang-version 1.1; - - namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-service"; - prefix "clntsvc"; - - import ietf-network { - prefix "nw"; - reference "RFC8345 - A YANG Data Model for Network Topologies"; - } - - import ietf-network-topology { - prefix "nt"; - reference "RFC8345 - A YANG Data Model for Network Topologies"; - } - - import ietf-te-types { - prefix "te-types"; - reference "RFC 8776 - Traffic Engineering Common YANG Types"; - } - - import ietf-layer1-types { - prefix "layer1-types"; - reference "RFC ZZZZ - A YANG Data Model for Layer 1 Types"; - } - - import ietf-yang-types { - prefix "yang"; - reference "RFC 6991 - Common YANG Data Types"; - } - - import ietf-trans-client-svc-types { - prefix "clntsvc-types"; - reference "RFC XXXX - A YANG Data Model for - Transport Network Client Signals"; - } - - organization - "Internet Engineering Task Force (IETF) CCAMP WG"; - contact - " - ID-draft editor: - Haomian Zheng (zhenghaomian@huawei.com); - Aihua Guo (aihuaguo.ietf@gmail.com); - Italo Busi (italo.busi@huawei.com); - Anton Snitser (antons@sedonasys.com); - Francesco Lazzeri (francesco.lazzeri@ericsson.com); - Yunbin Xu (xuyunbin@caict.ac.cn); - Yang Zhao (zhaoyangyjy@chinamobile.com); - Xufeng Liu (Xufeng_Liu@jabil.com); - Giuseppe Fioccola (giuseppe.fioccola@huawei.com); - Chaode Yu (yuchaode@huawei.com); - "; - - description - "This module defines a YANG data model for describing - transport network client services. The model fully conforms - to the Network Management Datastore Architecture (NMDA). - - Copyright (c) 2021 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - revision 2023-10-23 { - description - "version -04 as a WG document"; - reference - "draft-ietf-ccamp-client-signal-yang"; - } - - /* - * Groupings - */ - grouping client-svc-access-parameters { - description - "Transport network client signals access parameters"; - - leaf access-node-id { - type te-types:te-node-id; - description - "The identifier of the access node in the TE topology."; - } - - leaf access-node-uri { - type nw:node-id; - description - "The identifier of the access node in the network."; - } - - leaf access-ltp-id { - type te-types:te-tp-id; - description - "The TE link termination point identifier in TE topology, used - together with access-node-id to identify the access LTP."; - } - - leaf access-ltp-uri { - type nt:tp-id; - description - "The link termination point identifier in network topology, - used together with access-node-uri to identify the access LTP"; - } - - leaf client-signal { - type identityref { - base layer1-types:client-signal; - } - description - "Identify the client signal type associated with this port"; - } - - } - - grouping pm-state-grouping { - leaf latency { - description "latency value of the E2E client signal service"; - type uint32; - units microsecond; - } - } - - grouping error-info-grouping { - leaf error-code { - description "error code"; - type uint16; - } - - leaf error-description { - description "detail message of error"; - type string; - } - - leaf error-timestamp { - description "the date and time error is happened"; - type yang:date-and-time; - } - } - - grouping alarm-shreshold-grouping { - leaf latency-threshold { - description "a threshold for the E2E client signal service's - latency. Once the latency value exceed this threshold, an alarm - should be triggered."; - type uint32; - units microsecond; - } - } - - grouping client-svc-tunnel-parameters { - description - "Transport network client signals tunnel parameters"; - - leaf tunnel-name { - type string; - description - "TE tunnel instance name."; - } - } - - grouping client-svc-instance-config { - description - "Configuration parameters for client services."; - leaf client-svc-name { - type string; - description - "Identifier of the p2p transport network client signals."; - } - - leaf client-svc-title { - type string; - description - "Name of the p2p transport network client signals."; - } - - leaf user-label { - type string; - description - "Alias of the p2p transport network client signals."; - } - - leaf client-svc-descr { - type string; - description - "Description of the transport network client signals."; - } - - leaf client-svc-customer { - type string; - description - "Customer of the transport network client signals."; - } - - container resilience { - description "Place holder for resilience functionalities"; - } - - uses te-types:te-topology-identifier; - - leaf admin-status { - type identityref { - base te-types:tunnel-admin-state-type; - } - default te-types:tunnel-admin-state-up; - description "Client signals administrative state."; - } - - container src-access-ports { - description - "Source access port of a client signal."; - uses client-svc-access-parameters; - } - container dst-access-ports { - description - "Destination access port of a client signal."; - uses client-svc-access-parameters; - } - - container pm-state { - config false; - description "PM data of E2E client signal"; - uses pm-state-grouping; - } - - container error-info { - config false; - description "error messages of configuration"; - uses error-info-grouping; - } - - container alarm-shreshold { - description "threshold configuration for the E2E client signal"; - uses alarm-shreshold-grouping; - } - - leaf direction { - type identityref { - base clntsvc-types:direction; - } - description "Uni-dir or Bi-dir for the client signal."; - } - - list svc-tunnels { - key tunnel-name; - description - "List of the TE Tunnels supporting the client signal."; - uses client-svc-tunnel-parameters; - } - } - - grouping client-svc-instance-state { - description - "State parameters for client services."; - leaf operational-state { - type identityref { - base te-types:tunnel-state-type; - } - config false; - description "Client signal operational state."; - } - leaf provisioning-state { - type identityref { - base te-types:lsp-state-type; - } - config false; - description "Client signal provisioning state."; - } - leaf creation-time { - type yang:date-and-time; - config false; - description "The time of the client signal be created."; - } - leaf last-updated-time { - type yang:date-and-time; - config false; - description "The time of the client signal's latest update."; - } - leaf created-by { - type string; - config false; - description - "The client signal is created by whom, - can be a system or staff ID."; - } - leaf last-updated-by { - type string; - config false; - description - "The client signal is last updated by whom, - can be a system or staff ID."; - } - leaf owned-by { - type string; - config false; - description - "The client signal is owned by whom, - can be a system ID."; - } - } - - /* - * Data nodes - */ - - container client-svc { - description - "Transport client services."; - - list client-svc-instances { - key client-svc-name; - description - "The list of p2p transport client service instances"; - - uses client-svc-instance-config; - uses client-svc-instance-state; - } - } - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang deleted file mode 100644 index 60db5633a..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-trans-client-svc-types@2023-10-23.yang +++ /dev/null @@ -1,63 +0,0 @@ - module ietf-trans-client-svc-types { - namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-svc-types"; - prefix "clntsvc-types"; - - organization - "Internet Engineering Task Force (IETF) CCAMP WG"; - contact - " - ID-draft editor: - Haomian Zheng (zhenghaomian@huawei.com); - Aihua Guo (aihuaguo.ietf@gmail.com); - Italo Busi (italo.busi@huawei.com); - Anton Snitser (antons@sedonasys.com); - Francesco Lazzeri (francesco.lazzeri@ericsson.com); - Yunbin Xu (xuyunbin@caict.ac.cn); - Yang Zhao (zhaoyangyjy@chinamobile.com); - Xufeng Liu (Xufeng_Liu@jabil.com); - Giuseppe Fioccola (giuseppe.fioccola@huawei.com); - Chaode Yu (yuchaode@huawei.com); - "; - - description - "This module defines a YANG data model for describing - transport network client types. The model fully conforms - to the Network Management Datastore Architecture (NMDA). - - Copyright (c) 2019 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - - revision 2023-10-23 { - description - "version -01 as a WG document"; - reference - "draft-ietf-ccamp-client-signal-yang"; - } - - identity direction { - description - "Direction information of Client Signal."; - } - - identity bidirectional { - base direction; - description - "Client Signal is bi-directional."; - } - - identity unidirectional { - base direction; - description - "Client Signal is uni-directional."; - } - - } diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang deleted file mode 100644 index ee58fa3ab..000000000 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_bw/yang/ietf-yang-types@2013-07-15.yang +++ /dev/null @@ -1,474 +0,0 @@ -module ietf-yang-types { - - namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; - prefix "yang"; - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: David Kessens - - - WG Chair: Juergen Schoenwaelder - - - Editor: Juergen Schoenwaelder - "; - - description - "This module contains a collection of generally useful derived - YANG data types. - - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - - revision 2013-07-15 { - description - "This revision adds the following new data types: - - yang-identifier - - hex-string - - uuid - - dotted-quad"; - reference - "RFC 6991: Common YANG Data Types"; - } - - revision 2010-09-24 { - description - "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - } - - /*** collection of counter and gauge types ***/ - - typedef counter32 { - type uint32; - description - "The counter32 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter32 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - - The counter32 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter32. - - In the value set and its semantics, this type is equivalent - to the Counter32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef zero-based-counter32 { - type yang:counter32; - default "0"; - description - "The zero-based-counter32 type represents a counter32 - that has the defined 'initial' value zero. - - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter32 textual convention of the SMIv2."; - reference - "RFC 4502: Remote Network Monitoring Management Information - Base Version 2"; - } - - typedef counter64 { - type uint64; - description - "The counter64 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter64 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - - The counter64 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter64. - - In the value set and its semantics, this type is equivalent - to the Counter64 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef zero-based-counter64 { - type yang:counter64; - default "0"; - description - "The zero-based-counter64 type represents a counter64 that - has the defined 'initial' value zero. - - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter64 textual convention of the SMIv2."; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - } - - typedef gauge32 { - type uint32; - description - "The gauge32 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^32-1 (4294967295 decimal), and - the minimum value cannot be smaller than 0. The value of - a gauge32 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge32 also decreases (increases). - - In the value set and its semantics, this type is equivalent - to the Gauge32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef gauge64 { - type uint64; - description - "The gauge64 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^64-1 (18446744073709551615), and - the minimum value cannot be smaller than 0. The value of - a gauge64 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge64 also decreases (increases). - - In the value set and its semantics, this type is equivalent - to the CounterBasedGauge64 SMIv2 textual convention defined - in RFC 2856"; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - } - - /*** collection of identifier-related types ***/ - - typedef object-identifier { - type string { - pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' - + '(\.(0|([1-9]\d*)))*'; - } - description - "The object-identifier type represents administratively - assigned names in a registration-hierarchical-name tree. - - Values of this type are denoted as a sequence of numerical - non-negative sub-identifier values. Each sub-identifier - value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers - are separated by single dots and without any intermediate - whitespace. - - The ASN.1 standard restricts the value space of the first - sub-identifier to 0, 1, or 2. Furthermore, the value space - of the second sub-identifier is restricted to the range - 0 to 39 if the first sub-identifier is 0 or 1. Finally, - the ASN.1 standard requires that an object identifier - has always at least two sub-identifiers. The pattern - captures these restrictions. - - Although the number of sub-identifiers is not limited, - module designers should realize that there may be - implementations that stick with the SMIv2 limit of 128 - sub-identifiers. - - This type is a superset of the SMIv2 OBJECT IDENTIFIER type - since it is not restricted to 128 sub-identifiers. Hence, - this type SHOULD NOT be used to represent the SMIv2 OBJECT - IDENTIFIER type; the object-identifier-128 type SHOULD be - used instead."; - reference - "ISO9834-1: Information technology -- Open Systems - Interconnection -- Procedures for the operation of OSI - Registration Authorities: General procedures and top - arcs of the ASN.1 Object Identifier tree"; - } - - typedef object-identifier-128 { - type object-identifier { - pattern '\d*(\.\d*){1,127}'; - } - description - "This type represents object-identifiers restricted to 128 - sub-identifiers. - - In the value set and its semantics, this type is equivalent - to the OBJECT IDENTIFIER type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef yang-identifier { - type string { - length "1..max"; - pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; - pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; - } - description - "A YANG identifier string as defined by the 'identifier' - rule in Section 12 of RFC 6020. An identifier must - start with an alphabetic character or an underscore - followed by an arbitrary sequence of alphabetic or - numeric characters, underscores, hyphens, or dots. - - A YANG identifier MUST NOT start with any possible - combination of the lowercase or uppercase character - sequence 'xml'."; - reference - "RFC 6020: YANG - A Data Modeling Language for the Network - Configuration Protocol (NETCONF)"; - } - - /*** collection of types related to date and time***/ - - typedef date-and-time { - type string { - pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' - + '(Z|[\+\-]\d{2}:\d{2})'; - } - description - "The date-and-time type is a profile of the ISO 8601 - standard for representation of dates and times using the - Gregorian calendar. The profile is defined by the - date-time production in Section 5.6 of RFC 3339. - - The date-and-time type is compatible with the dateTime XML - schema type with the following notable exceptions: - - (a) The date-and-time type does not allow negative years. - - (b) The date-and-time time-offset -00:00 indicates an unknown - time zone (see RFC 3339) while -00:00 and +00:00 and Z - all represent the same time zone in dateTime. - - (c) The canonical format (see below) of data-and-time values - differs from the canonical format used by the dateTime XML - schema type, which requires all times to be in UTC using - the time-offset 'Z'. - - This type is not equivalent to the DateAndTime textual - convention of the SMIv2 since RFC 3339 uses a different - separator between full-date and full-time and provides - higher resolution of time-secfrac. - - The canonical format for date-and-time values with a known time - zone uses a numeric time zone offset that is calculated using - the device's configured known offset to UTC time. A change of - the device's offset to UTC time will cause date-and-time values - to change accordingly. Such changes might happen periodically - in case a server follows automatically daylight saving time - (DST) time zone offset changes. The canonical format for - date-and-time values with an unknown time zone (usually - referring to the notion of local time) uses the time-offset - -00:00."; - reference - "RFC 3339: Date and Time on the Internet: Timestamps - RFC 2579: Textual Conventions for SMIv2 - XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; - } - - typedef timeticks { - type uint32; - description - "The timeticks type represents a non-negative integer that - represents the time, modulo 2^32 (4294967296 decimal), in - hundredths of a second between two epochs. When a schema - node is defined that uses this type, the description of - the schema node identifies both of the reference epochs. - - In the value set and its semantics, this type is equivalent - to the TimeTicks type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef timestamp { - type yang:timeticks; - description - "The timestamp type represents the value of an associated - timeticks schema node at which a specific occurrence - happened. The specific occurrence must be defined in the - description of any schema node defined using this type. When - the specific occurrence occurred prior to the last time the - associated timeticks attribute was zero, then the timestamp - value is zero. Note that this requires all timestamp values - to be reset to zero when the value of the associated timeticks - attribute reaches 497+ days and wraps around to zero. - - The associated timeticks schema node must be specified - in the description of any schema node using this type. - - In the value set and its semantics, this type is equivalent - to the TimeStamp textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - } - - /*** collection of generic address types ***/ - - typedef phys-address { - type string { - pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - - description - "Represents media- or physical-level addresses represented - as a sequence octets, each octet represented by two hexadecimal - numbers. Octets are separated by colons. The canonical - representation uses lowercase characters. - - In the value set and its semantics, this type is equivalent - to the PhysAddress textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - } - - typedef mac-address { - type string { - pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; - } - description - "The mac-address type represents an IEEE 802 MAC address. - The canonical representation uses lowercase characters. - - In the value set and its semantics, this type is equivalent - to the MacAddress textual convention of the SMIv2."; - reference - "IEEE 802: IEEE Standard for Local and Metropolitan Area - Networks: Overview and Architecture - RFC 2579: Textual Conventions for SMIv2"; - } - - /*** collection of XML-specific types ***/ - - typedef xpath1.0 { - type string; - description - "This type represents an XPATH 1.0 expression. - - When a schema node is defined that uses this type, the - description of the schema node MUST specify the XPath - context in which the XPath expression is evaluated."; - reference - "XPATH: XML Path Language (XPath) Version 1.0"; - } - - /*** collection of string types ***/ - - typedef hex-string { - type string { - pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - description - "A hexadecimal string with octets represented as hex digits - separated by colons. The canonical representation uses - lowercase characters."; - } - - typedef uuid { - type string { - pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' - + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; - } - description - "A Universally Unique IDentifier in the string representation - defined in RFC 4122. The canonical representation uses - lowercase characters. - - The following is an example of a UUID in string representation: - f81d4fae-7dec-11d0-a765-00a0c91e6bf6 - "; - reference - "RFC 4122: A Universally Unique IDentifier (UUID) URN - Namespace"; - } - - typedef dotted-quad { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; - } - description - "An unsigned 32-bit number expressed in the dotted-quad - notation, i.e., four octets written as decimal numbers - and separated with the '.' (full stop) character."; - } -} -- GitLab