Capabilities

Overview

ByteBlower uses “capabilities” to indicate whether or not features are supported.

A use case for these is adapting a test or script to use ByteBlower features when supported, but ignore parts of the script when the ByteBlower Endpoint runs on a system that does not support this feature.

e.g. Skip the IPv6 flows when the Endpoint device does not support IPv6.

Capabilities can have 3 different data types:

  • boolean: A feature is either supported or not

  • numberic: A feature can be limited in use. e.g. a ByteBlower Endpoint can only have 1 frame defined in a stream, whilst a ByteBlower Port can have an unlimited number of frames defined in a stream.

  • text: Everything else that cannot be expressed as a boolean or numeric value

Combine.L4Checksum.TxTimestamp

Indicates when the ByteBlower server supports TCP/UDP checksum correction whilst inserting latency timestamp injection.

Http.Request.Duration

Indicates whether the HTTP Client supports duration based HTTP sessions.

New in version 2.0.0.

Changed in version 2.22.0: This capability was introduced.

Http.Request.Size

Indicates whether the HTTP Client supports size based HTTP sessions.

New in version 2.0.0.

Changed in version 2.22.0: This capability was introduced.

Changed in version 2.22.0: The ByteBlower Endpoint added support for size based HTTP sessions

Http.Request.Uri

Indicates whether the HTTP Client supports URL based HTTP sessions.

New in version 2.0.0.

Changed in version 2.22.0: This capability was introduced.

Note

The ByteBlower Endpoint application does not support this feature.

IPv4

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support traffic emulation over the Layer3 IPv4 protocol.

IPv6

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support traffic emulation over the Layer3 IPv6 protocol.

On a ByteBlower Endpoint this capability can be disabled when e.g. the operating system does not have any IPv6 support.

Monitor.NetworkInfo

Indicates whether the ByteBlower Endpoint supports monitoring the Network Interfaces for changes in statistics.

E.g.

  • Wi-Fi RSSI

  • IPv4 addresses

  • Link speed

New in version 2.11.0.

PacketDump

Indicates whether the ByteBlower server supports the PacketDump feature.

byteblowerll.byteblower.PacketDump is a feature allowing the user to capture bi-directional traffic on a ByteBlower Interface.

New in version 2.9.0.

Rx.Latency.Basic

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support basic processing latency measurement timestamps from received frames.

Basic processing is calculating some basic statistics such as

  • Average Latency

  • Minimum Latency

  • Maximum Latency

  • Jitter

Changed in version 2.6.0: ByteBlower Endpoint gained support for this.

Rx.Latency.Distribution

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support latency histogram measurements based on latency measurement timestamps from received frames.

Next to latency histograms, this trigger also includes the basic latency measurements.

Changed in version 2.13.0: ByteBlower Endpoint support for Latency Distribution triggers.

Rx.Latency.Distribution.OverTime

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support latency histogram measurements with results split per snapshot interval.

New in version 2.20.0: ByteBlower support for Latency Distribution results over time.

Rx.OutOfSequence.Basic

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support processing of incoming sequence numbers to detect packet reordering or real-time loss.

New in version 2.21.0: ByteBlower server support for real-time loss detection

Scenario.LiveResultUpdates

Indicates whether or not a ByteBlower Endpoint can report the intermediate results back to the MeetingPoint during a test.

New in version 2.21.0.

Scenario.Stop

Indicates whether or not a ByteBlower Endpoint supports stopping a running scenario through the ByteBlower API / ByteBlower GUI.

New in version 2.19.0.

Tcp.L4S

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support L4S measurements using TCP sessions.

The ByteBlower Server and ByteBlower Endpoint on Linux support both Accurate ECN and a TCP Prague implementation.

The ByteBlower Endpoint on macOS only supports Accurate ECN.

New in version 2.22.0.

Tcp.Restart

Indicates whether or not the ByteBlower Endpoint can be configured to automatically restart HTTP sessions which were interrupted.

New in version 2.10.0.

Tx.Latency

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support inserting latency measurement timestamps into transmitted frames.

Tx.OutOfSequence

Indicates whether or not the ByteBlower Port or ByteBlower Endpoint support inserting sequence numbers into transmitted frames.

The feature is usually used in combination with a OutOfSequence trigger to detect packet reordering or real-time loss with the ByteBlower Port

Note

The ByteBlower Endpoint does not support this feature.

Vlan.Stacking

Indicates how many VLAN headers can be stacked on a given ByteBlower Port.

Note

ByteBlower Endpoint does not support dynamic VLAN configurations, and this value will always be 0.

New in version 2.3.0.

Unknown

The ByteBlower API installation does not know this capability yet. This usually means that the ByteBlower API should be updated in order to use the new ByteBlower features

Using the Capabilities

Listing the capabilities of a specific ByteBlower
from byteblowerll import byteblower as api

instance = api.ByteBlower.InstanceGet()

meetingpoint = instance.MeetingPointAdd('10.10.1.202')

for endpoint in meetingpoint.DeviceListGet():
    given_name = endpoint.DeviceInfoGet().GivenNameGet()

    print(f"Endpoint: {given_name}" )

    for capability in endpoint.CapabilityListGet():
        print(f" - {capability.NameGet()}: {capability.ValueGet().DescriptionGet()")
Skipping a pytest when a capability is not supported
import pytest

from byteblowerll import byteblower as api

instance = api.ByteBlower.InstanceGet()

def test_l4s():

    instance = api.ByteBlower.InstanceGet()
    server = instance.ServerAdd('10.10.1.202')
    port = server.PortCreate('trunk-1-1')

    if port.CapabilityIsSupported('Tcp.L4S'):
        pytest.skip("This ByteBlower installation does not support L4S. "
                    "Please update the API and/or ByteBlower Server")

    # ... do test.