All Classes Namespaces Files Functions Pages
Rx.OutOfSequence.Basic Class Reference

Receive-side packet processor which checks out-of-sequence on the incoming frames, matching a filter. More...

Methods

 Counters.Clear
 Clears the current counters and resets them to zero. More...
 
 Counters.Get
 Returns the current values of the counters. More...
 
 Description.Get
 Returns a textual description of the object.
 
 Filter.Get
 Returns the current installed BPF filter string. More...
 
 Filter.Set bpfString
 Sets a BPF filter on a RX object. More...
 
 FrameTag.Default.Set
 Resets the receive-side frame tag to its server-default settings.
 
 FrameTag.Get
 Returns the FrameTag.Rx object related to this trigger. More...
 
 FrameTag.Set transmittedFrameTag
 Configure the FrameTag.Rx to match the given FrameTag.Tx. More...
 
 Parent.Get
 Returns the parent object.
 
 Result.Clear
 Resets the counter values to zero and empties the Result.History. More...
 
 Result.Get
 Returns the current accumulated trigger results. More...
 
 Result.History.Get
 Returns the history of the results. More...
 
 SequenceTag.Position.Get
 Returns the current sequence tag position. More...
 
 SequenceTag.Position.Set position
 Sets the position where to look for the sequence tag. More...
 

Class overview

Receive-side packet processor which checks out-of-sequence on the incoming frames, matching a filter.

This out-of-sequence detection is always active and starts processing frames as soon as it is created. Processing continues until the packet processor is destructed.

The sequence number of a packet is obtained from an out-of-sequence tag in the frame. This tag is configured on the FrameTag.Tx, which can be obtained via Frame::FrameTag.Sequence.Get.

Note
The initial (empty) filter string accepts all incoming frames. See Filter.Set for filtering information.

A basic out-of-sequence object can be created via a ByteBlowerPort, using ByteBlowerPort::Rx.OutOfSequence.Add "basic"

This packet processor processes frames received on the ByteBlower interface where its parent ByteBlowerPort is located.

Example

Receive all frames on "trunk-1-33" of some server, matching UDP source or destination port 123.

1 set port [ $server Port.Create "trunk-1-33" ]
2  set oos [ $port Rx.OutOfSequence.Basic.Add ]
3  $oos Filter.Set "udp port 123"
4  $oos Result.Clear

Definition at line 21216 of file api.tcl.

Method documentation

Rx.OutOfSequence.Basic::Counters.Clear

Clears the current counters and resets them to zero.

Deprecated:
since 2.1.0, please use Result.Clear instead.
Example
1 $out_of_sequence Counters.Clear

Definition at line 21228 of file api.tcl.

Rx.OutOfSequence.Basic::Counters.Get

Returns the current values of the counters.

Deprecated:
since 2.1.0, please use Result.Get instead.
Note
The out-of-sequence tag format in the transmitted frames define whether an additional sanity check is possible on the (filtered) frames. If the sanity check fails, the out-of-sequence tag in the frame will not be processed. In this case the number of frames received (by filter) will be bigger than the number of frames that were actually accepted for out-of-sequence detection.
Returns
Returns a list of name-value pairs with various frame counter values:
FramesOutOfSequence
Number of frames detected as out-of-sequence.
NrOfFrames
Number of frames received matching the filter.
Example

This example returns a list of name-value pairs of packet processor counter values.

1 $out_of_sequence Counters.Get

Returns:

FramesOutOfSequence 0 NrOfFrames 197 

Definition at line 21244 of file api.tcl.

Rx.OutOfSequence.Basic::Filter.Get

Returns the current installed BPF filter string.

The filter string can be configured using Filter.Set

Returns
The current BPF filter string
Example

Suppose we configured the trigger with filter string:

1 $out_of_sequence Filter.Set "ip src [ $ipv4_1 Ip.Get ] and ip dst [ $ipv4_2 Ip.Get ] and len = ${frameSize}"

where $ipv4_1 and $ipv4_2 are Layer3.IPv4 objects and $frameSize is the (layer2) size of the frames (without CRC!). The BPF filter string would then become for example:

1 $out_of_sequence Filter.Get

Returns:

ip src 10.10.10.2 and ip dst 10.10.10.3 and len = 252 

Definition at line 21263 of file api.tcl.

Rx.OutOfSequence.Basic::Filter.Set   bpfString  

Sets a BPF filter on a RX object.

Note
Configuring a new filter string does reset the counter values which were triggered by a previous filter string. Also the earlier collected history is invalidated.
Parameters
bpfStringValid BPF filter string. For creating valid BPF filter strings, please have a look at http://www.tcpdump.org/#documentation for more information.
Exceptions
ByteBlower.Rx.*When the {server-side} RX object could not be resolved.
ByteBlower.Rx.Filter.CompilationFailedWhen an invalid BPF filter string is given.
ByteBlower.InvalidFilterWhen an invalid BPF filter string is given.
Example

This will filter only UDP traffic.

1 $out_of_sequence Filter.Set "udp"

Set the filter on packets that match:

  • source and destination IPv4 address
  • UDP traffic with given destination and source UDP port
  • (layer2) frame length (without CRC!)
1 $out_of_sequence Filter.Set "ip src [ $ipv4_1 Ip.Get ] and ip dst [ $ipv4_2 Ip.Get ] and udp dst port ${dstUdpPort} and udp src port ${srcUdpPort} and len = ${frameSize}"

Definition at line 21284 of file api.tcl.

Rx.OutOfSequence.Basic::FrameTag.Get

Returns the FrameTag.Rx object related to this trigger.

Each (transmitted) frame can be enabled to have a time tag and/or an sequence tag inserted into the frame. The FrameTag.Rx object on this trigger can be used to define how that transmitted tag is processed.

The FrameTag.Rx object which is returned by this method represents the current configuration of the frame tag processing. This object can be used to configure the processing of the injected frame tag.

For more detailed information about Frame tagging, you can also take a look at ByteBlower API Knowledgebase: Background: Adding FrameTags to your ByteBlower frame - structure and behaviour

Warning
On older ByteBlower servers, this requires a lot of resources, so this option must be used with care.
Since
1.8.18
Returns
This method returns the FrameTag.Rx object for frame tag processing of the (filtered) frames.
Example

In this example, we will retrieve the FrameTag.Rx object for the frame tag:

1 $out_of_sequence FrameTag.Get

Returns:

<FrameTag.Rx object> 

Definition at line 21312 of file api.tcl.

Rx.OutOfSequence.Basic::FrameTag.Set   transmittedFrameTag  

Configure the FrameTag.Rx to match the given FrameTag.Tx.

This method takes a FrameTag.Tx and applies its metrics and format configuration on this trigger's FrameTag.Rx.

Note
The transmitted frame tag type (sequence number, time stamp, ...) must match the receiver frame tag type that is used for this trigger.

The transmitted frame tag (sequence number, time stamp) can be obtained from the Frame (Frame::FrameTag.Sequence.Get, resp. Frame::FrameTag.Time.Get)

Parameters
transmittedFrameTagThe FrameTag.Tx to obtain the metrics and format configuration from.
Since
1.8.18
Exceptions
ByteBlower.Server.NotSupportedUnsupported Server Capability: 'Manage TX/RX Frame Tag placement': When a transmitted frame tag with unsupported metrics and/or format is given.
<tcl_error>"FrameTag is of incorrect Type": When a transmitted frame tag of invalid type is given (sequence vs. time)
Example

This example applies the transmitted time tag configuration on the receiver's time tag:

1 set frameTagTx [ $frame FrameTag.Time.Get ]
2  $out_of_sequence FrameTag.Set $frameTagTx

Definition at line 21337 of file api.tcl.

Rx.OutOfSequence.Basic::Result.Clear

Resets the counter values to zero and empties the Result.History.

Example
1 $out_of_sequence Result.Clear

Definition at line 21352 of file api.tcl.

Rx.OutOfSequence.Basic::Result.Get

Returns the current accumulated trigger results.

Returns
The resultSnapshot is returned containing the accumulated trigger counters. This is a Rx.OutOfSequence.Basic.ResultSnapshot object.
Example
1 $out_of_sequence Result.Get

Returns:

<Rx.OutOfSequence.Basic.ResultSnapshot object> 

Definition at line 21364 of file api.tcl.

Rx.OutOfSequence.Basic::Result.History.Get

Returns the history of the results.

Returns
The resultHistory is returned containing the accumulated and interval trigger counters of the last 5 seconds. This is a Rx.OutOfSequence.Basic.ResultHistory object.
Example
1 $out_of_sequence ResultHistory.Get

Returns:

<Rx.OutOfSequence.Basic.ResultHistory object> 

Definition at line 21376 of file api.tcl.

Rx.OutOfSequence.Basic::SequenceTag.Position.Get

Returns the current sequence tag position.

Deprecated:
This method has been deprecated in favor of FrameTag.Rx::Position.Get. The RX Sequence Tag configuration can be obtained from FrameTag.Get .
Default value: 8
Depends on the sequence tag metrics
Example
1 $out_of_sequence SequenceTag.Position.Get

Returns:

16 

Definition at line 21391 of file api.tcl.

Rx.OutOfSequence.Basic::SequenceTag.Position.Set   position  

Sets the position where to look for the sequence tag.

Deprecated:
This method has been deprecated in favor of FrameTag.Rx::Position.Set. The RX Sequence Tag configuration can be obtained from FrameTag.Get .

The default location is 8 (depends on the sequence tag metrics ) which means 8 bytes before the end of the frame.

If out-of-sequence detection is combined with latency measurements the tag (in the transmitted frame) will be on a different location. If latency is also measured this value should be set to 16 (depending on the sequence tag and the latency tag metrics ).

Default value: 8
Depends on the sequence tag metrics
Parameters
positionThe new sequence tag position position expressed as bytes before the end of the frame. A sequence number is 8 bytes long, so this should be at least 8.
Example
1 $out_of_sequence SequenceTag.Position.Set 16

Definition at line 21412 of file api.tcl.