Re: [storm] iSER draft

Michael Ko <> Thu, 14 July 2011 20:53 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id C9BF111E80D1 for <>; Thu, 14 Jul 2011 13:53:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 0sX6ESnUBVUy for <>; Thu, 14 Jul 2011 13:53:20 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id D9C5811E8076 for <>; Thu, 14 Jul 2011 13:53:19 -0700 (PDT)
MIME-version: 1.0
Content-type: multipart/alternative; boundary="Boundary_(ID_o3Vcd5zWsGjdOCIVrO9Pdw)"
Received: from ([]) by (Sun Java(tm) System Messaging Server 6.3-8.03 (built Apr 24 2009; 32bit)) with ESMTP id <> for; Fri, 15 Jul 2011 04:53:53 +0800 (CST)
Received: from m90003900a ([]) by (Sun Java(tm) System Messaging Server 6.3-8.03 (built Apr 24 2009; 32bit)) with ESMTPA id <> for; Fri, 15 Jul 2011 04:53:59 +0800 (CST)
Message-id: <>
From: Michael Ko <>
To: Tom Talpey <>, Caitlin Bestler <>
References: <> <> <> <> <> <> <> <>
Date: Thu, 14 Jul 2011 13:53:08 -0700
X-Priority: 3
X-MSMail-priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.5931
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2900.6109
Subject: Re: [storm] iSER draft
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Storage Maintenance WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 14 Jul 2011 20:53:24 -0000

For clarity, I need to update in the next revision of the spec everywhere where "Tagged Offset", "Steering Tag", etc. are mentioned to specify how the Tagged Offset is computed from the "Steering Address" and the buffer offset. 

So for example, in the example you cited in section 7.3.5, the target computes the Tagged Offset using the Steering Address and the Buffer Offset.  For iWARP, the Steering Address is zero, and so the Tagged Offset is the Buffer Offset in the SCSI Data-in PDU as defined in RFC 5046.

  ----- Original Message ----- 
  From: Tom Talpey 
  To: Michael Ko ; Caitlin Bestler 
  Cc: Alexander Nezhinsky ; 
  Sent: Thursday, July 14, 2011 1:16 PM
  Subject: RE: [storm] iSER draft

  Changing the name doesn't address the core issues here. There are no processing rules defined in the draft to support the arithmetic you describe below, or even to use the Steering/Virtual Address.


  For example, section 7.3.5 states the target MUST use the Buffer Offset of the Data-In PDU as the Tagged Offset of an RDMA Write. Where does the new Steering Address in the control PDU header get folded into the Tagged Offset? And what protocol state would trigger the target to do so, including perform the arithmetic? Same question for several other sections.




  From: Michael Ko [] 
  Sent: Thursday, July 14, 2011 2:39 PM
  To: Caitlin Bestler; Tom Talpey
  Cc: Alexander Nezhinsky;
  Subject: Re: [storm] iSER draft


  When "Virtual Address" is not used, as in iWARP, the initiator side needs to translate the "Tagged Offset" which is just the offset into the buffer, into a usable address by adding it to the starting base address of the buffer.  If the starting base address is communicated to the target side, as is done in some RCaPs, then the "Tagged Offset" is the usable address itself at the initiator where data is to be fetched or stored.  Alex suggested that perhaps we can change the name "Virtual Address" to "Steering Address".  Then it can be defined in the glossary without tripping over the common term "virtual address".



    ----- Original Message ----- 

    From: Caitlin Bestler 

    To: Tom Talpey 

    Cc: Alexander Nezhinsky ; Michael Ko ; 

    Sent: Wednesday, July 13, 2011 9:49 PM

    Subject: Re: [storm] iSER draft


    On Jul 13, 2011, at 8:12 AM, Tom Talpey wrote:

    > Yes, understood on the ZBVA/Infiniband issue. Regarding the VA term's presence in an earlier draft, I did not see it in RFC5046 and I did not review the expired draft, so consider these comments to be on the overall change, not the last revision.
    > Let me try a different approach to perhaps make myself clearer.
    > First, it seems to me that a "virtual address" has no real meaning to the network protocol. It begins, perhaps, as some value in an address space on the initiator, but it's not meaningful on the target in this way, it's only used to request that the remote RNIC perform a transfer to that originally registered remote address. So calling it a Virtual Address as an iSER protocol object seems, to me, an artificial and somewhat leading convention.
    > Second, the Virtual Address goes out from the initiator to the target in a Control PDU, but where does it come back? The RDMA Read or Write as depicted in (xx) shows only a Tagged Offset. So, it's not clear what its protocol meaning is.
    > Third, I don't ever see a Tagged Buffer described by a fully qualified four-tuple. I see it appearing as either { Stag, TO, length } or { Stag, VA, length }, depending on the addressing mode.
    > I think the non-ZBVA mode is really just a special case of the existing one, but where the meaning of TO has changed from a small offset to some other token, generated and managed only at the initiator. So, it seems artificial to define it as distinct, and document it as possessing some new properties. Isn't it just a Target Offset, still?
    > Tom.

    I agree, so far we have not seen a protocol justification for the need to add "Virtual Address" to the glossary as something distinct from Target Offset
    for the purpose of defining an IETF protocol.

    I am sympathetic to the interoperability issues raised, but I don't think those can justify something that has *no* justification in the protocol.

    If someone could site a class of implementation where there is a real need for this distinction in an iSER adapter, but as far as I can see the adapters have
    to be able to translate to TO *anyway* in order to use an RDMA Write or RDMA Read.

    Local Interface compatibility with IB can make a *lot* of sense, but why does it have to make its way into the *wire* protocol?

    Caitlin Bestler