[comp.protocols.tcp-ip] Subnets on an unsubnetted network

peters@CC.MSSTATE.EDU (Frank W. Peters) (01/31/89)

Hello,

     A recent posting by Tom Corsetti brought to mind several questions 
which we wrestled with and often left unanswered.

     We, like Mr. Corsetti, have a large un-subnetted class B network.  
Addresses on this network are assigned in a subnetted fashion (that is,
all of the nodes in a given building have the same third octet to allow
for subnetting at a later date).

     In a couple of buildings on campus we have Sun servers with two
ethernet cards and diskless workstations 'behind' them to provide nfs
traffic isolation.  Each network of clients has its own 'subnet' of the
campus class B network.

     We are not exactly sure about how to configure the gateway suns
to allow them to be subnetted (for the clinets on one side) and still
have full connectivity with the unsubnetted campus network. 

     As it now stands we have the following problems:

(1) Broadcast Addresses: As it now stands, the subnetted machines address
    broadcasts to (say) 130.18.64.255 instead of the common address of
    130.18.255.255.  Is there any reason why we can't take advantage of
    the broadcast option of the UNIX ifconfig command to have a subnet mask
    of 255.255.255.0 and a broadcast of 130.18.255.255?  should the broadcast
    be the same on BOTH sides of the gateways?  Does it matter if its the
    same?  That is, can the broadcast be x.x.255.255 on the campus side and
    x.x.y.255 on the client side?
 
    As it now stands, every time a subnetted machine on the 130.18.64.0 net
    (which is really part of the unsubnetted campus net) sends a broadcast 
    the subnetted machines on (say) the 130.18.48.0 net (which is also part
    of the same campus net but, because of subnetting, THINKS its on a
    seperate subnet) don't recognize the broadcast and attempt to arp the
    130.18.64.255 broadcast address.

(2) Routing (1):  Given a gateway sun that is on the unsubnetted campus backbone
    but that THINKS it is on a subnetted network, how do we convince it that
    it can reach a machine directly that is not on its 'subnet'?  That is,
    how do we convince a subnetted gateway machine on the 130.18.64.0 portion
    of the backbone that it can directly reach a machine on the 130.18.48.0
    portion?  As it is now configured all packets of this sort are routed to
    our proteon routed...which turns right around and sends it back out the
    same interface.  Gross huh?

(3) Routing (2):  Are there any options besides proxy arp to allow the gateway 
    suns to grab packets off of the backbone and routing them through their
    client sides?  This is basically the common problem of an unsubnetted
    machine sending a packet to a machine that is not REALLY on the same wire.
    We have a public domain proxyarpd package for suns but can't get it to
    compile on a sun 4.

(4) Sorta-Subnetting:  This is a possibility that may solve all of our 
    problems if I only understood it.  I note that (on a Sun at any rate) it
    is possible to assign subnet masks (and subnetting alltogether) on an
    interface basis.  What would it mean to have a gateway with two subnets
    for the same network on two different interfaces?  Would it help?  Would
    it WORK? How about one interface subnetted and one not (thats pretty much
    what we logically want)?

     Any comments or suggestions would be welcome.  Please don't suggest 
subnetting the campus backbone though.  We just don't have the budget for 
the routers yet.

                    Thanks
                    Frank Peters

=====================================================================
Systems Programmer                 |   Mississippi State University
Phone:    (601) 325-2942           |   Computing Center and Services
Internet:  peters@CC.MsState.Edu   |   Post Office Drawer CC
BITNET:    PETERS@MSSTATE.BITNET   |   Mississippi State, MS.  39759
=====================================================================

hedrick@geneva.rutgers.edu (Charles Hedrick) (02/01/89)

OK, you've got a central network with 130.18.1 to 130.18.63, and
a Sun connecting this network to a small Ethernet with 130.18.64 on
it.  What I think you want to do (and I confess I haven't tried
this) is:

  on the interface to your small Ethernet, leave things as a
	normal subnet, i.e. subnet mask 255.255.255.0, and
	broadcast address 130.18.64.255.

  on the interface on the central network, set the broadcast address
	(it's a parameter to ifconfig) to 130.18.255.255.  I think
	you want to leave the subnet mask as 255.255.255.0.  If
	you try to use a subnet mask of 255.255.0.0 on this
	interface, routing is likely to get very confused.

  route add 0 <your address on the main network> 0

  run the proxy ARP daemon.  (I'm sure I heard somebody say there
	was a version that worked under 4.0.  It's got to be completely
	different than the 3.2 version.)

The "route add" will cause your Sun to treat any address it doesn't
know about as being attached directly to your main network.  This
assumes that any gateways you have to connect you offsite will respond
to ARP requests for addresses offcampus.  If your exterior gateway
doesn't have a complete proxy ARP implementation (I've heard rumors
that this is true for Proteon), then you're going to have to do

  route add 130.18.1.0 <your address on the main network> 0
  route add 130.18.2.0 <your address on the main network> 0
  ... 

for all subnets on the main network.  Or if you have one gateway
somewhere that knows all your subnets, run routed and get routes from
it.

I don't see any way to make things work unless you can get proxy
ARP running.  However if you have a Sun (or other system with
similar facilities) anywhere else on the network, you can do

  arp -s <hostname> <etheraddress> pub

for every host on your subnet.  This causes the machine to do
a kind of hard-wired proxy ARP.  When it sees an ARP request
for <hostname> it will respond with <etheraddress>.  <Etheraddress>
should be the address of the Sun that's acting as the gateway
to your subnet.  You can't do this on that Sun itself, because
it needs to know the actual Ethernet addresses of those machines.

By the way, I'm not sure that this whole business is really the right
way to do things.  The moment you have different machines on your main
network with different subnet masks, things will get very exciting.
The ICMP subnet mask broadcasts will tend to cause machines to
randomly change subnet masks.  I think I'd set up every machine that
knows about subnet masks to use a mask of 255.255.255.0.  Then use the
"route add 0" commands as described above to tell it to use the main
network for all the subnets.

martillo@cpoint.UUCP (Joacim Martillo) (02/02/89)

I am not sure I understand the problem.  Perhaps, I am wrong but
I would consider subnetting a useful administrative kludge when
I have several physical networks but one network number.

With such understanding gateways between two subnets of one
network number should not behave much differently than gateways
between two networks with two different network numbers.  I would
not want my gateway to forward IP broadcast packets from one
network or subnet to the other network or subnet.  That just allows
little sins to turn into big sins.

Now if I have hosts that understand subnets and hosts that do not
understand subnets on the same physical network.  I would expect
the hosts that understand subnets to use the subnet IP broadcast
and hosts that do not understand subnets to use the standard
network IP broadcast.  I would expect the subnet understanding
hosts to understand all IP broadcasts while the hosts which do
not subnet would not understand subnet IP broadcasts.  Such is
life and may be acceptable, otherwise you have to run subnetting
software on all machines.

Now if I understand the case presented, you have gateways which
understand subnetting and on one side of each gateway you have hosts
which understand subnets while on the other side of each gateway you
have hosts which do not understand subnets and there is but one network
for all the hosts which do not understand subnets. 

On the subnetted side, life is simple.  A given host either arps IP 
address on the subnet or sends IP packets to the gateway when the 
destination IP address is not on the same subnet.  

On the unsubnetted side, life is rotten.  Suppose a host which does not
understand subnets wants to send IP packets to a subnetted host.  This
host will assume that the subnetted host is on the same physical network
and will arp it.  Unless the gateway on the subnet host can do proxy
arp, there will be no response to the original arp request and the IP
address will not be resolved.  If the non-subnetted hosts can be
pursuaded to send IP packets with unresolved IP addresses to a gateway,
it would be possible to establish communication but there would be no
obvious basis on which to choose to which gateway to send the packet.  I
suppose you could depend on ICMP redirect to fix this but it seems
rather gross and lots of hosts ignore ICMP redirect so that an IP packet
might always be sent to the wrong gateway first which would then send
the packet to the right gateway.  The bottom line really is that in your
network hosts which do not have a subnet address should still be doing
subnet routing, and until you get the appropriate software you will have
problems. 

As for the gateways, as long as they understand subnet routing properly,
it should be possible for one interface to be attached to a subnetted
physical network with appropriate subnet mask while the other interface
is attached to an unsubnetted physical network. 

By the way, subnetting should be just as possible on a class C network
as on a class B network.