diff options
author | Sugesh Chandran <sugesh.chandran@intel.com> | 2017-07-19 14:46:03 +0100 |
---|---|---|
committer | Joe Stringer <joe@ovn.org> | 2017-07-19 14:34:20 -0700 |
commit | 7c12dfc527a5f6e35eb47494d6284d5a7dbc352c (patch) | |
tree | b9dc15b3648391792ce45f6e3df5b90aabf9322d /lib/netdev-native-tnl.c | |
parent | ce8bbd37ffd41144f13b583726384f0f5e1db849 (diff) | |
download | openvswitch-7c12dfc527a5f6e35eb47494d6284d5a7dbc352c.tar.gz |
tunneling: Avoid datapath-recirc by combining recirc actions at xlate.
This patch set removes the recirculation of encapsulated tunnel packets
if possible. It is done by computing the post tunnel actions at the time of
translation. The combined nested action set are programmed in the datapath
using CLONE action.
The following test results shows the performance improvement offered by
this optimization for tunnel encap.
+-------------+
dpdk0 | |
-->o br-in |
| o--> gre0
+-------------+
--> LOCAL
+-----------o-+
| | dpdk1
| br-p1 o-->
| |
+-------------+
Test result on OVS master with DPDK 16.11.2 (Without optimization):
# dpdk0
RX packets : 7037641.60 / sec
RX packet errors : 0 / sec
RX packets dropped : 7730632.90 / sec
RX rate : 402.69 MB/sec
# dpdk1
TX packets : 7037641.60 / sec
TX packet errors : 0 / sec
TX packets dropped : 0 / sec
TX rate : 657.73 MB/sec
TX processing cost per TX packets in nsec : 142.09
Test result on OVS master + DPDK 16.11.2 (With optimization):
# dpdk0
RX packets : 9386809.60 / sec
RX packet errors : 0 / sec
RX packets dropped : 5381496.40 / sec
RX rate : 537.11 MB/sec
# dpdk1
TX packets : 9386809.60 / sec
TX packet errors : 0 / sec
TX packets dropped : 0 / sec
TX rate : 877.29 MB/sec
TX processing cost per TX packets in nsec : 106.53
The offered performance gain is approx 30%.
Signed-off-by: Sugesh Chandran <sugesh.chandran@intel.com>
Signed-off-by: Zoltán Balogh <zoltan.balogh@ericsson.com>
Co-authored-by: Zoltán Balogh <zoltan.balogh@ericsson.com>
Signed-off-by: Joe Stringer <joe@ovn.org>
Diffstat (limited to 'lib/netdev-native-tnl.c')
-rw-r--r-- | lib/netdev-native-tnl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/netdev-native-tnl.c b/lib/netdev-native-tnl.c index 5dbf5833d..ef579409b 100644 --- a/lib/netdev-native-tnl.c +++ b/lib/netdev-native-tnl.c @@ -139,7 +139,7 @@ netdev_tnl_ip_extract_tnl_md(struct dp_packet *packet, struct flow_tnl *tnl, * * This function sets the IP header's ip_tot_len field (which should be zeroed * as part of 'header') and puts its value into '*ip_tot_size' as well. Also - * updates IP header checksum. + * updates IP header checksum, as well as the l3 and l4 offsets in 'packet'. * * Return pointer to the L4 header added to 'packet'. */ void * |