RFC 936
Another Internet subnet addressing scheme
Another Internet Subnet Addressing Scheme β¨
RFC 936 π is from the Network Working Group, written by Michael J. Karels at UC Berkeley, dated February 1985. Its status is a proposed protocol for the ARPA-Internet community that asks for discussion and suggestions for improvements. The title block doesn't list anything it obsoletes or updates. π
Status of this Memo π
okay so this RFC is a proposed protocol for the ARPA-Internet crowd, and it's literally begging for feedback and improvement ideas π. Distribution of this memo is unlimited, so share it with everyone. π
Introduction πΈ
bestie, people have come up with a bunch of ways to let one Internet network number stand in for a group of physical networks. The group has to be under common administration and reachable from the rest of the Internet by one common route. β¨ The whole point is that hosts and gateways outside the group get a simplified view of what would otherwise be a messy topology. π§
It's giving localized complexity π . The number and type of those networks, plus the routing to them, stay inside the group. So adding or changing things doesn't cause any detectable change or service interruption, even though routing and other info is slow to spread outside the local environment. π¦ It also makes administration easier, because you don't need a new network number for every new cable you install. π
The motivation for explicit or implicit subnets, several alternatives, and descriptions of existing implementations have already been covered in detail [1,2]. This proposal is a different scheme, one that has been in use at the University of California, Berkeley since April 1984. π
Subnet Addressing at Berkeley π¦
so, like the proposal from Jeff Mogul in RFC-917, Berkeley's subnet addressing encodes the host part of the Internet address. π Hosts and gateways on the local network can figure out the subnet number from each local address, then route local packets based on that subnet number. πΊοΈ
From the outside, the collection of subnets looks like one homogenous network π«Ά. Inside, though, each subnet is its own thing, distinct from the other subnets and from other networks. Internal routing decisions are based on the subnet rather than the network number. Main character energy for the subnets π.
The encoding is similar to what RFC-917 proposes. When splitting an Internet address into network and host parts, the algorithm changes if the network is "local", which means it's directly connected and under local administrative control. (Networks get marked as local or non-local when each network interface's address is set at boot time. β°) For local addresses, the host part gets checked for a subnet number. π
A local address can be on the main network or on a subnet. The high-order bit of the host number tells you which one it is π₯. If that bit is set, the rest of the high-order byte of the host part is the subnet number. If the bit is clear, the address gets read the normal way. π
For Class A networks with 8-bit subnet fields, you get up to 127 subnets, each with up to 65535 hosts, plus a main net with 2^23 hosts. π For Class B networks, you get 127 subnets, each with up to 255 hosts, plus 32767 hosts on the main net. β¨ Class C networks aren't in this scheme yet, but they reasonably might be added. The idea would be four bits of the host part for the subnet designation and four bits for the host. That gives 8 subnets of 15 hosts each and 126 hosts on the main net. π§
The current implementation doesn't use subnet numbers separately from the network field. It treats the subnet field as an extension of the network field π§©. Functions that used to return the network number from an address now return a network or network-subnetwork number. π
Class A subnets can be told apart from Class B networks, even though each one is a 16-bit quantity. Class B subnets are disjoint from Class C network numbers. π The net result is that subnets look like separate, independent networks with their own routing entries inside the network, but outside the network they're invisible π». Berkeley doesn't currently have a facility for broadcasting on the logical network. Broadcasting can be done on each subnet that uses hardware capable of broadcast π‘.
Discussion π¬
okay, there were some earlier proposals for letting several physical networks share one Internet network designation while still routing within that logical network π« . RFC-917 proposes encoding the host part of each local address so the hosts, or the gateways connecting them, can tell which physical network a host is on. This proposal is the most similar to that one, and the differences are explained in detail below. π€
Another proposal, RFC-925, uses intelligent gateways to route for unmodified hosts, relying on the Address Resolution Protocol (ARP) [2]. The big perk is that all the changes live in the gateways π . The catch is it'll probably need extra routing protocols and caching in the gateways so it doesn't blast out excessive broadcasts for address resolution π΅βπ«. A tweak on this method encodes subnets in host addresses by convention, which simplifies routing in the gateways without making hosts recognize those subnet addresses. Berkeley didn't go with these techniques, because all the packet forwarding was being done by multi-homed hosts, and all of them ran the same software as the singly-homed hosts (4.2BSD Unix). π£
The most recent proposal, RFC-932 [3], provides subnetting by encoding the network part of the Internet address instead of the host part π. Ordinary hosts don't need to know about this convention, so host software doesn't need changes π. Gateways could use the encoding to squash the routing information for the whole collection of networks into a single entry. ποΈ The problem is that it would need a pretty coordinated transition across the Internet's gateways. Otherwise the transition period would likely overflow the routing tables in the existing gateways π. Every host on the larger networks would also have to switch from its current Class A or B address to a "B 1/2" address. Only 4096 blocks of Class C addresses are available with this encoding. Since lots of universities and other organizations have already set up subnets or are planning to, a more extensible scheme that can be implemented faster makes more sense. β‘
The current proposal is most similar to RFC-917, and the two implementations are nearly compatible π. There are two significant differences. First, using a bit to tell subnetted addresses apart from non-subnetted ones allows smaller subnets and a larger main network, whether physical or logical. Half of the host addresses in a Class A or B network are reserved for subnets, and the other half are available for the primary net. π₯Ή This might be useful with a hardware medium that can support large numbers of hosts, or for transparent subnetting (for example, using ARP-based bridges). The downside is that fewer subnets can be supported. The bits could be split differently between the subnet number and the host field, but for Class B networks neither one is excessively large. With the limited address space of the current Internet addressing, this is a tough choice π€.
The second difference is that the width of the subnet field is fixed in advance. This simplifies the already-too-complicated code for interpreting Internet addresses, and it avoids the bootstrap problem π§ . If the subnet field width were determined dynamically, some fraction of the hosts on a network would have to be ready to specify that value. The whole thing would be unworkable if one of those hosts made the wrong choice, or if none were accessible when other machines came up π¨. The recovery procedure RFC-917 proposes also seems unnecessarily complicated and likely to fail π. Dynamic discovery of this value also depends on another change, a new ICMP request. π οΈ
The alternatives are to specify the field size as a standard, or to make each implementation configurable in advance (for example, with a system compilation option, or a system patch installed when a host is first set up). Using a standard field width seems better, and an 8-bit field gives the most efficient implementations on most architectures πͺ. For Class C networks, a 4-bit field seems like the only choice for a standard division πΈ.
References π
- [1] J. Mogul, "Internet Subnets", RFC-917, Stanford University, October 1984
- [2] J. Postel, "Multi-LAN Address Resolution", RFC-925, USC-ISI, October 1984
- [3] D. Clark, "A Subnet Addressing Scheme", RFC-932, MIT-LCS, January 1985
π¦ where this page comes from
- ietf: rfc936 1985-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms