| // SPDX-FileCopyrightText: 2021 Open Networking Foundation |
| // |
| // SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0 |
| |
| submodule onf-slice { |
| belongs-to onf-enterprise { prefix ent; } |
| |
| import ietf-yang-types{ prefix yg; } |
| import onf-aether-types{ prefix at; } |
| |
| include onf-upf; |
| include onf-device-group; |
| include onf-application; |
| include onf-priority-traffic-rule; |
| |
| organization "Open Networking Foundation."; |
| contact "Scott Baker"; |
| description |
| "An Aether Slice is |
| used to connect devices with applications"; |
| |
| revision "2022-01-14" { |
| description "Refactored as submodule"; |
| reference "RFC 6020"; |
| } |
| |
| revision "2021-09-10" { |
| description "An Aether Slice"; |
| reference "RFC 6087"; |
| } |
| |
| typedef slice-id { |
| type yg:yang-identifier { |
| length 1..32; |
| } |
| description "The typedef for slice-id"; |
| } |
| |
| grouping slice { |
| description "The slice grouping"; |
| |
| list slice { |
| key "slice-id"; |
| description |
| "List of Slices"; |
| |
| leaf slice-id { |
| type slice-id; |
| description "ID for this slice."; |
| } |
| |
| uses at:desc-display-name; |
| |
| list device-group { |
| key "device-group"; |
| leaf device-group { |
| type leafref { |
| path "../../../device-group/device-group-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 Slice 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 "../../../../application/application-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-id"; |
| } |
| description |
| "Link to user plane that implements this vcf"; |
| } |
| |
| // 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 mbr { |
| description "Per slice Maximum Bit Rate"; |
| 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 |
| uses priority-traffic-rule; |
| |
| } |
| } |
| } |