User Tools

Site Tools


Sidebar

openbach:exploitation:reference_scenarios:network:rate:index

This is an old revision of the document!


Rate metrology

Context

To assess the throughput/rate in a deployed network, we can exploit different ways of computing the available link rate. Following RFC recommendations (e.g.: RFC 5136 “Defining Network Capacity, RFC 3148 ” RFC A Framework for Defining Empirical Bulk Transfer Capacity Metrics“ or RFC 6349 “Framework for TCP Throughput Testing”), we have summarised Rate metrology scenarios some interesting ideas regarding the ways to evaluate the network capacity.

We recommend to compare the results of different rate measurement jobs.

Objective

We recommend to compare at least the following OpenBACH jobs, which are based on active rate measurements (i.e. they perform measurements based on their own generated traffic):

  • iperf3 (server or client) generate TCP/UDP traffic and performs different kind of measurements on this traffic. Regarding TCP traffic, it tries to charge the link (depending on the window size) and it is capable of measuring rate (b/s) and data sent (bits). Regarding the UDP traffic, it is possible to specify the bit rate, and it is capable of measuring rate (b/s), data sent (bits), packets sent, jitter (ms), loss and PLR.
  • iperf2 (server or client): uses the version 2 of iperf. The configuration parameters and the metrics are the same of iperf3 job.
  • nuttcp (under development)

Regarding the rate metrology, it is also possible to perform passive test with jobs that measure the rate of the traffic generated by other components/jobs, such as the rate monitoring job (based on iptables packets/bits counting).

Example

It might be interesting to compare the traffic measured by the active jobs with a passive job. You can find below two examples of scenario in UDP mode and TCP mode during 45s

TCP mode

The json format for the TCP test is available below. You can import it to your project via the HMI OpenBACH (you need to change the name “Client1”/“Proxy1” in the .json for the name of your client/server entities).

rate_metrology_tcp.json
{
  "description": "",
  "openbach_functions": [
    {
      "id": 139724458,
      "label": "server",
      "start_job_instance": {
        "iperf3": {
          "server_mode": "True",
          "exit": "True",
          "port": "2500"
        },
        "offset": 0,
        "entity_name": "Server1"
      }
    },
    {
      "wait": {
        "time": 11,
        "launched_ids": [
          139724458
        ]
      },
      "id": 44711595,
      "label": "client",
      "start_job_instance": {
        "iperf3": {
          "time": "45",
          "port": "2500",
          "client_mode_server_ip": "172.20.34.26",
          "interval": "1"
        },
        "offset": 0,
        "entity_name": "Client1"
      }
    },
    {
      "wait": {
        "launched_ids": [
          44711595
        ]
      },
      "id": 109991227,
      "label": "rate",
      "start_job_instance": {
        "rate_monitoring": {
          "protocol": "tcp",
          "destination_port": "2500",
          "chain": "INPUT",
          "interval": "1"
        },
        "offset": 0,
        "entity_name": "Server1"
      }
    },
    {
      "wait": {
        "finished_ids": [
          44711595
        ]
      },
      "id": 7144480,
      "stop_job_instances": {
        "openbach_function_ids": [
          109991227
        ]
      },
      "label": "stop_rate"
    }
  ],
  "constants": {},
  "name": "iperf3",
  "arguments": {}
}

UDP mode

The json format for the UDP (at a rate of 2Mb/s) test is available below.

rate_metrology_udp.json
{
  "description": "",
  "openbach_functions": [
    {
      "id": 139724458,
      "label": "server",
      "start_job_instance": {
        "iperf3": {
          "server_mode": "True",
          "exit": "True",
          "port": "2500"
        },
        "offset": 0,
        "entity_name": "Server1"
      }
    },
    {
      "wait": {
        "time": 11,
        "launched_ids": [
          139724458
        ]
      },
      "id": 44711595,
      "label": "client",
      "start_job_instance": {
        "iperf3": {
          "time": "45",
          "port": "2500",
          "interval": "1",
          "udp": "True",
          "client_mode_server_ip": "172.20.34.26",
          "bandwidth": "2M"
        },
        "offset": 0,
        "entity_name": "Client1"
      }
    },
    {
      "wait": {
        "launched_ids": [
          44711595
        ]
      },
      "id": 109991227,
      "label": "rate",
      "start_job_instance": {
        "rate_monitoring": {
          "protocol": "udp",
          "destination_port": "2500",
          "chain": "INPUT",
          "interval": "1"
        },
        "offset": 0,
        "entity_name": "Server1"
      }
    },
    {
      "wait": {
        "finished_ids": [
          44711595
        ]
      },
      "id": 7144480,
      "stop_job_instances": {
        "openbach_function_ids": [
          109991227
        ]
      },
      "label": "stop_rate"
    }
  ],
  "constants": {},
  "name": "iperf3",
  "arguments": {}
}
openbach/exploitation/reference_scenarios/network/rate/index.1535707672.txt.gz · Last modified: 2019/06/11 16:18 (external edit)