A Caution On The Canonical Ordering Of Link-Layer Addresses
A warning that link-layer address bits may be ordered differently by LAN hardware.
Narten, T. and C. Burton, "A Caution On The Canonical Ordering Of Link-Layer Addresses", RFC 2469, DOI 10.17487/RFC2469, December 1998, <https://www.rfc-editor.org/info/rfc2469>.
@misc{rfc2469,
series = {Request for Comments},
number = 2469,
howpublished = {RFC 2469},
publisher = {RFC Editor},
doi = {10.17487/RFC2469},
url = {https://www.rfc-editor.org/info/rfc2469},
author = {T. Narten and C. Burton},
title = {{A Caution On The Canonical Ordering Of Link-Layer Addresses}},
pagetotal = 5,
year = 1998,
month = dec,
} RFC text
Contents
Network Working Group T. Narten
Request for Comments: 2469 C. Burton
Category: Informational IBM
December 1998
A Caution On The Canonical Ordering Of Link-Layer Addresses
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
Protocols such as ARP and Neighbor Discovery have data fields that
contain link-layer addresses. In order to interoperate properly, a
sender setting such a field must insure that the receiver extracts
those bits and interprets them correctly. In most cases, such fields
must be in "canonical form". Unfortunately, not all LAN adaptors are
consistent in their use of canonical form, and implementations may
need to explicitly bit swap individual bytes in order to obtain the
correct format. This document provides information to implementors
to help them avoid the pitfall of using non-canonical forms when
canonical forms are required.
Table of Contents
1. Introduction............................................. 2
2. Canonical Form........................................... 2
3. Implementors Beware: Potential Trouble Spots............. 3
3.1. Neighbor Discovery in IPv6.......................... 3
3.2. IPv4 and ARP........................................ 3
4. Security Considerations.................................. 3
5. References............................................... 4
6. Authors' Addresses....................................... 4
7. Full Copyright Statement................................. 5
1. Introduction
Protocols such as ARP [ARP] and ND [DISCOVERY] have data fields that
contain link-layer addresses. In order to interoperate properly, a
sender setting such a field must insure that the receiver extracts
those bits and interprets them correctly. In most cases, such fields
must be in "canonical form". Unfortunately, not all LAN adaptors are
consistent in their use of canonical form, and implementations may
need to explicitly bit swap individual bytes in order to obtain the
correct format.
2. Canonical Form
Canonical form (also known as "LSB format" and "Ethernet format") is
the name given to the format of a LAN adapter address as it should be
presented to the user according to the 802 LAN standard. It is best
defined as how the bit order of an adapter address on the LAN media
maps to the bit order of an adapter address in memory: The first bit
of each byte that appears on the LAN maps to the least significant
(i.e., right-most) bit of each byte in memory (the figure below
illustrates this). This puts the group address indicator (i.e., the
bit that defines whether an address is unicast or multicast) in the
least significant bit of the first byte. Ethernet and 802.3 hardware
behave consistently with this definition.
Unfortunately, Token Ring (and some FDDI) hardware does not behave
consistently with this definition; it maps the first bit of each byte
of the adapter address to the most significant (i.e., left-most) bit
of each byte in memory, which puts the group address indicator in the
most significant bit of the first byte. This mapping is variously
called "MSB format", "IBM format", "Token-Ring format", and "non-
canonical form". The figure below illustrates the difference between
canonical and non-canonical form using the canonical form address
12-34-56-78-9A-BC as an example:
In memory, 12 34 56 78 9A BC
canonical: 00010010 00110100 01010110 01111000 10011010 10111100
1st bit appearing on LAN (group address indicator)
|
On LAN: 01001000 00101100 01101010 00011110 01011001 00111101
In memory,
MSB format: 01001000 00101100 01101010 00011110 01011001 00111101
48 2C 6A 1E 59 3D
The implication of this inconsistency is that addresses extracted
from adaptors, assigned to adaptors, or extracted from link-layer
packet headers obtained from adaptors may need to be bit-swapped to
put them into canonical form. Likewise, addresses in canonical form
that are handed to adaptors (e.g., to set an address, to specify a
destination address in a link-layer header, etc.) may need to be
bit-swapped in order for the adaptor to process the request as
expected.
3. Implementors Beware: Potential Trouble Spots
3.1. Neighbor Discovery in IPv6
All of the IPv6 over specific link layers documents specify that
link-layer addresses must be transmitted in canonical order [IPv6-
ETHER, IPv6-FDDI, IPv6-TOKEN]. As far as the authors can tell, all
Ethernet LAN adaptors use canonical order and no special processing
by implementations is needed. In contrast, some FDDI and all Token
Ring adaptors appear to use non-canonical format. Implementors must
insure that any addresses that appear in link-layer address options
of Neighbor Discovery [DISCOVERY] messages are sent in canonical
order and that any link-layer addresses extracted from ND packets are
interpreted correctly on the local machine and its adaptors.
3.2. IPv4 and ARP
Ethernet addresses that appear in ARP packets are in canonical order.
In contrast, when running ARP over Token Ring, the de facto practice
is to transmit addresses in non-canonical order. Because all Token
Ring adaptors assume non-canonical ordering, no interoperability
problems result between communicating nodes attached to the same
Token Ring.
In some environments, however, Token Rings and Ethernets are
connected via a bridge. When a node on the Token Ring attempts to
communicate with a node on the Ethernet, communication would normally
fail, since the Ethernet will misinterpret the Token Ring address
(and vice versa). To get around this problem, bridges that forward
packets between dissimilar network types perform bit swaps of the
addresses in the address fields of ARP packets that are forwarded
from a network of one type to one of the other.
4. Security Considerations
There are no known security issues raised by this document.
5. References
[ARP] Plummer, D., "An Ethernet Address Resolution Protocol",
STD 37, RFC 826, November 1982.
[DISCOVERY] Narten, T., Nordmark, E., and W. Simpson, "Neighbor
Discovery for IP Version 6 (IPv6)", RFC 2461, December
1998.
[IPv6-ETHER] Crawford, M., "Transmission of IPv6 Packets over
Ethernet Networks", RFC 2464, December 1998.
[IPv6-FDDI] Crawford, M., "Transmission of IPv6 Packets over FDDI
Networks", RFC 2467, December 1998.
[IPv6-TOKEN] Crawford, M., Narten, T. and S. Thomas, "Transmission of
IPv6 Packets over Token Ring Networks", RFC 2470,
December 1998.
6. Authors' Addresses
Thomas Narten
IBM Corporation
3039 Cornwallis Ave.
PO Box 12195
Research Triangle Park, NC 27709-2195
Phone: 919-254-7798
EMail: narten@raleigh.ibm.com
Charles F. Burton, III
IBM Corporation
3039 Cornwallis Ave.
PO Box 12195
Research Triangle Park, NC 27709-2195
Phone: 919-254-4355
EMail: burton@rtp.vnet.ibm.com
7. Full Copyright Statement
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
ISO Plain Language
On this page
§1Why Address Ordering Matters
ARP and IPv6 Neighbor Discovery carry link-layer addresses in message fields. To interoperate, a sender must ensure that the receiver extracts and interprets those bits correctly. In most cases, these fields must use canonical form.
LAN adapters are not consistent in how they represent canonical form. Implementations may need to swap bits within individual bytes when moving addresses to or from an adapter.
A sender and receiver must interpret the same address bits in the same order. Some adapters need software to change the bit order before using an address.
§2Canonical and Non-Canonical Forms
Canonical form, also called LSB or Ethernet format, maps the first bit sent on the LAN to the least significant bit of each byte in memory. The group address indicator is therefore the least significant bit of the first byte. Ethernet and 802.3 hardware follow this definition.
Token Ring and some FDDI hardware map the first bit to the most significant bit in memory. This is called MSB, IBM, Token-Ring or non-canonical format. For the canonical address 12-34-56-78-9A-BC, the memo shows the MSB-format bytes as 48 2C 6A 1E 59 3D.
Canonical form puts the first bit sent on the LAN in the least significant position in memory. Some Token Ring and FDDI adapters use the opposite order.
§3Neighbor Discovery, ARP and Bridges
The IPv6-over-link-layer documents require addresses in Neighbor Discovery options to be sent in canonical order. The authors report that Ethernet adapters use that order, while some FDDI and all Token Ring adapters appear to use non-canonical form. Implementations must send and interpret Neighbor Discovery addresses correctly for their local adapters.
ARP addresses on Ethernet use canonical order. The de facto practice on Token Ring is non-canonical order, which works between Token Ring nodes. A bridge between Token Ring and Ethernet swaps address bits in forwarded ARP packets so each network type can interpret them.
Neighbor Discovery fields must use canonical order. Bridges between Token Ring and Ethernet swap ARP address bits when forwarding between the two network types.
§4Security Considerations
The RFC states that it raises no known security issues. Its focus is helping implementations avoid using non-canonical forms in fields that require canonical form.
The memo reports no known security issues. It explains an address-format detail needed for correct interpretation.