blob: 183d6f6300a048c4bcc749d3b746c1ccf5ec518e [file] [log] [blame]
// 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-template{ prefix vt; }
import onf-traffic-class{ prefix tc; }
import onf-upf { prefix upf; }
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 template {
type leafref {
path "/vt:template/vt:template/vt:id";
}
description
"Link to user vcs template that was used to initialize
this VCS";
}
list filter {
key "application";
leaf application {
type leafref {
path "/app:application/app:application/app:id";
}
mandatory true;
description
"Link to application";
}
leaf priority {
type uint8;
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";
}
// 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.";
}
// This is deprecated. Per-device QOS is moving
// to DG.
container device {
description "Per-device QOS Settings";
container mbr {
description "Maximum bitrate";
leaf uplink {
type at:bitrate;
units bps;
description "Per-device mbr uplink data rate in mbps";
}
leaf downlink {
type at:bitrate;
units bps;
description "Per-device mbr downlink data rate in mbps";
}
}
}
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 mbps";
}
leaf downlink {
type at:bitrate;
units bps;
description "Per-Slice mbr downlink data rate in mbps";
}
}
}
leaf traffic-class {
type leafref {
path "/tc:traffic-class/tc:traffic-class/tc:id";
}
mandatory true;
description
"Link to traffic class";
}
// end of items populated from the template
}
}
}