[openib-general] Re: A Couple of User CM Questions

Rimmer, Todd trimmer at infiniconsys.com
Mon May 9 13:06:09 PDT 2005


 
> > > 2. Any idea on how device would be supported ? Would this 
> just be with
> > > an IB device number or a string like "mthca0" ?
> > 
> >   I was thinking that the destination GID in the req_event 
> path record
> > would be sufficient to identify the local device/port, but I had not
> > taken a look at sidr_req_event. I think this is the correct 
> GID to use
> > for creating the QP, but I have not taken a look at how 
> easy it is to
> > turn a GID into a suitable device/portin user verbs. Thoughts?
> 
> and source GID (in the REQ primary path) on the active side ? 
> 
> That seems like it would work but wouldn't you need to walk the GID
> tables on each port on each IB device until you find the 
> match ? Sounds
> a little expensive but would only be done once per connection.
> 
> The advantage of GID is this would be common across all IB 
> devices. Not
> sure what else could be other than a deterministic numbering of IB
> devices locally which I believe does not currently exist.
> 
> -- Hal

We found it useful to allow a flexible listener bind and matched REQ based on a comparison of the following fields:
//                                          Field is Used by models as follows:
// 				                 Listen     Peer Connect   Sidr Register
// SID                                     Y             Y              Y
// local GID                             option          Y         future option
// local LID                             option          Y         future option
// QPN                                  wildcard         Y           wildcard
// EECN                                 wildcard         Y           wildcard
// CaGUID                               wildcard         Y           wildcard
// remote GID                            option          Y         future option
// remote LID                            option          Y         future option
// private data discriminator length     option        option         option
// private data discriminator value      option        option         option

The search was done against listening CEPs, no search of port GIDs was necessary for the receiver.  The listener (if it chose to listen on a specific set of GIDs or ports), would need to query the CA to obtain the GID list.  The sender is already required to supply GIDs in order to formulate a proper REQ (GIDs should come from Path Record).

We found the private data discriminator to be necessary to handle multiple instances of the same app on the same node, such as MPI processes, in which case the listener rank was used as the private data which must be matched.

Fields marked as option could be omitted by the listener, in which case all values for that would match (hence a listener could listen on all ports very easily).  Fields marked as wildcard were always ignored for the given connection type.  These fields were required per IBTA in Peer Connect REQ handling.  We have found limited use for SIDR so did not add the LID/GID capabilities there.  LID is easily possible, GID is probably not worth the work.  Unlike REQ, SIDR_REQ does not include the GIDs, so for SIDR GID would only apply to packets with GRH.

Todd Rimmer



More information about the general mailing list