1 module o-ran-processing-element {
3 namespace "urn:o-ran:processing-element:1.0";
4 prefix "o-ran-elements";
6 import ietf-yang-types {
10 import ietf-inet-types {
14 import ietf-interfaces {
22 import o-ran-interfaces {
26 import o-ran-wg4-features {
30 import o-ran-usermgmt {
34 organization "O-RAN Alliance";
40 "This module defines the YANG definitions for mapping of transport flows to
41 processing elements. Three options are supported:
42 i) virtual MAC based mapping
43 ii) MAC address + VLAN-ID based mapping
44 iii) UDP/IP based mapping
46 Copyright 2020 the O-RAN Alliance.
48 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
49 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
51 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
52 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
53 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
54 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
55 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
56 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
57 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
58 POSSIBILITY OF SUCH DAMAGE.
60 Redistribution and use in source and binary forms, with or without
61 modification, are permitted provided that the following conditions are met:
63 * Redistributions of source code must retain the above copyright notice,
64 this list of conditions and the above disclaimer.
65 * Redistributions in binary form must reproduce the above copyright notice,
66 this list of conditions and the above disclaimer in the documentation
67 and/or other materials provided with the distribution.
68 * Neither the Members of the O-RAN Alliance nor the names of its
69 contributors may be used to endorse or promote products derived from
70 this software without specific prior written permission.";
72 revision "2022-08-15" {
76 1) introducing SHARED-ORU-MULTI-OPERATOR feature
77 2) fixing constraints";
79 reference "ORAN-WG4.M.0-v10.00";
82 revision "2021-12-01" {
86 1) typographical corrections in descriptions.
87 2) Add support for multiple transport-session-type per O-RU";
89 reference "ORAN-WG4.M.0-v08.00";
93 revision "2020-04-17" {
97 1) added new enum SHARED-CELL-ETH-INTERFACE in
98 transport-session-type and new containers north-eth-flow and
99 south-eth-flow to enable Shared cell scenario.";
101 reference "ORAN-WG4.M.0-v03.00";
104 revision "2019-07-03" {
108 1) added new leaf to enable O-RU to report the maximum number of
109 transport flows it can support, e.g., due to restrictions on number
110 of VLAN-IDs when Ethernet type transport is used.";
112 reference "ORAN-WG4.M.0-v01.00";
114 revision "2019-02-04" {
118 1) imported model from xRAN
119 2) changed namespace and reference from xran to o-ran";
121 reference "ORAN-WG4.M.0-v01.00";
124 feature SHARED_CELL {
126 "Presence of feature indicates that this O-RU is capable to support
131 grouping non-shared-cell-flow-group {
132 description "a grouping for non-shared cell O-RU flows";
134 container aliasmac-flow {
135 when "../../../transport-session-type = 'ALIASMAC-INTERFACE'";
136 if-feature o-ran-int:ALIASMAC-BASED-CU-PLANE;
137 description "leafs for virtual mac type data flows";
138 leaf ru-aliasmac-address {
140 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:alias-macs";
144 "O-RU's alias MAC address used for alias MAC based flow";
148 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
151 "O-RU's VLAN-ID used for alias MAC based flow";
153 leaf o-du-mac-address {
154 type yang:mac-address;
157 "O-DU's MAC address used for alias MAC based flow";
161 when "../../../transport-session-type = 'ETH-INTERFACE'";
162 description "leafs for mac + vlan-id type data flows";
163 leaf ru-mac-address {
165 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
169 "O-RU's MAC address used for Ethernet based flow";
173 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
177 "O-RU's VLAN-ID used for Ethernet based flow";
179 leaf o-du-mac-address {
180 type yang:mac-address;
183 "O-DU's MAC address used for Ethernet based flow";
186 container udpip-flow {
187 when "../../../transport-session-type = 'UDPIP-INTERFACE'";
188 description "leafs for UDP/IP type data flows";
190 leaf ru-ipv4-address {
192 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv4/ip:address/ip:ip";
194 description "O-RU's IPv4 address";
196 leaf ru-ipv6-address {
198 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv6/ip:address/ip:ip";
200 description "O-RU's IPv6 address";
203 description "choice of O-RU IPv4 or IPv6 address";
205 leaf o-du-ip-address {
206 type inet:ip-address;
208 description "O-DU's IP address";
210 leaf ru-ephemeral-udp-port {
211 type inet:port-number;
214 "ephemeral port used by O-RU";
216 leaf o-du-ephemeral-udp-port {
217 type inet:port-number;
220 "ephemeral port used by O-DU";
222 leaf ecpri-destination-udp {
223 type inet:port-number;
225 description "the well-known UDP port number used by eCPRI";
226 // fixme - add in a default when allocated by IANA
231 grouping shared-cell-flow-group {
232 description "a grouping for shared cell O-RU flows";
234 container north-eth-flow {
235 when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
236 if-feature "SHARED_CELL";
237 description "leafs for mac + vlan-id type data flows";
238 leaf ru-mac-address {
240 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
243 "O-RU's MAC address used for Ethernet based flow";
247 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
250 "O-RU's VLAN-ID used for Ethernet based flow";
252 leaf north-node-mac-address {
253 type yang:mac-address;
255 "North-node's MAC address used for Ethernet based flow";
258 container south-eth-flow {
259 when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
260 if-feature "SHARED_CELL";
261 description "leafs for mac + vlan-id type data flows";
262 leaf ru-mac-address {
264 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
267 "O-RU's MAC address used for Ethernet based flow";
271 path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
274 "O-RU's VLAN-ID used for Ethernet based flow";
276 leaf south-node-mac-address {
277 type yang:mac-address;
279 "south-node's MAC address used for Ethernet based flow";
284 grouping session-and-markings-group {
285 description "a grouping with transport session type and enhanced uplane markings";
287 leaf transport-session-type {
290 description "VLAN based CUS Transport ";
292 enum UDPIP-INTERFACE {
293 description "UDP/IP based CUS Transport ";
295 enum ALIASMAC-INTERFACE{
296 description "Alias MAC address based CUS Transport ";
298 enum SHARED-CELL-ETH-INTERFACE {
299 if-feature "SHARED_CELL";
300 description "VLAN based CUS Transport used for Shared Cell scenario";
303 default ETH-INTERFACE;
305 "the type of transport session used for identifying different processing
308 container enhanced-uplane-mapping {
309 presence "indicates that enhanced uplane mapping is used";
310 description "a mapping table for enhanced user plane marking";
311 list uplane-mapping {
312 key "up-marking-name";
314 "a mapping between up-link name and o-ran-interfaces:up-marking-name";
315 leaf up-marking-name {
317 description "a unique up marking name that is used for enhanced up marking";
323 when "(../../transport-session-type = 'ALIASMAC-INTERFACE') or
324 (../../transport-session-type = 'ETH-INTERFACE') or
325 (../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE')";
328 path "/if:interfaces/if:interface/o-ran-int:class-of-service/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
330 description "the Ethernet U-plane transport marking as defined in o-ran-interfaces";
334 when "(../../transport-session-type = 'UDPIP-INTERFACE')";
335 leaf upv4-dscp-name {
336 if-feature o-ran-int:UDPIP-BASED-CU-PLANE;
338 path "/if:interfaces/if:interface/ip:ipv4/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
340 description "the IPv4 U-plane transport marking as defined in o-ran-interfaces";
344 when "(../../transport-session-type = 'UDPIP-INTERFACE')";
345 leaf upv6-dscp-name {
346 if-feature o-ran-int:UDPIP-BASED-CU-PLANE;
348 path "/if:interfaces/if:interface/ip:ipv6/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
350 description "the IPv6 U-plane transport marking as defined in o-ran-interfaces";
359 description "a grouping of processing elements";
360 leaf maximum-number-of-transport-flows {
367 "The maximum number of transport flows that can be supported by an O-RU";
369 uses session-and-markings-group;
374 "the list of transport definitions for each processing element";
380 "A name that is unique across the O-RU that identifies a processing
383 This name may be used in fault management to refer to a fault source
387 if-feature feat:SHARED-ORU-MULTI-OPERATOR;
389 path "/or-user:users/or-user:user/or-user:sro-id";
392 "The identity of a shared resource operator. When present,
393 indicates that the list entry corresponds to a processing element
394 associated with a shared resource operator where the sro-id identifies
395 the specific shared resource operator";
397 container transport-flow {
399 "container for the transport-flow used for CU plane";
400 leaf interface-name {
402 path "/if:interfaces/if:interface/if:name";
404 description "the interface name ";
406 uses non-shared-cell-flow-group;
407 uses shared-cell-flow-group;
411 list additional-transport-session-type-elements {
412 if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
413 key transport-session-type;
416 "Added to support multiple transport-session-type per O-RU,
417 it is always assumed that /processing-elements/ru-elements/ is configured with the first type of transport,
418 and /processing-element/additional-transport-session-elements/ru-elements/ is configured with the other types of transport.
419 If the O-RU is configured for shared-cell, this list will not be used. An O-RU shall reject any configuration
420 with a list entry with transport-session-type set to SHARED-CELL-ETH-INTERFACE";
422 uses session-and-markings-group;
427 "the list of transport definitions for each processing element";
433 "A name that is unique across the O-RU that identifies a processing
436 This name may be used in fault management to refer to a fault source
440 if-feature feat:SHARED-ORU-MULTI-OPERATOR;
442 path "/or-user:users/or-user:user/or-user:sro-id";
445 "The identity of a shared resource operator. When present,
446 indicates that the list entry corresponds to a processing element
447 associated with a shared resource operator where the sro-id identifies
448 the specific shared resource operator";
450 container transport-flow {
452 "container for the transport-flow used for CU plane";
453 leaf interface-name {
455 path "/if:interfaces/if:interface/if:name";
457 description "the interface name ";
459 uses non-shared-cell-flow-group;
465 // top-level container
467 container processing-elements {
469 "a model defining the mapping between transport flows and arbitrary
470 O-RAN processing elements. A processing element may be then defined for
471 handling connectivity or delay procedures, or defined with a corresponding
472 eaxcid for CU plane operations";