1 UNI Manager Plug-In Developer Guide
2 ===================================
4 The UNI Manager plug in exposes capabilities of OpenDaylight to
5 configure networked equipment to operate according to Metro Ethernet
6 Forum (MEF) requirements for User Network Interface (UNI) and to support
7 the creation of an Ethernet Virtual Connection (EVC) according to MEF
10 UNI Manager adheres to a minimum set of functionality defined by MEF 7.2
11 and 10.2 specifications.
16 The UNI manager plugin enables the creation of Ethernet Virtual
17 Connections (EVC) as defined by the Metro Ethernet Forum (MEF). An EVC
18 provides a simulated Ethernet connection among LANs existing at
19 different geographical locations. This version of the plugin is limited
20 to connecting two LANS.
22 As defined by MEF, each location to be connected must have a User
23 Network Interface, (UNI) which is a device that connects the user LAN to
24 the EVC providers network.
26 UNI and EVC are implemented via Open vSwitch, leveraging the OVSDB
27 project: creating a UNI will end up creating an OVSDB node with an
28 *ovsbr0* bridge, interface and port. While creating a UNI, based on the
29 MEF requirement, one can specify a desired QoS; this leverages the QoS
30 and Queue tables from the OVS database. (see documentation bellow for
31 full details). Same goes with the EVC, to which one can apply a given
32 QoS to control the speed of the connection. Creating an EVC will add two
33 additional ports to the *ovsbr0* bridge:
35 - *eht0*: the interface connected to a client laptop
37 - *gre1*, interface used to for gre tunnelling between two clients
40 Finally, within this release, UniMgr is more a Proof Of Concept than a
41 framework to be used in production. Previous demonstrations were made
42 using Raspberry Pis, having a low NIC bandwith, thus the speed as
43 defined in the API is actually mapped as follow:
45 - ``speed-10M`` ⇒ 1 Mb
47 - ``speed-100M`` ⇒ 2 Mb
51 - ``speed-10G`` ⇒ 4 Mb
56 This API enables the creation and management of both UNI’s and EVCs. In
57 order to create an EVC using this interface you would first create two
58 UNI’s via the following REST API (see documentation below for full
63 PUT http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
65 You would then create an EVC, indicating that it is a connection between
66 the two UNI’s that were just created, via the following REST API (see
67 documentation below for full details)
71 PUT http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
73 You can then change attributes of the UNI’s or EVCs, and delete these
74 entities using this API (see documentation below for full details).
76 This plugin uses the OpenDaylight OVSDB plugin to provision and the
77 manage devices which implement the OVSDB REST interface, as needed to
78 realize the UNI and EVC life-cycles
82 Both the configuration and operational databases can be operated
83 upon by the unimgr REST API. The only difference between the two is
84 in the REST Path. The configuration datastore represents the desired
85 state, the operational datastore represents the actual state.
87 For operating on the config database
91 http://<host-ip>:8181/restconf/config/<PATH>
93 For operating on the operational database
97 http://<host-ip>:8181/restconf/operational/<PATH>
99 The documentation below shows examples of both
106 PUT http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
110 uni-id is determined by and supplied by the caller both in the path
111 and the body of the rest message
118 "network-topology:node": [
124 "uni:mac-layer": "IEEE 802.3-2005",
125 "uni:physical-medium": "100BASE-T",
126 "uni:mode": "syncEnabled"
127 "uni:type": "UNITYPE",
128 "uni:mtu-size": 1600,
129 "uni:mac-address": "68:5b:35:bb:f8:3e",
130 "uni:ip-address": "192.168.2.11",
135 Response on success: 200
161 On OVS, the QoS, the Queue were updated, and a bridge was added:
165 mininet@mininet-vm:~$ sudo ovs-vsctl list QoS
166 _uuid : 341c6e9d-ecb4-44ff-a21c-db644b466f4c
167 external_ids : {opendaylight-qos-id="qos://18db2a79-5655-4a94-afac-94015245e3f6"}
168 other_config : {dscp="0", max-rate="3000000"}
172 mininet@mininet-vm:~$ sudo ovs-vsctl list Queue
173 _uuid : 8a0e1fc1-5d5f-4e7a-9c4d-ec412a5ec7de
175 external_ids : {opendaylight-queue-id="queue://740a3809-5bef-4ad4-98d6-2ba81132bd06"}
176 other_config : {dscp="0", max-rate="3000000"}
178 mininet@mininet-vm:~$ sudo ovs-vsctl show
179 0b8ed0aa-67ac-4405-af13-70249a7e8a96
180 Manager "tcp:192.168.1.200:6640"
192 `http://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/<uni-id> <http://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>>`__
202 "cl-unimgr-mef:speed": {
205 "cl-unimgr-mef:mac-layer": "IEEE 802.3-2005",
206 "cl-unimgr-mef:physical-medium": "1000BASE-T",
207 "cl-unimgr-mef:mode": "syncEnabled",
208 "cl-unimgr-mef:type": "UNITYPE",
209 "cl-unimgr-mef:mtu-size": "1600",
210 "cl-unimgr-mef:mac-address": "00:22:22:22:22:22",
211 "cl-unimgr-mef:ip-address": "10.36.0.22"
220 "cl-unimgr-mef:speed"
225 "cl-unimgr-mef::mac-layer"
227 "cl-unimgr-mef:physical-medium"
232 "cl-unimgr-mef::mode"
235 "cl-unimgr-mef::type"
243 PUT http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
247 uni-id is determined by and supplied by the caller both in the path
248 and the body of the rest message
255 "network-topology:node": [
261 "uni:mac-layer": "IEEE 802.3-2005",
262 "uni:physical-medium": "100BASE-T",
263 "uni:mode": "syncEnabled"
264 "uni:type": "UNITYPE",
265 "uni:mtu-size": 1600,
266 "uni:mac-address": "68:5b:35:bb:f8:3e",
267 "uni:ip-address": "192.168.2.11",
272 Response on success: 200
303 DELETE http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:uni/node/<uni-id>
305 Response on success: 200
312 PUT http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
316 evc-id is determined by and supplied by the caller both in the path
317 and the body of the rest message
328 "source-node": "/network-topology/topology/node/uni-1"
331 "dest-node": "/network-topology/topology/node/uni-2"
333 "cl-unimgr-mef:uni-source": [
336 "ip-address": "192.168.2.11"
339 "cl-unimgr-mef:uni-dest": [
342 "ip-address": "192.168.2.10"
345 "cl-unimgr-mef:cos-id": "gold",
346 "cl-unimgr-mef:ingress-bw": {
349 "cl-unimgr-mef:egress-bw": {
356 Response on success: 200
362 ["source"]["source-node"]
363 Id of 1st UNI to assocate EVC with
364 ["cl-unimgr-mef:uni-source"][0]["ip-address"]
365 IP address of 1st UNI to associate EVC with
366 ["destination"]["dest-node"]
367 Id of 2nd UNI to assocate EVC with
368 ["cl-unimgr-mef:uni-dest"][0]["ip-address"]
369 IP address of 2nd UNI to associate EVC with
370 "cl-unimgr-mef:cos-id"
371 class of service id to associate with the EVC
372 "cl-unimgr-mef:ingress-bw"
373 "cl-unimgr-mef:egress-bw"
379 On OVS, the QoS, the Queue were updated, and two ports were added:
383 mininet@mininet-vm:~$ sudo ovs-vsctl list QoS
384 _uuid : 341c6e9d-ecb4-44ff-a21c-db644b466f4c
385 external_ids : {opendaylight-qos-id="qos://18db2a79-5655-4a94-afac-94015245e3f6"}
386 other_config : {dscp="0", max-rate="3000000"}
390 mininet@mininet-vm:~$ sudo ovs-vsctl list Queue
391 _uuid : 8a0e1fc1-5d5f-4e7a-9c4d-ec412a5ec7de
393 external_ids : {opendaylight-queue-id="queue://740a3809-5bef-4ad4-98d6-2ba81132bd06"}
394 other_config : {dscp="0", max-rate="3000000"}
396 mininet@mininet-vm:~$ sudo ovs-vsctl show
397 0b8ed0aa-67ac-4405-af13-70249a7e8a96
398 Manager "tcp:192.168.1.200:6640"
409 options: {remote_ip="192.168.1.233"}
417 GET http://<host-ip>:8181/restconf/operational/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
419 Response on success: 200
428 "source-node": "/network-topology/topology/node/uni-9"
431 "dest-node": "/network-topology/topology/node/uni-10"
433 "cl-unimgr-mef:uni-dest": [
436 "uni": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='unimgr:uni']/network-topology:node[network-topology:node-id='uni-10']",
437 "ip-address": "10.0.0.22"
440 "cl-unimgr-mef:ingress-bw": {
443 "cl-unimgr-mef:cos-id": "new1",
444 "cl-unimgr-mef:uni-source": [
447 "uni": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='unimgr:uni']/network-topology:node[network-topology:node-id='uni-9']",
448 "ip-address": "10.0.0.21"
451 "cl-unimgr-mef:egress-bw": {
462 ["source"]["source-node"]
463 ["cl-unimgr-mef:uni-source"][0]["uni"]
464 Id of 1st UNI assocated with EVC
465 ["cl-unimgr-mef:uni-source"][0]["ip-address"]
466 IP address of 1st UNI assocated with EVC
467 ["destination"]["dest-node"]
468 ["cl-unimgr-mef:uni-dest"][0]["uni"]
469 Id of 2nd UNI assocated with EVC
470 ["cl-unimgr-mef:uni-dest"][0]["ip-address"]
471 IP address of 2nd UNI assocated with EVC
472 "cl-unimgr-mef:cos-id"
473 class of service id associated with the EVC
474 "cl-unimgr-mef:ingress-bw"
475 "cl-unimgr-mef:egress-bw"
486 PUT http://<host-ip>:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/<evc-id>
490 evc-id is determined by and supplied by the caller both in the path
491 and the body of the rest message
502 "source-node": "/network-topology/topology/node/uni-1"
505 "dest-node": "/network-topology/topology/node/uni-2"
507 "cl-unimgr-mef:uni-source": [
510 "ip-address": "192.168.2.11"
513 "cl-unimgr-mef:uni-dest": [
516 "ip-address": "192.168.2.10"
519 "cl-unimgr-mef:cos-id": "gold",
520 "cl-unimgr-mef:ingress-bw": {
523 "cl-unimgr-mef:egress-bw": {
530 Response on success: 200
536 ["source"]["source-node"]
537 Id of 1st UNI to assocate EVC with
538 ["cl-unimgr-mef:uni-source"][0]["ip-address"]
539 IP address of 1st UNI to associate EVC with
540 ["destination"]["dest-node"]
541 Id of 2nd UNI to assocate EVC with
542 ["cl-unimgr-mef:uni-dest"][0]["ip-address"]
543 IP address of 2nd UNI to associate EVC with
544 "cl-unimgr-mef:cos-id"
545 class of service id to associate with the EVC
546 "cl-unimgr-mef:ingress-bw"
547 "cl-unimgr-mef:egress-bw"
558 DELETE http://host-ip:8181/restconf/config/network-topology:network-topology/topology/unimgr:evc/link/evc-id
560 Response on success: 200