Load yang models
Ideally, we should load the yang models from the RU operational datastore, but the issues are following: 1) the yang models order is not good - dependancy models have to be loaded first 2) earlier O-RAN yang versions (e.g. v4) is not properly defined (i.e. optional parameters should not be included by default) Added support in both cases, loading from RU with <get-schema> RPC, and loading statically from "radio/fhi_72/mplane/yang/models" folder.
This commit is contained in:
@@ -32,6 +32,7 @@ target_sources(oran_fhlib_5g_mplane PRIVATE
|
|||||||
subscribe-mplane.c
|
subscribe-mplane.c
|
||||||
ru-mplane-api.c
|
ru-mplane-api.c
|
||||||
xml/get-xml.c
|
xml/get-xml.c
|
||||||
|
yang/get-yang.c
|
||||||
)
|
)
|
||||||
|
|
||||||
pkg_check_modules(libyang REQUIRED libyang)
|
pkg_check_modules(libyang REQUIRED libyang)
|
||||||
|
|||||||
@@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership.
|
||||||
|
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*-------------------------------------------------------------------------------
|
||||||
|
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
* contact@openairinterface.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "get-yang.h"
|
||||||
|
#include "../rpc-send-recv.h"
|
||||||
|
#include "common/utils/assertions.h"
|
||||||
|
|
||||||
|
#include <libxml/parser.h>
|
||||||
|
|
||||||
|
static bool store_schemas(xmlNode *node, ru_session_t *ru_session, struct ly_ctx **ctx)
|
||||||
|
{
|
||||||
|
int timeout = CLI_RPC_REPLY_TIMEOUT;
|
||||||
|
NC_WD_MODE wd = NC_WD_ALL;
|
||||||
|
NC_PARAMTYPE param = NC_PARAMTYPE_CONST;
|
||||||
|
LYS_INFORMAT ly_format = LYS_IN_YANG;
|
||||||
|
|
||||||
|
#ifdef MPLANE_V1
|
||||||
|
*ctx = ly_ctx_new(NULL, 0);
|
||||||
|
#elif defined MPLANE_V2
|
||||||
|
ly_ctx_new(NULL, 0, ctx);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (xmlNode *cur_node = node; cur_node; cur_node = cur_node->next) {
|
||||||
|
if (strcmp((const char *)cur_node->name, "schema") == 0) {
|
||||||
|
|
||||||
|
xmlNode *name_node = xmlFirstElementChild(cur_node);
|
||||||
|
char *module_name = (char *)xmlNodeGetContent(name_node);
|
||||||
|
xmlNode *revision_node = xmlNextElementSibling(name_node);
|
||||||
|
char *module_revision = (char *)xmlNodeGetContent(revision_node);
|
||||||
|
xmlNode *format_node = xmlNextElementSibling(revision_node);
|
||||||
|
char *module_format = (char *)xmlNodeGetContent(format_node);
|
||||||
|
|
||||||
|
if (strcmp(module_format, "yang") != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MP_LOG_I("RPC request to RU \"%s\" = <get-schema> for module \"%s\".\n", ru_session->ru_ip_add, module_name);
|
||||||
|
struct nc_rpc *get_schema_rpc = nc_rpc_getschema(module_name, module_revision, "yang", param);
|
||||||
|
char *schema_data = NULL;
|
||||||
|
bool success = rpc_send_recv((struct nc_session *)ru_session->session, get_schema_rpc, wd, timeout, &schema_data);
|
||||||
|
AssertError(success, return false, "[MPLANE] Unable to get schema for module \"%s\" from RU \"%s\".\n", module_name, ru_session->ru_ip_add);
|
||||||
|
|
||||||
|
if (schema_data) {
|
||||||
|
#ifdef MPLANE_V1
|
||||||
|
const struct lys_module *mod = lys_parse_mem(*ctx, schema_data, ly_format);
|
||||||
|
#elif defined MPLANE_V2
|
||||||
|
struct lys_module *mod = NULL;
|
||||||
|
lys_parse_mem(*ctx, schema_data, ly_format, &mod);
|
||||||
|
#endif
|
||||||
|
free(schema_data);
|
||||||
|
if (!mod) {
|
||||||
|
MP_LOG_W("Unable to load module \"%s\" from RU \"%s\".\n", module_name, ru_session->ru_ip_add);
|
||||||
|
nc_rpc_free(get_schema_rpc);
|
||||||
|
ly_ctx_destroy(*ctx);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nc_rpc_free(get_schema_rpc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool load_from_operational_ds(xmlNode *node, ru_session_t *ru_session, struct ly_ctx **ctx)
|
||||||
|
{
|
||||||
|
for (xmlNode *schemas_node = node; schemas_node; schemas_node = schemas_node->next) {
|
||||||
|
if(schemas_node->type != XML_ELEMENT_NODE)
|
||||||
|
continue;
|
||||||
|
if (strcmp((const char *)schemas_node->name, "schemas") == 0) {
|
||||||
|
return store_schemas(schemas_node->children, ru_session, ctx);
|
||||||
|
} else {
|
||||||
|
bool success = load_from_operational_ds(schemas_node->children, ru_session, ctx);
|
||||||
|
if (success)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool load_yang_models(ru_session_t *ru_session, const char *buffer, struct ly_ctx **ctx)
|
||||||
|
{
|
||||||
|
// Initialize the xml file
|
||||||
|
size_t len = strlen(buffer) + 1;
|
||||||
|
xmlDoc *doc = xmlReadMemory(buffer, len, NULL, NULL, 0);
|
||||||
|
xmlNode *root_element = xmlDocGetRootElement(doc);
|
||||||
|
|
||||||
|
bool success = load_from_operational_ds(root_element->children, ru_session, ctx);
|
||||||
|
if (success) {
|
||||||
|
MP_LOG_I("Successfully loaded all yang modules from operational datastore for RU \"%s\".\n", ru_session->ru_ip_add);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
MP_LOG_W("Unable to load all yang modules from operational datastore for RU \"%s\". Using yang models present in \"models\" subfolder.\n", ru_session->ru_ip_add);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ideally, we should load the yang models from the operational datastore, but the issues are following:
|
||||||
|
1) the yang models order is not good - the dependancy models have to be loaded first
|
||||||
|
2) earlier O-RAN yang versions (e.g. v4) is not properly defined (i.e. optional parameters should not be included by default) */
|
||||||
|
const char *yang_dir = YANG_MODELS;
|
||||||
|
const char *yang_models[] = {"ietf-interfaces", "iana-if-type", "ietf-ip", "iana-hardware", "ietf-hardware", "o-ran-interfaces", "o-ran-module-cap", "o-ran-compression-factors", "o-ran-processing-element", "o-ran-uplane-conf"};
|
||||||
|
|
||||||
|
#ifdef MPLANE_V1
|
||||||
|
*ctx = ly_ctx_new(yang_dir, 0);
|
||||||
|
AssertError(*ctx != NULL, return false, "[MPLANE] Unable to create libyang context: %s.\n", ly_errmsg(*ctx));
|
||||||
|
#elif defined MPLANE_V2
|
||||||
|
LY_ERR ret = ly_ctx_new(yang_dir, 0, ctx);
|
||||||
|
AssertError(ret == LY_SUCCESS, return false, "[MPLANE] Unable to create libyang context: %s.\n", ly_errmsg(*ctx));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const size_t num_models = sizeof(yang_models) / sizeof(yang_models[0]);
|
||||||
|
for (size_t i = 0; i < num_models; ++i) {
|
||||||
|
#ifdef MPLANE_V1
|
||||||
|
const struct lys_module *mod = ly_ctx_load_module(*ctx, yang_models[i], NULL);
|
||||||
|
AssertError(mod != NULL, return false, "[MPLANE] Failed to load yang model %s.\n", yang_models[i]);
|
||||||
|
#elif defined MPLANE_V2
|
||||||
|
const struct lys_module *mod = ly_ctx_load_module(*ctx, yang_models[i], NULL, NULL);
|
||||||
|
AssertError(mod != NULL, return false, "[MPLANE] Failed to load yang model %s.\n", yang_models[i]);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
MP_LOG_I("Successfully loaded all yang modules for RU \"%s\".\n", ru_session->ru_ip_add);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership.
|
||||||
|
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*-------------------------------------------------------------------------------
|
||||||
|
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
* contact@openairinterface.org
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GET_MPLANE_YANG_MODELS_H
|
||||||
|
#define GET_MPLANE_YANG_MODELS_H
|
||||||
|
|
||||||
|
#include "../ru-mplane-api.h"
|
||||||
|
|
||||||
|
#include <libyang/libyang.h>
|
||||||
|
|
||||||
|
bool load_yang_models(ru_session_t *ru_session, const char *buffer, struct ly_ctx **ctx);
|
||||||
|
|
||||||
|
#endif /* GET_MPLANE_YANG_MODELS_H */
|
||||||
+180
@@ -0,0 +1,180 @@
|
|||||||
|
module iana-hardware {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:ietf:params:xml:ns:yang:iana-hardware";
|
||||||
|
prefix ianahw;
|
||||||
|
|
||||||
|
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
|
||||||
|
E-Mail: iana@iana.org>";
|
||||||
|
|
||||||
|
description
|
||||||
|
"IANA-defined identities for hardware class.
|
||||||
|
The latest revision of this YANG module can be obtained from
|
||||||
|
the IANA website.
|
||||||
|
Requests for new values should be made to IANA via
|
||||||
|
email (iana@iana.org).
|
||||||
|
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).
|
||||||
|
The initial version of this YANG module is part of RFC 8348;
|
||||||
|
see the RFC itself for full legal notices.";
|
||||||
|
reference
|
||||||
|
"https://www.iana.org/assignments/yang-parameters";
|
||||||
|
|
||||||
|
revision 2018-03-13 {
|
||||||
|
description
|
||||||
|
"Initial revision.";
|
||||||
|
reference
|
||||||
|
"RFC 8348: A YANG Data Model for Hardware Management";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Identities
|
||||||
|
*/
|
||||||
|
|
||||||
|
identity hardware-class {
|
||||||
|
description
|
||||||
|
"This identity is the base for all hardware class
|
||||||
|
identifiers.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity unknown {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is unknown
|
||||||
|
to the server.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity chassis {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is an
|
||||||
|
overall container for networking equipment. Any class of
|
||||||
|
physical component, except a stack, may be contained within a
|
||||||
|
chassis; a chassis may only be contained within a stack.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity backplane {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of device for aggregating and forwarding networking traffic,
|
||||||
|
such as a shared backplane in a modular ethernet switch. Note
|
||||||
|
that an implementation may model a backplane as a single
|
||||||
|
physical component, which is actually implemented as multiple
|
||||||
|
discrete physical components (within a chassis or stack).";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity container {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is capable
|
||||||
|
of containing one or more removable physical entities,
|
||||||
|
possibly of different types. For example, each (empty or
|
||||||
|
full) slot in a chassis will be modeled as a container. Note
|
||||||
|
that all removable physical components should be modeled
|
||||||
|
within a container component, such as field-replaceable
|
||||||
|
modules, fans, or power supplies. Note that all known
|
||||||
|
containers should be modeled by the agent, including empty
|
||||||
|
containers.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity power-supply {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is a
|
||||||
|
power-supplying component.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity fan {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is a fan or
|
||||||
|
other heat-reduction component.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity sensor {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of sensor, such as a temperature sensor within a router
|
||||||
|
chassis.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity module {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of self-contained sub-system. If a module component is
|
||||||
|
removable, then it should be modeled within a container
|
||||||
|
component; otherwise, it should be modeled directly within
|
||||||
|
another physical component (e.g., a chassis or another
|
||||||
|
module).";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity port {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of networking port capable of receiving and/or transmitting
|
||||||
|
networking traffic.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity stack {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of super-container (possibly virtual) intended to group
|
||||||
|
together multiple chassis entities. A stack may be realized
|
||||||
|
by a virtual cable, a real interconnect cable attached to
|
||||||
|
multiple chassis, or multiple interconnect cables. A stack
|
||||||
|
should not be modeled within any other physical components,
|
||||||
|
but a stack may be contained within another stack. Only
|
||||||
|
chassis components should be contained within a stack.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity cpu {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of central processing unit.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity energy-object {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of energy object, i.e., it is a piece of equipment that is
|
||||||
|
part of or attached to a communications network that is
|
||||||
|
monitored, it is controlled, or it aids in the management of
|
||||||
|
another device for Energy Management.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity battery {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of battery.";
|
||||||
|
}
|
||||||
|
|
||||||
|
identity storage-drive {
|
||||||
|
base ianahw:hardware-class;
|
||||||
|
description
|
||||||
|
"This identity is applicable if the hardware class is some sort
|
||||||
|
of component with data storage capability as its main
|
||||||
|
functionality, e.g., hard disk drive (HDD), solid-state device
|
||||||
|
(SSD), solid-state hybrid drive (SSHD), object storage device
|
||||||
|
(OSD), or other.";
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
+1141
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,860 @@
|
|||||||
|
module ietf-ip {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:ietf:params:xml:ns:yang:ietf-ip";
|
||||||
|
prefix ip;
|
||||||
|
|
||||||
|
import ietf-interfaces {
|
||||||
|
prefix if;
|
||||||
|
}
|
||||||
|
import ietf-inet-types {
|
||||||
|
prefix inet;
|
||||||
|
}
|
||||||
|
import ietf-yang-types {
|
||||||
|
prefix yang;
|
||||||
|
}
|
||||||
|
|
||||||
|
organization
|
||||||
|
"IETF NETMOD (Network Modeling) Working Group";
|
||||||
|
|
||||||
|
contact
|
||||||
|
"WG Web: <https://datatracker.ietf.org/wg/netmod/>
|
||||||
|
WG List: <mailto:netmod@ietf.org>
|
||||||
|
Editor: Martin Bjorklund
|
||||||
|
<mailto:mbj@tail-f.com>";
|
||||||
|
description
|
||||||
|
"This module contains a collection of YANG definitions for
|
||||||
|
managing IP implementations.
|
||||||
|
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 8344; see
|
||||||
|
the RFC itself for full legal notices.";
|
||||||
|
|
||||||
|
revision 2018-02-22 {
|
||||||
|
description
|
||||||
|
"Updated to support NMDA.";
|
||||||
|
reference
|
||||||
|
"RFC 8344: A YANG Data Model for IP Management";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision 2014-06-16 {
|
||||||
|
description
|
||||||
|
"Initial revision.";
|
||||||
|
reference
|
||||||
|
"RFC 7277: A YANG Data Model for IP Management";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Features
|
||||||
|
*/
|
||||||
|
|
||||||
|
feature ipv4-non-contiguous-netmasks {
|
||||||
|
description
|
||||||
|
"Indicates support for configuring non-contiguous
|
||||||
|
subnet masks.";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature ipv6-privacy-autoconf {
|
||||||
|
description
|
||||||
|
"Indicates support for privacy extensions for stateless address
|
||||||
|
autoconfiguration in IPv6.";
|
||||||
|
reference
|
||||||
|
"RFC 4941: Privacy Extensions for Stateless Address
|
||||||
|
Autoconfiguration in IPv6";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Typedefs
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef ip-address-origin {
|
||||||
|
type enumeration {
|
||||||
|
enum other {
|
||||||
|
description
|
||||||
|
"None of the following.";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum static {
|
||||||
|
description
|
||||||
|
"Indicates that the address has been statically
|
||||||
|
configured -- for example, using the Network Configuration
|
||||||
|
Protocol (NETCONF) or a command line interface.";
|
||||||
|
}
|
||||||
|
enum dhcp {
|
||||||
|
description
|
||||||
|
"Indicates an address that has been assigned to this
|
||||||
|
system by a DHCP server.";
|
||||||
|
}
|
||||||
|
enum link-layer {
|
||||||
|
description
|
||||||
|
"Indicates an address created by IPv6 stateless
|
||||||
|
autoconfiguration that embeds a link-layer address in its
|
||||||
|
interface identifier.";
|
||||||
|
}
|
||||||
|
enum random {
|
||||||
|
description
|
||||||
|
"Indicates an address chosen by the system at
|
||||||
|
random, e.g., an IPv4 address within 169.254/16, a
|
||||||
|
temporary address as described in RFC 4941, or a
|
||||||
|
semantically opaque address as described in RFC 7217.";
|
||||||
|
reference
|
||||||
|
"RFC 4941: Privacy Extensions for Stateless Address
|
||||||
|
Autoconfiguration in IPv6
|
||||||
|
RFC 7217: A Method for Generating Semantically Opaque
|
||||||
|
Interface Identifiers with IPv6 Stateless
|
||||||
|
Address Autoconfiguration (SLAAC)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"The origin of an address.";
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef neighbor-origin {
|
||||||
|
type enumeration {
|
||||||
|
enum other {
|
||||||
|
description
|
||||||
|
"None of the following.";
|
||||||
|
}
|
||||||
|
enum static {
|
||||||
|
description
|
||||||
|
"Indicates that the mapping has been statically
|
||||||
|
configured -- for example, using NETCONF or a command line
|
||||||
|
interface.";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum dynamic {
|
||||||
|
description
|
||||||
|
"Indicates that the mapping has been dynamically resolved
|
||||||
|
using, for example, IPv4 ARP or the IPv6 Neighbor
|
||||||
|
Discovery protocol.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"The origin of a neighbor entry.";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Data nodes
|
||||||
|
*/
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface" {
|
||||||
|
description
|
||||||
|
"IP parameters on interfaces.
|
||||||
|
If an interface is not capable of running IP, the server
|
||||||
|
must not allow the client to configure these parameters.";
|
||||||
|
|
||||||
|
container ipv4 {
|
||||||
|
presence
|
||||||
|
"Enables IPv4 unless the 'enabled' leaf
|
||||||
|
(which defaults to 'true') is set to 'false'";
|
||||||
|
description
|
||||||
|
"Parameters for the IPv4 address family.";
|
||||||
|
|
||||||
|
leaf enabled {
|
||||||
|
type boolean;
|
||||||
|
default true;
|
||||||
|
description
|
||||||
|
"Controls whether IPv4 is enabled or disabled on this
|
||||||
|
interface. When IPv4 is enabled, this interface is
|
||||||
|
connected to an IPv4 stack, and the interface can send
|
||||||
|
and receive IPv4 packets.";
|
||||||
|
}
|
||||||
|
leaf forwarding {
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
description
|
||||||
|
"Controls IPv4 packet forwarding of datagrams received by,
|
||||||
|
but not addressed to, this interface. IPv4 routers
|
||||||
|
forward datagrams. IPv4 hosts do not (except those
|
||||||
|
source-routed via the host).";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf mtu {
|
||||||
|
type uint16 {
|
||||||
|
range "68..max";
|
||||||
|
}
|
||||||
|
units "octets";
|
||||||
|
description
|
||||||
|
"The size, in octets, of the largest IPv4 packet that the
|
||||||
|
interface will send and receive.
|
||||||
|
The server may restrict the allowed values for this leaf,
|
||||||
|
depending on the interface's type.
|
||||||
|
If this leaf is not configured, the operationally used MTU
|
||||||
|
depends on the interface's type.";
|
||||||
|
reference
|
||||||
|
"RFC 791: Internet Protocol";
|
||||||
|
}
|
||||||
|
list address {
|
||||||
|
key "ip";
|
||||||
|
description
|
||||||
|
"The list of IPv4 addresses on the interface.";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv4-address-no-zone;
|
||||||
|
description
|
||||||
|
"The IPv4 address on the interface.";
|
||||||
|
}
|
||||||
|
choice subnet {
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"The subnet can be specified as a prefix length or,
|
||||||
|
if the server supports non-contiguous netmasks, as
|
||||||
|
a netmask.";
|
||||||
|
leaf prefix-length {
|
||||||
|
type uint8 {
|
||||||
|
range "0..32";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"The length of the subnet prefix.";
|
||||||
|
}
|
||||||
|
leaf netmask {
|
||||||
|
if-feature ipv4-non-contiguous-netmasks;
|
||||||
|
type yang:dotted-quad;
|
||||||
|
description
|
||||||
|
"The subnet specified as a netmask.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf origin {
|
||||||
|
type ip-address-origin;
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"The origin of this address.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list neighbor {
|
||||||
|
key "ip";
|
||||||
|
description
|
||||||
|
"A list of mappings from IPv4 addresses to
|
||||||
|
link-layer addresses.
|
||||||
|
Entries in this list in the intended configuration are
|
||||||
|
used as static entries in the ARP Cache.
|
||||||
|
In the operational state, this list represents the ARP
|
||||||
|
Cache.";
|
||||||
|
reference
|
||||||
|
"RFC 826: An Ethernet Address Resolution Protocol";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv4-address-no-zone;
|
||||||
|
description
|
||||||
|
"The IPv4 address of the neighbor node.";
|
||||||
|
}
|
||||||
|
leaf link-layer-address {
|
||||||
|
type yang:phys-address;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"The link-layer address of the neighbor node.";
|
||||||
|
}
|
||||||
|
leaf origin {
|
||||||
|
type neighbor-origin;
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"The origin of this neighbor entry.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
container ipv6 {
|
||||||
|
presence
|
||||||
|
"Enables IPv6 unless the 'enabled' leaf
|
||||||
|
(which defaults to 'true') is set to 'false'";
|
||||||
|
description
|
||||||
|
"Parameters for the IPv6 address family.";
|
||||||
|
|
||||||
|
leaf enabled {
|
||||||
|
type boolean;
|
||||||
|
default true;
|
||||||
|
description
|
||||||
|
"Controls whether IPv6 is enabled or disabled on this
|
||||||
|
interface. When IPv6 is enabled, this interface is
|
||||||
|
connected to an IPv6 stack, and the interface can send
|
||||||
|
and receive IPv6 packets.";
|
||||||
|
}
|
||||||
|
leaf forwarding {
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
description
|
||||||
|
"Controls IPv6 packet forwarding of datagrams received by,
|
||||||
|
but not addressed to, this interface. IPv6 routers
|
||||||
|
forward datagrams. IPv6 hosts do not (except those
|
||||||
|
source-routed via the host).";
|
||||||
|
reference
|
||||||
|
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||||
|
Section 6.2.1, IsRouter";
|
||||||
|
}
|
||||||
|
leaf mtu {
|
||||||
|
type uint32 {
|
||||||
|
range "1280..max";
|
||||||
|
}
|
||||||
|
units "octets";
|
||||||
|
description
|
||||||
|
"The size, in octets, of the largest IPv6 packet that the
|
||||||
|
interface will send and receive.
|
||||||
|
The server may restrict the allowed values for this leaf,
|
||||||
|
depending on the interface's type.
|
||||||
|
If this leaf is not configured, the operationally used MTU
|
||||||
|
depends on the interface's type.";
|
||||||
|
reference
|
||||||
|
"RFC 8200: Internet Protocol, Version 6 (IPv6)
|
||||||
|
Specification
|
||||||
|
Section 5";
|
||||||
|
}
|
||||||
|
|
||||||
|
list address {
|
||||||
|
key "ip";
|
||||||
|
description
|
||||||
|
"The list of IPv6 addresses on the interface.";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv6-address-no-zone;
|
||||||
|
description
|
||||||
|
"The IPv6 address on the interface.";
|
||||||
|
}
|
||||||
|
leaf prefix-length {
|
||||||
|
type uint8 {
|
||||||
|
range "0..128";
|
||||||
|
}
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"The length of the subnet prefix.";
|
||||||
|
}
|
||||||
|
leaf origin {
|
||||||
|
type ip-address-origin;
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"The origin of this address.";
|
||||||
|
}
|
||||||
|
leaf status {
|
||||||
|
type enumeration {
|
||||||
|
enum preferred {
|
||||||
|
description
|
||||||
|
"This is a valid address that can appear as the
|
||||||
|
destination or source address of a packet.";
|
||||||
|
}
|
||||||
|
enum deprecated {
|
||||||
|
description
|
||||||
|
"This is a valid but deprecated address that should
|
||||||
|
no longer be used as a source address in new
|
||||||
|
communications, but packets addressed to such an
|
||||||
|
address are processed as expected.";
|
||||||
|
}
|
||||||
|
enum invalid {
|
||||||
|
description
|
||||||
|
"This isn't a valid address, and it shouldn't appear
|
||||||
|
as the destination or source address of a packet.";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum inaccessible {
|
||||||
|
description
|
||||||
|
"The address is not accessible because the interface
|
||||||
|
to which this address is assigned is not
|
||||||
|
operational.";
|
||||||
|
}
|
||||||
|
enum unknown {
|
||||||
|
description
|
||||||
|
"The status cannot be determined for some reason.";
|
||||||
|
}
|
||||||
|
enum tentative {
|
||||||
|
description
|
||||||
|
"The uniqueness of the address on the link is being
|
||||||
|
verified. Addresses in this state should not be
|
||||||
|
used for general communication and should only be
|
||||||
|
used to determine the uniqueness of the address.";
|
||||||
|
}
|
||||||
|
enum duplicate {
|
||||||
|
description
|
||||||
|
"The address has been determined to be non-unique on
|
||||||
|
the link and so must not be used.";
|
||||||
|
}
|
||||||
|
enum optimistic {
|
||||||
|
description
|
||||||
|
"The address is available for use, subject to
|
||||||
|
restrictions, while its uniqueness on a link is
|
||||||
|
being verified.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"The status of an address. Most of the states correspond
|
||||||
|
to states from the IPv6 Stateless Address
|
||||||
|
Autoconfiguration protocol.";
|
||||||
|
reference
|
||||||
|
"RFC 4293: Management Information Base for the
|
||||||
|
Internet Protocol (IP)
|
||||||
|
- IpAddressStatusTC
|
||||||
|
RFC 4862: IPv6 Stateless Address Autoconfiguration";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list neighbor {
|
||||||
|
key "ip";
|
||||||
|
description
|
||||||
|
"A list of mappings from IPv6 addresses to
|
||||||
|
link-layer addresses.
|
||||||
|
Entries in this list in the intended configuration are
|
||||||
|
used as static entries in the Neighbor Cache.
|
||||||
|
In the operational state, this list represents the
|
||||||
|
Neighbor Cache.";
|
||||||
|
reference
|
||||||
|
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv6-address-no-zone;
|
||||||
|
description
|
||||||
|
"The IPv6 address of the neighbor node.";
|
||||||
|
}
|
||||||
|
leaf link-layer-address {
|
||||||
|
type yang:phys-address;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"The link-layer address of the neighbor node.
|
||||||
|
In the operational state, if the neighbor's 'state' leaf
|
||||||
|
is 'incomplete', this leaf is not instantiated.";
|
||||||
|
}
|
||||||
|
leaf origin {
|
||||||
|
type neighbor-origin;
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"The origin of this neighbor entry.";
|
||||||
|
}
|
||||||
|
leaf is-router {
|
||||||
|
type empty;
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"Indicates that the neighbor node acts as a router.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf state {
|
||||||
|
type enumeration {
|
||||||
|
enum incomplete {
|
||||||
|
description
|
||||||
|
"Address resolution is in progress, and the
|
||||||
|
link-layer address of the neighbor has not yet been
|
||||||
|
determined.";
|
||||||
|
}
|
||||||
|
enum reachable {
|
||||||
|
description
|
||||||
|
"Roughly speaking, the neighbor is known to have been
|
||||||
|
reachable recently (within tens of seconds ago).";
|
||||||
|
}
|
||||||
|
enum stale {
|
||||||
|
description
|
||||||
|
"The neighbor is no longer known to be reachable, but
|
||||||
|
until traffic is sent to the neighbor no attempt
|
||||||
|
should be made to verify its reachability.";
|
||||||
|
}
|
||||||
|
enum delay {
|
||||||
|
description
|
||||||
|
"The neighbor is no longer known to be reachable, and
|
||||||
|
traffic has recently been sent to the neighbor.
|
||||||
|
Rather than probe the neighbor immediately, however,
|
||||||
|
delay sending probes for a short while in order to
|
||||||
|
give upper-layer protocols a chance to provide
|
||||||
|
reachability confirmation.";
|
||||||
|
}
|
||||||
|
enum probe {
|
||||||
|
description
|
||||||
|
"The neighbor is no longer known to be reachable, and
|
||||||
|
unicast Neighbor Solicitation probes are being sent
|
||||||
|
to verify reachability.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"The Neighbor Unreachability Detection state of this
|
||||||
|
entry.";
|
||||||
|
reference
|
||||||
|
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||||
|
Section 7.3.2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf dup-addr-detect-transmits {
|
||||||
|
type uint32;
|
||||||
|
default 1;
|
||||||
|
description
|
||||||
|
"The number of consecutive Neighbor Solicitation messages
|
||||||
|
sent while performing Duplicate Address Detection on a
|
||||||
|
tentative address. A value of zero indicates that
|
||||||
|
Duplicate Address Detection is not performed on
|
||||||
|
tentative addresses. A value of one indicates a single
|
||||||
|
transmission with no follow-up retransmissions.";
|
||||||
|
reference
|
||||||
|
"RFC 4862: IPv6 Stateless Address Autoconfiguration";
|
||||||
|
}
|
||||||
|
container autoconf {
|
||||||
|
description
|
||||||
|
"Parameters to control the autoconfiguration of IPv6
|
||||||
|
addresses, as described in RFC 4862.";
|
||||||
|
reference
|
||||||
|
"RFC 4862: IPv6 Stateless Address Autoconfiguration";
|
||||||
|
|
||||||
|
leaf create-global-addresses {
|
||||||
|
type boolean;
|
||||||
|
default true;
|
||||||
|
description
|
||||||
|
"If enabled, the host creates global addresses as
|
||||||
|
described in RFC 4862.";
|
||||||
|
reference
|
||||||
|
"RFC 4862: IPv6 Stateless Address Autoconfiguration
|
||||||
|
Section 5.5";
|
||||||
|
}
|
||||||
|
leaf create-temporary-addresses {
|
||||||
|
if-feature ipv6-privacy-autoconf;
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
description
|
||||||
|
"If enabled, the host creates temporary addresses as
|
||||||
|
described in RFC 4941.";
|
||||||
|
reference
|
||||||
|
"RFC 4941: Privacy Extensions for Stateless Address
|
||||||
|
Autoconfiguration in IPv6";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf temporary-valid-lifetime {
|
||||||
|
if-feature ipv6-privacy-autoconf;
|
||||||
|
type uint32;
|
||||||
|
units "seconds";
|
||||||
|
default 604800;
|
||||||
|
description
|
||||||
|
"The time period during which the temporary address
|
||||||
|
is valid.";
|
||||||
|
reference
|
||||||
|
"RFC 4941: Privacy Extensions for Stateless Address
|
||||||
|
Autoconfiguration in IPv6
|
||||||
|
- TEMP_VALID_LIFETIME";
|
||||||
|
}
|
||||||
|
leaf temporary-preferred-lifetime {
|
||||||
|
if-feature ipv6-privacy-autoconf;
|
||||||
|
type uint32;
|
||||||
|
units "seconds";
|
||||||
|
default 86400;
|
||||||
|
description
|
||||||
|
"The time period during which the temporary address is
|
||||||
|
preferred.";
|
||||||
|
reference
|
||||||
|
"RFC 4941: Privacy Extensions for Stateless Address
|
||||||
|
Autoconfiguration in IPv6
|
||||||
|
- TEMP_PREFERRED_LIFETIME";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Legacy operational state data nodes
|
||||||
|
*/
|
||||||
|
|
||||||
|
augment "/if:interfaces-state/if:interface" {
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Data nodes for the operational state of IP on interfaces.";
|
||||||
|
|
||||||
|
container ipv4 {
|
||||||
|
presence
|
||||||
|
"Present if IPv4 is enabled on this interface";
|
||||||
|
config false;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Interface-specific parameters for the IPv4 address family.";
|
||||||
|
|
||||||
|
leaf forwarding {
|
||||||
|
type boolean;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Indicates whether IPv4 packet forwarding is enabled or
|
||||||
|
disabled on this interface.";
|
||||||
|
}
|
||||||
|
leaf mtu {
|
||||||
|
type uint16 {
|
||||||
|
range "68..max";
|
||||||
|
}
|
||||||
|
units "octets";
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The size, in octets, of the largest IPv4 packet that the
|
||||||
|
interface will send and receive.";
|
||||||
|
reference
|
||||||
|
"RFC 791: Internet Protocol";
|
||||||
|
}
|
||||||
|
list address {
|
||||||
|
key "ip";
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The list of IPv4 addresses on the interface.";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv4-address-no-zone;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The IPv4 address on the interface.";
|
||||||
|
}
|
||||||
|
choice subnet {
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The subnet can be specified as a prefix length or,
|
||||||
|
if the server supports non-contiguous netmasks, as
|
||||||
|
a netmask.";
|
||||||
|
leaf prefix-length {
|
||||||
|
type uint8 {
|
||||||
|
range "0..32";
|
||||||
|
}
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The length of the subnet prefix.";
|
||||||
|
}
|
||||||
|
leaf netmask {
|
||||||
|
if-feature ipv4-non-contiguous-netmasks;
|
||||||
|
type yang:dotted-quad;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The subnet specified as a netmask.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
leaf origin {
|
||||||
|
type ip-address-origin;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The origin of this address.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list neighbor {
|
||||||
|
key "ip";
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"A list of mappings from IPv4 addresses to
|
||||||
|
link-layer addresses.
|
||||||
|
This list represents the ARP Cache.";
|
||||||
|
reference
|
||||||
|
"RFC 826: An Ethernet Address Resolution Protocol";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv4-address-no-zone;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The IPv4 address of the neighbor node.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf link-layer-address {
|
||||||
|
type yang:phys-address;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The link-layer address of the neighbor node.";
|
||||||
|
}
|
||||||
|
leaf origin {
|
||||||
|
type neighbor-origin;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The origin of this neighbor entry.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
container ipv6 {
|
||||||
|
presence
|
||||||
|
"Present if IPv6 is enabled on this interface";
|
||||||
|
config false;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Parameters for the IPv6 address family.";
|
||||||
|
|
||||||
|
leaf forwarding {
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Indicates whether IPv6 packet forwarding is enabled or
|
||||||
|
disabled on this interface.";
|
||||||
|
reference
|
||||||
|
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||||
|
Section 6.2.1, IsRouter";
|
||||||
|
}
|
||||||
|
leaf mtu {
|
||||||
|
type uint32 {
|
||||||
|
range "1280..max";
|
||||||
|
}
|
||||||
|
units "octets";
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The size, in octets, of the largest IPv6 packet that the
|
||||||
|
interface will send and receive.";
|
||||||
|
reference
|
||||||
|
"RFC 8200: Internet Protocol, Version 6 (IPv6)
|
||||||
|
Specification
|
||||||
|
Section 5";
|
||||||
|
}
|
||||||
|
list address {
|
||||||
|
key "ip";
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The list of IPv6 addresses on the interface.";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv6-address-no-zone;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The IPv6 address on the interface.";
|
||||||
|
}
|
||||||
|
leaf prefix-length {
|
||||||
|
type uint8 {
|
||||||
|
range "0..128";
|
||||||
|
}
|
||||||
|
mandatory true;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The length of the subnet prefix.";
|
||||||
|
}
|
||||||
|
leaf origin {
|
||||||
|
type ip-address-origin;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The origin of this address.";
|
||||||
|
}
|
||||||
|
leaf status {
|
||||||
|
type enumeration {
|
||||||
|
enum preferred {
|
||||||
|
description
|
||||||
|
"This is a valid address that can appear as the
|
||||||
|
destination or source address of a packet.";
|
||||||
|
}
|
||||||
|
enum deprecated {
|
||||||
|
description
|
||||||
|
"This is a valid but deprecated address that should
|
||||||
|
no longer be used as a source address in new
|
||||||
|
communications, but packets addressed to such an
|
||||||
|
address are processed as expected.";
|
||||||
|
}
|
||||||
|
enum invalid {
|
||||||
|
description
|
||||||
|
"This isn't a valid address, and it shouldn't appear
|
||||||
|
as the destination or source address of a packet.";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum inaccessible {
|
||||||
|
description
|
||||||
|
"The address is not accessible because the interface
|
||||||
|
to which this address is assigned is not
|
||||||
|
operational.";
|
||||||
|
}
|
||||||
|
enum unknown {
|
||||||
|
description
|
||||||
|
"The status cannot be determined for some reason.";
|
||||||
|
}
|
||||||
|
enum tentative {
|
||||||
|
description
|
||||||
|
"The uniqueness of the address on the link is being
|
||||||
|
verified. Addresses in this state should not be
|
||||||
|
used for general communication and should only be
|
||||||
|
used to determine the uniqueness of the address.";
|
||||||
|
}
|
||||||
|
enum duplicate {
|
||||||
|
description
|
||||||
|
"The address has been determined to be non-unique on
|
||||||
|
the link and so must not be used.";
|
||||||
|
}
|
||||||
|
enum optimistic {
|
||||||
|
description
|
||||||
|
"The address is available for use, subject to
|
||||||
|
restrictions, while its uniqueness on a link is
|
||||||
|
being verified.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The status of an address. Most of the states correspond
|
||||||
|
to states from the IPv6 Stateless Address
|
||||||
|
Autoconfiguration protocol.";
|
||||||
|
reference
|
||||||
|
"RFC 4293: Management Information Base for the
|
||||||
|
Internet Protocol (IP)
|
||||||
|
- IpAddressStatusTC
|
||||||
|
RFC 4862: IPv6 Stateless Address Autoconfiguration";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list neighbor {
|
||||||
|
key "ip";
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"A list of mappings from IPv6 addresses to
|
||||||
|
link-layer addresses.
|
||||||
|
This list represents the Neighbor Cache.";
|
||||||
|
reference
|
||||||
|
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
|
||||||
|
|
||||||
|
leaf ip {
|
||||||
|
type inet:ipv6-address-no-zone;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The IPv6 address of the neighbor node.";
|
||||||
|
}
|
||||||
|
leaf link-layer-address {
|
||||||
|
type yang:phys-address;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The link-layer address of the neighbor node.";
|
||||||
|
}
|
||||||
|
leaf origin {
|
||||||
|
type neighbor-origin;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The origin of this neighbor entry.";
|
||||||
|
}
|
||||||
|
leaf is-router {
|
||||||
|
type empty;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Indicates that the neighbor node acts as a router.";
|
||||||
|
}
|
||||||
|
leaf state {
|
||||||
|
type enumeration {
|
||||||
|
enum incomplete {
|
||||||
|
description
|
||||||
|
"Address resolution is in progress, and the
|
||||||
|
link-layer address of the neighbor has not yet been
|
||||||
|
determined.";
|
||||||
|
}
|
||||||
|
enum reachable {
|
||||||
|
description
|
||||||
|
"Roughly speaking, the neighbor is known to have been
|
||||||
|
reachable recently (within tens of seconds ago).";
|
||||||
|
}
|
||||||
|
enum stale {
|
||||||
|
description
|
||||||
|
"The neighbor is no longer known to be reachable, but
|
||||||
|
until traffic is sent to the neighbor no attempt
|
||||||
|
should be made to verify its reachability.";
|
||||||
|
}
|
||||||
|
enum delay {
|
||||||
|
description
|
||||||
|
"The neighbor is no longer known to be reachable, and
|
||||||
|
traffic has recently been sent to the neighbor.
|
||||||
|
Rather than probe the neighbor immediately, however,
|
||||||
|
delay sending probes for a short while in order to
|
||||||
|
give upper-layer protocols a chance to provide
|
||||||
|
reachability confirmation.";
|
||||||
|
}
|
||||||
|
enum probe {
|
||||||
|
description
|
||||||
|
"The neighbor is no longer known to be reachable, and
|
||||||
|
unicast Neighbor Solicitation probes are being sent
|
||||||
|
to verify reachability.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"The Neighbor Unreachability Detection state of this
|
||||||
|
entry.";
|
||||||
|
reference
|
||||||
|
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
|
||||||
|
Section 7.3.2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,368 @@
|
|||||||
|
module o-ran-compression-factors {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:o-ran:compression-factors:1.0";
|
||||||
|
prefix "o-ran-compression-factors";
|
||||||
|
|
||||||
|
|
||||||
|
organization "O-RAN Alliance";
|
||||||
|
|
||||||
|
contact
|
||||||
|
"www.o-ran.org";
|
||||||
|
|
||||||
|
description
|
||||||
|
"This module defines the module capabilities for
|
||||||
|
the O-RAN Radio Unit U-Plane configuration.
|
||||||
|
|
||||||
|
Copyright 2020 the O-RAN Alliance.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* Neither the Members of the O-RAN Alliance nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.";
|
||||||
|
|
||||||
|
revision "2020-08-10" {
|
||||||
|
description
|
||||||
|
"version 4.0.0
|
||||||
|
|
||||||
|
1) supporting compression types per endpoint
|
||||||
|
2) adding feature for configurable fs-offset for compression";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v04.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2020-04-17" {
|
||||||
|
description
|
||||||
|
"version 3.0.0
|
||||||
|
|
||||||
|
1) adding selective RE sending compression types";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v03.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2019-07-03" {
|
||||||
|
description
|
||||||
|
"version 1.1.0
|
||||||
|
|
||||||
|
1) changes related to compression bitwidth presentation";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2019-02-04" {
|
||||||
|
description
|
||||||
|
"version 1.0.0
|
||||||
|
|
||||||
|
1) imported model from xRAN
|
||||||
|
2) changed namespace and reference from xran to o-ran";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature CONFIGURABLE-FS-OFFSET {
|
||||||
|
description
|
||||||
|
"Presence of this feature means that O-RU supports configurable fs-offset for compression.";
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping compression-method-grouping {
|
||||||
|
description
|
||||||
|
"Grouping for compression method.";
|
||||||
|
|
||||||
|
leaf iq-bitwidth {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Bitwidth to be used in compression";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf compression-method {
|
||||||
|
type enumeration {
|
||||||
|
enum NO_COMPRESSION {
|
||||||
|
description
|
||||||
|
"No compression will be used";
|
||||||
|
}
|
||||||
|
enum BLOCK_FLOATING_POINT {
|
||||||
|
description
|
||||||
|
"Block floating point compression and decompression will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum BLOCK_SCALING {
|
||||||
|
description
|
||||||
|
"Block scaling compression and decompresion will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum U_LAW {
|
||||||
|
description
|
||||||
|
"u-Law compression and decompresion method will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum BEAMSPACE {
|
||||||
|
description
|
||||||
|
"Beamspace compression and decompression will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum MODULATION {
|
||||||
|
description
|
||||||
|
"Modulation compression and decompression will be used";
|
||||||
|
}
|
||||||
|
enum BLOCK-FLOATING-POINT-SELECTIVE-RE-SENDING {
|
||||||
|
description
|
||||||
|
"block floating point with selective re sending
|
||||||
|
compression and decompression will be used";
|
||||||
|
}
|
||||||
|
enum MODULATION-COMPRESSION-SELECTIVE-RE-SENDING {
|
||||||
|
description
|
||||||
|
"modulation compression with selective re sending
|
||||||
|
compression and decompression will be used";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Compresion method which can be supported by the O-RU";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping compression-formats {
|
||||||
|
description
|
||||||
|
"Grouping deicated to list compression formats as choice";
|
||||||
|
|
||||||
|
choice compression-format {
|
||||||
|
description
|
||||||
|
"Choice of compression format for particular element";
|
||||||
|
|
||||||
|
case no-compresison {
|
||||||
|
description "Compression for beam weights is not supported.";
|
||||||
|
}
|
||||||
|
case block-floating-point {
|
||||||
|
description "Block floating point compression and decompression is supported.";
|
||||||
|
|
||||||
|
leaf exponent {
|
||||||
|
type uint8 {
|
||||||
|
range "4";
|
||||||
|
}
|
||||||
|
description "Exponent bit width size in number of bits used when encoding in udCompParam.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case block-floating-point-selective-re-sending {
|
||||||
|
description
|
||||||
|
"Block floating point with selective re sending compression and decompression is supported.";
|
||||||
|
|
||||||
|
leaf sres-exponent {
|
||||||
|
type uint8 {
|
||||||
|
range "4";
|
||||||
|
}
|
||||||
|
description "Exponent bit width size in number of bits used when encoding in udCompParam.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case block-scaling {
|
||||||
|
description "Block scaling compression and decompresion is supported.";
|
||||||
|
leaf block-scalar {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Common scaler for compressed PRB";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case u-law {
|
||||||
|
description "u-Law compression and decompresion method is supported.";
|
||||||
|
leaf comp-bit-width {
|
||||||
|
type uint8 {
|
||||||
|
range "0..15";
|
||||||
|
}
|
||||||
|
description "Bit with for u-law compression";
|
||||||
|
}
|
||||||
|
leaf comp-shift {
|
||||||
|
type uint8 {
|
||||||
|
range "0..15";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"the shift applied to the entire PRB";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case beam-space-compression {
|
||||||
|
description "Beamspace compression and decompression is supported. Applies to beamforming weights only.";
|
||||||
|
leaf-list active-beam-space-coeficient-mask {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"active beamspace coefficient indices associated with the compressed beamforming vector";
|
||||||
|
}
|
||||||
|
leaf block-scaler {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Common scaler for compressed beamforming coefficients";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case modulation-compression {
|
||||||
|
description "Modulation compression and decompression is supported.";
|
||||||
|
leaf csf {
|
||||||
|
type uint8 {
|
||||||
|
range "0..1";
|
||||||
|
}
|
||||||
|
description "Constallation shift flag";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf mod-comp-scaler {
|
||||||
|
type uint16 {
|
||||||
|
range "0..32767";
|
||||||
|
}
|
||||||
|
description "Modulation compression scaler value.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case modulation-compression-selective-re-sending {
|
||||||
|
description "Modulation compression with selective re sending and decompression is supported.";
|
||||||
|
leaf sres-csf {
|
||||||
|
type uint8 {
|
||||||
|
range "0..1";
|
||||||
|
}
|
||||||
|
description "Constallation shift flag";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf sres-mod-comp-scaler {
|
||||||
|
type uint16 {
|
||||||
|
range "0..32767";
|
||||||
|
}
|
||||||
|
description "Modulation compression scaler value.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping compression-params {
|
||||||
|
description
|
||||||
|
"Parameters to define compression";
|
||||||
|
|
||||||
|
leaf compression-type {
|
||||||
|
type enumeration {
|
||||||
|
enum STATIC {
|
||||||
|
description
|
||||||
|
"Indicates that static compression method will be used (both compression and IQ bitwidth)";
|
||||||
|
}
|
||||||
|
enum DYNAMIC {
|
||||||
|
description
|
||||||
|
"Indicates that dynamic compression method will be used";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"Compression type that O-DU wants to be supported";
|
||||||
|
}
|
||||||
|
|
||||||
|
// *********** TO BE REMOVED ***********
|
||||||
|
leaf bitwidth {
|
||||||
|
when "../compression-type = 'STATIC'";
|
||||||
|
type uint8;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Bitwidth to be used in compression.
|
||||||
|
This has since been replaced in M-Plane version
|
||||||
|
2.0.0 with the iq-bitwidth schema node";
|
||||||
|
}
|
||||||
|
// *************************************
|
||||||
|
|
||||||
|
uses compression-formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping compression-parameters {
|
||||||
|
description
|
||||||
|
"Parameters used to define description type";
|
||||||
|
|
||||||
|
leaf iq-bitwidth {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Bitwidth to be used in compression";
|
||||||
|
}
|
||||||
|
|
||||||
|
uses compression-formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping format-of-iq-sample {
|
||||||
|
description
|
||||||
|
"Indicates module capabilities about IQ samples";
|
||||||
|
|
||||||
|
leaf dynamic-compression-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if radio supports dynamic compression method";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf realtime-variable-bit-width-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if O-RU supports realtime variable bit with";
|
||||||
|
}
|
||||||
|
|
||||||
|
list compression-method-supported {
|
||||||
|
uses compression-parameters;
|
||||||
|
|
||||||
|
description
|
||||||
|
"List of supported compression methods by O-RU
|
||||||
|
Note: if O-RU supports different compression methods per endpoint
|
||||||
|
then please refer do endpoints to have information what
|
||||||
|
exactly is supported on a paticular endpoint";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf syminc-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if symbol number increment command in a C-Plane is
|
||||||
|
supported or not";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf regularization-factor-se-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if regularizationFactor in section type 5 is
|
||||||
|
supported(true) or not(false)";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf little-endian-supported {
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
|
||||||
|
description
|
||||||
|
"All O-RUs support bigendian byte order. This node informs if module supports the
|
||||||
|
the optional capability for little endian byte order for C/U plane data flows.
|
||||||
|
|
||||||
|
Note - little endian support does not invalidate bigendian support.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
grouping compression-details {
|
||||||
|
description "";
|
||||||
|
|
||||||
|
leaf iq-bitwidth {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Bitwidth to be used in compression";
|
||||||
|
}
|
||||||
|
|
||||||
|
uses compression-params;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,414 @@
|
|||||||
|
module o-ran-interfaces {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:o-ran:interfaces:1.0";
|
||||||
|
prefix "o-ran-int";
|
||||||
|
|
||||||
|
|
||||||
|
import ietf-inet-types {
|
||||||
|
prefix "inet";
|
||||||
|
}
|
||||||
|
|
||||||
|
import iana-if-type {
|
||||||
|
prefix "ianaift";
|
||||||
|
}
|
||||||
|
|
||||||
|
import ietf-interfaces {
|
||||||
|
prefix "if";
|
||||||
|
}
|
||||||
|
|
||||||
|
import ietf-ip {
|
||||||
|
prefix "ip";
|
||||||
|
}
|
||||||
|
|
||||||
|
import ietf-hardware {
|
||||||
|
prefix "hw";
|
||||||
|
}
|
||||||
|
|
||||||
|
import ietf-yang-types {
|
||||||
|
prefix "yang";
|
||||||
|
}
|
||||||
|
|
||||||
|
import iana-hardware {
|
||||||
|
prefix "ianahw";
|
||||||
|
}
|
||||||
|
|
||||||
|
organization "O-RAN Alliance";
|
||||||
|
|
||||||
|
contact
|
||||||
|
"www.o-ran.org";
|
||||||
|
|
||||||
|
description
|
||||||
|
"This module defines the YANG definitions for managng the O-RAN
|
||||||
|
interfaces.
|
||||||
|
|
||||||
|
Copyright 2020 the O-RAN Alliance.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* Neither the Members of the O-RAN Alliance nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.";
|
||||||
|
|
||||||
|
revision "2020-04-17" {
|
||||||
|
description
|
||||||
|
"version 1.2.0
|
||||||
|
|
||||||
|
1) updated descriptions to clarify operation when vlan-tagging is false";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v03.00";
|
||||||
|
}
|
||||||
|
revision "2019-07-03" {
|
||||||
|
description
|
||||||
|
"version 1.1.0
|
||||||
|
|
||||||
|
1) increasing max elements for user plane DSCP markings to 64
|
||||||
|
2) re-organizing layout to facilitate cross-WG adoption, whilst ensuring
|
||||||
|
nodes are syntactically and semantically equivalent";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2019-02-04" {
|
||||||
|
description
|
||||||
|
"version 1.0.0
|
||||||
|
|
||||||
|
1) imported model from xRAN
|
||||||
|
2) changed namespace and reference from xran to o-ran";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature UDPIP-BASED-CU-PLANE {
|
||||||
|
description
|
||||||
|
"This feature indicates that the RU supports the UDP/IP based transport
|
||||||
|
for the CU plane.";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature ALIASMAC-BASED-CU-PLANE {
|
||||||
|
description
|
||||||
|
"This feature indicates that the RU supports the alias MAC address
|
||||||
|
based transport for the CU plane.";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
typedef pcp {
|
||||||
|
type uint8 {
|
||||||
|
range "0..7";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Priority Code Point. PCP is a 3-bit field that refers to the
|
||||||
|
class of service applied to a VLAN tagged frame. The
|
||||||
|
field specifies a priority value between 0 and 7, these values
|
||||||
|
can be used by quality of service (QoS) to prioritize
|
||||||
|
different classes of traffic.";
|
||||||
|
reference
|
||||||
|
"IEEE 802.1Q-2014: Virtual Bridged Local Area Networks";
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping cos-marking {
|
||||||
|
description
|
||||||
|
"Configuration data for CU Plane ethernet CoS marking.
|
||||||
|
This grouping is only applicable to an interface when vlan-tagging is
|
||||||
|
set to TRUE for that interface. In other cases, it may be ignored.";
|
||||||
|
container class-of-service {
|
||||||
|
description
|
||||||
|
"CoS Configuration";
|
||||||
|
leaf u-plane-marking {
|
||||||
|
type pcp;
|
||||||
|
default 7;
|
||||||
|
description
|
||||||
|
"Marking used for default u-plane flows.
|
||||||
|
7 represents highest priority for u-plane marking";
|
||||||
|
}
|
||||||
|
leaf c-plane-marking {
|
||||||
|
type pcp;
|
||||||
|
default 7;
|
||||||
|
description "7 represents highest priority for c-plane marking";
|
||||||
|
}
|
||||||
|
leaf m-plane-marking {
|
||||||
|
type pcp;
|
||||||
|
default 2;
|
||||||
|
description "2 represents highest excellent effort for m-plane marking";
|
||||||
|
}
|
||||||
|
leaf s-plane-marking {
|
||||||
|
type pcp;
|
||||||
|
default 7;
|
||||||
|
description "7 represents highest priority for s-plane marking";
|
||||||
|
}
|
||||||
|
leaf other-marking {
|
||||||
|
type pcp;
|
||||||
|
default 1;
|
||||||
|
description "1 represents best effort for other marking";
|
||||||
|
}
|
||||||
|
list enhanced-uplane-markings{
|
||||||
|
key "up-marking-name";
|
||||||
|
max-elements 4;
|
||||||
|
description
|
||||||
|
"list of mappings for enhanced (non-default) u-plane markings";
|
||||||
|
leaf up-marking-name {
|
||||||
|
type string;
|
||||||
|
description "The name of the marking";
|
||||||
|
}
|
||||||
|
leaf enhanced-marking {
|
||||||
|
type pcp;
|
||||||
|
description "the enhanced u-plane marking";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping dscp-marking {
|
||||||
|
description
|
||||||
|
"Configuration data for CU Plane DSCP marking";
|
||||||
|
container diffserv-markings {
|
||||||
|
description
|
||||||
|
"DSCP Configuration";
|
||||||
|
leaf u-plane-marking {
|
||||||
|
type inet:dscp;
|
||||||
|
default 46;
|
||||||
|
description
|
||||||
|
"Marking used for default u-plane flows.
|
||||||
|
46 represents expedited forwarding";
|
||||||
|
}
|
||||||
|
leaf c-plane-marking {
|
||||||
|
type inet:dscp;
|
||||||
|
default 46;
|
||||||
|
description "46 represents expedited forwarding";
|
||||||
|
}
|
||||||
|
leaf s-plane-marking {
|
||||||
|
type inet:dscp;
|
||||||
|
default 46;
|
||||||
|
description "46 represents expedited forwarding";
|
||||||
|
}
|
||||||
|
leaf other-marking {
|
||||||
|
type inet:dscp;
|
||||||
|
default 0;
|
||||||
|
description "0 represents best effort forwarding";
|
||||||
|
}
|
||||||
|
list enhanced-uplane-markings{
|
||||||
|
key up-marking-name;
|
||||||
|
max-elements 64;
|
||||||
|
description
|
||||||
|
"list of mappings for enhanced (non-default) u-plane markings";
|
||||||
|
leaf up-marking-name {
|
||||||
|
type string;
|
||||||
|
description "The name of the marking";
|
||||||
|
}
|
||||||
|
leaf enhanced-marking {
|
||||||
|
type inet:dscp;
|
||||||
|
description "the enhanced u-plane marking";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cross Working Group Augmentations Follow
|
||||||
|
|
||||||
|
// Cross Working Group augmentations for basic Ethernet leafs
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface" {
|
||||||
|
when "if:type = 'ianaift:ethernetCsmacd'" {
|
||||||
|
description "Applies to Ethernet interfaces";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Augment the interface model with parameters for
|
||||||
|
base Ethernet interface";
|
||||||
|
|
||||||
|
leaf l2-mtu {
|
||||||
|
type uint16 {
|
||||||
|
range "64 .. 65535";
|
||||||
|
}
|
||||||
|
units bytes;
|
||||||
|
default 1500;
|
||||||
|
description
|
||||||
|
"The maximum size of layer 2 frames that may be transmitted
|
||||||
|
or received on the interface (excluding any FCS overhead).
|
||||||
|
For Ethernet interfaces it also excludes the
|
||||||
|
4-8 byte overhead of any known (i.e. explicitly matched by
|
||||||
|
a child sub-interface) 801.1Q VLAN tags.";
|
||||||
|
}
|
||||||
|
leaf vlan-tagging {
|
||||||
|
type boolean;
|
||||||
|
default true;
|
||||||
|
description
|
||||||
|
"Indicates if VLAN tagging is used.
|
||||||
|
Default true is used to enable equipment to autonomously discover that
|
||||||
|
it is connected to a trunk port.
|
||||||
|
|
||||||
|
This may be set to false, for example, when the O-RU is directly
|
||||||
|
connected to the O-DU. In such cases, native Ethernet frames may be
|
||||||
|
used across the O-RAN interface, i.e., any PCP markings defined
|
||||||
|
in the cos-markings grouping are NOT used by the O-RU and any default
|
||||||
|
value or configured value using those leafs may be ignored by the O-RAN
|
||||||
|
equipment.";
|
||||||
|
}
|
||||||
|
uses cos-marking;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cross Working Group augmentation for l2vlan interfaces for VLAN definition
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface" {
|
||||||
|
when "if:type = 'ianaift:l2vlan'";
|
||||||
|
description "augments for VLAN definition";
|
||||||
|
leaf base-interface {
|
||||||
|
type if:interface-ref;
|
||||||
|
must "/if:interfaces/if:interface[if:name = current()]"
|
||||||
|
+ "/o-ran-int:vlan-tagging = 'true'" {
|
||||||
|
description
|
||||||
|
"The base interface must have VLAN tagging enabled.";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"The base interface for the VLAN sub-interafce.";
|
||||||
|
}
|
||||||
|
leaf vlan-id {
|
||||||
|
type uint16 {
|
||||||
|
range "1..4094";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"The VLAN-ID.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cross Working Group augmention for both ethernetCsmacd and l2vlan interfaces
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface" {
|
||||||
|
when "(if:type = 'ianaift:ethernetCsmacd') or
|
||||||
|
(if:type = 'ianaift:l2vlan')" {
|
||||||
|
description "Applies to ethernetCsmacd and l2vlan interfaces";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Augment the interface model with parameters for all
|
||||||
|
both ethernetCsmacd and l2vlan interfaces.";
|
||||||
|
leaf last-cleared {
|
||||||
|
type yang:date-and-time;
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"Timestamp of the last time the interface counters were
|
||||||
|
cleared.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cross Working Group augmention to ietf-ip covering DSCP for M-Plane
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface/ip:ipv4" {
|
||||||
|
description "augments for IPv4 based M-Plane transport";
|
||||||
|
leaf m-plane-marking {
|
||||||
|
type inet:dscp;
|
||||||
|
default 18;
|
||||||
|
description "18 represents AF21 or 'immediate traffic'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
augment "/if:interfaces/if:interface/ip:ipv6" {
|
||||||
|
description "augments for IPv6 based M-Plane transport";
|
||||||
|
leaf m-plane-marking {
|
||||||
|
type inet:dscp;
|
||||||
|
default 18;
|
||||||
|
description "18 represents AF21 or 'immediate traffic'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WG4 Specific Augmentations Follow
|
||||||
|
|
||||||
|
// WG4 Augmentation for basic Ethernet leafs
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface" {
|
||||||
|
if-feature ALIASMAC-BASED-CU-PLANE;
|
||||||
|
when "if:type = 'ianaift:ethernetCsmacd'" {
|
||||||
|
description
|
||||||
|
"Applies to WG4 Ethernet interfaces for alias MAC based CU-Plane";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Augment the interface model with parameters for
|
||||||
|
base Ethernet interface";
|
||||||
|
|
||||||
|
leaf-list alias-macs {
|
||||||
|
type yang:mac-address;
|
||||||
|
description
|
||||||
|
"Augments interfaces with range of alias MAC addresses.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WG4 Augmention for both ethernetCsmacd and l2vlan interfaces
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface" {
|
||||||
|
when "(if:type = 'ianaift:ethernetCsmacd') or
|
||||||
|
(if:type = 'ianaift:l2vlan')" {
|
||||||
|
description "Applies to ethernetCsmacd and l2vlan interfaces";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Augment the interface model with parameters for all
|
||||||
|
both ethernetCsmacd and l2vlan interfaces.";
|
||||||
|
leaf mac-address {
|
||||||
|
type yang:mac-address;
|
||||||
|
description
|
||||||
|
"The MAC address of the interface.";
|
||||||
|
}
|
||||||
|
container port-reference {
|
||||||
|
description
|
||||||
|
"a port reference used by other O-RAN modules";
|
||||||
|
leaf port-name {
|
||||||
|
type leafref {
|
||||||
|
path '/hw:hardware/hw:component/hw:name';
|
||||||
|
}
|
||||||
|
must "derived-from-or-self(deref(current())/../hw:class, 'ianahw:port')";
|
||||||
|
// TAKE NOTE - depending on version of pyang, this may generate various
|
||||||
|
// warnings, e.g., warning: XPath for "port-name" does not exist
|
||||||
|
description
|
||||||
|
"O-RAN interfaces use a reference to a physical port component.
|
||||||
|
|
||||||
|
In this case, the component name referenced must be of class type
|
||||||
|
port, i.e., when /hw:hardware/hw:component/hw:class is derived from
|
||||||
|
ianahw:port";
|
||||||
|
}
|
||||||
|
leaf port-number {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"A number allocated by the server which identifies a port.
|
||||||
|
Port number value is 0 to N-1 where N is number of ports
|
||||||
|
in the device.
|
||||||
|
|
||||||
|
This value is fixed for the lifetime of the equipment, i.e., cannot be
|
||||||
|
changed during equipment reboots.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WG4 specific augmention to ietf-ip covering DSCP for CUS Plane
|
||||||
|
|
||||||
|
augment "/if:interfaces/if:interface/ip:ipv4" {
|
||||||
|
if-feature UDPIP-BASED-CU-PLANE;
|
||||||
|
description "augments for IPv4 based CUS transport";
|
||||||
|
uses dscp-marking;
|
||||||
|
}
|
||||||
|
augment "/if:interfaces/if:interface/ip:ipv6" {
|
||||||
|
if-feature UDPIP-BASED-CU-PLANE;
|
||||||
|
description "augments for IPv6 based CUS transport";
|
||||||
|
uses dscp-marking;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Other Working Group Specific Augmentations Follow Here
|
||||||
|
|
||||||
|
|
||||||
|
rpc reset-interface-counters {
|
||||||
|
description
|
||||||
|
"Management plane triggered restart of the interface counters.";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,840 @@
|
|||||||
|
module o-ran-module-cap {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:o-ran:module-cap:1.0";
|
||||||
|
prefix "o-ran-module-cap";
|
||||||
|
|
||||||
|
import o-ran-compression-factors {
|
||||||
|
prefix "cf";
|
||||||
|
revision-date 2020-08-10;
|
||||||
|
}
|
||||||
|
|
||||||
|
organization "O-RAN Alliance";
|
||||||
|
|
||||||
|
contact
|
||||||
|
"www.o-ran.org";
|
||||||
|
|
||||||
|
description
|
||||||
|
"This module defines the module capabilities for
|
||||||
|
the O-RAN Radio Unit.
|
||||||
|
|
||||||
|
Copyright 2020 the O-RAN Alliance.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* Neither the Members of the O-RAN Alliance nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.";
|
||||||
|
|
||||||
|
revision "2020-08-10" {
|
||||||
|
description
|
||||||
|
"version 4.0.0
|
||||||
|
|
||||||
|
1) added RO capability to expose O-RU's ability to support udCompLen record in U-Plane section header fields
|
||||||
|
2) feature indicating support for static PRACH configuration introduced
|
||||||
|
3) feature indicating support for static SRS configuration introduced
|
||||||
|
4) feature indicating support for TDD pattern configuration introduced
|
||||||
|
5) backward compatible change to introduce new O-RU's features related
|
||||||
|
to Section Description Priority to serve for CUS-Plane C";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v04.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2020-04-17" {
|
||||||
|
description
|
||||||
|
"version 3.0.0
|
||||||
|
|
||||||
|
1) Adding optional little endian support
|
||||||
|
2) Added support for Dynamic Spectrum Sharing feature
|
||||||
|
3) Enable number-of-ru-ports to be different between dl and ul
|
||||||
|
4) Enable regularizationFactor to be signalled outside of section type 6
|
||||||
|
5) Enable PRACH preamble formats supported to be signalled by O-RU
|
||||||
|
6) adding support for selective RE sending
|
||||||
|
7) supporting new section extension for grouping multiple ports
|
||||||
|
8) signalling to enable O-RU to ndicate is requires unique ecpri sequence id
|
||||||
|
for eAxC_IDs serving for UL and DL for the same carrier component";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v03.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2019-07-03" {
|
||||||
|
description
|
||||||
|
"version 1.1.0
|
||||||
|
|
||||||
|
1) backward compatible change to introduce new RW leafs for use in
|
||||||
|
constraints in uplane-config and laa models.
|
||||||
|
2) removing unnecessary relations to band 46 in uplink";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2019-02-04" {
|
||||||
|
description
|
||||||
|
"version 1.0.0
|
||||||
|
|
||||||
|
1) imported model from xRAN
|
||||||
|
2) changed namespace and reference from xran to o-ran";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature LAA {
|
||||||
|
description
|
||||||
|
"Indicates that the Radio Unit supports LAA.";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature EAXC-ID-GROUP-SUPPORTED {
|
||||||
|
description
|
||||||
|
"indicates that the Radio Unit supports EAXC-ID-GROUP-SUPPORTED.";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature TRANSPORT-FRAGMENTATION {
|
||||||
|
description
|
||||||
|
"This leaf is used to indicate whether the O-RU supports O-RAN Radio Transport Fragmentation";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature DSS_LTE_NR {
|
||||||
|
description
|
||||||
|
"Indicates that the Radio Unit supports Dynamic Spectrum Sharing between LTE and NR.";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature PRACH-STATIC-CONFIGURATION-SUPPORTED {
|
||||||
|
description
|
||||||
|
"This leaf is used to indicate O-RU's support for configuration of PRACH (Physical Random Access Channel) pattern in the static manner, so that PRACH U-Plane traffic can be processed by RU without receiving C-Plane messages conveying the PRACH configuration.";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature SRS-STATIC-CONFIGURATION-SUPPORTED {
|
||||||
|
description
|
||||||
|
"This leaf is used to indicate O-RU's support for configuration of SRS (Sounding Reference Signal Channel) pattern in the static manner, so that SRS U-Plane traffic can be processed by RU without receiving C-Plane messages conveying the SRS configuration.";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature CONFIGURABLE-TDD-PATTERN-SUPPORTED {
|
||||||
|
description
|
||||||
|
"This leaf is used to indicate O-RU's support for configurable TDD pattern.";
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef sub-band-string {
|
||||||
|
type string {
|
||||||
|
pattern [ABCD];
|
||||||
|
}
|
||||||
|
description "Sub bands definition";
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef scs-config-type {
|
||||||
|
type enumeration {
|
||||||
|
enum KHZ_15 {
|
||||||
|
value 0;
|
||||||
|
description
|
||||||
|
"15kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_30 {
|
||||||
|
value 1;
|
||||||
|
description
|
||||||
|
"30kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_60 {
|
||||||
|
value 2;
|
||||||
|
description
|
||||||
|
"60kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_120 {
|
||||||
|
value 3;
|
||||||
|
description
|
||||||
|
"120kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_240 {
|
||||||
|
value 4;
|
||||||
|
description
|
||||||
|
"240kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_1_25 {
|
||||||
|
value 12;
|
||||||
|
description
|
||||||
|
"1,25kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_3_75 {
|
||||||
|
value 13;
|
||||||
|
description
|
||||||
|
"3.75kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_5 {
|
||||||
|
value 14;
|
||||||
|
description
|
||||||
|
"5kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
enum KHZ_7_5 {
|
||||||
|
value 15;
|
||||||
|
description
|
||||||
|
"7.5kHz sub carrier spacing";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
description
|
||||||
|
"Scs configuration type definition";
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping compression-method-grouping {
|
||||||
|
description
|
||||||
|
"Grouping for compression method.";
|
||||||
|
|
||||||
|
leaf compression-method {
|
||||||
|
type enumeration {
|
||||||
|
enum BLOCK_FLOATING_POINT {
|
||||||
|
description
|
||||||
|
"Block floating point compression and decompression will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum BLOCK_SCALING {
|
||||||
|
description
|
||||||
|
"Block scaling compression and decompresion will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum U_LAW {
|
||||||
|
description
|
||||||
|
"u-Law compression and decompresion method will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum BEAMSPACE {
|
||||||
|
description
|
||||||
|
"Beamspace compression and decompression will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum MODULATION {
|
||||||
|
description
|
||||||
|
"Modulation compression and decompression will be used";
|
||||||
|
}
|
||||||
|
|
||||||
|
enum BLOCK-FLOATING-POINT-SELECTIVE-RE-SENDING {
|
||||||
|
description
|
||||||
|
"block floating point with selective re sending
|
||||||
|
compression and decompression will be used";
|
||||||
|
}
|
||||||
|
enum MODULATION-COMPRESSION-SELECTIVE-RE-SENDING {
|
||||||
|
description
|
||||||
|
"modulation compression with selective re sending
|
||||||
|
compression and decompression will be used";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Compresion method which can be supported by the O-RU.
|
||||||
|
An O-RU may further refine the applicability of compression
|
||||||
|
methods per endpoint using o-ran-uplane-conf.yang model";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping sub-band-max-min-ul-dl-frequency {
|
||||||
|
description
|
||||||
|
"Grouping for defining max and min supported frequency - dl and ul.";
|
||||||
|
|
||||||
|
leaf max-supported-frequency-dl {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum supported downlink frequency in the
|
||||||
|
LAA subband. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf min-supported-frequency-dl {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Minimum supported downlink frequency in the
|
||||||
|
LAA subband. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping format-of-iq-sample {
|
||||||
|
description
|
||||||
|
"Indicates module capabilities about IQ samples";
|
||||||
|
|
||||||
|
leaf dynamic-compression-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if radio supports dynamic compression method";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf realtime-variable-bit-width-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if O-RU supports realtime variable bit with";
|
||||||
|
}
|
||||||
|
|
||||||
|
list compression-method-supported {
|
||||||
|
uses cf:compression-details;
|
||||||
|
|
||||||
|
leaf-list fs-offset {
|
||||||
|
if-feature cf:CONFIGURABLE-FS-OFFSET;
|
||||||
|
type uint8;
|
||||||
|
default 0;
|
||||||
|
description
|
||||||
|
"List of fs offset values supported with this IQ format / compression method;
|
||||||
|
fs-offset adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
|
||||||
|
Please refer to CU-Plane specification for details";
|
||||||
|
}
|
||||||
|
|
||||||
|
description
|
||||||
|
"List of supported compression methods by O-RU
|
||||||
|
Note: if O-RU supports different compression methods per endpoint
|
||||||
|
then please refer to endpoints to have information what
|
||||||
|
exactly is supported on paticular endpoint";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf variable-bit-width-per-channel-supported {
|
||||||
|
when "/module-capability/ru-capabilities/format-of-iq-sample/realtime-variable-bit-width-supported = 'true'";
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if variable bit width per channel is supported or not";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf syminc-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if symbol number increment command in a C-Plane is
|
||||||
|
supported or not";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf regularization-factor-se-supported {
|
||||||
|
type boolean;
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs if regularizationFactor in section type 5 is
|
||||||
|
supported(true) or not(false)";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf little-endian-supported {
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
|
||||||
|
description
|
||||||
|
"All O-RUs support bigendian byte order. This node informs if module supports the
|
||||||
|
the optional capability for little endian byte order for C/U plane data flows.
|
||||||
|
|
||||||
|
Note - little endian support does not invalidate bigendian support.";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping scs-a-b {
|
||||||
|
description
|
||||||
|
"Grouping for scs-a and scs-b";
|
||||||
|
leaf scs-a{
|
||||||
|
type scs-config-type;
|
||||||
|
description
|
||||||
|
"Sub-carrier spacing configuration";
|
||||||
|
}
|
||||||
|
leaf scs-b{
|
||||||
|
type scs-config-type;
|
||||||
|
description
|
||||||
|
"Sub-carrier spacing configuration";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping ul-mixed-num-required-guard-rbs {
|
||||||
|
description
|
||||||
|
"Required number of guard resource blocks for the combination of
|
||||||
|
subcarrier spacing values for uplink";
|
||||||
|
uses scs-a-b;
|
||||||
|
leaf number-of-guard-rbs-ul{
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This value indicates the required number of guard resource blocks
|
||||||
|
between the mixed numerologies, the RB using scs-a and the RB
|
||||||
|
using scs-b. It's number is based on scs-a";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping dl-mixed-num-required-guard-rbs {
|
||||||
|
description
|
||||||
|
"Required number of guard resource blocks for the combination of
|
||||||
|
subcarrier spacing values for uplink";
|
||||||
|
uses scs-a-b;
|
||||||
|
leaf number-of-guard-rbs-dl{
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This value indicates the required number of guard resource blocks
|
||||||
|
between the mixed numerologies, the RB using scs-a and the RB
|
||||||
|
using scs-b. It's number is based on scs-a";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping ru-capabilities {
|
||||||
|
description
|
||||||
|
"Structure representing set of capabilities.";
|
||||||
|
|
||||||
|
leaf ru-supported-category {
|
||||||
|
type enumeration {
|
||||||
|
enum CAT_A {
|
||||||
|
description
|
||||||
|
"Informs that precoding is not supported in O-RU";
|
||||||
|
}
|
||||||
|
enum CAT_B {
|
||||||
|
description
|
||||||
|
"Informs that precoding is supported in O-RU";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
description
|
||||||
|
"Informs about which category O-RU supports";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf number-of-ru-ports {
|
||||||
|
type uint8;
|
||||||
|
status deprecated;
|
||||||
|
description
|
||||||
|
"Assuming all endpoints support time-managed traffic AND non-time-managed traffic (choice is as per configuration)
|
||||||
|
- the number of O-RU ports is the product of number of spatial streams (leaf number-of-spatial-streams) and number of numerologies O-RU supports.
|
||||||
|
For example, if the number of spatial streams is 4 then the number of O-RU ports is 8 when PUSCH and PRACH are processed in the different endpoints.
|
||||||
|
In case there are specific endpoints that support non-time-managed traffic only
|
||||||
|
- the number of O-RU ports calculated with above mentioned equation is extended by number of endpoints supporting only non-time-managed traffic.";
|
||||||
|
}
|
||||||
|
leaf number-of-ru-ports-ul {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Assuming all endpoints support time-managed traffic AND non-time-managed traffic (choice is as per configuration)
|
||||||
|
- the number of O-RU ports for uplink is the product of number of spatial streams (leaf number-of-spatial-streams) and number of numerologies O-RU supports.
|
||||||
|
For example, if the number of spatial streams is 4 then the number of O-RU ports is 8 when PUSCH and PRACH are processed in the different endpoints.
|
||||||
|
In case there are specific endpoints that support non-time-managed traffic only
|
||||||
|
- the number of O-RU ports calculated with above mentioned equation is extended by number of endpoints supporting only non-time-managed traffic.";
|
||||||
|
}
|
||||||
|
leaf number-of-ru-ports-dl {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Assuming all endpoints support time-managed traffic AND non-time-managed traffic (choice is as per configuration)
|
||||||
|
- the number of O-RU ports for downlink is the product of number of spatial streams (leaf number-of-spatial-streams) and number of numerologies O-RU supports.
|
||||||
|
For example, if the number of spatial streams is 4 then the number of O-RU ports is 8 when SSB and non-SSB are processed in the different endpoints.
|
||||||
|
In case there are specific endpoints that support non-time-managed traffic only
|
||||||
|
- the number of O-RU ports calculated with above mentioned equation is extended by number of endpoints supporting only non-time-managed traffic.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf number-of-spatial-streams {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This value indicates the number of spatial streams supported at O-RU for DL and UL.
|
||||||
|
For DL, it is same as the number of antenna ports specified in 3GPP TS38.214, Section 5.2 and 3GPP TS36.213, Section 5.2.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-power-per-pa-antenna {
|
||||||
|
type decimal64{
|
||||||
|
fraction-digits 4;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This value indicates Maximum Power per PA per antenna. Value unit is dBm.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf min-power-per-pa-antenna {
|
||||||
|
type decimal64{
|
||||||
|
fraction-digits 4;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This value indicates Minimum Power per PA per antenna. Value unit is dBm.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf fronthaul-split-option {
|
||||||
|
type uint8 {
|
||||||
|
range "7";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This value indicates the Fronthaul Split Option, i.e., 2 or 7 in this release.";
|
||||||
|
}
|
||||||
|
|
||||||
|
container format-of-iq-sample {
|
||||||
|
description
|
||||||
|
"Indicates module capabilities about IQ samples";
|
||||||
|
|
||||||
|
uses format-of-iq-sample;
|
||||||
|
}
|
||||||
|
|
||||||
|
list ul-mixed-num-required-guard-rbs {
|
||||||
|
key "scs-a scs-b";
|
||||||
|
description
|
||||||
|
"List of required number of guard resource blocks
|
||||||
|
for the combination of subcarrier spacing values for downlink";
|
||||||
|
|
||||||
|
uses ul-mixed-num-required-guard-rbs;
|
||||||
|
}
|
||||||
|
list dl-mixed-num-required-guard-rbs {
|
||||||
|
key "scs-a scs-b";
|
||||||
|
description
|
||||||
|
"List of required number of guard resource blocks
|
||||||
|
for the combination of subcarrier spacing values for uplink";
|
||||||
|
|
||||||
|
uses dl-mixed-num-required-guard-rbs;
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf energy-saving-by-transmission-blanks {
|
||||||
|
type boolean;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"Parameter informs if unit supports energy saving by transmission blanking";
|
||||||
|
}
|
||||||
|
container eaxcid-grouping-capabilities {
|
||||||
|
if-feature o-ran-module-cap:EAXC-ID-GROUP-SUPPORTED;
|
||||||
|
description
|
||||||
|
"a container with parameters for eaxcid grouping";
|
||||||
|
leaf max-num-tx-eaxc-id-groups {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Maximum number of configurable tx-eaxc-id-group supported by O-RU.";
|
||||||
|
}
|
||||||
|
leaf max-num-tx-eaxc-ids-per-group {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"Maximum number of member-tx-eaxc-id in single tx-eaxc-id-group supported by O-RU.";
|
||||||
|
}
|
||||||
|
leaf max-num-rx-eaxc-id-groups {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"the maximum number of groups with the eAxC IDs those are assigned to low-level-rx-links.";
|
||||||
|
}
|
||||||
|
leaf max-num-rx-eaxc-ids-per-group {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"the maximum number of eAxC IDs per rx-eaxc-id-group.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf dynamic-transport-delay-management-supported {
|
||||||
|
type boolean;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"Parameter informs if unit supports dynamic transport delay management through eCPRI Msg 5";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf support-only-unique-ecpri-seqid-per-eaxc {
|
||||||
|
type boolean;
|
||||||
|
default false;
|
||||||
|
description
|
||||||
|
"Parameter informs if O-RU expects unique ecpri sequence id for eAxC_IDs serving
|
||||||
|
for UL and DL for the same carrier component.
|
||||||
|
|
||||||
|
Note: If this is set to TRUE, the O-DU can decide to either use different eAxC_IDs for UL and
|
||||||
|
DL or can generate unique sequence ID per eAxC_ID.
|
||||||
|
|
||||||
|
TAKE NOTE: This leaf is backwards compatible from an O-RU persepctive BUT an O-RU that
|
||||||
|
sets this leaf to TRUE may result in incompatibilities when operating with an O-DU
|
||||||
|
designed according to the O-RAN CUS-Plane Specification v02.00, e.g., if the O-DU is
|
||||||
|
incapable of using different eAxC values between UL and DL";
|
||||||
|
}
|
||||||
|
|
||||||
|
container coupling-methods {
|
||||||
|
description
|
||||||
|
"O-RU's capabilities related to supported C-Plane and U-Plane coupling methods";
|
||||||
|
|
||||||
|
leaf coupling-via-frequency-and-time {
|
||||||
|
type boolean;
|
||||||
|
description
|
||||||
|
"Coupling via frequency and time; see methods of coupling of C-plane and U-plane in CUS-Plane specification";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf coupling-via-frequency-and-time-with-priorities {
|
||||||
|
type boolean;
|
||||||
|
description
|
||||||
|
"Coupling via Frequency and time with priorities; see methods of coupling of C-plane and U-plane in CUS-Plane specification.
|
||||||
|
Note: If coupling-via-frequency-and-time-with-priorities is 'true' then coupling-via-frequency-and-time shall also be 'true'.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf ud-comp-len-supported {
|
||||||
|
type boolean;
|
||||||
|
description
|
||||||
|
"This property informs if O-RU supports optional field udCompLen in U-Plane messages.
|
||||||
|
Only in case this leaf is present and its value is TRUE, O-RU supports U-Plane messages
|
||||||
|
containing udCompLen field in section header.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping sub-band-info {
|
||||||
|
description "container for collection of leafs for LAA subband 46";
|
||||||
|
list sub-band-frequency-ranges {
|
||||||
|
key sub-band;
|
||||||
|
description "frequency information on a per sub-band basis";
|
||||||
|
leaf sub-band {
|
||||||
|
type sub-band-string;
|
||||||
|
description "Sub band when band 46";
|
||||||
|
}
|
||||||
|
uses sub-band-max-min-ul-dl-frequency;
|
||||||
|
}
|
||||||
|
leaf number-of-laa-scarriers {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This value indicates the number of LAA secondary carriers supported at O-RU.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf maximum-laa-buffer-size {
|
||||||
|
type uint16;
|
||||||
|
description
|
||||||
|
"Maximum O-RU buffer size in Kilobytes (KB) per CC. This parameter is
|
||||||
|
needed at the O-DU to know how much data can be sent in advance
|
||||||
|
and stored at the O-RU to address the LBT uncertainity.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf maximum-processing-time {
|
||||||
|
type uint16;
|
||||||
|
units microseconds;
|
||||||
|
description
|
||||||
|
"Maximum O-RU Processing time in microseconds at the O-RU to handle the
|
||||||
|
received/transmitted packets from/to the O-DU. This parameter is
|
||||||
|
needed at the O-DU to determine the time where it needs to send
|
||||||
|
the data to the O-RU.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf self-configure {
|
||||||
|
type boolean;
|
||||||
|
description "This value indicates that the O-RU can manage the contention window locally. ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping support-for-dl {
|
||||||
|
description
|
||||||
|
"Grouping for DL specific parameters";
|
||||||
|
|
||||||
|
leaf max-supported-frequency-dl {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum supported downlink frequency. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf min-supported-frequency-dl {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Minimum supported downlink frequency. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-supported-bandwidth-dl {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum total downlink bandwidth in module. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-num-carriers-dl {
|
||||||
|
type uint32;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum number of downlink carriers in module.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-carrier-bandwidth-dl {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum bandwidth per downlink carrier. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf min-carrier-bandwidth-dl {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Minimum bandwidth per downlink carrier. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf-list supported-technology-dl {
|
||||||
|
type enumeration{
|
||||||
|
enum LTE {
|
||||||
|
description "LTE is supported in DL path.";
|
||||||
|
}
|
||||||
|
enum NR {
|
||||||
|
description "NR is supported in DL path.";
|
||||||
|
}
|
||||||
|
enum DSS_LTE_NR {
|
||||||
|
if-feature DSS_LTE_NR;
|
||||||
|
description
|
||||||
|
"DSS is supported in the DL, which implicitly means LTE and NR are also
|
||||||
|
BOTH supported in the DL.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
min-elements 1;
|
||||||
|
description
|
||||||
|
"This list provides information regarding technologies supported in DL path";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping support-for-ul {
|
||||||
|
description
|
||||||
|
"Grouping for UL specific parameters";
|
||||||
|
|
||||||
|
leaf max-supported-frequency-ul {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum supported uplink frequency. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf min-supported-frequency-ul {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Minimum supported uplink frequency. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-supported-bandwidth-ul {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum total uplink bandwidth in module. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-num-carriers-ul {
|
||||||
|
type uint32;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum number of uplink carriers in module.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-carrier-bandwidth-ul {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Maximum bandwidth per uplink carrier. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf min-carrier-bandwidth-ul {
|
||||||
|
type uint64;
|
||||||
|
description
|
||||||
|
"This value indicates Minimum bandwidth per uplink carrier. Value unit is Hz.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf-list supported-technology-ul {
|
||||||
|
type enumeration{
|
||||||
|
enum LTE {
|
||||||
|
description "LTE is supported in UL path.";
|
||||||
|
}
|
||||||
|
enum NR {
|
||||||
|
description "NR is supported in UL path.";
|
||||||
|
}
|
||||||
|
enum DSS_LTE_NR {
|
||||||
|
if-feature DSS_LTE_NR;
|
||||||
|
description
|
||||||
|
"DSS is supported in the UL, which implicitly means LTE and NR are also
|
||||||
|
BOTH supported in the UL.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
min-elements 1;
|
||||||
|
description
|
||||||
|
"This list provides information regarding technologies supported in UL path";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping band-capabilities {
|
||||||
|
description
|
||||||
|
"Capabilities that are needed to be defined per each band";
|
||||||
|
|
||||||
|
leaf band-number {
|
||||||
|
type uint16;
|
||||||
|
description
|
||||||
|
"Band number";
|
||||||
|
}
|
||||||
|
|
||||||
|
container sub-band-info {
|
||||||
|
when "../band-number = '46'";
|
||||||
|
if-feature "o-ran-module-cap:LAA";
|
||||||
|
description "container for collection of leafs for LAA subband 46";
|
||||||
|
uses sub-band-info;
|
||||||
|
}
|
||||||
|
|
||||||
|
uses support-for-dl;
|
||||||
|
uses support-for-ul;
|
||||||
|
|
||||||
|
leaf max-num-component-carriers {
|
||||||
|
type uint8;
|
||||||
|
description "maximum number of component carriers supported by the O-RU";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-num-bands {
|
||||||
|
type uint16;
|
||||||
|
description "maximum number of bands supported by the O-RU";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-num-sectors {
|
||||||
|
type uint8;
|
||||||
|
description "maximum number of sectors supported by the O-RU";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf max-power-per-antenna {
|
||||||
|
type decimal64{
|
||||||
|
fraction-digits 4;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This value indicates Maximum Power per band per antenna. Value unit is dBm.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf min-power-per-antenna {
|
||||||
|
type decimal64{
|
||||||
|
fraction-digits 4;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This value indicates Minimum Power per band per antenna. Value unit is dBm.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf codebook-configuration_ng {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This parameter informs the precoder codebook_ng that are used for precoding";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf codebook-configuration_n1 {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This parameter informs the precoder codebook_n1 that are used for precoding";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf codebook-configuration_n2 {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This parameter informs the precoder codebook_n2 that are used for precoding";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
container module-capability {
|
||||||
|
|
||||||
|
description
|
||||||
|
"module capability object responsible for providing module capability.";
|
||||||
|
|
||||||
|
container ru-capabilities {
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"Structure representing set of capabilities.";
|
||||||
|
|
||||||
|
uses ru-capabilities;
|
||||||
|
}
|
||||||
|
|
||||||
|
list band-capabilities {
|
||||||
|
key band-number;
|
||||||
|
config false;
|
||||||
|
description
|
||||||
|
"Capabilities that are needed to be defined per each band";
|
||||||
|
|
||||||
|
uses band-capabilities;
|
||||||
|
}
|
||||||
|
container rw-sub-band-info {
|
||||||
|
if-feature "o-ran-module-cap:LAA";
|
||||||
|
description "config true leafrefs for use as constraints for config true leafs";
|
||||||
|
leaf rw-number-of-laa-scarriers {
|
||||||
|
type leafref {
|
||||||
|
path "/module-capability/band-capabilities/sub-band-info/number-of-laa-scarriers";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This value indicates the number of LAA secondary carriers supported at O-RU.";
|
||||||
|
}
|
||||||
|
leaf rw-self-configure {
|
||||||
|
type leafref {
|
||||||
|
path "/module-capability/band-capabilities/sub-band-info/self-configure";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This value indicates that the O-RU can manage the contention window locally.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,362 @@
|
|||||||
|
module o-ran-processing-element {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:o-ran:processing-element:1.0";
|
||||||
|
prefix "o-ran-elements";
|
||||||
|
|
||||||
|
import ietf-yang-types {
|
||||||
|
prefix yang;
|
||||||
|
}
|
||||||
|
|
||||||
|
import ietf-inet-types {
|
||||||
|
prefix "inet";
|
||||||
|
}
|
||||||
|
|
||||||
|
import ietf-interfaces {
|
||||||
|
prefix "if";
|
||||||
|
}
|
||||||
|
|
||||||
|
import ietf-ip {
|
||||||
|
prefix "ip";
|
||||||
|
}
|
||||||
|
|
||||||
|
import o-ran-interfaces {
|
||||||
|
prefix "o-ran-int";
|
||||||
|
}
|
||||||
|
|
||||||
|
organization "O-RAN Alliance";
|
||||||
|
|
||||||
|
contact
|
||||||
|
"www.o-ran.org";
|
||||||
|
|
||||||
|
description
|
||||||
|
"This module defines the YANG definitions for mapping of transport flows to
|
||||||
|
processing elements. Three options are supported:
|
||||||
|
i) virtual MAC based mapping
|
||||||
|
ii) MAC addrress + VLAN-ID based mapping
|
||||||
|
iii) UDP/IP based mapping
|
||||||
|
|
||||||
|
Copyright 2020 the O-RAN Alliance.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the above disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* Neither the Members of the O-RAN Alliance nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.";
|
||||||
|
|
||||||
|
revision "2020-04-17" {
|
||||||
|
description
|
||||||
|
"version 3.0.0
|
||||||
|
|
||||||
|
1) added new enum SHARED-CELL-ETH-INTERFACE in
|
||||||
|
transport-session-type and new containers north-eth-flow and
|
||||||
|
south-eth-flow to enable Shared cell scenario.";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v03.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
revision "2019-07-03" {
|
||||||
|
description
|
||||||
|
"version 1.1.0
|
||||||
|
|
||||||
|
1) added new leaf to enable O-RU to report the maximum number of
|
||||||
|
transport flows it can support, e.g., due to restrictions on number
|
||||||
|
of VLAN-IDs when ethernet type transport is used.";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
revision "2019-02-04" {
|
||||||
|
description
|
||||||
|
"version 1.0.0
|
||||||
|
|
||||||
|
1) imported model from xRAN
|
||||||
|
2) changed namespace and reference from xran to o-ran";
|
||||||
|
|
||||||
|
reference "ORAN-WG4.M.0-v01.00";
|
||||||
|
}
|
||||||
|
|
||||||
|
feature SHARED_CELL {
|
||||||
|
description
|
||||||
|
"Presence of feature indicates that this O-RU is capable to support
|
||||||
|
shared cell.";
|
||||||
|
}
|
||||||
|
// groupings
|
||||||
|
|
||||||
|
grouping pe-group {
|
||||||
|
leaf maximum-number-of-transport-flows {
|
||||||
|
type uint16 {
|
||||||
|
range "1..4094";
|
||||||
|
}
|
||||||
|
config false;
|
||||||
|
default 4094;
|
||||||
|
description
|
||||||
|
"The maximum number of transport flows that can be supported by an O-RU";
|
||||||
|
}
|
||||||
|
leaf transport-session-type {
|
||||||
|
type enumeration {
|
||||||
|
enum ETH-INTERFACE {
|
||||||
|
description "VLAN based CUS Transport ";
|
||||||
|
}
|
||||||
|
enum UDPIP-INTERFACE {
|
||||||
|
description "UDP/IP based CUS Transport ";
|
||||||
|
}
|
||||||
|
enum ALIASMAC-INTERFACE{
|
||||||
|
description "Alias MAC address based CUS Transport ";
|
||||||
|
}
|
||||||
|
enum SHARED-CELL-ETH-INTERFACE {
|
||||||
|
if-feature "SHARED_CELL";
|
||||||
|
description "VLAN based CUS Transport used for Shared Cell scenario";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default ETH-INTERFACE;
|
||||||
|
description
|
||||||
|
"the type of transport session used for identifying different processing
|
||||||
|
elements";
|
||||||
|
}
|
||||||
|
container enhanced-uplane-mapping {
|
||||||
|
presence "indicates that enhanced uplane mapping is used";
|
||||||
|
description "a mapping table for enhanced user plane marking";
|
||||||
|
list uplane-mapping {
|
||||||
|
key "up-marking-name";
|
||||||
|
description
|
||||||
|
"a mapping between up-link name and o-ran-interfaces:up-marking-name";
|
||||||
|
leaf up-marking-name {
|
||||||
|
type string;
|
||||||
|
description "a unique up marking name that is used for enhanced up marking";
|
||||||
|
}
|
||||||
|
choice up-markings {
|
||||||
|
description
|
||||||
|
"U-Plane markings";
|
||||||
|
case ethernet {
|
||||||
|
when "(../../transport-session-type = 'ALIASMAC-INTERFACE') or
|
||||||
|
(../../transport-session-type = 'ETH-INTERFACE') or
|
||||||
|
(../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE')";
|
||||||
|
leaf up-cos-name {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface/o-ran-int:class-of-service/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
|
||||||
|
}
|
||||||
|
description "the Ethernet U-plane transport marking as defined in o-ran-interfaces";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case ipv4 {
|
||||||
|
when "(../../transport-session-type = 'UDPIP-INTERFACE')";
|
||||||
|
leaf upv4-dscp-name {
|
||||||
|
if-feature o-ran-int:UDPIP-BASED-CU-PLANE;
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface/ip:ipv4/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
|
||||||
|
}
|
||||||
|
description "the IPv4 U-plane transport marking as defined in o-ran-interfaces";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case ipv6 {
|
||||||
|
when "(../../transport-session-type = 'UDPIP-INTERFACE')";
|
||||||
|
leaf upv6-dscp-name {
|
||||||
|
if-feature o-ran-int:UDPIP-BASED-CU-PLANE;
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface/ip:ipv6/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
|
||||||
|
}
|
||||||
|
description "the IPv6 U-plane transport marking as defined in o-ran-interfaces";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list ru-elements {
|
||||||
|
key "name";
|
||||||
|
description
|
||||||
|
"the list of transport definitions for each processing element";
|
||||||
|
leaf name {
|
||||||
|
type string {
|
||||||
|
length "1..255";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"A name that is unique across the O-RU that identifies a processing
|
||||||
|
element instance.
|
||||||
|
|
||||||
|
This name may be used in fault management to refer to a fault source
|
||||||
|
or affected object";
|
||||||
|
}
|
||||||
|
container transport-flow {
|
||||||
|
description
|
||||||
|
"container for the transport-flow used for CU plane";
|
||||||
|
leaf interface-name {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface/if:name";
|
||||||
|
}
|
||||||
|
description "the interface name ";
|
||||||
|
}
|
||||||
|
container aliasmac-flow {
|
||||||
|
when "../../../transport-session-type = 'ALIASMAC-INTERFACE'";
|
||||||
|
if-feature o-ran-int:ALIASMAC-BASED-CU-PLANE;
|
||||||
|
description "leafs for virtual mac type data flows";
|
||||||
|
leaf ru-aliasmac-address {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:alias-macs";
|
||||||
|
}
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"O-RU's alias MAC address used for alias MAC based flow";
|
||||||
|
}
|
||||||
|
leaf vlan-id {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"O-RU's VLAN-ID used for alias MAC based flow";
|
||||||
|
}
|
||||||
|
leaf o-du-mac-address {
|
||||||
|
type yang:mac-address;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"O-DU's MAC address used for alias MAC based flow";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
container eth-flow {
|
||||||
|
when "../../../transport-session-type = 'ETH-INTERFACE'";
|
||||||
|
description "leafs for mac + vlan-id type data flows";
|
||||||
|
leaf ru-mac-address {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
|
||||||
|
}
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"O-RU's MAC address used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
leaf vlan-id {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
|
||||||
|
}
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"O-RU's VLAN-ID used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
leaf o-du-mac-address {
|
||||||
|
type yang:mac-address;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"O-DU's MAC address used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
container udpip-flow {
|
||||||
|
when "../../../transport-session-type = 'UDPIP-INTERFACE'";
|
||||||
|
description "leafs for UDP/IP type data flows";
|
||||||
|
choice address {
|
||||||
|
leaf ru-ipv4-address {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv4/ip:address/ip:ip";
|
||||||
|
}
|
||||||
|
description "O-RU's IPv4 address";
|
||||||
|
}
|
||||||
|
leaf ru-ipv6-address {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv6/ip:address/ip:ip";
|
||||||
|
}
|
||||||
|
description "O-RU's IPv6 address";
|
||||||
|
}
|
||||||
|
mandatory true;
|
||||||
|
description "choice of O-RU IPv4 or IPv6 address";
|
||||||
|
}
|
||||||
|
leaf o-du-ip-address {
|
||||||
|
type inet:ip-address;
|
||||||
|
mandatory true;
|
||||||
|
description "O-DU's IPv address";
|
||||||
|
}
|
||||||
|
leaf ru-ephemeral-udp-port {
|
||||||
|
type inet:port-number;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"ephemeral port used by O-RU";
|
||||||
|
}
|
||||||
|
leaf o-du-ephemeral-udp-port {
|
||||||
|
type inet:port-number;
|
||||||
|
mandatory true;
|
||||||
|
description
|
||||||
|
"ephemeral port used by O-DU";
|
||||||
|
}
|
||||||
|
leaf ecpri-destination-udp {
|
||||||
|
type inet:port-number;
|
||||||
|
mandatory true;
|
||||||
|
description "the well known UDP port number used by eCPRI";
|
||||||
|
// fixme - add in a default when allocated by IANA
|
||||||
|
}
|
||||||
|
}
|
||||||
|
container north-eth-flow {
|
||||||
|
when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
|
||||||
|
if-feature "SHARED_CELL";
|
||||||
|
description "leafs for mac + vlan-id type data flows";
|
||||||
|
leaf ru-mac-address {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"O-RU's MAC address used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
leaf vlan-id {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"O-RU's VLAN-ID used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
leaf north-node-mac-address {
|
||||||
|
type yang:mac-address;
|
||||||
|
description
|
||||||
|
"North-node's MAC address used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
container south-eth-flow {
|
||||||
|
when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
|
||||||
|
if-feature "SHARED_CELL";
|
||||||
|
description "leafs for mac + vlan-id type data flows";
|
||||||
|
leaf ru-mac-address {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"O-RU's MAC address used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
leaf vlan-id {
|
||||||
|
type leafref {
|
||||||
|
path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"O-RU's VLAN-ID used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
leaf south-node-mac-address {
|
||||||
|
type yang:mac-address;
|
||||||
|
description
|
||||||
|
"south-node's MAC address used for Ethernet based flow";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// top level container
|
||||||
|
|
||||||
|
container processing-elements {
|
||||||
|
description
|
||||||
|
"a model defining the mapping between transport flows and arbitrary
|
||||||
|
O-RAN processing elements. A processing element may be then defined for
|
||||||
|
handling connectivity or delay procedures, or defined with a corresponding
|
||||||
|
eaxcid for CU plane operations";
|
||||||
|
uses pe-group;
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user