Re: [PATCH nf] netfilter: nf_nat: skip nat clash resolution for same-origin entries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 29, 2019 at 03:51:42PM +0100, Florian Westphal wrote:
> From: Martynas Pumputis <martynas@weave.works>
> 
> It is possible that two concurrent packets originating from the same
> socket of a connection-less protocol (e.g. UDP) can end up having
> different IP_CT_DIR_REPLY tuples which results in one of the packets
> being dropped.
> 
> To illustrate this, consider the following simplified scenario:
> 
> 1. Packet A and B are sent at the same time from two different threads
>    by same UDP socket.  No matching conntrack entry exists yet.
>    Both packets cause allocation of a new conntrack entry.
> 2. get_unique_tuple gets called for A.  No clashing entry found.
>    conntrack entry for A is added to main conntrack table.
> 3. get_unique_tuple is called for B and will find that the reply
>    tuple of B is already taken by A.
>    It will allocate a new UDP source port for B to resolve the clash.
> 4. conntrack entry for B cannot be added to main conntrack table
>    because its ORIGINAL direction is clashing with A and the REPLY
>    directions of A and B are not the same anymore due to UDP source
>    port reallocation done in step 3.
> 
> This patch modifies nf_conntrack_tuple_taken so it doesn't consider
> colliding reply tuples if the IP_CT_DIR_ORIGINAL tuples are equal.
> 
> [ Florian: simplify patch to not use .allow_clash setting
>   and always ignore identical flows ]

I prefer this band aid remains small indeed.

Applied, thanks Florian.



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux