• David S. Miller's avatar
    [TCP]: Improve ipv4 established hash function. · 7adc3830
    David S. Miller authored
    If all of the entropy is in the local and foreign addresses,
    but xor'ing together would cancel out that entropy, the
    current hash performs poorly.
    
    Suggested by Cosmin Ratiu:
    
    	Basically, the situation is as follows: There is a client
    	machine and a server machine. Both create 15000 virtual
    	interfaces, open up a socket for each pair of interfaces and
    	do SIP traffic. By profiling I noticed that there is a lot of
    	time spent walking the established hash chains with this
    	particular setup.
    
    	The addresses were distributed like this: client interfaces
    	were 198.18.0.1/16 with increments of 1 and server interfaces
    	were 198.18.128.1/16 with increments of 1. As I said, there
    	were 15000 interfaces. Source and destination ports were 5060
    	for each connection.  So in this case, ports don't matter for
    	hashing purposes, and the bits from the address pairs used
    	cancel each other, meaning there are no differences in the
    	whole lot of pairs, so they all end up in the same hash chain.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7adc3830
inet_sock.h 5.08 KB