[comp.protocols.tcp-ip] subnetting

dpowles@CCD.BBN.COM ("Drew M. Powles") (10/30/87)

We are doing a survey for a local client on IP implementations.  The
descriptions in the vendors guide don't really go into the detail
we're looking for in one respect: Subnetting support (ala RFC 950).  I
realize that both RFC 1011 and RFC 1009 require subnetting be
supported, but I have run into many folks in the 'biz that insist most
vendors do not implement nor plan to implement subnetting support.
For instance, does the Wollongong software implement RFC 950?  What
about Berkeley, or AT&Ts 3B TCP/IP?  What about the gateway vendors
(of course I know about BBN's) such as cisco Systems?  I do note the
Fuzzballs support it; the fuzzball description was one of the few that
called out subnetting specifically.  How about the interface and
front-end vendors like ACC?

Any and all help would certainly be appreciated.  You can send
directly to me, dpowles@bbn.com and I'll summarize to the community if
you'd like.

thanks!
Drew Powles
Columbia Professional Services
BBN Communications

per@erix.UUCP (Per Hedeland) (05/05/88)

Excuse me if the question below is trivial, but I really haven't seen much
discussion on subnetting, and neither RFC reading nor local asking-around
has gotten me very far...

This is the scenario: The basic structure of our LAN is a backbone segment,
to which a number of Sun server/client groups are connected. Each client group
has it's own Ether segment, with the server acting as gateway to the backbone.
Typically there are 5-10 clients in each group. There are currently some 20
such groups, but predictions are for hundreds in the not too distant future,
i.e. considering other connected equipment, far more than 256 addresses are
required for the backbone.

Due to us not being connected to the Internet, and inadequate planning of the
growth of the LAN, network numbering is a mess, which we would like to clean up
as soon as possible, and this prompts my question: It seems to be a terrible
waste of adress space to use a separate class C number for each of the client
groups, so we figured that subnetting would be appropriate, but how do we use
it to an advantage?

Specifically, given the abovementioned structure, there's a conflict between:

a) It appears that the intended use of subnetting assumes that all the "subs"
   of a "whole" net are interconnected, i.e. the backbone and the client
   segments in our case should be "subs" of the same "whole" - in particular,
   "automatic" routing by means of routed (which we desire) will not work
   otherwise, as far as I can understand.

and:

b) "Subs" of a given "whole" must be of equal size.

We do believe that the arguments for the current structure (such as handling
the load from diskless clients, avoiding extra cabling given the physical
location of servers and clients, allowing use of the backbone for e.g. DECnet
traffic) are valid, and it seems rather silly having to modify it to
accommodate the IP adressing scheme. But of course, neither the structure nor
the requirement for "automatic" routing are carved in stone, i.e. any and all
suggestions are welcome (preferrably via e-mail, and I will summarize to the
net if requested).

Thanks In Advance
--Per Hedeland

Internet: per@erix.ericsson.se
Non-MX:   per%erix.ericsson.se@uunet.uu.net
UUCP:     {mcvax,munnari,uunet}!enea!erix!per

bc@halley.UUCP (Bill Crews) (05/06/88)

In article <1607@erix.UUCP> per@erix.ericsson.se (Per Hedeland) writes:
>
>Typically there are 5-10 clients in each group. There are currently some 20
>such groups, but predictions are for hundreds in the not too distant future,
>i.e. considering other connected equipment, far more than 256 addresses are
>required for the backbone.

>                                                   It seems to be a terrible
>waste of adress space to use a separate class C number for each of the client
>groups, so we figured that subnetting would be appropriate,

It does to me, too.  So, why not just use class B addresses?  Based on the
criteria you dictate, that would seem to be adequate for now and the future.

-bc
-- 
Bill Crews                                   Tandem Computers
bc@halley.UUCP                               Austin, Texas
..!rutgers!im4u!halley!bc                    (512) 244-8350

Doug_Nelson@UM.CC.UMICH.EDU (05/07/88)

In message <1607@erix.UUCP>, Per Hedeland writes:
 
>  a) It appears that the intended use of subnetting assumes that all the "subs"
>     of a "whole" net are interconnected, i.e. the backbone and the client
>     segments in our case should be "subs" of the same "whole" - in particular,
>     "automatic" routing by means of routed (which we desire) will not work
>     otherwise, as far as I can understand.
 
Yes, that has to be true - you can only advertise your full network,
not your subnets, to the Internet at large.
 
>  b) "Subs" of a given "whole" must be of equal size.
 
This is a mistaken assumption.  There is nothing that prevents you
from using subnets of different sizes on a given net, except for
software that isn't up to speed on subnetting (notably SunOS 3.x).
For example, our campus-wide network is a class B sized subnet of a
class A network.  The Merit network itself is a class A/2 subnet, and
Univ of Michigan has parceled out a number of class C-sized subnets.
I plan to pass out class C-sized subnets of our network (or possibly
smaller) to several other campus Ethernets, as soon as we get SunOS
4.0 installed.
 
Doug Nelson                   den@serv1.cl.msu.edu
Michigan State University     08071den@msu.bitnet
Computer Laboratory

joe@tekbspa.UUCP (Joe Angelo) (05/09/88)

in article <358@halley.UUCP>, bc@halley.UUCP (Bill Crews) says:
> Xref: tekbspa comp.dcom.lans:150 comp.protocols.tcp-ip:495
> 
> 
> It does to me, too.  So, why not just use class B addresses?  Based on the
> criteria you dictate, that would seem to be adequate for now and the future.
> 

Now, the classes of IP addresses is simple enough to understand --

But what about subnetting? When does one want to *really* use
two IP network address on the same cable? And what performance
advantages does this give you? Were does the netmask come it at?
Is subnetting just a nice admistrativia thing? Or does your local
enet board not receive the packets, period? Or is it the high
level software that ignores the packet? Does anything really ignore
anything? 

-- 
"I'm trying             Joe Angelo -- Senior Systems Engineer/Systems Manager
 to think               at Teknekron Software Systems, Palo Alto 415-325-1025
 but nothing
 happens!"              uunet!tekbspa!joe -OR- tekbspa!joe@uunet.uu.net

slevy@UC.MSC.UMN.EDU ("Stuart Levy") (05/09/88)

> >  b) "Subs" of a given "whole" must be of equal size.
>  
> This is a mistaken assumption.  There is nothing that prevents you
> from using subnets of different sizes on a given net, except for
> software that isn't up to speed on subnetting (notably SunOS 3.x).

Unfortunately, there -are- problems with dividing a network into
variable-sized subnets -- not just incomplete software implementations
but real engineering problems.  They relate to cases where hosts or
gateways need to know the size of a subnet they're not attached to:
e.g. when interpreting an ICMP network redirect, synthesizing a remote
broadcast address, or routing to a remote subnet.

You may be able to live with the effects of misinterpretations if things
are kept simple enough (so long as nothing sends you a network redirect :->).

The subnetting RFCs, e.g. 917, 936, 950 discuss some possible conventions
for determining subnet sizes, including equal sizes on a given network (easy)
and self-encoding subnet sizes analogous to the class A/B/C sizing for ordinary
networks.  I suppose it would also be possible to distribute a table of
subnet sizes to every host and gateway on a network.  But in general,
you -do- have to be able to know the sizes of sibling subnets, and the
equal-size case seems to be the closest one to a standard.

	Stuart Levy

dls@mace.cc.purdue.edu (David L Stevens) (05/09/88)

	Differing subnet sizes are not really a problem on all systems--
the "only if your software isn't up to snuff" comment applies.
	4.3BSD includes enhancements to ICMP to ask for the interface's
netmask ("ICMP_MASKREQ"). I don't know of any user-level program that uses
this (yet).
	Also, I don't think it's been clear that the "variable size" subnets
are by individual bits, not just bytes. You can split a class B net number
into 17 bits of network and 15 bits of host, if that's what you really want
to do. Some software only supports A subnetted to B and B subnetted to C
(ie, by bytes), though. Void where prohibited. Your mileage may vary.
	Of course, if you have sources, you can fix it.
-- 
					+-DLS  (dls@s.cc.purdue.edu)

braden@VENERA.ISI.EDU (05/09/88)

	
	> >  b) "Subs" of a given "whole" must be of equal size.
	>  
	> This is a mistaken assumption.  There is nothing that prevents you
	> from using subnets of different sizes on a given net, except for
	> software that isn't up to speed on subnetting (notably SunOS 3.x).
	
	Unfortunately, there -are- problems with dividing a network into
	variable-sized subnets -- not just incomplete software implementations
	but real engineering problems.  They relate to cases where hosts or
	gateways need to know the size of a subnet they're not attached to:
	e.g. when interpreting an ICMP network redirect, synthesizing a remote
	broadcast address, or routing to a remote subnet.
	
Stuart,

Let's consider the three examples you cite.  

Network Redirect:  It is recognized that network redirects are a problem
in a subnetted environment, and therefore the Gateway Specification
RFC-1009 says that gateways should only be sending host redirects.
If you have a gateway within your subnetted environment that is sending
network redirects, it should be brought up to spec.

Synthesizing a remote broadcast -- presumably you mean a directed
broadcast. Yes, this is a real engineering problem, although it is an
application-level problem, not an IP level problem.  If you have an
application that is sending directed broadcasts into another subnet of
the same network, that application needs some configuration information
-- obviously, it needs the remote subnet number.  You might as well
configure it with the complete 32-bit Internet directed broadcast
address.  Synthesizing IP addresses should be avoided whenever possible.

Routing to a remote subnet -- This is entirely a gateway problem.
The solution, as RFC-1009 suggests, is simply to include the
subnet masks with the network numbers in the routing updates among
the subnet gateways.  I wonder why no one has extended RIP in this
obvious way yet.  As you say, it is merely a matter of a little
engineering.   
   
After all this, I would challenge your statement that "in general,
you -do- have to be able to know the sizes of sibling subnets"
(at least, if "you" is a host, not a gateway).

Bob Braden

Doug_Nelson@UM.CC.UMICH.EDU (05/09/88)

As a couple of you have pointed out, routing is the problem with
multiple subnets of different sizes.  We manage routing within our
subnet very trivially - we don't really do routing, since we have
only a single gateway to the outside world.  I encourage our Sun
owners to add a default route pointing to their own system, which
adds a few ARPs to our local network, but finds the gateway just fine.
 
What really is needed is a subnet routing protocol which passes netmasks
along with the network numbers.  Is anyone working on this yet?  Can
anyone tell me if 4.3bsd includes the netmask in each routing table
entry?  We need this to make such a protocol usable.
 
Doug Nelson

ed@mtxinu.UUCP (Ed Gould) (05/10/88)

>Now, the classes of IP addresses is simple enough to understand --
>
>But what about subnetting? When does one want to *really* use
>two IP network address on the same cable? And what performance
>advantages does this give you? Were does the netmask come it at?

The purpose of subnetting is not to run multiple IP addresses
on the same cable, but to make a local collection of networks
appear as if it were one network from the outside.  To do this,
one takes a standard IP adress (ususally a Class B address, but
this isn't required) and uses some of the bits that are normally
the "host number" part of the address as if they were part of
the "network number."  The netmask determines the division between
host part and network part that is used locally.

For example, consider the following /etc/hosts excerpt, which lists
several Class B addresses.  Keep in mind a netmask of 0xFFFFFF00
(the normal Class B netmask is 0xFFFF0000).

	129.1.1.1	main-sys
	129.1.2.1	main-sys-gw
	129.1.2.2	second-sys
	129.1.2.3	third-sys

One topology this could represent is

  net to outside	 internal net
    (129.1.1)		  (129.1.2)
	________   _________________________________
	       |   |              |                |
	       |   |              |                |
	    -----------     -------------    --------------
	    |         |     |           |    |            |
	    | main-sys|     | second-sys|    | third-sys  |
	    |         |     |           |    |            |
	    -----------     -------------    --------------

In this case, there are two physical networks:  one connecting the
three machines locally, and one connecting the main system to the
outside world.  To the outside world, the three machines look as if
they are connected together on a single Class B network.  Internally,
though, they look as if they were on two separate Class C networks with
a gateway.

-- 
Ed Gould                    mt Xinu, 2560 Ninth St., Berkeley, CA  94710  USA
{ucbvax,uunet}!mtxinu!ed    +1 415 644 0146

"I'll fight them as a woman, not a lady.  I'll fight them as an engineer."

slevy@UC.MSC.UMN.EDU ("Stuart Levy") (05/10/88)

OK.  If we have permission to squash systems sending subnet redirects
it'll make the situation easier.  (At the University of Minnesota
we've had real operational problems with this in the past.)

And when we do have routing protocols that carry explicit subnet masks
I'll happily shut up.

It'll still seem useful, though, OK, maybe not essential for hosts to
be able to find the subnet structure of a net.  For sending directed
broadcasts, suppose you want to say "broadcast on the net where host X lives"
where X is known by name.  It might be desirable to use the normal mechanism
for finding X's address rather than hard-wiring an IP address into an
application.  In that case, since the domain name system doesn't (and shouldn't)
record network structure, how could you find the right broadcast address?
Admittedly this may stretch the point a bit but not too far, I think.

Likewise, if a host and several gateways are on some (sub)net, the host might
want to set up its routing tables for a "good" choice of gateway to other
subnets.  Granting that routing should work if the host picks -some- gateway
and depends on that to forward and/or redirect traffic as needed, it could
still make good use of the information if it could get it.

Again, routing protocols designed for variable-sized subnets would let this
happen naturally.


	Stuart

braden@VENERA.ISI.EDU (05/10/88)

	
	It'll still seem useful, though, OK, maybe not essential for hosts to
	be able to find the subnet structure of a net.  For sending directed
	broadcasts, suppose you want to say "broadcast on the net where host X lives"
	where X is known by name.  It might be desirable to use the normal mechanism
	for finding X's address rather than hard-wiring an IP address into an
	application.  In that case, since the domain name system doesn't (and shouldn't)
	record network structure, how could you find the right broadcast address?
	Admittedly this may stretch the point a bit but not too far, I think.

Stuart,
	
Directed broadcast is generally a poor idea (the right solution is the IP
multicasting).  No architectural decision should be taken on the grounds
that it makes makes directed broadcasting easier.
	
	Likewise, if a host and several gateways are on some (sub)net, the host might
	want to set up its routing tables for a "good" choice of gateway to other
	subnets.  Granting that routing should work if the host picks -some- gateway
	and depends on that to forward and/or redirect traffic as needed, it could
	still make good use of the information if it could get it.

I disagree.  The Internet standard approach for a host: pick any
gateway and let it redirect you... is simple and effective. You REALLY
DON'T want hosts to know about routing, even subnet routing!!
	
Bob Braden
	

jqj@HOGG.CC.UOREGON.EDU (05/11/88)

>	The Internet standard approach for a host: pick any
>gateway and let it redirect you... is simple and effective. ....
but works abysmally given the typical host software that allows you
either to (1) set a static default route to the world, or (2) run
passive RIP or something like it.  If I choose option 1 and the default
gateway crashes, it won't be around to send ICMP redirects telling me
to use the backup gateway.  Phrased differently, the "Internet
standard" does not adequately address the issue of how a host should
pick the first gateway to try.

>You REALLY DON'T want hosts to know about routing.
At issue here is a critical point:  how smart is it desirable for hosts
to be?  Braden argues that they should be very dumb.  I would argue
that they can be dumb if they don't really need connectivity off their
network, but should be a little bit smarter if possible.  If you
concede that, then the next step is to decide whether it is better for
a host to have:  (1) a static list (n>1) of gateways to try; (2) some
as yet undefined dynamic discovery mechanism for a host on a network to
find the list of gateways without getting routing data; (3) hosts that
listen to routing traffic and hence could potentially use the data to
avoid that first bad choice of a gateway.

My personal bias:  Passive RIP works just fine in the XNS world as a HOST
protocol as well as as a gateway protocol.  It works adequately in the
IP world for typical CANs and moderately complex LANs.  I see no real
alternative available at present.

slevy@UC.MSC.UMN.EDU ("Stuart Levy") (05/11/88)

It looks as though 4.3BSD subnetting code doesn't store a net mask per route.
There's a net mask per -interface-, but it doesn't seem to be used the
way you'd hope.  There's effectively just one subnet mask per net for
routing purposes (I think it uses the mask set by the first interface on
the net) -- that is, 4.3BSD silently assumes equal-sized subnets on a
given net.  If I say

	ifconfig ex0  128.101.1.2    netmask 255.255.255.0
	ifconfig ex1  128.101.27.27  netmask 255.255.240.0

the interface route for ex1 has a destination address of "128.101.16.0"
(reasonable) BUT the route is only used when sending to 128.101.16.anything.
Sending to 128.101.17.anything, ..., 128.101.31.anything does not increment
the interface route's usage count.

4.3's multiple subnet masks are meaningful for interfaces on different nets
but not for variable-sized subnets on a single net.  It'll be interesting to
see whether SUN 4.0 works the same way.

per@erix.UUCP (Per Hedeland) (06/01/88)

While it may be a bit late, I thought I should post a short summary of the
information I got in response to my query a few weeks back - it did generate
some discussion, after all. If you recall, the issue was how to use subnetting
on a network structure with a big backbone net and many small ones hanging
off of it. I think the below is the essence of what I found out; I also have
a pile of mail for those particularly interested.

- Unequal-sized subnets, whether or not a Good Thing, is not currently
  implemented in any generally accepted way (and thus of little interest to
  us).

- Partitioned subnets (i.e. subnets of a given net interconnected only by some
  other net) are out.

- One can have several logical subnets on the same wire (i.e. the backbone in
  our case), thus effectively increasing the address space, at the expense of
  some manual "routing" (i.e. gateways have to be explicitly told that the
  different subnets can be accessed via the same interface - hosts on such
  a wire can be "fooled" into believing that it's all one (bigger) subnet).

We will probably go for the latter method, with a long-term goal of splitting
our backbone by using dedicated routers.

Thanks to all who offered help and advice!
---Per Hedeland

scottp@se-sd.SanDiego.NCR.COM (Scott Platenberg) (03/19/91)

  I am trying to build up a case for proper coordination of subnet
masks on hosts and gateways in a medium sized network.  There is a 
central router which employs the 8-bit subnet mask connecting 8 physical
nets in a class B network.  Some hosts on the segments have 8-bit
subnet masks and others do not.  The network functions with this hodge-podge
config, but when I want to further subnet off one of the segments I run
into problems that I feel are attributed to the subnet config.  When this
further segmented net tries to reach hosts on the segment which it has the
direct connection to it fails if the host is not using the subnet mask. 

  What are some other specific reasons for not having hosts on the same
network have different subnet masks?  Also, what problems may arise
if there is a gateway with one interface using masking and the
other interface not?  
  If you feel this discussion is inappropriate for the group, please
email.  Thanks.

	+-------------------------------------------------------+
	|	   Scott Platenberg, NCR NPD-San Diego		|
	|	   9900 Old Grove Road, San Diego, CA		|
	|	 Scott.Platenberg@se-sd.SanDiego.NCR.com	|
	|	VOICE: (619) 693-5714, VOICEplus: 442-5714	|
	|		    FAX: 619-693-5705			|
	+-------------------------------------------------------+