blob: 111421eda14e53f7ed586e715e9d7853662ffdd7 [file] [log] [blame]
Khen Nursimuluf8abbc92016-11-04 19:56:45 -04001module cord-volt-service {
2 namespace "urn:ietf:params:xml:ns:yang:cord-volt-service";
3 prefix volt;
4 yang-version 1.1;
5
6 import cord-tenant { prefix cord; }
7 import xos-controller { prefix xos; }
8 import xos-types { prefix xtype; }
9
10 organization
11 "Open Networking Lab (CORD) / Corenova Technologies";
12
13 contact
14 "Larry Peterson <llp@onlab.us>
15 Peter K. Lee <peter@corenova.com>";
16
17 revision 2016-09-09 {
18 description "Initial revision.";
19 }
20
21 identity virtual-olt { base xos:xos-service; }
22
23 feature onos-app-olt {
24 description "System facility to configure VLAN tags on the OLT.";
25 }
26 feature onos-app-aaa {
27 description "System facility to broker authentication between CPE and Radius server.";
28 }
29 /*
30 * Type definitions
31 */
32 typedef bandwidth {
33 type xtype:bandwidth;
34 default 1000000000; // VOLT bandwidth default is 1Gbps
35 }
36 typedef subscriber-outflow {
37 type leafref {
38 path "/volt:controller/volt:port/volt:id";
39 }
40 }
41 /*
42 * Groupings
43 */
44 grouping devices-list {
45 grouping olt-device {
46 description
47 "This grouping describes an OLT device which contains ODN link attachments.";
48
49 leaf name {
50 description "name of OLT device";
51 type string {
52 length 1..254;
53 }
54 }
55 leaf mac { type xtype:mac-address; mandatory true; }
56
57 container uplink {
58 description "Uplink description of the OLT device.";
59 leaf network { type xtype:network-identifier; }
60 leaf tag {
61 type xtype:vlan;
62 description
63 "Represents S-Tag for instructing OLT to associate a VLAN tag for
64 traffic originating from OLT device.";
65 }
66 }
67 list link {
68 description
69 "Each link represents an ONU/ONT (Optical Network Termination) endpoint
70 connection.";
71
72 key serial;
73 unique tag;
74
75 leaf mac { type xtype:mac-address; mandatory true; }
76 leaf serial { type string; mandatory true; }
77 leaf active { type boolean; default false; }
78 leaf tag {
79 type xtype:vlan;
80 description
81 "Represents C-Tag for instructing ONT to add/remove vlan tag for
82 traffic within OLT device.";
83 }
84 }
85 }
86 list device {
87 description
88 "Each entry represents an OLT device.";
89 key mac;
90 //unique 'uplink/tag';
91 uses olt-device;
92 }
93 }
94 grouping subscriber {
95 description
96 "This grouping represents a VOLT service subscriber along with
97 references to ONU/ONT access endpoints used by the subscriber.";
98
99 container tags {
100 description
101 "Each entry represents a unique combination of the OLT uplink VLAN
102 (outer tag) and the ONU/ONT link VLAN (inner tag) connecting
103 into the fabric for the subscriber.";
104
105 leaf outer {
106 type leafref {
107 path "/volt:controller/volt:device/volt:uplink/volt:tag";
108 }
109 }
110 leaf inner {
111 type leafref {
112 path "/volt:controller/volt:device/volt:link/volt:tag";
113 }
114 }
115 }
116 leaf outflow {
117 description
118 "Each entry represents a unique openflow port ID that the subscriber
119 uses to connect into the fabric from the VOLT service.";
120 config false;
121 type subscriber-outflow;
122 }
123 }
124
125 /*
126 * Configuration data nodes
127 */
128 container controller {
129 description
130 "The controller configuration block represents a VOLT agent/controller
131 which manages multiple OLT devices. The VOLT agent provides
132 aggregate abstraction of the entire PON as a sigle switch to
133 the controller. Each port entry of the agent represents each
134 ONU/ONT endpoint as a separate openflow port.";
135
136 uses xos:service {
137 refine kind {
138 default virtual-olt;
139 }
140 augment "subscriber" { uses volt:subscriber; }
141 }
142 // additional service specific configurations
143 uses devices-list;
144 list port {
145 description
146 "Each entry represents an ONU/ONT endpoint connected across OLT devices.";
147 key id;
148 leaf id {
149 description "OpenFlow Port ID";
150 type xtype:flow-identifier;
151 mandatory true;
152 }
153 leaf link {
154 type leafref {
155 path '/volt:controller/device/link/serial';
156 }
157 mandatory true;
158 }
159 }
160 container radius {
161 if-feature onos-app-aaa;
162 // configuration for how to broker authentication requests
163 }
164 }
165 /*
166 * Augmentations to CORD Tenant in XOS
167 */
168 augment "/xos:tenant/cord:cord/cord:subscriber" {
169 container service {
170 leaf id {
171 type leafref {
172 path "/volt:controller/subscriber/id";
173 }
174 }
175 leaf c-tag {
176 config false;
177 type leafref {
178 path "/volt:controller/subscriber/tags/outer";
179 }
180 }
181 leaf s-tag {
182 config false;
183 type leafref {
184 path "/volt:controller/subscriber/tags/inner";
185 }
186 }
187 leaf uplink-speed {
188 type volt:bandwidth;
189 }
190 leaf downlink-speed {
191 type volt:bandwidth;
192 }
193 }
194 }
195}