|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: bridging issues -- Converging FCP-2 and iSCSI control struct uresCharles, 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 |