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.

Adding devices to ONOS is done by injecting them into the device provider, more specifically Here is an example JSON, that you will inject into ONOS using onos-netcfg $OC1 tl1.json.

{
  "devices": {
    "tl1:10.128.14.81:3082": {
      "basic": {
        "name": "Lumentum",
        "driver": "lumentum-waveready"
      }
    }
  },
  "apps": {
    "org.onosproject.tl1": {
      "devices": [
        {
          "ip": "10.128.14.81",
          "port": 3082,
          "username": "test",
          "password": "test"
        }
      ]
    }
  }
}

 

Drivers

Adding a new device to ONOS requires implementing aLumentumWaveReadyDiscovery

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!