[comp.protocols.tcp-ip] Recursive Subnets

geof@imagen.UUCP (Geof Cooper) (08/08/87)

In all this discussion of how you can't accomodate different
sized subnets, I just wanted to mention that recursive subnets
offer a legal solution to the problem -- if you can build
the gateways to make them work.

In fact, I remember thinking of recursive subnets as a
solution to exactly this problem when the subnet specs were
being sledgehammered out.  The idea of using a subnet
mask was partly to allow obscure things like this.

The idea is to use higher order bits of the subnet address
to label "top-level subnets", and lower bits to label
"bottom-level" subnets.  The address might look like:

    NNNNNNNN NNNNNNNN TSSSSSSS HHHHHHHH

N => network number bits
T => top-level subnet number
S => bottom-level subnet bits
H => host number

There is one "top-level net" in this example (T=1),
with a 15-bit host address.  The other top-level subnetwork
(T=0) is really a subdivision of 128 different subnets,
each of which can have 256 hosts.  The bottom-level subnets
use a mask of 0xffffff00.  The top-level subnet
uses a mask of 0xffff8000.  It is easy to generalize the
above example to multiple top-level nets (or even
multiple levels of recursive subnets - gawk!).

All the gateways in all the subnets have to know the
global subnet configuration (at the levels to which they
are connected).  This means that the configuration tables
that were mentioned on the list -- with different subnet
masks for different subnets or hosts -- still exist
(they map to interfaces now), but only within the gateways.
Hosts just use the regular subnet routing, and don't
know about recursive subnets.

The usual restriction of subnets, that there be only
a single entry into the subnet world, still holds
(I think) between the top and bottom levels.  You could
have redundant gateways, but all would have to be
equally connected.  I guess that you could remove this
restriction with smarter gateways (all gateways know
about all subnets, regardless of size).

Hosts on the top-level network can send to hosts on
the bottom-level networks, because bottom level network
addresses look like hosts on the "other" top-level network
(with T=0), so the packets are sent to a gateway.
The Gateway Knows.

Hosts on a bottom-level network can send to hosts on
other bottom-level networks using the usual subnet-
routing algorithm.

Hosts on a bottom-level network can send to hosts on
a top-level network because all hosts on the top-level
network look like hosts on some other bottom-level
subnet (which happens to have T=1), so the packets
are sent to a gateway.  The Gateway Knows.

Everybody can send to hosts that are not on the subnet,
because such packets always look like they are on a 
different "subnet", and are sent to a gateway, and
The Gateway Knows.

Of course, you still have to do the work to make the
Gateways Know.

- Geof

karels%okeeffe@UCBVAX.BERKELEY.EDU (Mike Karels) (08/08/87)

Round and round and round we go!  Your suggestion for recursive subnets
is exactly the original Berkeley subnet scheme and proposal (in RFC-something
or other), with the bit T inverted.  (We used T=1 to indicate bottom-level
subnets, T=0 for the trunk network.)

		Mike