ctimbai / VPP-ACL

Repository to share non-VPP framework but useful tools for VPP-ACL related to performance evaluation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VPP-ACL

Repository to share non-VPP framework but useful tools for VPP-ACL related to performance evaluation

Requirement

VPP configuration

We use vpp-bench to start and configure VPP. So please check and modify variables in this directory VPP-ACL/vpp-bench/

Requirement:

  • config.source: in which there are the environment variables used to configure VPP.
  • vpp_start-default.sh: it is a script used to start VPP with a default configuration.

vpp-acl_plugin: we have introduced few functions in order to parse the Ruleset file and create an ACL; and we have introduced two different Elog structure in order to capture Classification Time and matched ACE_Index. So, in this directory there are only the modified file of the ones present in

MoonGen is a high-speed scriptable packet generator. The whole load generator is controlled by a Lua script: all packets that are sent are crafted by a user-provided script. Thanks to the incredibly fast LuaJIT VM and the packet processing library DPDK, it can saturate a 10 GBit Ethernet link with 64 Byte packets while using only a single CPU core. MoonGen can achieve this rate even if each packet is modified by a Lua script. It does not rely on tricks like replaying the same buffer.

MoonGen can also receive packets, e.g. to check which packets are dropped by a system under test. As the reception is also fully under control of the user's Lua script, it can be used to implement advanced test scripts. E.g. one can use two instances of MoonGen that establish a connection with each other. This setup can be used to benchmark middle-boxes like firewalls.

Installation: take a look to their instructions

Our parser scripts: it takes in input the TraceSet generated by ClassBench; it parses this file and it generates tables lua variables in which are stored packet fields values (one for each protocol over ipv4: TCP, UDP, ICMP). Then each table is given in input to a task that creates packets and sends them to VPP.

Internet service providers are reluctant to distribute copies of real filter sets for security and confidentiality reasons, hence realistic test vectors are a scarce commodity. The small subset of the research community who obtain real filter sets either limit performance evaluation to the small sample space or employ ad hoc methods of modifying those filter sets. The Filter Set Generator produces synthetic filter sets that accurately model the characteristics of real filter sets. The Trace Generator that produces a sequence of packet headers to exercise the synthetic filter set.

Taylor, D. E., & Turner, J. S. (2007). Classbench: A packet classification benchmark. IEEE/ACM Transactions on Networking (TON), 15(3), 499-511.

Ruleset (from PartitionSort)

We use the ClassBench utility to generate rulesets since we do not have access to real rulesets. These rulesets are designed to mimic real rulesets. It includes 12 parameter files that are divided into three different categories: 5 access control lists (ACL), 5 firewalls (FW) and 2 IP chains (IPC). We generate lists of 1K, 2K, 4K, 8K, 16K, 32K, and 64K rules. For each size, we generate 5 classifiers for each parameter file, yielding 60 classifiers per size and 420 classifiers total.

Yingchareonthawornchai, S., Daly, J., Liu, A. X., & Torng, E. (2016, November). A sorted partitioning approach to high-speed and fast-update OpenFlow classification. In Network Protocols (ICNP), 2016 IEEE 24th International Conference on (pp. 1-10). IEEE.

Classbench trace generator

In order to evaluate the throughput of techniques employing caching or the power consumption of various devices under load, we must exercise the algorithm or device using a sequence of synthetic packet headers. The Trace Generator produces a list of synthetic packet headers that probe filters in a given filter set. Note that we do not want to generate random packet headers. Rather, we want to ensure that a packet header is covered by at least one filter in the FilterSet in order to exercise the packet classifier and avoid default filter matches.

Taylor, D. E., & Turner, J. S. (2007). Classbench: A packet classification benchmark. IEEE/ACM Transactions on Networking (TON), 15(3), 499-511.

Plotting

Requirement: Matplotlib, Python2

To install Matplotlib at the system-level, we recommend that you use your distribution’s package manager. This will guarantee that Matplotlib’s dependencies will be installed as well.

If, for some reason, you cannot use the package manager, you may use the wheels available on PyPI:

python -mpip install matplotlib

About

Repository to share non-VPP framework but useful tools for VPP-ACL related to performance evaluation


Languages

Language:C 76.9%Language:C++ 6.1%Language:Python 6.1%Language:Shell 5.3%Language:Lua 4.1%Language:Objective-C 1.1%Language:Makefile 0.4%