Subject: [storm] MPA Draft - Review

From: <[email-masked]>
Date: Wed, 22 Dec 2010 21:26:24 -0500

WG Last Call on this draft has run its course:

                 Enhanced RDMA Connection Establishment
                  draft-ietf-storm-mpa-peer-connect-02

I've done my review as a WG chair (and the person who will be shepherding this draft to the ADs and IESG):

- This draft is on the right track, but has open issues.
- Another version of the draft will be needed.

Also, it would be greatly appreciated if a few people other than the authors could take a look at this draft.  We have a very good author team on this draft, whose expertise is beyond doubt, but more eyes on this draft would help.

[1] My primary concern is that Section 9 on interoperability is inadequate:

   An initiator SHOULD NOT use the Enhanced DDP Connection Establishment
   formats or function codes when no enhanced functionality is desired.

   A responder SHOULD continue to accept the unenhanced connection
   requests.

The good news is that the first sentence is ok.
The bad news is that the second sentence has significant problems:
	- It uses SHOULD instead of MUST.
	- It doesn't lay out behavior for initiator and responder
		Revision mixes.
IETF interoperability requirements are usually expressed with MUST, including backwards compatibility.  If interop with unenhanced implementations is only a SHOULD, that will need a convincing explanation.

There are 3 Initiator/Responder cases that need attention (New/Old, Old/New and New/New).  I think they lead to roughly the following:

New/Old:
- Explain error or failure that the New Initiator will see because the Old responder
	doesn't support Revision 2 of the MPA protocol.
- Explain what the Initiator does when it sees that error or failure.  The
	easiest approach is to always retry with Revision 1, but that won't work
	if the Initiator has to send an RTR (that's the "convincing explanation"
	for why backwards compatibility is not always possible).  The result
	might be two requirements:
	- If the Initiator has data to send, it MUST retry with Revision 1.
	- If the Initiator has no data to send, and hence has to send an RTR,
		the connection setup fails, the TCP connection closes and that
		failure MUST to be reported to the application.

Old/New:
- If a responder receives a Revision 1 message, it MUST respond with a Revision 1 message.

New/New:
- If a responder receives a Revision 2 message, it MUST respond with a Revision 2 message.

I found a few other concerns:

[B]In Section 7, we need to get the listing of all the SCTP function codes into one place.  Either repeat the definitions of codes 1-4 from RFC 5043, or create an IANA registry in Section 10 and list all 7 codes as its initial contents.

[C] In Section 8, what happens if the responder sends an IRD or ORD value that's different from the corresponding initiator value?  Is the responder allowed to increase the value that was sent?  An important case to cover is that the initiator sends a valid value (e.g., 0x2000) but the responder returns the 0x3FFF value indicating that negotiation is not supported.  Also, what is the behavior of an IRD or ORD that is set to 0x0000?

[D] In contrast, the Section 8 discussion of Control Flag functionality is in better shape.  It would be helpful to add a sentence or two indicating when the RTR occurs (Request ->, <- Reply, RTR ->), even though that is discussed earlier in the draft.  Also, it's necessary to state whether negotiation of RTR functionality commits the Initiator to using an RTR (e.g., suppose the initiator negotiates control flags to allow an RTR and instead sends an FULPDU with payload data after receiving the Reply - is that ok or is it an error?).

[E] Nit: In the definition of Control Flag A: ULPDU -> FULPDU

Thanks,
--David
----------------------------------------------------
David L. Black, Distinguished Engineer
EMC Corporation, 176 South St., Hopkinton, MA  01748
+1 (508) 293-7953             FAX: +1 (508) 293-7786
[email-masked]        Mobile: +1 (978) 394-7754
----------------------------------------------------