Hi Sugesh and Darrell,
I reviewed this patchset v5 and it LGTM.
I've also tested it with 10 UDP flows, 64B packets and a firewall setup as
below.
----
table=0, priority=100,ct_state=-trk,ip actions=ct(table=1)
table=0, priority=10,arp actions=NORMAL
table=0, priority=1 actions=drop
table=1, ct_state=+new+trk,ip,in_port=dpdk0 actions=ct(commit),output:dpdk1
table=1, ct_state=+new+trk,ip,in_port=dpdk1 actions=drop
table=1, ct_state=+est+trk,ip,in_port=dpdk0 actions=output:dpdk1
table=1, ct_state=+est+trk,ip,in_port=dpdk1 actions=output:dpdk0
----
PDM threads: 2
2 phy ports
Code was built with CFLAGS="-O2 -march=native -g".
----
The reason I used just a tens of flows is because this way the throughput
is enough high to make any performance changes more evident.
I ran a continuous bi-dir test, ie data were sent at the line-rate from
both sides, regardless of packet loss.
I saw a performance improvement, below my results with three different runs.
For each run I've reported the Rx pkt rates for both sides.
+---------------+--------------+--------------+
| Run #1 | Run #2 | Run
#3 |
-----------------------------------------+---------------+--------------+--------------+
Latest master with commit id: | | |
|
8a8c1b93b1723e022665950ec0b623dc6b57fbb0 | (2.62, 2.67) | (2.43, 2.43) |
(2.58, 2.61) |
-----------------------------------------+---------------+--------------+--------------+
Latest master + this patchset | (2.80, 2.86) | (2.67, 2.67) |
(2.75, 2.79) |
-----------------------------------------+---------------+--------------+--------------+
Below the connections created by the 10 UDP streams.
udp,orig=(src=10.10.10.10,dst=20.20.20.27,sport=63,dport=63),reply=(src=20.20.20.27,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.26,sport=63,dport=63),reply=(src=20.20.20.26,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.20,sport=63,dport=63),reply=(src=20.20.20.20,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.22,sport=63,dport=63),reply=(src=20.20.20.22,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.25,sport=63,dport=63),reply=(src=20.20.20.25,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.28,sport=63,dport=63),reply=(src=20.20.20.28,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.23,sport=63,dport=63),reply=(src=20.20.20.23,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.21,sport=63,dport=63),reply=(src=20.20.20.21,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.24,sport=63,dport=63),reply=(src=20.20.20.24,dst=10.10.10.10,sport=63,dport=63)
udp,orig=(src=10.10.10.10,dst=20.20.20.29,sport=63,dport=63),reply=(src=20.20.20.29,dst=10.10.10.10,sport=63,dport=63)
-Antonio
> -----Original Message-----
> From: [email protected] [mailto:ovs-dev-
> [email protected]] On Behalf Of Sugesh Chandran
> Sent: Tuesday, July 11, 2017 5:00 PM
> To: [email protected]; [email protected]
> Subject: [ovs-dev] [PATCH v5 0/2] conntrack : Add support for rx checksum
> offload.
>
> Conntrack need not verify the checksum of incoming packets if it is
> validated
> by DPDK physical NIC ports.
> Also make use the DPDK rx checksum mask bits along with flags while
> validating
> the reported hardware checksum state.
>
> v4->v5
> (No functional changes in this version)
> - Rebased on latest master.
> - Added Darrel as co-author and removed the 'suggested by' tag.
> - Moved the bad checksum validate functions from patch-2 to patch-1.
>
> v3->v4
> - Rebased on latest master
> - Invoke 'checksum_valid' function only when checksum is not validated in
> hardware. Check the 'validate_checksum' flag first to invoke the
> 'checksum_valid' function accordingly.
>
> v2->v3
> - Rebased on latest master.
> - Updated the existing DPDK checksum validation function to honor hw
> offload
> masks along with checksum bits reported by hardware.
> - As suggested by Darrel, Introduced new functions to validate bad
> checksum
> reported by DPDK.
> - As proposed by Darrel, modified the conntrack checksum validation to
> check
> bad checksum first on received packets.
> - Modified conntrack to validate checksum in software only when it failed
> to
> - do in hardware. Changed the logic to validate bad and good checksum
> flags
> reported by hardware.
> - Added tag 'Suggested-by: Darrell Ball <[email protected]>'.
> - Removed Acked, Tested by tags from Antonio as the changes has been
> modified afterwards.
>
> v1->v2
> - Rebased on master
> - Added acked-by and tested-by tags in commit message
>
> Signed-off-by: Sugesh Chandran <[email protected]>
> Co-authored-by: Darrell Ball <[email protected]>
> Signed-off-by: Darrell Ball <[email protected]>
>
> Sugesh Chandran (2):
> dp-packet : Update DPDK rx checksum validation functions.
> conntrack : Use Rx checksum offload feature on DPDK ports for
> conntrack.
>
> lib/conntrack.c | 63 ++++++++++++++++++++++++++++++++++++----------------
> -----
> lib/dp-packet.h | 28 +++++++++++++++++++++++--
> 2 files changed, 66 insertions(+), 25 deletions(-)
>
> --
> 2.7.4
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev