Transaction Language 1 (TL1) is a management protocol that is widely used in the optical networking space. Individual devices will need to implement a set of behaviors
Interfaces
Tl1Device
is a container that holds the Netty channel and some device attributes such as login and password.
Tl1Command
represents a command that is sent from the controller to a network element. Its typical structure is as below, and the interface defines various accessor methods as well as a builder.
VERB-MODIFIER:<tid>:<aid>:<ctag>::parameter-list;
Tl1Controller
maintains a list of TL1 devices, allows you to connect to them, send and receive messages, and register listeners.
Tl1Listener
defines the interface for notification of device connect/disconnect events.
Implementations of all these interfaces are prefixed with Default
, for instance DefaultTl1Controller
holds the implementation of the Tl1Controller
interface.
Device Provider
The ONOS TL1 southbound is implemented in the Tl1DeviceProvider
.
Drivers
LumentumWaveReadyDiscovery
Missing features / Help wanted
Here is a list of desirable features that unfortunately are not available in the current code base. Patches and bug reports are very welcome!
Sending messages using the Tl1Controller uses the following signature. Ideally, we don't want to return a
String
but a Tl1Message that can easily be parsed.CompletableFuture<String> sendMsg(DeviceId deviceId, Tl1Command msg);
- There are no unit tests implemented as of yet.
- The Tl1Listener only has methods to signal device events (deviceConnected and deviceDisconnected). Ideally we want to extend this to also cover other events, such as message and alarm notifications.
- As mentioned, we need extensive testing to verify correct behavior in multi-instance ONOS deployments.
- Instead of storing login/password in the
Tl1Device
, use ONOS'DeviceKeyService
sub-system dedicated to this job. - Currently, the
Tl1DeviceProvider
will only login to the device when that instance becomes the master. In a multi-instance deployment, it's probably a good idea to have (some of) the standby instances logged in, ready to take over when they becomes master. This requires reworking theTl1DeviceProvider
, as well as a way to store multiple accounts per device.