| // SPDX-FileCopyrightText: 2021 Open Networking Foundation |
| // |
| // SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0 |
| |
| module onf-vcs { |
| namespace "http://opennetworking.org/aether/vcs"; |
| prefix sl; |
| |
| import ietf-yang-types{ prefix yg; } |
| import onf-aether-types{ prefix at; } |
| import onf-application{ prefix app; } |
| import onf-device-group{ prefix dg; } |
| import onf-enterprise{ prefix ent; } |
| import onf-upf { prefix upf; } |
| import onf-site{ prefix st; } |
| |
| organization "Open Networking Foundation."; |
| contact "Scott Baker"; |
| description |
| "An Aether Virtual Cellular Service (VCS) is |
| used to connect devices with applications"; |
| |
| revision "2021-09-10" { |
| description "An Aether Virtual Cellular Service"; |
| reference "RFC 6087"; |
| } |
| |
| typedef vcs-id { |
| type yg:yang-identifier { |
| length 1..32; |
| } |
| } |
| |
| container vcs { |
| description "The top level container"; |
| |
| list vcs { |
| key "id"; |
| description |
| "List of virtual cellular services"; |
| |
| leaf id { |
| type vcs-id; |
| description "ID for this vcs."; |
| } |
| |
| leaf display-name { |
| type string { |
| length 1..80; |
| } |
| description "display name to use in GUI or CLI"; |
| } |
| |
| list device-group { |
| key "device-group"; |
| leaf device-group { |
| type leafref { |
| path "/dg:device-group/dg:device-group/dg:id"; |
| } |
| description |
| "Link to device group"; |
| } |
| leaf enable { |
| type boolean; |
| default true; |
| description |
| "Enable this device group"; |
| } |
| description |
| "A list of device groups. Groups will only participate in |
| the VCS if the enable field is set to True"; |
| } |
| |
| leaf default-behavior { |
| type at:behavior; |
| mandatory true; |
| description |
| "Default behavior if no filter rules match"; |
| } |
| |
| list filter { |
| key "application"; |
| leaf application { |
| type leafref { |
| path "/app:application/app:application/app:id"; |
| } |
| mandatory true; |
| description |
| "Link to application"; |
| } |
| leaf priority { |
| type at:priority; |
| default 0; |
| description |
| "Priority of this application"; |
| } |
| leaf allow { |
| type boolean; |
| default true; |
| description |
| "Allow or deny this application"; |
| } |
| description |
| "A list of applications to allow and/or deny. Rules are executed in |
| priority order. The first rule to match will determine the fate |
| of the packet."; |
| } |
| |
| leaf upf { |
| type leafref { |
| path "/upf:upf/upf:upf/upf:id"; |
| } |
| description |
| "Link to user plane that implements this vcf"; |
| } |
| |
| leaf description { |
| type at:description; |
| description "description of this vcs"; |
| } |
| |
| leaf enterprise { |
| type leafref { |
| path "/ent:enterprise/ent:enterprise/ent:id"; |
| } |
| mandatory true; |
| description |
| "Link to enterprise that owns this VCS"; |
| } |
| |
| leaf site { |
| type leafref { |
| path "/st:site/st:site/st:id"; |
| } |
| description |
| "Link to site where this VCS is deployed"; |
| mandatory true; |
| } |
| |
| // the following are populated from the template |
| leaf sst { |
| type at:sst; |
| mandatory true; |
| description "Slice/Service type. Immutable."; |
| } |
| |
| leaf sd { |
| type at:sd; |
| mandatory true; |
| description "Slice differentiator. Immutable."; |
| } |
| |
| container slice { |
| description "Per-Slice QOS Settings"; |
| container mbr { |
| description "Maximum bitrate"; |
| leaf uplink { |
| type at:bitrate; |
| units bps; |
| description "Per-Slice MBR uplink data rate in bps"; |
| } |
| |
| leaf downlink { |
| type at:bitrate; |
| units bps; |
| description "Per-Slice MBR downlink data rate in bps"; |
| } |
| |
| leaf uplink-burst-size { |
| type at:burst; |
| units bytes; |
| description "Per-Slice Uplink burst size"; |
| } |
| |
| leaf downlink-burst-size { |
| type at:burst; |
| units bytes; |
| description "Per-Slice Downlink burst size"; |
| } |
| } |
| } |
| |
| // end of items populated from the template |
| } |
| } |
| } |