• Tony Lu's avatar
    net/smc: Introduce TCP ULP support · d7cd421d
    Tony Lu authored
    This implements TCP ULP for SMC, helps applications to replace TCP with
    SMC protocol in place. And we use it to implement transparent
    replacement.
    
    This replaces original TCP sockets with SMC, reuse TCP as clcsock when
    calling setsockopt with TCP_ULP option, and without any overhead.
    
    To replace TCP sockets with SMC, there are two approaches:
    
    - use setsockopt() syscall with TCP_ULP option, if error, it would
      fallback to TCP.
    
    - use BPF prog with types BPF_CGROUP_INET_SOCK_CREATE or others to
      replace transparently. BPF hooks some points in create socket, bind
      and others, users can inject their BPF logics without modifying their
      applications, and choose which connections should be replaced with SMC
      by calling setsockopt() in BPF prog, based on rules, such as TCP tuples,
      PID, cgroup, etc...
    
      BPF doesn't support calling setsockopt with TCP_ULP now, I will send the
      patches after this accepted.
    Signed-off-by: default avatarTony Lu <tonylu@linux.alibaba.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d7cd421d
af_smc.c 75.7 KB