blob: 30733662a8402636f36a4e949260c24fa3090d57 [file] [log] [blame]
module cord-service-volt {
namespace "urn:onlab:cord:service:volt";
prefix volt;
yang-version 1.1;
import ietf-yang-types { prefix yang; }
import xos-core { prefix xos; }
organization
"Open Networking Lab (CORD) / Corenova Technologies";
contact
"Larry Peterson <llp@onlab.us>
Peter K. Lee <peter@corenova.com>";
revision 2016-09-09 {
description "Initial revision.";
}
identity volt-service { base xos:service; }
feature onos-app-olt {
description "System facility to configure VLAN tags on the OLT.";
}
feature onos-app-aaa {
description "System facility to broker authentication between CPE and Radius server.";
}
typedef bandwidth {
type xos:bandwidth;
default 1000000000; // VOLT bandwidth default is 1Gbps
}
typedef subscriber-flow {
type leafref {
path "/volt:service/volt:provider/volt:port/volt:id";
}
}
grouping devices-list {
grouping olt-device {
description
"This grouping describes an OLT device which contains ODN link attachments.";
leaf name {
description "name of OLT device";
type string {
length 1..254;
}
}
leaf mac { type yang:mac-address; mandatory true; }
container uplink {
description "Uplink description of the OLT device.";
leaf network { type yang:uuid; }
leaf tag {
if-feature onos-app-olt;
type xos:vlan;
description
"Represents S-Tag for instructing OLT to associate a VLAN tag for
traffic originating from OLT device.";
}
}
list link {
description
"Each link represents an ONU/ONT (Optical Network Termination) endpoint
connection.";
key serial;
unique tag;
leaf mac { type yang:mac-address; mandatory true; }
leaf serial { type string; mandatory true; }
leaf active { type boolean; default false; }
leaf tag {
if-feature onos-app-olt;
type xos:vlan;
description
"Represents C-Tag for instructing ONT to add/remove vlan tag for
traffic within OLT device.";
}
}
}
list device {
description
"Each entry represents an OLT device.";
key mac;
//unique 'uplink/tag';
uses olt-device;
}
}
grouping provider {
description
"This grouping represents a VOLT agent/provider which manages multiple
OLT devices. The VOLT agent provides aggregate abstraction of
the entire PON as a sigle switch to the controller. Each port
entry of the agent represents each ONU/ONT endpoint as a
separate openflow port.";
uses devices-list {
description
"Each entry represents an OLT device managed by the agent.";
}
list port {
description
"Each entry represents an ONU/ONT endpoint connected across OLT devices.";
key id;
leaf id {
description "OpenFlow Port ID";
type yang:uuid;
mandatory true;
}
leaf link {
type leafref {
path '../../device/link/serial';
}
mandatory true;
}
}
container radius {
if-feature onos-app-aaa;
// configuration for how to broker authentication requests
}
}
grouping subscriber {
description
"This grouping represents a VOLT service subscriber along with
references to ONU/ONT access endpoints used by the subscriber.";
list tag {
description
"Each entry represents a unique combination of the OLT uplink VLAN
(outer tag) and the ONU/ONT link VLAN (inner tag) connecting
into the fabric for the subscriber.";
key 'outer inner';
leaf outer {
type leafref {
path "/volt:service/volt:provider/volt:device/volt:uplink/volt:tag";
}
}
leaf inner {
type leafref {
path "/volt:service/volt:provider/volt:device/volt:link/volt:tag";
}
}
}
leaf-list flows {
description
"Each entry represents a unique openflow port ID that the subscriber
uses to connect into the fabric from the VOLT service.";
config false;
type subscriber-flow;
}
}
/*
* Configuration data
*/
container service {
uses xos:service {
refine kind { default volt-service; }
augment "provider" { uses volt:provider; }
augment "subscriber" { uses volt:subscriber; }
}
}
}