On 9/4/19 5:46 PM, Willem de Bruijn wrote:
> On Wed, Sep 4, 2019 at 10:51 AM Steve Zabele <zab...@comcast.net> wrote:
>>
>> I think a dual table approach makes a lot of sense here, especially if we
>> look at the different use cases. For the DNS server example, almost
>> certainly there will not be any connected sockets using the server port, so
>> a test of whether the connected table is empty (maybe a boolean stored with
>> the unconnected table?)
UDP hash tables are shared among netns, and the hashes function depend on a
netns salt ( net_hash_mix())
(see udp_hashfn() definition)
So a boolean would be polluted on a slot having both non connected socket on
netns A, and a connected socket for netns B.
should get to the existing code very quickly and not require accessing the
memory holding the connected table. For our use case, the connected sockets
persist for long periods (at network timescales at least) and so any rehashing
should be infrequent and so have limited impact on performance overall.
>>
>> So does a dual table approach seem workable to other folks that know the
>> internals?
>
> Let me take a stab and compare. A dual table does bring it more in
> line with how the TCP code is structured.
>