draft-ietf-ips-iscsi-slp-00.txt   draft-ietf-ips-iscsi-slp-01.txt 
Internet Draft Mark Bakke Internet Draft Mark Bakke
<draft-ietf-ips-iscsi-slp-00> Cisco <draft-ietf-ips-iscsi-slp-01.txt> Cisco
Expires October 2001 Expires January 2002
Joe Czap Joe Czap
IBM
Jim Hafner Jim Hafner
John Hufferd
Kaladhar Voruganti
IBM IBM
Howard Hall Howard Hall
Pirus Pirus
Jack Harwood Jack Harwood
EMC EMC
John Hufferd
IBM
Yaron Klein Yaron Klein
Sanrad Sanrad
Marjorie Krueger
HP
Lawrence Lamers Lawrence Lamers
San Valley Systems San Valley Systems
Todd Sperry Todd Sperry
Adaptec Adaptec
Joshua Tseng Joshua Tseng
Nishan Nishan
Kaladhar Voruganti July 2001
IBM
April 2001
Finding iSCSI Targets and Name Servers Using SLP Finding iSCSI Targets and Name Servers Using SLP
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 2, line 25 skipping to change at page 2, line 22
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2001). All Rights Reserved. Copyright (C) The Internet Society (2001). All Rights Reserved.
Abstract Abstract
The iSCSI protocol provides a way for hosts to access SCSI devices The iSCSI protocol provides a way for hosts to access SCSI devices
over an IP network. This document defines the use of the Service over an IP network. This document defines the use of the Service
Location Protocol (SLP) by iSCSI hosts, devices, and name services, Location Protocol (SLP) by iSCSI hosts, devices, and management
along with the SLP service type templates that describe the services services, along with the SLP service type templates that describe the
they provide. services they provide.
1. Acknowledgements 1. Acknowledgements
This draft was produced as a companion document for the iSCSI Naming This draft was produced by the iSCSI Naming and Discovery team,
and Discovery team, including Joe Czap, Jim Hafner, John Hufferd, and including Joe Czap, Jim Hafner, John Hufferd, and Kaladhar Voruganti
Kaladhar Voruganti (IBM), Howard Hall (Pirus), Jack Hardwood (EMC), (IBM), Howard Hall (Pirus), Jack Harwood (EMC), Yaron Klein (Sanrad),
Yaron Klein (Sanrad), Lawrence Lamers (San Valley), Todd Sperry Marjorie Krueger (HP), Lawrence Lamers (San Valley), Todd Sperry
(Adaptec), and Joshua Tseng (Nishan). Thanks also to Julian Satran (Adaptec), and Joshua Tseng (Nishan). Thanks also to Julian Satran
(IBM) for suggesting the use of SLP for iSCSI discovery, and to Matt (IBM) for suggesting the use of SLP for iSCSI discovery, and to Matt
Peterson (Caldera) and James Kempf (Sun) for reviewing the document Peterson (Caldera) and James Kempf (Sun) for reviewing the document
from an SLP perspective. from an SLP perspective.
2. Introduction 2. Introduction
iSCSI [iSCSI] is a protocol used to transport SCSI [SAM2] commands, iSCSI [iSCSI] is a protocol used to transport SCSI [SAM2] commands,
data, and status across an IP network. This protocol is connection- data, and status across an IP network. This protocol is connection-
oriented, and is currently defined over TCP. iSCSI uses a client- oriented, and is currently defined over TCP. iSCSI uses a client-
server relationship. The client end of the connection is an server relationship. The client end of the connection is an
initiator, and sends SCSI commands; the server end of the connection initiator, and sends SCSI commands; the server end of the connection
is called a target, and receives and executes the commands. is called a target, and receives and executes the commands.
There are several methods an iSCSI initiator can use to find the There are several methods an iSCSI initiator can use to find the
targets to which it should connect. The discovery of iSCSI targets targets to which it should connect. Two of these methods can be
can be configured on the initiator in several ways: accomplished without the use of SLP:
- Each target and its address can be statically configured on the - Each target and its address can be statically configured on the
initiator. initiator.
- Each address providing targets can be configured on the initiator; - Each address providing targets can be configured on the initiator;
the initiator can query the address for a list of targets. iSCSI provides a mechanism by which the initiator can query the
address for a list of targets.
- A storage name server address can be configured on the initiator;
the initiator can use the storage name servers's protocol it
provides to obtain a list of targets.
These methods are further defined in "iSCSI Naming and Discovery The above methods are further defined in "iSCSI Naming and Discovery
Requirements" [NDT]. Requirements" [NDT].
Each of the above methods requires a small amount of configuration to Each of the above methods requires a small amount of configuration to
be done on each initiator. The ability to discover targets and name be done on each initiator. The ability to discover targets and name
services without having to configure initiators is a desirable services without having to configure initiators is a desirable
feature. The Service Location Protocol (SLP) [SLP] is an IETF feature. The Service Location Protocol (SLP) [SLP] is an IETF
standards track protocol that provides several features that will standards track protocol that provides several features that will
simplify locating iSCSI services. This document describes how SLP simplify locating iSCSI services. This document describes how SLP
can be used in iSCSI environments to discover targets, addresses can be used in iSCSI environments to discover targets, addresses
providing targets, and storage name servers. providing targets, and storage management servers.
WORK - Need to add RFC 3082 interaction and Unicast SLP commentary.
WORK - Add comments about lifetime of URLs and how it is used.
3. Notation Conventions 3. Notation Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
4. Terminology 4. Terminology
Here are some definitions that may aid readers that are unfamiliar Here are some definitions that may aid readers that are unfamiliar
with either SLP, SCSI, or iSCSI. Some of these definitions have been with either SLP, SCSI, or iSCSI. Some of these definitions have been
reproduced from [RFC2608] and "Finding an RSIP Server with SLP" reproduced from [RFC2608] and "Finding an RSIP Server with SLP"
[RSIP]. [RSIP].
User Agent (UA) A process working on the client's behalf to User Agent (UA) A process working on the client's behalf
establish contact with some service. The UA to establish contact with some service.
retrieves service information from the Service The UA retrieves service information from
Agents or Directory Agents. the Service Agents or Directory Agents.
Service Agent (SA) A process working on behalf of one or more Service Agent (SA) A process working on behalf of one or more
services to advertise the services and their services to advertise the services and
capabilites. their capabilites.
Directory Agent (DA) A process which collects service Directory Agent (DA) A process which collects service
advertisements. There can only be one DA advertisements. There can only be one DA
present per given host. present per given host.
Scope A named set of services, typically making up a Scope A named set of services, typically making
logical administrative group. up a logical administrative group.
Service Advertisement A URL, attributes, and a lifetime (indicating Service Advertisement A URL, attributes, and a lifetime
how long the advertisement is valid), providing (indicating how long the advertisement is
service access information and capabilities valid), providing service access
description for a particular service. information and capabilities description
for a particular service.
Initiator A logical entity, typically within a host, that Initiator A logical entity, typically within a host,
sends SCSI commands to targets to be executed. that sends SCSI commands to targets to be
An initiator is usually present in the form of executed. An initiator is usually present
a device driver. in the form of a device driver.
Target A logical entity, typically within a storage Target A logical entity, typically within a
controller or gateway, that receives SCSI storage controller or gateway, that
commands from an initiator and executes them. receives SCSI commands from an initiator
A target includes one or more Logical Units and executes them. A target includes one
(LUs); each LU is a SCSI device, such as a disk or more Logical Units (LUs); each LU is a
or tape drive. SCSI device, such as a disk or tape drive.
iSCSI Name A UTF-8 character string which serves as a iSCSI Name A UTF-8 character string which serves as a
unique identifier for iSCSI initiators and unique identifier for iSCSI initiators and
targets. Its format and usage is further targets. Its format and usage is further
defined in [NDT]. defined in [NDT].
iSCSI Client A logical entity, typically a host, which iSCSI Client A logical entity, typically a host, which
includes at least one iSCSI Initiator. includes at least one iSCSI Initiator.
iSCSI Server A logical entity, typically a storage iSCSI Server A logical entity, typically a storage
controller or gateway, which includes at least controller or gateway, which includes at
one iSCSI Target. least one iSCSI Target.
Storage Name Server An addressible entity that provides one of Storage Management Server An addressible entity that provides
several discovery and management services that management services that benefit an iSCSI
benefit an iSCSI environment. Storage Name environment. "Storage management server"
Server is used as a generic term, and is not is used as a generic term, rather than a
necessarily equivalent to that used within specific protocol or service.
Fibre Channel.
5. Using SLP for iSCSI Service Discovery 5. Using SLP for iSCSI Service Discovery
At least two entities are involved in iSCSI discovery. The end Two entities are involved in iSCSI discovery. The end result is that
result is that an iSCSI initiator (e.g. a host) discovers iSCSI an iSCSI initiator (e.g. a host) discovers iSCSI targets, usually
targets, usually provided by storage controllers or gateways. An provided by storage controllers or gateways.
iSCSI initiator may either discover these targets directly, using
SLP, or may opt to discover them through a storage name service. One iSCSI targets are registered with SLP as a set of service URLs, one
name service protocol currently under development is iSNS [ISNS]. In for each address on which the target may be accessed. Initiators
the first case, only SLP is needed. In the second, SLP may be used discover these targets using SLP service requests. Targets that do
to discover a name server, which can be used to provide additional not directly support SLP, or are under the control of a management
capabilities beyond simple target discovery. service, may be registered by a proxy service agent as part of the
software providing this service.
iSCSI entities may also use SLP to discover higher-level management
services where needed.
This section first describes the use of SLP for discovery of targets This section first describes the use of SLP for discovery of targets
by iSCSI initiators, and then describes the use of SLP to discover by iSCSI initiators, and then describes the use of SLP to discover
storage name servers. storage management servers.
This document assumes that SLPv2 will be used when discovering iSCSI- This document assumes that SLPv2 will be used when discovering iSCSI-
related services; no attempt is made to include support for SLPv1. related services; no attempt is made to include support for SLPv1.
5.1. Discovering iSCSI Targets using SLP 5.1. Discovering iSCSI Targets using SLP
The following diagram shows the relationship between iSCSI clients, The following diagram shows the relationship between iSCSI clients,
servers, initiators, and targets. An iSCSI client includes at least servers, initiators, and targets. An iSCSI client includes at least
one iSCSI initiator, and an SLP user agent (UA). An iSCSI server one iSCSI initiator, and an SLP user agent (UA). An iSCSI server
includes at least one iSCSI target, and an SLP service agent (SA). includes at least one iSCSI target, and an SLP service agent (SA).
skipping to change at page 6, line 14 skipping to change at page 6, line 14
5.1. Discovering iSCSI Targets using SLP 5.1. Discovering iSCSI Targets using SLP
The following diagram shows the relationship between iSCSI clients, The following diagram shows the relationship between iSCSI clients,
servers, initiators, and targets. An iSCSI client includes at least servers, initiators, and targets. An iSCSI client includes at least
one iSCSI initiator, and an SLP user agent (UA). An iSCSI server one iSCSI initiator, and an SLP user agent (UA). An iSCSI server
includes at least one iSCSI target, and an SLP service agent (SA). includes at least one iSCSI target, and an SLP service agent (SA).
Some entities, such as extended copy engines, include both initiators Some entities, such as extended copy engines, include both initiators
and targets. These include both an SA, for its targets to be and targets. These include both an SA, for its targets to be
discovered, and a UA, for its intiator(s) to discover other targets. discovered, and a UA, for its intiator(s) to discover other targets.
+---------------------------------+ +---------------------------------+
| iSCSI Client | | iSCSI Client |
| |
| +-----------+ | | +-----------+ |
| | iSCSI | | | | iSCSI | |
| | initiator | | | | initiator | |
| | "myhost" | |
| +-----------+ | | +-----------+ |
| | | |
+--------------------------+------+ +--------------------------+------+
| iSCSI Driver | UA | | iSCSI Driver | UA |
+--------------------------+------+ +--------------------------+------+
| TCP/UDP/IP | | TCP/UDP/IP |
+----------------+----------------+ +----------------+----------------+
| Interface 1 | Interface 2 | | Interface 1 | Interface 2 |
+----------------+----------------+ +----------------+----------------+
| | | |
+------------+ | | +------------+ +------------+ | | +------------+
| SLP DA | | | | SLP DA | | SLP DA | | | | SLP DA |
| |----+ IP Networks +----| | | (optional) |----+ IP Networks +----| (optional) |
| (optional) | | | | (optional) |
+------------+ | | +------------+ +------------+ | | +------------+
| | | |
+-----------------+-----------------| +-----------------+-----------------|
| Interface 1 | Interface 2 | | Interface 1 | Interface 2 |
| 10.1.30.21 | 10.1.40.3 | | 10.1.30.21 | 10.1.40.3 |
+-----------------+-----------------+ +-----------------+-----------------+
| TCP/UDP/IP | | TCP/UDP/IP |
+---------------------------+-------+ +---------------------------+-------+
| iSCSI Driver | SA | | iSCSI Driver | SA |
+---------------------------+-------| +---------------------------+-------|
| | | |
| +--------+ +--------+ +---------+ | | +--------+ +--------+ +---------+ |
| | iSCSI | | iSCSI | | iSCSI | | | | iSCSI | | iSCSI | | iSCSI | |
| | target | | target | | target | | | | target | | target | | target | |
| | "one" | | "two" | | "iscsi" | | | | "one" | | "two" | | "three" | |
| +--------+ +--------+ +---------+ | | +--------+ +--------+ +---------+ |
| |
| iSCSI Server | | iSCSI Server |
+-----------------------------------+ +-----------------------------------+
In the above drawing, the iSCSI server has three iSCSI targets that In the above drawing, the iSCSI server has three iSCSI targets that
the client could discover. The first two, targets "one" and "two", the client could discover, named "one", "two" and "three". The iSCSI
are actual targets that can support SCSI commands. The third, client has an iSCSI initiator with the name "myhost". The iSCSI
"iscsi", is the canonical target. An initiator can log in to the client may use the initiator name in its SLP Service Requests as a
canonical target, and use an iSCSI command called "SendTargets" to filter to discover only targets that are configured to accept iSCSI
obtain a list of the other targets within this iSCSI server. connections from "myhost".
Each of the iSCSI targets has a unique name, called an iSCSI Node Each iSCSI target and initiator has a unique name, called an iSCSI
Name, or simply iSCSI Name. This identifier is the same regardless Name. This identifier is the same regardless of the network path
of the network path (through adapter cards, networks, interfaces on (through adapter cards, networks, interfaces on the storage device)
the storage device) over which the target is discovered and accessed. over which the target is discovered and accessed. For this example,
For this example, the iSCSI names "one" and "two" are used. A real the iSCSI names "one" and "two", and "three" are used for the
iSCSI name incorporates more structure, including a naming authority, targets; the initiator uses the name "myhost". An actual iSCSI name
and is not described here. would incorporate more structure, including a naming authority, and
is not described here.
Each of the iSCSI targets in the drawing can appear at two addresses, Each of the iSCSI targets in the drawing can appear at two addresses,
since two network interfaces are present. Each target, then, would since two network interfaces are present. Each target, would have
have two URLs. two service URLs.
An iSCSI target URL consists of its fully qualified host name or IP An iSCSI target URL consists of its fully qualified host name or IP
address, the TCP port on which it is listening, and its world- wide address, the TCP port on which it is listening, and its iSCSI name.
unique identifier. If the server in this drawing is listening at TCP An iSCSI server must register each of its individual targets at each
port 3000 for both network addresses, the service URLs present would of its network addresses.
be:
- 10.1.30.21:3000/one
- 10.1.30.21:3000/two
- 10.1.30.21:3000/iscsi
- 10.1.40.3:3000/one The iSCSI server constructs a service advertisement of the type
"service:iscsi:target" for each of the service URLs it wishes to
register. The advertisement contains a lifetime, along with other
attributes which are defined in the service template.
- 10.1.40.3:3000/two If the server in the above drawing is listening at TCP port 5003 for
both network addresses, the service URLs registered would be:
- 10.1.40.3:3000/iscsi - 10.1.30.21:5003/one
An iSCSI server has two options when registering targets with the - 10.1.30.21:5003/two
service location protocol:
- Register the canonical target "iscsi" at each of its network - 10.1.30.21:5003/three
addresses. The initiator can use this target to discover the
others. This would create two service URLs in the example.
- The server can register the individual targets, "one" and "two", at - 10.1.40.3:5003/one
each of its network addresses. This would create four service URLs
in the example.
Although a target could do both types of registration, it would - 10.1.40.3:5003/two
probably not be helpful.
The iSCSI server constructs a service advertisement of the type - 10.1.40.3:5003/three
"service:iscsi:target" for each of the service URLs it wishes to
register. The advertisement contains a lifetime, along with other
attributes which are defined in the service template.
The remainder of the discovery procedure is identical to that used by The remainder of the discovery procedure is identical to that used by
any client/server pair implementing SLP: any client/server pair implementing SLP:
1. If an SLP DA is found, the SA contacts the DA and registers 1. If an SLP DA is found, the SA contacts the DA and registers
the advertisement. If no DA is found, the SA maintains the the advertisement. If no DA is found, the SA maintains the
advertisement itself, answering multicast UA queries advertisement itself, answering multicast UA queries
directly. directly.
2. When the iSCSI initiator requires contact information for an 2. When the iSCSI initiator requires contact information for an
iSCSI target, the UA either contacts the DA using unicast or iSCSI target, the UA either contacts the DA using unicast or
the SA using multicast. The UA includes a query based on the SA using multicast. If a UA is configured with the address
of the SA, it may avoid multicast and contact an SA using
unicast. The UA includes a query based on
the attributes to indicate the characteristics of the the attributes to indicate the characteristics of the
target(s) it requires. target(s) it requires.
3. Once the UA has the host name or address of the iSCSI server 3. Once the UA has the host name or address of the iSCSI server
as well as the port number and iSCSI Target Name, it can begin the as well as the port number and iSCSI Target Name, it can begin the
normal iSCSI login to the target. normal iSCSI login to the target.
5.2. Discovering Storage Name Services using SLP As information contained in the iSCSI target template may exceed
common network datagram sizes, the SLP implementation for both UAs
and SAs supporting this template MUST implement SLP over TCP.
Storage Name Servers can be built to perform discovery of targets in In some networks, the use of multicast for discovery purposes is
a variety of ways. They can also provide extended services beyond either unavailable or not allowed. Such networks include public or
discovery, which could include storage allocation and management. service-provider networks that are placed in between an iSCSI client
None of these services are defined here; the intent of this document and server; these are probably most common between two iSCSI
is to allow these services to be discovered by clients. gateways, one at a storage service provider site, and one at a
customer site.
In these networks, an initiator may, instead or in addition to its DA
configuration, allow the addresses of one or more SAs to be
configured. The initiator would then make unicast SLP service
requests directly to these SAs, without the use of multicast to first
discover them.
This functionality is well within the scope of the current SLP
protocol. However, it does have two consequences for implementors:
- A service-agent responding to requests for iSCSI targets MUST
implement SLP over TCP; UDP only is not enough.
- An initiator configured to make direct, unicast requests to an
SA will have to add this to the SLP API, if it is following the
service location API defined in [RFC2614].
5.2. Discovering Storage Management Services using SLP
Storage management servers can be built to manage and control access
to targets in a variety of ways. They can also provide extended
services beyond discovery, which could include storage allocation and
management. None of these services are defined here; the intent of
this document is to allow these services to be discovered by both
clients and servers, in addition to the target discovery already
being performed.
The following drawing shows an iSCSI client, an iSCSI server, and a The following drawing shows an iSCSI client, an iSCSI server, and a
storage name server. To simplify the drawing, the second IP network storage management server. To simplify the drawing, the second IP
is not shown, but is assumed to exist. The storage name server would network is not shown, but is assumed to exist. The storage
use its own protocol (snsp) to provide capabilities to iSCSI clients management server would use its own protocol (smsp) to provide
and servers; these clients and servers could both use SLP to discover capabilities to iSCSI clients and servers; these clients and servers
the storage name server. can both use SLP to discover the storage management server.
+---------------------------+ +---------------------------+
| iSCSI Client | | iSCSI Client |
| | | |
| +-----------+ | | +-----------+ |
| | iSCSI | | | | iSCSI | |
| | initiator | | | | initiator | |
| +-----------+ | | +-----------+ |
| | | |
+---------------+------+----+ +------------+ +---------------+------+----+ +------------+
| iSCSI Driver | snsp | UA | | SLP DA | | iSCSI Driver | smsp | UA | | SLP DA |
+---------------+------+----+ | | +---------------+------+----+ | |
| TCP/UDP/IP | | (optional) | | TCP/UDP/IP | | (optional) |
+---------------+------+----+ +------------+ +---------------+------+----+ +------------+
| | | |
| IP Network | | IP Network |
------------------------------------------ ------------------------------------------
| | | |
| | | |
+---------------+-----------+ +---------------------+ +---------------+-----------+ +---------------------+
| TCP/UDP/IP | | TCP/UDP/IP | | TCP/UDP/IP | | TCP/UDP/IP |
+---------------+------+----+ +---------------------+ +---------------+------+----+ +---------------------+
| iSCSI Driver | snsp | UA | | SA | snsp | | iSCSI Driver | smsp | UA | | SA | smsp |
+---------------+------+----+ +---------------------+ +---------------+------+----+ +---------------------+
| | | | | | | |
| +--------+ +--------+ | | storage name server | | +--------+ +--------+ | | storage mgmt server |
| | iSCSI | | iSCSI | | | | | | iSCSI | | iSCSI | | | |
| | target | | target | | +---------------------+ | | target | | target | | +---------------------+
| | 1 | | 2 | | | | 1 | | 2 | |
| +--------+ +--------+ | | +--------+ +--------+ |
| | | |
| iSCSI Server | | iSCSI Server |
+---------------------------+ +---------------------------+
Note the difference between the storage name server model and the
previously-defined target discovery model. When target discovery was
used, the iSCSI Server implemented an SA, to be discovered by the
initiator's UA. In the storage name server model, the iSCSI clients
and servers both implement UAs, and the name server implements the
SA. To be discovered by an initiator in this model, a target first
find the storage name server, and then register itself with the name
server using the name server's protocol.
A storage name server's URL contains the domain name or IP address Note the difference between the storage management server model and
and TCP port. No other information is required. the previously-defined target discovery model. When target discovery
was used, the iSCSI Server implemented an SA, to be discovered by the
initiator's UA. In the storage management server model, the iSCSI
clients and servers both implement UAs, and the management server
implements the SA.
The iSCSI server constructs a service advertisement of the type A storage management server's URL contains the domain name or IP
"service:iscsi:target" for each of the addresses at which it appears. address and TCP port. No other information is required.
The advertisement contains the URL, a lifetime, along with other
attributes which are defined in the service template. The storage management server constructs a service advertisement of
the type "service:iscsi:sms" for each of the addresses at which it
appears. The advertisement contains the URL, a lifetime, along with
other attributes which are defined in the service template.
The remainder of the discovery procedure is identical to that used to The remainder of the discovery procedure is identical to that used to
discover iSCSI targets, except that both initiators and targets would discover iSCSI targets, except that both initiators and targets would
normally be "clients" of the storage name service. normally be "clients" of the storage management service.
5.3. Supporting Discovery of Targets and Name Services
An initiator should support, at a minimum, discovery of targets using
SLP. If an initiator also supports a storage name service, the
initiator should use SLP to discover the storage name service, and
perform target discovery through the name service. An initiator may
discover other targets directly even when using a name service, or
may discover targets via multiple name services.
For example, the name service may be used to discover targets at a
remote location, and SLP may used to discover local targets that are
not part of the service.
Targets that support a particular storage name service can be
configured to be discovered through that name service. A target
configured in this way should not answer direct SLP discovery
requests from initiators; they should effectively disable their
service:iscsi:target SA functionality while under the control of a
name service. This prevents targets from being duplicated between
SLP and the name service. A target should also not be configured to
support more than one name service at the same time.
5.4. Interoperating Between Initiators, Targets, and Name Services
Many initiators will support the basic discovery of targets using Targets that support a storage management service implement a UA in
SLP, but will not always support a particular storage name service in addition to the SA. A target may alternatively just implement the
use. A storage name server may provide the capability to support UA, and allow the storage management service to advertise its targets
these initiators by forming service advertisements for use through appropriately by providing an SA and registering the appropriate
its SA on behalf of the targets it has discovered. This would allow service:iscsi:target registrations on the target's behalf; the target
an initiator to discover targets in a storage name service device would not have to advertise its own targets. This has no
environment, without having direct support for the storage name impact on the initiator.
service protocol in use.
Targets not supporting the storage name service protocol in use can This allows the initiators' discovery of targets to be completely
be discovered separately from the name service. interoperable regardless of which storage management service is used,
or whether one is used at all, or whether the target registrations
are provided directly by the target or by the management service.
6. iSCSI SLP Templates 6. iSCSI SLP Templates
Three templates are provided: an iSCSI target template, a name Three templates are provided: an iSCSI target template, a management
service template, and an abstract template to encapsulate the two. service template, and an abstract template to encapsulate the two.
6.1. The iSCSI Abstract Service Type Template 6.1. The iSCSI Abstract Service Type Template
This template defines the abstract service "service:iscsi". It is This template defines the abstract service "service:iscsi". It is
used as a top-level service to encapsulate all other iSCSI-related used as a top-level service to encapsulate all other iSCSI-related
services. services.
Name of submitter: Mark Bakke Name of submitter: Mark Bakke
Language of service template: en Language of service template: en
skipping to change at page 12, line 12 skipping to change at page 12, line 14
--------------------------template ends here------------------------ --------------------------template ends here------------------------
6.2. The iSCSI Target Concrete Service Type Template 6.2. The iSCSI Target Concrete Service Type Template
This template defines the service "service:iscsi:target". An entity This template defines the service "service:iscsi:target". An entity
containing iSCSI targets that wishes them discovered via SLP would containing iSCSI targets that wishes them discovered via SLP would
register each of them, with each of their addresses, as this service register each of them, with each of their addresses, as this service
type. type.
Initiators and name services wishing to discover targets in this way Initiators (and perhaps management services) wishing to discover
will generally use one of the following query strings: targets in this way will generally use one of the following queries:
1. Find a specific target, given its iSCSI Target Name: 1. Find a specific target, given its iSCSI Target Name:
Service: service:iscsi:target Service: service:iscsi:target
Scope: initiator-or-name-server-scope-list Scope: initiator-scope-list
Query: (iscsi-name=fqn.com.acme.sn.456) Query: (iscsi-name=iqn.5886.com.acme.sn.456)
2. Find all of the iSCSI Target Names that may allow access to a 2. Find all of the iSCSI Target Names that may allow access to a
given given initiator:
initiator:
Service: service:iscsi:target Service: service:iscsi:target
Scope: initiator-or-name-server-scope-list Scope: initiator-scope-list
Query: (access-list=fqn.com.os.hostid.045A7B) Query: (access-list=iqn.5886.com.os.hostid.045A7B)
3. In addition, a name service may wish to discover all targets, 3. Find the iSCSI Target Names from which the given initiator is
and assume responsibility for them. It may issue a simple query allowed to boot:
for all of the targets:
Service: service:iscsi:target Service: service:iscsi:target
Scope: name-server-scope-list Scope: initiator-scope-list
Query: none Query: (boot-list=iqn.5886.com.os.hostid.045A7B)
4. Find the iSCSI Target Names from which the given initiator is 4. In addition, a management service may wish to discover all
allowed targets, and assume proxy responsibility for them. It may
to boot: issue a simple query for all of the targets:
Service: service:iscsi:target Service: service:iscsi:target
Scope: name-server-scope-list Scope: management-server-scope-list
Query: (boot-list=fqn.com.os.hostid.045A7B) Query: none
More details on booting from an iSCSI target are defined in [BOOT]. More details on booting from an iSCSI target are defined in [BOOT].
Name of submitter: Mark Bakke Name of submitter: Mark Bakke
Language of service template: en Language of service template: en
Security Considerations: Security Considerations:
See later section. See later section.
Template Text: Template Text:
-------------------------template begins here----------------------- -------------------------template begins here-----------------------
template-type=iscsi:target template-type=iscsi:target
template-version=0.1 template-version=0.1
template-description= template-description=
This is concrete service type. The iscsi:target service type is used This is concrete service type. The iscsi:target service type is used
to register individual target addresses to be discovered by others. to register individual target addresses to be discovered by others.
UAs will generally search for these by including one of the following: UAs will generally search for these by including one of the following:
- the iSCSI target name - the iSCSI target name
skipping to change at page 13, line 23 skipping to change at page 13, line 24
UAs will generally search for these by including one of the following: UAs will generally search for these by including one of the following:
- the iSCSI target name - the iSCSI target name
- the iSCSI initiator name (must be in the access-list of the target) - the iSCSI initiator name (must be in the access-list of the target)
- the service URL - the service URL
template-url-syntax= template-url-syntax=
url-path = ipaddr [ : tcpport ] / iscsi-name url-path = ipaddr [ : tcpport ] / iscsi-name
ipaddr = DNS host name or ip address ipaddr = DNS host name or ip address
tcpport = decimal tcp port number tcpport = decimal tcp port number
iscsi-name = iSCSI target name iscsi-name = iSCSI target name
; The iscsi-name part of the URL is required and may be either the iSCSI ; The iscsi-name part of the URL is required and must be the iSCSI
; name of the target being registered, or the canonical name "iscsi". If an ; name of the target being registered.
; initiator discovers a canonical iSCSI name, it should log in to that ; A device representing multiple targets must individually
; target, and issue the iSCSI SendTargets command to discover additional ; register each target/address combination with SLP.
; targets. A device representing multiple targets may then either
; register each of them with SLP, or just register a single "iscsi"
; target, which will be used to discover the remainder of the
; targets.
; ;
; Examples: ; Example:
; service:iscsi:target://10.1.3.40:4000/fqn.com.acme.sn.45678 ; service:iscsi:target://10.1.3.40:5003/iqn.5886.com.acme.sn.45678
; service:iscsi:target://mystorage.mycompany.com/iscsi
iscsi-name = string iscsi-name = string
# The iSCSI Name of this target. # The iSCSI Name of this target.
# This must match the iscsi-name in the url-path. # This must match the iscsi-name in the url-path.
portal-group = integer
# The iSCSI portal group tag for this address. Addresses sharing
# the same iscsi-name and portal-group tag can be used within the
# same iSCSI session. Portal groups are described in [ISCSI].
transports = string M L transports = string M L
tcp tcp
# This is a list of transport protocols that the registered # This is a list of transport protocols that the registered
# entity supports. iSCSI is currently supported over TCP, # entity supports. iSCSI is currently supported over TCP,
# but it is anticipated that it could be supported over other # but it is anticipated that it could be supported over other
# transports, such as SCTP, in the future. # transports, such as SCTP, in the future.
tcp tcp
entity = string O entity = string O
# Normally the FQDN of the management interface of the entity # Normally the FQDN of the management interface of the entity
skipping to change at page 14, line 17 skipping to change at page 14, line 19
alias = string O alias = string O
# The alias string contains a descriptive name of the target. # The alias string contains a descriptive name of the target.
access-list = string M access-list = string M
# A list of iSCSI Initiator Names that can access this target. # A list of iSCSI Initiator Names that can access this target.
# Normal iSCSI names will be 50 characters or less; max length is 255. # Normal iSCSI names will be 50 characters or less; max length is 255.
# Normally, only one or a few values will be in the list. # Normally, only one or a few values will be in the list.
# Using the equivalence search on this will evaluate to "true" # Using the equivalence search on this will evaluate to "true"
# if any one of the items in this list matches the query. # if any one of the items in this list matches the query.
# If this list contains the canonical name "iscsi", any initiator # If this list contains the default name "iscsi", any initiator
# is allowed to access this target. # is allowed to access this target.
boot-list = string M O boot-list = string M O
# A list of iSCSI Initiator Names that can boot from this target. # A list of iSCSI Initiator Names that can boot from this target.
# This list works precisely like the access-list attribute. A name appearing # This list works precisely like the access-list attribute. A name appearing
# in this list must either appear in the access-list, or the # in this list must either appear in the access-list, or the
# access-list must contain the initiator name "iscsi". Otherwise, an # access-list must contain the initiator name "iscsi". Otherwise, an
# initiator will be unable to find its boot target. # initiator will be unable to find its boot target.
# If boot-list contains the name "iscsi", any host can boot from it, # If boot-list contains the name "iscsi", any host can boot from it,
# but I am not sure if this is useful to anyone. # but I am not sure if this is useful to anyone.
# If this attribute is not registered, this target is not "bootable". # If this attribute is not registered, this target is not "bootable".
# #
# Note that the LUN the host boots from is not specified here; a # Note that the LUN the host boots from is not specified here; a
# host will generally attempt to boot from LUN 0. # host will generally attempt to boot from LUN 0.
# #
# It is quite possible that other attributes will need to be defined # It is quite possible that other attributes will need to be defined
# here for booting as well. # here for booting as well.
--------------------------template ends here------------------------ --------------------------template ends here------------------------
6.3. iSCSI Name Service Templates 6.3. iSCSI Storage Management Service Templates
This template defines the service "service:iscsi:name-service". An This template defines the service "service:iscsi:sms". An entity
entity supporting one or more iSCSI name service protocols may supporting one or more iSCSI management service protocols may
register itself with SLP as this service type. register itself with SLP as this service type.
Initiators wishing to discover name services using SLP will usually iSCSI clients and servers wishing to discover storage management
search for them by the protocol(s) they support: services using SLP will usually search for them by the protocol(s)
they support:
Service: service:iscsi:name-service Service: service:iscsi:sms
Scope: initiator-scope-list Scope: initiator-scope-list
Query: (protocols=isns) Query: (protocols=isns)
Name of submitter: Mark Bakke Name of submitter: Mark Bakke
Language of service template: en Language of service template: en
Security Considerations: Security Considerations:
See later section. See later section.
Template Text: Template Text:
-------------------------template begins here----------------------- -------------------------template begins here-----------------------
template-type=iscsi:name-service template-type=iscsi:sms
template-version=0.1 template-version=0.1
template-description= template-description=
This is a concrete service type. The iscsi:name-service service type This is a concrete service type. The iscsi:sms service type
provides the capability for entities supporting iSCSI to discover provides the capability for entities supporting iSCSI to discover
appropriate name services. appropriate management services.
template-url-syntax= template-url-syntax=
url-path = The URL of the name service. Defined in RFC 2608. url-path = The URL of the management service. Defined in RFC 2608.
protocols = string M L protocols = string M L
# The list of protocols supported by this name service. This # The list of protocols supported by this name service. This
# list may be expanded in the future. There is no default. # list may be expanded in the future. There is no default.
# #
# "isns" - The name service supports the use of the iSNS protocol # "isns" - This management service supports the use of the iSNS
# to locate and register targets, and provide further # protocol for access management, health monitoring, and
# information on them. This protocol is defined in [ISNS]. # discovery management services. This protocol is defined
# in [ISNS].
isns isns
--------------------------template ends here------------------------ --------------------------template ends here------------------------
7. Security Considerations 7. Security Considerations
Service type templates provide information that is used to interpret Service type templates provide information that is used to interpret
information obtained by clients through SLP. If the iSCSI templates information obtained by clients through SLP. If the iSCSI templates
are modified or if false templates are distributed, iSCSI targets and are modified or if false templates are distributed, iSCSI targets and
name servers may not correctly register themselves, or iSCSI clients name servers may not correctly register themselves, or iSCSI clients
may not be able to interpret service information. may not be able to interpret service information.
SLP provides an authentication mechanism for UAs to assure that SLP provides an authentication mechanism for UAs to assure that
service advertisments only come from trusted SAs. [RFC2608] If trust service advertisments only come from trusted SAs. [RFC2608] If trust
is an issue, particularly with respect to the information sought by is an issue, particularly with respect to the information sought by
the client about IPSEC and IKE support, then SLP authentication the client about IPSEC and IKE support, then SLP authentication
should be enabled in the network. should be enabled in the network.
Once a target or name server is discovered, authentication and Once a target or management server is discovered, authentication and
authorization are handled by the iSCSI protocol, or by the name authorization are handled by the iSCSI protocol, or by the management
server's protocol. It is the responsibility of the providers of server's protocol. It is the responsibility of the providers of
these services to ensure that an inappropriately advertised or these services to ensure that an inappropriately advertised or
discovered service does not compromise their security. discovered service does not compromise their security.
8. Summary 8. Summary
This document describes how SLP can be used by iSCSI initiators to This document describes how SLP can be used by iSCSI initiators to
find iSCSI targets and name servers. Service type templates for find iSCSI targets and storage management servers. Service type
iSCSI targets and name servers are presented. templates for iSCSI targets and storage management servers are
presented.
9. References 9. References
[RFC2608] E. Guttman, C. Perkins, J. Veizades, M. Day. Service [RFC2608] E. Guttman, C. Perkins, J. Veizades, M. Day. Service
Location Protocol, version 2 RFC 2608, July, 1999. Location Protocol, version 2 RFC 2608, July 1999.
[RFC2609] E. Guttman, C. Perkins, J. Kempf. Service Templates and [RFC2609] E. Guttman, C. Perkins, J. Kempf. Service Templates and
service: Schemes RFC 2609, July, 1999. service: Schemes RFC 2609, July 1999.
[RFC2614] J. Kempf, E. Guttman. An API for Service Location
RFC 2614, June 1999.
[RFC2119] S. Bradner. Key Words for Use in RFCs to Indicate [RFC2119] S. Bradner. Key Words for Use in RFCs to Indicate
Requirement Levels. RFC 2119, March 1997. Requirement Levels. RFC 2119, March 1997.
[ISCSI] J. Satran, et. al. "iSCSI", draft-ietf-ips-iscsi-04.txt, [RFC3082] J. Kempf, J Goldschmidt. Notification and Subscription for
February 2001. SLP. RFC 3082, March 2001.
[ISCSI] J. Satran, et. al. "iSCSI", draft-ietf-ips-iscsi-07.txt,
July 2001.
[SAM2] ANSI T10. "SCSI Architectural Model 2", March 2000. [SAM2] ANSI T10. "SCSI Architectural Model 2", March 2000.
[NDT] K. Voruganti, et. al. "iSCSI Naming and Discovery [NDT] K. Voruganti, et. al. "iSCSI Naming and Discovery
Requirements", draft-ietf-ips-iscsi-name-disc-01, April Requirements", draft-ietf-ips-iscsi-name-disc-02, July 2001.
2001.
[ISNS] J. Tseng, et. al. "Internet Storage Name Service", [ISNS] J. Tseng, et. al. "Internet Storage Name Service",
draft-ietf-ips-isns-00, January 2001. draft-ietf-ips-isns-04, July 2001.
[BOOT] P. Sarkar, D. Missimer, C. Sapuntzakis. "A Standard for [BOOT] P. Sarkar, D. Missimer, C. Sapuntzakis. "A Standard for
Bootstrapping Clients using the iSCSI Protocol", Bootstrapping Clients using the iSCSI Protocol",
draft-ietf-ips-iscsi-boot-02, February 2001. draft-ietf-ips-iscsi-boot-02, February 2001.
[RSIP] Kempf, J., Montenegro, G., "Finding an RSIP Server with [RSIP] Kempf, J., Montenegro, G., "Finding an RSIP Server with
SLP", draft-ietf-nat-rsip-slp-00, February 2000. SLP", draft-ietf-nat-rsip-slp-00, February 2000.
Author's Address: Author's Address:
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/