Test scenario definition

In the current release, it is possible to supply a configuration file in JSON format for running your tests.

In the following sections, we will provide a detailed explanation of the structure and all parameters in the JSON configuration file.

Structure

The JSON configuration file consists of:

  • ByteBlower server address (and optionally a ByteBlower meeting point)

  • List of port definitions: Where you want to send traffic from/to

  • List of flow definitions: We currently support a set of UDP frame blasting based flows (voice, video, conference, etc.) and stateful TCP (HTTP) flows.

  • (optional) Reporting parameters

  • Test-specific parameters: like types of reporting (HTML, JSON, and XML), the maximum runtime, including a new feature that allows to run scouting flows to initialize the test network entries (like ARP) before running the actual test.

A quick short reference for the structure:

{
    "server": "<bb_server_name_or_ip:str>",
    "meeting_point": "<bb_meeting_point_name_or_ip:str>",
    "ports": [
        {
            "name": "<port_name:str>",
            "interface": "<bb_interface_name:str>",
            "uuid": "<endpoint_uuid:str>",
            "ipv4": "<ipv4_address:str>|dhcp|true",
            "netmask": "<ipv4_netmask:str>",
            "gateway": "<ipv4_gateway:str>",
            "nat": "<enable_nat_resolution:bool>",
            "ipv6": "dhcp|slaac|true",
            "port_group": [
                "<port_group:str>"
            ]
        }
    ],
    "flows": [],
    "report": {
        "html": "<enable_html_reporting:bool>",
        "json": "<enable_json_reporting:bool>",
        "junit_xml": "<enable_junit_xml_reporting:bool>"
    },
    "enable_scouting_flows": "<enable_scouting_flows:bool>",
    "maximum_run_time": "<scenario_max_run_time:float>"
}

Where flows contains the list of flows.

JSON schema

The complete structure and documentation of the file is available in Configuration file JSON schema, and documented below.

Server

ByteBlower server address

Host name or IP address of the ByteBlower Server.

type

string

oneOf

format

hostname

format

ipv4

format

ipv6

Meeting point

ByteBlower meeting point address

Host name or IP address of the ByteBlower meeting point.

Added in version 1.1.0: Support for ByteBlower Endpoint.

type

string

oneOf

format

hostname

format

ipv4

format

ipv6

Ports list

The port list defines a set of ByteBlower ports (== simulated hosts) at a given ByteBlower interface. Where a ByteBlower interface is the physical connection on either the non-trunking interface (direct connection at a ByteBlower server) or a trunking interface (connection at a physical port on the ByteBlower switch).

These ports define ByteBlower ports which simulate hosts at the operator side or at the customer side of the network under test (typically simulating a device behind a NAT gateway).

It is allowed to specify multiple virtual ByteBlower ports on a single physical ByteBlower interface. Each port supports IPv4 address assignment using static IPv4 configuration or DHCP. IPv6 address configuration is possible through DHCPv6 or stateless autoconfiguration (SLAAC).

When an (IPv4) port is located behind a NAT gateway, then the test framework will perform additional setup flow steps to resolve the NAT’s public IPv4 address and UDP port (when required).

Since version 1.2.0, the ByteBlower Test Framework also supports ByteBlower Endpoints. They can be configured by:

  1. Providing the meeting point address and the UUID of the endpoint.

  2. Setting the IPv4 or IPv6 parameter to true.

Port definitions

Flat list of ports.

type

array

items

Configuration parameters for a ByteBlower Port or Endpoint

Configuration parameters for a ByteBlower Port or Endpoint

Configuration parameters for a ByteBlower Port or Endpoint

type

object

properties

  • name

Name of this ByteBlower traffic endpoint.

(a friendly name to identify this endpoint).

type

string

  • port_group

List of port groups where this port belongs to.

Used to identify to which flows this port will be part of (either as source or destination).

type

array

items

#/$defs/port_group

  • interface

Name of the physical ByteBlower interface where this ByteBlower port is created.

ByteBlower Port only. Mutually exclusive with "uuid".

type

string

pattern

^(nontrunk[-][0-9]+|trunk[-][0-9]+[-][0-9]+)$

  • uuid

Device identifier of the ByteBlower Endpoint.

ByteBlower Endpoint only. Mutually exclusive with "interface".

Note

Using an Endpoint also requires the "meeting_point" to be provided and "ipv4" or "ipv6" set to true for this port configuration.

Added in version 1.1.0: Support for ByteBlower Endpoint.

type

string

anyOf

format

uuid

pattern

^[0-9a-zA-Z]$

  • vlans

List of VLAN (stack) configurations. See details in VLAN (stack) configuration.

Note

Not supported by ByteBlower Endpoint.

type

array

items

#/$defs/vlan

  • ipv4

IPv4 addressing method

Enable IPv4 on this traffic endpoint.

Supports the following values:

  • IPv4 address for static IPv4 IP address (ByteBlower Port only).

  • "dhcp" for dynamic IPv4 address allocation (ByteBlower Port only).

  • true: To use the IPv4 address(es) of the system (ByteBlower Endpoint only).

Default: "dhcp" (ByteBlower Port) or undefined (ByteBlower Endpoint).

Note

For ByteBlower Endpoint, you must specify either "ipv4": true or "ipv6": true.

Changed in version 1.1.0: Support for ByteBlower Endpoint.

oneOf

type

string

oneOf

enum

dhcp

format

ipv4

type

boolean

  • netmask

Netmask of the IPv4 network.

Default: Assigned by DHCP or 255.255.255.0 for static IPv4 address configuration.

Note

  • Will be supported for IPv6 once manual address configuration is supported.

  • Not supported by ByteBlower Endpoint.

type

string

format

ipv4

  • gateway

(Default) Gateway of the IPv4 network.

Default: Assigned by DHCP or none for static IPv4 address configuration.

Note

  • Will be supported for IPv6 once manual address configuration is supported.

  • Not supported by ByteBlower Endpoint.

type

string

format

ipv4

  • nat

Define whether this port is located behind a NAT gateway.

Defaults to false.

Note

Enabled by default for ByteBlower Endpoint.

type

boolean

  • ipv6

IPv6 addressing method

Enable IPv6 on this traffic endpoint.

Supports the following values:

  • "dhcp": to let the port perform DHCPv6 (ByteBlower Port only)

  • "slaac": to let the port perform stateless address auto-configuration (ByteBlower Port only).

  • true: To use the IPv6 address(es) of the system (ByteBlower Endpoint only).

Default: undefined.

Note

For ByteBlower Endpoint, you must specify either "ipv4": true or "ipv6": true.

Changed in version 1.1.0: Support for ByteBlower Endpoint.

oneOf

type

string

oneOf

enum

dhcp, slaac

format

ipv6

type

boolean

VLAN (stack) configuration

type

object

properties

  • protocol_id

VLAN protocol ID (TPID).

Default value is:

  • "0x8100" for a single VLAN configuration

  • "0x88a8" for the outer VLAN(s) in a VLAN stack configuration

  • "0x8100" for the most inner VLAN in a VLAN stack configuration.

Note

Configuration of the VLAN protocol ID (TPID) requires ByteBlower Server version >= 2.20.0.

type

integer

maximum

65535

minimum

0

  • id

VLAN ID (12-bit; 0-4095)

type

integer

maximum

4095

minimum

0

  • priority

3 bits defining the VLAN PCP bits. Default: 0

type

integer

maximum

3

minimum

0

  • drop_eligible

1-bit flag. Default: 0

type

integer

maximum

1

minimum

0

Port group

Definition of a port group

type

string

Flow list

Current release supports a set of UDP-based flows and HTTP (stateful TCP) flow. Each type of traffic you like to send using ByteBlower is initiated using a flow definition in the flow list.

At least one flow definition must be defined. Default values will apply on other parameters. Each flow definition entry must contain at least the type, one source port group, and one port group destination ports. A ByteBlower port can belong to one or many port groups.

A flow is created on the matrix of all source/destination flow’s ports combinations. It is only generated between ports of the same layer 3 address family (IPv4 or IPv6).

When reverse flow is enabled, the same flow definition is used in both directions.

Flow definition list

Flat list of flow definitions

type

array

items

oneOf

Frame blasting flow

Dynamic frame blasting flow

L4S frame blasting flow

Voice flow

Video flow

Gaming flow

Conference flow

HTTP flow parameters

Test scenario parameters

Maximum run time

Maximum run time of the scenario in seconds

type

number

minimum

0

Enable scouting flows

Enable scouting flows for network entries initialization

Note

Not enabled for traffic originating from a ByteBlower Endpoint.

type

boolean

Report configuration parameters

type

object

properties

  • html

Create HTML report

Enable/Disable reporting in HTML format

type

boolean

  • json

Create JSON report

Enable/Disable reporting in JSON format

type

boolean

  • junit_xml

Create JUnit XML report

Enable/Disable reporting in JUnit XML format

type

boolean