RE: MPA issue (3): Rejected Connection bit
"Caitlin Bestler" <[email protected]>
| Newsgroups | gmane.ietf.rddp |
|---|---|
| Message-ID | <[email protected]> |
Carrier, John said: > I guess I would like to hear a clarification for how the rejected bit > would be used. > > In the startup scenarios described in the MPA draft, when the MPA > Responder sends the MPA Reply Frame, the responder 'binds' DDP to MPA so > that, after sending the reply frame, the MPA Responder will be ready to > receive FPDUs and pass them to DDP. If the Request Frame is invalid or if > the private data is unacceptable, then the ULP should close the connection > without sending a Reply Frame. > > Adding the rejected bit enables the ULP to send a Reply Frame without > binding DDP to MPA. The Reply Frame may also contain private data that > further describes why the request was rejected. > Exactly. The typical use is when the private data sent by the active side was unacceptable to the passive side, or for some other ULP reason the connection is not to proceed further. This capability is assumed by RDMA-aware APIs such as uDAPL and IT-API. Without this capability they must simulate the rejection bit by sending options that they know will be rejected. An "honest" reject bit is a far cleaner solution. > > If that is the intent, then what should the state of MPA be after sending > the Reply Frame with the rejected bit set? Does it return to 'responder > mode' so that the Initiator can resend the MPA Request Frame or does it > transition to a new state where it drops any received data while it waits > for the ULP to close the connection? > To be technically precise, it means that the TCP connection does not enter the MPA state. What, if anything, happens to the TCP connection after that might not be in scope (unless someone has a strong reason why something should be specified). For both uDAPL and IT-API (so far) the connection should be torn down. But in those contexts the LLP connection was created "under the covers" by the API layer for the purpose of supporting an Endpoint. There will likely be API extensions that expose the LLP connection, allowing the applicication to request that this TCP connection be used to initiate an MPA connection for this endpoint. In that case I suppose it would be slightly preferable for a failure to leave the TCP connection intact in case the application wishes to continue in non-MPA mode. But if we were to decide that the reject bit mandated a TCP disconnect, there would be numerous methods available to an "optional RDMA:" application to determine the mode that will succeed *before* sending MPA Start frames. The intent of the bit is to optimize the large class of applications that know they will be using RDMA from the start, and wish to engage in a simple negotiation before proceeding or terminating the connection.