Date: Fri, 29 Mar 2024 12:45:00 +0000 (UTC) Message-ID: <660674498.1.1711716300123@41d7f1f4d17c> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_0_69450434.1711716300108" ------=_Part_0_69450434.1711716300108 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
A service locator is a string that describes how to contact a pa= rticular server, such as a RAMCloud storage server or the cluster coordinat= or. Each service locator specifies a transport along with paramete= rs to that transport. A transport is a particular mechanism for communicati= on, such as "kernel-level TCP" or "Infiniband reliable connected queue-pair= s". RAMCloud supports several different transports, and it is relatively st= raightforward to build new transports to experiment with new kinds of= networking. The parameters in a service locator provide additional informa= tion that identify a particular server. For example, in the case of TCP, th= e parameters specify a host name and port number. Here is an example of a s= ervice locator:
tcp:host=3Drc01,port=3D11000
=
The transport name is tcp
; it must come first, and is follo=
wed by a colon. The remainder of the service locator specifies names and va=
lues for parameters. In this locator, two parameters are specified: h=
ost
has the value rc01
, and port
has the v=
alue 11000
. Parameters are separated by commas.
When you start a RAMCloud server, you provide it with its service locato= r; this tells the server which transport to use, along with other informati= on such as which port it should listen on.
RAMCloud currently supports the following transports:
Example: basic+udp:host=3Drc01,port=3D11000
Basic
is RAMCloud's workhorse transport; it provides the be=
st combination of speed and robustness, so we recommend that you use this t=
ransport by default. It uses an unreliable datagram mechanism to deliver pa=
ckets, and provides reliable, flow-controlled, in-order delivery on top of =
the underlying datagram mechanism. The basic
transport is dist=
inct from the datagram mechanism, and it can work with any datagram mechani=
sm that implements a simple API. As of 2016, RAMCloud contains drivers for =
the following datagram mechanisms:
udp: Sends UDP packets through the kernel. This driver = is not very fast, since data must flow through the kernel, but it will run = almost anywhere.
infud: Uses Infiniband RDMA to send datagrams. The RDMA= mechanism allows direct communication between applications and the Infinib= and NIC, which provides low latency and high throughput.
dpdk: Uses the Intel DPDK library to send and receive U= DP packets. DPDK also uses kernel bypass, so this driver is quite fast.
solarflare: Uses the SolarFlare OpenOnload package to s= end and receive UDP packets. This driver requires SolarFlare NICs, but it u= ses kernel bypass, so it is also fast.
Service locators for the basic
transport must specify both =
the basic
transport and the particular driver, e.g. basi=
c+udp
, plus additional parameters as required by the driver. For det=
ails and examples, check the file scripts/cluster.py
in the RA=
MCloud distribution. In addition, you may need to check the in-code documen=
tation for particular drivers in order to see what parameters they support.=
Example: tcp:host=3Drc01,port=3D11000
The tcp
transport uses TCP accessed via standard kernel soc=
kets. This is the most portable of the RAMCloud transports, but unfortunate=
ly it is considerably slower than other transports because all data must fl=
ow through the kernel. The tcp
transport takes two param=
eters: host
is the name or IP address for the node where the s=
erver executes, and port
is the port number on which the serve=
r listens for connections.
Example: infrc:host=3Drc01,port=3D11000
The infrc
transport uses Infiniband reliable connected queu=
e pairs. It is built on the Mellanox RDMA library package, which allows the=
Infiniband NIC to be accessed directly from user-space applications (k=
ernel bypass). In order to use the infrc
transport, you w=
ill need to install Infiniband NICs and switches, such as those from Mellan=
ox. The infrc
transport uses UDP to exchange information durin=
g connection setup; the host
and port
parameters =
in the service locator identify the server's node and the port on which it =
is listening for UDP packets to open new connections.Once a connection is o=
pen, UDP is no longer used; all communication happens directly using Infini=
band. Note: the infrc
transport was our workhorse transport fo=
r many years, but we now recommand the basic
transport instead=
. Basic
is about as fast as infrc
, but it is more=
robust and stable.