Web Analytics
Skip to content

Gigaflow Benchmarking Guide

This guide explains how to evaluate Gigaflow against Megaflow cache using real-world vSwitch pipelines and traffic traces.

Experiment Setup

If you haven't completed the last step of installation, then you need to setup the experiment first. Inside the Ansible container, run the following command to install the datasets (pipelines and traffic traces) on the GVS and TGEN machines.

Ansible Container
make setup-gvs-experiment

This command will also install gvs and tgen along with all their dependencies on the respective machines.

Option 1. Run All Experiments

To run all experiments (end-to-end and microbenchmarks) and collect logs, run the following command:

Ansible Container
make run-gvs-experiment

Option 2. End-to-End Evals

To setup and run only end-to-end experiments:

Ansible Container
make run-gvs-ee-experiment

Option 3. Microbenchmarks

To setup and run only microbenchmark experiments:

Ansible Container
make run-gvs-bm-experiment

Option 4. Custom Experiment

To setup and run a specific experiment (with a given locality, pipeline, and Gigaflow tables configuration), modify the following variables in vars/main.yml.

Config 1: Locality

The locality (high/low) to generate the correct traffic load.

vars/main.yml
68
69
70
locality_dynamic:
  current:
    locality: "high-locality"

Choose an option from locality_static. The other available options are as following:

vars/main.yml
72
73
74
75
locality_static:
  all:
    - locality: "high-locality"
    - locality: "low-locality"

Config 2: vSwitch Pipeline

The pipeline to install in the vSwitch and send traffic for.

vars/main.yml
77
78
79
80
pipelines_dynamic: 
  current: 
    name: "cord-ofdpa"
    sub_path: "cord/ofdpa"

Choose an option from pipelines_static. Other available options are as following:

vars/main.yml
82
83
84
85
86
87
88
89
90
91
92
93
pipelines_static:
  all:
    - name: "antrea-ovs"
      sub_path: "antrea/ovs"
    - name: "ovn-logical-switch"
      sub_path: "ovn/logical-switch"
    - name: "pisces-l2l3-acl"
      sub_path: "pisces/l2l3-acl"
    - name: "cord-ofdpa"
      sub_path: "cord/ofdpa"
    - name: "openflow-ttp-l2l3-acl"
      sub_path: "openflow-ttp/l2l3-acl"

Config 3: Gigaflow Tables

The number of Gigaflow tables and entries in each of them.

vars/main.yml
95
96
97
98
99
gigaflow_dynamic:
  experiment: "ee" # this is just the name for the logs directory
  options:
      gigaflow_tables_limit: 4
      gigaflow_max_entries: 8000

Choose an option from gigaflow_static. Other available options are as following:

vars/main.yml
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
gigaflow_static:
  ee:
    - gigaflow_tables_limit: 1
      gigaflow_max_entries: 32000
    - gigaflow_tables_limit: 4
      gigaflow_max_entries: 8000
  bm:
    - gigaflow_tables_limit: 1
      gigaflow_max_entries: 100000
    - gigaflow_tables_limit: 2
      gigaflow_max_entries: 100000
    - gigaflow_tables_limit: 3
      gigaflow_max_entries: 100000
    - gigaflow_tables_limit: 4
      gigaflow_max_entries: 100000
    - gigaflow_tables_limit: 5
      gigaflow_max_entries: 100000

Once these variables are setup, run the following sequence of commands.

Ansible Container
make resetup-tgen-scripts
make start-switch-gvs 
make install-rules
make start-tgen
make stop-tgen
make uninstall-rules 
make stop-switch-gvs
make collect-logs

Experiment Teardown

To stop the experiment and remove all installed components, run the following command:

Ansible Container
make teardown-gvs-experiment

Documentation