[openib-general] [RFC] IB address translation using ARP
Hal Rosenstock
halr at voltaire.com
Mon Oct 10 07:56:49 PDT 2005
Hi Tom,
On Sun, 2005-10-09 at 13:10, Tom Tucker wrote:
> On Sun, 2005-10-09 at 07:57 -0700, Sean Hefty wrote:
> > >It is theoretically possible to support all this on an IPoIB based
> > >network. Multiple subnets, multiple routes to remote peers, ICMP
> > >redirect, multiple IP addresses for each physical interface, yada yada
> > >yada. But IMHO, the only way to do this would be to tie directly into
> > >the existing routing, ARP, ICMP, etc... subsystems in Linux. Otherwise
> > >you'll end up recreating a gigantic (and I mean GIGANTIC) amount of
> >
> > The current implementation ties into the standard Linux ARP tables. If
> > connections were made over TCP/IP, using IPoIB, then I don't think that there
> > would be any issues. The issues only arise because of the desire to use TCP/IP
> > network addresses over a non-TCP/IP network.
> >
> > >code. This belief is why I've been a proponent of mapping GIDs to one
> > >and only one IP address and treating it for management purposes as the
> > >equivalent of an IP address. Without this, the whole mechanism for
> > >determining routes, etc.. breaks down. If you treat the GID like a MAC
> > >address -- it breaks, because a MAC address can have multiple IP
> > >addresses -- the observation that lead to the conclusion that ATS was
> > >broken in the first place.
> >
> > We should be able to handle the case where a GID has multiple IP addresses bound
> > to it. But even if we added a 1:1 restriction, the connection over IB issue
> > still exists.
>
> I agree, except for RARP.
Not sure what you mean "except for RARP". Can you elaborate ?
[snip...]
> > I
> > don't view a GID as an IP address because we're not sending and receiving IP
> > packets on the GID. IPoIB treats GIDs as only part of a MAC address, which I
> > think is the proper view.
> >
> > Anyway, returning back to the original problem of connecting to an IB gateway if
> > a given a destination IP address on a different subnet... I'm slowly convincing
> > myself that either the CMA or AT should do this. (I believe that the ib_addr
> > code will do this now, but still wasn't sure that we wanted it to.)
> >
>
> IMHO, you need a service separate from the CMA to do address
> translation. My (iWARP's) rationale for this is that there are two
> clients of the service, the CM and IP. For CM, you need it to elect a
> route and thereby a local interface. For IP you need it because routes
> change and ARP entries time out.
>
> BTW, can you educate me ... is the following what you're thinking:
>
> On the client side...
>
> - route is discovered by looking at the Linux routing table
> - local interface is IPoIB (looks at rdma_ptr embedded in netdev struct)
> - send ARP AT message over local IB interface
It's just a normal IPoIB ARP to the destination IP address initiated by
AT. (With ATS, it could have been an SA Get ServiceRecord as an
alternative).
I think the current CMA code handles client above and server but not
(bridging) gateway below.
> At the gateway...bridging to IP
> - ARP AT query received on IB interface
> - Lookup route to destination IP address in gateway's route table.
> - If next hop's Ethernet address is already known, it is returned
^^^^^^^^
hardware (may not be ethernet)
> - Otherwise, local interface identified is IPoEthernet
> - New ARP query goes out on the local interface from the route
> - When response comes back, answer is returned.
> At the gateway...bridging to IPoIB
>
> - ARP AT message received on IB interface, delivered to AT
> - Lookup route to destination IP address in gateway's route table
> - If next hop's Ethernet address is already known, it is returned
> - otherwise, local interface identified in route is IPoIB
> - New ARP AT query goes out on the local interface
> - When response comes back, answer is returned.
-- Hal
More information about the general
mailing list