From: Ursula Braun <ubraun@linux.vnet.ibm.com>
To: netdev@vger.kernel.org
Cc: linux-s390@vger.kernel.org, davem@davemloft.net,
utz.bacher@de.ibm.com, ogerlitz@mellanox.com, monis@mellanox.com,
fowlerja@us.ibm.com, heiko.carstens@de.ibm.com,
frank.blaschka@de.ibm.com, ursula.braun@de.ibm.com,
ubraun@linux.vnet.ibm.com
Subject: [PATCH 0/3] [RFC] net: implement SMC-R solution
Date: Fri, 21 Nov 2014 21:08:01 +0100 [thread overview]
Message-ID: <1416600484-55631-1-git-send-email-ubraun@linux.vnet.ibm.com> (raw)
From: Ursula Braun <ursula.braun@de.ibm.com>
A connection using SMC-R starts out setting up a connection using the
TCP/IP protocol [2]. Thus an internal smc-managed TCP socket is established,
whose traffic flows across an interface belonging to the same Converged
Ethernet fabric, defined by a so-called "pnet table" [1].
As part of the connection setup, flags indicating the support
for SMC-R will be used to negotiate SMC-R usage. If any of the two parties
involved does not support SMC-R, the connection will fall back to plain TCP/IP
usage. If both parties support SMC-R, the TCP/IP connection will be used to
exchange the necessary connection data for setup of an Infiniband (IB)
connection in the so-called {\em rendezvous handshake}.
The code implements also the link management of the SMC-R protocol forming link
groups for each remote host and provide for
- dynamic addition of further RoCE Host Channel Adapters (HCAs) to form a
so-called link group
- seamless failover, moving existing connections from a failed HCA
to the remaining HCAs in a link group
- load balancing of connections across the links in a link group
SMC-R design defines memory areas for data transport through RDMA called
RDMA Memory Buffer (RMB) split up into several RMB Elements (RMBEs) assigned to
single connections. This initial Linux implementation requires real contiguous
storage for these RMBs and uses a separate RMB with just 1 RMBE for every
connection. Its size is derived from:
- a system wide default minimum SMC receive buffer size (tailorable by
/proc/net/smc/rcvbuf
- if given, the socket specific SETSOCKOPT SO_RCVBUF configuration
- the size of the tcp socket receive buffer determined from the system wide tcp
socket receive buffer configuration
- the amount of available contiguous storage
In the Linux implementation an equivalent concept exists for the socket send
buffers [1].
The patch provided does not yet cover:
- IPv6 support
- Tracing
- Statistic hooks
These items are on our list of things to do.
References:
[1] SMC-R Overview and Reference Materials:
http://www-01.ibm.com/software/network/commserver/SMCR/
[2] SMC-R Informational RFC:
http://datatracker.ietf.org/doc/draft-fox-tcpm-shared-memory-rdma-05/
Prerequiste for proper VLAN handling is this recent patch in
drivers/infiniband/core/verbs.c:
https://patchwork.kernel.org/patch/5335641/
Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
Ursula Braun (3):
[RFC] tcp: introduce TCP experimental option for SMC
[RFC] net: introduce socket family constants
[RFC] smc: introduce socket family AF_SMC
fs/splice.c | 1 +
include/linux/socket.h | 5 +-
include/linux/tcp.h | 5 +-
include/net/request_sock.h | 3 +-
include/net/tcp.h | 4 +
net/Kconfig | 1 +
net/Makefile | 1 +
net/ipv4/tcp_input.c | 41 +-
net/ipv4/tcp_minisocks.c | 4 +
net/ipv4/tcp_output.c | 26 +
net/smc/Kconfig | 9 +
net/smc/Makefile | 3 +
net/smc/af_smc.c | 2905 +++++++++++++++++++++++++++++++++++++++++
net/smc/af_smc.h | 669 ++++++++++
net/smc/smc_core.c | 3112 ++++++++++++++++++++++++++++++++++++++++++++
net/smc/smc_llc.c | 1472 +++++++++++++++++++++
net/smc/smc_llc.h | 192 +++
net/smc/smc_proc.c | 829 ++++++++++++
18 files changed, 9266 insertions(+), 16 deletions(-)
create mode 100644 net/smc/Kconfig
create mode 100644 net/smc/Makefile
create mode 100644 net/smc/af_smc.c
create mode 100644 net/smc/af_smc.h
create mode 100644 net/smc/smc_core.c
create mode 100644 net/smc/smc_llc.c
create mode 100644 net/smc/smc_llc.h
create mode 100644 net/smc/smc_proc.c
--
1.8.5.5
next reply other threads:[~2014-11-21 20:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-21 20:08 Ursula Braun [this message]
2014-11-21 20:08 ` [PATCH 1/3] [RFC] tcp: introduce TCP experimental option for SMC Ursula Braun
2014-11-21 20:08 ` [PATCH 2/3] [RFC] net: introduce socket family constants Ursula Braun
2014-11-21 20:08 ` [PATCH 3/3] [RFC] smc: introduce socket family AF_SMC Ursula Braun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1416600484-55631-1-git-send-email-ubraun@linux.vnet.ibm.com \
--to=ubraun@linux.vnet.ibm.com \
--cc=davem@davemloft.net \
--cc=fowlerja@us.ibm.com \
--cc=frank.blaschka@de.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-s390@vger.kernel.org \
--cc=monis@mellanox.com \
--cc=netdev@vger.kernel.org \
--cc=ogerlitz@mellanox.com \
--cc=ursula.braun@de.ibm.com \
--cc=utz.bacher@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox