1About

It is commonly accepted that decoupling network functions (NFs) from the underlying physical infrastructure using virtualization and cloud technologies enables service innovation. By means of Software Defined Networking (SDN), the programmability of the Network Function Virtualization (NFV) infrastructure has gained a huge potential for supporting the deployment of NFs in a variety of (virtualized) environments, including Internet and cloud service providers, campus and enterprise networks, and over-the-top applications.

One of the fundamental questions is: Are the software-based solutions (ever going to be) able to cope with the forever changing and increasing traffic demands? Network Function Performance Analyzer is a publicly available, open-source measurement application, which is not only in accordance with standardized methodologies (RFC 2544), but also makes possible to comprehensively compare performance metrics of NFs in an exhaustive range of dimensions. More precisely, NFPA answers

  • how a software-based NF
  • implemented in a generic language (e.g., C/C++)
  • running on a generic platform (e.g., Intel Xeon)
  • over a generic operating system (e.g., Linux)
  • in different environments (e.g., virtual machine)
  • using different drivers performs
  • under different traffic patterns.
2Architecture
NFPA architecture

Complying with RFC 2544, our NFPA is a standalone benchmarking tool, connected to the Device Under Test (DUT), as depicted in the figure above. The NFPA user connects to an NFPA node, i.e., a computer that is able to run NFPA and is connected directly to a separate computer running the desired network function. It's typically connected via two interfaces, however, it is possible to use only one bidirectional link. Then, the user determines the measurement target on the NFPA node by all its relevant parameters, e.g., details of the hardware and software components, number of repeated measurements and their duration, and selects the traffic traces to be used. Afterwards, NFPA sends packets on port 0 (and also on port 1 in case of bidirectional measurements), while receives (a portion of those) packets on port 1 (and also on port 0 respectively), then it calculates the throughput of the DUT in terms of packet/s and bit/s. Once the measurement is finished, NFPA analyzes the results and plots them in the preset units, and in parallel saves the measurement data in a local database.

In addition, we provide a central server with a web-based API, whereby the NFPA user can upload and share the results for further comparison, and in return the user can browse the set of results measured by others.

3Platform and Applied Technologies

NFPA’s engine is implemented in Python and relies on standard libraries. It can be configured both by config files and via a lightweight web GUI. In order to avoid the limitation of kernel space network card drivers, NFPA’s network interface is built on Intel’s DataPlane Development Kit (DPDK) for fast packet processing: in particular, for sending and receiving traffic, NFPA uses PktGen with custom Lua scripts for parameterizing, automating and controlling the measurements. In order to support portability, the results are stored in a local SQLite database. Result charts are created using Gnuplot. The overall set of measurements at our central node is stored in PostgreSQL database.

4Traffic Traces

With the increased number of measurement needs and users, new traffic traces have been published, where in most cases the header fields have been randomized. Why is it important to use and match for random header fields? The answer is not trivial, but we have measured that in some cases network functions, such as Open vSwitch, are able to use prefix-es for flow rules making it to be more efficient than it might be in a more realistic scenario (for more details, see how caching (micro and megaflow cache) is implemented in Open vSwitch).

Nevertheless, to ease the usage of these pcap files for your network functions, we extended our site with a Use-cases page, where more details can be found.

Name #diff. flows Description Packet Size (bytes) Use-case Download
64 128 256 512 1024 1280 1500 other
trL2_1 1 Different destination MAC addresses x x x x x x x l2-switch Download
(483M)
trL2_10 10 Different destination MAC addresses x x x x x x x
trL2_100 100 Different destination MAC addresses x x x x x x x
trL2_1000 1000 Different destination MAC addresses x x x x x x x
trL2_10000 10.000 Different destination MAC addresses x x x x x x x
trL2_100000 100.000 Different destination MAC addresses x x x x x x x
trL3_1 1 Different destination IP addresses x x x x x x x l3-router Download
(484M)
trL3_10 10 Different destination IP addresses x x x x x x x
trL3_100 100 Different destination IP addresses x x x x x x x
trL3_1000 1000 Different destination IP addresses x x x x x x x
trL3_10000 10.000 Different destination IP addresses x x x x x x x
trL3_100000 100.000 Different destination IP addresses x x x x x x x
trPR_12 12 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x l2-switch
l3-router
Download
(500M)
trPR_24 24 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x
trPR_36 36 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x
trPR_48 48 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x
trPR_100 100 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x
trPR_1000 1000 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x
trPR_10000 10.000 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x
trPR_100000 100.000 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x
trPR_500000 500.000 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x l2-switch
l3-router
Download
(2.3G)
trPR_1000000 1.000.000 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x l2-switch
l3-router
Download
(4.5G)
trPR_2000000 2.000.000 Different dst and src MAC addresses, different src and dst IP addresses, different src and dst port x x x x x x x l2-switch
l3-router
Download
(8.9G)
LB_ACL_1 1 L2 headers are the same, random src IP, dst IP address=192.168.2.1, random src port and 80 dst port x x x x x x x load_balancer
Download
(489M)
LB_ACL_10 10 L2 headers are the same, random src IP with random src port, 70% of the flows have random dst IP addresses are random from range 192.168.2.1 - .10 with dst port 80 x x x x x x x
LB_ACL_100 100 L2 headers are the same, random src IP with random src port, 70% of the flows have random dst IP addresses are random from range 192.168.2.1 - .100 with dst port 80 x x x x x x x
LB_ACL_1000 1000 L2 headers are the same, random src IP with random src port, 70% of the flows have random dst IP addresses are random from range 192.168.2.1 - .100 with dst port 80 x x x x x x x
LB_ACL_10000 10.000 L2 headers are the same, random src IP with random src port, 70% of the flows have random dst IP addresses are random from range 192.168.2.1 - .100 with dst port 80 x x x x x x x
LB_ACL_100000 100.000 L2 headers are the same, random src IP with random src port, 70% of the flows have random dst IP addresses are random from range 192.168.2.1 - .100 with dst port 80x x x x x x x
AGW_1flows 1 L2 headers are the same, random local src IP (10.x), random dst IP address, random src port and dst port x x x x x x x agw
Download
(16M)
AGW_10flows 10 L2 headers are the same, random local src IP (10.x), random dst IP address, random src port and dst port x x x x x x x
AGW_100flows 100 L2 headers are the same, random local src IP (10.x), random dst IP address, random src port and dst port x x x x x x x
AGW_1000flows 1000 L2 headers are the same, random local src IP (10.x), random dst IP address, random src port and dst port x x x x x x x
AGW_10000flows 10.000 L2 headers are the same, random local src IP (10.x), random dst IP address, random src port and dst port x x x x x x x
AGW_100000flows 100.000 L2 headers are the same, random local src IP (10.x), random dst IP address, random src port and dst port x x x x x x x
trPR_v2_12 24 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x l3-router_v2
Download
(399M)
trPR_v2_24 12 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x
trPR_v2_36 36 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x
trPR_v2_48 48 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x
trPR_v2_100 100 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x
trPR_v2_1000 1000 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x
trPR_v2_10000 10.000 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x
trPR_v2_100000 100.000 Different src MAC addresses, same dst MAC address, different src and dst IP addresses (but exluding LAN, localhost, and Multicast addresses, different src and dst port x x x x x x x

5Publicity

See our published Demo paper presented at IEEE NFV-SDN Conference held in San Francisco 18th-20th, November, 2015.    [Bibtex]

@inproceedings{csikor2015nfvsdn,
title={{NFPA}: Network Function Performance Analyzer},
author={Csikor, Levente and Szalay, M\'ark and Sonkoly, Bal{\'a}zs and Toka, L\'aszl\'o},
booktitle={IEEE Conference on Network Function Virtualization and Software Defined Networks Demo Track (NFV-SDN)},
pages={17--19},
year={2015},
address = {San Francisco, CA, USA},
keywords = {Software defined networking},
note={Results are browsable at \url{http://nfpa.tmit.bme.hu}.}
}

Check our accompanying poster!

Citation: Google scholar