Subject: iSCSI: SendTargets

From: Mark Bakke <[email-masked]>
Date: Tue, 26 Jun 2001 15:30:06 -0500

Assuming that we will be keeping SendTargets, it's time to
clean it up, tie up loose ends, get its hair cut, shine
its shoes, and generally attempt to make it presentable.

Here are the outstanding issues:

1. Handling text responses larger than the PDU size.

   I'd like to start this in a separate thread.

2. Concisely specify SendTargets, and make it as clear
   and unabiguous as possible.

   I'll try to start this below.

3. Finish up the aggregation tag thread.

4. Decide what to call the default/well-known/canonical
   target to which SendTargets is issued.

5. Decide whether the SendTargets response should be limited
   in its scope.

   David and Marjorie already have a thread on this one.

So anyway, here's an attempt at #2; stating the SendTargets
requirements (partly from David's consensus call, and partly
from the Naming & Discovery conference call):

A device containing targets MUST support the SendTargets
command.  It MAY respond to a SendTargets request with its
complete list of targets, or with a list of targets that
is based on the initiator logged in to the session.

An initiator MAY use the SendTargets command.

The SendTargets Command is always sent within its own
text message, after the connection is in its full feature
phase.  It MUST NOT combined with other commands or
parameters.

Only one SendTargets command may be sent within a given
PDU.

SendTargets Command Syntax:

SendTargets=all

  Request all targets that the initiator is supposed to see.
  Valid only on the canonical session, not on an operational
  session.

SendTargets=iscsi

  Request all address information for the iSCSI target to which
  this session is established.  (same as ReportPortalGroups).
  Valid on an operational session only.

SendTargets=iqn.com.cisco.blah.blah.blah

  Request all addresses for the given iSCSI target.

  Valid on the canonical session; valid on an operational session
  only if the target name is the same as the one to which the session
  is logged in.

  Only one target name may be specified in a given SendTargets=
  key.

SendTargets Context

  When sent to the well-known target, the response MAY include other
  targets.

  When sent on an operational session to a real target, the response
  is as if that target was specified.

The SendTargets Response

  The purpose of SendTargets is to discover "just enough" information
  for an initiator to be able to connect to a target.

  Returning things like public key certificates or miscellaneous
  information about the target is left for MIBs or other discovery
  mechanisms.

  Allowed fields are TargetName= and TargetAddress=.
  No other keys are returned.

  The definition of which targets and addresses to return given
  a SendTargets request is somewhat up to the target, subject
  to a few constraints:

  A SendTargets response MUST include targets accessible by the
  requesting initiator that are available through the <IP address,
  TCP port> to which the SendTargets command was issued.

  A SendTargets response MAY contain other targets.

  A SendTargets response SHOULD NOT contain targets to which the
  requesting initiator does not have access.

Open issue:
  A SendTargets response MAY/MAYNOT??? contain other well-known targets.

Iterators will be covered in a separate thread.

I still need to write this up a bit better, but here
it is for now.

-- 
Mark A. Bakke
Cisco Systems
[email-masked]
763.398.1054