Utility container for VOLTHA deployment when using OVS switch to link to back end systems
510
This container is used with a VOLTHA deployment that leverages an OVS switch to enable upstream communication with a back end DHCP and/or IGMP system.
This container does a synchronization between ONOS and the managed OVS switch.
It polls the device information from ONOS and evaluates the accessDevice
object under each device entry. From the accessDevice object it collects
the vlan values.
The container then queries the flows on the managed OVS switch, which it
created as identified by the appId associated with the flow. The existing
flows are evaluated to understand if there exists the required flow for each
VLAN. If there exists a rule that is no longer needed, it is deleted.
Finally, for those VLANs for which there is no existing rule a new flow rule
is POSTed to ONOS.
The rule POSTed to ONOS does a packet in to ONOS for traffic that arrives
on on port 1 and and matches the VLAN ID of those discovered from the ONOS
network configuration. The rule is generated from the following template
file:
{
"priority": 32768,
"appId" : "{{.AppId}}",
"timeout": 0,
"isPermanent": true,
"deviceId": "{{.DPID}}",
"treatment": {
"instructions": [
{
"type": "OUTPUT",
"port": "CONTROLLER"
}
]
},
"selector": {
"criteria": [
{
"type": "IN_PORT",
"port": "1"
},
{
"type": "VLAN_VID",
"vlanId": "{{.VlanId}}"
}
]
}
}
This container is configured via environment variables
| KEY | VALUE | DESCRIPTION |
|---|---|---|
ONOS_CONNECT_URL | http://karaf:karaf@onos:8181 | URL with which to connect to ONOS |
OVS_DPID | :discover | DPID of switch to manager |
OVS_PORT | :discover | Port on OVS switch to provision |
CREATE_FLOW_TEMPLATE | /var/templates/create.tmpl | Template file used to create flow rule in ONOS |
INTERVAL | 30s | Frequency to check for correct flows |
VERIFY | false | When true, just log changes that would be made, but don't make changes |
LOG_LEVEL | info | detail level for logging |
LOG_FORMAT | text | log output format, text or json |
The value :discover for the options OVS_DPID and OVS_PORT is used to
indicate to the container that heuristics should be used to identify the
OVS switch and its port in ONOS. The heuristics used are:
OVS_DPID - based on the device attributes, as queried from ONOS, the first
switch found where the "hw" value is "Open vSwitch", the "driver" value is
"ovs", and the device is "available" is selected.OVS_PORT - based on the port attributes, as queried from ONOS, the first
port on the selected switch where the port is not "local" and it is "enabled"
is selected.Content type
Image
Digest
Size
4.5 MB
Last updated
almost 9 years ago
docker pull dbainbriciena/letmein