Tcl API Overview
The Ixia Tcl Command library provides full access to the Ixia hardware platform. Configurations can be sent to the hardware and various programs can be created and executed on the system. Tcl scripting allows automation of testing procedures when tens to thousands of ports are involved. Ixia’s Tcl Command Library is built using a combination of commands that are written in Tcl and commands that are implemented in C/C++. The figure below shows the location of the C++ API Client (IxTclHAL) in the overall picture of the Ixia hardware platform.
Note: TCL version 8.5 and 8.6 are supported.
Figure: System Overview Diagram

The IxServer module resides on the computer connected to the test hardware and is responsible for control and operation of the hardware. A single IxServer module exists per chassis.
The IxHAL (Hardware Abstraction Layer) is a C++ based application that provides a higher level abstraction of the Ixia hardware. Working with IxServer, it operates the hardware chassis, cards and ports. When the test software (IxExplorer, IxAutomate (formerly IxScriptMate), Tcl based applications) reside on a different computer than the test hardware, an additional IxHAL copy resides on the remote machine. These two copies act in concert to provide a single interface to upper layers of software.
IxHAL serves as a buffer for configuration information, saving and buffering this data until it receives a command to transfer the data to or from the hardware through IxServer. The IxExplorer software, for example, uses its copy of IxHAL to hold configuration data until it is transferred to the hardware.
In the case of Tcl applications, the Tcl Command Library is a set of Tcl commands that are used to configure the traffic generation, capture and statistics parameters on the Ixia hardware platform. Tcl applications use these commands to configure test parameters and then use a ‘set’ option to transfer the information into IxHAL. A ‘write’ option causes IxHAL to send the information to the hardware. To retrieve status, captured data and statistics the application uses a ‘get’ option which retrieves the information from IxHAL into IxTclHAL. A ‘cget’ option retrieves these values for use in Tcl applications.
Discussions of Tcl commands can be found in the following chapters:
- IxTclHal API Description: A discussion of the Tcl commands in IxTclHAL.
- Appendix A - IxTclHAL Commands: A complete description of the Tcl Command Library.
- Appendix B - Utility Commands: A number of additional provided utility commands.a number of additional Tcl commands that are used in most tests.
- Appendix C - High-Level API: A number of additional Tcl commands that are used in most tests.
Custom applications or test scripts can be written using Ixia's Tcl Command Library. For Windows users, as in standard Tcl/Tk packages, Ixia provides a Dynamic Link Library (DLL) file for Windows 2000/XP that may be loaded into a standard Tcl shell or Wish Console. The DLL gives access to the IxTclHal Command library.
For Unix users, the IxTclHal package connects to an instance of a TclServer on a Ixia chassis, where the DLL is used.
After installing the Tcl Client on the workstation, the Tcl package can be loaded by launching the Tcl Shell (double-clicking the Wish Console icon on the Desktop) and typing in the following command:
%package require IxTclHal
Now all the Ixia Tcl commands are available. If a new script is to be written, this should be the first line of the script file. The package command can also be used inside a previously written script, which could be loading other Tcl extensions such as Expect, Tcl-DP.
ScriptGen
ScriptGen is an auxiliary Tcl tool that is installed as part of the Tcl Client package. It’s purpose is to create a Tcl program which reflects the configuration of a particular port. ScriptGen is run from a Wish Console and the resulting program is written to disk and shown in the console window. The configuration of the port may have been established through the use of any of the following Ixia tools: IxExplorer, IxAutomate (formerly IxScriptmate), or TCL API. The operation of ScriptGen is described in Appendix A of the IxExplorer User Guide.
What’s New in Version 9.14?
No new features are added in this release.
All Deprecated Commands and Options
The following table lists the commands, sub-commands and options which have been deprecated through the lifetime of the IxOS Tcl API. Refer to the appropriate guide release to determine the reason for the deprecation.
Note that the Usability column displays whether the command is a placeholder or it should not be used. The explanation of these options is as follows:
- Placeholder: The command or option has been coded to return a set value so as not to break previous scripts.
- Do not use: The command can still be used, but we do not recommend as it might break scripts in future releases.
Table: All deprecated commands and options
Command | Sub-commands | Options | First deprecated release | Usability |
---|---|---|---|---|
<many commands> |
decode - chassis, card, port are required |
|
3.70 |
Placeholder |
atmHeader |
|
ATM encapsulation options that do not begin with atmEncapsulation |
3.80 |
Placeholder |
calculateFPS |
All |
All |
5.10 |
Do not use |
calculateGapBytes |
All |
All |
3.80 |
Do not use |
captureFilterError |
|
errOversize, errUndersize, errFragment |
5.10 |
Do not use |
card |
getInterface |
|
3.70 |
Do not use |
|
|
(type) cardUSB |
5.20 |
Do not use |
|
|
txClockDeviationLan |
5.30SP1 |
Do not use |
|
|
txClockDeviationWan |
5.30SP1 |
Do not use |
chassis |
|
baseAddressMask |
5.00 |
Do not use |
chassis |
write |
|
4.10 |
Do not use |
|
writeAll |
|
4.10 |
Do not use |
filterPallette |
|
type1, type2 |
3.65 |
Do not use |
filterPallette |
config |
-pattern1 "080201' used to work, but no longer. In 5.0 and up, must be specified as filterPallete config |
5.0 |
Use space between hex bytes |
frameRelay |
dlciCore |
|
4.10 |
Do not use |
fcoeProperties |
|
enableKeepAlives |
5.70 |
Do not use |
gapClockTicks | 9.10 | Do not use | ||
interfaceEntry |
|
atmMode |
3.80 |
Placeholder |
|
|
ATM encapsulation options that do not begin with atmEncapsulation |
3.80 |
Placeholder |
interfaceTable |
all |
sendArpClear [description] |
5.00 |
Do not use |
ipAddressTableItem |
|
ATM encapsulation options that do not begin with atmEncapsulation |
3.80 |
Do not use |
isl |
|
encapSA, encapDA |
3.80 |
Do not use |
|
|
hsa |
4.10 |
Do not use |
ixInitialize |
All |
All |
3.80 |
Do not use |
ixIs___Installed |
All |
All |
3.80 |
Do not use |
licenseManagement |
|
|
5.00 |
Do not use |
port
|
|
dataScrambling |
3.70 |
Do not use |
|
|
portFeaturePacketFlow-ImageFile |
4.10 |
Do not use |
|
|
portPosFraming |
pre 3.65 |
Do not use |
|
|
rateMode |
3.65 |
Do not use |
|
|
sonetInterface |
3.70 |
Do not use |
|
|
sonetOperation |
3.70 |
Do not use |
|
|
useRecoveredClock |
3.65 |
Do not use |
|
|
(portMode) portUsbMode |
5.20 |
Do not use |
|
|
(type) portUsbUsb |
5.20 |
Do not use |
|
getInterface |
|
3.70 |
Placeholder |
portGroup |
get |
|
pre 3.65 |
Do not use |
protocol |
|
dutStripTag |
3.65 |
Placeholder |
protocoloffset |
enable |
|
4.10 |
Placeholder |
sonet |
B1, B2, B3 |
|
3.50 |
Do not use |
|
errorDuration |
|
3.50 |
Do not use |
|
insertBipErrors |
|
3.50 |
Do not use |
|
lossOfFrame |
|
3.50 |
Do not use |
|
lossOfSignal |
|
3.50 |
Do not use |
|
periodicB1, B2, B3 |
|
3.50 |
Do not use |
|
periodicLossOfFrame |
|
3.50 |
Do not use |
protocolServer | ||||
enableBgp4CreateInterface | 7.51 | Do not use | ||
enableBgp4Service | 7.51 | Do not use | ||
enableIgmpCreateInterface | 7.51 | Do not use | ||
enableIgmpQueryResponse | 7.51 | Do not use | ||
enableIsisCreateInterface | 7.51 | Do not use | ||
enableIsisService | 7.51 | Do not use | ||
enableLdpService | 7.51 | Do not use | ||
enableMldService | 7.51 | Do not use | ||
enableOspfCreateInterface | 7.51 | Do not use | ||
enableOspfService | 7.51 | Do not use | ||
enableOspfV3Service | 7.51 | Do not use | ||
enablePimsmService | 7.51 | Do not use | ||
enableRipCreateInterface | 7.51 | Do not use | ||
enableRipService | 7.51 | Do not use | ||
enableRipngService | 7.51 | Do not use | ||
enableRsvpCreateInterface | 7.51 | Do not use | ||
enableRsvpService | 7.51 | Do not use | ||
stat |
enableUsbExtendedStats |
|
4.00 |
Placeholder |
|
|
usb* |
4.00 |
|
|
|
counterVal |
5.10 |
Do not use |
|
|
counterRate |
5.10 |
Do not use |
enableOspfStats | 7.51 | Do not use | ||
ospfTotalSessions | 7.51 | Do not use | ||
ospfFullNeighbors | 7.51 | Do not use | ||
ospfSessionFlap | 7.51 | Do not use | ||
enableIsisStats | 7.51 | Do not use | ||
enableRsvpStats | 7.51 | Do not use | ||
isisSessionsConfiguredL1 | 7.51 | Do not use | ||
isisSessionsUpL1 | 7.51 | Do not use | ||
isisNeighborsL1 | 7.51 | Do not use | ||
isisSessionFlapL1 | 7.51 | Do not use | ||
isisSessionsConfiguredL2 | 7.51 | Do not use | ||
isisSessionsUpL2 | 7.51 | Do not use | ||
isisNeighborsL2 | 7.51 | Do not use | ||
isisSessionFlapL2 | 7.51 | Do not use | ||
isisL1DBSize | 7.51 | Do not use | ||
isisL2DBSize | 7.51 | Do not use | ||
isisRBridgesLearned | 7.51 | Do not use | ||
isisMacGroupRecordsLearned | 7.51 | Do not use | ||
isisIpV4GroupRecordsLearned | 7.51 | Do not use | ||
isisIpV6GroupRecordsLearned | 7.51 | Do not use | ||
isisTrillRbridgeChannelEchoTx | 7.51 | Do not use | ||
isisTrillRbridgeChannelEchoRx | 7.51 | Do not use | ||
isisTrillRbridgeChannelEchoReplyTx | 7.51 | Do not use | ||
isisTrillRbridgeChannelEchoReplyRx | 7.51 | Do not use | ||
rsvpIngressLSPsConfigured | 7.51 | Do not use | ||
rsvpIngressLSPsUp | 7.51 | Do not use | ||
rsvpEgressLSPsUp | 7.51 | Do not use | ||
rsvpSessionFlap | 7.51 | Do not use | ||
rsvpIngressSubLSPsConfigured | 7.51 | Do not use | ||
rsvpIngressSubLSPsUp | 7.51 | Do not use | ||
rsvpEgressSubLSPsUp | 7.51 | Do not use | ||
ldpSessionsUp | 7.51 | Do not use | ||
ldpSessionsConfigured | 7.51 | Do not use | ||
ldpSessionFlap | 7.51 | Do not use | ||
enableLdpStats | 7.51 | Do not use | ||
stpSessionFlap | 7.51 | Do not use | ||
enableStpStats | 7.51 | Do not use | ||
ldpBasicSessionsUp | 7.51 | Do not use | ||
enableOspfV3Stats | 7.51 | Do not use | ||
ospfV3SessionsConfigured | 7.51 | Do not use | ||
ospfV3SessionsUp | 7.51 | Do not use | ||
ospfV3SessionFlap | 7.51 | Do not use | ||
rxIgmpFrames | 7.51 | Do not use | ||
txIgmpFrames | 7.51 | Do not use | ||
pimsmRoutersConfigured | 7.51 | Do not use | ||
pimsmRoutersRunning | 7.51 | Do not use | ||
pimsmNeighborsLearned | 7.51 | Do not use | ||
pimsmSessionFlap | 7.51 | Do not use | ||
enablePimsmStats | 7.51 | Do not use | ||
enableMldStats | 7.51 | Do not use | ||
rxMldFrames | 7.51 | Do not use | ||
txMldFrames | 7.51 | Do not use | ||
eigrpRoutersConfigured | 7.51 | Do not use | ||
eigrpRoutersRunning | 7.51 | Do not use | ||
eigrpNeighborsLearned | 7.51 | Do not use | ||
eigrpNeighborDeleted | 7.51 | Do not use | ||
enableEigrpStats | 7.51 | Do not use | ||
bfdRoutersConfigured | 7.51 | Do not use | ||
bfdRoutersRunning | 7.51 | Do not use | ||
bfdSessionsConfigured | 7.51 | Do not use | ||
bfdSessionsAutoConfigured | 7.51 | Do not use | ||
bfdAutoConfiguredSessionsUp | 7.51 | Do not use | ||
bfdSessionsUp | 7.51 | Do not use | ||
bfdSessionFlap | 7.51 | Do not use | ||
enableBfdStats | 7.51 | Do not use | ||
cfmBridgesConfigured | 7.51 | Do not use | ||
cfmBridgesRunning | 7.51 | Do not use | ||
cfmMepsConfigured | 7.51 | Do not use | ||
cfmMepsRunning | 7.51 | Do not use | ||
cfmSessionFlap | 7.51 | Do not use | ||
cfmMasConfigured | 7.51 | Do not use | ||
cfmMasRunning | 7.51 | Do not use | ||
cfmRemoteMepsLearned | 7.51 | Do not use | ||
cfmTrunksConfigured | 7.51 | Do not use | ||
cfmTrunksRunning | 7.51 | Do not use | ||
enableCfmStats | 7.51 | Do not use | ||
lacpFramesReceived | 7.51 | Do not use | ||
lacpFramesSent | 7.51 | Do not use | ||
lacpMarkerFramesReceived | 7.51 | Do not use | ||
lacpMarkerFramesSent | 7.51 | Do not use | ||
lacpMarkerResponseReceived | 7.51 | Do not use | ||
lacpMarkerResponseSent | 7.51 | Do not use | ||
lacpSessionState | 7.51 | Do not use | ||
lacpSessionFlap | 7.51 | Do not use | ||
enableLacpStats | 7.51 | Do not use | ||
oamLinksConfigured | 7.51 | Do not use | ||
oamLinksRunning | 7.51 | Do not use | ||
oamSessionFlap | 7.51 | Do not use | ||
oamInformationPDUsSent | 7.51 | Do not use | ||
oamInformationPDUsReceived | 7.51 | Do not use | ||
oamEventNotificationPDUsSent | 7.51 | Do not use | ||
oamEventNotificationPDUsReceived | 7.51 | Do not use | ||
oamVariableRequestPDUsSent | 7.51 | Do not use | ||
oamVariableRequestPDUsReceived | 7.51 | Do not use | ||
oamVariableResponsePDUsSent | 7.51 | Do not use | ||
oamVariableResponsePDUsReceived | 7.51 | Do not use | ||
oamLoopbackControlPDUsSent | 7.51 | Do not use | ||
oamLoopbackControlPDUsReceived | 7.51 | Do not use | ||
oamOrgSpecificPDUsSent | 7.51 | Do not use | ||
oamOrgSpecificPDUsReceived | 7.51 | Do not use | ||
enableOamStats | 7.51 | Do not use | ||
mplsTpCccvConfigured | 7.51 | Do not use | ||
mplsTpCccvUp | 7.51 | Do not use | ||
mplsTpCccvDown | 7.51 | Do not use | ||
enableMplsTpStats | 7.51 | Do not use | ||
elmiUniCConfigured | 7.51 | Do not use | ||
elmiUniCRunning | 7.51 | Do not use | ||
elmiUniNConfigured | 7.51 | Do not use | ||
elmiUniNRunning | 7.51 | Do not use | ||
elmiUniSessionFlap | 7.51 | Do not use | ||
elmiSessionOperational | 7.51 | Do not use | ||
elmiCheckTx | 7.51 | Do not use | ||
elmiCheckRx | 7.51 | Do not use | ||
elmiFullEnquiryTx | 7.51 | Do not use | ||
elmiFullEnquiryRx | 7.51 | Do not use | ||
elmiFullStatusTx | 7.51 | Do not use | ||
elmiFullStatusRx | 7.51 | Do not use | ||
elmiFullEnquiryContinuedTx | 7.51 | Do not use | ||
elmiFullEnquiryContinuedRx | 7.51 | Do not use | ||
elmiFullStatusContinuedTx | 7.51 | Do not use | ||
elmiFullStatusContinuedRx | 7.51 | Do not use | ||
elmiAsyncStatusTx | 7.51 | Do not use | ||
elmiAsyncStatusRx | 7.51 | Do not use | ||
enableElmiStats | 7.51 | Do not use | ||
lldpSent | 7.51 | Do not use | ||
lldpReceived | 7.51 | Do not use | ||
lldpRxAgeout | 7.51 | Do not use | ||
bgpTotalSessions | 7.51 | Do not use | ||
bgpTotalSessionsEstablished | 7.51 | Do not use | ||
bgpSessionFlap | 7.51 | Do not use | ||
ethernetOAMInformationPDUsSent | 7.51 | Do not use | ||
ethernetOAMInformationPDUsReceived | 7.51 | Do not use | ||
ethernetOAMEventNotificationPDUsReceived | 7.51 | Do not use | ||
ethernetOAMLoopbackControlPDUsReceived | 7.51 | Do not use | ||
ethernetOAMOrgPDUsReceived | 7.51 | Do not use | ||
ethernetOAMVariableRequestPDUsReceived | 7.51 | Do not use | ||
ethernetOAMVariableResponsePDUsReceived | 7.51 | Do not use | ||
ethernetOAMUnsupportedPDUsReceived | 7.51 | Do not use | ||
enableIgmpStats | 7.51 | Do not use | ||
enableBgpStats | 7.51 | Do not use | ||
enableIcmpStats | 7.51 | Do not use | ||
enableEthernetOamStats | 7.51 | Do not use | ||
stream |
|
fir |
3.70 |
Do not use |
|
|
fcs options: good, alignErr, dribbleErr, bad, none |
3.80 |
Do not use |
|
|
rateMode:useGap, usePercentRate |
3.80 |
useGap deprecated in favor of ifg; usePercentRate deprecated in favor of percentPacketRate |
|
setGaps |
|
5.10 |
Do not use |
|
setIFG |
|
5.10 |
Do not use |
|
setLoopCount |
|
5.20 |
Do not use |
|
setNumFrames |
|
5.20 |
Do not use |
streamQueue |
|
aal5BitRate |
3.80 |
Do not use |
tcp |
|
options |
5.10 |
Do not use |
timeserver |
|
timeSource (some options) |
4.00 |
Do not use |
|
|
e1T1Status |
4.00 |
Do not use |
|
|
timeOfDay |
4.00 |
Do not use |
udf |
|
counterType |
5.10 |
on boards and modes that support udfSize, countertype is deprecated in favor of udfSize |
usb |
Entire command |
Entire command |
4.00 |
Placeholder |
weightedRandomFramesize |
|
randomType: UUNet and Lucent options |
3.80 |
Do not use |