In 1985, RFC 950 defined a
standard procedure to support the subnetting, or division, of a single Class A,
B, or C network number into smaller pieces. Subnetting was introduced to
overcome some of the problems that parts of the Internet were beginning to
experience with the classful two-level addressing hierarchy:
Both of these
problems were attacked by adding another level of hierarchy to the IP
addressing structure. Instead of the classful two-level hierarchy, subnetting
supports a three-level hierarchy. Figure 6 illustrates the basic idea of
subnetting which is to divide the standard classful host-number field into two
parts - the subnet-number and the host-number on that subnet.
Figure 6: Subnet
Address Hierarchy
Subnetting attacked
the expanding routing table problem by ensuring that the subnet structure of a
network is never visible outside of the organization's private network. The
route from the Internet to any subnet of a given IP address is the same, no
matter which subnet the destination host is on. This is because all subnets of
a given network number use the same network-prefix but different subnet
numbers. The routers within the private organization need to differentiate
between the individual subnets, but as far as the Internet routers are
concerned, all of the subnets in the organization are collected into a single
routing table entry. This allows the local administrator to introduce arbitrary
complexity into the private network without affecting the size of the
Internet's routing tables.
Subnetting overcame
the registered number issue by assigning each organization one (or at most a
few) network number(s) from the IPv4 address space. The organization was then
free to assign a distinct subnetwork number for each of its internal networks.
This allows the organization to deploy additional subnets without needing to
obtain a new network number from the Internet.
Figure 7:
Subnetting Reduces the Routing Requirements of the Internet
In Figure 7, a site
with several logical networks uses subnet addressing to cover them with a
single /16 (Class B) network address. The router accepts all traffic from the
Internet addressed to network 130.5.0.0, and forwards traffic to the interior
subnetworks based on the third octet of the classful address. The deployment of
subnetting within the private network provides several benefits:
Extended-Network-Prefix
Internet routers use only the network-prefix of the destination address to
route traffic to a subnetted environment. Routers within the subnetted
environment use the extended-network- prefix to route traffic between the
individual subnets. The extended-network-prefix is composed of the classful
network-prefix and the subnet-number.
Figure 8: Extended-Network-Prefix
The
extended-network-prefix has traditionally been identified by the subnet mask.
For example, if you have the /16 address of 130.5.0.0 and you want to use the
entire third octet to represent the subnet-number, you need to specify a subnet
mask of 255.255.255.0. The bits in the subnet mask and the Internet address
have a one-to-one correspondence. The bits of the subnet mask are set to 1 if
the system examining the address should treat the corresponding bit in the IP
address as part of the extended-network- prefix. The bits in the mask are set
to 0 if the system should treat the bit as part of the host-number. This is
illustrated if Figure 9.
Figure 9: Subnet
Mask
The standards
describing modern routing protocols often refer to the extended-network-prefix-
length rather than the subnet mask. The prefix length is equal to the number of
contiguous one-bits in the traditional subnet mask. This means that specifying
the network address 130.5.5.25 with a subnet mask of 255.255.255.0 can also be
expressed as 130.5.5.25/24. The /<prefix-length> notation is more compact
and easier to understand than writing out the mask in its traditional
dotted-decimal format. This is illustrated in Figure 10.
Figure 10:
Extended-Network-Prefix Length
However, it is
important to note that modern routing protocols still carry the subnet mask.
There are no Internet standard routing protocols that have a one-byte field in
their header that contains the number of bits in the extended-network prefix.
Rather, each routing protocol is still required to carry the complete
four-octet subnet mask.
Subnet Design
Considerations
The deployment of an addressing plan requires careful thought on the part of
the network administrator. There are four key questions that must be answered
before any design should be undertaken:
1) How many total subnets does the organization need today?
2) How many total subnets will the organization need in the future?
3) How many hosts are there on the organization's largest subnet today?
4) How many hosts will there be on the organization's largest subnet in the
future?
The first step in
the planning process is to take the maximum number of subnets required and
round up to the nearest power of two. For example, if a organization needs 9
subnets, 23 (or 8) will not provide enough subnet addressing space,
so the network administrator will need to round up to 24 (or 16).
When performing this assessment, it is critical that the network administrator
always allow adequate room for future growth. For example, if 14 subnets are
required today, then 16 subnets might not be enough in two years when the 17th
subnet needs to be deployed. In this case, it might be wise to allow for more
growth and select 25 (or 32) as the maximum number of subnets.
The second step is
to make sure that there are enough host addresses for the organization's
largest subnet. If the largest subnet needs to support 50 host addresses today,
25 (or 32) will not provide enough host address space so the network
administrator will need to round up to 26 (or 64).
The final step is
to make sure that the organization's address allocation provides enough bits to
deploy the required subnet addressing plan. For example, if the organization
has a single /16, it could easily deploy 4-bits for the subnet-number and
6-bits for the host number. However, if the organization has several /24s and
it needs to deploy 9 subnets, it may be required to subnet each of its /24s
into four subnets (using 2 bits) and then build the internet by combining the
subnets of 3 different /24 network numbers. An alternative solution, would be
to deploy network numbers from the private address space (RFC 1918) for
internal connectivity and use a Network Address Translator (NAT) to provide
external Internet access.
Given
An organization has been assigned the network number 193.1.1.0/24 and it needs
to define six subnets. The largest subnet is required to support 25 hosts.
Defining the
Subnet Mask / Extended-Prefix Length
The first step is to determine the number of bits required to define the six
subnets. Since a network address can only be subnetted along binary boundaries,
subnets must be created in blocks of powers of two [ 2 (21 ), 4 (22
), 8 (23 ), 16 (24 ), etc. ]. Thus, it is impossible to
define an IP address block such that it contains exactly six subnets. For this
example, the network administrator must define a block of 8 (23 )
and have two unused subnets that can be reserved for future growth.
Since 8 = 23
, three bits are required to enumerate the eight subnets in the block. In this
example, the organization is subnetting a /24 so it will need three more bits,
or a /27, as the extended-network-prefix. A 27-bit extended-network-prefix can
be expressed in dotted-decimal notation as 255.255.255.224. This is illustrated
in Figure 11.
Figure 11:
Example #1 - Defining the Subnet Mask/Extended-Prefix Length
A 27-bit
extended-network-prefix leaves 5 bits to define host addresses on each subnet.
This means that each subnetwork with a 27-bit prefix represents a contiguous
block of 25 (32) individual IP addresses. However, since the all-0s
and all-1s host addresses cannot be allocated, there are 30 (25 -2)
assignable host addresses on each subnet.
Defining Each of
the Subnet Numbers
The eight subnets will be numbered 0 through 7. Throughout the remainder of
this paper, the XXX2 notation indicates the binary representation of the
number. The 3-bit binary representation of the decimal values 0 through 7 are:
0 (0002 ), 1 (0012 ), 2 (0102 ), 3 (0112 ), 4 (1002 ), 5 (1012 ), 6 (1102 ),
and 7 (1112 ).
In general, to
define Subnet #n, the network administrator places the binary representation of
n into the bits of the subnet-number field. For example, to define Subnet #6,
the network administrator simply places the binary representation of 6 (1102 )
into the 3-bits of the subnet-number field.
The eight subnet
numbers for this example are given below. The italicized portion of each
address identifies the extended-network-prefix, while the bold digits
identify the 3- bits representing the subnet-number field:
Base Net: 11000001.00000001.00000001 .00000000
= 193.1.1.0/24
Subnet #0: 11000001.00000001.00000001.000 00000 =
193.1.1.0/27
Subnet #1: 11000001.00000001.00000001.001 00000 =
193.1.1.32/27
Subnet #2: 11000001.00000001.00000001.010 00000 =
193.1.1.64/27
Subnet #3: 11000001.00000001.00000001.011 00000 =
193.1.1.96/27
Subnet #4: 11000001.00000001.00000001.100 00000 =
193.1.1.128/27
Subnet #5: 11000001.00000001.00000001.101 00000 =
193.1.1.160/27
Subnet #6: 11000001.00000001.00000001.110 00000 =
193.1.1.192/27
Subnet #7: 11000001.00000001.00000001.111 00000 =
193.1.1.224/27
An easy way to
check if the subnets are correct is to ensure that they are all multiples of
the Subnet #1 address. In this case, all subnets are multiples of 32: 0, 32,
64, 96, ...
The All-0s
Subnet and The All-1s Subnet
When subnetting was first defined in RFC 950, it prohibited the use of the
all-0s and the all-1s subnet. The reason for this restriction was to eliminate
situations that could potentially confuse a classful router. Note that today a
router can be both classless and classful at the same time - it could be
running RIP-1 (a classful protocol) and BGP-4 (a classless protocol) at the
same time.
With respect to the
all-0s subnet, a router requires that each routing table update include the
route/<prefix-length> pair to differentiate between a route to the all-0s
subnet and a route to the entire network. For example, when using RIP-1 which
does not supply a mask or prefix-length with each route, the routing
advertisements for subnet 193.1.1.0/27 and for network 193.1.1.0/24 are
identical - 193.1.1.0. Without somehow knowing the prefix-length or mask, a
router cannot tell the difference between a route to the all-0s subnet and the
route to the entire network! This is illustrated in Figure 12.
Figure 12:
Differentiating Between a Route to the All-0s Subnet and the Entire Network
Regarding the
all-1s subnet, a router requires that each routing table entry include the
prefix-length so that it can determine if a broadcast (directed or all-subnets)
should be sent only to the all-1s subnet or to the entire network. For example,
when the routing table does not contain a mask or prefix-length for each route,
confusion can occur because the same broadcast address (193.1.1.255) is used
for both for the entire network 193.1.1.0/24 and the all-1s subnet
193.1.1.224/27. This is illustrated in Figure 13.
Figure 13:
Identifying a Broadcast to the All-1s Subnet and the Entire Network
Note that by
default, NETBuilderŪ software permits the forwarding of traffic to a directed
broadcast address but does not forward traffic to the all-subnets broadcast
address. The network administrator can modify this behavior via the -IP CONTrol
parameter switches FwdSubnetBcast | NoFwdSubnetBcast and FwdAllSubnetBcast |
NoFwdAllSubnetBcast.
With the
development of routing protocols that supply the mask or prefix-length with
each route, the address space defined by the all-0s and all-1s subnets is once
again usable despite the cautions in RFC 950. As a result, vendors have begun
to accommodate user demand and permit the configuration of the all-0s and
all-1s subnets on router interfaces. There are three factors that determine
when these subnets can be used with NETBuilder software.
To support the
deployment of the all-0s and all-1s subnets, the IGP must either carry
extended-network-prefixes or have a mechanism to map each route to its
extended-network- prefix. Both OSPF and I-IS-IS carry
extended-network-prefixes, so they support the deployment of the all-0s and
all-1s subnets in arbitrarily complex topologies. RIP-1 does not carry
extended-network-prefixes but the RcvSubnetMask parameter along with the -RIPIP
CONTrol (..[Aggregate| NoAggregate], [DeAggregate| NoDeAggregate]) switches
support the deployment of the all-0s and all-1s subnets in simple topologies.
NETBuilder software
has taken a phased approach in its support for the deployment of the all-0s and
all-1s subnets. Table 2 shows the NETBuilder software version number that first
implemented the various features that support the deployment of these subnets.
Table 2:
NETBuilder Software Features Supporting the All-0s and All-1s Subnets
Finally, the other
routers in the organization's network need to be able to correctly interpret,
learn, and forward traffic to other subnetworks with all-0s and all-1s in their
subnet number field.
Defining Host
Addresses for Each Subnet
According to Internet practices, the host-number field of an IP address cannot
contain all 0-bits or all 1-bits. The all-0s host-number identifies the base
network (or subnetwork) number, while the all-1s host-number represents the
broadcast address for the network (or subnetwork).
In our current
example, there are 5 bits in the host-number field of each subnet address. This
means that each subnet represents a block of 30 host addresses (25
-2 = 30, note that the 2 is subtracted because the all-0s and the all-1s host
addresses cannot be used). The hosts on each subnet are numbered 1 through 30.
In general, to
define the address assigned to Host #n of a particular subnet, the network
administrator places the binary representation of n into the subnet's
host-number field. For example, to define the address assigned to Host #15 on
Subnet #2, the network administrator simply places the binary representation of
15 (011112 ) into the 5-bits of Subnet #2's host-number field.
The valid host
addresses for Subnet #2 in our example are given below. The italicized portion
of each address identifies the extended-network-prefix, while the bold digits
identify the 5-bit host-number field:
Subnet #2: 11000001.00000001.00000001.010 00000
= 193.1.1.64/27
Host #1: 11000001.00000001.00000001.010 00001 = 193.1.1.65/27
Host #2: 11000001.00000001.00000001.010 00010 = 193.1.1.66/27
Host #3: 11000001.00000001.00000001.010 00011 = 193.1.1.67/27
Host #4: 11000001.00000001.00000001.010 00100 = 193.1.1.68/27
Host #5: 11000001.00000001.00000001.010 00101 = 193.1.1.69/27
.
.
Host #15: 11000001.00000001.00000001.010 01111 = 193.1.1.79/27
Host #16: 11000001.00000001.00000001.010 10000 = 193.1.1.80/27
.
.
Host #27: 11000001.00000001.00000001.010 11011 = 193.1.1.91/27
Host #28: 11000001.00000001.00000001.010 11100 = 193.1.1.92/27
Host #29: 11000001.00000001.00000001.010 11101 = 193.1.1.93/27
Host #30: 11000001.00000001.00000001.010 11110 = 193.1.1.94/27
The valid host
addresses for Subnet #6 are given below. The italicized portion of each address
identifies the extended-network-prefix, while the bold digits identify
the 5-bit host-number field:
Subnet #6: 11000001.00000001.00000001.110 00000
= 193.1.1.192/27
Host #1: 11000001.00000001.00000001.110 00001 = 193.1.1.193/27
Host #2: 11000001.00000001.00000001.110 00010 = 193.1.1.194/27
Host #3: 11000001.00000001.00000001.110 00011 = 193.1.1.195/27
Host #4: 11000001.00000001.00000001.110 00100 = 193.1.1.196/27
Host #5: 11000001.00000001.00000001.110 00101 = 193.1.1.197/27
.
.
Host #15: 11000001.00000001.00000001.110 01111 = 193.1.1.207/27
Host #16: 11000001.00000001.00000001.110 10000 = 193.1.1.208/27
.
.
Host #27: 11000001.00000001.00000001.110 11011 = 193.1.1.219/27
Host #28: 11000001.00000001.00000001.110 11100 = 193.1.1.220/27
Host #29: 11000001.00000001.00000001.110 11101 = 193.1.1.221/27
Host #30: 11000001.00000001.00000001.110 11110 = 193.1.1.222/27
Defining the
Broadcast Address for Each Subnet
The broadcast address for Subnet #2 is the all 1's host address or:
11000001.00000001.00000001.010 11111 = 193.1.1.95
Note that the
broadcast address for Subnet #2 is exactly one less than the base address for
Subnet #3 (193.1.1.96). This is always the case - the broadcast address for
Subnet #n is one less than the base address for Subnet #(n+1).
The broadcast
address for Subnet #6 is simply the all 1's host address or:
11000001.00000001.00000001.110 11111 = 193.1.1.223
Again, the
broadcast address for Subnet #6 is exactly one less than the base address for
Subnet #7 (193.1.1.224).
Given
An organization has been assigned the network number 140.25.0.0/16 and it needs
to create a set of subnets that supports up to 60 hosts on each subnet.
Defining the
Subnet Mask / Extended-Prefix Length
The first step is to determine the number of bits required to define 60 hosts
on each subnet. Since a block of host address can only be assigned along binary
boundaries, host address blocks can only be created in powers of two. This
means that it is impossible to create a block that contains exactly 60 host
addresses. To support 60 hosts, the network administrator must define a minimum
address block of 62 (26 -2) host addresses. However, this choice
would only provide two unused host addresses on each subnet for future growth.
Since this does not appear to be adequate to support additional growth, the
network administrator elects to define a block of 126 (27 -2) host
addresses and has 66 addresses on each subnet for future growth. A block of 126
host addresses requires 7-bits in the host-number field.
The next step is to
determine the subnet mask/extended-prefix length. Since 7-bits of the 32-bit IP
address are required for the host-number field, the extended-prefix must be a
/25 (25 = 32-7). A 25-bit extended-network-prefix can be expressed in
dotted-decimal notation as 255.255.255.128. This is illustrated in Figure 14.
Figure 14:
Example #2 - Defining the Subnet Mask/Extended-Prefix Length
Figure 14 shows
that the 25-bit extended-prefix assigns 9-bits to the subnet number field.
Since 29 = 512, nine bits allow the definition of 512 subnets.
Depending on the organization's requirements, the network administrator could
have elected to assign additional bits to the host-number field (allowing more
hosts on each subnet) and reduce the number of bits in the subnet-number field
(decreasing the total number of subnets that can be defined).
Although this
example creates a rather large number of subnets, it provides an interesting
example because it illustrates what happens to the dotted-decimal
representation of a subnet address when the subnet-number bits extend across an
octet boundary. It should be mentioned that the same type of confusion can also
occur when the host-number bits extend across an octet boundary.
Defining Each of
the Subnet Numbers
The 512 subnets will be numbered 0 through 511. The 9-bit binary representation
of the decimal values 0 through 511 are: 0 (0000000002 ), 1 (0000000012 ), 2
(0000000102 ), 3 (0000000112 ), ..., 511 (1111111112 ). To define subnet #3,
the network administrator places the binary representation of 3 (0000000112 )
into the 9-bits of the subnet-number field.
The 512 subnet numbers for this example are given below. The italicized portion
of each address identifies the extended-network-prefix, while the bold digits
identify the 9- bits representing the subnet-number field:
Base Net: 10001100.00011001 .00000000.00000000
= 140.25.0.0/16
Subnet #0: 10001100.00011001.00000000. 0 0000000 =
140.25.0.0/25
Subnet #1: 10001100.00011001.00000000.1 0000000 =
140.25.0.128/25
Subnet #2: 10001100.00011001.00000001.0 0000000 =
140.25.1.0/25
Subnet #3: 10001100.00011001.00000001.1 0000000 =
140.25.1.128/25
Subnet #4: 10001100.00011001.00000010.0 0000000 =
140.25.2.0/25
Subnet #5: 10001100.00011001.00000010.1 0000000 =
140.25.2.128/25
Subnet #6: 10001100.00011001.00000011.0 0000000 =
140.25.3.0/25
Subnet #7: 10001100.00011001.00000011.1 0000000 =
140.25.3.128/25
Subnet #8: 10001100.00011001.00000100.0 0000000 =
140.25.4.0/25
Subnet #9: 10001100.00011001.00000100.1 0000000 =
140.25.4.128/25
.
.Subnet #510: 10001100.00011001.11111111.0 0000000
= 140.25.255.0/25
Subnet #511: 10001100.00011001.11111111.1 0000000 =
140.25.255.128/25
Notice how
sequential subnet numbers do not appear to be sequential when expressed in
dotted-decimal notation. This can cause a great deal of misunderstanding and
confusion since everyone believes that dotted-decimal notation makes it much easier
for human users to understand IP addressing. In this example, the
dotted-decimal notation obscures rather than clarifies the subnet numbering
scheme!
Defining Hosts
Addresses for Each Subnet
In this example there are 7 bits in the host-number field of each subnet
address. As discussed earlier, this means that each subnet represents a block
of 126 host addresses. The hosts on each subnet will be numbered 1 through 126.
The valid host
addresses for Subnet #3 are given below. The italicized portion of each address
identifies the extended-network-prefix, while the bold digits identify
the 7-bit host-number field:
Subnet #3: 10001100.00011001.00000001.1 0000000
= 140.25.1.128/25
Host #1: 10001100.00011001.00000001.1 0000001 =
140.25.1.129/25
Host #2: 10001100.00011001.00000001.1 0000010 =
140.25.1.130/25
Host #3: 10001100.00011001.00000001.1 0000011 =
140.25.1.131/25
Host #4: 10001100.00011001.00000001.1 0000100 =
140.25.1.132/25
Host #5: 10001100.00011001.00000001.1 0000101 =
140.25.1.133/25
Host #6: 10001100.00011001.00000001.1 0000110 =
140.25.1.134/25
..
Host #62: 10001100.00011001.00000001.1 0111110 =
140.25.1.190/25
Host #63: 10001100.00011001.00000001.1 0111111 =
140.25.1.191/25
Host #64: 10001100.00011001.00000001.1 1000000 =
140.25.1.192/25
Host #65: 10001100.00011001.00000001.1 1000001 =
140.25.1.193/25
..
Host #123: 10001100.00011001.00000001.1 1111011 =
140.25.1.251/25
Host #124: 10001100.00011001.00000001.1 1111100 =
140.25.1.252/25
Host #125: 10001100.00011001.00000001.1 1111101 =
140.25.1.253/25
Host #126: 10001100.00011001.00000001.1 1111110 =
140.25.1.254/25
Defining the
Broadcast Address for Each Subnet
The broadcast address for Subnet #3 is the all 1's host address or:
10001100.00011001.00000001.1 1111111 = 140.25.1.255
As is true in general,
the broadcast address for Subnet #3 is exactly one less than the base address
for Subnet #4 (140.25.2.0).