|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: bridging issues -- Converging FCP-2 and iSCSI control struct ures
Charles,
We (the iSCSI design team) had some guidelines that we followed (to the
best
of our knowledge) when deciding on formats.
Here are some of those:
constant header length
no redundant information (as far as possible) to avoid the need for
validity checks
compact coding while keeping implementations efficient
close resemblance to FCP to simplify bridging
We also considered that requiring a bridge to do stateless transliteration
is acceptable.
Your proposal has many elements towards which we are neutral. We might be
wiling to change some coding elements to better fit bridges as long as they
don't affect iSCSI efficiency but we would like to keep the header length
constant.
There is some misunderstanding about the CDB length - the iSCSI is pretty
liberal only that it use a tricky coding of the length field (not something
we would necessarily want to keep in).
The FCP task management encoding is strange - if any task management flag
is set
the CDB is unused; we might go for it if it where not for that the task
abort command requires us to specify which task we are taking about and we
don't want to expand every header. The net result is a header that exceeds
our constant length.
Responses - are simpler. There is an almost 1-to-1 match and the total
length is within bounds.
For R2T - we can rearange the fields.
For Data - if we are moving to an asymmetric model with 2 connections we
may want
to have a streamlined header on the data stream(as in the 00-draft - no use
for the current clutter).
THE QUESTION of TAG MAPPING is still open.
In summary I think that we can converge but we have some more work to do
to on the commands and I think that before we settle the
asymmetric/symmetric and
related it will be hard to see all the details.
But let us keep talking and agree to attempt a format convergence before
the next version of the draft is due (before San Diego).
Keep in mind that if we go for asymmetric we would like to get the header
back to the original
40 bytes (?) if possible.
Regards,
Julo
Charles Monia <cmonia@NishanSystems.com> on 06/09/2000 18:42:06
Please respond to Charles Monia <cmonia@NishanSystems.com>
To: Julian Satran/Haifa/IBM@IBMIL
cc: "Ips (E-mail)" <ips@ece.cmu.edu>, Charles Monia
<cmonia@NishanSystems.com>
Subject: RE: bridging issues -- Converging FCP-2 and iSCSI control struct
ures
Hi Julio:
In comparing FCP SCSI control structures with iSCSI, there are a lot of
fields that are functionally identical. Therefore, as a step towards
bridging between iSCSI and FCP, as you mentioned, I went through the
exercise of rearranging the transport-independent fields within the iSCSI
control structures to reflect the equivalent FCP-2 structures. (See
ftp://ftp.t10.org/t10/drafts/fcp2/fcp2r04.pdf, for a copy of FCP-2.)
The gory details are below, including a field-by-field mapping between
corresponding iSCSI and FCP parameters.
The conversion seems fairly straightforward and preserves iSCSI semantics.
Functionally, the main differences are:
a) Since FCP combines the task management and SCSI command blocks into a
single control structure and response, I've done the same thing with the
corresponding control blocks as mapped to iSCSI. i.e.. In the reformatted
version, the iSCSI task management command and return status are merged
with
the corresponding iSCSI command and status blocks.
b) All iSCSI-specific fields have been collected into special iSCSI
headers.
I have not gone through the exercise of defining a fixed length iSCSI
preamble that fits every case however.
c) Since command ordering is handled by iSCSI and TCP/IP, the Command
Reference Number in the FCP command block is an iSCSI reserved field.
The one change in the FCP command template was the need to provide an
encoding for the ABORT TASK management function. (FCP does this by aborting
the FC-2 Exchange).
An issue for further study is how best to map the mechanism for
Asynchronous
Event Notification between FCP and iSCSI.
By the way, in comparing the two kinds of command control blocks, I noticed
that iSCSI does not seem to allocate space for CDBs longer than 16 bytes
(unless that's what the "command-data" field was to be used for). Anyhow,
assuming the command-data in iSCSI is not intended for this purpose, I
defined a separate optional extension for iSCSI to contain this information
as described in the iSCSI spec.
Issues for further study are
a) How best to map the mechanism for Asynchronous Event Notification
between
FCP and iSCSI.
b) An efficient mapping between the iSCSI data transfer model and Fibre
channel.
1. iSCSI command structure (iSCSI section 3.2)
The iSCSI Command data structure is modified to include the FCP_CMND
Payload
(see table 22 of the Rev 4 FCP-2 draft standard). iSCSI information is
contained in a transport-specific header as shown below, followed by the
FCP_CMD template, and terminated with optional command-specific data.
+------------------+
| iSCSI Header |
+------------------+
| SCSI Command |
| Block (modeled |
| on FCP-2) |
+------------------+
| Additional Data |
| (Optional) |
+------------------+
1.1 Contents of iSCSI header:
The header up to ExpStatRn is as defined in the iSCSI spec.
OpCode
Length
CmdRN
ExpStatRn
Initiator Tag
Length of "Additional Data"
The "Length of Additional Data" is a 32-bit field, new to iSCSI, containing
the size of the space reserved for additional, command-dependent data.
1.2 iSCSI mapping of FCP-2 command template:
FCP_LUN -- 8-byte Logical Unit Number
ISCSI Definition: Same as FCP
FCP_CRN -- 1-byte command reference number:
iSCSI definition: reserved field
Task Attribute -- 3-bit field encoding Head of Queue, Simple,
etc.
iSCSI definition -- Same as FCP
Task Management Flags -- 8-bit field containing bit-significant
task management flags.
Bit 7 -- Obsolete
Bit 6 -- Clear ACA
Bit 5 -- Target Reset
Bit 3 -- Reserved
Bit 2 -- Clear Task Set
Bit 1 -- Abort Task Set
Bit 0 -- Reserved
iSCSI Definition -- Bit 7 defined as "Abort Task", remaining
bits same as FCP-2.
Alternative iSCSI definition: Convert the task management flags
to a 4-bit encoded field.
[As described in what follows, the above field allows the
reformatted command block to perform the function of the
iSCSI task management block defined in iSCSI, section 3.7.]
RDDATA, WRDATA -- One-bit fields indicating direction
of data transfer
iSCSI definition -- Same as FCP-2.
Additional FCP Length -- Amount of space allocated
for a CDB whose length exceeds 16 bytes.
iSCSI definition -- Same as FCP-2.
Additional FCP_CDB -- Contains that portion of the
CDB which exceeds 16-bytes.
iSCSI definition -- Same as FCP-2 (Note: this field
does not seem to be defined in the current iSCSI proposal).
FCP_DL -- Count of the greatest number of bytes expected
to be transferred to or from the application client data
buffer by the SCSI CDB.
iSCSI definition -- Same as FCP-2.
Other FCP-2 reserved fields are mapped to corresponding reserved fields in
iSCSI.
1.3 iSCSI features not reflected in the FCP-2 data structure:
"Additional data": Command-specific data appended
to SCSI command. Suggest modifying iSCSI to append
this information to the command block and reflect its
extent through the iSCSI header shown above.
2. SCSI Task Management command (iSCSI section 3.7)
Deleted. The function of this data structure in iSCSI is subsumed by the
revised iSCSI command block shown above.
3. SCSI Response (iSCSI section 3.3) and SCSI Task Management response
(section 3.8)
The iSCSI data structures for responding to command and task management
requests are combined to reflect the merger of the iSCSI command and task
management blocks described above.
+------------------+
| iSCSI Header |
+------------------+
| SCSI Response |
| Block modeled |
| on FCP-2 |
+------------------+
| Additional Data |
| (Optional) |
+------------------+
3.1 Contents of iSCSI header:
The following are as defined above.
OpCode
Length
CmdRN
ExpStatRn
Initiator Tag
Length of "Additional Data" (Must be zero).
3.2 iSCSI Mapping of FCP-2 response template.
FCP_RSP, bytes 0 through 9 -- Reserved
iSCSI mapping -- Same as FCP
FCP_RSP, byte 10 -- Flags, contents:
FCP_RSP_LEN_VALID -- 1 = FCP_RSP_INFO field contains valid data
iSCSI mapping -- Equivalent to FCP mapping.
FCP_SNS_LEN_VALID -- 1 = FCP_SNS_INFO field contains valid data.
The length of the returned sense data is contained in
FCP_SNS_LEN.
iSCSI mapping -- Equivalent to FCP mapping.
FCP_RESID_OVER, FCP_RESID_UNDER -- Residual underflow or
overflow count.
iSCSI mapping -- Equivalent to FCP mapping.
FCP_CONF_REQ -- 1 = Initiator must confirm receipt of status
information unit.
iSCSI Mapping -- Reserved.
FCP_RESID -- if FCP_RESID_UNDER or FCP_RESID_OVER is set,
contains count of residual data
iSCSI Mapping -- Same as FCP.
FCP_SNS_LEN -- if FCP_SNS_LEN_VALID, contains length of sense
data.
iSCSI Mapping -- Same as FCP.
FCP_RSP_LEN -- If FCP_RSP_LEN_VALID, contains length
of FCP_RESPONSE field. (FCP-2 limits FCP_RSP_LEN to 4 or 8).
iSCSI Mapping -- Same as FCP
FCP_RESP_INFO -- If FCP_RSP_LEN_VALIS = 1, this is a 4- or
8-byte field containing the iSCSI mapping -- See 3.2.1 below.
FCP_SNS_INFO -- If FCP_SNS_LEN_VALID =1, contains FCP_SNS_LEN
bytes of sense data.
iSCSI mapping -- Same as FCP-2
3.2.1. iSCSI mapping of FCP_RSP_INFO field
FCP_RSP_INFO is a 4- or 8-byte field containing the following:
Bytes 0 through 2: Reserved
iSCSI mapping: Same as FCP.
Byte 3: RSP_CODE
Code values (hex):
00 -- No failure or task management function complete
04 -- Task management function not supported
05 -- Task management function falied
All other values reserved.
The above code values map directly to iSCSI.
Bytes 4 through 7: Reserved.
In the RSP_CODE field, iSCSI equivalents for the following FCP-specific
codes may be useful:
Code values (hex):
01 -- FCP_DATA length different than burst length.
02 -- FCP_CMND fields invalid
03 -- FCP_DATA RO mismatch with FCP_XFER_RDY DATA_RO
Codes 01 and 03 indicate a mismatch between an FCP_XFR_RDY parameter and
the
corresponding parameter in the actual data transfer information unit.
4. iSCSI RTT and FCP_XFR_RDY Information Unit
+------------------+
| iSCSI RTT |
| Header |
+------------------+
| iSCSI RTT |
| modeled on |
| FCP_XFR_RDY |
+------------------+
In iSCSI, The use of RTT is negotiated between the target and initiator.
4.1 RTT Header contents
The following are as defined in the iSCSI spec.
OpCode
Length
CmdRN
ExpStatRn
Initiator Tag
Target Tag
4.2 iSCSI Mapping from FCP_XFR_RDY to RTT
DATA_RO -- Offset of the first byte of data relative to
the start of the initiator's buffer
iSCSI Mapping -- Buffer offset as defined in iSCSI, section 3.9
BURST_LEN -- On a transfer from the FCP initiator to the FCP
target, exact number of bytes to be transferred.
iSCSI Mapping -- Desired data transfer length as defined in
iSCSI, section 3.9
> -----Original Message-----
> From: julian_satran@il.ibm.com [mailto:julian_satran@il.ibm.com]
> Sent: Sunday, August 27, 2000 8:58 AM
> To: ips@ece.cmu.edu
> Subject: bridging issues
>
>
>
>
> Dear colleagues,
>
> Lately some iSCSI issues related to bridging to/from FC networks where
> brought to my
> attention. I thought that it would be wise to share them
> (and my first
> rough attempt to solve them) with you for two reasons:
>
> that's why we have a Working Group (don't we?)
> there might be more of this kind and this is a good time
> to think about
> them and bring the with or without a solution to the WG
>
> FC and iSCSI are SCSI mappings over a network that share a
> "network" view
> of the
> transport infrastructure but have widely different views of
> the network
> with regard
> to distances, reliability, flow control etc..
>
> FCP assumes a locally controlled environment using an
> unreliable delivery
> version of FC
> and doing recovery (a very rare event) at FCP level.
>
> FC addressing model uses locally generated dynamic addresses
> as part of the
> "naming"
> and its tagging.
>
> An iSCSI initiator should be able to operate a FCP target
> through a very
> simple and
> stateless (or almost stateless) gateway.
>
> A designer attempting to do this (and I know many of you
> already did or are
> in the midst
> of doing that) will find it difficult to do achieve a
> stateless design (but
> not impossible).
>
> The FCP recovery model from packet loses (commands, data and
> status) is
> based on sequencing (if lost packets are within sequences) or
> timeouts if
> those are at sequence
> boundaries. In the FC world those are very rare events and
> in an iSCSI+FCP
> hybrid
> could be handled by a statefull gateway (expensive) or by a stateless
> gateway and
> a more radical initiator recovery - based on TCP connection close and
> reopen.
> The later solution requires iSCSI to enforce a set of timeouts (an
> initiator requirement only)
> and provide an API for timeout setting and connection abort
> to an upper
> layer.
> Enforcing a set of timeouts would have the good side-effect
> of making iSCSI
> also
> tolerant to aberrant device behavior - and that is
> unfortunately bound to
> happen more
> often as the complexity of the devices will increase.
> Please observe that the set of timeouts I am referring to are not a
> "protocol" element
> (they do not appear on the wire). Specifying the expected
> behavior of an
> iSCSI
> initiator will simplify the task of building bridges to FCP.
> We propose to do so by adding a "host requirements" chapter.
>
> Another bridging issue is the initiator tag-translation mechanism.
> iSCSI is requiring the initiator issue a unique tag for each
> task but does
> not require any structure for the tag. This way an
> implementer may choose
> the most efficient structure for his implementation (e.g.,
> use the address of it's control structure representing the
> task as a tag).
>
> FCP on the other hand demands some structure for the tag.
>
> A stateless bridge would want to pass the tag unchanged from
> initiator to
> target or translate it with a stateless rule.
>
> If we restrict the design space to gateways that present a
> "homogenous"
> view of the device conglomerate behind them (e.g., all
> devices are FCP)
> and we may pass this information to the initiator - then the
> initiator can
> use the slightly more restrictive FCP tagging mechanism.
>
> Julo
>
>
Home Last updated: Tue Sep 04 01:07:26 2001 6315 messages in chronological order |