Skip to content

Latest commit

 

History

History
154 lines (129 loc) · 6.06 KB

README.config.org

File metadata and controls

154 lines (129 loc) · 6.06 KB

TIPSY configuration guide

TIPSY relies on a high-level main configuration file to perform reliable and reproducible benchmarks. The key to the flexibility of TIPSY is that this configuration allows to define a wide range of different tests, from stability tests to scalability and robustness measurements, using minimal configuration on the side of the user.

A sample configuration for TIPSY is given below.

{
    "benchmark": [
        {
            "id": "test1",
            "scale": "outer",
            "pipeline": {
		"core": 1,
		"name": "mgw",
                "user": [4,8],
                "bst": 1,
                "server": 2,
                "rate-limit": 10000,
                "nhop": 4,
                "fakedrop": false,
                "fluct-user": 0,
                "handover": 0,
                "fluct-server": 4
            },
            "traffic": {
                "pkt-size": [64, 128],
                "dir": ["uplink", "downlink", "bidir"]
            }
        }
    ],
    "default": {
            "traffic": {
                "pkt-num": 10000,
            }
        }
    },
    "visualize": []
}

The general rule is that when a configuration parameter is omitted, TIPSY chooses a sane built-in default.

The benchmark section

The configuration defines a main benchmark section that defines a list of benchmarks to be run. This allows to request multiple TIPSY benchmarks in a single configuration.

Each benchmark in turn defines the following subsections:

  • an unnamed “general” section that gives the overall settings for the benchmark, like name, scaling mode, etc.
  • pipeline: pipeline-specific settings
  • traffic: traffic generator settings
  • sut: SUT settings
  • tester: Tester settings

The pipeline section

Pipeline specific settings. The pipeline section has a mandatory name parameter that defines the name for the pipeline to be configured for the benchmark. The core parameter defines the number of CPU cores/workers. For other specific settings consult the docs and JSON schema of the individual pipelines.

The traffic section

Parameters for the traffic trace that will be fed to the pipeline by the Tester. This section might contain the below parameters.

  • pkt-size: packet size [byte]
  • pkt-num: number of packets
  • dir:
    • uplink: evaluate the upstream datapath
    • downlink: evaluate the downstream datapath
    • bidir: run test in both directions
  • thread: number of requested processing CPU threads. 0 means all of the available cores.
  • ascii: dump generated packets in human readable ASCII form

The tester section

Parameters for the Tester, among others, the traffic generator backend to be used for insert the traffic trace into the SUT and other Tester specific settings.

  • type: packet generator for the Tester (moongen or moongen-rfc2544)
  • test-time: runtime in seconds
  • moongen-cmd: absolute path of the MoonGen executable
  • uplink_port and downlink_port: port name (‘eth1’) or pci addr for DPDK (‘0000:0b:00.0’) or DPDK port number (in case of moongen, e.g., ‘0’).
  • core: number of CPU cores to use
  • setup_script: absolute path of your custom Tester setup script. Useful for e.g. automating DPDK interface configuration.
  • teardown_script: absolute path of your custom Tester teardown script

The sut section

Settings for the System-Under-Test (SUT).

  • type: SUT implementation (bess, ovs, etc.)
  • hostname: hostname that can be used to ssh into SUT without a password as ‘ssh hostname’. Edit ~/.ssh/config for more complicated scenarios. See man page: ssh_config (5)
  • bess-dir: a directory on SUT in which BESS is installed
  • tipsy-dir: a directory on SUT in which TIPSY is installed
  • erfs-dir: a directory on SUT in which ERFS is installed
  • t4p4s-dir: a directory on SUT in which T4P4S is installed
  • uplink_port and downlink_port: port name (‘eth1’) or pci addr for DPDK (‘0000:0b:00.0’) or DPDK port number (in case of moongen, e.g., ‘0’).
  • setup_script: absolute path of your custom SUT setup script. This script will run on the SUT before starting a measurement
  • teardown_script: absolute path of your custom SUT teardown script. This script will run on SUT after ending a measurement
  • coremask: hexadecimal coremask as string. Supported by bess, ovs, t4p4s, vpp. Required by t4p4as. (note: this defines the availabilty of the cores. The actual number of cores is defined by pipeline.core)
  • portmask: hexadecimal portmask as string. Supported by t4p4s. Required by t4p4as.
  • uplink-vpp-interface: uplink VPP Interface name. Required by VPP.
  • downlink-vpp-interface: downlink VPP Interface name. Required by VPP.

The default section

The default section provides an interface to apply benchmark parameters for every benchmark.

The visualize section

The visualize section can be used to configure plots of the captured data.

  • type: The type of the plot. (simple, table, contour, USL)
  • x-axis: The JSON Path in dot notation to the field in the result.json that is used on the x-axis
  • y-axis: The JSON Path in dot notation to the field in the result.json that is used on the y-axis
  • z-axis: The JSON Path in dot notation to the field in the result.json that is used on the z-axis
  • group-by: The JSON Path in dot notation to the field by which the data is grouped
  • filter: A mongoquery to filter the results before collecting the data for x-,y- and z-axis
  • title: The tite for the plot
  • axis-type: One of the axis types defined by matplotlib
  • aggregate: Mongo aggregation pipeline for more complex data filtering

The example directory contains samples for the visualize section too.