[openib-general] Re: Dual Sided RMPP Support as well as OpenSM Implications

Sean Hefty mshefty at ichips.intel.com
Fri Apr 7 15:17:43 PDT 2006


Hal Rosenstock wrote:
> It can be added but may require an API change and possibly an ABI
> change. It seems that user space code needs to both say and know whether
> dual sided RMPP is supported or not so all mixes of user space and
> kernel code could "work".

Do we really need to support these combinations?  Does anything use the GetMulti 
method today?  Is dual-RMPP used with anything other than MultiPathRecords?

This is my understanding of what needs to happen to support dual-sided RMPP.

Node A sends an RMPP message.  This requires normal RMPP processing.
Node A sends an ACK of the final ACK (I'll call ACK2), giving a new window.
Node B receives ACKs.
Node B sends the response.  This requires normal RMPP processing.

 From the perspective of node A, the RMPP code only needs to know to send ACK2. 
  It can do this based on the method, or per transaction if directed by the client.

Node B is more complex.  It must now wait for ACK2, using timeout and retries of 
ACK1 until ACK2 is received.  And the response that will be generated by the 
client must be delayed until that ACK2 is received.

For node B, it may be simpler to delay handing the request up to a client until 
ACK2 is received.  The only information from ACK2 that's needed when sending the 
response is NewWindowLast.  A client could be expected to give this back to the 
RMPP layer when sending the response.  (A client that lied about NewWindowLast 
should only lead to sending some packets that would be dropped, with the 
transaction aborted.)

So, if we always make the sender of an RMPP message specify NewWindowLast, with 
a default of 1 set when the MAD is allocated, then we can keep RMPP consistent. 
  And we'd only be left handling ACK2.

- Sean



More information about the general mailing list