1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990
|
<pre>Network Working Group J. Mogul (Stanford)
Request for Comments: 950 J. Postel (ISI)
August 1985
<span class="h1">Internet Standard Subnetting Procedure</span>
Status Of This Memo
This RFC specifies a protocol for the ARPA-Internet community. If
subnetting is implemented it is strongly recommended that these
procedures be followed. Distribution of this memo is unlimited.
Overview
This memo discusses the utility of "subnets" of Internet networks,
which are logically visible sub-sections of a single Internet
network. For administrative or technical reasons, many organizations
have chosen to divide one Internet network into several subnets,
instead of acquiring a set of Internet network numbers. This memo
specifies procedures for the use of subnets. These procedures are
for hosts (e.g., workstations). The procedures used in and between
subnet gateways are not fully described. Important motivation and
background information for a subnetting standard is provided in
<a href="./rfc940">RFC-940</a> [<a href="#ref-7" title=""Towards an Internet Standard Scheme for Subnetting"">7</a>].
Acknowledgment
This memo is based on <a href="./rfc917">RFC-917</a> [<a href="#ref-1" title=""Internet Subnets"">1</a>]. Many people contributed to the
development of the concepts described here. J. Noel Chiappa, Chris
Kent, and Tim Mann, in particular, provided important suggestions.
Additional contributions in shaping this memo were made by Zaw-Sing
Su, Mike Karels, and the Gateway Algorithms and Data Structures Task
Force (GADS).
<span class="grey">Mogul & Postel [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Motivation</span>
The original view of the Internet universe was a two-level hierarchy:
the top level the Internet as a whole, and the level below it
individual networks, each with its own network number. The Internet
does not have a hierarchical topology, rather the interpretation of
addresses is hierarchical. In this two-level model, each host sees
its network as a single entity; that is, the network may be treated
as a "black box" to which a set of hosts is connected.
While this view has proved simple and powerful, a number of
organizations have found it inadequate, and have added a third level
to the interpretation of Internet addresses. In this view, a given
Internet network is divided into a collection of subnets.
The three-level model is useful in networks belonging to moderately
large organizations (e.g., Universities or companies with more than
one building), where it is often necessary to use more than one LAN
cable to cover a "local area". Each LAN may then be treated as a
subnet.
There are several reasons why an organization might use more than one
cable to cover a campus:
- Different technologies: Especially in a research environment,
there may be more than one kind of LAN in use; e.g., an
organization may have some equipment that supports Ethernet, and
some that supports a ring network.
- Limits of technologies: Most LAN technologies impose limits,
based on electrical parameters, on the number of hosts
connected, and on the total length of the cable. It is easy to
exceed these limits, especially those on cable length.
- Network congestion: It is possible for a small subset of the
hosts on a LAN to monopolize most of the bandwidth. A common
solution to this problem is to divide the hosts into cliques of
high mutual communication, and put these cliques on separate
cables.
- Point-to-Point links: Sometimes a "local area", such as a
university campus, is split into two locations too far apart to
connect using the preferred LAN technology. In this case,
high-speed point-to-point links might connect several LANs.
An organization that has been forced to use more than one LAN has
three choices for assigning Internet addresses:
<span class="grey">Mogul & Postel [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
1. Acquire a distinct Internet network number for each cable;
subnets are not used at all.
2. Use a single network number for the entire organization, but
assign host numbers without regard to which LAN a host is on
("transparent subnets").
3. Use a single network number, and partition the host address
space by assigning subnet numbers to the LANs ("explicit
subnets").
Each of these approaches has disadvantages. The first, although not
requiring any new or modified protocols, results in an explosion in
the size of Internet routing tables. Information about the internal
details of local connectivity is propagated everywhere, although it
is of little or no use outside the local organization. Especially as
some current gateway implementations do not have much space for
routing tables, it would be good to avoid this problem.
The second approach requires some convention or protocol that makes
the collection of LANs appear to be a single Internet network. For
example, this can be done on LANs where each Internet address is
translated to a hardware address using an Address Resolution Protocol
(ARP), by having the bridges between the LANs intercept ARP requests
for non-local targets, see <a href="./rfc925">RFC-925</a> [<a href="#ref-2" title=""Multi-LAN Address Resolution"">2</a>]. However, it is not possible
to do this for all LAN technologies, especially those where ARP
protocols are not currently used, or if the LAN does not support
broadcasts. A more fundamental problem is that bridges must discover
which LAN a host is on, perhaps by using a broadcast algorithm. As
the number of LANs grows, the cost of broadcasting grows as well;
also, the size of translation caches required in the bridges grows
with the total number of hosts in the network.
The third approach is to explicitly support subnets. This does have
a disadvantage, in that it is a modification of the Internet
Protocol, and thus requires changes to IP implementations already in
use (if these implementations are to be used on a subnetted network).
However, these changes are relatively minor, and once made, yield a
simple and efficient solution to the problem. Also, the approach
avoids any changes that would be incompatible with existing hosts on
non-subnetted networks.
Further, when appropriate design choices are made, it is possible for
hosts which believe they are on a non-subnetted network to be used on
a subnetted one, as explained in <a href="./rfc917">RFC-917</a> [<a href="#ref-1" title=""Internet Subnets"">1</a>]. This is useful when it
is not possible to modify some of the hosts to support subnets
explicitly, or when a gradual transition is preferred.
<span class="grey">Mogul & Postel [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Standards for Subnet Addressing</span>
This section first describes a proposal for interpretation of
Internet addresses to support subnets. Next it discusses changes to
host software to support subnets. Finally, it presents a procedures
for discovering what address interpretation is in use on a given
network (i.e., what address mask is in use).
2.1. Interpretation of Internet Addresses
Suppose that an organization has been assigned an Internet network
number, has further divided that network into a set of subnets,
and wants to assign host addresses: how should this be done?
Since there are minimal restrictions on the assignment of the
"local address" part of the Internet address, several approaches
have been proposed for representing the subnet number:
1. Variable-width field: Any number of the bits of the local
address part are used for the subnet number; the size of
this field, although constant for a given network, varies
from network to network. If the field width is zero, then
subnets are not in use.
2. Fixed-width field: A specific number of bits (e.g., eight)
is used for the subnet number, if subnets are in use.
3. Self-encoding variable-width field: Just as the width
(i.e., class) of the network number field is encoded by its
high-order bits, the width of the subnet field is similarly
encoded.
4. Self-encoding fixed-width field: A specific number of bits
is used for the subnet number.
5. Masked bits: Use a bit mask ("address mask") to identify
which bits of the local address field indicate the subnet
number.
What criteria can be used to choose one of these five schemes?
First, should we use a self-encoding scheme? And, should it be
possible to tell from examining an Internet address if it refers
to a subnetted network, without reference to any other
information?
An interesting feature of self-encoding is that it allows the
<span class="grey">Mogul & Postel [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
address space of a network to be divided into subnets of
different sizes, typically one subnet of half the address space
and a set of small subnets.
For example, consider a class C network that uses a
self-encoding scheme with one bit to indicate if it is the
large subnet or not and an additional three bits to identify
the small subnet. If the first bit is zero then this is the
large subnet, if the first bit is one then the following
bits (3 in this example) give the subnet number. There is
one subnet with 128 host addresses, and eight subnets with
16 hosts each.
To establish a subnetting standard the parameters and
interpretation of the self-encoding scheme must be fixed and
consistent throughout the Internet.
It could be assumed that all networks are subnetted. This
would allow addresses to be interpreted without reference to
any other information.
This is a significant advantage, that given the Internet
address no additional information is needed for an
implementation to determine if two addresses are on the same
subnet. However, this can also be viewed as a disadvantage:
it may cause problems for networks which have existing host
numbers that use arbitrary bits in the local address part.
In other words, it is useful to be able to control whether a
network is subnetted independently from the assignment of
host addresses.
The alternative is to have the fact that a network is subnetted
kept separate from the address. If one finds, somehow, that
the network is subnetted then the standard self-encoded
subnetted network address rules are followed, otherwise the
non-subnetted network addressing rules are followed.
If a self-encoding scheme is not used, there is no reason to use a
fixed-width field scheme: since there must in any case be some
per-network "flag" to indicate if subnets are in use, the
additional cost of using an integer (a subnet field width or
address mask) instead of a boolean is negligible. The advantage
of using the address mask scheme is that it allows each
organization to choose the best way to allocate relatively scarce
bits of local address to subnet and host numbers. Therefore, we
choose the address-mask scheme: it is the most flexible scheme,
yet costs no more to implement than any other.
<span class="grey">Mogul & Postel [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
For example, the Internet address might be interpreted as:
<network-number><subnet-number><host-number>
where the <network-number> field is as defined by IP [<a href="#ref-3" title=""Internet Protocol"">3</a>], the
<host-number> field is at least 1-bit wide, and the width of the
<subnet-number> field is constant for a given network. No further
structure is required for the <subnet-number> or <host-number>
fields. If the width of the <subnet-number> field is zero, then
the network is not subnetted (i.e., the interpretation of [<a href="#ref-3" title=""Internet Protocol"">3</a>] is
used).
For example, on a Class B network with a 6-bit wide subnet field,
an address would be broken down like this:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 0| NETWORK | SUBNET | Host Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Since the bits that identify the subnet are specified by a
bitmask, they need not be adjacent in the address. However, we
recommend that the subnet bits be contiguous and located as the
most significant bits of the local address.
Special Addresses:
From the Assigned Numbers memo [<a href="#ref-9" title=""Assigned Numbers"">9</a>]:
"In certain contexts, it is useful to have fixed addresses
with functional significance rather than as identifiers of
specific hosts. When such usage is called for, the address
zero is to be interpreted as meaning "this", as in "this
network". The address of all ones are to be interpreted as
meaning "all", as in "all hosts". For example, the address
128.9.255.255 could be interpreted as meaning all hosts on
the network 128.9. Or, the address 0.0.0.37 could be
interpreted as meaning host 37 on this network."
It is useful to preserve and extend the interpretation of these
special addresses in subnetted networks. This means the values
of all zeros and all ones in the subnet field should not be
assigned to actual (physical) subnets.
In the example above, the 6-bit wide subnet field may have
any value except 0 and 63.
<span class="grey">Mogul & Postel [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
Please note that there is no effect or new restriction on the
addresses of hosts on non-subnetted networks.
2.2. Changes to Host Software to Support Subnets
In most implementations of IP, there is code in the module that
handles outgoing datagrams to decide if a datagram can be sent
directly to the destination on the local network or if it must be
sent to a gateway.
Generally the code is something like this:
IF ip_net_number(dg.ip_dest) = ip_net_number(my_ip_addr)
THEN
send_dg_locally(dg, dg.ip_dest)
ELSE
send_dg_locally(dg,
gateway_to(ip_net_number(dg.ip_dest)))
(If the code supports multiply-connected networks, it will be more
complicated, but this is irrelevant to the current discussion.)
To support subnets, it is necessary to store one more 32-bit
quantity, called my_ip_mask. This is a bit-mask with bits set in
the fields corresponding to the IP network number, and additional
bits set corresponding to the subnet number field.
The code then becomes:
IF bitwise_and(dg.ip_dest, my_ip_mask)
= bitwise_and(my_ip_addr, my_ip_mask)
THEN
send_dg_locally(dg, dg.ip_dest)
ELSE
send_dg_locally(dg,
gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))
Of course, part of the expression in the conditional can be
pre-computed.
It may or may not be necessary to modify the "gateway_to"
function, so that it too takes the subnet field bits into account
when performing comparisons.
To support multiply-connected hosts, the code can be changed to
<span class="grey">Mogul & Postel [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
keep the "my_ip_addr" and "my_ip_mask" quantities on a
per-interface basis; the expression in the conditional must then
be evaluated for each interface.
2.3. Finding the Address Mask
How can a host determine what address mask is in use on a subnet
to which it is connected? The problem is analogous to several
other "bootstrapping" problems for Internet hosts: how a host
determines its own address, and how it locates a gateway on its
local network. In all three cases, there are two basic solutions:
"hardwired" information, and broadcast-based protocols.
Hardwired information is that available to a host in isolation
from a network. It may be compiled-in, or (preferably) stored in
a disk file. However, for the increasingly common case of a
diskless workstation that is bootloaded over a LAN, neither
hardwired solution is satisfactory.
Instead, since most LAN technology supports broadcasting, a better
method is for the newly-booted host to broadcast a request for the
necessary information. For example, for the purpose of
determining its Internet address, a host may use the "Reverse
Address Resolution Protocol" (RARP) [<a href="#ref-4" title=""A Reverse Address Resolution Protocol"">4</a>].
However, since a newly-booted host usually needs to gather several
facts (e.g., its IP address, the hardware address of a gateway,
the IP address of a domain name server, the subnet address mask),
it would be better to acquire all this information in one request
if possible, rather than doing numerous broadcasts on the network.
The mechanisms designed to boot diskless workstations can also
load per-host specific configuration files that contain the
required information (e.g., see <a href="./rfc951">RFC-951</a> [<a href="#ref-8" title=""BOOTP -- UDP Bootstrap Protocol"">8</a>]). It is possible, and
desirable, to obtain all the facts necessary to operate a host
from a boot server using only one broadcast message.
In the case where it is necessary for a host to find the address
mask as a separate operation the following mechanism is provided:
To provide the address mask information the ICMP protocol [<a href="#ref-5" title=""Internet Control Message Protocol"">5</a>]
is extended by adding a new pair of ICMP message types,
"Address Mask Request" and "Address Mask Reply", analogous to
the "Information Request" and "Information Reply" ICMP
messages. These are described in detail in <a href="#appendix-I">Appendix I</a>.
The intended use of these new ICMP messages is that a host,
when booting, broadcast an "Address Mask Request" message. A
<span class="grey">Mogul & Postel [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
gateway (or a host acting in lieu of a gateway) that receives
this message responds with an "Address Mask Reply". If there
is no indication in the request which host sent it (i.e., the
IP Source Address is zero), the reply is broadcast as well.
The requesting host will hear the response, and from it
determine the address mask.
Since there is only one possible value that can be sent in an
"Address Mask Reply" on any given LAN, there is no need for the
requesting host to match the responses it hears against the
request it sent; similarly, there is no problem if more than
one gateway responds. We assume that hosts reboot
infrequently, so the broadcast load on a network from use of
this protocol should be small.
If a host is connected to more than one LAN, it might have to find
the address mask for each.
One potential problem is what a host should do if it can not find
out the address mask, even after a reasonable number of tries.
Three interpretations can be placed on the situation:
1. The local net exists in (permanent) isolation from all other
nets.
2. Subnets are not in use, and no host can supply the address
mask.
3. All gateways on the local net are (temporarily) down.
The first and second situations imply that the address mask is
identical with the Internet network number mask. In the third
situation, there is no way to determine what the proper value is;
the safest choice is thus a mask identical with the Internet
network number mask. Although this might later turn out to be
wrong, it will not prevent transmissions that would otherwise
succeed. It is possible for a host to recover from a wrong
choice: when a gateway comes up, it should broadcast an "Address
Mask Reply"; when a host receives such a message that disagrees
with its guess, it should change its mask to conform to the
received value. No host or gateway should send an "Address Mask
Reply" based on a "guessed" value.
Finally, note that no host is required to use this ICMP protocol
to discover the address mask; it is perfectly reasonable for a
host with non-volatile storage to use stored information
(including a configuration file from a boot server).
<span class="grey">Mogul & Postel [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
<span class="h2"><a class="selflink" id="appendix-I" href="#appendix-I">Appendix I</a>. Address Mask ICMP</span>
Address Mask Request or Address Mask Reply
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP Fields:
Addresses
The address of the source in an address mask request message
will be the destination of the address mask reply message.
To form an address mask reply message, the source address of
the request becomes the destination address of the reply,
the source address of the reply is set to the replier's
address, the type code changed to AM2, the address mask
value inserted into the Address Mask field, and the checksum
recomputed. However, if the source address in the request
message is zero, then the destination address for the reply
message should denote a broadcast.
ICMP Fields:
Type
AM1 for address mask request message
AM2 for address mask reply message
Code
0 for address mask request message
0 for address mask reply message
Checksum
The checksum is the 16-bit one's complement of the one's
<span class="grey">Mogul & Postel [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
complement sum of the ICMP message starting with the ICMP
Type. For computing the checksum, the checksum field should
be zero. This checksum may be replaced in the future.
Identifier
An identifier to aid in matching requests and replies, may
be zero.
Sequence Number
A sequence number to aid in matching requests and replies,
may be zero.
Address Mask
A 32-bit mask.
Description
A gateway receiving an address mask request should return it
with the address mask field set to the 32-bit mask of the bits
identifying the subnet and network, for the subnet on which the
request was received.
If the requesting host does not know its own IP address, it may
leave the source field zero; the reply should then be
broadcast. However, this approach should be avoided if at all
possible, since it increases the superfluous broadcast load on
the network. Even when the replies are broadcast, since there
is only one possible address mask for a subnet, there is no
need to match requests with replies. The "Identifier" and
"Sequence Number" fields can be ignored.
Type AM1 may be received from a gateway or a host.
Type AM2 may be received from a gateway, or a host acting in
lieu of a gateway.
<span class="grey">Mogul & Postel [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
Appendix II. Examples
These examples show how a host can find out the address mask using
the ICMP Address Mask Request and Address Mask Reply messages. For
the following examples, assume that address 255.255.255.255 denotes
"broadcast to this physical medium" [<a href="#ref-6" title=""Broadcasting Internet Datagrams"">6</a>].
1. A Class A Network Case
For this case, assume that the requesting host is on class A
network 36.0.0.0, has address 36.40.0.123, that there is a gateway
at 36.40.0.62, and that a 8-bit wide subnet field is in use, that
is, the address mask is 255.255.0.0.
The most efficient method, and the one we recommend, is for a host
to first discover its own address (perhaps using "RARP" [<a href="#ref-4" title=""A Reverse Address Resolution Protocol"">4</a>]), and
then to send the ICMP request to 255.255.255.255:
Source address: 36.40.0.123
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
The gateway can then respond directly to the requesting host.
Source address: 36.40.0.62
Destination address: 36.40.0.123
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.0.0
Suppose that 36.40.0.123 is a diskless workstation, and does not
know even its own host number. It could send the following
datagram:
Source address: 0.0.0.0
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
36.40.0.62 will hear the datagram, and should respond with this
datagram:
<span class="grey">Mogul & Postel [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
Source address: 36.40.0.62
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.0.0
Note that the gateway uses the narrowest possible broadcast to
reply. Even so, the over use of broadcasts presents an
unnecessary load to all hosts on the subnet, and so the use of the
"anonymous" (0.0.0.0) source address must be kept to a minimum.
If broadcasting is not allowed, we assume that hosts have wired-in
information about neighbor gateways; thus, 36.40.0.123 might send
this datagram:
Source address: 36.40.0.123
Destination address: 36.40.0.62
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
36.40.0.62 should respond exactly as in the previous case.
Source address: 36.40.0.62
Destination address: 36.40.0.123
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.0.0
2. A Class B Network Case
For this case, assume that the requesting host is on class B
network 128.99.0.0, has address 128.99.4.123, that there is a
gateway at 128.99.4.62, and that a 6-bit wide subnet field is in
use, that is, the address mask is 255.255.252.0.
The host sends the ICMP request to 255.255.255.255:
Source address: 128.99.4.123
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
<span class="grey">Mogul & Postel [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
The gateway can then respond directly to the requesting host.
Source address: 128.99.4.62
Destination address: 128.99.4.123
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.252.0
In the diskless workstation case the host sends:
Source address: 0.0.0.0
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
128.99.4.62 will hear the datagram, and should respond with this
datagram:
Source address: 128.99.4.62
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.252.0
If broadcasting is not allowed 128.99.4.123 sends:
Source address: 128.99.4.123
Destination address: 128.99.4.62
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
128.99.4.62 should respond exactly as in the previous case.
Source address: 128.99.4.62
Destination address: 128.99.4.123
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.252.0
<span class="grey">Mogul & Postel [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
3. A Class C Network Case (illustrating non-contiguous subnet bits)
For this case, assume that the requesting host is on class C
network 192.1.127.0, has address 192.1.127.19, that there is a
gateway at 192.1.127.50, and that on network an 3-bit subnet field
is in use (01011000), that is, the address mask is 255.255.255.88.
The host sends the ICMP request to 255.255.255.255:
Source address: 192.1.127.19
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
The gateway can then respond directly to the requesting host.
Source address: 192.1.127.50
Destination address: 192.1.127.19
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.255.88.
In the diskless workstation case the host sends:
Source address: 0.0.0.0
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
192.1.127.50 will hear the datagram, and should respond with this
datagram:
Source address: 192.1.127.50
Destination address: 255.255.255.255
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.255.88.
If broadcasting is not allowed 192.1.127.19 sends:
<span class="grey">Mogul & Postel [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
Source address: 192.1.127.19
Destination address: 192.1.127.50
Protocol: ICMP = 1
Type: Address Mask Request = AM1
Code: 0
Mask: 0
192.1.127.50 should respond exactly as in the previous case.
Source address: 192.1.127.50
Destination address: 192.1.127.19
Protocol: ICMP = 1
Type: Address Mask Reply = AM2
Code: 0
Mask: 255.255.255.88
Appendix III. Glossary
Bridge
A node connected to two or more administratively indistinguishable
but physically distinct subnets, that automatically forwards
datagrams when necessary, but whose existence is not known to
other hosts. Also called a "software repeater".
Gateway
A node connected to two or more administratively distinct networks
and/or subnets, to which hosts send datagrams to be forwarded.
Host Field
The bit field in an Internet address used for denoting a specific
host.
Internet
The collection of connected networks using the IP protocol.
Local Address
The rest field of the Internet address (as defined in [<a href="#ref-3" title=""Internet Protocol"">3</a>]).
Network
A single Internet network (which may or may not be divided into
subnets).
<span class="grey">Mogul & Postel [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
Network Number
The network field of the Internet address.
Subnet
One or more physical networks forming a subset of an Internet
network. A subnet is explicitly identified in the Internet
address.
Subnet Field
The bit field in an Internet address denoting the subnet number.
The bits making up this field are not necessarily contiguous in
the address.
Subnet Number
A number identifying a subnet within a network.
Appendix IV. Assigned Numbers
The following assignments are made for protocol parameters used in
the support of subnets. The only assignments needed are for the
Internet Control Message Protocol (ICMP) [<a href="#ref-5" title=""Internet Control Message Protocol"">5</a>].
ICMP Message Types
AM1 = 17
AM2 = 18
<span class="grey">Mogul & Postel [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc950">RFC 950</a> August 1985</span>
Internet Standard Subnetting Procedure
References
[<a id="ref-1">1</a>] Mogul, J., "Internet Subnets", <a href="./rfc917">RFC-917</a>, Stanford University,
October 1984.
[<a id="ref-2">2</a>] Postel, J., "Multi-LAN Address Resolution", <a href="./rfc925">RFC-925</a>,
USC/Information Sciences Institute, October 1984.
[<a id="ref-3">3</a>] Postel, J., "Internet Protocol", <a href="./rfc791">RFC-791</a>, USC/Information
Sciences Institute, September 1981.
[<a id="ref-4">4</a>] Finlayson, R., T. Mann, J. Mogul, M. Theimer, "A Reverse Address
Resolution Protocol", <a href="./rfc903">RFC-903</a>, Stanford University, June 1984.
[<a id="ref-5">5</a>] Postel, J., "Internet Control Message Protocol", <a href="./rfc792">RFC-792</a>,
USC/Information Sciences Institute, September 1981.
[<a id="ref-6">6</a>] Mogul, J., "Broadcasting Internet Datagrams", <a href="./rfc919">RFC-919</a>, Stanford
University, October 1984.
[<a id="ref-7">7</a>] GADS, "Towards an Internet Standard Scheme for Subnetting",
<a href="./rfc940">RFC-940</a>, Network Information Center, SRI International,
April 1985.
[<a id="ref-8">8</a>] Croft, B., and J. Gilmore, "BOOTP -- UDP Bootstrap Protocol",
<a href="./rfc951">RFC-951</a>, Stanford University, August 1985.
[<a id="ref-9">9</a>] Reynolds, J., and J. Postel, "Assigned Numbers", <a href="./rfc943">RFC-943</a>,
USC/Information Sciences Institute, April 1985.
Mogul & Postel [Page 18]
</pre>
|