jdd@allegra.UUCP (10/16/83)
Well, I finally found out why I couldn't talk between my Suns running "4.2" and my Vax running 4.1c. Some quick background: 4.1c uses the low-order 24 bits of a site's Ethernet address as its Internet host number: Ethernet address 0x02608c004800 becomes host number 0x004800. The high-order 24 bits must be the same for all Internet sites on the Ethernet, which means using the same manufacturer's equipment throughout. (This part would have been no problem for me.) ARP is intended to improve upon this situation by removing the fixed mapping between Ethernet addresses and Internet addresses. Each site broadcasts its own arbitrary correspondence (automatically or on demand) to the other sites on the net; they cache it for future reference. Given this description, you might assume that all Internet sites on an Ethernet must run ARP, which is not too big an improvement over their having to use the same manufacturer's equipment. (Such a requirement would be a big problem for me, in both the short term and the long term.) It seems that in Sun's "4.2", there's a further kludge to allow mixing of ARP and non-ARP sites on a given Ethernet: it uses the ARP mapping only if the host number it's talking to is less than 1024 (0x400). This way, you can pick arbitrary (small) host numbers for sites that talk ARP and use the 4.1c mapping for sites that don't, or just use the 4.1c mapping for everybody, or whatever. Now here's the punch line: \This assumes that the low-order bits of an Ethernet address is less than 1024 (0x400)!/ Well, the low-order bits of the Ethernet addresses of \our/ non-Sun Internet systems are 0x198, 0x194, 0x102, 0x103, 0x104, 0x109, 0x393, 0x173 and (ta-da) 0x400, so we can't talk from our Suns to most of our other systems! (There are other questionable misassumptions too; collect them all for valuable prizes.) It is my understanding that that the ARP code on the Suns is the same as in real 4.2 from Berkeley, implying it has the same misfeatures. People with source might consider looking around and possibly ripping it out, or changing the 1024 to a more appropriate number. (If I had had source for Sun's "4.2", it would have helped my diagnosis a lot!) Thanks to everyone who sent me mail on my previous query on this problem. The fact that some people said that getting the Suns to talk was easy while others said they couldn't do it made me suspicious. Cheers, John ("Spent \Three Weeks/ on This One") DeTreville Bell Labs, Murray Hill
jgc@sunrise.UUCP (Jim Constantine) (10/21/83)
If you are running release 0.3 or 0.4 of SUN UNIX ( 4.1c BSD ) and you wish to alter the point at which ARP takes over here is the patch : adb -w vmunix.new arpresolve + 0da ? ia should yield cmpl instruction if not quit. arpresolve + 0de ? x should yield 400 ( i.e. 1024) to zap it say ?w number ^D