Work in progress |
Topology information model elements, relevant to transport network, consist of Device, Port, and Link.
Each elements has fixed basic attributes common across variant of its kind. (e.g., Port's portspeed)
Additional information about elements can also be added as String-String annotations by each Provider.
This mechanism should be used to add relatively read-heavy information specific to certain technology or domain.
<driver name="linc-oe" extends="default" manufacturer="FlowForwarding.org" hwVersion="Unknown" swVersion="LINC(-OE)? OpenFlow Software Switch 1.1"> <behaviour api="org.onosproject.openflow.controller.driver.OpenFlowSwitchDriver" impl="org.onosproject.driver.optical.handshaker.OfOpticalSwitchImplLinc13"/> <behaviour api="org.onosproject.net.behaviour.LambdaQuery" impl="org.onosproject.driver.optical.query.LincOELambdaQuery"/> <behaviour api="org.onosproject.net.optical.OpticalDevice" impl="org.onosproject.net.optical.DefaultOpticalDevice"/> </driver> |
import static org.onosproject.net.optical.device.OpticalDeviceServiceView.opticalView; ... DeviceService service = opticalView(get(DeviceService.class)); List<Port> ports = new ArrayList<>(service.getPorts(device.id())); for (Port port : ports) { if (!isIncluded(port)) { continue; } String portName = port.number().toString(); String portIsEnabled = port.isEnabled() ? "enabled" : "disabled"; String portType = port.type().toString().toLowerCase(); switch (port.type()) { case OCH: if (port instanceof OchPort) { OchPort och = (OchPort) port; print(FMT_OCH, portName, portIsEnabled, portType, och.signalType().toString(), och.isTunable() ? "yes" : "no", annotations(och.unhandledAnnotations())); break; } print("WARN: OchPort but not on OpticalDevice or ill-formed"); print(FMT, portName, portIsEnabled, portType, port.portSpeed(), annotations(port.annotations())); break; case ODUCLT: if (port instanceof OduCltPort) { OduCltPort oduCltPort = (OduCltPort) port; print(FMT_ODUCLT_OTU, portName, portIsEnabled, portType, oduCltPort.signalType().toString(), annotations(oduCltPort.unhandledAnnotations())); break; } print("WARN: OduCltPort but not on OpticalDevice or ill-formed"); print(FMT, portName, portIsEnabled, portType, port.portSpeed(), annotations(port.annotations())); break; case OMS: if (port instanceof OmsPort) { OmsPort oms = (OmsPort) port; print(FMT_OMS, portName, portIsEnabled, portType, oms.minFrequency().asHz() / Frequency.ofGHz(1).asHz(), oms.maxFrequency().asHz() / Frequency.ofGHz(1).asHz(), oms.grid().asHz() / Frequency.ofGHz(1).asHz(), oms.totalChannels(), annotations(oms.unhandledAnnotations())); break; } print("WARN: OmsPort but not on OpticalDevice or ill-formed"); print(FMT, portName, portIsEnabled, portType, port.portSpeed(), annotations(port.annotations())); break; case OTU: if (port instanceof OtuPort) { OtuPort otuPort = (OtuPort) port; print(FMT_ODUCLT_OTU, portName, portIsEnabled, portType, otuPort.signalType().toString(), annotations(otuPort.unhandledAnnotations())); break; } print("WARN: OtuPort but not on OpticalDevice or ill-formed"); print(FMT, portName, portIsEnabled, portType, port.portSpeed(), annotations(port.annotations())); break; default: // do not print non-optical ports break; } } |
Packet-Optical multi-layer path setup via Intents are expressed in a model like below.
Blue circular Device is the packet-layer device and red octagon Device represent optical Devices.
Initially, packet-layer Link, represented by solid blue lines, between packet-layer Device does not exist in the ONOS topology.
Once Optical Intent is installed, packet-layer connectivity will be established between s5-s6, which will show up as a link between packet-layer side of cross-connect links.
See Optical Intents and Optical Path Provisioner for more details.
Optical Device and it's ports are modelled as Device object with additional attributes carrying optical specific characteristics.
OduCLt port
Representation of ODU client port (Optical channel Data Unit).
Och port
Representation of OCh port (Optical Channel)
OMS port
Representation of OMS port (Optical Multiplexing Section)
OTU port
Representation OTU port (Optical channel Transport Unit)
Following is vertically integrated ROADM used in the Packet-Optical demo at ONS2015, represented using ONOS optical information model.
Following is disaggregated ROADM used in the E-CORD/OpenROADM demo at ONS2016/OFC2016,
represented using ONOS optical information model.