rnicovic@polyslo.CalPoly.EDU (Ralph Nicovich) (03/02/90)
Netters, I find something strange on our network which seems to involve all Routers on our network It seems to be an incompatability between the routers and the addressing on our network, and I thought you might have some insight or at least see if my cenario makes sence. First, we are running multiple (2) subnets on the same physical (DLL) network. There are a number of papers that claim this is leagal, but perhaps their setup was diferent. In our case the two networks (subnets) are 129.65.16.0 and 129.65.160.0, the wrinkle is that the mask on 16.0 is ff.ff.f0.00 and on 160.0 it is ff.ff.ff.00 . What happens is that a kinettics fastpath gateway on 160 sends out a apple link broadcast. imediatly each of our routers retransmits the same packet to the physical (DLL) address of the router that connects 16.0 to 160.0 . This router between the two subnets has two ethernet interfaces both on the same cable. It is my understanding that routers do not route broadcast packets. In fact that is the benifit of routers over Data Link Bridges. This is my guess of what happens. The Cisco and all the other routers are on network 16.0 with a mask of ff.ff.f0.00. They see this broadcast packet from the kinettics since at the DLL level it is a broadcast and they must look at it. They then apply their network mask to the IP destination address of 129.65.160.255 (which is the propper broadcast for 160.0 . When the routers apply this mask they see 0's in the host field and therfore do not recognise it as a broadcast at the IP level. They then send it to the router between 16.0 and 160.0 since they know that path and feel the packets should be routed. Personaly I would think that any packet that is a broadcast at the DLL level should not be automaticaly routed. Mabye this is not the case. Any Ideas ? Ralph Nicovich Cal Poly State University Network Engineering
medin@NSIPO.NASA.GOV ("Milo S. Medin", NASA ARC NSI Project Office) (03/03/90)
Ralph, I think you are the victim of excessive layering. The problem is that while routers are not to forward broadcasts, they determine what is a broadcast by looking at the destination IP address, and NOT the MAC level header. So if you run with multiple subnets on a physical cable, you will typically also have multiple broadcast addresses as well. If a router then recieves a broadcast packet for a destination IP address other than the broadcast address configured into it's interface, it will try and forward it! Personally, I consider every router guilty of this in violation of RFC-1009. Though several quite respected people disagree with me on this. The real fix to modify the internal data structures from the driver to the IP forwarder to tag the de-encapsulated (de-ecapsulated from the link level that is) IP packet with a pseudo-header that keeps the information about whether or not it was recieved via a MAC level multicast (broadcast is a specific case of multicasting), and NEVER forward it in this case. I'm told this is being doing in 4.4 BSD, but I would encourage folks to beat up their router vendors to do this as well. It violates the principle of maximum robustness to do otherwise... It's silly to throw away good information you pick up at layer 2, and then use a hueristic to try and get around this at layer 3. You can never forward things with both 0's and 1's destination addresses, or net broadcasts, or subnet broadcasts, but all this trys to fix the symptoms, and not the problem, which is throwing away very valuable level 2 info. Thanks, Milo
almquist@JESSICA.STANFORD.EDU ("Philip Almquist") (03/05/90)
Ralph, > First, we are running multiple (2) subnets on the same physical (DLL) > network. There are a number of papers that claim this is leagal, but > perhaps their setup was diferent. In our case the two networks (subnets) > are 129.65.16.0 and 129.65.160.0, the wrinkle is that the mask on > 16.0 is ff.ff.f0.00 and on 160.0 it is ff.ff.ff.00 . I don't believe that the IP and subnet specs either explicitly permit or deny running multiple nets or subnets on the same cable, in large part (as I understand history) because it didn't occur to their authors that anyone would want to. However, it has since become accepted practice in large parts of the IP community, and I seem to recall that the Host Requirements RFC's try to ensure that hosts handle this practice correctly. Multiple subnet masks on the same net, on the other hand, is still a very controversial practice, with strong proponents and strong detractors. One thing that is agreed upon is that using multiple subnet masks requires great care in choosing masks and assigning addresses in order to avoid the sorts of problems you report. I seem to recall that there is some mathematical analysis of what works and what doesn't in the OSPF spec. There has also been talk of starting an IETF working group to study the issue. > Personaly I would think that any packet that is a broadcast > at the DLL level should not be automaticaly routed. Your view is at odds with the tradional one, but is becoming fashionable. My guess is that your view will be incorporated into the next revision of RFC1009. Philip