byteblowerll package

byteblowerll.byteblower module

byteblowerll.byteblower.ByteBlower(*args, …) Singleton class that is the entry point to start using the ByteBlower API.
byteblowerll.byteblower.ByteBlowerAPIException()
byteblowerll.byteblower.ByteBlowerInterface(…)
byteblowerll.byteblower.ByteBlowerInterfaceList(*args)
byteblowerll.byteblower.ByteBlowerLicense(…) This class represents the license information of your connected server.
byteblowerll.byteblower.ByteBlowerPort(…) Logical representation of a network host docked somewhere in the NUT, which can transmit or schedule network traffic, process incoming traffic and run stateful network applications.
byteblowerll.byteblower.ByteBlowerPortList(*args)
byteblowerll.byteblower.ByteBlowerPortResultData(…) ByteBlower port counter result set.
byteblowerll.byteblower.ByteBlowerPortResultHistory(…) Port counter result history.
byteblowerll.byteblower.ByteBlowerPortResultRxData(…) ByteBlower port counter result set.
byteblowerll.byteblower.ByteBlowerPortResultSnapshot(…) ByteBlower port counter result set.
byteblowerll.byteblower.ByteBlowerServer(…) Representation of a client connection to a shared, physical ByteBlower server, which can send and receive network traffic through its interfaces.
byteblowerll.byteblower.ByteBlowerServerServiceInfo(…)

New in version 2.6.0.

byteblowerll.byteblower.Capability(*args, …) Represents a capability, A feature it supports or not.
byteblowerll.byteblower.CapabilityValue(…) The Capability Value class.
byteblowerll.byteblower.CapturedFrame(…) A representation of a Captured Frame captured using a CaptureRawPacket.
byteblowerll.byteblower.CapturedHTTPData(…) This class represents captured HTTP data.
byteblowerll.byteblower.CaptureRawPacket(…) This class is used to capture the raw packet data that is received on the Physical interface that is associated with a ByteBlowerPort.
byteblowerll.byteblower.CaptureResultSnapshot(…) This class represents the result of a CaptureRawpacket.
byteblowerll.byteblower.CHAPProtocol(*args, …) Represents the Challenge-Handshake Authentication Protocol
byteblowerll.byteblower.DeviceInfo(*args, …) Device information of the wireless endpoint.
byteblowerll.byteblower.DHCPv4Protocol(…) The DHCPv4Protocol is the entry point to configure the DHCP client behavior of a ByteBlowerPort.
byteblowerll.byteblower.DHCPv4SessionInfo(…) Class containing the info about the DHCPSession.
byteblowerll.byteblower.DHCPv6Protocol(…) The DHCPv6Protocol is the entry point to configure the DHCPv6 client behavior of a ByteBlowerPort.
byteblowerll.byteblower.DHCPv6SessionInfo(…) Class containing the info about the DHCPSession.
byteblowerll.byteblower.EthernetConfiguration(…) EthernetII provides an interface for the Ethernet configuration on a ByteBlower port.
byteblowerll.byteblower.Frame(*args, **kwargs) Class: Frame
byteblowerll.byteblower.FrameFieldModifierIncremental(…) A frame field modifier which will increase the value of the frame field between a minimum and maximum value.
byteblowerll.byteblower.FrameFieldModifierRandom(…) A frame field modifier which will change the field value of the frame randomly between a minimum and maximum value.
byteblowerll.byteblower.FrameMobile(*args, …) A FrameMobile is an object that configures the payload of a frame belonging to a StreamMobile object.
byteblowerll.byteblower.FrameResultData(…) TODO
byteblowerll.byteblower.FrameResultHistory(…) Sender-side frame transmission result history.
byteblowerll.byteblower.FrameResultSnapshot(…) TODO
byteblowerll.byteblower.FrameSizeModifierGrowing(…) A frame size modifier which will increase the size of the frame between a minimum and maximum value.
byteblowerll.byteblower.FrameSizeModifierRandom(…) A frame size modifier which will change the size of the frame randomly between a minimum and maximum value.
byteblowerll.byteblower.FrameSizeModifierResultSnapshot(…) A collection of statistics containing the results of a frame size modifier.
byteblowerll.byteblower.FrameTagMetrics(…) Class which represents the metrics of a FrameTag.
byteblowerll.byteblower.FrameTagRx(*args, …) The FrameTagRx class describes the receive configuration of a Tag in a Frame.
byteblowerll.byteblower.FrameTagTx(*args, …) The FrameTagTx class describes the transmit configuration of a Tag in a Frame.
byteblowerll.byteblower.HTTPClient(*args, …) HTTP client application that may schedule HTTP requests to real webservers or the HTTP server application.
byteblowerll.byteblower.HTTPClientMobile(…) HTTP client application that may schedule HTTP requests to the HTTP server application.
byteblowerll.byteblower.HTTPMultiClient(…) HTTPMultiClient can be used in combination with MultiServer to start multiple concurrent HTTP requests.
byteblowerll.byteblower.HTTPMultiResultData(…) Contains the result counters for HTTPMultiClient or HTTPMultiServer.
byteblowerll.byteblower.HTTPMultiResultHistory(…) General interface for getting cumulative or interval results.
byteblowerll.byteblower.HTTPMultiResultSnapshot(…) Refreshable snapshot that contains the result counters for HTTPMultiClient or HTTPMultiServer.
byteblowerll.byteblower.HTTPMultiServer(…) HTTPMultiServer provides the server-side for HTTPMultiClient.
byteblowerll.byteblower.HTTPResultData(…) Contains the HTTP result counters.
byteblowerll.byteblower.HTTPResultHistory(…) General interface for getting cumulative or interval results.
byteblowerll.byteblower.HTTPResultSnapshot(…) Contains HTTP result counters.
byteblowerll.byteblower.HTTPServer(*args, …) HTTP server application that handles incoming HTTP requests with the correct URL format by returning a document of the appropriate size.
byteblowerll.byteblower.HTTPSessionInfo(…) Class containing the info about the HTTPSession.
byteblowerll.byteblower.ICMPEchoSession(…) Session for handling ICMP Echo Requests and Replies.
byteblowerll.byteblower.ICMPEchoSessionInfo(…)
byteblowerll.byteblower.ICMPProtocol(*args, …) The ICMP protocol is attached to the IPv4 protocol and allows the host to start ICMP sessions, through which it can communicate with the Layer3 IP network.
byteblowerll.byteblower.ICMPv6EchoSession(…) Session for handling ICMPv6 Echo Requests and Replies.
byteblowerll.byteblower.ICMPv6EchoSessionInfo(…)
byteblowerll.byteblower.ICMPv6Protocol(…) ICMPv6 Protocol.
byteblowerll.byteblower.IGMPMemberSessionInfo(…) InfoObject of the IGMPSession.
byteblowerll.byteblower.IGMPProtocol(*args, …) The Internet Group Management Protocol (IGMP) Protocol for IPv4 manages multicast group membership for a given IPv4 host.
byteblowerll.byteblower.IGMPProtocolInfo(…) Class: IGMPProtocolInfo
byteblowerll.byteblower.IGMPv1MemberSession(…)
byteblowerll.byteblower.IGMPv2MemberSession(…)
byteblowerll.byteblower.IGMPv3MemberSession(…)
byteblowerll.byteblower.IPv4Configuration(…) Provides an interface for the IPv4 configuration on a ByteBlower port.
byteblowerll.byteblower.IPv4CPProtocol(…) Internet Protocol Control Protocol.
byteblowerll.byteblower.IPv6Configuration(…) A class representing the IPv6 protocol that allows managing IPv6 settings, running IPv6 commands and accessing attached protocols.
byteblowerll.byteblower.IPv6CPProtocol(…) IP version 6 over PPPoE.
byteblowerll.byteblower.LatencyBasic(*args, …) Receive-side packet processor which calculates latency on the incoming frames, matching a filter.
byteblowerll.byteblower.LatencyBasicMobile(…) Receive-side packet processor which calculates latency on the incoming frames, matching a filter.
byteblowerll.byteblower.LatencyBasicResultData(…) Receive-side latency result set.
byteblowerll.byteblower.LatencyBasicResultHistory(…) Receive-side latency result history.
byteblowerll.byteblower.LatencyBasicResultSnapshot(…) Receive-side latency result set.
byteblowerll.byteblower.LatencyDistribution(…) Receive-side packet processor which calculates distribution of latency on the incoming frames, matching a filter.
byteblowerll.byteblower.LatencyDistributionResultSnapshot(…) The latency distribution result.
byteblowerll.byteblower.MeetingPoint(*args, …) A MeetingPoint is a server that controls a set of wireless devices.
byteblowerll.byteblower.MeetingPointLicense(…) This class represents the license information of your connected Meeting Point.
byteblowerll.byteblower.MeetingPointServiceInfo(…)

New in version 2.6.0.

byteblowerll.byteblower.MLDMulticastListenerSessionInfo(…)
byteblowerll.byteblower.MLDProtocol(*args, …) The Multicast Listener Discovery Protocol (MLD) Protocol for IPv6 manages multicast address listening for a given IPv6 host.
byteblowerll.byteblower.MLDProtocolInfo(…)
byteblowerll.byteblower.MLDv1MulticastListenerSession(…)
byteblowerll.byteblower.MLDv1StartListening(arg2)
byteblowerll.byteblower.MLDv1StopListening(arg2)
byteblowerll.byteblower.MLDv2MulticastListenerSession(…)
byteblowerll.byteblower.MultipleBurstModifier(…)
byteblowerll.byteblower.NetworkInfo(*args, …) Network information of the wireless endpoint.
byteblowerll.byteblower.NetworkInterface(…) NetworkInterface information of the wireless endpoint.
byteblowerll.byteblower.NormalDistributionTimingModifier(…)
byteblowerll.byteblower.OutOfSequence(*args, …) Receive-side packet processor which checks out-of-sequence on the incoming frames, matching a filter.
byteblowerll.byteblower.OutOfSequenceResultData(…) Non-refreshable object containing the out-of-sequence results.
byteblowerll.byteblower.OutOfSequenceResultHistory(…) Receive-side out-of-sequence result history.
byteblowerll.byteblower.OutOfSequenceResultSnapshot(…) Refreshable object containing the out-of-sequence results.
byteblowerll.byteblower.PacketDump(*args, …) Utility for dumping ByteBlower network traffic to a pcap file.
byteblowerll.byteblower.PAPProtocol(*args, …) Represents the Password Authentication Protocol
byteblowerll.byteblower.PPPoEClient(*args, …) A PPPoE client which allows you to setup Layer3 connectivity.
byteblowerll.byteblower.PPPProtocol(*args, …) The Point-to-Point Protocol (PPP) provides a standard method for transporting multi-protocol datagrams over point-to-point links.
byteblowerll.byteblower.Schedule(*args, **kwargs) This class contains the base functionality to configure a scheduled action.
byteblowerll.byteblower.ScheduleGroup(*args, …) A collection of schedulable objects that can be started.
byteblowerll.byteblower.Stream(*args, **kwargs) A ByteBlower stream is an object representing a stream of ByteBlower frames (Frame) used for transmission on a ByteBlower port.
byteblowerll.byteblower.StreamGrowingSizeModifier(…) A frame size modifier which will increase the size of the frame between a minimum and maximum value.
byteblowerll.byteblower.StreamMobile(*args, …) A StreamMobile object configures a stream of frames that will be transmitted by a WirelessEndpoint.
byteblowerll.byteblower.StreamRandomSizeModifier(…) A frame size modifier which will change the size of the frame randomly between a minimum and maximum value.
byteblowerll.byteblower.StreamResultData(…)
byteblowerll.byteblower.StreamResultHistory(…) Sender-side transmit result history.
byteblowerll.byteblower.StreamResultSnapshot(…)
byteblowerll.byteblower.StreamRuntimeStatus(…) Status information about a Stream
byteblowerll.byteblower.TCPResultData(*args, …) Contains static TCP result counters.
byteblowerll.byteblower.TCPResultHistory(…) Interface that allows you to obtain the cumulative and interval result data objects regarding TCP stats.
byteblowerll.byteblower.TCPResultSnapshot(…) Contains TCP result counters.
byteblowerll.byteblower.TCPSessionInfo(…) Class containing info about the TCP session.
byteblowerll.byteblower.TCPTunnel(*args, …) Creates a TCP port forwarding configuration between a local host and a remote server.
byteblowerll.byteblower.TelnetClient(*args, …) A Telnet client application that allows communication with an external Telnet server.
byteblowerll.byteblower.TriggerBasic(*args, …) Receive-side packet processor which counts the incoming frames, matching a filter.
byteblowerll.byteblower.TriggerBasicMobile(…) Receive-side packet processor on a WirelessEndpoint that counts all incoming frames that match a filter.
byteblowerll.byteblower.TriggerBasicResultData(…) Receive-side trigger result set.
byteblowerll.byteblower.TriggerBasicResultHistory(…) Receive-side trigger result history.
byteblowerll.byteblower.TriggerBasicResultSnapshot(…) Receive-side trigger result set.
byteblowerll.byteblower.TriggerSizeDistribution(…) Receive-side packet processor which counts the incoming frames, frame rate and frames per size, matching a filter.
byteblowerll.byteblower.TriggerSizeDistributionResultSnapshot(…) Contains the results for the size distribution.
byteblowerll.byteblower.VLANTag(*args, **kwargs) Configure the VLAN tag on a ByteBlower Port.
byteblowerll.byteblower.WirelessEndpoint(…) A WirelessEndpoint is a handle to a wireless device-under-test.
byteblowerll.byteblower.LinkStatus Link status object
byteblowerll.byteblower.TransmitErrorSource The source of an error of a Stream
byteblowerll.byteblower.TransmitErrorStatus The error status of a Stream
byteblowerll.byteblower.TransmitStatus The current transmission status of a class:Stream
class byteblowerll.byteblower.AbstractModifier(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

GetByteBlowerStream()
GetModifierType()
class byteblowerll.byteblower.AbstractObject(*args, **kwargs)

Bases: object

Base class for most of the ByteBlowerobjects

DescriptionGet(*args)

Gets a textual description for the current object

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO

Gets a textual description for the current object

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
ParentGet()

Returns the parent object.

Refresh()

Retrieves the latest data from the server for this object.

class byteblowerll.byteblower.AbstractObjectList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.AbstractRefreshableResult(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

class byteblowerll.byteblower.AbstractRefreshableResultList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.AbstractStream(*args, **kwargs)

Bases: object

InitialTimeToWaitGet()
InitialTimeToWaitSet(initTimeToWait)
InterFrameGapGet()
InterFrameGapSet(interFrameGap)
NumberOfFramesGet()
NumberOfFramesSet(nof)
ResultClear()
ResultGet()
ResultHistoryGet()
exception byteblowerll.byteblower.AddressResolutionFailed(*args)

Bases: byteblowerll.byteblower.InitializationError

class byteblowerll.byteblower.Buffer(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.BufferList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.ByteBlower(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Singleton class that is the entry point to start using the ByteBlower API.

Typically, this is the first class you will use when writing a ByteBlower test script. Use this class to connect to ByteBlower servers, to start or stop all configured ByteBlower ports across those servers, and to control the logging behavior.

Retrieve the singleton ByteBlower object using the static method InstanceGet().

This class contains some static convenience methods. They are wrappers around the corresponding non-static methods of the singleton object.

APIVersionGet()

Returns the version of the API.

New in version 2.6.0.

Example

bb.APIVersionGet()
# returns 2.10.0
DefaultTimeout = 1410065408
static DestroyInstance()
static InstanceGet()

Creates or returns the ByteBlower API singleton instance.

This object is the entry point to start working with the ByteBlower Tcl API.

If no ByteBlower instance is created yet, this method creates one and returns the object. If the instance exists already, it is simply returned. Any other static call will implicitly instantiate this singleton object.

Returns:ByteBlower singleton instance.

Example

# TODO!
MeetingPointAdd(*args)

Opens a connection to a MeetingPoint and adds it to the current API instance.

A single client instance may be connected to multiple MeetingPoint servers. This allows to use a set of Meeting point servers as a single system. On the other hand, multiple client instances may be connected to a single (shared) MeetingPoint server and will share its resources. See MeetingPoint for more information.

New in version 2.6.0.

Parameters:
  • server – IP address or hostname of the MeetingPoint server to connect.
  • port – Remote TCP port on which to connect the MeetingPoint server. Should normally never be overridden. Default: 9101
Returns:

A MeetingPoint object that represents the server connection.

Raises:

MeetingPointUnreachable - When the MeetingPoint server daemon could not be reached. Typical causes are an incorrect or unreachable DNS name or IP address or a MeetingPoint server daemon that is not running (on purpose or due to a software issue).

Raises:

<python_error> - Relevant network error: When something unexpectedly went wrong with the network connection.

Raises:

NotImplementedError - When the <port> parameter is provided and is no integer.

Example

from byteblowerll.byteblower import ByteBlower
bb = ByteBlower.InstanceGet()
bb.MeetingPointAdd('byteblower-1.lab.byteblower.com')

Opens a connection to a MeetingPoint and adds it to the current API instance.

A single client instance may be connected to multiple MeetingPoint servers. This allows to use a set of Meeting point servers as a single system. On the other hand, multiple client instances may be connected to a single (shared) MeetingPoint server and will share its resources. See MeetingPoint for more information.

New in version 2.6.0.

Parameters:
  • server – IP address or hostname of the MeetingPoint server to connect.
  • port – Remote TCP port on which to connect the MeetingPoint server. Should normally never be overridden. Default: 9101
Returns:

A MeetingPoint object that represents the server connection.

Raises:

MeetingPointUnreachable - When the MeetingPoint server daemon could not be reached. Typical causes are an incorrect or unreachable DNS name or IP address or a MeetingPoint server daemon that is not running (on purpose or due to a software issue).

Raises:

<python_error> - Relevant network error: When something unexpectedly went wrong with the network connection.

Raises:

NotImplementedError - When the <port> parameter is provided and is no integer.

Example

from byteblowerll.byteblower import ByteBlower
bb = ByteBlower.InstanceGet()
bb.MeetingPointAdd('byteblower-1.lab.byteblower.com')

Opens a connection to a MeetingPoint and adds it to the current API instance.

A single client instance may be connected to multiple MeetingPoint servers. This allows to use a set of Meeting point servers as a single system. On the other hand, multiple client instances may be connected to a single (shared) MeetingPoint server and will share its resources. See MeetingPoint for more information.

New in version 2.6.0.

Parameters:
  • server – IP address or hostname of the MeetingPoint server to connect.
  • port – Remote TCP port on which to connect the MeetingPoint server. Should normally never be overridden. Default: 9101
Returns:

A MeetingPoint object that represents the server connection.

Raises:

MeetingPointUnreachable - When the MeetingPoint server daemon could not be reached. Typical causes are an incorrect or unreachable DNS name or IP address or a MeetingPoint server daemon that is not running (on purpose or due to a software issue).

Raises:

<python_error> - Relevant network error: When something unexpectedly went wrong with the network connection.

Raises:

NotImplementedError - When the <port> parameter is provided and is no integer.

Example

from byteblowerll.byteblower import ByteBlower
bb = ByteBlower.InstanceGet()
bb.MeetingPointAdd('byteblower-1.lab.byteblower.com')
MeetingPointGet()

Returns all Meeting Point connections within this API instance.

See MeetingPointAdd() for more information

New in version 2.6.0.

Returns:MeetingPointList with objects created within this API instance. Can be empty

Example

# TODO!
MeetingPointRemove(inMeetingPoint)
MeetingPointRemoveAll()
PortsStart(inPorts)

Starts all traffic streams and application schedules on the specified ByteBlower ports.

More specifically, for each traffic stream and schedulable object on the specified ports, the configured time to wait kicks off and when this time has passed the corresponding action is performed.

Typical actions include starting a traffic stream or sending out a multicast join message or HTTP request. See Stream and SchedulesStart() for more information.

Streams or schedulable objects that are already scheduled and streams that are already active are ignored. Schedulable objects that are already stopped are scheduled again. See SchedulesStart() for more information.

If a port does not contain any streams or schedules, nothing happens for that port.

Parameters:portsByteBlowerPortList
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <ports> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <ports> is no ByteBlowerPort object.

Example

# TODO!
PortsStartAll()
PortsStop(inPorts)

Stops all traffic streams and application schedules on the specified ByteBlower ports.

More specifically, all traffic streams and schedulable objects that are currently scheduled are cancelled and all active traffic streams are stopped. Since schedulable objects are only active for an instant, aborting these is not possible.

For more information about schedulable objects, see SchedulesStart().

Streams and schedules that are not running are ignored. This may be because they have not yet started or because they are already finished or stopped.

If a port does not contain any streams or schedules, nothing happens for that port.

Parameters:args – Zero, one or more ByteBlowerPort objects on which to abort traffic streams and application schedules.
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <ports> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <ports> is no ByteBlowerPort object.

Example

# TODO!
PortsStopAll()
ResultsRefresh(inResults)

Refreshes multiple result objects.

New in version 2.2.

Sometimes you want to refresh a lot of results-objects at the same time. You can refresh all those objects in one API call. The results will be batched per server and then refreshed.

Returns:nothing

Example

# TODO!
ScheduleGroupCreate()

Create a ScheduleGroup.

Returns:ScheduleGroup

Example

# TODO!
ScheduleGroupGet()

Returns all existing ScheduleGroup.

Returns:ScheduleGroupList

Example

# TODO!
SchedulesStart(inSchedules)

Starts the specified schedulable objects.

More specifically, all specified schedulable objects have their time to wait period kick off simultaneously and when this time has passed the corresponding action is performed.

Typical actions include sending out a multicast join message or an HTTP request. All schedulable objects are listed below.

Schedulable objects that are already scheduled are ignored. Schedulable objects that are already finished or cancelled are scheduled again.

While re-scheduling them will always succeed (and this method will return without error), executing them multiple times may result in error states in other places. For example, a HttpClient can only manage one HTTP session and will refuse to send out a second HTTP request.

Different kinds of schedulable objects exist throughout the API. They are returned by methods such as Igmpv1MemberSession.ScheduleAdd().

After creating and configuring such schedules, they can be scheduled by either passing them to this method or by passing the port(s) on which they were created to PortsStart().

The following schedulable object types are available in the API:

  • IgmpScheduleIpMulticastListen
  • IgmpSchedule.Join
  • IgmpSchedule.Leave

Note

Bug HTTP requests are not yet available as a schedulable object and cannot be used with this method.

Parameters:schedules – Zero, one or more schedulable objects to start.
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <schedules> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <schedules> is no schedulable object.

Example

# TODO!
SchedulesStop(inSchedules)

Stops the specified schedulable objects.

More specifically, all specified schedulable objects that are currently scheduled are cancelled. Schedulable objects are only active for an instant, so actually aborting them is not possible.

For more information about schedulable objects, see SchedulesStart().

Schedules that are not running are ignored. This may be because they have not yet started or because they are already finished or cancelled.

Parameters:inSchedules – Zero, one or more schedulable objects to abort.
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <schedules> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <schedules> is no schedulable object.

Example

# TODO!
ServerAdd(*args)

Opens a connection to a ByteBlower server and adds it to the current API instance.

A single client instance may be connected to multiple ByteBlower servers. This allows to use a set of ByteBlower servers as a single system. On the other hand, multiple client instances may be connected to a single (shared) ByteBlower server and will share its resources. See ByteBlowerServer for more information.

Parameters:
  • server – IP address or hostname of the ByteBlower server to connect.
  • port – Remote TCP port on which to connect the ByteBlower server. Should normally never be overridden. Default: 9002
Returns:

A ByteBlowerServer object that represents the server connection.

Raises:

ByteBlowerServerUnreachable: When the ByteBlower server daemon could not be reached. Typical causes are an incorrect or unreachable DNS name or IP address or a ByteBlower server daemon that is not running (on purpose or due to a software issue).

Raises:

ByteBlowerServerIncompatible When the ByteBlower server daemon is running an incompatible version.

Raises:

<python_error>: Relevant network error: When something unexpectedly went wrong with the network connection.

Raises:

NotImplementedError When the <port> parameter is provided and is no integer.

Example

This example connects to the server ‘byteblower-1.lab.byteblower.com
bb = ByteBlower.InstanceGet()
server = ServerAdd('byteblower-1.lab.byteblower.com')

Opens a connection to a ByteBlower server and adds it to the current API instance.

A single client instance may be connected to multiple ByteBlower servers. This allows to use a set of ByteBlower servers as a single system. On the other hand, multiple client instances may be connected to a single (shared) ByteBlower server and will share its resources. See ByteBlowerServer for more information.

Parameters:
  • server – IP address or hostname of the ByteBlower server to connect.
  • port – Remote TCP port on which to connect the ByteBlower server. Should normally never be overridden. Default: 9002
Returns:

A ByteBlowerServer object that represents the server connection.

Raises:

ByteBlowerServerUnreachable: When the ByteBlower server daemon could not be reached. Typical causes are an incorrect or unreachable DNS name or IP address or a ByteBlower server daemon that is not running (on purpose or due to a software issue).

Raises:

ByteBlowerServerIncompatible When the ByteBlower server daemon is running an incompatible version.

Raises:

<python_error>: Relevant network error: When something unexpectedly went wrong with the network connection.

Raises:

NotImplementedError When the <port> parameter is provided and is no integer.

Example

This example connects to the server ‘byteblower-1.lab.byteblower.com
bb = ByteBlower.InstanceGet()
server = ServerAdd('byteblower-1.lab.byteblower.com')

Opens a connection to a ByteBlower server and adds it to the current API instance.

A single client instance may be connected to multiple ByteBlower servers. This allows to use a set of ByteBlower servers as a single system. On the other hand, multiple client instances may be connected to a single (shared) ByteBlower server and will share its resources. See ByteBlowerServer for more information.

Parameters:
  • server – IP address or hostname of the ByteBlower server to connect.
  • port – Remote TCP port on which to connect the ByteBlower server. Should normally never be overridden. Default: 9002
Returns:

A ByteBlowerServer object that represents the server connection.

Raises:

ByteBlowerServerUnreachable: When the ByteBlower server daemon could not be reached. Typical causes are an incorrect or unreachable DNS name or IP address or a ByteBlower server daemon that is not running (on purpose or due to a software issue).

Raises:

ByteBlowerServerIncompatible When the ByteBlower server daemon is running an incompatible version.

Raises:

<python_error>: Relevant network error: When something unexpectedly went wrong with the network connection.

Raises:

NotImplementedError When the <port> parameter is provided and is no integer.

Example

This example connects to the server ‘byteblower-1.lab.byteblower.com
bb = ByteBlower.InstanceGet()
server = ServerAdd('byteblower-1.lab.byteblower.com')
ServerCount()
ServerGet()

Returns all server connections within this API instance.

See ServerAdd() for more information.

Returns:a ByteBlowerServerList object

Example

# TODO!
ServerRemove(inByteBlowerServer)
ServerRemoveAll()
WirelessEndpointsPrepare(inWirelessEndpoints)

Prepares all the specified Wireless Endpoints.

If a wireless endpoint does not contain any streams or schedules, nothing happens for that Wireless Endpoint.

Parameters:wirelessEndpoints – a WirelessEndpointList object with zero, one or more WirelessEndpoint objects on which to start traffic streams and application schedules.
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <wirelessEndpoints> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <wirelessEndpoints> is no WirelessEndpoint object.
Raises:TechnicalError - When the items in <wirelessEndpoints> are spread across multiple MeetingPoints.
WirelessEndpointsPrepareAsync(inWirelessEndpoints)

Prepares all the specified Wireless Endpoints in an asynchronious way.

If a wireless endpoint does not contain any streams or schedules, nothing happens for that Wireless Endpoint.

Parameters:wirelessEndpoints – a WirelessEndpointList object with zero, one or more ByteBlowerPort objects on which to start traffic streams and application schedules.
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <wirelessEndpoints> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <wirelessEndpoints> is no WirelessEndpoint object.
Raises:TechnicalError - When the items in <wirelessEndpoints> are spread across multiple MeetingPoints.

Example

# TODO!
WirelessEndpointsStart(inWirelessEndpoints)

Starts all traffic streams and application schedules on the specified Wireless Endpoints.

More specifically, for each traffic stream and trigger object on the specified endpoints, the configured time to wait kicks off and when this time has passed the corresponding action is performed.

Typical actions include starting a traffic stream or HTTP request. See StreamMobile for more information. If a wireless endpoint does not contain any streams or schedules, nothing happens for that Wireless Endpoint.

Parameters:wirelessEndpoints – a WirelessEndpointList object with zero, one or more WirelessEndpoint objects on which to start traffic streams and application schedules.
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <wirelessEndpoints> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <wirelessEndpoints> is no WirelessEndpoint object.
Raises:TechnicalError - When the items in <wirelessEndpoints> are spread across multiple MeetingPoints.
WirelessEndpointsStartAndWait(inWirelessEndpoints)

Starts all traffic streams and application schedules on the specified Wireless Endpoints And waits until the devices are started.

More specifically, for each traffic stream and trigger object on the specified endpoints, the configured time to wait kicks off and when this time has passed the corresponding action is performed.

Typical actions include starting a traffic stream or HTTP request. See StreamMobile for more information.

If a wireless endpoint does not contain any streams or schedules, nothing happens for that Wireless Endpoint.

Parameters:wireless_endpoints – Zero, one or more WirelessEndpont objects on which to start traffic streams and application schedules.
Raises:ByteBlower.Exception.InvalidValue.NotAnObject - When one of the items in <wirelessEndpoints> is no object identifier.
Raises:ByteBlower.Exception.InvalidValue.ObjectType - When one of the items in <wirelessEndpoints> is no WirelessEndpoint object.
Raises:TechnicalError - When the items in <wirelessEndpoints> are spread across multiple MeetingPoints.

Example

# TODO!
exception byteblowerll.byteblower.ByteBlowerAPIException

Bases: exceptions.Exception

getInfo()
getMessage()
getPublicName()
setInfo(info)
setPrivateName(name)
setPublicName(name)
setServer(server)
what()
class byteblowerll.byteblower.ByteBlowerInterface(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

GetPhysicalInterface()
NameGet()
PacketDumpCreate()
PacketDumpDestroy(packet_dump)
PortCountGet()
PortCreate()
PortDestroy(inPort)
PortGet()
PortIdGet()
SpeedGet()
class byteblowerll.byteblower.ByteBlowerInterfaceList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.ByteBlowerLicense(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

This class represents the license information of your connected server.

The license is defined by the security key hardware on your ByteBlower server.

New in version 2.6.0.

Deprecated since version 2.10.0.

NumberOfNonTrunksGet()

The maximum number of non-trunking interfaces allowed by the license

Returns:number of nontrunks
Return type:int

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
NumberOfTrunkPortsGet(index)

The maximum number of ByteBlower Interfaces that can reside at the given trunk interface.

Parameters:index (int) – Index of the trunk interface to obtain the value for.
Returns:Allowed number of ByteBlower Interfaces on the physical interface
Rtype int:

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
NumberOfTrunksGet()

The maximum number of trunking interfaces allowed by the license

Returns:number of trunking interfaces
Return type:int

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
SerialGet()

Retrieves the serial number.

This serial number is the serial number of the hardware containing the license. This is handy info when contacting the ByteBlower support department.

Returns:the serial number of the hardware containing the license
Return type:str

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
TimeAllowedGet()

The number of minutes the ByteBlower server can run on the license.

If the value is set to 4294967295, the license is permanent and the number should be treated as infinity.

Returns:Number of minutes the ByteBlower server can run.
Return type:int

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
TimeConsumedGet()

The number of minutes the ByteBlower server has run on the license.

This value has only a meaning when the license is a temporary (demo) license.

Returns:Number of minutes the ByteBlower server has used of the maximum allowed
Return type:int

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
VersionGet()

Gets the version of the license.

Returns:the version of the license
Return type:int

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# ...
# :return: TODO
class byteblowerll.byteblower.ByteBlowerPort(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Logical representation of a network host docked somewhere in the NUT, which can transmit or schedule network traffic, process incoming traffic and run stateful network applications.

A ByteBlowerPort is physically connected (or ‘attached’) to the NUT through the physical ByteBlower interface on which it is created. See ByteBlowerServer.PortCreate() for more information.

Multiple ports may be created on the same physical interface. From a network view, they are just different (simulated) hosts within a shared (datalink or layer 2) subnet. This means traffic to one port created on an interface is seen by all ports on that interface.

Most test scenarios start with one or more ByteBlower ports that are configured to do the following things:

  • become part of the network (layer2, layer3, perform DHCP, join multicast groups, …)
  • schedule network traffic streams for transmission (TX objects)
  • configure incoming packet processors (RX objects) that look for matching packets and e.g. count them
  • start network applications such as HTTP servers
  • schedule network application actions (called ‘schedulable objects’) such an HTTP client application sending out an HTTP request

When such ports are subsequently activated, the scheduled streams and network actions are performed at the configured time.

From that moment, relevant result data may be pulled from those streams (TX statistics), incoming packet processors (RX statistics) and network applications (application and session statistics).

Destroying a port will clean up everything that is configured on that port in a clean way:

  • streams, incoming packet processors and network applications are teared down, their results are gone
  • the port leaves all multicast groups of which it is part (but doesn’t wait for confirmation)
  • the port releases its DHCP lease (but doesn’t wait for confirmation)
CapabilityGetByName(name)

Returns a Capability object by its name.

New in version 2.6.0.

Returns:Capability
Raises:ConfigError - UnsupportedConfig error message when the Capability is not supported

Example

# TODO!
CapabilityIsSupported(name)

Checks whether a capability is supported.

New in version 2.6.0.

Returns:True if it is supported, False if not

Example

# TODO!
CapabilityListGet()

Returns a list of Capability objects.

New in version 2.6.0.

Returns:CapabilityList

Example

This example shows how to query the capabilities on a ByteBlowerPort
port = server.PortCreate('trunk-1-1')
capability_list = port.CapabilityListGet()

for capability in capability_list:
    print(capability.DescriptionGet())
GetByteBlowerInterface()
InterfaceGet()
InterfaceNameGet()

Returns physical ByteBlower interface code.

Each ByteBlower port is created on a physical ByteBlower interface of a server. This interface determines where the port will be ‘attached’ to the NUT.

See ByteBlowerServer.PortCreate() for more information and to see how an interface name is structured.

Returns:String code representing the physical interface name (e.g. trunk-1-4 or nontrunk-1).

Example

# TODO!
InterfaceSpeedGet()

Returns physical ByteBlower interface speed.

Each ByteBlower port is created on a physical ByteBlower interface of a server. This interface determines where the port will be ‘attached’ to the NUT.

See ByteBlowerServer.PortCreate() for more information and to see how an interface name is structured.

Returns:The maximum speed in bits per second a ByteBlower Interface can transmit. This does not take any VLAN overhead into account!

Example

# TODO!
Layer25PPPoEAdd()

Adds a layer 2.5 PPPoE Client to this port.

New in version 2.5.0.

Once a layer 2.5 configuration is added to a port, it cannot be destroyed or removed.

Returns:PPPoEClient
Raises:ConfigError - When an underlying layer 2 or layer 2.5 configuration is not yet fully configured.

Example

Configure port’s network connection as a PPPoE-enabled virtual interface.

# TODO!
Layer25PPPoEGet()

Returns the ordered list of layer 2.5 PPPoE objects of this port.

New in version 2.5.0: PPPoE objects can be added by ByteBlowerPort.Layer25PPPoEAdd()

Returns:Layer25PPPoEList

Example

# TODO!
Layer25PPPoERemove(inPPPoEClient)
Layer25VlanAdd()

Adds a layer 2.5 VLAN to this port.

Changed in version 2.5.0: Multiple layer 2.5 configurations can be added. They will be stacked on top each other in the the port’s network stack from the bottom up.

Once a layer 2.5 configuration is added to a port, it cannot be destroyed or removed.

Changed in version 2.3.0: Support for stacking multiple VLAN tags. Adding a second VLAN tag on an older server will throw a technical exception.

Returns:Created Layer25Vlan objects.
Raises:ConfigError - When an underlying layer 2 or layer 2.5 configuration is not yet fully configured.

Example

Configure port’s network connection as a VLAN-enabled virtual interface.

# TODO!
Layer25VlanGet()

Returns the ordered list of layer 2.5 Vlan objects of this port.

New in version 2.5.0: VLAN objects can be added by Layer25VlanAdd().

Returns:Layer25VlanList

Example

# TODO!
Layer25VlanRemove(inVlanTag)
Layer2EthIIGet()

Returns the layer 2 configuration object of this port.

New in version 2.5.0.

Returns:EthernetConfiguration
Raises:ConfigError - When the layer 2 configuration is not yet set.

Example

# TODO!
Layer2EthIISet()

Sets the layer 2 configuration of this port.

Once the layer 2 configuration is set, it cannot be destroyed or overwritten.

Returns:EthernetConfiguration object.
Raises:ConfigError - When the layer 2 configuration is already set.

Example

Configure port’s network connection as an Ethernet interface.

# TODO!
Layer3IPv4Get()

Returns the layer 3 IPv4 configuration object of this port.

New in version 2.5.0.

Returns:IPv4Configuration.
Raises:ConfigError - When the layer 3 configuration is not yet set.

Example

# TODO!
Layer3IPv4Set()

Sets the layer 3 IPv4 configuration of this port.

New in version 2.5.0.

Once a layer 3 configuration is set, it cannot be destroyed or overwritten.

Both IPv4 and IPv6 are supported. Dual stack is not available on a single port, but can be achieved by creating 2 separate ports with identical layer 2 and (possibly) layer 2.5 configurations.

Returns:IPv4Configuration
Raises:ConfigError - When an underlying layer 2 or layer 2.5 configuration is not yet fully configured.
Raises:ConfigError - When the layer 3 configuration is already set.

Example

Configure port’s network connection as an IPv4 host.

# TODO!
Layer3IPv6Get()

Returns the layer 3 IPv6 configuration object of this port.

New in version 2.5.0.

Returns:IPv6Configuration
Raises:ConfigError - When the layer 3 configuration is not yet set.

Example

# TODO!
Layer3IPv6Set()

Sets the layer 3 IPv6 configuration of this port.

New in version 2.5.0.

Once a layer 3 configuration is set, it cannot be destroyed or overwritten.

Both IPv4 and IPv6 are supported. Dual stack is not available on a single port, but can be achieved by creating 2 separate ports with identical layer 2 and (possibly) layer 2.5 configurations.

Returns:IPv6Configuration
Raises:ConfigError - When an underlying layer 2 or layer 2.5 configuration is not yet fully configured.
Raises:ConfigError - When the layer 3 configuration is already set.

Example

Configure port’s network connection as an IPv6 host.

# TODO!
MDLGet()

Returns the port’s current Maximum Data Length (MDL), the maximum ethernet frame size that can be transmitted.

The MDL is the maximum size (in bytes) for any ethernet packet leaving the port. It includes the ethernet header, but excludes CRC, preamble and interframe gap. To calculate the maximum size of the layer 2 payload, substract the 14 bytes of the ethernet header.

This payload may be a layer 3 IP packet, a layer 2.5 VLAN tag followed by such a layer 3 IP packet or anything else.

The MDL value defaults to 1514, which corresponds with a layer 2 payload of 1500 bytes.

This value is used by the protocol stack. For example, the announced TCP Maximum Segment Size (MSS) is based on this MDL value. This value also limits the number of bytes that can be placed in a Frame when calling Frame.BytesSet().

Note

For ports without layer 2.5 configurations, the default MDL of 1514 will also lead to a maximum layer 3 packet size of 1500. This value is often called the Maximum Transmission Unit or MTU of an interface. When a port has a VLAN configuration however, the MTU will only be 1496 by default! Consider increasing the MDL to 1518 in such cases to simulate typical real-world behavior.

Note

On trunking interfaces the ByteBlower server adds a temporary VLAN automatically, to select an interface (e.g. trunk-1-10) on the ByteBlower switch. This is hidden from the user and has no influence on the MDL value. See ByteBlowerPort::MDLMaximumGet for more information.

Returns:Current MDL value in bytes.

Example

Typical values for a trunking and non-trunking port.

# TODO!
MDLMaximumGet()

Returns the port’s highest allowed Maximum Data Length (MDL) value, which is limited by the physical interface.

The MDL of a ByteBlower port places a limit on the size of ethernet frames that may be sent on that port. It can be modified by the user through MDLSet(). The MDL value (in bytes) covers the whole ethernet packet, but excluding CRC, preamble and interframe gap.

The physical ByteBlower interface (e.g. nontrunk-1) on which a port is created places an upper bound on the allowed MDL values. Through this method, this property can be retrieved at runtime.

The typical value of the maximum MDL is 9014 on non-trunking interfaces and 9010 on trunking interfaces.

Note

On trunking interfaces the ByteBlower server adds a temporary VLAN automatically, to select an interface (e.g. trunk-1-10) on the ByteBlower switch. This is hidden from the user. However, it also means that from a user perspective, the maximum MDL value of the same physical interface is 4 bytes less when it’s configured as a trunking interface.

Returns:Physical upper bound for the MDL in bytes.

Example

Typical values for a trunking and a non-trunking port.

# TODO!
MDLSet(mdl)

Sets the port’s Maximum Data Length (MDL), the maximum ethernet frame size that can be transmitted.

See MDLGet() for more information.

Parameters:mdl – New MDL value in bytes. Should be less then the value returned by MDLMaximumGet().
Raises:ByteBlower.Exception.InvalidValue.Integer - When mdl is no integer.
Raises:TBD - When the provided value was larger than the maximum supported MDL. TODO: Decide on this exception and document (Tim, February 2015)

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO  
ProtocolHttpClientAdd()

Creates a HTTP client application to run on this port.

A :HttpMultiServer application can initiate customized HTTP sessions that are typically used to emulate a TCP connection.

It allows configuring the special HTTP requests to which a running HttpServer application responds. For example, an HTTP client can ask (GET) for a response of a specified size or time or may send (PUT) a payload of a specified size or time itself.

Besides constructing such special HTTP requests, the HTTP client can interact with any normal webserver by configuring its URL.

Returns::HttpMultiServer

Example

# TODO!
ProtocolHttpClientGet()

Returns the list of all HTTP client applications created on this port.

See ProtocolHttpClientAdd() for more information.

Returns:HttpClientList

Example

# TODO!
ProtocolHttpClientRemove(arg2)
ProtocolHttpMultiClientAdd()

Creates a Layer5.Http.MultiClient object on this port.

Example

# TODO!
ProtocolHttpMultiClientGet()

Returns the list of a HttpMultiClient objects on this port.

Returns:HttpMultiClientList

Example

# TODO!
ProtocolHttpMultiClientRemove(arg2)
ProtocolHttpMultiServerAdd()

Creates a HttpMultiServer object on this port.

Example

# TODO!
ProtocolHttpMultiServerGet()

Returns the list of HttpMultiServer objects on this port.

Returns:HttpMultiServerList

Example

# TODO!
ProtocolHttpMultiServerRemove(arg2)
ProtocolHttpServerAdd()

Creates a HTTP server application to run on this port.

An HttpServer application is a customized HTTP server that is typically used to emulate a TCP connection.

It listens for special HTTP requests (sent by HttpClient applications) and responds in the desired way. For example, an HTTP request may ask (GET) for a response of a specified size and the HTTP server will emulate sending such a file back.

Returns:HttpServer

Example

# TODO!
ProtocolHttpServerGet()

Returns the list of all HTTP server applications created on this port.

See ProtocolHttpServerAdd() for more information.

Returns:class:.HttpServerList

Example

# TODO!
ProtocolHttpServerRemove(arg2)
ProtocolTelnetClientAdd()

Creates a Telnet client application to run on this port.

New in version API: 2.2.0

A TelnetClient application can contact and interact with an external Telnet server.

Apart from simulating such scenarios for its own sake, this application can be used to contact important nodes within the NUT (e.g. a router) and retrieve relevant statistics from it.

Returns:TelnetClient.

Example

# TODO!
ProtocolTelnetClientGet()

Returns the list of all Telnet client applications created on this port.

New in version API: 2.2.0

See ProtocolTelnetClientAdd() for more information.

Returns:TelnetClientList

Example

# TODO!
ProtocolTelnetClientRemove(arg2)
ResultClear()

Clears the counters for the ByteBlower port and empties the ByteBlowerPortResultHistory.

Example

# TODO!
ResultGet()

Returns the result object.

Returns:ByteBlowerPortResult A result object which contains the packet count, byte count etc for this ByteBlower port.

Example

# TODO!
ResultHistoryGet()

Returns the history for the counters for the ByteBlower port.

Returns:ByteBlowerPortResultHistory

Example

# TODO!
RxCaptureBasicAdd()

Creates a capture tool, which captures the data and metadata of incoming frames (possibly restricted by a filter).

New in version 2.5.0.

Like all incoming packet processors (or ‘Rx’ objects), this object listens to incoming traffic matching a configurable BPF filter and performs some action when it arrives.

Typically, the filter should limit the matching packets to the interesting traffic, especially since capturing all incoming bytes at high rates may place a heavy load on the server.

Note

Unlike other Rx objects, the capture tool is not activated as soon as it is created. See the class documentation of the returned types for more information.

Warning

Using this tool requires a lot of system resources. Try to avoid capturing at high rates or for a long time. Set the capture filter as strict as possible to avoid unwanted traffic. When too much incoming traffic must be processed, the ByteBlower server may become unstable.

Note

It is also possible to log in to the server and capture there. Note that when capturing a trunking interface (i.e. connected to a switch) you will see an extra VLAN tag that shows to or from which interface the traffic goes. This is currently only possible on the 1x00 series, where the Linux tcpdump tool can sniff the server’s (native) data interfaces.

Note

This functionality is also available with a stand-alone command-line tool. It can be found and downloaded on our support portal.

The returned capture tool is a basic capture tool stores both the frame data and some metadata.

Returns:CaptureRawPacket

Example

# TODO!
RxCaptureBasicGet()

Returns the list of capture tools created on this port.

See RxCaptureBasicAdd() for more information.

Returns:CaptureRawPacketList

Example

# TODO!
RxCaptureBasicRemove(inCapture)
RxLatencyBasicAdd()

Creates a latency calculator, which computes latency measurements based on timestamps in received frames (possibly restricted by a filter).

New in version 2.5.0.

Like all incoming packet processors (or ‘Rx’ objects), this object listens to incoming traffic matching a configurable BPF filter and performs some action when it arrives.

Typically, the filter should limit the matching traffic to the Tx.Stream whose transmitted frames actually contain the required timestamps!

The latency calculator is activated as soon as it is created, so don’t forget to reset its counters after setting the filter and initializing your test.

See Frame for information on timestamping.

Returns:LatencyBasic

Example

# TODO!
RxLatencyBasicGet()

Returns the list of latency calculators created on this port.

New in version 2.5.0.

See LatencyBasicAdd() for more information.

Returns:LatencyBasicList

Example

# TODO!
RxLatencyBasicRemove(inLatency)
RxLatencyDistributionAdd()

Creates a latency calculator, which computes latency measurements based on timestamps in received frames (possibly restricted by a filter).

New in version 2.5.0.

Like all incoming packet processors (or ‘Rx’ objects), this object listens to incoming traffic matching a configurable BPF filter and performs some action when it arrives.

Typically, the filter should limit the matching traffic to the Tx.Stream whose transmitted frames actually contain the required timestamps!

The latency calculator is activated as soon as it is created, so don’t forget to reset its counters after setting the filter and initializing your test.

See Frame for information on timestamping.

Returns:LatencyDistribution

Example

# TODO!
RxLatencyDistributionGet()

Returns the list of latency calculators created on this port.

New in version 2.5.0.

See LatencyDistributionAdd() for more information.

Returns:LatencyDistributionList

Example

# TODO!
RxLatencyDistributionRemove(inLatency)
RxOutOfSequenceBasicAdd()

Creates an out-of-sequence detector, which counts such cases based on sequence numbers in received frames (possibly restricted by a filter).

New in version 2.5.0.

Like all incoming packet processors (or ‘Rx’ objects), this object listens to incoming traffic matching a configurable BPF filter and performs some action when it arrives.

Typically, the filter should limit the matching traffic to the Stream whose transmitted frames actually contain the required sequence numbers!

The out-of-sequence detector is activated as soon as it is created, so don’t forget to reset its counters after setting the filter and initializing your test.

Returns:OutOfSequence Created out-of-sequence detector object.

Example

# TODO!
RxOutOfSequenceBasicGet()

Returns the list of out-of-sequence detectors created on this port.

New in version 2.5.0.

See OutOfSequenceBasicAdd() for more information.

Returns:OutOfSequenceBasic

Example

# TODO!
RxOutOfSequenceBasicRemove(inOutOfSequence)
RxTriggerBasicAdd()

Creates a basic receive trigger, whose counters are updated for each received frame (possibly restricted by a filter).

New in version 2.5.0.

Like all incoming packet processors (or ‘Rx’ objects), this object listens to incoming traffic matching a configurable BPF filter and performs some action when it arrives.

The receive trigger is activated as soon as it is created, so don’t forget to reset its counters after setting the filter and initializing your test.

See the class documentation of the returned types for more information.

Returns:TriggerBasic

Example

# TODO!
RxTriggerBasicGet()

Returns the list of receive triggers created on this port.

New in version 2.5.0.

See RxTriggerBasicAdd() for more information.

Returns:TriggerBasic

Example

# TODO!
RxTriggerBasicRemove(arg2)
RxTriggerSizeDistributionAdd()

Creates a size distribution receive trigger, whose counters are updated for each received frame (possibly restricted by a filter).

New in version 2.5.0.

Like all incoming packet processors (or ‘Rx’ objects), this object listens to incoming traffic matching a configurable BPF filter and performs some action when it arrives.

The receive trigger is activated as soon as it is created, so don’t forget to reset its counters after setting the filter and initializing your test.

See the class documentation of the returned types for more information.

Returns:TriggerSizeDistribution

Example

# TODO!
RxTriggerSizeDistributionGet()

Returns the list of receive triggers created on this port.

New in version 2.5.0.

See RxTriggerSizeDistributionAdd() for more information.

Returns:a TriggerSizeDistributionList object

Example

# TODO!
RxTriggerSizeDistributionRemove(arg2)
ServerGet()
Start()

Starts all transmit streams and schedulable objects configured on this port.

See ByteBlower.PortsStart(), which does the same for a set of ports, for more information.

Stop()
TunnelTcpAdd()

Creates a TCP tunnel object.

A TcpTunnel can be used to configure TCP port forwarding between the user’s office network and the lab network.

Through the protocol, a client can requesting dynamic changes to the firewall or NAT port forwarding settings of a (PCP-enabled) gateway.

Returns:Created TcpTunnel object.

Example

# TODO!
TunnelTcpGet()

Returns a list of all TCP Tunnel objects created on this port.

See TunnelTcpAdd() for more information.

Returns:TcpTunnelList
TunnelTcpRemove(arg2)
TxStreamAdd()

Creates a transmit stream, which can be configured to blast layer 2 frames traffic from this port in a stateless way.

Initially, a stream does not contain any traffic. It must still be configured by adding content (in the form of Frame objects) and timing information (especially the interframe gap). Stream

A Stream can be compared to the transmitting part of a frame blasting flow in the GUI.

Returns:Stream

Example

# TODO!
TxStreamGet()

Returns a list of transmit streams created on this port.

Returns:StreamList

Example

# TODO!
TxStreamRemove(inStream)
class byteblowerll.byteblower.ByteBlowerPortCounterType

Bases: object

RxAll = 2

TODO

RxBroadcast = 0

TODO

RxUnicast = 1

TODO

class byteblowerll.byteblower.ByteBlowerPortList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.ByteBlowerPortResultData(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

ByteBlower port counter result set.

The result set contains three different counters:

  • a Unicast counter, which counts all received unicast Ethernet frames.
  • a Broadcast counter, which counts all received broadcast Ethernet frames.
  • an All counter, which counts all received Ethernet frames.

Note

The ‘all’ counter can be seen as the combination of the unicast and the broadcast counter.

Note

See What’s new in API v2 for more information.

A ByteBlower port result data snapshot object can be created via a ByteBlowerPortResultData or ByteBlowerPort.ResultSnapshot

Example

Receive all frames on “trunk-1-2” of some server, matching UDP source or destination port 67.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntervalDurationGet()

Gets the configured duration of this results snapshot [NS].

New in version 2.3.0.

Example

This example gets interval duration of this result snapshot [NS]

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RxAllGet()

Gets the received counters for the port.

This will return a ByteBlowerPortResultRxData object which contain all counters from a port

Returns:ByteBlowerPortResultRxData

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RxBroadcastGet()

Gets the received broadcast counters for the port.

This will return a ByteBlowerPortResultRxData object which contain all counters from a port. This will only contain the broadcast packets received on the port.

Returns:ByteBlowerPortResultRxData

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RxUnicastGet()

Gets the received unicast counters for the port.

This will return a ByteBlowerPortResultRxData object which contain all unicast counters from a port. This will only contain the broadcast unicast received on the port.

Returns:ByteBlowerPortResultRxData

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
TimestampGet()

Gets the snapshot timestamp [NS].

Example

This example gets the snapshot timestamp [NS].

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.ByteBlowerPortResultDataList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.ByteBlowerPortResultHistory(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractRefreshableResult

Port counter result history.

The port counter history is - as always - available in two flavors: the cumulative and the interval results

Note

The information is not updated until Refresh() is called

Note

See History result for more information.

A result history object can be created via a ByteBlowerPort, using ByteBlowerPort.ResultHistoryGet()

Example

Receive all frames on “trunk-1-2” of some server, matching UDP source or destination port 67.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
Clear()

Removes the locally stored history snapshots.

This can be used to save memory in long tests where the results are requested at regular intervals.

Warning

Any interval or cumulative result object returned from this history object before calling Clear() will be destroyed and thus become unusable.

CumulativeGet()

Returns a list of available cumulative counters.

Returns:ByteBlowerPortResultDataList containing the Interval counters

Example

This example gets the available cumulative counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
CumulativeGetByIndex(index)

Returns a single item of the cumulative list.

Returns:ByteBlowerPortResultData cumulative counter object at the specified index

Example

This example gets the available cumulative counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
CumulativeGetByTime(timestamp)

Returns a single item of the cumulative list using a timestamp nanoseconds.

New in version 2.2.

Example

This example gets the available cumulative counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
CumulativeLatestGet()

Returns latest closed item of the cumulative list.

Returns:The latests closed ByteBlowerPortResultData cumulative counter object.

New in version 2.2.

Example

This example gets the available cumulative counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
CumulativeLengthGet()

Returns the size of the cumulative list.

Returns:The length of the cumulative list

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntervalGet()

Returns a list of available interval counters.

Returns:ByteBlowerPortResultDataList containing the Interval counters

Example

This example gets the available interval counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntervalGetByIndex(index)

Returns a single item of the interval list.

Returns:ByteBlowerPortResultData interval counter object at the specified index

Example

This example gets the available interval counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntervalGetByTime(timestamp)

Returns a single item of the interval list using a timestamp in nanoseconds.

New in version 2.2.

Example

This example gets the available interval counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntervalLatestGet()

Returns the latest closed item of the interval list.

Returns:The latests closed ByteBlowerPortResultData interval counter object.

New in version 2.2.

Example

This example gets the available interval counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntervalLengthGet()

Returns the size of the interval list.

Returns:The length of the interval list

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RefreshTimestampGet()

Returns the timestamp on the server when the current history is requested.

Returns:Timestamp on the server when the current history is requested in nanoseconds since epoch

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
SamplingBufferLengthGet()

Number of samples to keep in the buffer.

The ByteBlower server has a buffer to keep some samples before they are transferred to the client. This method gets the maximum number of samples the server can hold. The last sample will always be the running sample. When a sample is closed, the oldest sample in the buffer will be removed.

Returns:The length of the sample buffer

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
SamplingBufferLengthSet(inCount)

Sets the number of samples to keep in the buffer.

The ByteBlower server has a buffer to keep some samples before they are transferred to the client. This method sets the maximum number of samples the server can hold. The last sample will always be the running sample. When a sample is closed, the oldest sample in the buffer will be removed.

New in version 2.3.0.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
SamplingIntervalDurationGet()

Duration of one sampling interval in nanoseconds.

Returns:Duration in nanoseconds

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
SamplingIntervalDurationSet(inDuration)

Sets the duration of one sampling interval.

Warning

This affects all users on the same ByteBlower interface.

Warning

The previously collected history will be invalidated.

New in version 2.3.0.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.ByteBlowerPortResultRxData(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

ByteBlower port counter result set.

A ByteBlower port result data snapshot object can be created via a ByteBlowerPortResultData or ByteBlowerPortResultSnapshot

Note

See What’s new in API v2 for more information.

Example

Receive all frames on “trunk-1-2” of some server, matching UDP source or destination port 67.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
ByteCountGet()

Gets the current received bytes counter.

Example

This example gets the received bytes counter

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
ByteCountWithCRCGet()

Gets the current received bytes counter with the CRC.

Example

This example gets the received bytes counter

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
CounterType_RxAll = 2
CounterType_RxBroadcast = 0
CounterType_RxUnicast = 1
FramesizeMaximumGet()

Gets the largest frame size received in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the largest frame size received in this snapshot.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
FramesizeMinimumGet()

Gets the smallest frame size received in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the smallest frame size received in this snapshot.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntervalDurationGet()
PacketCountGet()

Gets the received packet count.

Example

This example gets the received packet counter

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
TimestampFirstGet()

Gets the timestamp [NS] of the first packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the first received packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
TimestampGet()

Gets the snapshot timestamp [NS].

Example

This example gets the snapshot timestamp [NS].

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
TimestampLastGet()

Gets the current timestamp [NS] of the last packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the last received packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.ByteBlowerPortResultSnapshot(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractRefreshableResult

ByteBlower port counter result set.

The result set contains three different counters:

  • a Unicast counter, which counts all received unicast Ethernet frames.
  • a Broadcast counter, which counts all received broadcast Ethernet frames.
  • an All counter, which counts all received Ethernet frames.

Note

The “all” counter can be seen as the combination of the unicast and the broadcast counter.

Note

See What’s new in API v2 for more information.

A ByteBlower port result data snapshot object can be created via a ByteBlowerPortResultData or ByteBlowerPortResultSnapshot

Example

Receive all frames on “trunk-1-2” of some server, matching UDP source or destination port 67.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
Clear()
IntervalDurationGet()

Gets the configured duration of this results snapshot [NS].

New in version 2.3.0.

Example

This example gets interval duration of this result snapshot [NS]

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RefreshImpl()
RefreshTimestampGet()

Returns the timestamp on the server when the current snapshot is requested.

When the snapshot is part of a history, the refresh timestamp will be the same as refresh timestamp of the History object.

..note:: This is not the same as TimestampGet()

Returns:Timestamp on the server when the current snapshot is requested in nanoseconds since epoch

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RxAllGet()

Gets the received counters for the port. This will return a ByteBlowerPortResultRxData object which contain all counters from a port.

Returns:ByteBlowerPortResultRxData

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RxBroadcastGet()

Gets the received broadcast counters for the port. This will return a ByteBlowerPortResultRxData object which contain all counters from a port. This will only contain the broadcast packets received on the port.

Returns:ByteBlowerPortResultRxData

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RxUnicastGet()

Gets the received unicast counters for the port. This will return a ByteBlowerPortResultRxData object which contain all unicast counters from a port. This will only contain the broadcast unicast received on the port.

Returns:ByteBlowerPortResultRxData

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
TimestampGet()

Gets the snapshot timestamp [NS].

Example

This example gets the snapshot timestamp [NS].

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.ByteBlowerServer(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Representation of a client connection to a shared, physical ByteBlower server, which can send and receive network traffic through its interfaces.

Using this class, ByteBlower ports (logical network hosts) can be docked to a NUT at a specific place.

Furthermore, information about a shared ByteBlower Server, such as the available interfaces and the current connections can be retrieved.

InterfaceGetByName(name)
InterfaceNamesGet()

Shows the available physical ByteBlower interfaces on the ByteBlower server.

The available interfaces on a server depend on the static server configuration. Only the presence of USB interfaces can change dynamically (using ::Update).

ByteBlower interfaces are represented by a string code formatted as follows:

  • Trunking interfaces, which are interfaces located on a ByteBlower switch, have a format trunk-X-Y, where X is the server interface on which the switch is connected and Y is the interface number on the switch itself.
  • Non-trunking interface, which are located directly on the server (without switch), have a format nontrunk-X, where X is the (server) interface.

This format is used as keys in the key-value pair list returned by UsersGet(). It is also the format that should be passed to PortCreate() method as argument.

Returns:A list of all available physical interfaces on this server.

Example

Assume server has a single 48-port trunking interface and a single non-trunking interface.

server = ByteBlower.InstanceGet().ServerAdd('byteblower-1.lab.byteblower.com')
server.InterfaceNamesGet()
# Returns ['trunk-1-1', 'trunk-1-2', 'trunk-1-3', ... , 'trunk-1-48', 'nontrunk-1']
PacketDumpCreate(*args)

Creates a PacketDump object on the specified ByteBlower interface.

New in version 2.9.0.

The PacketDump API allows to capture all incoming and outgoing network traffic on a ByteBlower interface.

Parameters:interface – Interface name of the ByteBlower interface
Returns:PacketDump
Raises:ByteBlower.Exception.API.UnknownByteBlowerInterface - When the specified interface name does not exist on the connected server.

Example

Create a PacketDump object on trunk-1-1

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.InstanceGet().ServerAdd('byteblower-1.lab.byteblower.com')
dump = server.PacketDumpCreate('trunk-1-1')

Creates a PacketDump object on the specified ByteBlower interface.

New in version 2.9.0.

The PacketDump API allows to capture all incoming and outgoing network traffic on a ByteBlower interface.

Parameters:interface – Interface name of the ByteBlower interface
Returns:PacketDump
Raises:ByteBlower.Exception.API.UnknownByteBlowerInterface - When the specified interface name does not exist on the connected server.

Example

Create a PacketDump object on trunk-1-1

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.InstanceGet().ServerAdd('byteblower-1.lab.byteblower.com')
dump = server.PacketDumpCreate('trunk-1-1')
PacketDumpDestroy(packet_dump)
PhysicalInterfacesGet()
PhysicalInterfacesGetByType(inPhysicalInterfaceType)
PortCreate(*args)

Creates a new ByteBlower port on the specified ByteBlower interface.

By specifying a physical ByteBlower interface, we can ‘attach’ a ByteBlower port (which represents a network host) to the NUT somewhere. This depends of the physical set-up.

Available ByteBlower interfaces depend on the server type and configuration. Available interfaces on the connected server can be shown using InterfacesGet().

ByteBlower interfaces are represented by a string code formatted as follows:

  • Trunking interfaces, which are interfaces located on a ByteBlower switch, have a format trunk-X-Y, where X is the server interface on which the switch is connected and Y is the interface number on the switch itself.
  • {Non-trunking interface, which are located directly on the server (without switch), have a format nontrunk-X, where X is the (server) interface.
Parameters:interface – String code for the ByteBlower interface on which to create the port.
Returns:ByteBlowerPort
Raises:ByteBlower.Exception.API.UnknownByteBlowerInterface - When the specified interface name does not exist on the connected server.

Example

Create a simulated host and attach it to the NUT. More specifically, locate it within the ethernet subnet connected to the first interface of the first ByteBlower switch.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')

Creates a new ByteBlower port on the specified ByteBlower interface.

By specifying a physical ByteBlower interface, we can ‘attach’ a ByteBlower port (which represents a network host) to the NUT somewhere. This depends of the physical set-up.

Available ByteBlower interfaces depend on the server type and configuration. Available interfaces on the connected server can be shown using InterfacesGet().

ByteBlower interfaces are represented by a string code formatted as follows:

  • Trunking interfaces, which are interfaces located on a ByteBlower switch, have a format trunk-X-Y, where X is the server interface on which the switch is connected and Y is the interface number on the switch itself.
  • {Non-trunking interface, which are located directly on the server (without switch), have a format nontrunk-X, where X is the (server) interface.
Parameters:interface – String code for the ByteBlower interface on which to create the port.
Returns:ByteBlowerPort
Raises:ByteBlower.Exception.API.UnknownByteBlowerInterface - When the specified interface name does not exist on the connected server.

Example

Create a simulated host and attach it to the NUT. More specifically, locate it within the ethernet subnet connected to the first interface of the first ByteBlower switch.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')

Creates a new ByteBlower port on the specified ByteBlower interface.

By specifying a physical ByteBlower interface, we can ‘attach’ a ByteBlower port (which represents a network host) to the NUT somewhere. This depends of the physical set-up.

Available ByteBlower interfaces depend on the server type and configuration. Available interfaces on the connected server can be shown using InterfacesGet().

ByteBlower interfaces are represented by a string code formatted as follows:

  • Trunking interfaces, which are interfaces located on a ByteBlower switch, have a format trunk-X-Y, where X is the server interface on which the switch is connected and Y is the interface number on the switch itself.
  • {Non-trunking interface, which are located directly on the server (without switch), have a format nontrunk-X, where X is the (server) interface.
Parameters:interface – String code for the ByteBlower interface on which to create the port.
Returns:ByteBlowerPort
Raises:ByteBlower.Exception.API.UnknownByteBlowerInterface - When the specified interface name does not exist on the connected server.

Example

Create a simulated host and attach it to the NUT. More specifically, locate it within the ethernet subnet connected to the first interface of the first ByteBlower switch.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
PortDestroy(inPort)
PortGet()

Returns a list of all ByteBlower ports created through this server connection.

Only ports created through the connection represented by this object are returned, not those created by other client instances (either GUI or API) or those created by other server connections within this API instance! See UsersGet() to see the interfaces on which other users have created ports.

Returns:ByteBlowerPortList
PortsStart(inPorts)
PortsStartAll()
PortsStop(inPorts)
PortsStopAll()
ResultsRefreshAll()
ServiceInfoGet()

Returns the service information of the ByteBlower server daemon.

New in version 2.6.0.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.ServiceInfoGet()
# :return: TODO
>>> server.ServiceInfoGet()
TimestampGet()

Returns the current timestamp on the server.

New in version 2.3.0.

Retrieves the current timestamp of the server in nanoseconds. This can be used to calculate the offset between two servers to compare results.

Returns:Timestamp in nanoseconds

Example

Assume the client is connected (through this object) to a server:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.TimestampGet()
# :return: 1432805398000000000 
Update()

Updates dynamic interfaces (e.g. USB) on the connected server.

Deprecated since version 2.0: Since 2.0 are USB interfaces not supported anymore

This methods looks for attached USB interfaces and updates its available interfaces. If USB interfaces are attached, they will be returned by InterfacesGet() after this running this method.

Bug Since USB interfaces are not yet supported, this method currently has no use. Method is not yet implemented and will throw a TechnicalError

UsersGet()

Shows which physical interfaces of the (shared) physical ByteBlower server are currently used by which clients.

This method gives an overview of how a ByteBlower server is currently used. It displays which client connections (whether from GUI scenario runs or API sessions) have created ByteBlowerPort objects on which of the server’s physical ByteBlower interfaces.

Such a client connection to a server is represented by this very ByteBlowerServer type! As soon as some client instance (e.g. a TCL shell, python interpreter or a GUI) on some client computer creates such server object, a connection is established to that shared server.

Multiple client instances can be active on the same host. For example, a single host may be running a GUI scenario, two python scripts and an interactive Tcl session at the same time. Similarly, a single client instance may have multiple parallel connections to the same server, by calling ByteBlower.ServerAdd() multiple times for the same server URL or IP.

The server’s physical interfaces are statically configured on the server machine and can be retrieved using InterfacesGet(). They are shared among all connected clients.

Client connections are identified by the client’s hostname. This means that all server connections from all client instances on a single host will all be different ‘users’, but will have the same string representation. If they use the same interfaces, that hostname will simply appear multiple times.

As soon as a specific ByteBlowerServer (representing a client connection) creates a first ByteBlowerPort on some interface, it is ‘using’ that interface. The interface is no longer used when all all ports created by that server on it are destroyed. Ports can be destroyed in the following ways:

  • Explicitly, by calling PortRemove on the ByteBlowerServer
  • By destroying the ByteBlowerServer for that port. This is also what happens when a GUI finishes or cancels a scenario.
  • By destroying that client instances root ByteBlower object. This is also what happens when a client process (GUI or API) is killed.
Returns:A list of name value pairs, one for each physical ByteBlower interface with one or more ports configured on it. The name is the string representation of the interface, the value is a list of the server connections (represented by their client’s hostname) which have created ports on that interface.

Example

Assume three client instances are currently connected to this server. The first runs on John’s PC, the second runs on Jane’s PC and the last one is a second client instance connecting John’s PC. Note the non-trunking interface is used by multiple client instances!

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.UsersGet()
exception byteblowerll.byteblower.ByteBlowerServerIncompatible(*args)

Bases: byteblowerll.byteblower.DomainError

class byteblowerll.byteblower.ByteBlowerServerList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.ByteBlowerServerServiceInfo(*args, **kwargs)

Bases: byteblowerll.byteblower.ServiceInfo

New in version 2.6.0.

ConnectionHostGet()

Returns the host (either registered name or IP address) used to connect to the ByteBlower server.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
ConnectionIPAddressGet()

Returns the IP address used to connect to the ByteBlower server.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
# :return: TODO
ConnectionPortNumberGet()

Returns the TCP port number of the connected ByteBlower server.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
LicenseGet()

Returns the License information for this ByteBlower server.

New in version 2.6.0.

Deprecated since version 2.10.

Each physical ByteBlower server (represented by this type of object) has a specific ByteBlower License.

Returns:ByteBlowerLicense
ManagementIPAddressGet()

Returns all management IP addresses of the connected ByteBlower server.

New in version 2.6.0.

Returns:List of management IP addresses

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
exception byteblowerll.byteblower.ByteBlowerServerUnreachable(*args)

Bases: byteblowerll.byteblower.DomainError

byteblowerll.byteblower.ByteBlower_InstanceGet()

Creates or returns the ByteBlower API singleton instance.

This object is the entry point to start working with the ByteBlower Tcl API.

If no ByteBlower instance is created yet, this method creates one and returns the object. If the instance exists already, it is simply returned. Any other static call will implicitly instantiate this singleton object.

Returns:ByteBlower singleton instance.

Example

# TODO!
class byteblowerll.byteblower.CHAPProtocol(*args, **kwargs)

Bases: byteblowerll.byteblower.PPPAuthProtocol

Represents the Challenge-Handshake Authentication Protocol

PPP defines an extensible Link Control Protocol, which allows negotiation of an Authentication Protocol for authenticating its peer before allowing Network Layer protocols to transmit over the link.

This class provides the Password Authentication protocol as described per :rfc:1334, section 3

The Challenge-Handshake Authentication Protocol (CHAP) is used to periodically verify the identity of the peer using a 3-way handshake. This is done upon initial link establishment, and MAY be repeated anytime after the link has been established.

After the Link Establishment phase is complete, the authenticator sends a “challenge” message to the peer. The peer responds with a value calculated using a “one-way hash” function. The authenticator checks the response against its own calculation of the expected hash value. If the values match, the authentication is acknowledged, otherwise the connection SHOULD be terminated.

CHAP provides protection against playback attack through the use of an incrementally changing identifier and a variable challenge value. The use of repeated challenges is intended to limit the time of exposure to any single attack. The authenticator is in control of the frequency and timing of the challenges.

This authentication method depends upon a “secret” known only to the authenticator and that peer. The secret is not sent over the link. This method is most likely used where the same secret is easily accessed from both ends of the link.

By default, authentication is not mandatory. If authentication of the link is desired, an implementation MUST specify the Authentication-Protocol Configuration Option during Link Establishment phase.

New in version 2.5.0.

GetPPPProtocol(*args)
SecretGet()

Returns the configured Secret.

Returns:Secret value
# TODO
SecretSet(secret)

Configures the Secret on the Challenge Handshake Authentication Protocol (CHAP)

Parameters:secret – The secret for authenticating to the PPP server.
# TODO
class byteblowerll.byteblower.CHAPProtocolList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.Capability(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Represents a capability, A feature it supports or not.

Using this class, you can check if e.g. a WirelessEndpoint supports latency measurements or not

Available Capabilities: - TODO - TODO

Example

TODO

CapabilityDescriptionGet()

Returns a human-readable description of the capability.

Returns:A human readable description
Return type:str

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
Finalize()
Initialize()
NameGet()

Returns a human-readable name of the capability.

Returns:The human readable name of the capability.
Rtype str:

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
ValueGet()

Returns a CapabilityValue object.

Returns:the value of the capability
Return type:CapabilityValue

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
VersionAddedGet()

Returns the ByteBlower Server/ByteBlower MeetingPoint version since when this capability is added.

Returns:The server/meetingpoint version the capability was added
Return type:string

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.CapabilityList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.CapabilityValue(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

The Capability Value class.

A capability ( Capability ) can have a different type of value (INTEGER, BOOLEAN, STRING). Using TypeGet() you can discover the value-type and then use the corresponding getter to get the real value

BooleanGet()

Returns the value as a boolean.

Returns:The value of the capability as a boolean (if possible)
Return type:bool

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
IntegerGet()

Returns the value as an integer.

Returns:The value of the capability as an integer
Return type:int

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
StringGet()

Returns the value as a string.

Returns:The capability value as a string
Return type:str

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
TypeGet()

Returns the type of value.

Returns:The type of the value
Return type:TODO

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
Type_BOOLEAN = 0
Type_INTEGER = 1
Type_STRING = 2
class byteblowerll.byteblower.Capture(*args, **kwargs)

Bases: byteblowerll.byteblower.Rx

FileNameRemoteGet()
ResultGet()
Start()
Stop()
class byteblowerll.byteblower.CaptureRawPacket(*args, **kwargs)

Bases: byteblowerll.byteblower.Capture

This class is used to capture the raw packet data that is received on the Physical interface that is associated with a ByteBlowerPort.

With an CaptureRawpacket you can capture the data that is received by the ByteBlower Port and save this to a pcap file on your pc. You can also apply a filter (BPF-style) to only capture the packets of your interest.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
FileNameRemoteGet()
FilterGet()

Returns the current installed BPF filter string.

The filter string can be configured using FilterSet()

Returns:The current BPF filter string

Example

Suppose we configured the trigger with filter string: where ipv4_1 and ipv4_2 are IPv4Configuration objects and frameSize is the (layer2) size of the frames (without CRC!). The BPF filter string would then become for example:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
FilterSet(inFilter)

Sets a BPF filter on a RX object.

Note

Configuring a new filter string does not reset the counter values which were triggered by a previous filter string.

Parameters:bpfString – Valid BPF filter string. For creating valid BPF filter strings, please have a look at http://www.tcpdump.org/#documentation for more information.
Raises:ByteBlower.Rx.Filter.CompilationFailed - When an invalid BPF filter string is given.
Raises:ByteBlower.InvalidFilter - When an invalid BPF filter string is given.

Example

This will filter only UDP traffic. 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!)
from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
ResultGet()

Returns the capture result.

Returns:CaptureResultSnapshot

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
Start()

Start capturing.

Note

Calling Start while already running does not throw an exception.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
Stop()

Stop capturing.

Note

Calling Stop while not running does not throw an exception.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.CaptureRawPacketList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.CaptureResultSnapshot(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractRefreshableResult

This class represents the result of a CaptureRawpacket.

It contains the metrics and the frames that are captured. To get an update of the values use ::Refresh.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
ByteCountGet()

Returns the number of bytes captured.

Returns:The number of bytes captured

Example

This example returns the number of bytes captured

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
CaptureDurationGet()

Returns the duration of the capture.

Returns:The duration of the capture in nanoseconds

Example

This example returns the duration of the capture

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO -
Clear()

Clears the counters and deletes the captured packets from the capture.

Example

This example returns the captured frames

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
ErrorCountGet()

Returns Error count.

Returns:Returns the number of packets with incorrect CRC

Example

This example returns the number of corrupt frames

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
FramesGet()

Returns a list of CapturedFrameList.

Returns:CapturedFrameList

Example

This example returns the captured frames

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
FramesGetByIndex(index)

Returns a Rx.Capture.Frame at the provided index.

Returns:a CapturedFrame

Example

This example returns the captured frame given by the index

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
PacketCountGet()

Returns the number of packets captured.

Returns:The number of packets this capture captured

Example

This example returns the number of packets captured

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
PcapLastFileNameGet()

The fileName where the last pcap was saved to.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
PcapNanoSave(filename)

Stores the captured frames into a pcap file.

The stored capture file can be opened by e.g. wireshark.

Param:
  • Destination filename for the capture file.
Raises:

<python_error> - No pcap support found: When the pcap library is not installed on the ByteBlower client PC.

Raises:

ByteBlower.Rx.Capture.GetFailed - When no results are available or when an exception occurred while obtaining the results.

Raises:

ByteBlower.Rx.Capture.GetFramesFailed - Invalid captured packet offset.

Example

Stores all packets captured by filter to c:pcap which is in PcapNano format

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
PcapSave(filename)

Stores the captured frames into a pcap file.

The stored capture file can be opened by e.g. wireshark.

Parameters:fileName
  • Destination filename for the capture file.
Raises:<python_error> - No pcap support found: When the pcap library is not installed on the ByteBlower client PC.
Raises:ByteBlower.Rx.Capture.GetFailed - When no results are available or when an exception occurred while obtaining the results.
Raises:ByteBlower.Rx.Capture.GetFramesFailed - Invalid captured packet offset.

Example

Stores all packets captured by filter to c:pcap

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
RefreshTimestampGet()

Returns the timestamp when the counters of this object where last refreshed.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
StateNameGet()

Returns the status of the current capture.

Returns:Returns current state of this capture.

Possible values are: - unknown - unavailable - inactive - active}

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.CapturedFrame(inAbstractObject, inTimestamp, bytes)

Bases: byteblowerll.byteblower.AbstractObject

A representation of a Captured Frame captured using a CaptureRawPacket.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
BufferGet()
BytesGet()

Gets the bytes in HEX format of this CapturedFrame.

Returns:hex representation of the content of the captured frame

Example

This example gets the bytes in HEX

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
LengthGet()

Gets the packet length of this CapturedFrame. This is the length without CRC.

Returns:Lenght of the packet without CRC

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
TimestampGet()

Gets timestamp [NS] of this CapturedFrame.

Returns:Timestamp in nanoseconds

Example

This example gets the timestamp of the captured frame

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
server.PortCreate('trunk-1-1')
# TODO
class byteblowerll.byteblower.CapturedFrameList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.CapturedHTTPData(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

This class represents captured HTTP data.

The HTTP data is a local snapshot of the HTTP data received in a HTTP session at the ByteBlower Server.

HTTP data capture is currently supported on HTTP Client objects.

HttpBytesGet()

Returns the captured HTTP data.

The data includes both HTTP header and payload.

Note

This only outputs the local cached HTTP data. The local cached HTTP data is a snapshot of the HTTP data received at the ByteBlower server. If no local snapshot was available yet, an initial one will be obtained from the server. You may want to synchronize the local cached data using the Refresh() method.

Returns:Captured HTTP data as string.
Raises:ByteBlower.Protocol.NotSupported - When the ByteBlower Server does not support HTTP Client captures

Example

Suppose we sent a HTTP GET request for an ‘index.html’ test page

bb = ByteBlower.InstanceGet()
server = ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HTTP/1.1 200 OK
Date: Wed, 12 Feb 2014 13:23:32 GMT
Server: Apache/2.2.22 (Debian)
Last-Modified: Thu, 10 Feb 2011 11:32:16 GMT
ETag: "27c083-b1-49bebeefcb000"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html
X-Pad: avoid browser bug
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added,
yet.</p>
</body></html>
HttpBytesSave(inFileName)

Saves the captured HTTP data to file.

Note

This only outputs the local cached HTTP data. The local cached HTTP data is a snapshot of the HTTP data received at the ByteBlower server. If no local snapshot was available yet, an initial one will be obtained from the server. You may want to synchronize the local cached data using the Refresh() method.

Parameters:fileName – Destination filename for the captured HTTP data.
Raises:ByteBlower.Protocol.NotSupported - When the ByteBlower Server does not support HTTP Client captures

Example

Stores all HTTP data captured to c:.txt

bb = ByteBlower.InstanceGet()
server = ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HttpSizeGet()

Returns the number of captured bytes of HTTP data.

The value includes the size of both HTTP header and payload.

Note

This only outputs the local cached HTTP data. The local cached HTTP data is a snapshot of the HTTP data received at the ByteBlower server. If no local snapshot was available yet, an initial one will be obtained from the server. You may want to synchronize the local cached data using the ::Refresh method.

Returns:Size of captured HTTP data in Bytes.
Raises:ByteBlower.Protocol.NotSupported - When the ByteBlower Server does not support HTTP Client captures

Example

Suppose we sent a HTTP GET request for an index.html test page

bb = ByteBlower.InstanceGet()
server = ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
exception byteblowerll.byteblower.ConfigError(*args)

Bases: byteblowerll.byteblower.DomainError

exception byteblowerll.byteblower.DHCPFailed(*args)

Bases: byteblowerll.byteblower.InitializationError

class byteblowerll.byteblower.DHCPv4Protocol(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

The DHCPv4Protocol is the entry point to configure the DHCP client behavior of a ByteBlowerPort.

A ByteBlowerPort can perform DHCP the get an IP address, gateway and netmask. Currently, no other options are supported but this will change in the future.

Users can configure the timing parameters used in the different stages of the DHCP protocol: - Discover

During the discover stage the ByteBlower port will broadcast discover messages.
  • Request

    Once one or more offers are received the ByteBlower port will broadcast its request message. If acknowledge the ByteBlower port will start using this address.

  • Renew

    When half of the lease time received in the acknowledge message of the request has passed, a ByteBlowerPort will sent a renew message to the server to extend its lease.

Although DHCP allows clients to use unicast messages in the Request stage, ByteBlower currently only supports broadcast messages in this stage.

A DHCPv4Protocol object also supports different retransmission strategies:

Fixed
This policy will use the same timeout value for each timeout.
RFCSuggested
This policy implements the policy described in :rfc:2131.
DHCPv4SessionInfoGet()

Returns the sessionInfo object for this DHCP Session.

This object contains all the DHCP sessionInfo like Tx,Rx, current leaseTime, giaddr etc…

Returns:DHCPv4SessionInfo

Example

This example will return the DHCPv4SessionInfo object for this DHCP session.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
DiscoverInitialTimeoutGet()

Returns the current <InitialTimeout> for the DHCP discover stage.

During the Discover stage, one ore more discover messages will be sent by the DHCP client to get an offer message from one or more DHCP servers. The <InitialTimeout> is the timeout used to decide if the discover message must be retransmitted or not. The next timeout value will be calculated using the configured retransmission policy.

Returns:Current ‘<InitialTimeout> value for the discover stage. The unit is nanosecond (ns).

Example

This example will get the current <InitialTimeout> for the discover stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
DiscoverInitialTimeoutSet(inValue)

Sets the <InitialTimeout> for the DHCP discover stage.

During the Discover stage, one ore more discover messages will be sent by the DHCP client to get an offer message from one or more DHCP servers. The <InitialTimeout> is the timeout used to decide if the discover message must be retransmitted or not. The next timeout value will be calculated using the configured retransmission policy.

Parameters:InitialTimeout – New value for the initial timeout. The unit is in nanosecond (ns), but the unit

Example

This example will set the <InitialTimeout> for the discover stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
DiscoverMaxRetriesGet()

Returns the current maximum retries for the DHCP discover stage.

During the Discover stage, one ore more discover messages will be sent by the DHCP client to get an offer message from one or more DHCP servers. The maximum number of times the DHCP client will retransmit the discover message is returned by this method.

Returns:Current value for the number of retries in the discover stage.

Example

This example will get the current maximum number of retries for the discover stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
DiscoverMaxRetriesSet(inValue)

Sets the maximum retries for the DHCP discover stage.

During the Discover stage, one ore more discover messages will be sent by the DHCP client to get an offer message from one or more DHCP servers. The maximum number of times the DHCP client will retransmit the discover message is configured by this method.

Parameters:maxRetries – The new value for the maximum number of retransmission of the discover message.

Example

This example will set the maximum number of retries for the discover stage to 3 times.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
Perform()

Start DHCP and wait for the result.

This method will force the DHCP client on the ByteBlower port to send a first DHCP discover message. It the client is already active, a new discover message will be sent. This is a synchronous call, so the full DHCPv6 solicit and request will be done once this call returns, or an error have occurred.

Returns:This method will return nothing, but will return after DHCP is performed successfully. If DHCP fails, and exception is thrown.
Raises:DHCPFailed when no offer was received during the DHCP discover stage or when no DHCPAck was received during DHCPRequest stage

Example

This example will perform DHCP on the specified ByteBlowerPort.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
PerformAsync()

Will start DHCP and return immediately.

This method will force the DHCP client on the ByteBlower port to send a first DHCP discover message. If the client is already active, a new discover message will be sent. This is a asynchronous call, so it will return immediately. If you want to see if there an exception occurred during this async, call the Perform() method.

Returns:This method will return nothing and return immediately

New in version 2.2.

Example

This example will perform DHCP on the specified ByteBlowerPort.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
Release()

Release the DHCP lease.

This method will release the address previously received using DHCP. After this, the address will not be used anymore by the ByteBlower port and the DHCP server can reuse the address for other DHCP clients. Of course, packets sent by the ByteBlower port as part of streams can still use the address.

Returns:This method will return nothing, but will return after DHCP Release is performed

Example

This example will release the DHCP address.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ReleaseEnable(inValue)

Enable/disable sending DHCP release during destruction.

When a ByteBlowerPort is destructed and this port has performed DHCP, such a port should release its address. If this behavior is prefered, then this should be done by using the Release.Enable method to indicate the ByteBlowerPort should release its address if possible. A ByteBlowerPort is able to release its address at destruction time if the destination mac address is in the ByteBlowerPort’s ARP cache. If not, the DHCP release messages will not be sent out, because it could delay the whole cleanup.

If you want to force the release of an address received through DHCP, use Release().

Parameters:enable – Boolean to enable or disable the release of the address at the end of the test. Default: `True`

Example

This example will disable the automatic release of the DHCP address at the end of the test.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ReleaseIsEnabled()

Return whether sending DHCP release during destruction is enabled.

When a ByteBlowerPort is destructed and this port has performed DHCP, it should release its address. If this behavior is prefered, then this should be done by using the ReleaseEnable() method to inidicate the ByteBlowerPort should release its address if possible. A ByteBlowerPort is able to release its address at destruction time if the destination mac address is in the ByteBlowerPort’s ARP cache. If not, the DHCP release messages will not be sent out, because it could delay the whole cleanup.

If you want to force the release of an address received through DHCP, use Release().

Returns:If the port will release its IP at destruction

Example

This example will disable the automatic release of the DHCP address at the end of the test.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestInitialTimeoutGet()

Returns the current <InitialTimeout> for the DHCP request stage.

During the Request stage, one ore more request messages will be sent by the DHCP client to get an ack message from the DHCP server. The <InitialTimeout> is the timeout used to decide if the request message must be retransmitted or not. The next timeout value will be calculated using the configured retransmission policy.

Returns:Current <InitialTimeout> value for the request stage. The unit is nanosecond (ns).

Example

This example will get the current <InitialTimeout> for the request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestInitialTimeoutSet(inTime)

Sets the <InitialTimeout> for the DHCP request stage.

During the Request stage, one ore more request messages will be sent by the DHCP client to get an ack message from the DHCP server. The <InitialTimeout> is the timeout used to decide if the request message must be retransmitted or not. The next timeout value will be calculated using the configured retransmission policy.

Parameters:InitialTimeout – New value for the initial timeout. The unit is in nanosecond (ns).

Example

This example will set the <InitialTimeout> for the request stage.

RequestMaxRetriesGet()

Returns the current maximum retries for the DHCP Request stage.

During the Request stage, one ore more request messages will be sent by the DHCP client to get an ack message from the DHCP server. The maximum number of times the DHCP client will retransmit the request message is returned by this method.

Returns:Current value for the number of retries in the request stage.

Example

This example will get the current maximum number of retries for the request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestMaxRetriesSet(inValue)

Sets the maximum retries for the DHCP Request stage.

During the Request stage, one ore more request messages will be sent by the DHCP client to get an ack message from the DHCP server. The maximum number of times the DHCP client will retransmit the request message is configured by this method.

Parameters:maxRetries – The new value for the maximum number of retransmissions of the request message.

Default value is 5 times

Example

This example will set the current maximum number of retries for the request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RetransmissionPolicyGet()

Deprecated since version TODO: This method has been renamed, use RetransmissionPolicyStringGet() now.

RetransmissionPolicySet(policy)

Deprecated since version TODO: This method has been renamed, use RetransmissionPolicy.Set.FromString now.

class byteblowerll.byteblower.DHCPv4SessionInfo(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Class containing the info about the DHCPSession.

This class represents the session info gathered from a DHCPSession. It will contain counters of the amount of DHCPMessages transmitted and received. It also contains some values of the obtained lease ( leasetime, GiAddr, SiAddr, OptionValues )

DHCPOptionGet()
DHCPServerAddrGet()

Returns the ipAddress of the DHCPServer.

This address is parsed out of DHCPServerIdentifier option ( Option 54 )

Returns:Number of DHCPMessages transmitted

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
GiAddrGet()

Returns the ipAddress of the relay agent, used in booting via a relay agent.

Returns:Relay agent IpAddress

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
LeaseTimeGet()

Returns IP Address lease time.

Returns:The leasetime in NanoSeconds

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RefreshTimestampGet()

Returns the timestamp when the counters of this object where last refreshed.

Returns:RefreshTimestamp in nanoseconds

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RxGet()

Returns the number of DHCPMessages recieved.

Returns:Number of DHCPMessages received

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SiAddrGet()

Returns the ipAddress of next server to use in bootstrap.

Returns:next server IpAddress

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
TransactionIDGet()
TxGet()

Returns the number of DHCPMessages transmitted.

Returns:Number of DHCPMessages transmitted

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.DHCPv6Protocol(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

The DHCPv6Protocol is the entry point to configure the DHCPv6 client
behavior of a ByteBlowerPort.

A ByteBlowerPort can perform DHCPv6 for configuring IP addresses, IP prefixes and/or other parameters required to operate on an IPv6 network.

A ByteBlowerPort can acquire and combine IP addresses using stateless address autoconfiguration, or by using DHCPv6 or static configuration. DHCP tends to be preferred at sites where central management of hosts is valued; stateless autoconfiguration does not require any sort of central management, and is therefore preferable in networks where no management is readily available, such as a typical home network.

IPv6 hosts that use stateless autoconfiguration may require information other than an IP address. DHCPv6 can be used to acquire this information, even though it is not being used to configure IP addresses.

DHCPv6 can also be used to deligate prefix information to e.g. home gateways. Such gateways require not only an IPv6 address for use in communicating with upstream routers, but also an IPv6 prefix for use in configuring devices on the downstream side of the router. DHCPv6 Prefix delegation provides a mechanism for configuring such routers. ByteBlower currently doesn’t support prefix delegation yet, but can only be used as a host.

ByteBlower allows full control of the timing parameters of the DHCPv6 client side. The retransmission policy used for DHCPv6 is the one suggested in the rfc:3315.

Configurable timing parameters are:

  • Initial Timeout
  • Maximum Duration
  • Maximum Retries
  • Maximum Timeout

These timing parameters can be applied to the following stages of DHCPv6:

  • Solicit
  • Request
  • Renew
  • Inform
  • Confirm
For each state the parameters do the following:
ByteBlower will send up to <MaxRetries> messages. The total duration of the the state may take up the <MaxDuration>. For the first attempt, a ByteBlowerPort will wait up to <InitialTimeout> nanoseconds before retrying. Each attempt will wait for maximum ‘<MaxTimeout> nanoseconds before concluding that the messages has timed out.
ConfirmInitialTimeoutGet()

Getter for <InitialTimeout> when in the Confirm state.

Returns:Current value for <InitialTimeout> for stage Confirm. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <InitialTimeout> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ConfirmInitialTimeoutSet(arg2)

Setter for <InitialTimeout> when in the Confirm state.

Parameters:value – New value for <InitialTimeout> for stage Confirm. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <InitialTimeout> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ConfirmMaxDurationGet()

Getter for <MaxDuration> when in the Confirm state.

Returns:Current value for <MaxDuration> for stage Confirm. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxDuration> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ConfirmMaxDurationSet(arg2)

Setter for <MaxDuration> when in the Confirm state.

Parameters:value – New value for <MaxDuration> for stage Confirm. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <MaxDuration> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ConfirmMaxRetriesGet()

Getter for <MaxRetries> when in the Confirm state.

Returns:Current value for <MaxRetries> for stage Confirm. This is a positive integer value, indicating the number of times the ByteBlowerPort will resend its Confirm message.

Example

This example demonstrates how to get the value for <MaxRetries> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ConfirmMaxRetriesSet(arg2)

Setter for <MaxRetries> when in the Confirm state.

Parameters:value – New value for <MaxRetries> for stage Confirm. This must be a positive integer value, indicating the number of times the ByteBlowerPort will resend its Confirmmessage.

Example This example demonstrates how to set the value for <MaxRetries> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ConfirmMaxTimeoutGet()

Getter for <MaxTimeout> when in the Confirm state.

Returns:Current value for <MaxTimeout> for stage Confirm. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxTimeout> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ConfirmMaxTimeoutSet(arg2)

Setter for <MaxTimeout> when in the Confirm state.

Parameters:value – New value for <MaxTimeout> for stage Confirm. This is a time value, in nanosecond inits.

Example

This example demonstrates how to set the value for <MaxTimeout> in the Confirm stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
DHCPv6SessionInfoGet()

Returns the sessionInfo object for this DHCP Session.

This object contains all the DHCP sessionInfo like Tx,Rx

Returns:The DHCPv6SessionInfo object for this DHCP session

Example

This example will return the DHCPv6SessionInfo object for this DHCP session.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
InformInitialTimeoutGet()

Getter for <InitialTimeout> when in the Inform state.

Returns:Current value for <InitialTimeout> for stage Inform. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <InitialTimeout> in the Inform stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
InformInitialTimeoutSet(arg2)

Setter for <InitialTimeout> when in the Inform state.

Parameters:value – New value for <InitialTimeout> for stage Inform. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <InitialTimeout> in the Inform stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
InformMaxDurationGet()

Getter for <MaxDuration> when in the Inform state.

Returns:Current value for <MaxDuration> for stage Inform. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxDuration> in the Inform stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
InformMaxDurationSet(arg2)

Setter for <MaxDuration> when in the Inform state.

Parameters:value – New value for <MaxDuration> for stage Inform. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <MaxDuration> in the Inform stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
InformMaxRetriesGet()

Getter for <MaxRetries> when in the Inform state.

Returns:Current value for <MaxRetries> for stage Inform. This is a positive integer value, indicating the number of times the ByteBlowerPort will resend its Inform message.

Example

This example demonstrates how to get the value for <MaxRetries> in the Inform stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
InformMaxRetriesSet(arg2)

Setter for <MaxRetries> when in the Inform state.

Parameters:value – New value for <MaxRetries> for stage Inform. This must be a positive integer value, indicating the number of times the ByteBlowerPort will resend its Inform message.

Example

This example demonstrates how to set the value for <MaxRetries> in the Inform stage.

InformMaxTimeoutGet()

Getter for <MaxTimeout> when in the Inform state.

Returns:Current value for <MaxTimeout> for stage Inform. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxTimeout> in the Inform stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
InformMaxTimeoutSet(arg2)

Setter for <MaxTimeout> when in the Inform state.

Parameters:value – New value for <MaxTimeout> for stage Inform. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <MaxTimeout> in the Inform stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
Perform()

This method will bootstrap the DHCPv6 process.

The client will start with sending DHCPv6 solicit messages. This is a synchronous call, so the full DHCPv6 solicit and request will be done once this call returns, or an error have occurred.

Returns:This method will return nothing, but will return after DHCP is performed successfully. If DHCP fails, and exception is thrown.
Raises:DHCPFailed Thrown if no offer was received during the DHCP solicit stage or no DHCPReply during DHCPRequest stage

Example

This example will start the DHCPv6 process.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
PerformAsync()

This method will bootstrap the DHCPv6 process.

The client will start with sending DHCPv6 solicit messages. This is a asynchronous call, so it will return immediately. If you want to see if there an exception occured during this async, call the perform method.

Returns:This method will return nothing and return immediately

New in version 2.2.

Example

This example will start the DHCPv6 process.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
Release()

Release the address previously received using DHCPv6

This method will release the address previously received using DHCP. After this, the address will not be used anymore by the ByteBlower port and the DHCP server can reuse the address for other DHCP clients. Offcourse, packets sent by the ByteBlower port as part of streams can still use the address.

Returns:This method will return nothing, but will return after DHCP Release is performed

Example

This example will release the DHCP address.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ReleaseEnable(inValue)

Enable automatical release when the ByteBlower port is destroyed

When a ByteBlowerPort is destructed and this port has performed DHCP, such a port should release its address. If this behavior is prefered, then this should be done by using the ReleaseEnable() method to inidicate the ByteBlowerPort should release its address if possible. A ByteBlowerPort is able to release its address at destruction time if the destination mac address is in the ByteBlowerPort’s ARP cache. If not, the DHCP release messages will not be sent out, because it could delay the whole cleanup.

If you want to force the release of an address received through DHCP, use Release().

Parameters:enable – bool True to enable the automatic release of the address Default: `true`

Example

This example will disable the automatic release of the DHCP address at the end of the test.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
ReleaseIsEnabled()

Returns True when automatic release is enabled

When a ByteBlowerPort is destructed and this port has performed DHCP, it should release its address. If this behavior is prefered, then this should be done by using the Release.Enable method to inidicate the ByteBlowerPort should release its address if possible. A ByteBlowerPort is able to release its address at destruction time if the destination mac address is in the ByteBlowerPort’s ARP cache. If not, the DHCP release messages will not be sent out, because it could delay the whole cleanup.

If you want to force the release of an address received through DHCP, use Release()

Returns:If the port will release its IP at destruction

Example

This example will disable the automatic release of the DHCP address at the end of the test.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewInitialTimeoutGet()

Getter for <InitialTimeout> when in the Renew state.

Returns:Current value for <InitialTimeout> for stage Renew. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <InitialTimeout> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewInitialTimeoutSet(arg2)

Setter for <InitialTimeout> when in the Renew state.

Parameters:value – New value for <InitialTimeout> for stage Renew. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <InitialTimeout> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewMaxDurationGet()

Getter for <MaxDuration> when in the Renew state.

Returns:Current value for <MaxDuration> for stage Renew. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxDuration> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewMaxDurationSet(arg2)

Setter for <MaxDuration> when in the Renew state.

Parameters:value – New value for <MaxDuration> for stage Renew. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <MaxDuration> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewMaxRetriesGet()

Getter for <MaxRetries> when in the Renew state.

Returns:Current value for <MaxRetries> for stage Renew. This is a positive integer value, indicating the number of times the ByteBlowerPort will resend its Renew message.

Example

This example demonstrates how to get the value for <MaxRetries> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewMaxRetriesSet(arg2)

Setter for <MaxRetries> when in the Renew state.

Parameters:value – New value for <MaxRetries> for stage Renew. This must be a positive integer value, indicating the number of times the ByteBlowerPort will resend its Renew message.

Example

This example demonstrates how to set the value for <MaxRetries> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewMaxTimeoutGet()

Getter for <MaxTimeout> when in the Renew state.

Returns:Current value for <MaxTimeout> for stage Renew. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxTimeout> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RenewMaxTimeoutSet(arg2)

Setter for <MaxTimeout> when in the Renew state.

Parameters:value – New value for <MaxTimeout> for stage Renew. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <MaxTimeout> in the Renew stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestInitialTimeoutGet()

Getter for <InitialTimeout> when in the Request state.

Returns:Current value for <InitialTimeout> for stage Request. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <InitialTimeout> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestInitialTimeoutSet(arg2)

Setter for <InitialTimeout> when in the Request state.

Parameters:value – New value for <InitialTimeout> for stage Request. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <InitialTimeout> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestMaxDurationGet()

Getter for <MaxDuration> when in the Request state.

Returns:Current value for <MaxDuration> for stage Request. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxDuration> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestMaxDurationSet(arg2)

Setter for <MaxDuration> when in the Request state.

Parameters:value – New value for <MaxDuration> for stage Request. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <MaxDuration> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestMaxRetriesGet()

Getter for <MaxRetries> when in the Request state.

Returns:Current value for <MaxRetries> for stage Request. This is a positive integer value, indicating the number of times the ByteBlowerPort will resend its Request message.

Example

This example demonstrates how to get the value for <MaxRetries> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestMaxRetriesSet(arg2)

Setter for <MaxRetries> when in the Request state.

Parameters:value – New value for <MaxRetries> for stage Request. This must be a positive integer value, indicating the number of times the ByteBlowerPort will resend its Request message.

Example

This example demonstrates how to set the value for <MaxRetries> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestMaxTimeoutGet()

Getter for <MaxTimeout> when in the Request state.

Returns:Current value for <MaxTimeout> for stage Request. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxTimeout> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestMaxTimeoutSet(arg2)

Setter for <MaxTimeout> when in the Request state.

Parameters:value – New value for <MaxTimeout> for stage Request. This is a time value, in nanosecond units

Example

This example demonstrates how to set the value for <MaxTimeout> in the Request stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
RetransmissionPolicyGet()
RetransmissionPolicySet(policy)
SolicitInitialTimeoutGet()

Getter for <InitialTimeout> when in the Solicit state.

Returns:Current value for <InitialTimeout> for stage Solicit. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <InitialTimeout> in the Solicit stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SolicitInitialTimeoutSet(arg2)

Setter for <InitialTimeout> when in the Solicit state.

Parameters:value – New value for <InitialTimeout> for stage Solicit. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <InitialTimeout> in the Solicit stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SolicitMaxDurationGet()

Getter for <MaxDuration> when in the Solicit state.

Returns:Current value for <MaxDuration> for stage Solicit. This is a time value, in nanosecond units.

Example

This example demonstrates how to get the value for <MaxDuration> in the Solicit stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SolicitMaxDurationSet(arg2)

Setter for <MaxDuration> when in the Solicit state.

Parameters:value – New value for <MaxDuration> for stage Solicit. This is a time value, in nanosecond units.

Example This example demonstrates how to set the value for <MaxDuration> in the Solicit stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SolicitMaxRetriesGet()

Getter for <MaxRetries> when in the Solicit state.

Returns:Current value for <MaxRetries> for stage Solicit. This is a positive integer value, indicating the number of times the ByteBlowerPort will resend its Solicit message.

Example

This example demonstrates how to get the value for <MaxRetries> in the Solicit stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SolicitMaxRetriesSet(arg2)

Setter for <MaxRetries> when in the Solicit state.

Parameters:value – New value for <MaxRetries> for stage Solicit. This must be a positive integer value, indicating the number of times the ByteBlowerPort will resend its Solicit message.

Example

This example demonstrates how to set the value for <MaxRetries> in the Solicit stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SolicitMaxTimeoutGet()

Getter for <MaxTimeout> when in the Solicit state.

Returns:Current value for <MaxTimeout> for stage Solicit. This is a time value, in nanosecond units.

Example This example demonstrates how to get the value for <MaxTimeout> in the Solicit stage.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
SolicitMaxTimeoutSet(arg2)

Setter for <MaxTimeout> when in the Solicit state.

Parameters:value – New value for <MaxTimeout> for stage Solicit. This is a time value, in nanosecond units.

Example

This example demonstrates how to set the value for <MaxTimeout> in the Solicit stage.

class byteblowerll.byteblower.DHCPv6SessionInfo(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Class containing the info about the DHCPSession.

This class represents the session info gathered from a DHCPv6Session. It will contain counters of the amount of DHCPMesseage transmitted and received.

RefreshTimestampGet()

TODO

RxGet()

Returns the number of DHCPMessages recieved.

Returns:Number of DHCPMessages received

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
TxGet()

Returns the number of DHCPMessages transmitted.

Returns:Number of DHCPMessages transmitted

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.DataRate(inSize, inDuration)

Bases: object

BitRateGet()
ByteRateGet()
GbpsGet()
KbpsGet()
MbpsGet()
bitrate()
byterate()
toString()
class byteblowerll.byteblower.DataSize(bytes)

Bases: object

BytesGet()
GibiBytesGet()
KibiBytesGet()
MebiBytesGet()
toString()
class byteblowerll.byteblower.DeviceInfo(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Device information of the wireless endpoint.

Contains all usefull device information of a wireless endpoint like OS, Network, Battery etc…

New in version 2.6.0.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
BatteryLevelGet()

Returns the device’s battery level.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
GivenNameGet()

Returns the user-provided device name.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
NetworkInfoGet()

Return the networkInfoObject containing all the network information of the Wireless Endpoint.

Returns:NetworkInfo

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
OsTypeGet()

Returns the OS type.

Returns:DeviceOsType

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
OsVersionGet()

Returns the OS version.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
TypeGet()

Returns the type of device. I.e “iPad Air”, “iPhone 6S”, “Nexus 5x”, etc…

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.DeviceOsType

Bases: object

Android = 0

TODO

Linux = 3

TODO

OSx = 2

TODO

Unknown = 5

TODO

Windows = 4

TODO

iOS = 1

TODO

class byteblowerll.byteblower.DeviceStatus

Bases: object

Available = 1

Wireless endpoint is registered

Reserved = 2

Wireless endpoint is locked/used by (another) user

Running = 4

Wireless endpoint is currently running a test

Starting = 3

Wireless endpoint will start any second now with a test

Unavailable = 0

Wireless endpoint not available/registered

exception byteblowerll.byteblower.DomainError(*args)

Bases: byteblowerll.byteblower.ByteBlowerAPIException

class byteblowerll.byteblower.Duration(ns)

Bases: object

MicrosecondsGet()
MillisecondsGet()
NanosecondsGet()
SecondsGet()
toString()
class byteblowerll.byteblower.EthernetConfiguration(*args, **kwargs)

Bases: byteblowerll.byteblower.Layer2Configuration

EthernetII provides an interface for the Ethernet configuration on a ByteBlower port.

AddressGet()
AddressSet(inMacAddress)
static IsValidMacAddress()
MacGet()
MacSet(inMacAddress)
TypeGet()

Returns the layer 2 encoding scheme.

Returns:The layer 2 encoding scheme.

Example

This example returns the layer 2 encoding scheme.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
TypeSet(inEthernetEncoding)

Sets the layer 2 encoding scheme.

Parameters:encoding – Currently supported encodings are SNAP and DIX.

Example

This example sets the layer 2 encoding scheme.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.MeetingPointAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.EthernetEncoding

Bases: object

DIX = 1
SNAP = 0
class byteblowerll.byteblower.Frame(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Class: Frame

A ByteBlower Frame is an object representing a Frame which can be used in a Stream for transmission by a ByteBlower Port.

A Frame is used in stateless traffic testing. It will be sent by a ByteBlowerPort. For each Frame, different options can be enabled:

  1. Tagging
    • Sequence: Defines if a sequence number must be set. This is used for out-of-sequence detection.
    • Timestamping: Defines if the timestamp of transmission must be set in the frame. This is used for latency measurements.
  2. Checksumming
    • L3: IPv4/IPv6 automatic header checksumming.
    • L4: UDP/TCP automatic checksumming.
  3. Length field correction
    • L3: Automatic correction of the IPv4 length field. This is usefull when using a FrameSizeModifier.
    • L7: Automatic correction of the UDP/TCP length field. This is usefull when using a FrameSizeModifier.

Also the frame can be modified during the test using modifiers:

  1. Field
    • Incremental: A field in the frame will be incremented every time the frame is sent out. The field’s position and size is configurable.
    • Random: A field in the frame will be a random value every time the frame is sent out. The field’s position and size is configurable.
  2. Size
    • GrowingSize: The frame will grow between a minimum and a maximum value. When the maximum value is reached, the frame resizes to the given minimum.
    • RandomSize: The frame will have a different size every time it is sent out. The sizes will be random between a given minimum and maximum size.
BytesGet()

A method which returns the current content of a Frame in a hexadecimal format.

This method will return the current content of a Frame. A ByteBlower Frame is an Ethernet Frame, excluding the frame check sequence ( aka CRC ).

Note

The real content of a Frame can differ if Modifiers such as the FrameSizeModifier are applied on the Flow containing this Frame.

Returns:This method returns the content in a hexadecimal string. All bytes are concatenated into one string.

Example

The current content of a frame can be requested like this:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
BytesSet(frameString)

A method which sets the content of a Frame in a hexadecimal format.

This method will change the content of a Frame. A ByteBlower Frame is an Ethernet Frame excluding the four CRC bytes. The value can be in different formats, e.g.

  1. 0x01 0x02 0x03 0x04 0x05 …
  2. 0001020304050607
  3. 00 01 02 03 04 05 …

Note

You can call this method even during transmission of a flow, the value will be updated in real-time.

Raises:ByteBlower.Exception.ConfigError - when the value does contain non-hexadecimal characters or when the length is not even.
Parameters:bytes – Bytes can be of any of the formats mentioned above. The length must be at least 60 bytes
Raises:ConfigError when the frame is too small (<60 bytes) or when the frame is too big (>8192)

Example

Set the content for a frame
# Layer2 (without CRC) size.
frame_size = 1000  # bytes

# Add a frame
frame = stream.FrameAdd()

# create some payload, we need scapy for that

# frame_size is ethernet length, we substract the length of the
# ethernet, IP and UDP header
payload = 'a' * (frame_size - 42)

from scapy.layers.inet import Raw
scapy_udp_payload = Raw(payload.encode('ascii', 'strict'))

payload_array = bytearray(bytes(scapy_udp_payload))

# The API expects a 'str', so we need to make a string of the payload
payload_str = ''.join((format(b, '02x') for b in payload_array)

frame.BytesSet(payload_str)
FrameTagSequenceGet()

Returns the FrameTag.Tx object related to the sequence number injection for this frame.

Each frame can be enabled to have a sequence number inserted into the frame.

The FrameTagTx object which is returned by this method represents the current configuration of the SequenceTag injection. This object can be used to configure the SequenceTag injection.

Warning

On older ByteBlower servers, this requires a lot of resources, so this option must be used with care.

New in version 1.8.18.

Returns:FrameTagTx

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FrameTagTimeGet()

Returns the FrameTagTx object related to the timestamp injection for this frame.

Each frame can be enabled to have a timestamp inserted into the frame.

The FrameTagTx object which is returned by this method represents the current configuration of the TimeTag injection. This object can be used to configure the TimeTag injection.

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.

New in version 1.8.18.

Returns:FrameTagTx object for TimeTag injection of this frame.

Example

In this example, we will retrieve the FrameTagTx object for the TimeTag:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IsL3AutoChecksumEnabled()
IsL3AutoLengthEnabled()
IsL4AutoChecksumEnabled()
IsL4AutoLengthEnabled()
L3AutoChecksumEnable(value)

Enable or disable the automatic checksum calculation of the Layer3 header of this frame.

This method provides the possibility to automatically recalculate the Layer3 checksum. Currently, only IPv4 is supported ( IPv6 has no header checksum ). This calculation will be done at the server side, just before transmitting the frame.

By default, the Layer3 checksum will not be calculated automatically.

Warning

On the ByteBlower 1000 series, this feature requires a lot of resources.

Note

This features is especially handy when combining a frame with a modifier like the FrameSizeModifier or with a FrameTag. In such a situation, the length or content of the Frame will change each time the frame has been sent, so the checksum must be calculated at the server side.

Default value: Disabled

Raises:ByteBlower.Exception.InvalidValue - when the value is not True or False
Parameters:enable – bool: True will enable the automatic Layer3 checksum calculation. False will disable the automatic Layer3 checksum calculation.

Example

This example will enable the automatic Layer3 checksum calculation:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

This example will disable the automatic Layer3 checksum calculation:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
L3AutoChecksumGet()

Method returning the current configuration of the automatic checksum calculation option.

This method returns the current configuration of the automatic Layer3 checksum calculation.

See Frame.L3AutoChecksumEnable() on how to enable this feature.

Default value: Disabled

Returns:True if enabled, False if disabled.

Example

This examples shows the result when the Layer3 automatic checksum calculation option is enabled:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
L3AutoLengthEnable(value)

Enable or disable the automatic Layer3 header length field calculation of this frame.

This method provides the possibility to automatically recalculate the Layer3 length field. This calculation will be done at the server side, just before transmitting the frame.

Default value: Disabled

Warning

On the ByteBlower 1000 series, this feature requires a lot of resources.

Note

This features is especially handy when combining a frame with a modifier like the FrameSizeModifier. In such a situation, the length of the Frame can change each time the frame has been sent, so the length field must be adapted at the server side.

Raises:ByteBlower.Exception.InvalidValue - when the value is not true or false
Parameters:enable – bool: True will enable the automatic Layer3 length field adaption. False will disable the automatic Layer3 length field adaption.

Example

This example will enable the automatic Layer3 length field adaption: This example will disable the automatic Layer3 length field adaption:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
L3AutoLengthGet()

Method returning the current configuration of the automatic Layer3 length field adaption option.

This method returns the current configuration of the automatic Layer3 length field adaption.

See Frame.L3AutoLengthEnable() on how to enable this option.

Default value: Disabled

Returns:True if enabled, False if disabled.

Example

This examples shows the result when the automatic Layer3 length field adaption option is enabled:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
L4AutoChecksumEnable(value)

Enable or disable the automatic Layer4 checksum calculation of this frame.

This method provides the possibility to automatically recalculate the Layer4 (UDP or TCP) checksum. This calculation will be done at the server side, just before transmitting the frame.

Default value: Disabled

Warning

On the ByteBlower 1000 series, this feature requires a lot of resources.

Note

This features is especially handy when combining a frame with a modifier like the FrameSizeModifier or FrameTag. In such a situation, the length or content of the Frame can change each time the frame has been sent, so the checksum must be recalculated at the server side.

Raises:ByteBlower.Exception.InvalidValue - when the value is not true or false
Parameters:enable – bool: True will enable the automatic Layer4 checksum calculation. False will enable the automatic Layer4 checksum calculation.

Example

This example will enable the automatic Layer4 checksum calculation: This example will disable the automatic Layer3 checksum calculation:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
L4AutoChecksumGet()

Method returning the current configuration of the automatic Layer4 checksum recalculation option.

This method returns the current configuration of the automatic Layer4 checksum recalculation.

See Frame.L4AutoChecksumEnable() on how to enable this option.

Default value: Disabled

Returns:True if enabled, False if disabled.

Example

This examples shows the result when the automatic Layer4 checksum recalculation option is enabled:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
L4AutoLengthEnable(value)

Enable or disable the automatic Layer4 header length field calculation of this frame.

This method provides the possibility to automatically recalculate the Layer4 (UDP or TCP) length field. This calculation will be done at the server side, just before transmitting the frame.

Default value: Disabled

Warning

On the ByteBlower 1000 series, this feature requires a lot of resources.

Note

This features is especially handy when combining a frame with a modifier like the FrameSizeModifier. In such a situation, the length of the Frame can change each time the frame has been sent, so the length field must be adapted at the server side.

Raises:ByteBlower.Exception.InvalidValue - when the value is not true or false
Parameters:enable – bool: True will enable the automatic Layer4 length field adaption. False will enable the automatic Layer4 length field adaption.

Example

This example will enable the automatic Layer4 length field adaption:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

This example will disable the automatic Layer3 length field adaption:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
L4AutoLengthGet()

Method returning the current configuration of the automatic Layer4 length field adaption option.

This method returns the current configuration of the automatic Layer4 length field adaption.

See L4AutoLengthEnable() on how to enable this option.

Default value: Disabled

Returns:True if enabled, False if disabled.

Example

This examples shows the result when the automatic Layer4 length field adaption option is enabled:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierFieldIncrementalAdd()

Adds an incremental frame field modifier.

New in version 2.5.0.

Returns:FrameFieldModifierIncremental

Example

This example adds an incremental value frame field modifier.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierFieldIncrementalDestroy(inModifier)
ModifierFieldIncrementalGet()

Returns the active incremental frame field modifier(s).

New in version 2.5.0.

Returns:FrameFieldModifierIncremental

Example

This example retrieves the current applied field modifiers.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierFieldRandomAdd()

Adds a random frame field modifier.

New in version 2.5.0.

Returns:FrameFieldModifierRandom

Example

This example adds a random value frame field modifier.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierFieldRandomDestroy(inModifier)
ModifierFieldRandomGet()

Returns the active random frame field modifier(s).

New in version 2.5.0.

Returns:FrameFieldModifierRandom

Example

This example retrieves the current applied field modifiers.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierSizeGet()
ModifierSizeGrowingDestroy(arg2)
ModifierSizeGrowingGet()

Returns the active frame growing size modifier.

New in version 2.5.0.

Returns:FrameSizeModifierGrowing.

Example

This example gets the current applied growing size modifier

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierSizeGrowingSet()

Sets a growing frame size modifier.

New in version 2.5.0.

Returns:FrameSizeModifierGrowing

Example

This example sets a growing size frame modifier.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierSizeRandomDestroy(arg2)
ModifierSizeRandomGet()

Returns the active frame random size modifier.

New in version 2.5.0.

Returns:FrameSizeModifierRandom

Example

This example gets the current applied size modifier. E.g. the random

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ModifierSizeRandomSet()

Sets a random frame size modifier.

New in version 2.5.0.

Returns:FrameSizeModifierRandom

Example

This example sets a random size frame modifier.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ResultClear()

Resets the current transmit counters to zero.

New in version 2.1.0.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ResultGet()

Returns the current transmit counters.

Returns:FrameResultSnapshot

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ResultHistoryGet()
SetL3AutoChecksum(b)
SetL3AutoLength(set)
SetL4AutoChecksum(set)
SetL4AutoLength(set)
StreamGet()
class byteblowerll.byteblower.FrameFieldModifier(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

FrameGet()
LengthGet()
LengthSet(inLength)
OffsetGet()
OffsetSet(inOffset)
class byteblowerll.byteblower.FrameFieldModifierIncremental(*args, **kwargs)

Bases: byteblowerll.byteblower.FrameFieldModifier

A frame field modifier which will increase the value of the frame field between a minimum and maximum value.

ByteBlower allows different modifiers on a Frame. Some modifiers work on the size of a frame, others content. The FrameFieldModifierIncremental is a modifier which modifies a certain field in the frame content.

A frame field is a number of subsequent bytes in the frame content. The value is defined as host-ordering signed integer and will be written to the frame content as network-ordering signed integer.

A FrameFieldModifierIncremental will increment the value in a frame field with a configured amount. The following parameters can be configured:

  1. Parameters related to the location of the field in the frame:

    Field offset

    Offset of the field counted in bytes from the start of the frame.

    Field length

    Length of the field counted in bytes. Minimum: 1Byte. Maximum: 8Bytes ( depends on server version).

    The field cannot overwrite the 4 bytes Ethernet checksum. The allowed range for offset is 0 … <ByteBlowerPort MDL>.

    • When the field offset is greater or equal than the actual frame size, nothing will be written to the frame.
    • When the field offset is smaller than the actual frame size, but the field offset + field length exceeds the frame size. Then the LSB part of the field will be written to the frame.

    Please note that in both cases the field value will still move on to the next value.

  2. Parameters related to the value written to the field:

    Minimum value

    The minimum field value.

    Maximum value

    The maximum field value.

    Value step

    The amount the value will increase. By default, the value will grow with one but this parameter allows larger value steps. The step can be positive or negative but cannot be zero.

    Initial value

    This field value will bewritten to the frame contents when the Stream is started.

    The field value range is defined by the minimum and maximum value (both valuesinclusive).

    • Positive value step A frame with a FrameFieldModifierIncremental installed, will start sending frames with field value <Initial value>, increase the value with <Value step> until the <Maximum value> is reached.

      When maximum value is reached, the modifier will return to the minimum value again. So if the <Maximum value> is reached, the next value will be the <Minimum value>.

    • Negative value step A frame with a FrameFieldModifierIncremental installed, will start sending frames with field value <Initial value>, increase the value with (the negative) <Value step> (thus decrease the value) until the <Minimum value> is reached.

      When the minimum value is reached, the modifier will return to the maximum value again. So if the <Minimum value> is reached, the next value will be the <Maximum value>.

Note

When the <Initial value> is smaller than the <Minimum value> when the stream is started, then the minimum value will be used as initial value. When the <Initial value> is greater than the <Maximum value> when the stream is started, then the maximum value will be used as initial value.

Note

If automatic checksum and/or length calculations have been enabled on the Frame and the frame field overlaps one or more of those. Then the automatic fields will overrule the field modifier value. This depends on the configuration of the Frame. See the Frame documentation on how this can be done.

Note

It is possible that the maximum value is never reached. Depending on the <Value step> and the Stream configuration (<NumberOfFrames>), the maximum value will never be reached.

New in version 2.3.0.

InitialValueGet()

Method to get the current configured initial field value.

Returns:The initial field value which will be used for this incremental value field modifier.

Example

This example shows how to retrieve the current initial field value.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
InitialValueSet(inInitialValue)

Sets the initial value of the frame field.

This value will be used when a Tx.Stream is started.

Parameters:initial – Initial value of the frame field. When the initial value is smaller than the <Minimum value> when the stream is started, then the minimum value will be used as initial value. When the initial value is greater than the <Maximum value> when the stream is started, then the maximum value will be used as initial value. Default: 0

Example

This example will set the initial value to 1024.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
LengthGet()

Method to get the current configured field length.

Returns:The field length which will be used for this incremental value field modifier.

Example

This example shows how to retrieve the current field length.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
LengthSet(inLength)

Sets the length of the frame field.

Parameters:length – Length of the frame field. The value must be greater than zero and smaller than 8 (as for server version 2.3.x) Default: 2
Raises:ConfigError When the field length is not supported by the server.

Example

This example will set the field length to 4.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumGet()

Method to get the current configured maximum field value.

Returns:The maximum field value which will be used for this incremental value field modifier.

Example

This example shows how to retrieve the current maximum field value.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO -
MaximumSet(inMaxValue)

Sets the maximum value of the frame field for an incremental value field modifier.

Parameters:maximum – Maximum value for the frame field. This value is limited to 64-bit signed integer range. The value must always be greater than the <Minimum value> configured. Default: 65535
Raises:ConfigError Maximum too big or too small.

Example

This example will set the maximum value to 16383 bytes.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumGet()

Method to get the current configured minimum field value.

Returns:The minimum field value which will be used for this incremental value field modifier.

Example

This example shows how to retrieve the current minimum field value.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumSet(inMinValue)

Sets the Minimum value of the frame field for an incremental value field modifier.

Parameters:minimum – Minimum value for the frame field. This value is limited to 64-bit signed integer range. The value must always be less than the <Maximum value> configured. Default: 0
Raises:ConfigError Minimum too small or too big.

Example

This example will set the minimum value to 512.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
OffsetGet()

Method to get the current configured field offset within the frame content.

The field offset is the absolute offset from the start of the frame.

Returns:The field offset which will be used for this incremental value field modifier.

Example

This example shows how to retrieve the current field offset.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
OffsetSet(inOffset)

Sets the offset of the frame field within the frame content.

Parameters:offset – Offset of the frame field within the frame content. This value is relative to the start of the frame. The value must be greater or equal than zero and must be smaller than the ByteBlowerPort MDL Default: 56
Raises:ConfigError When the field offset is out of valid range.

Example

This example will set the offset to 88.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
StepGet()

Method to get the current configured value step.

Returns:The value step which will be used for an incremental value field modifier.

Example

This example shows how to retrieve the current value step.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
StepSet(inStep)

Sets the value a field value will grow in one step.

Each time the modifier needs to adapt the value of the frame field, it will be incremented with <Value step>.

Parameters:step – This parameter defines the amount the field value will grow. This value can be positive or negative. Default: 1
Raises:ConfigError An error is returned when the value is zero.

Example

This example demonstrates a value step of 10:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

This example demonstrates a negative value step of 2:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameFieldModifierRandom(*args, **kwargs)

Bases: byteblowerll.byteblower.FrameFieldModifier

A frame field modifier which will change the field value of the frame randomly between a minimum and maximum value.

ByteBlower allows different modifiers on a Frame. Some modifiers work on the size of a frame, others content. The FrameFieldModifierRandom is a modifier which modifies a certain field in the frame content.

A frame field is a number of subsequent bytes in the frame content. The value is defined as host-ordering signed integer and will be written to the frame content as network-ordering signed integer.

A FrameFieldModifierRandom will change the value in the frame field randomly. The following parameters can be configured:

  1. Parameters related to the location of the field in the frame:

    Field offset

    Offset of the field counted in bytes from the start of the frame.

    Field length

    Length of the field counted in bytes. Minimum: 1Byte. Maximum: 8Bytes (depends on server version).

    The field cannot overwrite the 4 bytes Ethernet checksum. The allowed range for offset is 0 … <ByteBlowerPort MDL>.

    • When the field offset is greater or equal than the actual frame size, nothing will be written to the frame.

    • When the field offset is smaller than the actual frame size, but the field offset + field length exceeds the frame size.

      Then the LSB part of the field will be written to the frame.

    Please note that in both cases the field value will still move on to the next value.

  2. Parameters related to the value written to the field:

    Minimum value

    The minimum field value.

    Maximum value

    The maximum field value.

    The field value range is defined by the minimum and maximum value (both values inclusive).

    So, a frame with a FrameFieldModifierRandom installed, will start sending frames with field values randomly chosen between <Minimum value> and <Maximum value>. Each time a frame is sent, a new value is selected.

Note

If automatic checksum and/or length calculations have been enabled on the Frame and the frame field overlaps one or more of those. Then the automatic fields will overrule the field modifier value. This depends on the configuration of the Frame. See the Frame documentation on how this can be done.

New in version 2.3.0.

LengthGet()

Method to get the current configured field length.

Returns:The field length which will be used for this random value field modifier.

Example

This example shows how to retrieve the current field length.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
LengthSet(inLength)

Sets the length of the frame field.

Parameters:length – Length of the frame field. The value must be greater than zero and smaller than 8 (as for server version 2.3.x) Default: 2
Raises:ConfigError When the field length is not supported by the server.

Example

This example will set the field length to 4.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumGet()

Method to get the current configured maximum field value.

Returns:The maximum field value which will be used for this random value field modifier.

Example

This example shows how to retrieve the current maximum field value.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumSet(inMaxValue)

Sets the maximum value of the frame field for a random value field modifier.

Parameters:maximum – Maximum value for the frame field. This value is limited to 64-bit signed integer range. Thevalue must always be greater than the <Minimum value> configured. Default: 65535
Raises:ConfigError Maximum too big or too small.

Example

This example will set the maximum value to 16383 bytes.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumGet()

Method to get the current configured minimum field value.

Returns:The minimum field value which will be used for this random value field modifier.

Example

This example shows how to retrieve the current minimum field value.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumSet(inMinValue)

Sets the Minimum value of the frame field for a random value field modifier.

Parameters:minimum – Minimum value for the frame field. This value is limited to 64-bit signed integer range. The value must always be less than the <Maximum value> configured. Default: 0
Raises:ConfigError Minimum too small or too big.

Example

This example will set the minimum value to 512.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
OffsetGet()

Method to get the current configured field offset within the frame content.

The field offset is the absolute offset from the start of the frame.

Returns:The field offset which will be used for this random value field modifier.

Example

This example shows how to retrieve the current field offset.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
OffsetSet(inOffset)

Sets the offset of the frame field within the frame content.

Parameters:offset – Offset of the frame field within the frame content. This value is relative to the start of the frame. The value must be greater or equal than zero and must be smaller than the ByteBlowerPort MDL Default: 56
Raises:ConfigError When the field offset is out of valid range.

Example

This example will set the offset to 88.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.FrameMobile(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

A FrameMobile is an object that configures the payload of a frame belonging to a StreamMobile object.

A FrameMobile object is used for frame blasting. It is configured by a StreamMobile object and will be transmitted by the WirelessEndpoint.

New in version 2.6.0.

Example

This example will show how to add a frame to a stream and configure the payload.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FrameTagTimeGet()

Returns the FrameTagTx object related to the timestamp injection for this frame.

Each frame can be enabled to have a timestamp inserted into the frame.

The FrameTagTx object which is returned by this method represents the current configuration of the TimeTag injection. This object can be used to configure the TimeTag injection.

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

this requires extra resources, so this option must be used with care.

New in version 2.6.0.

Returns:FrameTagTx.

Example

In this example, we will retrieve the FrameTagTx object for the TimeTag:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PayloadGet()

A method which returns the payload of a frame.

This method will return the UDP payload of the frame in a hexadecimal format.

Returns:This method returns the content in a hexadecimal string. All bytes are concatenated into one string.

Example

The current content of a frame can be requested like this:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PayloadSet(payloadString)

A method which sets the payload of a frame.

This method will change the payload of the frame. The value can be in different formats, e.g.

  1. 0x01 0x02 0x03 0x04 0x05 …
  2. 0001020304050607
  3. 00 01 02 03 04 05 …
Parameters:bytes – Bytes can be of any of the above formats

Example

The content of a frame can be set like this:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ResultClear()

Clears the transmit counters.

This method will clear the transmit counters for this frame.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ResultGet()

Returns the transmit counters.

Returns:FrameResultSnapshot

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ResultHistoryGet()

Returns the current transmit history counters.

Returns:FrameResultHistory
StreamGet()
class byteblowerll.byteblower.FrameMobileList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.FrameModifierFieldIncrementalList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.FrameModifierFieldRandomList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.FrameResultData(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

TODO

ByteCountGet()

Gets the current transmitted bytes.

Example

This example gets the transmitted bytes

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FramesizeMaximumGet()

Gets the size (in bytes) of the largest frame transmitted in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the largest framesize transmitted in this snapshot.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FramesizeMinimumGet()
IntervalDurationGet()

Gets the configured duration of this results snapshot [NS].

New in version 2.3.0.

Example

This example gets interval duration of this result snapshot [NS]

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PacketCountGet()

Gets the transmitted packets.

Example

This example gets the transmitted packets

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampFirstGet()

Gets the timestamp [NS] of the first packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the first transmitted packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampGet()

Gets the snapshot timestamp [NS].

Example

This example gets the snapshot timestamp [NS].

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampLastGet()

Gets the current timestamp [NS] of the last packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the last transmitted packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameResultDataList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.FrameResultHistory(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractRefreshableResult

Sender-side frame transmission result history.

The history contains the sender information in time since the object is created or refreshed.

Note

The information is not updated until Refresh() is called

A Frame history result object can be created via

Note

See History result for more information

New in version 2.1.0.

Example

Get the counters per sampling interval for the frame result history.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
Clear()

Removes the locally stored history snapshots.

This can be used to save memory in long tests where the results are requested at regular intervals.

Warning

Any interval or cumulative result object returned from this history object before calling Clear will be destoyed and thus become unusable.

CumulativeGet()

Returns a list of available accumulated results.

Returns:FrameResultDataList

Example

This example gets the available accumulated results

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
CumulativeGetByIndex(index)

Returns a list of available cumulative counters.

Returns:FrameResultData

Example

This example gets the available cumulative counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
CumulativeGetByTime(timestamp)

Returns a single item of the cumulative list using a timestamp nanoseconds.

Returns:FrameResultData

Example

This example gets the available cumulative counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
CumulativeLatestGet()

Returns latest closed item of the cumulative list.

Returns:FrameResultData

Example

This example gets the available cumulative counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
CumulativeLengthGet()

Returns the size of the cumulative list.

Returns:The length of the cumulative list

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
# Returns : 32
IntervalGet()

Returns a list of available interval results.

Returns:FrameResultDataList

Example

This example gets the available interval results

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IntervalGetByIndex(index)

Returns a list of available interval counters.

Returns:FrameResultData

Example

This example gets the available interval counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IntervalGetByTime(timestamp)

Returns a single item of the interval list using a timestamp in nanoseconds.

Returns:FrameResultData

Example

This example gets the available interval counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IntervalLatestGet()

Returns the latest closed item of the interval list.

Returns:FrameResultData

Example

This example gets the available interval counters

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IntervalLengthGet()

Returns the size of the interval list.

Returns:The length of the interval list

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
# Returns: 32
RefreshTimestampGet()

Returns the latest timestamp when the history was refreshed.

Returns:Timestamp in nanoseconds (since epoch)

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
SamplingBufferLengthGet()

Returns the number of the snapshots to keep in the history.

Returns:number of snapshots to keep in the history

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
SamplingBufferLengthSet(inCount)

Sets the number of samples to keep in the buffer.

The ByteBlower server has a buffer to keep some samples before they are transferred to the client. This method sets the maximum number of samples the server can hold. The last sample will always be the running sample. When a sample is closed, the oldest sample in the buffer will be removed.

New in version 2.3.0.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
SamplingIntervalDurationGet()

Returns the duration of the interval used for the history snapshots.

The returned duration is in nanoseconds

Returns:interval in nanoseconds used by the server

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
# Result : 1000000000
SamplingIntervalDurationSet(inDuration)

Sets the duration of one sampling interval.

Warning

The previously collected historywill be invalidated.

New in version 2.3.0.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameResultSnapshot(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractRefreshableResult

TODO

ByteCountGet()

Gets the current transmitted bytes.

Example

This example gets the transmitted bytes

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FramesizeMaximumGet()

Gets the size (in bytes) of the largest frame transmitted in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

New in version 2.5.0.

Example

This example gets the largest frame size transmitted in this snapshot.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FramesizeMinimumGet()

Gets the size (in bytes) of the smallest frame transmitted in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

New in version 2.5.0.

Example

This example gets the smallest frame size transmitted in this snapshot.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IntervalDurationGet()

Gets the configured duration of this results snapshot [NS].

New in version 2.3.0.

Example

This example gets interval duration of this result snapshot [NS]

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PacketCountGet()

Gets the transmitted packets.

Example

This example gets the transmitted packets

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RefreshTimestampGet()

Returns the timestamp when the counters of this object where last refreshed.

Note

This is not the same as TimestampGet()

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampFirstGet()

Gets the timestamp [NS] of the first packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the first transmitted packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampGet()

Gets the snapshot timestamp [NS].

Example

This example gets the snapshot timestamp [NS].

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampLastGet()

Gets the current timestamp [NS] of the last packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the last transmitted packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameResultSnapshotList(*args)

Bases: object

append(x)
assign(n, x)
back()
begin()
capacity()
clear()
empty()
end()
erase(*args)
front()
get_allocator()
insert(*args)
iterator()
pop()
pop_back()
push_back(x)
rbegin()
rend()
reserve(n)
resize(*args)
size()
swap(v)
class byteblowerll.byteblower.FrameSizeModifier(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

DEFAULT_MAX_SIZE = 1514
DEFAULT_MIN_SIZE = 60
FrameGet()
ResultGet()
class byteblowerll.byteblower.FrameSizeModifierGrowing(*args, **kwargs)

Bases: byteblowerll.byteblower.FrameSizeModifier

A frame size modifier which will increase the size of the frame between a minimum and maximum value.

New in version 2.3.0.

ByteBlower allows different modifiers on a Frame. Some modifiers work on the size of a frame, others content. The FrameSizeModifierGrowingSize is a modifier which modifies the size of the frame.

A FrameSizeModifierGrowingSize will increment the frame size with a configured amount of bytes. The following parameters can be configured:

Minimum size
the minimum frame size. This size will be used when the Stream is started.
Maximum size
the maximum frame size. It this limit is reached, the modifier will return to the minimum size again.
Step size
the amount of bytes the size will increase. By default, a frame will grow with one byte but this parameter allows larger step sizes.
Iteration
this parameter defines the number of times the same frame size is iterated before increasing to the next frame size.

So, a frame with a FrameSizeModifierGrowingSize installed, will start sending frames with a <Minimum size> size, will send this size <Iteration> times, increase the size with <Step size> bytes until the <Maximum size> is reached.

If the maximum size is reached, the next size is calculated as follows:

<next size> = <Minimum size> + ( <current size> + <Step size> - <Maximum size> )

All sizes define a frame size, excluding the 4 bytes Ethernet checksum.

The frame size modifier will change the size of the Frame. If the original frame size is longer, the size will truncated to the requested frame size. If automatic checksum calculations have been enabled on the Frame, they will be recalculated. This depends on the configuration of the Frame. See the Frame documentation on how this can be done.

If the original frame size of a Frame is too short, the Frame will be padded with zero-value bytes.

Note

It is possible that the maximum size is never reached. Depending on both the <Step size> and the Stream configuration (NumberOfFrames), the maximum size will never be used.

DEFAULT_ITERATION = 1
DEFAULT_STEP_SIZE = 1
IterationGet()

Method to get the current configured iteration.

Returns:The iteration which will be used for a growing size flow.

Example

This example shows how to retrieve the current iteration.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IterationSet(inIteration)

Sets the number of times the same frame size will be used.

A Frame can be sent with the same frame size multiple times before the size is increased to the next value. This parameter defines the iteration count.

Parameters:iteration – Number of times the same frame size will be used before the frame size is increased to the next value. Default: 1

Example

This example demonstrates an iteration of 10, before going to the next frame size.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumGet()

Method to get the current configured maximum frame size.

Returns:The maximum frame size which will be used for a growing size flow.

Example

This example shows how to retrieve the current maximum frame size.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumSet(inMaxSize)

Sets the maximum size of a Frame of a growing size flow. This defines the maximum frame size of the stream.

Parameters:maximum – Maximum byte length of the Frame. This value must be at least 61 bytes, and maximum 8192. The value must also be bigger than the <Minimum size> configured. Default: 1514
Raises:python_error Maximum too big or too small.

Example

This example will set the maximum frame size to 128 bytes.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumGet()

Method to get the current configured minimum frame size.

Returns:The minimum frame size which will be used for a growing size flow.

Example

This example shows how to retrieve the current minimum frame size.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumSet(inMinSize)

Sets the Minimum size of a Frame of a growing size flow.

This defines the minimal frame size of the stream. This frame size will be used when a Stream is started.

Parameters:minimum – Minimum byte length of the Frame. This value must be at least 60 bytes, and maximum 8191. The value must also be less than the <Maximum size> configured. Default: 60
Raises:python_error: Minimum too small or too big.

Example

This example will set the minimum frame size to 128 bytes.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
StepGet()

Method to get the current configured step size.

Returns:The step size which will be used for a growing size flow.

Example

This example shows how to retrieve the current step size.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
StepSet(inStep)

Sets the number of bytes a frame will grow in one step.

Each time the modifier needs to adapt the size of the frame, the size will be incremented with <Step size> bytes.

Parameters:step – This parameter defines the amount of bytes the frame will grow. Default: 1
Raises:python_error: An error is returned when the value is less than 1.

Example

This example demonstrates a step size of 10 bytes:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameSizeModifierRandom(*args, **kwargs)

Bases: byteblowerll.byteblower.FrameSizeModifier

A frame size modifier which will change the size of the frame randomly between a minimum and maximum value.

New in version 2.3.0.

ByteBlower allows different modifiers on a Frame. Some modifiers work on the size of a frame, others content. The FrameModifierRandomSize is a modifier which modifies the size of the frame.

A FrameModifierRandomSize will change the frame size randomly. The following parameters can be configured:

Minimum size
the minimum frame size.
Maximum size
the maximum frame size.

So, a stream with a FrameModifierRandomSize installed, will start sending frames with a size randomly chosen between <Minimum size> size and <Maximum size> size. Each time a frame is sent, a new size is selected.

All sizes are without the additional 4 bytes Ethernet checksum.

The frame size modifier will change the sizes of the Frames added to the stream. If the original frame size is bigger, the size will truncated to the requested frame size. If automatic checksum calculations have been enabled on the Frame, they will be recalculated. This depends on the configuration of the Frame. See the Frame documentation on how this can be done.

If the original frame size of a Frame is too short, the Frame will be padded with zero-value bytes.

MaximumGet()

Method to get the current configured maximum frame size.

Returns:The maximum frame size which will be used for a random size flow.

Example

This example shows how to retrieve the current maximum frame size.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumSet(inMaximum)

Sets the Maximum size of a Frame of a flow with FrameModifierRandomSize.

This defines the maximum frame size of the stream.

Parameters:maximum – Maximum byte length of the Frame. This value must be at least 61 bytes, and maximum 8192. The value must also be bigger than the <Minimum size> configured. Default: 1514
Raises:python_error: Maximum too small or too big.

Example

This example will set the maximum frame size to 128 bytes.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumGet()

Method to get the currently configured minimum frame size.

Returns:The minimum frame size which will be used for a random size flow.

Example

This example shows how to retrieve the current minimum frame size.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MinimumSet(inMinimum)

Sets the Minimum size of a Frame of a flow with FrameModifierRandomSize.

This defines the minimal frame size of the stream.

Parameters:minimum – Minimum byte length of the Frame. This value must be at least 60 bytes, and maximum 8191. The value must also be less than the <Maximum size> configured. Default: 60
Raises:python_error: Minimum too small or too big.

Example

This example will set the minimum frame size to 128 bytes.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
StreamGet()
class byteblowerll.byteblower.FrameSizeModifierResultSnapshot(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractRefreshableResult

A collection of statistics containing the results of a frame size modifier.

There are currently 2 frame size modifiers available:

  • The FrameSizeModifierGrowing, which is the Growing Size modifier
  • The FrameSizeModifier.Random, which is the Random Size modifier.

Example

This example shows how to retrieve the number of packets handled by a FrameSizeModifierGrowing

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ByteCountGet()

Returns the number of transmitted bytes.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FramesizeMaximumGet()

Returns the size of the biggest transmitted frame.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FramesizeMinimumGet()

Returns the size of the smallest transmitted frame.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IntervalDurationGet()

Gets the configured duration of this results snapshot [NS].

New in version 2.3.0.

Example

This example gets interval duration of this result snapshot [NS]

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PacketCountAboveMaximumGet()
PacketCountBelowMinimumGet()
PacketCountGet(*args)

Returns the number of transmitted packets.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

Returns the number of transmitted packets.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RefreshTimestampGet()

Returns the timestamp when the counters of this object where last refreshed.

Note

This is not the same as TimestampGet()

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampFirstGet()

Gets the timestamp [NS] of the first packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the first transmitted packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampGet()

Gets the snapshot timestamp [NS].

Example

This example gets the snapshot timestamp [NS].

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
TimestampLastGet()

Gets the timestamp [NS] of the last packet in this snapshot.

Raises:CounterUnavailable - When no frames are received, this counter is unavailable

Example

This example gets the timestamp [NS] of the last transmitted packet in this snapshot

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameTag(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

FormatDestroy()
FormatGet()
FormatStringGet()
MetricsDestroy()
MetricsGet()
PositionGet()
PositionSet(newPosition)
TypeGet()
class byteblowerll.byteblower.FrameTagFormat(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

FormatStringGet()
SequenceNumberFormatGet()
TimeStampFormatGet()
TypeGet()
class byteblowerll.byteblower.FrameTagMetrics(*args, **kwargs)

Bases: byteblowerll.byteblower.AbstractObject

Class which represents the metrics of a FrameTag.

The metrics of a tag are parameters describing the length and byte alignment of a frame.

The metrics can only be read, because they are determined by the tag format and the server type.

AlignmentGet()

Returns the alignment value for this tag.

Some frame tags must be aligned with the start of a frame. This means the tag must start at a multiple of <x> bytes within a frame, where <x> is the alignment value. The default value is one.

Frame alignment requirements are caused by hardware limitations as a new tag must be included in every frame that is sent.

Returns:The alignment value of this tag.

Example

This example illustrates how the alingment value of a timestamp tag can be retrieved;

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FrameTagGet()
LengthGet()

Returns the length of the tag.

The number of bytes in a Frame that will be overwritten by this tag.

Note

This byte range does not need to be contiguous! More specifically, if the tag alignment is larger than one, a single byte containing the offset to the aligned tag may be stored separately.

Returns:The length of the tag in bytes.

Example

This example shows the how to retrieve the length of a sequence tag:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameTagRx(*args, **kwargs)

Bases: byteblowerll.byteblower.FrameTag

The FrameTagRx class describes the receive configuration of a Tag in a Frame.

ByteBlower supports optional tagging of frames. Such a tag can have different formats, locations, … These parameters can be set and retrieved using this class.

Currently, two different types of FrameTags are supported:

  • Sequence Number: A tag which contains the sequence number within the stream.
  • Timestamp: A tag containing the timestamp this frame has left the transmit interface.

Adding tags is a very powerful and flexible feature of ByteBlower. Please have a look at ByteBlower API Knowledgebase: Background: Adding FrameTags to your ByteBlower frame - structure and behaviour for a detailed explanation.

This class is represents the FrameTag configuration at the receiving side of the flow.

In typical situations this configuration must not be changed.

FormatDefaultSet()

Sets the format to the native, default format.

This method sets the format to the default value. The default value depends on server type:

For sequence tags, the default value is the same for all systems <SequenceNumber-0_CRC>.

For time tags, the default value is <TimeStamp-10Nanoseconds>. However, on 1000 series servers with a software version before 1.10.18, the <TimeStamp-Microseconds_CRC> format is used instead.

Raises:ByteBlower.Rx.Counter.Unsupported - The format string is a valid value, but is not supported by the server.
Raises:<python_error> - The format string is not a valid value.

Example In this example, we restore the format of a sequence tag to the default format:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FormatSet(fromFrameTagFormat)
FormatSetFromString(formatString)

Method to set the format by name.

This method allows to set the format by name.

See also: FrameTagRx.FormatStringGet() for details on the tag formats.

Parameters:format

This defines the format of the tag, the following format strings are currently supported:

TimeStamp-Microseconds_CRC Timestamp in microseconds followed by a CRC. Not supported since 2.9.0 TimeStamp-10Nanoseconds Timestamp in nanoseconds. SequenceNumber-0_CRC Sequence number followed by a CRC.

Example

In this example, we set the format of the timestamp to 10 nanoseconds.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MetricsDefaultSet()

Sets the metrics to the default values.

This method restores the metrics to the default value.

Currently, both the sequence tag and time tag have metrics with an alignment of 1 bytes and a size of 8 bytes on all servers types and versions.

Example

This example restores the default metrics of a sequence tag.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MetricsSet(fromFrameTagMetrics)

Sets the metric of the tag.

This method allows to copy the metrics of a FrameTagTx to the receive side of a flow.

Note that it is often better to copy the complete TX tag configuration to the receive side of a flow. See LatencyBasic.FrameTagSet() for an example.

Parameters:metrics – This parameter is an object of type FrameTagMetrics .

Example

This example demonstrates how you can set the metrics of a frame on the receiving object. The configuration is simply copied from the TX side.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PositionDefaultSet()

This restores the position to the default value.

This method restores the default value for the position. By default, the tag is put at the end of the frame. This will restore the position of the receiving object to its default.

Example

This example restores the position of the sequence tag to the default value.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PositionGet()

Returns the current configured location of the tag within the Frame.

A user can choose where in a the Frame a tag will be placed (TX) or looked for (RX).

This position is configured relative to the end of the frame in units of bytes. This eliminates the complexity caused by VLAN tagging or other protocols that may influence the header structure of a frame.

The meaning of the position value is shown like this:

Position
| <———————|
  TAG  

If no position is specified by the user, the server sert (TX) or look for (RX) the tag at a default location.

This method returns the current configured value for this position.

Default value

  • At the TX side, the default position places the tag at the end of the frame, without overlapping with other enabled tags.
  • At the RX side, the default position is the length of the tag. This means the RX side guesses the location of the tag to be at the very end of the frame. Note that this guess is incorrect if multiple tags are enabled on a single frame!
Returns:Current configured position. If nothing was specified, the default position chosen by the server is returned.

Example

This example will return the position of a sequence tag:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PositionSet(newPosition)

Sets the location of the tag in the Frame.

A user can choose where in a the Frame a tag will be placed (TX) or looked for (RX).

This position is configured relative to the end of the frame in units of bytes. This eliminates the complexity caused by VLAN tagging or other protocols that may influence the header structure of a frame.

The meaning of the position value is shown like this:

Position
| <———————|
  TAG  

If no position is specified by the user, the server sert (TX) or look for (RX) the tag at a default location.

This method allows the user to configure this value.

Parameters:position – The new value of the position. This value must be between <taglength> and <framelength>.

Example

This example will sets the position of a sequence tag:

TODO

class byteblowerll.byteblower.FrameTagTx(*args, **kwargs)

Bases: byteblowerll.byteblower.FrameTag

The FrameTagTx class describes the transmit configuration of a Tag in a Frame.

ByteBlower supports optional tagging of frames. Such a tag can have different formats, locations, … These parameters can be set and retrieved using this class.

Currently, two different types of FrameTags are supported:

SequenceTag
is used for out of sequence detection and contains a frame counter value. The server automatically increments it for each frame sent in the stream.
TimeTag
is used for latency measurements and contains a timestamp value. The server automatically determines it by looking at its clock for each frame sent in the stream.

Adding tags is a very powerful and flexible feature of ByteBlower. Please have a look at ByteBlower API Knowledgebase: Background: Adding FrameTags to your ByteBlower frame - structure and behaviour for a very detailed explanation.

To perform latency measurements or out of sequence detection, configuration needs to be done both at TX and RX side:

  • At the TX side

    we need to add the FrameTag(s) to the Frame object.

  • At the RX side

    we need to create the appropriate receiver(s) on the incoming packets. This causes the server to read a tag from the received frames and interpret them (e.g. by calculating latency based on the timestamps).

Enable(set)

Method to enable the tag on the Frame.

This will activate the tag on the Frame, and apply its configuration. As long as this method is not called, the tag will not be active.

Note

the configuration of other enabled frames may change when this frame is disabled.

Default value: Disabled

Example

To enable the sequence tag on frame, one can do:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IsEnabled()

Method which will return whether a tag is activated or not.

This method is used to retrieve the current state of the tag. If this tag is activated/enabled, true is returned. Otherwise, this method will return false.

Default value: Disabled

Returns:True if enabled, false if disabled.

Example

To see if a timestamp tag is enabled on a frame, this code can be used:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PositionAutomaticSet()

This method will use the automatic position for the tag.

ByteBlower is very flexible in positioning the tag, and the combination of different tags. If the position of the tag is not important, the automatic positioning of tags is the easiest way for the user.

Note

The automatic position is used by default. This method is only useful when you want to reset positions that were previously set by the user.

Automatic placement of FrameTags has multiple advantages:

  1. it shields the API user from the complexity described above

  2. it makes sure the requirements are respected:

    the position will always be larger than the tag length and multiple tags will never overlap

  3. it places the tags as close towards the end as possible to allow tagging small frames without overwriting frame headers

Tags are automatically placed at the end of the frame. If both Tags are enabled and have an automatic position, the SequenceTag is placed in front of the TimeTag.

If a tag has an explicit position, this is always respected. The automatic position will adapt to it as follows:

  1. If there is enough place after the fixed tag to fit the automatic tag, the automatic tag is placed behind it (at the end of the frame).
  2. If there is not enough place after the fixed tag to fit the automatic tag, the automatic tag is placed right in front of the fixed tag.

Default value: Enabled

Example

In this example, we will reset the position of the sequence tag to automatic.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PositionGet()

The current configured location of the tag within the Frame.

A user can choose where in a the Frame a tag will be placed (TX) or looked for (RX).

This position is configured relative to the end of the frame in units of bytes. This eliminates the complexity caused by VLAN tagging or other protocols that may influence the header structure of a frame.

The meaning of the position value is shown like this:

| Position
| <———————|
  TAG  

If no position is specified by the user, the server sert (TX) or look for (RX) the tag at a default location.

This method returns the current configured value for this position.

Default value

  • At the TX side, the default position places the tag at the end of the frame, without overlapping with other enabled tags.
  • At the RX side, the default position is the length of the tag. This means the RX side guesses the location of the tag to be at the very end of the frame. Note that this guess is incorrect if multiple tags are enabled on a single frame!
Returns:Current configured position. If nothing was specified, the default position chosen by the server is returned.

Example

This example will return the position of a sequence tag:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
PositionSet(newPosition)

Sets the location of the tag in the Frame.

A user can choose where in a the Frame a tag will be placed (TX) or looked for (RX).

This position is configured relative to the end of the frame in units of bytes. This eliminates the complexity caused by VLAN tagging or other protocols that may influence the header structure of a frame.

The meaning of the position value is shown like this:
| Position
| <———————|
  TAG |

If no position is specified by the user, the server sert (TX) or look for (RX) the tag at a default location.

This method allows the user to configure this value.

Parameters:position – The new value of the position. This value must be between <taglength> and <framelength>.

Example

This example will sets the position of a sequence tag:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
class byteblowerll.byteblower.FrameTagType

Bases: object

The type of the FrameTag as found in a Trigger and a Frame

SequenceNumber = 1

This is a FrameTag with a sequence number.

TimeStamp = 0

This is a FrameTag with a timestamp.

class byteblowerll.byteblower.GroupSchedulableObject(*args, **kwargs)

Bases: object

SetScheduleGroup(group)
UnsetScheduleGroup()
class byteblowerll.byteblower.HTTPClient(*args, **kwargs)

Bases: byteblowerll.byteblower.SchedulableObject

HTTP client application that may schedule HTTP requests to real webservers or the HTTP server application.

Using this class, you can simulate TCP (Transmission Control Protocol) traffic The TCP is simulated by a HTML request to the HTTPServer. This is the HttpClient that will perform the GET or the PUT. This request can be sent to the HTTPServer or even a real HTTPServer.

CaptureClear()
CaptureEnable(inValue=True)

Enable the capture of the HTTPData.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

Enable the capture of the HTTPData.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
CaptureGet()

Return the captured HTTP Data.

Returns:CapturedHTTPData

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ClientIdGet()

Returns the unique client ID.

Each client has a unique ID so that information about the same connection can be requested on a HTTP server object. This method returns the unique ClientID for this HTTP client.

Returns:the httpclient unique ID

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ErrorMessageGet()

Returns the error message.

When the request status is “Error” then extra information can be obtained with this method.

Returns:The error message string

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FinishedGet()

Returns whether or not the HTTP session has finished.

Returns:True: Finished (with or without error), False: Not Finished

Example

Check if the client is finished

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FlowLabelGet()

Returns the configured “Flow Label” for IPv6 flows.

New in version 2.7.0.

This feature only affects IPv6 flows. It is ignored for IPv4 flows.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
FlowLabelSet(value)

Configures the flow label for IPv6 flows.

New in version 2.7.0.

This feature only affects IPv6 flows. It is ignored for IPv4 flows.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HasError()

Returns true if an error has occurred.

Returns:True: An error has occurred , False: No error has occurred

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HasSession()

Returns whether or not we have a HTTP session.

Returns:True We have a session, False We don’t have a session

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HistorySamplingBufferLengthGet()

Gets the default Sampling Buffer Length for the HTTP Session history.

The history on the HTTP Session History object can be configured when the session is started. This method allows to configure the HTTP Session History before the request is started and has thus the advantage not to invalidate previous history items.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HistorySamplingBufferLengthSet(inLength)

Sets the default Sampling Buffer Length for the HTTP Session history.

The history on the HTTP Session History object can be configured when the session is started. This method allows to configure the HTTP Session History before the request is started and has thus the advantage not to invalidate previous history items.

This function is only allowed when the HTTP Session is not running yet. When the HTTP Session is running, the history must be configured on the HTTP Session object.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HistorySamplingIntervalDurationGet()

Gets the default Sampling interval for the HTTP Session history.

The history on the HTTP Session History object can be configured when the session is started. This method allows to configure the HTTP Session History before the request is started and has thus the advantage not to invalidate previous history items.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HistorySamplingIntervalDurationSet(inDuration)

Sets the default Sampling interval for the HTTP Session history.

The history on the HTTP Session History object can be configured when the session is started. This method allows to configure the HTTP Session History before the request is started and has thus the advantage not to invalidate previous history items.

This function is only allowed when the HTTP Session is not running yet. When the HTTP Session is running, the history must be configured on the HTTP Session object.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HttpMethodGet()

Returns the used HTTPRequest method.

There are 2 possible values:

GET
The HTTP Request method will be a GET.
PUT
The HTTP Request method will be a PUT.

Default value: GET

Returns:The current selected HTTP request method

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HttpMethodSet(*args)

Configures the HTTPRequest method to be used.

There are 2 possible values:

GET
The HTTP Request method will be a GET.
PUT
The HTTP Request method will be a PUT.

Default value: GET

Raises:python_error: bad lexical cast: When the value could not be interpreted as a valid HTTPRequestMethod

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

Configures the HTTPRequest method to be used.

There are 2 possible values:

GET
The HTTP Request method will be a GET.
PUT
The HTTP Request method will be a PUT.

Default value: GET

Raises:python_error: bad lexical cast: When the value could not be interpreted as a valid HTTPRequestMethod

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
HttpSessionInfoDestroy()
HttpSessionInfoGet()

Returns the Layer5.Http.SessionInfo from this session.

The HttpSessionInfo contains all the information of the current session. From state until the counters of received/transmitted bytes

Returns:HTTPSessionInfo

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
IsCaptureEnabled()
LocalPortGet()

Returns the TCP the httpclient will use to send its HTTPRequest.

Returns:The TCP port the client uses.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
LocalPortSet(inPort)

Configure the TCP port for the client to use.

This method will set the TCP port for the client.

Parameters:port – TCP port on which the client will listen or replies and send its requests.
Raises:ByteBlower.Exception.InvalidValue.Integer - when the value is not an Integer
Raises:ByteBlower.Exception.InvalidConfig - when the value is not between 1 and 65535

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumSegmentSizeGet()

Returns the configured TCP maximum segment size.

The default value is 65535.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
MaximumSegmentSizeSet(inValue)

Sets the TCP maximum segment size.

This option specifies an upper bound on the TCP segment size.

Parameters:size – Maximum segment size. Should be between 1 and 65535.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ReceiveWindowInitialSizeGet()

Gets the initial receive window for the client.

Small windowsizes can decrease the performance of a TCP session. Please use a good size for your configuration and network setup.

Default value: 65535

Returns:The configured initial receive window size.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ReceiveWindowInitialSizeSet(inValue)

Sets the initial receive window for the client.

Small windowsizes can decrease the performance of a TCP session. Please use a good size for your configuration and network setup.

Parameters:windowsize – New value of the initial receive window.
Raises:ByteBlower.Exception.InvalidValue.Integer - when the value is not an Integer

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ReceiveWindowScalingEnable(inEnable)

Enables of disables windowscaling.

Windowscaling allows windowsizes to grow further than 65,536 bytes. For high speed or high latency links, window scaling should be enabled for a good throughput.

Parameters:scaling – bool: which will enable (True) or disable (false) windowscaling.
Raises:ByteBlower.Exception.InvalidValue - when the value is not true or false

Default value: true

Example

To enable window scaling

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

or to disable window scaling

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ReceiveWindowScalingIsEnabled()

Returns if windowscaling is enabled or not.

Windowscaling allows windowsizes to grow further than 65,536 bytes. For high speed or high latency links, window scaling should be enabled for a good throughput.

Returns:True window scale enabled, False window scale disabled

Default value: True

Example

When enabled:

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ReceiveWindowScalingValueGet()

Returns the current receive window scale.

The TCP window scale option is an option to increase the receive window size allowed in Transmission Control Protocol above its former maximum value of 65,535 bytes. This TCP option, along with several others, is defined in IETF rfc:1323.

Default value: 3

Returns:the current receive window scale

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ReceiveWindowScalingValueSet(inValue)

Configures the window scale which will be used for the client.

Note

This must be done before requesting the page, because this option is negotiated at the beginning of the TCP session.

Raises:ByteBlower.Exception.InvalidValue.Integer - when the value is not an Integer
Raises:ConfigError when the value is not in the range 0-8
Parameters:scale – Integer (0-8), which is used for bitwise shifting.

Default value: 3

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RemoteAddressGet()

Return the configured destination address.

Returns the current configured remote site address.

Returns:destination address

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RemoteAddressSet(inAddress)

Configure the destination address.

Method to configure the address of the HTTP server which this client will try to contact.

Note

Be aware that only addresses are used, no DNS is supported at this moment.

Parameters:address – Address of the HTTP server this client will use.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RemotePortGet()

Returns the configured destination port.

This method returns the current configured TCP port of the HTTP server which this client will try to contact.

Returns:the remote (destination) tcp port

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RemotePortSet(inRemotePort)

Configure the TCP port which the client will use as destination port.

This method is used to configure the TCP port of the server which the client will try to contact.

Parameters:port – TCP port of the HTTP server which the client will try to contact.
Raises:ByteBlower.Exception.InvalidValue.Integer - when the value is not an Integer
Raises:ByteBlower.Exception.InvalidConfig - when the value is not between 1 and 65535

Example

Configure the client to use port 80 as destination port

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestDurationGet()

Method which will return the configured HTTP Request duration.

A HTTP Request page will be configured to request to send data, during a certain time, on a ByteBlower HTTP server.

Returns:The HTTP request duration.

Example

Get the configured a request duration 1.5 seconds

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestDurationSet(inDurationNs)

Method which will configure a page to send out an HTTP Request to transmit data during a certain time.

A HTTP Request page will be configured to request to send data, during a certain time, on a ByteBlower HTTP server.

This will prepare a nice TCP traffic test with data transferred over the network until the requested duration has passed.

Note

The HTTP Method that is used for the Request can be configured using HTTPMethodSet(). The HTTP Method defines the way the data traffic will flow.

Note

The Start Type that is used for the Request can be configured using RequestStartTypeSet(). The Start Type defines when the HTTP Request will start.

Note

The generated HTTP Request URI format is specific for a ByteBlower HTTP Server.

Parameters:requestDuration – The duration of data traffic to send the HTTP Request for.
Raises:python_error: bad lexical cast: When the value could not be interpreted as a valid time string

Example

will configure a request to transfer data during 1.5 seconds expressed in nano seconds

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestInitialTimeToWaitGet()

Returns the initial time to wait before a scheduled Request starts.

Returns:The initial time to wait before a scheduled request starts. Units are ns

Default value: 0

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestInitialTimeToWaitSet(inDelay)

Sets the initial time to wait before really requesting a page (for a scheduled Request).

This can be used if you want to start different request on different timestamps.

Parameters:timetowait – Time to wait before the request will be really sent. Units are ns

Default value: 0

Raises:python_error: - bad lexical cast: When the value could not be interpreted as a valid time string

Example

Initial Time to wait of 60 seconds expressed in nanoseconds

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestPageGet()

Method which will get the HTML page which will be requested.

If you are requesting on a ByteBlower HTTP Server, please check RequestSizeSet() and RequestDurationSet() for specialized HTTP Requests

Method which will set the HTML page which will be requested. When RequestStart() is called, the HTTP Client will send a HTTP Request message for this page and will listen for a response.

A typical use in ByteBlower is a request for a certain size to a ByteBlower HTTP server. e.g. 10000000.html This will give us a nice TCP traffic test with the number of requested Bytes transferred over the network.

Returns:the HTML page name that will be requested

Note

The HTTP Method that is used for the Request can be configured using HttpMethodSet() The HTTP Method defines the way the data traffic will flow.

Note

The Start Type that is used for the Request can be configured using RequestStartTypeSet() The Start Type defines when the data traffic will start.

Example

Setting the client to request for the page: 100000.html

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestPageSet(arg2)

Method which will set the HTML page which will be requested.

If you are requesting on a ByteBlower HTTP Server, please check RequestSizeSet() and RequestDurationSet() for specialized HTTP Requests

Method which will set the HTML page which will be requested. When RequestStart() is called, the HTTP Client will send a HTTP Request message for this page and will listen for a response.

A typical use in ByteBlower is a request for a certain size to a ByteBlower HTTP server. e.g. 10000000.html This will give us a nice TCP traffic test with the number of requested Bytes transferred over the network.

Note

The HTTP Method that is used for the Request can be configured using HttpMethodSet() The HTTP Method defines the way the data traffic will flow.

Note

The Start Type that is used for the Request can be configured using RequestStartTypeSet() The Start Type defines the way the data traffic will flow.

Parameters:pagename – The page to send the HTTP Request for.

Example

Setting the client to request for the page: 100000.html

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestRateLimitGet()

Method which will return the configured rate-limit of the HTTP traffic.

Returns:rateLimit The rate limit, in bytes per second.

Example

Getting the configured rate limit.

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestRateLimitSet(inRateLimitBytesps)

Method which will limit the rate of the HTTP traffic to a certain amount..

Parameters:rateLimit – The rate limit, in bytes per second.

Example

Setting the rate limit to 10 MBytesps

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

Example

Disable rate limit

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestSizeGet()

Method which will return the configured requested pagesize expressed in Bytes.

Returns:The configured requested pagesize in Bytes

A HTTP Request page will be configured to request for a certain size of data on a ByteBlower HTTP server.

Example

Getting the configured requestsize

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestSizeSet(inRequestSize)

Method which will configure a page to send out an HTTP Request to request a certain number of Bytes.

A HTTP Request page will be configured to request for a certain size of data on a ByteBlower HTTP server.

This will prepare a nice TCP traffic test with the number of requested Bytes transferred over the network.

Note

The HTTP Method that is used for the Request can be configured using HttpMethodSet() The HTTP Method defines the way the data traffic will flow.

Note

The Start Type that is used for the Request can be configured using RequestStartTypeSet() The Start Type defines when the HTTP Request will start.

Note

The generated HTTP Request URI format is specific for a ByteBlower HTTP Server.

Parameters:requestsize – The number of Bytes to send the HTTP Request for.

Example

Setting the requestsize to 10000000 Bytes

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestStart()

Start the current configured HTTP Request.

The Start Type can be configured using RequestStartTypeSet()

Configuring the Request is done using RequestSizeSet() and RequestDurationSet()

Raises:ConfigError This exception is thrown when some configurations are incorrect. For example if the RemoteAddress is an IPv6 address and the HTTPClient has a IPv4 address.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestStartTypeGet()

Returns the current configured Start Type.

Returns the current configured Start Type for a HTTP Request. There are 2 possible values:

direct
will send out the HTTP Request as soon as a ‘Page’, ‘Size’ or ‘Duration’ is requested.
scheduled
will send out the HTTP Request (‘Page’, ‘Size’ or ‘Duration’) as soon as soon as the ByteBlower Port starts sending.

Default value: direct

Returns:Configured start type: direct or scheduled

Example

On a httpClient with direct starttype

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestStartTypeSet(inRequestStartType)

Configures the Start Type of a HTTP Request.

Configures the Start Type of a HTTP Request. There are 2 possible values:

direct
will send out the HTTP Request as soon as a ‘Page’, ‘Size’ or ‘Duration’ is requested.
scheduled
will send out the HTTP Request (‘Page’, ‘Size’ or ‘Duration’) as soon as soon as the ByteBlower Port starts sending.
Parameters:startType – Start Type of the HTTP request. Must be ‘direct’ or ‘scheduled’.

Default value: direct

Example

Setting the startype to direct

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

Setting the startype to scheduled use RequestInitialTimeToWaitSet() to configure the schedule

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestStartType_Direct = 0
RequestStartType_Scheduled = 1
RequestStatusGet()

Returns the status of the HTTP request.

Returns:HTTPRequestStatus

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestStop()

This will stop the client.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestUriGet()

Returns the requested URI.

Returns the URI like it is or will be requested by the client.

Returns:HTTP Request URI as configured by RequestUriSet()

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
RequestUriSet(inURI)

Method which will set the URI, it contains the complete HTTP URI which will be requested.

When RequestStart() is called, the HTTP Client will send a HTTP Request message for this page and will listen for a response.

Different from the RequestPageSet() method, this method allows you to configure a HTTP Request to external (non-ByteBlower) HTTP servers without adding the ‘server-client-id’ to the HTTP Request page’s path. Configuring the URI will also configure the HTTP Server address and HTTP Server TCP to which the HTTP Request is sent.

Note

DNS resolution is not supported for the URI, so the HTTP Server needs to be an IPv4 or IPv6 address.

Parameters:uri – The URI the httpClient must request.

Example

configure the HTTP Client to send a request to HTTP Server 1.1.1.1, on the default TCP port 80, for page ‘/test/index.html’

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO

configure the HTTP Client to send a request to HTTP Server 10.10.10.2, on TCP port 8080, for page ‘/project/index.html’

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ResultGet()
ResultHistoryGet()
ServerClientIdGet()

This method returns the combination of the server Id ( aka ByteBlower Server Id ) and client Id.

This returns a combination of the ServerId and the Client Id. This combination will identify a HTTP connection. It is this combination of id’s you can use to request the HTTPSessionInfo on the HTTP server (HTTPServer.HTTPSessionInfoGet())

Returns:The combined server- and client Id

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
ServerIdGet()

Returns the unique ByteBlower Server ID.

Returns:str The ByteBlower server unique ID.

Each ByteBlower server has a unique ID. This identifier stays persistant over the lifetime of the ByteBlowerServers (changed when rebooted). This serverId together with the clientId identifies a HTTPConnection. By adding those 2 id’s together it is unlikely that 2 httpclients each running on a different server end up with the same connection ID.

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
SlowStartThresholdGet()

Returns the initial slow-start threshold value used by TCP.

The slow-start threshold indicates when the slow-start phase ends and the congestion avoidance phase starts. Consider increasing this value if you find that TCP takes a long time to reach peak throughput. See RFC 5681 “TCP Congestion Control” for more information on this topic.

Returns:slowstart threshold

Default value: 65535

Example

from byteblowerll.byteblower import ByteBlower
server = ByteBlower.ServerAdd('byteblower-1.lab.byteblower.com')
# TODO
SlowStartThresholdSet(inValue)

Set the initial slow-start threshold value used by TCP.

The slow-start threshold indicates when the slow-start phase ends and the congestion avoidance phase starts. Consider increasing this value if you find that TCP takes a long time to reach peak throughput. See RFC 5681 “TCP Congestion Control” for more information on this topic.

Parameters:sstresh – New value for the slow-start threshold
Raises:ByteBlower.Exception.InvalidValue - when the value is not a positive integer

Default value: 65535

Example

To set slow-start threshold to 1000000