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