All Classes Namespaces Files Functions Pages
excentis::ByteBlower Namespace Reference

This namespace holds all ByteBlower-related Tcl extensions, including the ByteBlower higher-layer Tcl API. More...

Functions

 x.GetDevicesToStart txPorts rxPorts
 Method to retrieve the objects to pass at Ports.Start and WirelessEndpoints.Start.
 
 x.StartWirelessEndpoints wirelessEndpoints
 Method to start the wireless endpoints. More...
 
 x.StopWirelessEndpoints wirelessEndpoints
 
 x.WaitForWirelessEndpoints wirelessEndpoints
 
 ExecuteScenario scenarioConfig args
 Central method of the higher-layer API which executes declarative scenario configurations and returns the scenario results. More...
 
 ExecuteScenarioRT scenarioConfig args
 Central method of the higher-layer API which executes declarative scenario configurations and returns the scenario results. More...
 
 DefaultCallback scenarioResultList
 Default callback method for processing the real-time results that simply prints result values on every update interval. More...
 
 x.ExecuteScenario.PrepareNetwork scenarioPrepareObjectList scoutingTimetowait
 
 x.ExecuteScenario.Finished txPorts scenarioObjectList extended
 
 x.ExecuteScenario.GetWirelessEndpoints scenarioObjectList
 
 x.ExecuteScenario.ScenarioConfig.Parse scenarioConfig extended
 
 x.ExecuteScenario.CheckTxErrors scenarioObjectList txPorts
 
 x.ExecuteScenario.Results.Get scenarioObjectList extended
 
 x.ExecuteScenario.Timestamp.Next.Get scenarioObjectList prevTimestamp updateinterval
 
 x.ExecuteScenario.Bucket.Search bucketlist timestamp
 
 x.ExecuteScenario.InterRunResults.Get scenarioObjectList txPorts extended timestamp
 
 x.ExecuteScenario.Cleanup scenarioObjectList
 
 x.ExecuteScenario.Error scenarioObjectList errorInfo
 
 x.ExecuteScenario.TxParam.Parse txParamList
 
 x.ExecuteScenario.TxParam.Frame.Parse stream frameDescription
 
 x.ExecuteScenario.TxParam.ScoutingFrame.Parse scoutingStream frameDescription
 
 x.ExecuteScenario.TxParam.FrameFieldModifier.Parse frame fieldModifier
 
 x.ExecuteScenario.TxParam.FrameSizeModifier.Parse frame frameModifier
 
 x.ExecuteScenario.TxParam.FrameModifier.Parse stream frameModifier
 
 x.ExecuteScenario.TxParam.TimingModifier.Parse stream timingModifier
 
 x.ExecuteScenario.RxTupleFilter.Parse triggerObject filter
 
 x.ExecuteScenario.RxParam.Parse rxParamList extended
 
 FlowLatency scenarioConfig args
 Executes a latency calculating scenario based on a declarative scenario configuration and returns the calculated latency values. More...
 
 x.FlowLatency.ScenarioConfig.Validate scenarioConfig
 
 x.FlowLatency.Result.Parse.Numbers scenarioResult
 
 FlowLossRate flowlist args
 
 x.RxParam.FlowLoss.Parse rxparamlist
 
 x.TxResult.FlowLoss.Parse counter
 
 x.RxResult.FlowLoss.Parse counter
 
 FlowOutofsequence scenarioConfig args
 Executes an out of sequence detecting scenario based on a declarative scenario configuration and returns the calculated out of sequence values. More...
 
 x.FlowOutofsequence.ScenarioConfig.Validate scenarioConfig
 
 x.FlowOutofsequence.Result.Parse.Numbers scenarioResult
 
 x.Print.Debug args
 
 NatDevice.IP.Get publicPort nattedPort publicUdpPort natUdpPort?publicIpAddress?
 
 LinkLayer.AutoComplete frameContent bbPort
 
 PPPoE.Setup byteblowerPort pppoeServiceName authProtocol authProtocolCredentials networkProtocol?networkProtocolOptions?
 
 PPPoE.Start pppoeSetupInformation
 
 PPPoE.Start.Async pppoeSetupInformation
 
 PPPoE.SessionId.Get pppoeSetupInformation
 
 PPPoE.Schedule.Start.Setup pppoeSetupInformation initialTimeToWait
 
 PPPoE.Schedule.Terminate.Setup pppoeSetupInformation initialTimeToWait
 
 PPPoE.Status.Get pppoeSetupInformation
 
 PPPoE.Terminate pppoeSetupInformation
 
 PPPoE.NCP.Results.Get pppoeSetupInformation
 
 PPPoE.MultiPPPoESessions.Setup bbServer NrOfSessions basePortMacAddress papUserNameList papPasswordList?interSessionGap??networkProtocol?
 
 PPPoE.MultiPPPoESessions.Start multiSessionID?interSessionGap?
 
 PPPoE.MultiPPPoESessions.Schedule.Setup multiSessionID?interSessionGap??terminateAfterStartTime??interTerminateGap?
 
 PPPoE.MultiPPPoESessions.Schedule.Start multiSessionID
 
 PPPoE.MultiPPPoESessions.Terminate multiSessionID?interSessionGap?
 
 PPPoE.MultiPPPoESessions.CleanUp multiSessionID
 
 TcpAckSuppression args
 
 parseTcpAckSuppressionParams args
 
 initializeHttpServer serverPortInfo
 
 initializeHttpClient clientPortInfo serverPortInfo
 
 startHttpServer httpServerInfo
 
 startHttpClient httpClientInfo
 
 waitForHttpClientFinish httpClientInfo
 
 stopHttpClient httpClientInfo httpClientId
 
 stopHttpServer httpServerInfo
 
 getHttpClientResults httpClientInfo httpServerInfo
 
 parseHttpClientStatusResult httpClient requestSize
 
 parseHttpClientTcpAckResult httpClient httpServer
 
 Generate.Ports.On.Switch server trunk baseMac L3Config?ports?
 
 Generate.Possible.Ports.On.Switch server trunk baseMac L3Config?ports?
 

Detailed Description

This namespace holds all ByteBlower-related Tcl extensions, including the ByteBlower higher-layer Tcl API.

These procedures are developed for higher-level usage of the ByteBlower API. They are mainly used to simplify running specific Test Scenarios similar to scenarios you know from the ByteBlower GUI.

Function Documentation

excentis::ByteBlower::DefaultCallback   scenarioResultList  

Default callback method for processing the real-time results that simply prints result values on every update interval.

Parameters
scenarioResultListThe intermediate scenario result. It has the same format as the final scenario result, which is based on the scenario configuration.

Definition at line 506 of file executescenario.tcl.

excentis::ByteBlower::ExecuteScenario   scenarioConfig args  

Central method of the higher-layer API which executes declarative scenario configurations and returns the scenario results.

This method sets up the scenario flows, runs them and collects information about them. After executing the scenario all created objects are removed from the interacting ByteBlowerPort objects, so thay return to the same pre-scenario state.

This method is synchronous and will return the global scenario results once it is finished. To handle intermediate results, there is a similar method ExecuteScenarioRT .

Note
At this point, only frame blasting scenarios can be run with the higher-layer API.
Parameters
scenarioConfigThe declarative scenario configuration. See the higher-layer API overview for more information.
argsScenario-level option list in the form of a list of key-value pairs:
-extended
Flag that changes default types of various scenario components to return extended results. It may be overridden by the specific component characteristics.
Default: 0
-finaltimetowait
Sets the time in ms to wait after the last flow is finished. This allows packets which are in transit to arrive at their destination.
Default: 5000 (5s)
-scoutingfinaltimetowait
Sets the time in ms to wait after the last scouting frames is transmitted. This allows packets which are in transit to prepare the network path and arrive at their destination.
Default: 1000 (1s)
Returns
The result data structure. See the higher-layer API overview for more information.

Definition at line 172 of file executescenario.tcl.

excentis::ByteBlower::ExecuteScenarioRT   scenarioConfig args  

Central method of the higher-layer API which executes declarative scenario configurations and returns the scenario results.

This method sets up the scenario flows, runs them and collects information about them. After executing the scenario all created objects are removed from the interacting ByteBlowerPort objects, so thay return to the same pre-scenario state.

The method is synchronous and will return the global scenario results once it has finished. However, it will also periodically execute a callback method containing the intermediate results. If this real-time result functionality is not required, a similar method ExecuteScenario may also be used.

Note
At this point, only frame blasting scenarios can be run with the higher-layer API.
Parameters
scenarioConfigThe declarative scenario configuration. See the higher-layer API overview for more information.
argsScenario-level option list in the form of a list of key-value pairs:
-extended
Flag that changes default types of various scenario components to return extended results. It may be overridden by the specific component characteristics.
Default: 0
-finaltimetowait
Sets the time in ms to wait after the last flow is finished. This allows packets which are in transit to arrive at their destination.
Default: 5000 (5s)
-scoutingfinaltimetowait
Sets the time in ms to wait after the last scouting frames is transmitted. This allows packets which are in transit to prepare the network path and arrive at their destination.
Default: 1000 (1s)
-updateinterval
Sets the time in ms between result updates. After every update interval the callback procedure is called.
Default: 1000 (1s)
-callback
Sets the callback method called at every update interval by specifying the method name. The procedure itself is defined by the calling script and has a single parameter scenarioResultList which contains the interval results.
Default: "DefaultCallback"
Returns
The result data structure. See the higher-layer API overview for more information. If an exception happens during the execution of the scenario, this exception object will be returned. The method Message.Get on this exception object will return the error-message.
Example
1 source IPv4.run.tcl
Returns:
ByteBlowerObject_1530880908_2 
1 % ByteBlowerObject_1530880908_2 Message.Get
Returns:
-server localhost Failed to connect with the ByteBlower server: byteblower-tp-p860.lab.excentis.com:9002 

Definition at line 356 of file executescenario.tcl.

excentis::ByteBlower::FlowLatency   scenarioConfig args  

Executes a latency calculating scenario based on a declarative scenario configuration and returns the calculated latency values.

This method assumes the scenario configuration has certain properties and returns clear error messages when a scenario configuration is malformed. The scenario configuration requirements are:

  • A flow should either be used for latency or for background traffic.
  • A background flow may only have one or more TX parts, but no RX parts.
  • A latency flow may only have a single TX part, which must have the 'latency' option enabled.
  • A latency flow may have zero, one or more RX parts. They must all have a basic latency detector configured.
Parameters
scenarioConfigThe scenario configuration as expected by the ExecuteScenario function. See the higher-layer API overview for more information.
argsScenario-level option list in the form of a list of key-value pairs:
-return
Defines the output mode. Following output modes are supported:
numbers
Number of transmitted, received frames and latency values per flow in the scenario.

Default: numbers
Returns
The latency values per are returned based on the value of the return option.
numbers
Simplified nested list structure with latency values:
  • Scenario structure (flows) and flow structures (TX and RX) are maintained.
  • The TX return value is one element, the number of transmitted frames.
  • The RX return value is a list of 5 values: the amount of received frames, the minimum, average and maximum latency and the jitter.
  • All the latency values are presented in nanoseconds.

Definition at line 65 of file flowlatency.tcl.

excentis::ByteBlower::FlowLossRate   flowlist args  

Calculates the loss rate for the provided flowlist according to RFC 1242

Definition: Percentage of frames that should have been forwarded by a network device under steady state (constant) load that were not forwarded due to lack of resources.

Note
A trigger must be defined per receiving flow
If non-basic triggers are defined in the flows then these triggers are ignored. E.g.: sizedistribution and rate triggers are ignored If Latency and Capture options are defined, they will be ignored too. So if besides tx parameters, rx parameters are defined, and these rx parameters do not include a basic trigger option, the flow will transmit, but we will not be able to determine the received frames.
When for a particular flow only tx parameters are given, this flow will provide background traffic. This flow will be used to send traffic, but will not be taken into account for the calculation of the frame loss rate.
Parameters
flowlistThe declarative scenario configuration. See the higher-layer API overview for more information.
argsOutput-level option list in the form of a list of key-value pairs:
-return
Defines the output mode
percentage
Percentage of frames lost during transmission vs. offered load as an aggregate over all flows in the flowlist
numbers
Number of transmitted and received frames per flow in the flowlist.
percentagePerFlow
Percentage of the frames lost during transmission vs offered load. Result for each flow in the flowlist

Default: percentage
Returns
Loss percentage or number of transmitted and received frames per flow, depending on -return
percentage
0.02
numbers
{ {-tx 100} {-tx 100 -rx 100} {-tx 100 -rx NA} {-tx 100 -rx 100 -rx 100} }
If an exception happens during the execution of the scenario, this exception object will be returned. The method Message.Get on this exception object will return the error-message.
Example
1 source IPv4.run.tcl
Returns:
ByteBlowerObject_1530880908_2 
1 % ByteBlowerObject_1530880908_2 Message.Get
Returns:
-server localhost Failed to connect with the ByteBlower server: byteblower-tp-p860.lab.excentis.com:9002 

Definition at line 78 of file flowlossrate.tcl.

excentis::ByteBlower::FlowOutofsequence   scenarioConfig args  

Executes an out of sequence detecting scenario based on a declarative scenario configuration and returns the calculated out of sequence values.

This method assumes the scenario configuration has certain properties and returns clear error messages when a scenario configuration is malformed. The scenario configuration requirements are:

  • A flow should either be used for out of sequence detection or for background traffic.
  • A background flow may only have one or more TX parts, but no RX parts.
  • An out of sequence flow may only have a single TX part, which must have the 'outofsequence' option enabled.
  • An out of sequence flow may have zero, one or more RX parts. They must all have a basic out of sequence configured.
Parameters
scenarioConfigThe scenario configuration as expected by the ExecuteScenario function. See the higher-layer API overview for more information.
argsScenario-level option list in the form of a list of key-value pairs:
-return
Defines the output mode. Following output modes are supported:
numbers
Number of transmitted, received frames and frames out of sequence per flow in the scenario.

Default: numbers
Returns
The out of sequence values per are returned based on the value of the return option.
numbers
Simplified nested list structure with out of sequence values:
  • Scenario structure (flows) and flow structures (TX and RX) are maintained.
  • The TX return value is one element, the number of transmitted frames.
  • The RX return value is a list of 2 values: the amount of received frames and the amount of frames out of sequence.

Definition at line 62 of file flowoutofsequence.tcl.

excentis::ByteBlower::LinkLayer.AutoComplete   frameContent bbPort  

Update the Layer2 and/or Layer 2.5 Header of the Frame

The Layer2 Header of the frame will be set to match the Port's Layer2 configuration and Layer2.5 extensions.

The Source MAC Address will be filled in as the Port's Mac address.

If the L2 Type is IPv4 or IPv6, the destination IPv4 / IPv6 address will be resolved (if it is a non-broadcast / non-multicast address) and the resulting destination MAC address will be filled in.

Layer2.5 extension Headers will be added to the frame.

Parameters
frameContentFrame content to adjust to the source ByteBlower port configuration.
bbPortSource ByteBlower Port from which the given frameContent will be sent.
Returns
New frame content string
Note
This function only supports Ethernet II frames with DIX encoding for now.

Definition at line 44 of file networking.tcl.

excentis::ByteBlower::NatDevice.IP.Get   publicPort nattedPort publicUdpPort natUdpPort ?publicIpAddress?  

To find out which ip address and port is used by the nat device, we first send some packets from the private to the public side

The used discovery packet size is 256 Bytes.

Parameters
publicPortByteBlower Port connected to the public side of the NAT device
nattedPortByteBlower Port connected to the private side of the NAT device
natUdpPortis the UDP SOURCE port for the nattedPort.
publicUdpPortis the UDP SOURCE port for the publicPort.
publicIpAddressis the public IP address to use instead of the public IP address that is configured at the publicPort.
Returns
List of:
  1. NAT public IP address
  2. NAT public UDP port

Definition at line 48 of file NAT.tcl.

excentis::ByteBlower::PPPoE.MultiPPPoESessions.CleanUp   multiSessionID  

Terminates Multiple PPPoE Sessions, setup using 'PPPoE.MultiPPPoESessions.Setup' and started using 'PPPoE.MultiPPPoESessions.Start'

Parameters
multiSessionIDReturnvalue from 'PPPoE.MultiPPPoESessions.Start'

Definition at line 688 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.MultiPPPoESessions.Setup   bbServer NrOfSessions basePortMacAddress papUserNameList papPasswordList ?interSessionGap? ?networkProtocol?  

Sets up Multiple PPPoE Sessions

Parameters
bbServerByteBlower Server
NrOfSessionsNumber of Sessions
basePortMacAddressMac Address of the first ByteBlower Port, Next ports will increment Mac address with 1.
papUserNameListlist of Username(s) for PAP authentication. Please provide one shared user name or at least one username per PPPoE session.
papPasswordListlist of Password(s) for PAP authentication. Please provide one share password or at least one password per PPPoE session.
interSessionGapTime between finish of the start of a PPPoE Session and the start of the following PPPoE Session [ms]
networkProtocolThe Network Control Protocol user for PPP Currently ipcp and ipv6cp are supported.
Returns
Identifier for the multiple PPPoE Sessions

Definition at line 338 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.MultiPPPoESessions.Start   multiSessionID ?interSessionGap?  

Starts Multiple PPPoE Sessions, set up using 'PPPoE.MultiPPPoESessions.Setup'

Parameters
multiSessionIDReturnvalue from 'PPPoE.MultiPPPoESessions.Start'
interSessionGapTime between finish of the start of a PPPoE Session and the start of the following PPPoE Session [ms]
Returns
Identifier for the multiple PPPoE Sessions

Definition at line 425 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.MultiPPPoESessions.Terminate   multiSessionID ?interSessionGap?  

Terminates Multiple PPPoE Sessions, setup using 'PPPoE.MultiPPPoESessions.Setup' and started using 'PPPoE.MultiPPPoESessions.Start'

Parameters
multiSessionIDReturnvalue from 'PPPoE.MultiPPPoESessions.Start'
interSessionGapTime between finish of the start of a PPPoE Session and the start of the following PPPoE Session [ms]

Definition at line 638 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.NCP.Results.Get   pppoeSetupInformation  

Get the PPPoE/PPP Network Control Protocol results

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'
Returns
Network Control Protocol Information:
  • for IPCP this is a list of:
    • Client IPv4 Address
    • BRAS IPv4 Address

Definition at line 284 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.Schedule.Start.Setup   pppoeSetupInformation initialTimeToWait  

Starts the PPPoE session

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'
initialTimeToWait
Returns
PPPoE Session ID

Definition at line 188 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.Schedule.Terminate.Setup   pppoeSetupInformation initialTimeToWait  

Starts the PPPoE session

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'
initialTimeToWait
Returns
PPPoE Session ID

Definition at line 214 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.SessionId.Get   pppoeSetupInformation  

Get the Session ID from the given PPPoE session

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'
Returns
PPPoE Session ID

Definition at line 165 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.Setup   byteblowerPort pppoeServiceName authProtocol authProtocolCredentials networkProtocol ?networkProtocolOptions?  

Prepare the ByteBlower Port for performing PPPoE

Parameters
byteblowerPortThe ByteBlowerPort on which we would like to configure PPPoE on.
pppoeServiceNameThe Requested PPPoE ServiceName
authProtocolThe Auth Protocol used for PPP
authProtocolCredentialsThe credentials for the auth Protocol
  • When <authProtocol> is pap, this requires a list of 2 elements:
    • Peer-ID
    • Password
  • When <authProtocol> is chap, this requires a list of 1 element:
    • Secret
networkProtocolThe Network Control Protocol user for PPP Currently ipcp and ipv6cp are supported.
networkProtocolOptions
Default: : No special Network Protocol configuration (automatic configuration)
Returns
List of information that will be used as argument for other PPPoE functions

Definition at line 52 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.Start   pppoeSetupInformation  

Starts the PPPoE session

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'
Returns
PPPoE Session ID

Definition at line 129 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.Start.Async   pppoeSetupInformation  

Starts the PPPoE session. Returns immediately. Please use PPPoE.Start to obtain the actual results and session ID.

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'

Definition at line 146 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.Status.Get   pppoeSetupInformation  

Gets the status of the PPPoE session

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'
Returns
PPPoE Status string

Definition at line 239 of file pppoe.tcl.

excentis::ByteBlower::PPPoE.Terminate   pppoeSetupInformation  

Terminates the PPPoE session

Parameters
pppoeSetupInformationThe list of information returned from method 'PPPoE.Setup'

Definition at line 260 of file pppoe.tcl.

excentis::ByteBlower::x.Print.Debug   args  

0: ERROR 1: WARNING 2: INFO 3: DEBUG

Definition at line 26 of file logging.tcl.

excentis::ByteBlower::x.StartWirelessEndpoints   wirelessEndpoints  

Method to start the wireless endpoints.

Returns
nothing

Definition at line 81 of file executescenario.tcl.