Peter K. Lee | 0db45ac | 2016-09-13 00:30:37 -0700 | [diff] [blame] | 1 | module 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 | } |