[ofa-general] [PATCH RFC] rds: add iwarp support
Steve Wise
swise at opengridcomputing.com
Mon Jul 7 13:18:19 PDT 2008
Sean Hefty wrote:
>> The reason for not using rdma_resolve_addr() is to avoid having to
>> allocate and free a cm_id each time we just want to find the local ib
>> device, given a remote IP addr...
>>
>
> Can someone explain why this needed? The local IB device is resolved as part of
> the connection establishment process. Why is an additional mechanism needed?
>
>
RDS experts, correct me if this is wrong:
RDS exposes a reliable datagram service to user apps. To do this it
keeps connections to each host with RDS apps running and muxes user
datagrams over these connections using its own protocol. Further there
are 3 types of "transports" supported: TCP/IP, IB, and IW. When a user
app sends a datagram, the RDS module must figure out which transport
should be used. It does this based on the destination (and maybe local?)
ip addr of the RDS application's socket. Prior to the iWARP patch, the
way this transport switch decision was made was to look up the local
netdev based on the ipaddr(s) and if the netdev's ARP header type was
INFINIBAND, then obviously the IB transport should be used. With the
addition of iWARP, the decision is a little more complicated because the
iWARP netdev arp type is ETHERNET. So Jon added this new cma service to
find the netdev, then take the netdev mac address and search the gid
cache to see if that mac address was actually a gid for an rdma device.
If the mac addr was found, then we know this netdev supports rdma.
Creating the new service simply made this lookup light-weight by not
requiring a cm_id to be created, bound, etc.
Maybe there's a better way?
Steve.
More information about the general
mailing list