RFC 2470

Transmission of IPv6 Packets over Token Ring Networks

๐Ÿ“… published December 1998, from ietf

RFC 2470: Transmission of IPv6 Packets over Token Ring Networks ๐ŸŽ€

RFC 2470 is giving Standards Track ๐Ÿฆ‹ and it came out in December 1998. The authors are M. Crawford (Fermilab), T. Narten (IBM), and S. Thomas (TransNexus). It doesn't list any RFCs it obsoletes or updates, so it's just vibing on its own. ๐Ÿ’…

Status of This Memo โœจ

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. ๐Ÿ“œ

Copyright (C) The Internet Society (1998). All Rights Reserved. ๐Ÿ”’

1. Introduction ๐Ÿ’–

Okay so this memo is all about how to send IPv6 packets over Token Ring networks ๐Ÿชข. It covers the MTU and the frame format, plus how to make IPv6 link-local addresses on Token Ring. It also covers what goes in the Source/Target Link-layer Address option inside the Router Solicitation, Router Advertisement, Redirect, Neighbor Solicitation, and Neighbor Advertisement messages when those get sent over a Token Ring network. Main character energy, fr fr. ๐Ÿ‘‘

Implementors, listen up! Token Ring adaptors assume addresses are in non-canonical format rather than canonical format, so you have to be extra careful to make sure addresses get processed correctly. See [CANON] for more details. ๐Ÿ™ˆ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [KWORD]. ๐Ÿงš

2. Maximum Transmission Unit ๐Ÿ“

IEEE 802.5 networks have a maximum frame size that comes from the longest amount of time a node is allowed to hold the token โณ. That time depends on a bunch of stuff, like the data signaling rate and how many nodes are on the ring. Because the max frame size keeps changing, implementations must rely on manual configuration or router advertisements [DISC] to figure out the actual MTU sizes. Common default values are approximately 2000, 4000, and 8000 octets. ๐ŸŒธ

If you don't have any other info, an implementation should use a default MTU of 1500 octets. This size is compatible with all the common 802.5 defaults, and also with Ethernet LANs in an environment using transparent bridging. Trรจs useful. โœจ

In an environment using source route bridging, finding the MAC-level path to a neighbor can also tell you the MTU for the path to that neighbor ๐Ÿ—บ๏ธ. The info lives in the largest frame (LF) subfield of the routing information field. This field limits the size of the information field of frames going to that destination, and that information field includes both the LLC [LLC] header and the IPv6 datagram. For IPv6, the LLC header is always 8 octets long, so the IPv6 MTU can be found by subtracting 8 from the maximum frame size defined by the LF subfield. If an implementation uses this info to work out MTU sizes, it must maintain separate MTU values for each neighbor. Bestie, that's a lot of bookkeeping ๐Ÿ˜ญ.

A detailed list of the LF values and the resulting maximum frame sizes is in [BRIDGE]. To show how the IPv6 MTU gets calculated, here are a few common values ๐Ÿงฎ. Some of the 802.1D LF values would give an IP MTU less than 1280 bytes. That's below the IPv6 minimum, so communication across paths with those MTUs is generally not possible using IPv6. Yikes ๐Ÿ’€.

        LF (base)  LF (extension)  MAC MTU  IP MTU
          001           000         1470     1462
          010           000         2052     2044
          011           000         4399     4391
          100           000         8130     8122
          101           000         11407    11399
          110           000         17749    17741
          111           000         41600    41592

When an implementation gets conflicting MTU values from different sources, it should pick from those sources using these priorities ๐Ÿฅ‡:

  1. Largest Frame values from source route bridging (only for specific, unicast destinations), but only if not greater than value from any router advertisements
  2. Router advertisements, but only if not greater than any manual configuration (including DHCP)
  3. Manual configuration (including DHCP)
  4. Default of 1500

3. Frame Format ๐ŸŽ€

IPv6 packets are transmitted in LLC/SNAP frames ๐Ÿ“ฆ. The data field holds the IPv6 header and payload. Here's what a complete 802.5 frame carrying an IPv6 datagram looks like ๐Ÿ‘€:

      +-------+-------+-------+-------+
      |  SD   |  AC   |  FC   |       |
      +-----------------------+       |
      |      Destination Address      |
      |       +-----------------------+
      |       |     Source            |
      +-------+    Address    +-------+
      |                       | DSAP  |
      +-------+-------+-------+-------+
      | SSAP  |  CTL  |      OUI      |
      +-------+-------+-------+-------+
      |  OUI  |   EtherType   |       |
      +-------+---------------+       |
      |                               |
      ~  IPv6 header and payload...   ~
      |                               |
      +-------------------------------+
      |              FCS              |
      +-------+-------+---------------+
      |  ED   |  FS   |
      +-------+-------+

Here's the rundown on the Token Ring header fields ๐Ÿ“:

  • SD: Starting Delimiter
  • AC: Access Control
  • FC: Frame Control
  • Destination Address: 48-bit IEEE address of destination station
  • Source Address: 48-bit IEEE address of source station
  • DSAP: Destination Service Access Point (for LLC/SNAP format, shall always contain the value 0xAA)
  • SSAP: Source Service Access Point (for LLC/SNAP format, shall always contain the value 0xAA)
  • CTL: Control Field (for Unnumbered Information, shall always contain the value 0x03)
  • OUI: Organizationally Unique Identifier (for EtherType encoding, shall always contain the value 0x000000)
  • EtherType: Protocol type of encapsulated payload (for IPv6, shall always contain the value 0x86DD)
  • FCS: Frame Check Sequence
  • ED: Ending Delimiter
  • FS: Frame Status

When you've got source route bridges in the picture, a routing information field (RIF) may show up right after the source address ๐Ÿ—บ๏ธ. A RIF is present in frames when the most significant bit of the source address is set to one. (That's the bit in the same position as the Individual/Group bit in the Destination Address, so keep your eyes peeled ๐Ÿ‘๏ธ.)

The RIF is variable-length. When it's there, it has a two-octet Routing Control (RC) header, followed by zero or more two-octet Route Designator fields ๐Ÿงฉ:

                          0                   1
                          0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    Routing Control:     |Bcast| Length  |D|  LF   |rsvd |
                         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    Route Designator 1:  |    Segment 1          |Bridge1|
                         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                         ~              ...              ~
                         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    Route Designator N:  |    Segment N          |BridgeN|
      (0 <= N <= 7)      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here's what the Route Designator fields are doing ๐Ÿ”:

  • Bcast: Broadcast Indicator, Defined values:
    • 10x: All Routes Explorer
    • 11x: Spanning Tree Explorer
    • 0xx: Specifically Routed Frame
  • Length: Total length of RIF field in octets
  • D: Direction of source route. A value of 0 means that the left-to-right sequence of Route Designators provides the path from the sender to recipient. A value of 0 indicates the sequence goes from recipient to sender.
  • LF: Largest Frame
  • rsvd: Reserved

When a packet gets sent, the Route Designator fields give the sequence of (bridge, LAN segment) numbers it's going to travel through ๐Ÿ›ค๏ธ. The sender is responsible for providing this sequence for Specifically Routed Frames, i.e., unicast IP datagrams. Sender, you've got this ๐Ÿซถ.

4. Stateless Autoconfiguration ๐Ÿฆ‹

The Interface Identifier [AARCH] for a Token Ring interface is based on the EUI-64 identifier [EUI64] ๐Ÿชช. That EUI-64 comes from the interface's built-in 48-bit IEEE 802 address. The OUI of the Token Ring address (the first three octets) becomes the company_id of the EUI-64 (also the first three octets). The fourth and fifth octets of the EUI are set to the fixed value FFFE hexadecimal. The last three octets of the Token Ring address become the last three octets of the EUI-64. It's giving puzzle pieces ๐Ÿงฉ.

The Interface Identifier is then formed from the EUI-64 by flipping the "Universal/Local" (U/L) bit, which is the next-to-lowest order bit of the first octet of the EUI-64 ๐Ÿ”„. Flipping this bit will usually turn a 0 into a 1, because an interface's built-in address is expected to come from a universally administered address space, so it has a globally unique value. A universally administered IEEE 802 address or an EUI-64 has a 0 in the U/L bit position, while a globally unique IPv6 Interface Identifier has a 1 in that same spot. For more on this, see [AARCH] ๐Ÿ“š.

Here's an example ๐ŸŒท. The Interface Identifier for a Token Ring interface whose built-in address is, in hexadecimal and in canonical bit order, 34-56-78-9A-BC-DE would be 36-56-78-FF-FE-9A-BC-DE.

A different MAC address that someone set manually or through software should not be used to derive the Interface Identifier ๐Ÿšซ. If you really have to use one, its global uniqueness property should be reflected in the value of the U/L bit.

An IPv6 address prefix used for stateless autoconfiguration of a Token Ring interface must have a length of 64 bits ๐Ÿ”ข.

The IPv6 link-local address [AARCH] for a Token Ring interface is formed by appending the Interface Identifier, as defined above, to the prefix FE80::/64 โœจ. Here's how the bits line up:

  10 bits            54 bits                  64 bits
+----------+-----------------------+----------------------------+
|1111111010|         (zeros)       |    Interface Identifier    |
+----------+-----------------------+----------------------------+

6. Address Mapping -- Unicast โœจ

okay so mapping unicast IPv6 addresses onto Token Ring link-layer addresses is all explained in [DISC] ๐Ÿฆ‹ The Source/Target Link-layer Address option looks like this when the link layer is Token Ring ๐Ÿ’…

            0                   1
            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |     Type      |    Length     |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |                               |
           +-         Token Ring          -+
           |                               |
           +-           Address           -+
           |                               |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here's what the option fields mean ๐ŸŒธ

  • Type: 1 for Source Link-layer address. 2 for Target Link-layer address.
  • Length: 1 (in units of 8 octets).
  • Token Ring Address: the 48 bit Token Ring IEEE 802 address, in canonical bit order. This is the address the interface is currently responding to, and it might be different from the built-in address that gets used to derive the Interface Identifier ๐Ÿงš

When source routing bridges are in use, the source route for the path to a destination can be pulled out of the RIF field of received Neighbor Advertisement messages. Lowkey the fun part: the RIF field of received packets can be flipped into a source route for sending return traffic, by toggling the value of the 'D' bit and insuring that the Bcast field is set to indicate a Specifically Routed Frame ๐Ÿ”ฅ


7. Address Mapping -- Multicast ๐ŸŽ€

all IPv6 packets with multicast destination addresses get sent to Token Ring functional addresses. Here's the specific mapping between IPv6 addresses and Token Ring functional addresses (in canonical form) ๐Ÿ’– Be aware that other protocols besides IPv6 can use these same functional addresses too, so not every Token Ring frame sent to these functional addresses is guaranteed to be an IPv6 datagram ๐Ÿ™ˆ

MAC Addr (canonical)       IPv6 Multicast Addresses

03-00-80-00-00-00  All-Nodes (FF01::1 and FF02::1) and
                   solicited node (FF02:0:0:0:0:1:FFXX:XXXX)
                   addresses

03-00-40-00-00-00  All-Routers addresses (FF0X::2)

03-00-00-80-00-00  any other multicast address with three
                   least significant bits = 000

03-00-00-40-00-00  any other multicast address with three
                   least significant bits = 001

03-00-00-20-00-00  any other multicast address with three
                   least significant bits = 010

03-00-00-10-00-00  any other multicast address with three
                   least significant bits = 011

03-00-00-08-00-00  any other multicast address with three
                    least significant bits = 100

03-00-00-04-00-00  any other multicast address with three
                    least significant bits = 101

03-00-00-02-00-00  any other multicast address with three
                    least significant bits = 110

03-00-00-01-00-00  any other multicast address with three
                    least significant bits = 111

In a bridged token ring network, all multicast packets SHOULD be sent with a RIF header that specifies the use of the Spanning Tree Explorer โœจ This is the main thing to remember here, bestie ๐Ÿ‘‘

Note: it is believed that some (very) old bridge implementations do not properly support the Spanning Tree Explorer mechanism. In such environments, multicast traffic sent through bridges must use a RIF with the All Routes Explorer. Consequently, an implementation MAY wish to allow the sending of IP multicast traffic using an All Routes Explorer. However, such an ability must be configurable by a system administrator, and the default setting of the switch MUST be to use the Spanning Tree Explorer ๐Ÿ’€

8. Security Considerations ๐Ÿ”ฅ

Token Ring, like most broadcast LAN technologies, has inherent security vulnerabilities. For example, any sender can claim the identity of another and forge traffic. It is the responsibility of higher layers to take appropriate steps in those environments where such vulnerabilities are unacceptable. ๐Ÿ˜ญ

9. Acknowledgments ๐Ÿซถ

several members of the IEEE 802.5 Working Group contributed their knowledge and experience to drafting this specification, including Jim, Andrew Draper, George Lin, John Messenger, Kirk Preiss, and Trevor Warwick. The author would also like to thank many members of the IPng working group for their advice and suggestions, including Ran Atkinson, Scott Bradner, Steve Deering, Francis Dupont, Robert Elz, and Matt Thomas. A special thanks is due to Steve Wise, who gave the most relevant advice of all by actually trying to implement this specification while it was in progress ๐Ÿ†


10. References ๐Ÿ“š

  • [802.5] 8802-5 : 1995 (ISO/IEC) [ANSI/IEEE 802.5, 1995 Edition] Information technology--Telecommunications and information exchange between systems--Local and metropolitan area networks--Specific requirements-- Part 5: Token ring access method and physical layer specification.
  • [AARCH] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 2373, July 1998.
  • [ACONF] Thomson, S. and T. Narten, "IPv6 Stateless Address Autoconfiguration", RFC 2462, December 1998.
  • [BRIDGE] 10038: 1993 (ISO/IEC) [ANSI/IEEE Std 802.1D, 1993 Edition] Information technology--Telecommunications and information exchange between systems--Local area networks--Media access control (MAC) bridges.
  • [CANON] Narten, T. and C. Burton, "A Caution on Canonical Bit Order Of Link-Layer Addresses", RFC 2469, December 1998.
  • [CONF] Thomson, S. and T. Narten, "IPv6 Stateless Address Autoconfiguration", RFC 1971, August 1996.
  • [DISC] Narten, T., Nordmark, E. and W. Simpson, "Neighbor Discovery for IP Version 6 (IPv6)", RFC 2461, December 1998.
  • [EUI64] "64-Bit Global Identifier Format Tutorial", http: //standards.ieee.org/db/oui/tutorials/EUI64.html.
  • [IPV6] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.
  • [KWORD] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels," BCP 14, RFC 2119, March 1997.
  • [LLC] 8802-2 : 1994 (ISO/IEC) [ANSI/IEEE 802.2, 1994 Edition] Information technology--Telecommunications and information exchange between systems--Local and Metropolitan area networks--Specific requirements-- Part 2: Logical link control.

11. Authors' Addresses ๐ŸŒˆ

Matt Crawford
Fermilab MS 368
PO Box 500
Batavia, IL 60510 USA

Phone: +1 630 840 3461
EMail: crawdad@fnal.gov


Thomas Narten
IBM Corporation
P.O. Box 12195
Research Triangle Park, NC 27709-2195 USA

Phone: +1 919 254 7798
EMail: narten@raleigh.ibm.com


Stephen Thomas
TransNexus
430 Tenth Street NW Suite N204
Atlanta, GA 30318 USA

Phone: +1 404 872 4745
EMail: stephen.thomas@transnexus.com

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.

๐Ÿ“ฆ where this page comes from