Skip to content

Ciena 6500 TL1 driver

The ciena_tl1 driver presents a Ciena 6500 7-slot optical platform managed over TL1 (Transaction Language 1) carried on SSH. It exists to test multi-vendor handling in tooling that must speak more than Cisco IOS, and it demonstrates how different the driver framework lets vendors be.

  • The prompt is a bare <, used both as the greeting and the per-command prompt.
  • Commands are terminated by ; (not a newline) and may span multiple physical lines.
  • Authentication is in-band: the SSH transport accepts the connection, then the client must send a valid ACT-USER before anything else works.
  • Responses are TL1 blocks: a header with the system id (SID) and timestamp, then COMPLD (success) or DENY (failure) with a four-character error code.

Until a successful ACT-USER, every command returns DENY with PLNA (login failure). The login command’s grammar is:

ACT-USER::<username>:<ctag>::<password>;

The same accept-any-when-empty credential semantics as the SSH layer apply: an empty configured password accepts any, otherwise username and password must match. On success the device returns a COMPLD block and unlocks the RTRV-* verbs.

CommandBehaviour
ACT-USER::user:ctag::pass;In-band login; COMPLD on success, DENY PLNA on failure
RTRV-EQPTShelf inventory — streamed zero-copy from the generated payload, or a small synthesized block if none exists
RTRV-ALM-ALLActive alarms (canned)
RTRV-COND-ALLStanding conditions (canned)
RTRV-ACTIVE-USERThe active user session
RTRV-SW-VERSoftware version
RTRV-SYSSystem identity (SID, type, shelf serial)
RTRV-NBRLists the Remote NEs reachable through a Gateway NE — see GNE / RNE

Any other verb after login returns DENY with ICNV (input, command not valid). The exact TL1 block formatting (COMPLD/DENY headers, the SID and timestamp) is produced by the driver; unlike Cisco output, the TL1 wire bytes are not hashed by a determinism test.

Real optical networks are reached through a Gateway NE (GNE) — the node you SSH into — which fronts several Remote NEs (RNEs) that have no direct management access of their own. You address an RNE by putting its TID (target identifier) in the command’s TID field; the GNE routes the command across its control network to that RNE and returns the reply with the RNE’s TID as the response SID.

The same ciena_tl1 driver handles both. Whether a device has RNEs depends only on which generator model produced it:

ModelTopology
ciena-6500-tl1Standalone node (a GNE with no RNEs)
ciena-6500-tl1-gneGateway NE fronting 2–5 RNEs, whose inventories are generated into the device’s config

After login, RTRV-NBR lists the RNEs reachable through the GNE:

RTRV-NBR:ALL:2;
CIENA-LAX-1001 26-06-07 11:42:13
M 2 COMPLD
"RNE-LIMERICK:PROTOCOL=OSC,REACHABLE=YES,STATE=IS-NR"
"RNE-GALWAY:PROTOCOL=OSC,REACHABLE=YES,STATE=IS-NR"
;

You then address any RNE by TID. The same verb set works locally or against an RNE:

FormTargetExample
VERB::AID:CTAG; (empty TID)the GNE itselfRTRV-EQPT::ALL:100;
VERB:TID:CTAG; (TID set)the named RNERTRV-EQPT:RNE-LIMERICK:3;

A TID that is empty, ALL, or the GNE’s own SID is treated as local; an unknown or unreachable RNE TID returns DENY with IIAC (invalid access identifier). Both the TID-addressed short form VERB:TID:CTAG; and the strict VERB::AID:CTAG; form are accepted. The standalone model answers RTRV-NBR with an empty list and returns IIAC for any RNE TID.

GNE devices stream the targeted RNE’s inventory zero-copy from mmap just like a local RTRV-EQPT; the smaller per-RNE responses (alarms, conditions, sys, version) are synthesized with the RNE’s TID as the SID.

Add a Ciena model to your distribution — ciena-6500-tl1 for standalone nodes, ciena-6500-tl1-gne for Gateway NEs with RNEs behind them:

Terminal window
--distribution "sm:40,md:40,lg:10,ciena-6500-tl1:5,ciena-6500-tl1-gne:5"

The generator writes these rows with vendor=Ciena and template=ciena_tl1 in the manifest, and the server selects this driver for them. RNEs are not separate manifest rows — they are reached only through their GNE.

ciena_tl1 returns RequiresSSHAuth() == false. Under --ssh-auth=driver, Ciena devices accept the SSH connection without a transport password and rely on ACT-USER for authentication — exactly as the real platform does. This is the mode to use for realistic mixed Cisco + Ciena fleets.

The driver emits CmdTL1ActUser, CmdTL1RtrvEqpt, CmdTL1RtrvAlmAll, CmdTL1RtrvNbr, CmdTL1Deny, and the other CmdTL1* values on rcfgsim_command_duration_seconds. These appear once the driver is active (they are not part of the pre-registered Cisco label set). The TID a command targets is not a label — RNE addressing does not expand metric cardinality. See the metrics reference.