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:

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:

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
calculateFrameRate

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
typeMask1, typeMask2

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
-pattern1 '08 02 01'.

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]
(only the description part of the command is deprecated)

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
lineScrambling

3.70

Do not use

 

 

portFeaturePacketFlow-ImageFile

4.10

Do not use

 

 

portPosFraming
portEthernetFraming

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
portUsbEthernet
port10100UsbSh4

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