-
Notifications
You must be signed in to change notification settings - Fork 125
OpenFastPath Performance Measurement Procedure
This is a copy of OFP performance measurement procedure.odt by Sorin Vultureanu, ENEA.
OpenFastPath (OFP) is a high performance data-plane stack designed to scale linearly on multi-core and to have the best performance per core.
OFP utilizes the functionality provide by OpenDataPlane (ODP) to achieve maximum input / output packet performance. As the ODP implementation is dependent on the used network interface controller (NIC), the available hardware acceleration may differ.
ODP Version |
|
OFP commit number |
|
OFP configure parameters |
|
OFP code changes (attach patch file) |
HW Version |
|
SDK Version |
|
Core Frequency / IO Frequency |
|
NIC Interfaces |
The following test describes a pure IP forwarding use-case. Using the information in the route and arp tables, received packets are sent to the appropriate interface based on the packets IP header.
IP traffic is sent from a packet generator (node 1) to a destination (node 3) by using a forwarding node 2 with OFP application running and configured for this operation.
OFP application on node 2 forwards IP traffic from interface fp0 to interface fp1 using the route table and ARP table entries.
TODO: diagram
-
Start application that uses OFP on node 2. Ex:
./fpm -i interface0,interface1 -c 3 -p
-
Connect with telnet to OFP CLI on port 2345. To connect remotely you need to have a management interface/IP on node 2.
telnet 127.0.0.1 2345
-
Configure IPs on fpX interfaces with commands:
ifconfig fp0 192.168.10.2/24 ifconfig fp1 192.168.20.2/24
-
Ping node 2 from node 3 in order to populate the ARP table. Doing this prior to the high load test start avoids the loss of ARP responses due to depleted packet buffers. I.e. before they can be handled by the normal ARP request / ARP response procedure.
-
Generate traffic from packet generator (node 1)
-
Collect results from destination (node 3) or from OFP application (node 2).
OFP target configuration snapshot from CLI:
> route Destination Gateway Iface 192.168.10.2/24 0.0.0.0 fp0 192.168.20.2/24 0.0.0.0 fp1
> arp VRF ADDRESS MAC AGE 0 192.168.10.1 ec:9e:cd:0e:36:a2 27 0 192.168.20.1 ec:9e:cd:0e:36:a3 27
IPv4 Forwarding with 64-byte frame |
Performance in Mpps |
1 core (“-c 3” parameter) |
|
2 core (“-c 5” parameter) |
|
4 core (“-c 7” parameter) |
The following test describes a UDP forwarding use-case.
UDP packets are sent from a packet generator (node 1) to multiple destination sockets on node 2, these are then forwarded to a single socket on node 3.
Udp_fwd_sock OFP application is used to forward UDP packets received on interface fp0 to node 3 through interface fp1.
TODO: diagram
-
Start OFP application on node 2:
./udp_fwd_sock -i interface0,interface1 -c 3 -l 192.168.10.2 -r 192.168.20.1 -s 1
-
Connect with telnet to OFP CLI on port 2345. To connect remotely you need to have a management interface/IP on node 2.
telnet 127.0.0.1 2345
-
Configure IPs on fpX interfaces with commands:
> ifconfig fp0 192.168.10.2/24 > ifconfig fp1 192.168.20.2/24
-
Ping node 2 from node 3 in order to populate the ARP table. Doing this prior to the high load test start avoids the loss of ARP responses due to depleted packet buffers. I.e. before they can be handled by the normal ARP request / ARP response procedure.
-
Generate traffic from packet generator (node 1)
-
Collect results from destination (node 2).
OFP target configuration snapshot from CLI:
> route Destination Gateway Iface 192.168.10.2/24 0.0.0.0 fp0 192.168.20.2/24 0.0.0.0 fp1
> arp VRF ADDRESS MAC AGE 0 192.168.10.1 ec:9e:cd:0e:36:a2 27 0 192.168.20.1 ec:9e:cd:0e:36:a3 27
Node 1 and node 3 can be a single machine or Spirent/Ixia traffic generator with two real interfaces and IP addresses assigned in two networks and connected to node 2.
UDP Forwarding, 64B frame, one source socket on node 1 per destination socket |
Mpps with one socket |
Mpps with 2 sockets |
Mpps with 4 sockets |
1 core (“-c 3” parameter) |
|||
2 core (“-c 5” parameter) |
|||
4 core (“-c 7” parameter) |
|||
UDP Forwarding, 64B frame, 100K sources sockets on node 1 |
|||
1 core (“-c 3” parameter) |
|||
2 core (“-c 5” parameter) |
|||
4 core (“-c 7” parameter) |