[comp.protocols.tcp-ip] Routing and Multiple Subnets on one net

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