1AF_SMC(7) Linux Programmer's Manual AF_SMC(7)
2
3
4
6 AF_SMC - Sockets for SMC communication
7
9 #include <sys/socket.h>
10
11 #define AF_SMC 43
12
13 #define SMCPROTO_SMC 0
14
15 #define SMCPROTO_SMC6 1
16
17 tcp_sockfd = socket(AF_SMC, SOCK_STREAM, SMCPROTO_SMC);
18
19 tcp_sockfd = socket(AF_SMC, SOCK_STREAM, SMCPROTO_SMC6);
20
22 Shared Memory Communication via RDMA (SMC) is a socket over the RDMA
23 communication protocol that allows existing TCP socket applications to
24 transparently benefit from RDMA when exchanging data over an RDMA over
25 Converged Ethernet (RoCE) network. Those networks are not routable.
26 SMC provides host-to-host direct memory access without traditional
27 TCP/IP processing overhead. SMC offers preservation of existing IP
28 topology and IP security, and introduces minimal administrative and op‐
29 erational changes. The exploitation of SMC is transparent to TCP
30 socket applications.
31
32 The new address family AF_SMC supports the SMC protocol on Linux. It
33 keeps the address format of AF_INET and AF_INET6 sockets and supports
34 streaming socket types only.
35
36 Usage modes
37 Two usage modes are possible:
38
39 AF_SMC native usage
40 uses the socket domain AF_SMC instead of AF_INET and AF_INET6.
41 Specify SMCPROTO_SMC for AF_INET compatible socket semantics,
42 and SMC_PROTO_SMC6 for AF_INET6 respectively.
43
44 Usage of AF_INET socket applications with SMC preload library
45 converts AF_INET and AF_INET6 sockets to AF_SMC sockets. The
46 SMC preload library is part of the SMC tools package.
47
48 SMC socket capabilities are negotiated at connection setup. If one peer
49 is not SMC capable, further socket processing falls back to TCP usage
50 automatically.
51
52 Implementation details: Links and Link Groups
53 To run RDMA traffic to a peer, a so-called link is established between
54 a local RoCE card and a remote RoCE card. To enhance availability, you
55 can configure alternate links with automatic fail over. Primary and
56 backup links to a certain peer are combined in a so-called link group.
57
58 RoCE adapter mapping: Creation of a pnet table
59 The SMC protocol requires grouping of multiple physical networks -
60 standard Ethernet and RoCE networks. Such groups are called Physical
61 Networks (PNets). For SMC, RoCE adapter mapping is configured within a
62 table called pnet table. Any available Ethernet interface can be com‐
63 bined with available RDMA-capable network interface cards (RNICs), if
64 they belong to the same Converged Ethernet fabric. To configure RoCE
65 Adapter mapping, you must create a pnet table. Modify the table with
66 the smc-tools command smc_pnet.
67
68 For details see smc_pnet(8).
69
70 Displaying SMC socket state information
71 SMC socket state information can be obtained with the smc-tools command
72 smcss. For details see smcss(8).
73
74 Starting a TCP application to work with SMC
75 To use an existing TCP application to work with SMC, use the SMC
76 preload library. The SMC Tools package provides the command smc_run to
77 convert AF_INET and AF_INET6 socket calls to AF_SMC socket calls by
78 means of the preload technique. For more information about the preload
79 mechanism, see also ld.so(8).
80
81 Example:
82
83 smc_run ftp
84
85 This command-line example starts an FTP client over SMC.
86
87 MTU and Infiniband data transfer
88 Infiniband traffic may use MTU values 256, 512, 1024, 2048, or 4096.
89 SMC determines the configured MTU size of the RoCE Ethernet port, an‐
90 nounces this MTU size to the peer during connection start, and chooses
91 the minimum MTU size of both peers.
92
93
95 socket(2), ip(7), tcp(7), socket(7), smc_chk(8) smc_run(8), smcss(8),
96 smc_pnet(8)
97
99 AF_SMC, version 1.0.0
100
101 Initial version.
102
103
104
105smc-tools January 2017 AF_SMC(7)