IPv6 over IEEE 1394: Transmission of IPv6 Packets over IEEE 1394 Networks
How IPv6 packets ride on IEEE 1394 (FireWire-style) buses: framing, addresses, neighbor lookup and multicast.
Fujisawa, K. and A. Onoe, "Transmission of IPv6 Packets over IEEE 1394 Networks", RFC 3146, DOI 10.17487/RFC3146, October 2001, <https://www.rfc-editor.org/info/rfc3146>.
@misc{rfc3146,
series = {Request for Comments},
number = 3146,
howpublished = {RFC 3146},
publisher = {RFC Editor},
doi = {10.17487/RFC3146},
url = {https://www.rfc-editor.org/info/rfc3146},
author = {K. Fujisawa and A. Onoe},
title = {{Transmission of IPv6 Packets over IEEE 1394 Networks}},
pagetotal = 8,
year = 2001,
month = oct,
} RFC text
Contents
Network Working Group K. Fujisawa
Request for Comments: 3146 A. Onoe
Category: Standards Track Sony Corporation
October 2001
Transmission of IPv6 Packets over IEEE 1394 Networks
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 Notice
Copyright (C) The Internet Society (2001). All Rights Reserved.
Abstract
This document describes the frame format for transmission of IPv6
packets and the method of forming IPv6 link-local addresses and
statelessly autoconfigured addresses on IEEE1394 networks.
1. INTRODUCTION
IEEE Std 1394-1995 (and its amendment) is a standard for a High
Performance Serial Bus. IETF IP1394 Working Group has standardized
the method to carry IPv4 datagrams and ARP packets over IEEE1394
subnetwork [IP1394].
This document describes the frame format for transmission of IPv6
[IPV6] packets and the method of forming IPv6 link-local addresses
and statelessly autoconfigured addresses on IEEE1394 networks. It
also describes the content of the Source/Target Link-layer Address
option used in Neighbor Discovery [DISC] when the messages are
transmitted on an IEEE1394 network.
2. SPECIFICATION TERMINOLOGY
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 RFC 2119.
3. IPv6-CAPABLE NODES
An IPv6-capable node MUST fulfill the following minimum requirements:
- it MUST implement configuration ROM in the general format
specified by ISO/IEC 13213:1994 and MUST implement the bus
information block specified by IEEE Std 1394a-2000 [1394a] and a
unit directory specified by this document;
- the max_rec field in its bus information block MUST be at least 8;
this indicates an ability to accept block write requests and
asynchronous stream packets with data payload of 512 octets. The
same ability MUST also apply to read requests; that is, the node
MUST be able to transmit a block response packet with a data
payload of 512 octets;
- it MUST be isochronous resource manager capable, as specified by
IEEE Std 1394a-2000;
- it MUST support both reception and transmission of asynchronous
streams as specified by IEEE Std 1394a-2000.
4. LINK ENCAPSULATION AND FRAGMENTATION
The encapsulation and fragmentation mechanism MUST be the same as "4.
LINK ENCAPSULATION AND FRAGMENTATION" of [IP1394].
Note: Since there is an ether_type field to discriminate protocols
and MCAP (multicast channel allocation protocol) is used for both
IPv4 and IPv6, the version field in GASP (global asynchronous
stream packet) header of IPv6 datagrams is the same value (one) as
[IP1394].
The ether_type value for IPv6 is 0x86dd.
The default MTU size for IPv6 packets on an IEEE1394 network is 1500
octets. This size may be reduced by a Router Advertisement [DISC]
containing an MTU option which specifies a smaller MTU, or by manual
configuration of each node. If a Router Advertisement received on an
IEEE1394 interface has an MTU option specifying an MTU larger than
1500, or larger than a manually configured value, that MTU option may
be logged to system management but MUST be otherwise ignored. The
mechanism to extend MTU size between particular two nodes is for
further study.
5. CONFIGURATION ROM
Configuration ROM for IPv6-capable nodes MUST contain a unit
directory in the format specified by [IP1394] except following rules.
- The value for Unit_SW_Version is 0x000002.
- The textual descriptor for the Unit_SW_Version MUST be "IPv6".
Note: A dual-stack (IPv4 and IPv6) node will have two unit
directories for IPv4 and IPv6 respectively.
6. STATELESS AUTOCONFIGURATION
The Interface Identifier [AARCH] for an IEEE1394 interface is formed
from the interface's built-in EUI-64 identifier by complementing the
"Universal/Local" (U/L) bit, which is the next-to-lowest order bit of
the first octet of the EUI-64 identifier. Complementing this bit
will generally change a 0 value to a 1, since an interface's built-in
EUI-64 identifier is expected to be from a universally administered
address space and hence have a globally unique value. A universally
administered EUI-64 identifier is signified by a 0 in the U/L bit
position, while a globally unique IPv6 Interface Identifier is
signified by a 1 in the corresponding position. For further
discussion on this point, see [AARCH].
An IPv6 address prefix used for stateless autoconfiguration [ACONF]
of an IEEE1394 interface MUST have a length of 64 bits.
7. LINK-LOCAL ADDRESSES
The IPv6 link-local address [AARCH] for an IEEE1394 interface is
formed by appending the Interface Identifier, as defined above, to
the prefix FE80::/64.
10 bits 54 bits 64 bits
+----------+-----------------------+----------------------------+
|1111111010| (zeros) | Interface Identifier |
+----------+-----------------------+----------------------------+
8. ADDRESS MAPPING FOR UNICAST
The procedure for mapping IPv6 unicast addresses into IEEE1394 link-
layer addresses uses the Neighbor Discovery [DISC]. Since 1394 link
address (node_ID) will not be constant across a 1394 bridge, we have
chosen not to put it in the Link-layer Address option. The recipient
of the Neighbor Discovery SHOULD use the source_ID (obtained from
either the asynchronous packet header or the GASP header) in
conjunction with the content of the Source link-layer address. An
implementation MAY use some other methods to obtain a node_ID of the
sender utilizing a mapping table between node_unique_ID (EUI-64
identifier) and node_ID. The mechanism to make such mapping table is
out of scope of this document.
The recipient of an Neighbor Discovery packet MUST ignore it unless
the most significant ten bits of the source_ID are equal to either
0x3FF or the most significant ten bits of the recipient's NODE_IDS
register.
The Source/Target Link-layer Address option has the following form
when the link layer is IEEE1394.
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 | Length = 3 | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ---+
| node_unique_ID (EUI-64 identifier) |
+--- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | max_rec | spd |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unicast_FIFO |
+--- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type 1 for Source Link-layer address.
2 for Target Link-layer address.
Length 3 (in units of 8 octets).
node_unique_ID This field contains the node unique ID of the
node and MUST be equal to that specified in the
node's configuration ROM.
max_rec This field MUST be equal to the value of max_rec
in the node's configuration ROM.
spd This field MUST be set to the lesser of the node's
link speed and PHY speed. The link speed is the
maximum speed at which the link may send or
receive packets; the PHY speed is the maximum
speed at which the PHY may send, receive or repeat
packets. The encoding used for spd is specified in
the Table 2 of [IP1394].
unicast_FIFO This field MUST specify the 48-bit offset of the
node's FIFO available for the receipt of IPv6
datagrams. The offset of a node's unicast FIFO
MUST NOT change, except as the result of a power
reset.
reserved This field MUST be set to all zeros by the sender
and ignored by the receiver.
Note that node_ID may change when 1394 bus-reset occurs. The mapping
cache held in the node SHOULD be cleared on 1394 bus-reset.
According to [1394], the maximum data payload and the transmission
speed SHOULD be determined based on the sender's capability, the
recipient's capability, and the PHYs of all intervening nodes.
9. IPv6 MULTICAST
By default, all best-effort IPv6 multicast MUST use asynchronous
stream packets whose channel number is equal to the channel field
from the BROADCAST_CHANNEL register. In particular, datagrams
addressed to all-nodes multicast addresses, all-routers multicast
addresses, and solicited-node multicast addresses [AARCH] MUST use
the default channel specified by the BROADCAST_CHANNEL register.
Best-effort IPv6 multicast for other multicast group addresses may
utilize a different channel number if such a channel number is
allocated and advertised prior to use, by the multicast channel
allocation protocol (MCAP), as described in [IP1394].
When a node wishes to receive multicast data addressed to other than
all-nodes multicast addresses, all-routers multicast addresses, and
solicited-node multicast addresses, it MUST confirm if the channel
mapping between a multicast group address and a channel number exists
using MCAP, as described in "9.3 Multicast Receive" in [IP1394].
The implementation of MCAP is optional for send-only nodes. A node
MAY transmit multicast data addressed to any multicast addresses into
the default broadcast channel regardless of the existing allocation
of the channel. If a node wishes to transmit multicast data on other
than the default channel, it MUST first confirm by MCAP whether or
not a channel number for the group address has been already
allocated. The implementors are encouraged to use this protocol when
transmitting high-rate multicast streams.
The MCAP 'type' value for IPv6 group address descriptor is 2.
10. IANA CONSIDERATIONS
IANA has assigned a value of 0x000002 for "Unit_SW_Version for IPv6
over IEEE1394" out of the "CSR Protocol Identifiers" name space, as
described in section 5. The details of the "CSR Protocol
Identifiers" namespace is described in "10. IANA CONSIDERATIONS" of
[IP1394].
Section 9.1 of [IP1394] defines MCAP group address descriptors, which
include an 8-bit type name space. This document requests that IANA
maintain a name space to manage MCAP group address descriptors. The
initial assignments for that table are:
Value Usage
0 reserved
1 IPv4 Multicast Address
2 IPv6 Multicast Address
255 reserved
Additional values from the range 3-254 can be assigned through
Standards Action [RFC 2434].
11. Security Considerations
IPv6 over IEEE1394 does not introduce any additional security
considerations over [IP1394]. The security concerns described in
"11. SECURITY CONSIDERATIONS" in [IP1394] apply here as well.
12. Acknowledgment
The authors would like to acknowledge the authors of [IP1394] and
[ETHER] since some part of this document has been derived from them.
13. References
[1394] IEEE Std 1394-1995, Standard for a High Performance Serial
Bus
[1394a] IEEE Std 1394a-2000, Standard for a High Performance Serial
Bus - Amendment 1
[IP1394] Johansson, P., "IPv4 over IEEE 1394", RFC 2734, December
1999.
[IPV6] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998.
[AARCH] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 2373 December 1998.
[ACONF] Thomson, S. and T. Narten, "IPv6 Stateless Address
Autoconfiguration", RFC 2462, December 1998.
[DISC] Narten, T., Nordmark, E., and W. Simpson, "Neighbor
Discovery for IP Version 6 (IPv6)", RFC 2461, December 1998.
[ETHER] Crawford, M., "Transmission of IPv6 Packets over Ethernet
Networks", RFC 2464, December 1998.
14. Authors' Addresses
Kenji Fujisawa
Network & Software Technology Center, Sony Corporation
6-7-35 Kitashinagawa,
Shinagawa-ku, Tokyo 141-0001, JAPAN
Phone: +81-3-5795-8507
Fax: +81-3-5795-8977
EMail: fujisawa@sm.sony.co.jp
Atsushi Onoe
Internet Systems Laboratory,
Internet Laboratories, Sony Corporation
6-7-35 Kitashinagawa,
Shinagawa-ku, Tokyo 141-0001, JAPAN
Phone: +81-3-5448-4620
Fax: +81-3-5448-4622
EMail: onoe@sm.sony.co.jp
15. Full Copyright Statement
Copyright (C) The Internet Society (2001). 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.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
AI ELI5
On this page
§1Introduction
IEEE Std 1394-1995 defines a High Performance Serial Bus. The IETF IP1394 Working Group had already standardized how to carry IPv4 datagrams and ARP packets over an IEEE 1394 subnetwork, in RFC 2734.
This RFC does the same job for IPv6. It describes the frame format for IPv6 packets, the way to form IPv6 link-local addresses and statelessly autoconfigured addresses, and the content of the Source/Target Link-layer Address option used in Neighbor Discovery when messages travel over 1394.
Much of the work is done by reference: wherever the IPv4 document already solves a problem, this RFC says to do the same thing.
FireWire already knew how to carry the old kind of Internet addresses. This document teaches it to carry the new, longer kind too.
§3Node Requirements and Configuration ROM
An IPv6-capable node MUST meet four minimum requirements. It MUST implement configuration ROM in the general format of ISO/IEC 13213:1994, with the bus information block from IEEE Std 1394a-2000 and a unit directory defined by this document. Its max_rec field MUST be at least 8, meaning it can accept block write requests and asynchronous stream packets with a 512-octet payload, and can send a block response with a 512-octet payload. It MUST be isochronous resource manager capable. It MUST support both reception and transmission of asynchronous streams.
The unit directory follows the IPv4-over-1394 format with two changes. The Unit_SW_Version value is 0x000002, and its textual descriptor MUST be IPv6. A dual-stack node (IPv4 and IPv6) has two unit directories, one for each protocol.
Before a device can join in, it has to carry a name tag that says it speaks IPv6 and promise it can handle packages of a certain size.
§4Encapsulation, Fragmentation and MTU
Encapsulation and fragmentation MUST be exactly as in section 4 of RFC 2734. Because an ether_type field tells IPv4 and IPv6 apart, and because MCAP (multicast channel allocation protocol) is shared by both, the version field in the GASP (global asynchronous stream packet) header of IPv6 datagrams has the same value as for IPv4, which is one. The ether_type value for IPv6 is 0x86dd.
The default MTU for IPv6 packets on an IEEE 1394 network is 1500 octets. It can be lowered by a Router Advertisement carrying an MTU option with a smaller value, or by manual configuration of each node. If a Router Advertisement names an MTU larger than 1500, or larger than a manually configured value, the option may be logged to system management but MUST otherwise be ignored. A way to extend the MTU between two particular nodes is left for further study.
Packages on the cable are normally no bigger than 1500 bytes. A router can ask for smaller ones, but it can never talk a device into bigger ones.
§6Interface Identifiers and Link-Local Addresses
The Interface Identifier for an IEEE 1394 interface comes from the interface's built-in EUI-64 identifier, with the Universal/Local (U/L) bit complemented. The U/L bit is the next-to-lowest order bit of the first octet. A universally administered EUI-64 has a 0 there, while a globally unique IPv6 Interface Identifier has a 1, so the flip will generally turn a 0 into a 1.
An IPv6 address prefix used for stateless autoconfiguration of an IEEE 1394 interface MUST be 64 bits long.
The link-local address is the prefix FE80::/64 followed by the Interface Identifier: 10 bits of 1111111010, 54 bits of zeros and the 64-bit identifier.
Every FireWire gadget has a serial number burned in. The IPv6 address is made from that number, with one small switch flipped, so no two gadgets end up with the same address.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
PREFIX | Prefix 1111111010 | 10 bits | The FE80::/64 prefix begins with these 10 bits. | |
ZEROS | Zeros | 54 bits | 54 bits of zeros. | |
INTERFACE-ID | Interface Identifier | 8 bytes | Built from the EUI-64 with the U/L bit complemented. |
§8Finding Neighbors: Unicast Address Mapping
Mapping an IPv6 unicast address to a 1394 link-layer address uses Neighbor Discovery. The 1394 node_ID is not placed in the Link-layer Address option, because it is not constant across a 1394 bridge. Instead, the recipient SHOULD combine the source_ID (from the asynchronous packet header or the GASP header) with the content of the Source link-layer address. An implementation MAY use another method to learn the sender's node_ID, such as a table mapping node_unique_ID to node_ID; how to build that table is out of scope.
The recipient of a Neighbor Discovery packet MUST ignore it unless the most significant ten bits of the source_ID equal either 0x3FF or the most significant ten bits of the recipient's NODE_IDS register.
The option has Length 3 (units of 8 octets) and carries the node's unique ID, max_rec, spd (the lesser of link speed and PHY speed) and a 48-bit unicast_FIFO offset. The offset MUST NOT change except through a power reset. Reserved bits are zero when sent and ignored on receipt. Because node_ID can change on a 1394 bus reset, the mapping cache SHOULD be cleared on bus reset.
To send a package to a neighbor, you need to know which plug on the bus it is in. The neighbor writes down its serial number and abilities on a card, and everyone reads that card.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
TYPE | Type | 1 byte | 1 for Source Link-layer address, 2 for Target Link-layer address. | |
LENGTH | Length | 1 byte | 3 | 3, in units of 8 octets. |
NODE-UNIQUE-ID | node_unique_ID | 8 bytes | EUI-64 identifier; MUST equal the value in the node's configuration ROM. | |
MAX-REC | max_rec | 1 byte | MUST equal max_rec in the node's configuration ROM. | |
SPD | spd | 1 byte | The lesser of the link speed and the PHY speed. | |
UNICAST-FIFO | unicast_FIFO | 6 bytes | 48-bit offset of the FIFO for receiving IPv6 datagrams. | |
RESERVED | reserved | 6 bytes | All zeros from the sender, ignored by the receiver. |
§9IPv6 Multicast
By default, all best-effort IPv6 multicast MUST use asynchronous stream packets on the channel number found in the channel field of the BROADCAST_CHANNEL register. This is mandatory for datagrams sent to the all-nodes, all-routers and solicited-node multicast addresses.
Other multicast groups may use a different channel if one is allocated and advertised first, using MCAP as described in RFC 2734. A node that wants to receive such groups MUST first confirm through MCAP that a channel mapping exists. MCAP is optional for send-only nodes, which MAY send any multicast data on the default broadcast channel. To send on another channel, a node MUST first confirm by MCAP whether a channel is already allocated. Implementors are encouraged to use MCAP for high-rate multicast streams. The MCAP type value for an IPv6 group address descriptor is 2.
Shouting to everyone goes on one shared loudspeaker channel. If a group wants its own private channel, it has to announce it first so listeners can tune in.
§10IANA Considerations
IANA assigned 0x000002 as the Unit_SW_Version for IPv6 over IEEE 1394 from the CSR Protocol Identifiers name space.
The RFC also asks IANA to maintain the 8-bit MCAP group address descriptor type name space defined by RFC 2734. The initial assignments are 0 reserved, 1 IPv4 Multicast Address, 2 IPv6 Multicast Address and 255 reserved. Values 3 to 254 can be assigned through Standards Action.
Some numbers must be written in an official list so nobody uses them for something else. This document adds the IPv6 entries to that list.
§11Security Considerations
The RFC states that IPv6 over IEEE 1394 does not introduce any additional security considerations beyond those of RFC 2734. The concerns described in the security section of that document apply here as well.
Running IPv6 on FireWire adds no new dangers beyond the ones the older FireWire document already described.