• Eric Dumazet's avatar
    tcp: improve REUSEADDR/NOREUSEADDR cohabitation · 946f9eb2
    Eric Dumazet authored
    inet_csk_get_port() randomization effort tends to spread
    sockets on all the available range (ip_local_port_range)
    
    This is unfortunate because SO_REUSEADDR sockets have
    less requirements than non SO_REUSEADDR ones.
    
    If an application uses SO_REUSEADDR hint, it is to try to
    allow source ports being shared.
    
    So instead of picking a random port number in ip_local_port_range,
    lets try first in first half of the range.
    
    This gives more chances to use upper half of the range for the
    sockets with strong requirements (not using SO_REUSEADDR)
    
    Note this patch does not add a new sysctl, and only changes
    the way we try to pick port number.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Marcelo Ricardo Leitner <mleitner@redhat.com>
    Cc: Flavio Leitner <fbl@redhat.com>
    Acked-by: default avatarFlavio Leitner <fbl@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    946f9eb2
inet_connection_sock.c 27.3 KB