• D. Wythe's avatar
    net/smc: Limit backlog connections · 8270d9c2
    D. Wythe authored
    Current implementation does not handling backlog semantics, one
    potential risk is that server will be flooded by infinite amount
    connections, even if client was SMC-incapable.
    
    This patch works to put a limit on backlog connections, referring to the
    TCP implementation, we divides SMC connections into two categories:
    
    1. Half SMC connection, which includes all TCP established while SMC not
    connections.
    
    2. Full SMC connection, which includes all SMC established connections.
    
    For half SMC connection, since all half SMC connections starts with TCP
    established, we can achieve our goal by put a limit before TCP
    established. Refer to the implementation of TCP, this limits will based
    on not only the half SMC connections but also the full connections,
    which is also a constraint on full SMC connections.
    
    For full SMC connections, although we know exactly where it starts, it's
    quite hard to put a limit before it. The easiest way is to block wait
    before receive SMC confirm CLC message, while it's under protection by
    smc_server_lgr_pending, a global lock, which leads this limit to the
    entire host instead of a single listen socket. Another way is to drop
    the full connections, but considering the cast of SMC connections, we
    prefer to keep full SMC connections.
    
    Even so, the limits of full SMC connections still exists, see commits
    about half SMC connection below.
    
    After this patch, the limits of backend connection shows like:
    
    For SMC:
    
    1. Client with SMC-capability can makes 2 * backlog full SMC connections
       or 1 * backlog half SMC connections and 1 * backlog full SMC
       connections at most.
    
    2. Client without SMC-capability can only makes 1 * backlog half TCP
       connections and 1 * backlog full TCP connections.
    Signed-off-by: default avatarD. Wythe <alibuda@linux.alibaba.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8270d9c2
af_smc.c 80.5 KB