(Illustration by Gaich Muramatsu)
The only solution right now is to bind the server explicitly to a single ip-address on your multi-homed machine. There should be a server_ip options in server.conf for that. This would be a good thing to add. In the long term, we might be able to decouple the existing 1:1 relationship between a server and it's ip-address. This way a client should be less surprised about receiving the response from 10.0.0.9 as long as gethostbyaddr returned that as one of the usable addresses for our peer. This seems like not a good idea, since it relies on dns to bind together multiple addresses into an entity. We should either use (and _authenticate_) some higher-level address or name, or just say a server has a single address. Thinking ahead, one of Coda's current glaring deficiencies is that lack of IPv6 support. One should be able to talk to a server over v4 or v6, changing as one's connectivity changes. For this, we need some 'server identifier' which is stable. Perhaps this should be the realm name and a server index or something like that. Even with that, it probably makes sense to have the server always reply over the same address that the rpc was sent to. This is the practice with NTP, and probably a good idea. To get this kind of multi-homing setup working entirely correctly requires opening a separate socket for each interface and doing some of the routing in RPC2. It also becomes increasingly more difficult when you consider network topology changes, interfaces disappearing and re-appearing or simply route changes which typically happen when mobile clients are moving around. This is less worrisome on clients. For callbacks/probes to invalidate/check leases, the server has to know it is the same client. But the penalty for becoming a different client is probably just breaking all the leases. So, I think making per-addr sockets for rpc2 in servers would be a good step, after making bind_to statements to specify a fixed IP address. Servers usually don't change addresses so often. It would be nice if server_ip had the property that one could specify address family, and give it multiple times to specify multiple RPC2 sockets. Perhaps server_ipv4 192.168.0.1 server_ipv6 3ffe:39:0:1::1 Greg Troxel <gdt_at_ir.bbn.com>Received on 2003-06-03 09:50:29