public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* Notes on XRC
@ 2013-03-25  9:32 Shlomo Pongratz
       [not found] ` <51501991.5020105-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Shlomo Pongratz @ 2013-03-25  9:32 UTC (permalink / raw)
  To: Hefty, Sean, shlomop-VPRAkNaXOzVWk0Htik3J/w
  Cc: Or Gerlitz, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

Hi Sean,

I'm experimenting XRC with a real application and I want to share my 
thoughts.

A natural way to pass the SRQ's QPN is to use the "private_data" of the 
"rdma_conn_param", however this area is limited to 56 octets and since 
each QPN occupies 3 octets that leaves us with 18 SRQ. I suggest to 
increase the size of the private data, or to find a more convenient way 
to pass the SRQ's QPM, one that doesn't use extra ports or out-of-band 
communication (socket).

Another issue is of backwards compatibility of applications.  Assume an 
application uses a well known port, and want to allow both new XRC 
enabled clients and old RC clients. It seems that this is possible using 
the "rdma_create_ep" API with appropriate "rdma_addrinfo" one that 
"rdma_getaddrinfo" resolved with QP type "IBV_QPT_XRC_RECV" and one with 
"IBV_QPT_RC" one the same port (I hope this is allowed). A client on the 
other side will first try to connect to the XRC and if it fails will 
fall-back to RC.

However, a server usually uses "rdma_create_id" to associate an event 
handler with an id and then bind the id to an address, and accept 
connection requests asynchronously, but with these API, AFAIK there is 
no way to pass the required hints.

I assume I can use the "private_data" of the "rdma_conn_param" to 
distinguish between XRC enabled clients and servers and old ones, but it 
doesn't seems clean, as it is implicit and not explicit.

Best regards,

S.P.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: Notes on XRC
       [not found] ` <51501991.5020105-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
@ 2013-03-25 16:27   ` Hefty, Sean
       [not found]     ` <1828884A29C6694DAF28B7E6B8A823736F367A8A-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Hefty, Sean @ 2013-03-25 16:27 UTC (permalink / raw)
  To: Shlomo Pongratz
  Cc: Or Gerlitz, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

> A natural way to pass the SRQ's QPN is to use the "private_data" of the
> "rdma_conn_param", however this area is limited to 56 octets and since
> each QPN occupies 3 octets that leaves us with 18 SRQ. I suggest to
> increase the size of the private data, or to find a more convenient way
> to pass the SRQ's QPM, one that doesn't use extra ports or out-of-band
> communication (socket).

This is an issue for the IBTA to deal with and requires increasing the size of a MAD.
 
> Another issue is of backwards compatibility of applications.  Assume an
> application uses a well known port, and want to allow both new XRC
> enabled clients and old RC clients. It seems that this is possible using
> the "rdma_create_ep" API with appropriate "rdma_addrinfo" one that
> "rdma_getaddrinfo" resolved with QP type "IBV_QPT_XRC_RECV" and one with
> "IBV_QPT_RC" one the same port (I hope this is allowed). A client on the
> other side will first try to connect to the XRC and if it fails will
> fall-back to RC.

The intent behind rdma_getaddrinfo is to allow multiple QP types to be returned based on user input.
 
> However, a server usually uses "rdma_create_id" to associate an event
> handler with an id and then bind the id to an address, and accept
> connection requests asynchronously, but with these API, AFAIK there is
> no way to pass the required hints.

Correct - the older rdma cm APIs are not as flexible.  That's why new APIs ended up being added.
 
> I assume I can use the "private_data" of the "rdma_conn_param" to
> distinguish between XRC enabled clients and servers and old ones, but it
> doesn't seems clean, as it is implicit and not explicit.

I don't think I'm fully following your private data idea.

- Sean
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Notes on XRC
       [not found]     ` <1828884A29C6694DAF28B7E6B8A823736F367A8A-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2013-03-26  9:59       ` Shlomo Pongratz
       [not found]         ` <5151718A.6090907-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Shlomo Pongratz @ 2013-03-26  9:59 UTC (permalink / raw)
  To: Hefty, Sean
  Cc: Or Gerlitz, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	shlomop-VPRAkNaXOzVWk0Htik3J/w

On 3/25/2013 6:27 PM, Hefty, Sean wrote:
>> A natural way to pass the SRQ's QPN is to use the "private_data" of the
>> "rdma_conn_param", however this area is limited to 56 octets and since
>> each QPN occupies 3 octets that leaves us with 18 SRQ. I suggest to
>> increase the size of the private data, or to find a more convenient way
>> to pass the SRQ's QPM, one that doesn't use extra ports or out-of-band
>> communication (socket).
> This is an issue for the IBTA to deal with and requires increasing the size of a MAD.
I see, I guess this will an obstacle.
>   
>> Another issue is of backwards compatibility of applications.  Assume an
>> application uses a well known port, and want to allow both new XRC
>> enabled clients and old RC clients. It seems that this is possible using
>> the "rdma_create_ep" API with appropriate "rdma_addrinfo" one that
>> "rdma_getaddrinfo" resolved with QP type "IBV_QPT_XRC_RECV" and one with
>> "IBV_QPT_RC" one the same port (I hope this is allowed). A client on the
>> other side will first try to connect to the XRC and if it fails will
>> fall-back to RC.
> The intent behind rdma_getaddrinfo is to allow multiple QP types to be returned based on user input.
So it is O.K. to have both XRC and RC QPs with conjunction to
>   
>> However, a server usually uses "rdma_create_id" to associate an event
>> handler with an id and then bind the id to an address, and accept
>> connection requests asynchronously, but with these API, AFAIK there is
>> no way to pass the required hints.
> Correct - the older rdma cm APIs are not as flexible.  That's why new APIs ended up being added.
Can you tell me which new API will give me the ability to use both 
address hints and asynchronous connection requests handling.
>   
>> I assume I can use the "private_data" of the "rdma_conn_param" to
>> distinguish between XRC enabled clients and servers and old ones, but it
>> doesn't seems clean, as it is implicit and not explicit.
> I don't think I'm fully following your private data idea.
This is just a workaround I been considering in case using "hints" and 
asynchronous connection request can't work together. If I want to have 
servers and clients that need to be backward compatible with RC servers 
and clients. And assuming the old ones didn't used the private data in 
the connection request and in the accept. Than the presence of the 
private data will indicated that these are XRC enabled clients and servers.

S.P
> - Sean

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: Notes on XRC
       [not found]         ` <5151718A.6090907-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
@ 2013-03-26 15:55           ` Hefty, Sean
       [not found]             ` <1828884A29C6694DAF28B7E6B8A823736F368244-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Hefty, Sean @ 2013-03-26 15:55 UTC (permalink / raw)
  To: Shlomo Pongratz
  Cc: Or Gerlitz, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

> This is just a workaround I been considering in case using "hints" and
> asynchronous connection request can't work together. If I want to have
> servers and clients that need to be backward compatible with RC servers
> and clients. And assuming the old ones didn't used the private data in
> the connection request and in the accept. Than the presence of the
> private data will indicated that these are XRC enabled clients and servers.

I don't see how an app can 'just switch' from RC to XRC without having coded for the possibility of XRC.  XRC introduces too many new concepts.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Notes on XRC
       [not found]             ` <1828884A29C6694DAF28B7E6B8A823736F368244-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2013-03-26 20:50               ` Shlomo Pongratz
  0 siblings, 0 replies; 5+ messages in thread
From: Shlomo Pongratz @ 2013-03-26 20:50 UTC (permalink / raw)
  To: Hefty, Sean
  Cc: Or Gerlitz, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

On 3/26/2013 5:55 PM, Hefty, Sean wrote:
>> This is just a workaround I been considering in case using "hints" and
>> asynchronous connection request can't work together. If I want to have
>> servers and clients that need to be backward compatible with RC servers
>> and clients. And assuming the old ones didn't used the private data in
>> the connection request and in the accept. Than the presence of the
>> private data will indicated that these are XRC enabled clients and servers.
> I don't see how an app can 'just switch' from RC to XRC without having coded for the possibility of XRC.  XRC introduces too many new concepts.
The communication is just one part of the application. It is acceptable 
to prepare for both XRC and RC and decide ad-hoc which transport to use, 
there is no intention to switch back and forth between the different 
transport. The nature of the connection is to be established with the 
connect-accept handshake, and it is not going to be changed as long as 
the connection linger. So what I need is to accept connection requests 
asynchronously and decide which transport module to uses.

S.P.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-03-26 20:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-25  9:32 Notes on XRC Shlomo Pongratz
     [not found] ` <51501991.5020105-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2013-03-25 16:27   ` Hefty, Sean
     [not found]     ` <1828884A29C6694DAF28B7E6B8A823736F367A8A-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-03-26  9:59       ` Shlomo Pongratz
     [not found]         ` <5151718A.6090907-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2013-03-26 15:55           ` Hefty, Sean
     [not found]             ` <1828884A29C6694DAF28B7E6B8A823736F368244-P5GAC/sN6hmkrb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-03-26 20:50               ` Shlomo Pongratz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox