commit | 61650a1a82d4b494eaf7cd0db1f1b9395316d24f | [log] [tgz] |
---|---|---|
author | Andrea Campanella <andrea@opennetworking.org> | Mon Jan 24 18:09:44 2022 -0800 |
committer | Andrea Campanella <andrea@opennetworking.org> | Fri Jan 28 12:14:31 2022 +0100 |
tree | 6ec5a0f5fb7b962cfe61d2fcb277079b8d7a43f7 | |
parent | 982fd33df18107900d9a776e1a8d57415d71bb2a [diff] |
[VOL-4549] Improving event handling in order to reach a higher scale - isSubscriberServiceProvisioned is not holding the lock for the full iteration on the map, but reading, releasing the lock and then iterating - PORT_ADDED event for UNI ports are discarded as inconsequential, when they are discovered the status is always DISABLED, we start operating on the once the status changes and that happens in a PORT_UPDATED event. In case of ports up/down we always get a PORT_UPDATED as it's already known to the system. - the executor now uses a custom pool for serving threads - the queue add/remove now holds a lock for all the computation and uses the .compute method to process the operation Change-Id: Icedea07d32d1cddb339d672f3b274a6c7f941903
This ONOS applications is responsible to configure the flows required to manage an OLT Device as reported by VOLTHA.
The org.opencord.olt
application depends on org.opencord.sadis
and exposes the following configuration:
karaf@root > cfg get org.opencord.olt.impl.Olt org.opencord.olt.impl.Olt name=defaultBpId, type=string, value=Default, defaultValue=Default, description=Default bandwidth profile id that is used for authentication trap flows. name=flowProcessingThreads, type=integer, value=8, defaultValue=8, description=Number of threads used to process flows. name=multicastServiceName, type=string, value=MC, defaultValue=MC, description=Default multicast service name. name=requeueDelay, type=integer, value=500, defaultValue=500, description=Delay in ms to put an event back in the queue, used to avoid retrying things to often if conditions are not met. name=subscriberProcessingThreads, type=integer, value=8, defaultValue=8, description=Number of threads used to process flows. karaf@root > cfg get org.opencord.olt.impl.OltFlowService org.opencord.olt.impl.OltFlowService name=enableDhcpOnNni, type=boolean, value=true, defaultValue=false, description=Create DHCP trap flow on NNI port(s). name=enablePppoe, type=boolean, value=false, defaultValue=false, description=Send PPPoED authentication trap flows before subscriber provisioning. name=defaultTechProfileId, type=integer, value=64, defaultValue=64, description=Default technology profile id that is used for authentication trap flows. name=enableIgmpOnNni, type=boolean, value=false, defaultValue=false, description=Create IGMP trap flow on NNI port(s). name=enableEapol, type=boolean, value=true, defaultValue=true, description=Send EAPOL authentication trap flows before subscriber provisioning. name=enableDhcpV6, type=boolean, value=false, defaultValue=false, description=Enable flows for DHCP v6 if dhcp is required in sadis config. name=enableDhcpV4, type=boolean, value=true, defaultValue=true, description=Enable flows for DHCP v4 if dhcp is required in sadis config. karaf@root > cfg get org.opencord.olt.impl.OltMeterService org.opencord.olt.impl.OltMeterService name=deleteMeters, type=boolean, value=true, defaultValue=true, description=Delete meters when reference count drops to zero.
volt-add-subscriber-access (Adds a subscriber to an access device) volt-bpmeter-mappings (Shows information about programmed meters, including the relation with the Bandwidth Profile) volt-failed-subscribers (Shows subscribers that failed provisioning) volt-olts (Shows vOLTs connected to ONOS) volt-port-status (Shows information about the OLT ports (default EAPOL, subscriber flows) volt-programmed-meters (Shows information about programmed meters, including the relation with the Bandwidth Profile) volt-programmed-subscribers (Shows subscribers programmed in the dataplane) volt-remove-subscriber-access (Adds a subscriber to an access device) volt-requested-subscribers (Shows subscribers programmed by the operator. Their data-plane status depends on the ONU status)
The org.opencord.olt
application internal structure reflects the following diagram:
Prerequisites
- A running ONOS cluster (can be a single node cluster)
- ONOS REST APIs exposed out of the kubernetes cluster and reachable from your machine (we used port 30120 in the following example)
If you want to try out the app on a running ONOS cluster you can follow this procedure:
mvn clean install
curl --fail -sSL --user karaf:karaf --noproxy 127.0.0.1 -X DELETE http://127.0.0.1:30120/onos/v1/applications/org.opencord.oltYou should see the following confirmation message in the logs:
17:15:39.279 INFO [ApplicationManager] Application org.opencord.olt has been uninstalled
curl --fail -sSL --user karaf:karaf --noproxy 127.0.0.1 -X POST -HContent-Type:application/octet-stream http://127.0.0.1:30120/onos/v1/applications?activate=true --data-binary @app/target/olt-app-5.0.0.oaryou should see:
17:55:37.197 INFO [ApplicationManager] Application org.opencord.olt has been activated