I believe Apple creates /32 host-specific routes for Zeroconf traffic on the other interfaces, if seen. That may actually just be the normal ARP-handling code in operation rather than Zeroconf, per se, although Apple's implementation of ARP is Zeroconf-compliant in terms of timing, setting "sender IP address" (aka arphdr->ar_spa) field to all zeroes to avoid polluting other systems' ARP caches, announcing & defending LLA IP reservations, etc.
As ours should be. The only part of that that should be affected by whether or not LLA is enabled is the announcing and defending portion.
I would be entirely happy if FreeBSD could do better than MacOS with regard
to
this matter, but my observation suggests that the dudes working on this at Apple have a working implementation which is becoming widely used in userland applications for things like printer discovery on unconfigured LANs, chat, music sharing on the LAN (via iTunes), and for which the potential problems involved with things like multihomed machines are somewhat well understood.
Apple's primary consumer base for Zeroconf systems doesn't normally have to deal with multi-homed systems; so it probably isn't much of a priority for them. They also need to maintain a higher level of easy configurability by non-technical users. FreeBSD's target user base leans towards the more technical and the more server-oriented.
I don't know any of the people working on Zeroconf at Apple; and have no idea how well they have investigated the issues surrounding multi-homed machines. I suspect that the decision was made fairly early to only support it on one interface at a time. That certainly made it easier to concentrate on getting the more common one-interface scenario to work correctly. But they, and others working on Zeroconf, have pretty well identified the one-interface issues and come up with solutions; so we don't have to duplicate that research. Which means that we're free to look at the implications for multi-homed machines.
I would agree that our first implementation should focus on the single-interface situation; but we should keep the multi-homed machines in mind while designing it. It's OK if we say "you can enable it on more than one interface; but we're not going to guarantee that you won't run into problems."
>> See section 4 of RFC-3927. > > No, that covers merging two previously disjoint networks; I don't > think that it is intended to handle the case of a multi-homed host > that is connected to both of them while keeping them separate. That section covers the merging of two previously disjoint networks, agreed; for the case of connecting a multihomed host which is bridging them, this section is entirely relevant. Otherwise, LLA only deals with one collision domain (or link, etc) by definition, and one requirement which is relevant to a multihomed host is that it must ensure that the system assigns a different LLA to each interface.
Yes, as you say, it is relevant if the host is bridging, but not if it is treating them as separate subnets. Which requires separate LLA negotiations; but I don't see where section 4 requires them to have separate IP addresses. (It's probably a good idea; but it doesn't seem to be required by section 4.)
Multi-homed hosts are covered in section 3. Which is basically a discussion of some of the problems that are likely to be encountered; without mandating (or forbidding) any particular solution.
Section 3.4 does require separate LL Ip addresses IF the interfaces are on the same link. But, as they point out, the easiest method of avoiding auto-immune response is to run the algorithm separately for each interface. In which case no special action need be taken to determine whether they are on the same link, or to avoid requesting the same address; the normal LLA negotiation will ensure that one of them wins and the other picks another address.
The probability that you will have the same LLA appear on two distinct
subnets
is a variant of the "birthday paradox"; there's a 10% chance of a collision with ~120 hosts, and a 50% chance of a collision with 300, assuming the code copied below is right.
Not exactly. I think that that computes the probability that a newly attached host will pick an initial IP address that is already in use. To apply it to a pair of networks, you need to deal with how many hosts are on each network and the fact that within each network, the IPs are already guaranteed to be unique.
So, given two networks, one with N hosts, the other with M; for the first host in N, the chance of collision is M / 65024; for the second it is M / 65023; etc. (Each host in N reduces the available address space from which the other N-hosts may be chosen; it does not increase the number of hosts that they must be compared against.) The total probability is the sum of the probabilities for each of the N hosts.
I think that you;ll find that the minimum number to produce a 50% probability will require that both networks have the same number of hosts (or differ by only one); and that as the populations become unbalanced, the total required rises fairly rapidly. (E.g., if N is 1, M must be 32512 for a total of 32513.)
-Pat _______________________________________________
freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"