Data Capture and Statistics
Data is captured as a result of the use of the following commands:
- filter: Sets up conditions under which data capture is triggered and filtered. filter sets up the conditions for collecting several user defined statistics.
- filterPallette: Sets up address and pattern matches used in filter.
- capture: Sets up basic sizing parameters for captured data.
- captureBuffer: Provides access to the raw data and latency/jitter measurements.
- qos: Sets up conditions under which QoS statistics are gathered.
- atmReassembly: Registers particular ATM VPI/VCIs for stream reassembly.
- atmFilter: Sets up ATM data and mask conditions and allows ATM data matches to be used for user defined statistics or capture trigger and filter.
Raw data and statistics are collected through the use of the following commands:
- stat: Provides access to all of the port statistics.
- statGroup, statList and statWatch: Provides access to average latency data and timestamps during packet group operation.
- packetGroupStats: Provides access to statistics organized by groups of ports.
- latencyBin: Holds latency bin information.
- vsrStat: For 10Gigabit Ethernet VSR boards, provides access to global and per channel statistics.
- vsrError: For 10Gigabit Ethernet VSR boards, provides for the insertion of VSR errors.
- atmStat: For ATM boards, provides access to per VPI/VCI statistics.
- streamTransmitStats: For certain types of board, per-stream transmit statistics.
See the Ixia Reference Guide and the Ixia Reference Guide for a general discussion.
filter
filter sets up the conditions under which data capture is triggered and filtered. Conditions for the collection of user defined statistics (UDS) 1, 2, 5 and 6 are also specified. User defined statistics 5 and 6 are also known as async trigger 1 and 2. "filter" for full details.
There are six sets of eight options for the capture trigger and filter and the four user UDFs. The following contribute a prefix to the option name:
- captureTrigger...
- captureFilter...
- userDefinedStat1...
- userDefinedStat2...
- asyncTrigger1...
- asyncTrigger2...
The options for the suffix to these names are mentioned in the following table:
Member | Usage |
---|---|
Enable |
Enables or disables the filter, trigger or statistic. |
DA |
Two destination address matches (DA1 and DA2) are set through the use of filterPallette. This member chooses which conditions relating to those addresses are required for a match: Any address
|
SA |
Two source address matches (SA1 and SA2) are set up through the use of filterPallette. This member chooses which conditions relating to those addresses are required for a match: Any address
|
Pattern |
Two pattern matches (pattern1 and pattern2) are set up through the use of filterPallette. This member chooses which conditions relating to those pattern matches are required for a match: Any address
|
Error |
The error condition under which a match occurs including the following:
|
FrameSizeEnable |
Enables or disables the size constraint as specified in the two entries below. |
FrameSizeFrom |
The minimum and maximum frame size for a match. |
For example, at a minimum the Enable option of the captureTrigger command and the Enable option of the captureFilter command must be set for any data to be captured.
filterPallette
filterPallete sets up address and data pattern matching criteria used in filter. “filterPallette” for full details.
There are four sets of two options for the source and destination addresses 1 and 2. These are mentioned in the following table:
Table: filterPallete Options - DA/SA
Member | Usage |
---|---|
DA1 |
Destination address 1 data. |
DAMask1 |
Mask of valid bits for destination address 1. |
DA2 / DAMask2 |
Same for destination address 2. |
SA1 / SAMask1 |
Same for source address 1. |
SA2 / SAMask2 |
Same for source address 2. |
There are two sets of four options for each of the two data patterns. These are mentioned in the following table:
Table: filterPallette Options - Pattern 1/2
Member | Usage |
---|---|
matchType1 |
The basic form of match performed. This is a one of a number of pre-programmed choices in which the packet type and data pattern are pre-programmed and/or specially interpreted. One additional choice allows for user specification of the data and type. |
patternOffset1 |
If the user choice is made in matchType1, this is the offset of pattern 1 in the frame. For some port types, it is possible to specify where the offset is with respect to; for example, from the start of the IP header. |
pattern1 |
The data within the pattern to match for. For the pre-programmed choices in matchType1, this pattern has a special interpretation. |
patternMask1 |
The mask to apply against pattern1 to obtain a match. |
patternOffset2 |
The same as for pattern 1, but for pattern 2. |
In addition the following options control matching on GFP errors:
Table: filterPallette Options
Member | Usage |
---|---|
enableGfpBadFcsError |
Enables or disables the use of a particular GFP error condition. |
gfpErrorCondition |
Indicates whether the above enables need to all be present (AND’d) or just one (OR’d). |
capture
capture sets up the basic parameters associated with the capture buffer usage.
The capture process itself is started through the use of the portGroup setCommand startCapture command, or the ixStartCapture high-level command. The capture is stopped with the use of the portGroup setCommand stopCapture command, or the ixStopCapture high-level command, or a captureBufferget command. That is, the act of reading the capture buffer stops the capture process. The high-level command, ixCheckTransmitDone, may be used to wait until all ports have finished transmitting.
capture for full details. The important options of this command are mentioned in the following table:
Table: capture Options
Member | Usage |
---|---|
sliceOffset |
The offset within the frame from which to begin capturing data. |
sliceSize |
The maximum number of octets per frame to capture. 8192 is the largest slice size supported. |
nPackets |
(Read-only) The actual number of packets available in the capture buffer. |
captureBuffer
captureBuffer allows the raw captured data to be obtained, or calculated latency data to be viewed. Data is held in the hardware until the get method is called, which copies the captured data for a range of frame numbers into local computer memory. Following the use of get, getframe makes an individual frame available. Latency and deviation values may be calculated, subject to constraints through the use of setConstraint and getStatistics. Latency is defined as the difference between the transmit and receive times, in nanoseconds. Jitter is defined as the deviation of the latency. captureBuffer for full details.
The important options and sub-commands of this command are mentioned in the following table:
Table: captureBuffer Options
Category | Member | Usage |
---|---|---|
Data |
frame |
(Read-only) The contents of the selected frame based on sliceSize. |
|
length |
(Read-only) The total length of the frame, regardless of the slice captured. |
|
numFrames |
The number of frames in the hardware’s capture buffer. After setConstraints is called, this value is updated with the number of frames that met the constraints. |
|
status |
The status of the frame: either no errors, or one of a number of possible error conditions. |
|
timestamp |
The arrival time of the captured frame in nanoseconds. |
Measure-ments |
averageLatency |
(Read-only) The average latency of the frames in the retrieved capture buffer (in nanoseconds). |
|
latency |
(Read-only) The frame’s latency (in nanoseconds). |
|
minLatency |
(Read-only) The minimum latency (in nanoseconds) of the frames in the retrieved capture buffer. |
|
maxLatency |
(Read-only) The maximum latency (in nanoseconds) of the frames in the retrieved capture buffer. |
|
averageDeviation |
(Read-only) The average deviation of the average latencies of the frames in the retrieved capture buffer. |
|
standardDeviation |
(Read-only) The standard deviation of the average latencies of the frames in the retrieved capture buffer. |
Constraints |
enableEthernetType |
Enables jitter calculations to occur only over those frames with the ethernet type indicated in ethernetType. |
|
ethernetType |
If enableEthernetType is set, this is the ethernet type to match on. |
|
enableFramesize |
Enables jitter calculations to occur only over those frames with the frame size indicated in framesize. |
|
framesize |
If enableFramesize is set, this is the frame size to match on. |
|
enablePattern |
Enables jitter calculations to occur only over those frames with a pattern match as indicated in patternOffset and pattern. |
|
patternOffset |
If enableFramesize is set, this is the expected offset within the frame for the pattern match. |
|
patternOffset |
If enableFramesize is set, this is the expected pattern for the pattern match. |
Table: captureBuffer Sub-Commands
Member | Usage |
---|---|
get |
Copies the data for a range of frame numbers from the hardware capture buffer. The high-level command, ixCheckTransmitDone, may be used to wait until all ports have finished transmitting. Note: For cards like 10GE LSMXM(4), LavaAP40/100GE2P, HSE40GE, and FlexAP40GE, this sub-command stops the capture process if it is still active. |
getframe |
Gets an individual frame’s data. |
clearConstraint |
Clears the constraint values for jitter calculation. |
setConstraint |
Sets a new set of jitter calculation constraints. |
getConstraint |
Gets the current set of jitter calculation constraints. |
getStatistics |
Gets the jitter statistics for the current set of constraints. |
export |
Export the contents of a capture buffer for later import or usage by another program. |
import |
Import a previously saved and exported capture buffer for analysis. |
The following example imports a previously saved capture buffer and print out the number of bytes in each frame:
captureBuffer import d:/adrian.cap 1 1 1
set numRxPackets [captureBuffer cget -numFrames]
ixPuts "$numRxPackets packets in buffer"
for {set frame 1} {$frame <= $numRxPackets} {incr frame} {
captureBuffer getframe $frame
set capframe [captureBuffer cget -frame]
ixPuts "Frame $frame is [llength $capframe] bytes long"
}
Note: For some load modules (that is, LSM10GE), it is advisable to request capturBuffer data in chunks. Unless both the chassis and client machines have sufficiently high available memory, they may be overloaded by captured data.
qos
qos allows the user to set up the QoS counter filters and offsets. qos for full details. The important options and sub-commands of this command are mentioned in the following table:
Table: qos Options
Member | Usage |
---|---|
patternOffset |
The offset in the frame where a particular pattern is matched before QoS counting occurs. |
patternMatch |
The value to look for at the patternOffset. |
patternMask |
The mask to be applied in the pattern match. |
byteOffset |
The offset in the packet where the priority value is located - to be used to increment the correct QoS counter. |
Table: qos Sub-Commands
Member | Usage |
---|---|
setup |
Sets the QoS counters for certain types of packets:
|
atmReassembly
The atmReassembly command is used to configure an ATM port to reassemble received data for particular VPI/VCIs. This is necessary if a receive port is to be used in an atmStat receive list or in atmFilter. Note that these commands automatically calls this command for the port, if it is not in the reassembly list. Except for receive ports using other than default encapsulation (atmEncapsulationLLCRoutedCLIP) in packet group mode, the add sub-command need never be called; the del and removeAll commands proves useful when changing a list. atmReassembly for details. The important options and sub-commands of this command are mentioned in the following table:
Table: atmReassembly Options
Member | Usage |
---|---|
vpi |
The VPI and VCI to match. |
encapsulation |
The expected ATM encapsulation. |
enableIpTcpUdpChecksum |
If set, indicates that packets with this VPI/VCI pair are to be used in collecting TCP/UDP Checksum or QoS statistics. |
Table: atmReassembly Sub-Commands
Member | Usage |
---|---|
add |
Add or remove a particular VPI/VCI on a particular port to the reassembly list. |
removeAll |
Remove all items from the reassembly list. |
getFirstPair |
Cycles through the VPI/VCI pairs in the list. |
atmFilter
The atmFilter command is used to set up capture/filter values for use with ATM ports. The frame data from one or more VPI/VCIs may be used to set the User Defined Statistics 1/2 (UDS 1, UDS 2), capture trigger or capture filter. The settings for a particular VPI/VCI on a port are set up with the command options and then memorized through the set sub-command. atmFilter for details. The important options and sub-commands of this command are mentioned in the following table:
Table: atmFilter Options
Member | Usage |
---|---|
enable |
Enables or disables the use of a particular entry. |
enableUds1 |
Selects one or more uses for the filter setup. |
comparisonData |
Establishes the data that is matched to satisfy the count, trigger, or filter function. |
Table: atmFilter Sub-Commands
Member | Usage |
---|---|
set |
Sets the options for a particular VPI/VCI on a particular port. |
get |
Gets the options for a particular VPI/VCI on a particular port. |
stat
See the Ixia Reference Guide for a general discussion. Provides access to a wide range of statistics; the instantaneous value or rate is retrieved. stat for full details. Statistics may be gathered in the following ways:
- Statistics in bulk, through the use of the stat get allStats <chassis> <card> <port> followed by calls to get the data using stat cget -statName.
- Rate statistics in bulk, through the use of the stat getRate allStats <chassis> <card> <port> followed by calls to get the data using stat cget -statName
- An individual statistic, through the use of the stat get statName <chassis> <card> <port>. The values is returned from the call.
- An individual rate statistic, through the use of the stat getRate statName <chassis> <card> <port>. The value is returned from the call.
Note also that most of the statistics are 64-bit values. mpexpr should be used to perform calculations on these values.
The important options and sub-commands of this command are mentioned in the following table:
Table: stat Options
Member | Usage |
---|---|
mode |
Sets the mode of the counters:
|
<statistics> |
The number and type of statistics is too large to mention here. stat for a description of the stat command and the Ixia Reference Guide for description of all statistics available. |
Table: stat Sub-Commands
Member | Usage |
---|---|
get |
Gets a particular statistic value or all statistics. |
getRate |
Gets the frame rate for a particular statistic value or all statistics. |
getCaptureState |
Determines whether a port’s capture buffer is active or idle. |
stat getLinkState 1 1 1 |
Gets the link state for the chassis indexed 1, card indexed 1, and port indexed 1. It means, this command fetches the state of port 1 for the card 1. |
getTransmissionState |
Determines whether a port is actively transmitting or idle. |
set |
Sets the port’s statistics mode as indicated in the mode member. |
Table: getLinkState command for VM Ports
State | Values |
Explanation |
---|---|---|
Connected and Link Up |
1 |
Port up and running |
Connected and Link Down |
0 |
Port link down |
Disconnected |
57 |
Port disconnected from the chassis |
IxOS Version Mismatch |
73 |
IxOS Version Mismatch between the Virtual Chassis and the Virtual Load Modules |
Connect but No License |
66 |
Connected but No Licenses Available (check license server) |
statGroup, statList and statWatch
These commands provide alternate means for accessing statistics across a set of ports.statGroup, statList and statWatch for full details. These commands are more efficient means of collecting multiple statistics or statistics from a group of ports.
A group of port may be formed using statGroup and all of the valid statistics for the ports in the group are available through statList.
As an alternative, statWatch may be used to set up a number of statistics watch sets. Each statistics watch has a unique ID and holds a list of ports and statistics. Once a stat watch is started, the indicated set of statistics is regularly retrieved for the indicated set of ports. statList is used to read the actual statistics.
Note also that most of the statistics are 64-bit values. mpexpr should be used to perform calculations on these values. The important options and sub-commands of statGroup are mentioned in the following table:
Table: statGroup Options
Member | Usage |
---|---|
numPorts |
The current number of ports in the group. |
Table: statGroup Sub-Commands
Member | Usage |
---|---|
setDefault |
Resets the list to empty. |
add |
Adds a port to the group. |
del |
Deletes a specific port from the group. |
get |
Retrieves all of the valid statistics for all of the ports in the group. The individual statistics are available through statList. |
The important options and sub-commands of statList are mentioned in the following table:
Table: statList Options
Member | Usage |
---|---|
<statistics> |
The number and type of statistics is too large to mention here. stat for a description of the stat command and the Ixia Reference Guide for description of all statistics available. |
Table: statList Sub-Commands
Member | Usage |
---|---|
get |
Gets a particular statistic value or all statistics. |
getRate |
Gets the frame rate for a particular statistic value or all statistics. |
The important sub-commands of statWatch are mentioned in the following table:
Table: statWatch Sub-Commands
Member | Usage |
---|---|
create |
Creates and destroys a stat watch. |
addPort |
Adds or deletes a port to a particular stat watch. |
addStat |
Adds or deletes a statistics to a particular stat watch. |
addStatRate |
Adds or deletes a statistics rates to a particular stat watch. |
start |
Starts and stops the stat watch process. |
packetGroupStats
The packetGroupStats command is used to retrieve the statistics associated with packet groups, such as minimum latency, maximum latency and average latency. Some of the statistics are only available on specific types of ports; an attempt to read an unavailable statistic results in a error. Refer to the Ixia Reference Guide for list of which statistics are available.
Three sub-commands are used to retrieve the actual statistics.
- packetGroupStats get chasID cardID portID [fromPGID toPGID]: This fetches a range of statistics for the indicated port. The range is dictated by the fromPGID to the toPGID; if omitted, all PGIDs are retrieved, starting with PGID 0.
- packetGroupStats getGroup index: This fetches the statistics for a PGID that is PGID = fromPGID + index, where fromPGID is the value from the last call to packetGroupStats get. That is, index = 0 refers to the fromPGID packet group ID.
- packetGroupStats getFrameCount index: Operates in the same manner as getGroup, with respect to the index parameter.
An additional feature available on some port types is the ability to collect latency measurements per packet group. The availability of this feature for a given port can be tested using the port isValidFeature... portFeatureRxLatencyBin. The port must be configured for wide packet groups (the port’s receiveMode includes the portRxModeWidePacketGroup bit); the availability of this mode may be tested with port isValidFeature... portFeatureRxWidePacketGroups. (Note: When the port is in PRBS mode, all latency specific stats are removed.)
Latency bin dividing times must be set up with the packetGroup’s enableLatencyBins, latencyBinList option. Following a call to packetGroupStats getGroup, the numLatencyBins option is set and thse latency bin information is available through calls to getFirstLatencyBin, getNextLatencyBin and getLatencyBin. The latency information is available in the options of the latencyBin command. Note that there is one more latency bin available than the number of dividers set in packetGroup’s latencyBinList, due to the implicit creation of a latency bin from the last divider to the maximum possible latency value.
An additional feature available on some port types is the ability to measure latency over time, per packet group. The availability of this feature for a given port can be tested using the port isValidFeature... portFeatureRxTimeBin. The port must be configured for wide packet groups (the port’s receiveMode includes the portRxModeWidePacketGroup bit); the availability of this mode may be tested with port isValidFeature... portFeatureRxWidePacketGroups.
Time bins must be set up with the packetGroup’s enableTimeBins, numPgidPerTimeBin, numTimeBins and timeBinDuration options. Following a call to packetGroupStats getGroup, the numTimeBins, numPgidPerTimeBin and timeBinDuration options are set. Latency information for a particular time bin can be obtained by using the additional timeBin argument to the getGroup and getGroupFrameCount sub-commands.
packetGroupStats for full details. The important options and sub-commands are mentioned in the following table:
Table: packetGroupStats options
Category | Member | Usage |
---|---|---|
Basic |
numGroups |
The number of actual groups received. |
|
totalFrames |
The total number of frames used to calculate the statistics. |
Latency |
averageLatency |
The average/min/max latency for a group. |
Latency Bins |
numLatencyBins |
The number of latency bins active. |
Time Stamps |
firstTimeStamp |
First and last time stamp for packets in the packet group. |
Rates |
bitRate |
The bit rate. The stats bitRate and byteRate are not available in Latency view when delay variation is specified as with Latency Min Max Average. Note: To get the valid frame rate, execute the packetGroupStats get command twice. In this case it is PG stats::packetGroupStats get $chassId $cardId $portId 0 $ExpectedPgId . When you execute this command the first time, it returns 0. When you execute it the second time, it returns the valid count. This is because frame rate is calculated as per the difference in value between the current frame count and the previous frame count. The first time when you execute the packetGroupStats command, it will return the base value, which is the difference between current frame count and previous frame count. So you get the value as 0. The second time when you execute the command, it will calculate the frame rate by taking the difference between the base value and the current value. |
PRBS |
prbsBitsReceived |
Per-PGID stats available when port is in PRBS mode |
Table: packetGroupStats Sub-Commands
Member | Usage |
---|---|
get |
Used to get the data for a range of group IDs into local memory. |
getGroup |
Used to retrieve the latency for a particular group. |
getGroupFrameCount |
Used to retrieve the number of frames for a group. |
getFirstLatencyBin |
Used to retrieve latency bin values to the latencyBin command’s options. |
latencyBin
This command holds the result of a packetGroupStats getFirstLatencyBin/getNextLatencyBin/getLatencyBin call. latencyBin for full details. The important options of this command are mentioned in the following table:
Table: latencyBin options
Category | Member | Usage |
---|---|---|
Basic |
startTime |
The start and stop times of the latency bin. |
|
numFrames |
The number of frames in the bin. |
Latency |
minLatency |
The min/max latency for a bin. |
Time Stamps |
firstTimeStamp |
First and last time stamp for packets in the bin. |
Rates |
bitRate |
The bit rate. Note that this requires multiple calls to get before valid values are obtained. |
(Note: When the port is in PRBS mode, all latency specific stats are removed.)
vsrStat
vsrStat is used to retrieve statistics for VSR equipped 10GE cards. vsrStat for full details. The important options and sub-commands of this command are mentioned in the following table:
Table: vsrStat options
Member | Usage |
---|---|
tx |
Global transmit/receive statistics. |
rxCodeWordViolationCounter |
Receive statistics available on a per-channel basis. |
Table: vsrStat Sub-Commands
Member | Usage |
---|---|
get |
Used to get all of the global and per channel statistics |
getChannel |
Used to fetch the channel specific statistics for one channel. |
vsrError
vsrError is used to insert deliberate errors in VSR equipped 10Gigabit Ethernet cards. vsrStat for full details. The important options and sub-commands of this command are mentioned in the following table:
Table: vsrError options
Member | Usage |
---|---|
enableChannelSwap |
Controls features related to error detection and recovery. |
bipErrorMask |
Controls insertion of Section BIP errors. |
crcErrorBlockCount |
Controls insertion of CRC errors. |
frameDelimiterErrorMask |
Controls insertion of frame delimiter errors. |
channelSkewMode |
Controls insertion of channel skew errors. |
error8b10bCodeWordCount |
Controls insertion of 8b/10b code word errors. |
Table:vsrError Sub-Commands
Member |
Usage |
---|---|
insertError |
Momentarily inserts a single instance of a particular error type. |
start |
Starts error insertion for all modes. |
stop |
Stops error insertion. |
atmStat
The atmStat command is used to access statistics for particular VPI/VCI streams. VPI/VCIs for particular ports are added to a receive or transmit list with the addRx and addTx sub-commands. The statistics for all ports and VPI/VCIs in the lists is retrieved from the ports with the get sub-command. Individual statistics or rate statistics are accessed through the use of the getStat and getRate commands. The statistics are available in the command’s options.atmStat for full details. The important options and sub-commands of this command are mentioned in the following table:
Table: atmStat Options
Member | Usage |
---|---|
rxAtmCells |
Statistics for receive ports. |
txAtmCells |
Statistics for transmit ports. |
vpi |
The current VPI/VCI pair. |
Table: atmStat Sub-Commands
Member | Usage |
---|---|
addRx |
Adds a VPI/VCI for a particular port to the receive or transmit list. |
delRx |
Deletes a VPI/VCI for a particular port from the receive or transmit list. |
removeAllRx |
Clears all VPI/VCI pairs from the receive or transmit list for a particular port. |
getFirstRxPair |
Cycles through the receive or transmit lists. |
get |
Gets all of the statistics for all VPI/VCI pairs for all ports. Must be followed by a call to getStat or getRate. |
getStat |
Gets the statistics for a particular VPI/VCI on a particular port. |
getRate |
Gets the rate statistics for a particular VPI/VCI on a particular port. |
streamTransmitStats
The streamTransmitStats command may be used to retrieve the per-stream transmit statistics. This may be checked through the use of the port isValidFeature... portFeaturePerStreamTxStats command. Per-stream transmit stats are retrieved by the stream id <number> per configuration on the port. They vary per port per transmit mode.
Note: The TXS8 supports 1 to 255 streams in packet stream transmit mode, and 1 to 128 streams in advanced mode.
StreamTransmitStats on ATM cards is limited to displaying statistics for 127 streams.
Statistics for a block of streams are retrieved through the use of the get command. Statistics for disabled streams are set to 0. Statistics for a particular stream are retrieved into the options of this command through the use of the getGroup command.
The getGroup command uses a ‘1’ based index into the block of streams fetched in the get command. For example, if get was used to fetch streams 101 through 200, then the statistics for stream 105 may be obtained by calling getGroup for index 5. The important options and sub-commands of this command are mentioned in the following table:
Table: streamTransmitStats Options
Member | Usage |
---|---|
numGroups |
The number of groups retrieved by the get command. |
frameRate |
The command returns the rate at which the frames are sent. Note: To get the valid frame rate, execute the streamTransmitStats get command twice. In this case it is Stream stats::streamTransmitStats get $chassId $cardId $portId $streamId. When you execute this command the first time, it returns 0. When you execute it the second time, it returns the valid count. This is because frame rate is calculated as per the difference in value between the current frame count and the previous frame count. The first time when you execute the streamTransmitStats command, it will return the base value, which is the difference between current frame count and previous frame count. So you get the value as 0. The second time when you execute the command, it will calculate the frame rate by taking the difference between the base value and the current value. |
framesSent |
The command returns the number of frames sent. |
theoreticalAverageFrameRate |
Calculates the long-term average frame rate for each stream |
Table: streamTransmitStats Sub-Commands
Member | Usage |
---|---|
get |
Fetches a block of data for a number of streams. |
getGroup |
Accesses a particular stream’s statistics. |