[ovs-dev] [PATCH v4 2/3] datapath-windows: Implement locking in conntrack NAT.

Alin Serdean aserdean at cloudbasesolutions.com
Fri Jun 22 14:18:51 UTC 2018


> -----Mesaj original-----
> De la: ovs-dev-bounces at openvswitch.org <ovs-dev-
> bounces at openvswitch.org> În numele Anand Kumar
> Trimis: Tuesday, June 19, 2018 8:33 PM
> Către: dev at openvswitch.org
> Subiect: [ovs-dev] [PATCH v4 2/3] datapath-windows: Implement locking in
> conntrack NAT.
> 
> This patch primarily replaces existing ndis RWlock based implementaion for
> NAT in conntrack with a spinlock based implementation inside NAT, module
> along with some conntrack optimization.
> 
> - The 'ovsNatTable' and 'ovsUnNatTable' tables are shared
>   between cleanup threads and packet processing thread.
>   In order to protect these two tables use a spinlock.
>   Also introduce counters to track number of nat entries.
> - Introduce a new function OvsGetTcpHeader() to retrieve TCP header
>   and payload length, to optimize for TCP traffic.
> - Optimize conntrack look up.
> - Remove 'bucketlockRef' member from conntrack entry structure.
> 
> Testing:
> Verified loading/unloading the driver with driver verified enabled.
> Ran TCP/UDP and ICMP traffic.
> 
> Signed-off-by: Anand Kumar <kumaranand at vmware.com>
> ---
> v1->v2: Merge patch 2 and 3 so that NAT locks related changes are in a
> 	    single patch.
> v2->v3: No change
> v3->v4: No change
> ---
>  datapath-windows/ovsext/Conntrack-ftp.c |   4 +-
>  datapath-windows/ovsext/Conntrack-nat.c |  27 +++++++-  datapath-
> windows/ovsext/Conntrack-tcp.c |  15 ++---
>  datapath-windows/ovsext/Conntrack.c     | 110 +++++++++++++--------------
> -----
>  datapath-windows/ovsext/Conntrack.h     |  36 +++++++----
>  5 files changed, 100 insertions(+), 92 deletions(-)
> 

Can you please fold in the following:
diff --git a/datapath-windows/ovsext/Conntrack-nat.c b/datapath-windows/ovsext/Conntrack-nat.c
index 11057e6ed..559a7f689 100644
--- a/datapath-windows/ovsext/Conntrack-nat.c
+++ b/datapath-windows/ovsext/Conntrack-nat.c
@@ -151,7 +151,8 @@ VOID OvsNatFlush(UINT16 zone)
 VOID OvsNatCleanup()
 {
     if (ovsNatTable == NULL) {
-       return;
+        NdisFreeSpinLock(&ovsCtNatLock);
+        return;
     }

     NdisAcquireSpinLock(&ovsCtNatLock);

The rest looks good.

Acked-by: Alin Gabriel Serdean <aserdean at ovn.org>


More information about the dev mailing list