Internet Draft Sam Martel Cabletron Systems Inc. Walt Wimer FORE Systems Inc. February 1997 This document EXPIRES on August 31, 1997 BOOTP and DHCP on Mixed Media Link-Layer Networks Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." To learn the current status of any Internet-draft, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). Abstract RFCs 951 [1], 1541 [2], and 1542 [3] describe the interactions of BOOTP [1] and DHCP [2] client, server, and relay agents. However, further experience with these protocols has revealed the existence of an interoperability issue. The issue occurs when a given IP subnet is constructed over one link-layer network inter-connected by translational bridges to other dissimilar link-layer networks. The following information attempts to address this problem. It is impossible for a BOOTP or DHCP client, server, or relay agent to know in advance whether or not it will be operating in a mixed media link-layer network environment. Given this fact, all BOOTP and DHCP client, server, and relay agents SHOULD adopt the recommendations defined in this memo. Martel, Wimer [Page 1] INTERNET-DRAFT MIXED LINK-LAYER BOOTP/DHCP Expires August 1997 Table of Contents 1. Introduction.....................................................2 1.1 Requirements....................................................2 1.2 Terminology.....................................................3 2. General Issues...................................................3 3. Client Behavior Extension........................................3 3.1 The 'htype' Field...............................................3 3.2 The 'chaddr' Field..............................................4 4. Relay Agent Behavior Extension...................................4 4.1 The 'htype' and 'chaddr' Fields.................................4 4.2 Additional Relay Agent Processes................................4 5. DHCP Server Behavior Extension...................................4 5.1 The 'htype' and 'chaddr' Fields.................................4 5.2 Additional Server Processes.....................................5 6. Examples.........................................................5 6.1 IEEE 802.5 Token Ring to IEEE 802.3 Ethernet with a Relay.......5 6.2 IEEE 802.5 Token Ring to IEEE 802.3 Ethernet without a Relay....6 1. Introduction Some aspects of the BOOTP and DHCP protocols need additional definition in order to expand compatibility with certain network devices. RFCs 951, 1541, and 1542 do not adequately describe the behavior of BOOTP server, client, and relay agent so as to ensure compatibility with devices that provide layer 2 forwarding of BOOTP and DHCP messages. The client, server, and relay agent need additional behavior definition in order to strengthen the current standards in these areas. The information in this memo attempts to clarify the interaction of BOOTP client, server, and relay agent in order to increase compatibility with devices which provide layer 2 forwarding. Note: This document provides additional information to further define the behavior of BOOTP and DHCP servers, clients, and relay agents as defined in RFCs 951, 1541, and 1542 and should be considered an extension of the original documents. 1.1 Requirements In this memo, the words that are used to define the significance of particular requirements are capitalized. These words are: o "MUST" This word or the adjective "REQUIRED" means that the item is an absolute requirement of the specification. o "MUST NOT" This phrase means that the item is an absolute prohibition of the specification. Martel, Wimer [Page 2] INTERNET-DRAFT MIXED LINK-LAYER BOOTP/DHCP Expires August 1997 o "SHOULD" This word or the adjective "RECOMMENDED" means that there may exist valid reasons in particular circumstances to ignore this item, but the full implications should be understood and the case carefully weighed before choosing a different course. o "SHOULD NOT" This phrase means that there may exist valid reasons in particular circumstances when the listed behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label. o "MAY" This word or the adjective "OPTIONAL" means that this item is truly optional. One vendor may choose to include the item because a particular marketplace requires it or because it enhances the product, for example; another vendor may omit the same item. 1.2 Terminology This memo uses the following terms: BOOTREQUEST A BOOTP message sent from a BOOTP client to a BOOTP server requesting configuration information. BOOTREPLY A BOOTP message sent from a BOOTP server to a BOOTP client providing configuration information. 'htype' field An 8 bit field contained in BOOTP and DHCP messages which represents the client's link-layer network type as specified in RFC 1700 [4], "Assigned Numbers", except where amended by this document. 'chaddr' field A 16 byte field contained in BOOTP and DHCP messages which represents the link-layer address of the client. Martel, Wimer [Page 3] INTERNET-DRAFT MIXED LINK-LAYER BOOTP/DHCP Expires August 1997 2. General Issues An interoperability issue concerning BOOTP and DHCP messages can occur on networks which connect different link-layer technologies through devices which provide only layer 2 forwarding. The issue can occur when the client is located on a link-layer network that has a different 'htype', as defined in the "Assigned Numbers" RFC, than that of the server or relay agent. Primarily, this issue can occur when the relay agent or server resides on an 'htype' link-layer network of 1 while the client resides on an 'htype' link-layer network of 6. The reverse situation can also pose potential problems. The key to ensuring proper operation revolves around the 2 fields in BOOTP and DHCP messages known as the 'htype' and 'chaddr'. Therefore, it is necessary to describe in detail how each element should handle these fields and the information derived therefrom. 3. Client Behavior Extension In addition to adhering to all applicable sections of RFCs 951, 1541, and 1542, the client MUST set the 'htype' and 'chaddr' as directed in sections 3.1 and 3.2 of this document for all BOOTP and DHCP messages generated by the client. 3.1 The 'htype' Field The client MUST set the 'htype' field in accordance with the values defined in this document for the client's link-layer network. IMPORTANT NOTE: As of the date of publication of this BOOTP/DHCP memo, the current Assigned Numbers document is RFC 1700. RFC 1700 contains the following table (edited for brevity): Value Hardware Type (hrd) ----- ------------------- 1 Ethernet (10Mb) 6 IEEE 802 Networks The above table suggests that all IEEE 802 networks should use an 'htype' value of 6. However, this does not reflect actual practice, and blindly following the above table will result in serious interoperability problems. The table would be more correctly represented as: Value Hardware Type (hrd) ----- ------------------- 1 IEEE canonical format (Ethernet, IEEE 802.3, FDDI canonical) 6 IEEE reverse canonical format (IEEE 802.5 Token Ring Networks) Martel, Wimer [Page 4] INTERNET-DRAFT MIXED LINK-LAYER BOOTP/DHCP Expires August 1997 Actual practice dictates that BOOTP and DHCP clients which are directly connected to an IEEE 802.5 Token Ring network MUST set 'htype' to 6, and BOOTP and DHCP clients which are directly connected to a DIX Ethernet, IEEE 802.3 Ethernet, or FDDI network MUST set 'htype' to 1. 3.2 The 'chaddr' Field The bit ordering used for the link-level hardware addresses in the 'chaddr' field MUST be the same as the ordering used for the ARP protocol [5] on the client's link-level network (assuming ARP is defined for that network). 4. Relay Agent Behavior Extension In addition to adhering to all applicable sections of RFCs 951, 1541, and 1542, the relay agent MUST adhere to the recommendations in sections 4.1 and 4.2 of this document. 4.1 The 'htype' and 'chaddr' Fields All relay agents MUST preserve the 'htype' and 'chaddr' fields of all DHCP and BOOTP messages and forward as is. Preservation is necessary in order to allow the final relay agent to properly format a unicast response to the BOOTP client in accordance with RFC 1542 and this document. 4.2 Additional Relay Agent Processes The final relay agent MUST reference the BOOTREPLY 'htype' field when building unicast BOOTREPLY messages. The relay agent MUST compare the 'htype' contained in the BOOTREPLY message to the 'htype' of the relay agent's network interface from which the outgoing BOOTREPLY message is about to be sent. It MUST then perform any link-layer translation required in order to ensure the appropriate form of the link-layer address is used in the link-layer header of the outgoing BOOTREPLY message and/or corresponding ARP table entries. Note: The actual value of the 'chaddr' field within the outgoing BOOTREPLY message MUST NOT be modified. 5. DHCP Server Behavior Extension In addition to adhering to all applicable sections of RFCs 951, 1541, and 1542, the server MUST adhere to the recommendations in sections 5.1 and 5.2 of this document. 5.1 The 'htype' and 'chaddr' Fields The server MUST copy the 'htype' and 'chaddr' fields of all BOOTREQUESTs to the corresponding BOOTREPLY. The server MUST do Martel, Wimer [Page 5] INTERNET-DRAFT MIXED LINK-LAYER BOOTP/DHCP Expires August 1997 this in order to allow the final relay agent to properly format a unicast response to the BOOTP client in accordance with RFC 1541 and this document. 5.2 Additional Server Processes The server MUST consider the 'htype' field when building unicast BOOTREPLY messages. Therefore, the server must check the 'htype' contained in the BOOTREPLY message and compare it to the 'htype' of the server's link-layer interface. The server MUST perform any translation required to ensure the correct form of the link-layer address is used within the link-layer header of the BOOTREPLY message and any ARP table entries. (The actual value of the 'chaddr' field within the outgoing BOOTREPLY message MUST NOT be modified.) 6. Examples 6.1 IEEE 802.5 Token Ring to IEEE 802.3 Ethernet with a Relay -------- ---- ---------- ------- -------- |BOOTP | / \ |Trans- | ETHERNET |BOOTP| ETHERNET |BOOTP | |/DHCP |-|TOKEN |-|lational|----------|/DHCP|----------|/DHCP | |Client| \RING/ |Switch | |RELAY| |SERVER| -------- ---- ---------- ------- -------- The Token Ring client's link-layer address, as represented in an ARP message, is 00:00:B8:E1:D2:A3. Therefore, the client will generate all DHCP and BOOTP messages with the 'htype' set to 6 and the 'chaddr' set to 00:00:B8:E1:D2:A3. The message will be received by the BOOTP/DHCP relay with the 'htype' of 6 and the 'chaddr' of 00:00:B8:E1:D2:A3. The relay will forward the message in accordance with RFC 1542, preserving the 'htype' of 6 and the 'chaddr' of 00:00:B8:E1:D2:A3. The BOOTP/DHCP server will receive the BOOTREQUEST and process the message in accordance with existing procedures preserving the 'htype' of 6 and the 'chaddr' of 00:00:B8:E1:D2:A3. At this point, the BOOTP/DHCP server determines that there is a relay between the client and itself and will direct the BOOTREPLY to the BOOTP/DHCP relay. The BOOTP/DHCP relay will receive the BOOTREPLY and preserve the 'htype' of 6 and the 'chaddr' of 00:00:B8:E1:D2:A3. It will check to see if a broadcast or a unicast will be used to deliver the message to the client. If a broadcast will be used, the relay will process the message in accordance with existing procedures. If a unicast will be used, the relay will need to translate the link-layer address attained from the BOOTREPLY message 'chaddr' field because its transmitting interface 'htype' is 1 and the BOOTREPLY 'htype' is 6. The result is a link-layer address of Martel, Wimer [Page 6] INTERNET-DRAFT MIXED LINK-LAYER BOOTP/DHCP Expires August 1997 00:00:1D:87:4B:C5 being used to send the unicast to the client and for any ARP table entry generated. It is important to note that, in the BOOTREPLY, the 'chaddr' field remains set to 00:00:B8:E1:D2:A3 and the 'htype' remains set to 6. The client will receive the BOOTREPLY and process it in accordance with existing procedures. NOTE: In this example, the client is on IEEE 802.5 Token Ring while the server is on IEEE 802.3 Ethernet. However, a translation would still be required if the server were located on Token Ring and the client on Ethernet or FDDI. 6.2 IEEE 802.5 Token Ring to IEEE 802.3 Ethernet without a Relay -------- ---- ---------- -------- |BOOTP | / \ |Trans- | ETHERNET |BOOTP | |/DHCP |-|TOKEN |-|lational|----------|/DHCP | |Client| \RING/ |Switch | |SERVER| -------- ---- ---------- -------- The Token Ring client's link-layer address, as represented in an ARP message, is 00:00:B8:E1:D2:A3. Therefore, the client will generate all DHCP and BOOTP messages with the 'htype' set to 6 and the 'chaddr' set to 00:00:B8:E1:D2:A3. The BOOTP/DHCP server will receive the BOOTREQUEST and process the message in accordance with existing procedures, preserving the 'htype' of 6 and the 'chaddr' of 00:00:B8:E1:D2:A3. At this point, the BOOTP/DHCP server will determine that there is no relay between the client and itself will itself determine whether a broadcast or a unicast will be used for the BOOTREPLY. If a broadcast will be used, the server will process the message in accordance with the existing procedures. If a unicast will be used, the server will need to translate the link-layer address attained from the 'chaddr' field of the corresponding BOOTREQUEST because it's transmitting interface 'htype' is 1 and the BOOTREQUEST 'htype' is 6. The result is a link-layer address of 00:00:1D:87:4B:C5 being used to send the unicast to the client. It is important to note that, in the BOOTREPLY, the 'chaddr' field remains set to 00:00:B8:E1:D2:A3 and the 'htype' remains set to 6. The client will receive the BOOTREPLY and process it in accordance with existing procedures. NOTE: In this example, the client is on IEEE 802.5 Token Ring while the server is on IEEE 802.3 Ethernet. However, a translation would still be required if the server were located on Token Ring and the client on Ethernet or FDDI. Martel, Wimer [Page 7] INTERNET-DRAFT MIXED LINK-LAYER BOOTP/DHCP Expires August 1997 References [1] B. Croft, and J. Gilmore, "Bootstrap Protocol (BOOTP)", RFC 951, Stanford University and Sun Microsystems, September 1985. [2] R. Droms, "Dynamic Host Configuration Protocol", RFC 1541, Bucknell University, October 1993. [3] W. Wimer, "Clarifications and Extensions for the Bootstrap Protocol", RFC 1542, Carnegie Mellon University, October 1993. [4] J. Reynolds, and J. Postel, "Assigned Numbers", STD2, RFC 1700, USC/Information Sciences Institute, October 1994. Authors' Addresses Sam Martel Product Support Engineering Cabletron Systems Inc. PO Box 5005 Rochester, NH 03866-5005 Phone: (603) 332-9400 Fax: (603) 337-3710 Email: martel@ctron.com Walt Wimer Software Engineer FORE Systems Inc. Research Park 5800 Corporate Drive Pittsburgh, PA 15237-5829 Phone: (412) 635-3387 Fax: (412) 635-3333 Email: wlw@fore.com Martel, Wimer [Page 8]