bert
bert - configure Packet over Sonet cards for Bit Error Rate Testing.
SYNOPSIS
bert sub-command options
DESCRIPTION
The bert command is used to configure the transmission and receive patterns for BERT testing. Deliberate errors may be inserted with the bertErrorGeneration command. Refer to the Ixia Reference Guide for a discussion on BERT testing in Ixia equipment.
bert commands operate on concatenated and channelized cards. Cards capable of channelization must be put in that mode by setting the port command's transmitMode setting to portTxModeBertChannelized. They can be further channelized by using the bert channelize sub-command. Channel selection in accomplished with the optional level argument in the set and get commands. bert and bertErrorGeneration for more details on level selection.
STANDARD OPTIONS
enableInvertRxPattern
enable / disable
If txRxPatternMode is set to independent, this indicates that the expected receive pattern is to be inverted. (default = disable)
enableInvertTxPattern
enable / disable
If set, indicates that the transmitted pattern is to be inverted. (default = disable)
enableStats
enable / disable
Only applicable when portFeatureBertList is active. If set, enables BERT lane statistics to be collected. (default = disable)
rxPatternIndex
If txRxPatternMode is set to independent, this indicates the expected receive pattern: one of a set of predefined patterns:
Option |
Value |
Usage |
---|---|---|
bertPatternAllZero |
8 |
all zeroes are expected. |
bertPatternAlternatingOneZero |
9 |
alternating ones and zeroes are expected. |
bertPatternUserDefined |
10 |
the pattern indicated in rxUserPattern is expected, but inverted |
bertPattern2_11 |
12 |
the 2^11 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_15 |
13 |
the 2^15 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_20 |
14 |
the 2^20 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_23 |
15 |
the 2^23 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_31 |
11 |
the 2^23 pattern as specified in ITU-T 0151 is expected. |
bertPatternAutoDetect |
32 |
(default) the pattern is automatically detected by the receiver. |
bertPattern2_7 |
24 |
the 2^7 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_9 |
24 |
the 2^9 pattern as specified in ITU-T 0151 is expected. |
bertPatternLowFreq |
26 |
a low frequency pattern |
bertPatternHighFreq |
27 |
a high frequency pattern |
bertPatternContinuousRandom |
28 |
a continuous random pattern |
bertPatternContinuousJitter |
29 |
a continuous jitter pattern |
bertPatternLaneDetect |
31 |
used to detect the lane pattern and how the lanes are connected between ports |
rxUserPattern
If the rxPatternIndex is set to user defined, then this is the expected pattern. If the pattern is shorter than the received data, then the pattern is repeated as necessary. If the pattern is not suitable for use (especially in unframed BERT), then a message is logged to the error file, along with a correct value. (default = 00 00 00 00)
txPatternIndex
Indicates the pattern to be transmitted: one of a set of predefined patterns:
Option |
Value |
Usage |
---|---|---|
bertPatternAllZero |
8 |
all zeroes are expected. |
bertPatternAlternatingOneZero |
9 |
alternating ones and zeroes are expected. |
bertPatternUserDefined |
10 |
the pattern indicated in rxUserPattern is expected, but inverted |
bertPattern2_11 |
12 |
the 2^11 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_15 |
13 |
the 2^15 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_20 |
14 |
the 2^20 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_23 |
15 |
the 2^23 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_31 |
11 |
the 2^23 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_7 |
24 |
the 2^7 pattern as specified in ITU-T 0151 is expected. |
bertPattern2_9 |
24 |
the 2^9 pattern as specified in ITU-T 0151 is expected. |
bertPatternLowFreq |
26 |
a lowfrequency pattern |
bertPatternHighFreq |
27 |
a high frequency pattern |
bertPatternContinuousRandom |
28 |
a continuous random pattern |
bertPatternContinuousJitter |
29 |
a continuous jitter pattern |
bertPatternLaneDetect |
|
|
txRxPatternMode
Indicates if transmit and receive patterns are tied together or not:
Option |
Value |
Usage |
---|---|---|
bertTxRxCoupled |
0 |
the rxPatternIndex, rxUserPattern and enabInvertRxPattern values are set from txPatternIndex, txUserPattern and enabInvertTxPattern. |
bertTxRxIndependent |
1 |
(default) transmit and receive patterns are set independently. |
txUserPattern
If the txPatternIndex is set to user defined, then this is the transmitted pattern. If the pattern is shorter than the packet data size, then the pattern is repeated as necessary. (default = 00 00 00 00)
COMMANDS
The bert command is invoked with the following sub-commands. If no sub-command is specified, returns a list of all sub-commands available.
bert cget option
Returns the current value of the configuration option given by option. Option may have any of the values accepted by the bert command.
bert channelize chasID cardID portID [level]
Causes the level indicated by the level parameter of the indicated port to be channelized. The first level of channelization occurs when the card is set in channelized mode using the port command's transmitMode variable to portTxModeBertChannelized. Second and subsequent levels may be channelized with this command. For example, in an OC192 Channelized BERT card, the first OC48 channel is known as 1.0. It may be channelized by using:
bert channelize 1 2 1 1.0
The level parameter is expressed as a floating point number for all load modules except the 10GE XAUI module, where it must always be an integer (for example, 1, 2, 3 or 4).
bert config option value
Modify the configuration options of the bert. If no option is specified, returns a list describing all of the available options (see STANDARD OPTIONS) for bert.
bert get chasID cardID portID laneNo [level]
Gets the current configuration of the bert for port with id portID on card cardID, chassis chasID from its hardware. If the card is channelized, then the optional level parameter must be used to select the appropriate channel. If the card is 40GE LSM XMV or 100GE LSM XMV, the laneNumber option is used to specify the BERT lane. Call this command before calling bert cget option value to get the value of the configuration option. Specific errors are:
- No connection to a chassis
- Invalid port number
bert isChannelized chasID cardID portID [level]
Returns 1 if the requested channel for the indicated port is channelized and 0 otherwise.
bert set chasID cardID portID laneNo [level]
Sets the configuration of the bert in IxHAL for port with id portID on card cardID, chassis chasID by reading the configuration option values set by the bert config option value command. If the card is channelized, then the optional level parameter must be used to select the appropriate channel. The level parameter is expressed as a floating point number for all load modules except the 10GE XAUI module, where it must always be an integer (for example, 1, 2, 3 or 4). If the card is 40GE LSM XMV or 100GE LSM XMV, the laneNumber option is used to specify the BERT lane.
Specific errors are:
- No connection to a chassis
- Invalid port number
- The port is being used by another user
- Bert is not supported for this port type (PoS only)
- Configured parameters are not valid for this setting
bert setDefault
Sets to IxTclHal default values for all configuration options.
bert unChannelize chasID cardID portID level
Causes the level indicated by the level parameter of the indicated port to be unchannelized. The level parameter is expressed as a floating point number for all load modules except the 10GE XAUI module, where it must always be an integer (for example, 1, 2, 3 or 4).
EXAMPLES
package require IxTclHal
#################################################
#
# First section works with an OC48c Bert card in slot 22
#
##################################################
# Connect to chassis and get chassis ID
set host localhost
set username user
# Check if we're running on UNIX - connect to the TCL Server
# which must be running on the chassis
if [isUNIX] {
if [ixConnectToTclServer $host] {
ixPuts "Could not connect to $host"
return 1
}
}
# Now connect to the chassis
if [ixConnectToChassis $host] {
ixPuts $::ixErrorInfo
return 1
}
# Get the chassis ID to use in port lists
set chas [ixGetChassisID $host]
# Assuming that an OC48c BERT card is in slot 22
set card 22
set portList [list [list $chas $card 1]]
# Login before taking ownership
if [ixLogin $username] {
ixPuts $::ixErrorInfo
return 1
}
# Take ownership of the ports we'll use
if [ixTakeOwnership $portList] {
ixPuts $::ixErrorInfo
return 1
}
# Check for missing card
if {[card get $chas $card] != 0} \
{
ixPuts "Card $card does not exist"
return 1
}
# Get the type of card and check if it's the correct type
set cardType [card cget -type]
if {[port isValidFeature $chas $card 1 portFeatureBert] == 0} \
{
ixPuts "Card $card does not have Bert capability"
return 1
}
# Set the options to default values
bert setDefault
# In this example, we'll couple the transmit and receive side
# To simulate the port connected to a device which sends its data
# back to the port
bert config -txRxPatternMode bertTxRxCoupled
# Select inverted 2^20 pattern to transmit
bert config -txPatternIndex bertPattern2_20
bert config -enableInvertTxPattern enable
bert set $chas $card 1
ixWritePortsToHardware portList
# Now we need to send a start transmit to the port to gather statistics
# and then read the statistics
ixStartPortTransmit $chas $card 1
after 1000
# Stop statistics gathering
ixStopPortTransmit $chas $card 1
# Fetch the number of bits received
stat get statBertBitsReceived $chas $card 1
set received [stat cget -bertBitsReceived]
ixPuts "$received bits were received after 1 second"
# Bert error generation example
bertErrorGeneration setDefault
# Set for 10^4 errors
bertErrorGeneration config -errorBitRate bert_1e4
bertErrorGeneration set $chas $card 1
ixWritePortsToHardware portList
# Enable statistics gathering
ixStartPortTransmit $chas $card 1
# Send the error continously for 10 seconds
bertErrorGeneration startContinuousError $chas $card 1
after 10000
bertErrorGeneration stopContinuousError $chas $card 1
ixStopPortTransmit $chas $card 1
# And get the number of errored bits
stat get statBertBitErrorsReceived $chas $card 1
set received [stat cget -bertBitErrorsReceived]
ixPuts "$received bit errors were received after 10 seconds"
##################################################
# Second section works with an OC192/10GE/BERT card in slot 51
# In order to demonstrate channelized BERT operation
#
#################################################
set card 51
set portList [list [list $chas $card 1]]
# Check for missing card
if {[card get $chas $card] != 0} \
{
ixPuts "Card $card does not exist"
return 1
}
# Get the type of card and check if it's the correct type
set cardType [card cget -type]
if {[port isValidFeature $chas $card 1 portFeatureBert] == 0} \
{
ixPuts "Card $card does not have Bert capability"
return 1
}
# Set port to chanelized
port setFactoryDefaults $chas $card 1
port config -transmitMode portTxModeBertChannelized
port config -receiveMode portRxModeBertChannelized
if [port set $chas $card 1] {
ixPuts "Could not port set on $chas:$card:1"
return 1
}
# Set the options channelize the second OC48 channel
bert setDefault
if [bert channelize $chas $card 1 2.0] {
ixPuts "Could not channelize $chas:$card:1 2.0"
return 1
}
# couple the transmit and receive side
bert config -txRxPatternMode bertTxRxCoupled
# Select alternating one, zero pattern
bert config -txPatternIndex bertPatternAlternatingOneZero
# Set the characteristics for the third OC12 channel on the second OC48 channel
if [bert set $chas $card 1 2.3] {
ixPuts "bert set failed on $chas:$card:1 level 2.3"
return 1
}
# Use isChannelized to make sure this worked
if {[bert isChannelized $chas $card 1 2.0] == 0 {
ixPuts "Channel 2.0 is not channelized"
}
ixWritePortsToHardware portList
# Now we need to send a start transmit to the port to gather statistics
# and then read the statistics
ixStartPortTransmit $chas $card 1
after 1000
# Stop statistics gathering
ixStopPortTransmit $chas $card 1
# Fetch the number of bits received on the specific channel
stat getBertChannel $chas $card 1 2.3
stat get statBertBitsReceived $chas $card 1
set received [stat cget -bertBitsReceived]
ixPuts "$received bits were received after 1 second"
# Bert error generation example
bertErrorGeneration setDefault
# Set for 10^4 errors
bertErrorGeneration config -errorBitRate bert_1e4
bertErrorGeneration set $chas $card 1
ixWritePortsToHardware portList
# Enable statistics gathering
ixStartPortTransmit $chas $card 1
ixPuts "Starting error generation"
# Send the error continously for 10 seconds
bertErrorGeneration startContinuousError $chas $card 1 2.3
after 10000
bertErrorGeneration stopContinuousError $chas $card 1 2.3
ixStopPortTransmit $chas $card 1
# And get the number of errored bits
stat get statBertBitErrorsReceived $chas $card 1
set received [stat cget -bertBitErrorsReceived]
ixPuts "$received bit errors were received after 10 seconds"
# Let go of the ports that we reserved
ixClearOwnership $portList
# Disconnect from the chassis we're using
ixDisconnectFromChassis $host
# If we're running on UNIX, disconnect from the TCL Server
if [isUNIX] {
ixDisconnectTclServer $host
}