| rfc8930xml2.original.xml | rfc8930.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | ||||
| nsus="true" docName="draft-ietf-6lo-minimal-fragment-15" indexInclude="true" ipr | ||||
| ="trust200902" number="8930" prepTime="2020-11-16T16:17:37" scripts="Common,Lati | ||||
| n" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude= | ||||
| "true" xml:lang="en"> | ||||
| <link href="https://datatracker.ietf.org/doc/draft-ietf-6lo-minimal-fragment-1 | ||||
| 5" rel="prev"/> | ||||
| <link href="https://dx.doi.org/10.17487/rfc8930" rel="alternate"/> | ||||
| <link href="urn:issn:2070-1721" rel="alternate"/> | ||||
| <front> | ||||
| <title abbrev="Fragment Forwarding">On Forwarding 6LoWPAN Fragments over a M | ||||
| ulti-Hop IPv6 Network</title> | ||||
| <seriesInfo name="RFC" value="8930" stream="IETF"/> | ||||
| <author initials="T." surname="Watteyne" fullname="Thomas Watteyne" role="ed | ||||
| itor"> | ||||
| <organization showOnFrontPage="true">Analog Devices</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>32990 Alvarado-Niles Road, Suite 910</street> | ||||
| <city>Union City</city> | ||||
| <region>CA</region> | ||||
| <code>94587</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>thomas.watteyne@analog.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="P." surname="Thubert" fullname="Pascal Thubert" role="edit | ||||
| or"> | ||||
| <organization abbrev="Cisco Systems" showOnFrontPage="true">Cisco Systems, | ||||
| Inc</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <extaddr>Building D</extaddr> | ||||
| <street>45 Allee des Ormes - BP1200</street> | ||||
| <city>Mougins - Sophia Antipolis</city> | ||||
| <code>06254</code> | ||||
| <country>France</country> | ||||
| </postal> | ||||
| <phone>+33 497 23 26 34</phone> | ||||
| <email>pthubert@cisco.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="C." surname="Bormann" fullname="Carsten Bormann"> | ||||
| <organization showOnFrontPage="true">Universität Bremen TZI</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Postfach 330440</street> | ||||
| <city>Bremen</city> | ||||
| <code>D-28359</code> | ||||
| <country>Germany</country> | ||||
| </postal> | ||||
| <phone>+49-421-218-63921</phone> | ||||
| <email>cabo@tzi.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="11" year="2020"/> | ||||
| <area>Internet Area</area> | ||||
| <workgroup>6lo</workgroup> | ||||
| <keyword>6LoWPAN</keyword> | ||||
| <keyword>Fragment</keyword> | ||||
| <abstract pn="section-abstract"> | ||||
| <t indent="0" pn="section-abstract-1">This document provides generic rules | ||||
| to enable the forwarding of an | ||||
| IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) fragment | ||||
| over a route-over network. Forwarding fragments can improve both | ||||
| end-to-end latency and reliability as well as reduce the buffer requirements in | ||||
| intermediate nodes; it may be implemented using RFC 4944 and Virtual Reassembly | ||||
| Buffers (VRBs).</t> | ||||
| </abstract> | ||||
| <boilerplate> | ||||
| <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
| "exclude" pn="section-boilerplate.1"> | ||||
| <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
| > | ||||
| <t indent="0" pn="section-boilerplate.1-1"> | ||||
| This is an Internet Standards Track document. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.1-2"> | ||||
| This document is a product of the Internet Engineering Task Force | ||||
| (IETF). It represents the consensus of the IETF community. It has | ||||
| received public review and has been approved for publication by | ||||
| the Internet Engineering Steering Group (IESG). Further | ||||
| information on Internet Standards is available in Section 2 of | ||||
| RFC 7841. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.1-3"> | ||||
| Information about the current status of this document, any | ||||
| errata, and how to provide feedback on it may be obtained at | ||||
| <eref target="https://www.rfc-editor.org/info/rfc8930" brackets="non | ||||
| e"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
| ude" pn="section-boilerplate.2"> | ||||
| <name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
| <t indent="0" pn="section-boilerplate.2-1"> | ||||
| Copyright (c) 2020 IETF Trust and the persons identified as the | ||||
| document authors. All rights reserved. | ||||
| </t> | ||||
| <t indent="0" pn="section-boilerplate.2-2"> | ||||
| This document is subject to BCP 78 and the IETF Trust's Legal | ||||
| Provisions Relating to IETF Documents | ||||
| (<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
| "/>) in effect on the date of | ||||
| publication of this document. Please review these documents | ||||
| carefully, as they describe your rights and restrictions with | ||||
| respect to this document. Code Components extracted from this | ||||
| document must include Simplified BSD License text as described in | ||||
| Section 4.e of the Trust Legal Provisions and are provided without | ||||
| warranty as described in the Simplified BSD License. | ||||
| </t> | ||||
| </section> | ||||
| </boilerplate> | ||||
| <toc> | ||||
| <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
| n="section-toc.1"> | ||||
| <name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
| c.1-1"> | ||||
| <li pn="section-toc.1-1.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
| ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
| Introduction</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2"> | ||||
| <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" form | ||||
| at="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-terminology">Terminology</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.2.2"> | ||||
| <li pn="section-toc.1-1.2.2.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1">< | ||||
| xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2. | ||||
| 1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-re | ||||
| quirements-language">Requirements Language</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.2"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1">< | ||||
| xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2. | ||||
| 2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-ba | ||||
| ckground">Background</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent= | ||||
| "2.3" format="counter" sectionFormat="of" target="section-2.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-new-terms">New Terms</ | ||||
| xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3"> | ||||
| <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | ||||
| at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-overview-of-6lowpan-fragmen">Overv | ||||
| iew of 6LoWPAN Fragmentation</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
| at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-limitations-of-per-hop-frag">Limit | ||||
| ations of Per-Hop Fragmentation and Reassembly</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | ||||
| "4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-latency">Latency</xref | ||||
| ></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent= | ||||
| "4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-memory-management-and- | ||||
| relia">Memory Management and Reliability</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
| at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-forwarding-fragments">Forwarding F | ||||
| ragments</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6"> | ||||
| <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
| at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-virtual-reassembly-buffer-v">Virtu | ||||
| al Reassembly Buffer (VRB) Implementation</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7"> | ||||
| <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
| at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
| Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8"> | ||||
| <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
| at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
| ations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9"> | ||||
| <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
| at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-references">References</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.9.2"> | ||||
| <li pn="section-toc.1-1.9.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent= | ||||
| "9.1" format="counter" sectionFormat="of" target="section-9.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-normative-references"> | ||||
| Normative References</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent= | ||||
| "9.2" format="counter" sectionFormat="of" target="section-9.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-informative-references | ||||
| ">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10"> | ||||
| <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgment | ||||
| s</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
| resses</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | ||||
| <middle> | ||||
| <section anchor="Intro" numbered="true" removeInRFC="false" toc="include" pn | ||||
| ="section-1"> | ||||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t indent="0" pn="section-1-1">The original 6LoWPAN fragmentation is defin | ||||
| ed in <xref target="RFC4944" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC4944"/> for use over a single Layer 3 hop, though multiple | ||||
| Layer 2 hops in a mesh-under network is also possible, and was not modified by t | ||||
| he update in <xref target="RFC6282" format="default" sectionFormat="of" derivedC | ||||
| ontent="RFC6282"/>. | ||||
| 6LoWPAN operations including fragmentation depend on a link-layer security that | ||||
| prevents any rogue access to the network. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-2"> | ||||
| In a route-over 6LoWPAN network, an IP packet is expected to be reassembled at e | ||||
| ach intermediate hop, uncompressed, pushed to Layer 3 to be routed, and then com | ||||
| pressed and fragmented again. | ||||
| This document introduces an alternate approach called 6LoWPAN Fragment Forwardin | ||||
| g (6LFF) whereby an intermediate node forwards a fragment (or the bulk thereof, | ||||
| MTU | ||||
| permitting) without reassembling if the next hop is a similar 6LoWPAN | ||||
| link. The routing decision is made on the first fragment of the datagram, which | ||||
| has the IPv6 routing information. The first fragment is forwarded immediately, a | ||||
| nd a state is stored to enable forwarding the next fragments along the same path | ||||
| . | ||||
| </t> | ||||
| <t indent="0" pn="section-1-3"> | ||||
| Done right, 6LoWPAN Fragment Forwarding techniques lead to more streamlined oper | ||||
| ations, less buffer bloat, and lower latency. But it may be wasteful when fragme | ||||
| nts are missing, leading to locked resources and low throughput, and it may be m | ||||
| isused to the point that the end-to-end latency of one packet falls behind that | ||||
| of per-hop reassembly. | ||||
| </t> | ||||
| <t indent="0" pn="section-1-4"> | ||||
| This specification provides a generic overview of 6LFF, discusses advantages and | ||||
| caveats, and introduces a particular 6LFF technique called "Virtual Reassembly | ||||
| Buffer" (VRB) that can be used while retaining the message formats defined in <x | ||||
| ref target="RFC4944" format="default" sectionFormat="of" derivedContent="RFC4944 | ||||
| "/>. Basic recommendations such as the insertion of an inter-frame gap between f | ||||
| ragments are provided to avoid the most typical caveats. | ||||
| </t> | ||||
| </section> | ||||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-2"> | ||||
| <name slugifiedName="name-terminology">Terminology</name> | ||||
| <section anchor="bcp" numbered="true" removeInRFC="false" toc="include" pn | ||||
| ="section-2.1"> | ||||
| <name slugifiedName="name-requirements-language">Requirements Language</ | ||||
| name> | ||||
| <t indent="0" pn="section-2.1-1"> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
| IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOUL | ||||
| D</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>N | ||||
| OT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="o | ||||
| f" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFor | ||||
| mat="of" derivedContent="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | ||||
| <section numbered="true" removeInRFC="false" toc="include" pn="section-2.2 | ||||
| "> | ||||
| <name slugifiedName="name-background">Background</name> | ||||
| <t indent="0" pn="section-2.2-1"> | ||||
| Past experience with fragmentation, e.g., as described in <xref t | ||||
| arget="RFC4963" format="default" sectionFormat="of" derivedContent="RFC4963">"IP | ||||
| v4 Reassembly Errors at High Data Rates"</xref> and references therein, has sho | ||||
| wn that misassociated or lost | ||||
| fragments can lead to poor network behavior and, occasionally, trouble | ||||
| at the application layer. | ||||
| That experience led to the definition of the <xref target="RFC820 | ||||
| 1" format="default" sectionFormat="of" derivedContent="RFC8201">"Path | ||||
| MTU Discovery for IP version 6"</xref> protocol that limits fragmentatio | ||||
| n over the | ||||
| Internet. | ||||
| </t> | ||||
| <t indent="0" pn="section-2.2-2"><xref target="RFC8900" format="default" | ||||
| sectionFormat="of" derivedContent="RFC8900">"IP Fragmentation | ||||
| Considered Fragile"</xref> discusses security threats that are linked to | ||||
| using IP fragmentation. The 6LoWPAN fragmentation takes place underneath | ||||
| the IP Layer, | ||||
| but some issues described there may still apply to 6LoWPAN fragments | ||||
| (as discussed in further details in | ||||
| <xref target="security-considerations" format="default" sectionFormat="o | ||||
| f" derivedContent="Section 7"/>). | ||||
| </t> | ||||
| <t indent="0" pn="section-2.2-3">Readers are expected to be familiar wit | ||||
| h all the terms and concepts | ||||
| that are discussed in <xref target="RFC4919" format="default" section | ||||
| Format="of" derivedContent="RFC4919">"IPv6 over Low-Power | ||||
| Wireless Personal Area Networks (6LoWPANs): Overview, Assumptions, | ||||
| Problem Statement, and Goals"</xref> and <xref target="RFC4944" forma | ||||
| t="default" sectionFormat="of" derivedContent="RFC4944"> | ||||
| "Transmission of IPv6 Packets over IEEE 802.15.4 Networks"</xref>. | ||||
| </t> | ||||
| <t indent="0" pn="section-2.2-4"><xref target="RFC3031" format="default" | ||||
| sectionFormat="of" derivedContent="RFC3031">"Multiprotocol Label Switching | ||||
| Architecture"</xref> states that with MPLS,</t> | ||||
| <blockquote pn="section-2.2-5"> | ||||
| packets are "labeled" before | ||||
| they are forwarded. At subsequent hops, there is | ||||
| no further analysis of the packet's network layer header. Rather, the | ||||
| label is used as an index into a table which specifies the next hop, | ||||
| and a new label. | ||||
| </blockquote> | ||||
| <t indent="0" pn="section-2.2-6">The MPLS | ||||
| technique is leveraged in the present specification to forward | ||||
| fragments that actually | ||||
| do not have a network-layer header, since the fragmentation occurs below | ||||
| IP. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="new" numbered="true" removeInRFC="false" toc="include" pn | ||||
| ="section-2.3"> | ||||
| <name slugifiedName="name-new-terms">New Terms</name> | ||||
| <t indent="0" pn="section-2.3-1"> | ||||
| This specification uses the following terms: | ||||
| </t> | ||||
| <dl indent="3" newline="false" spacing="normal" pn="section-2.3-2"> | ||||
| <dt pn="section-2.3-2.1">6LoWPAN Fragment Forwarding Endpoints:</dt> | ||||
| <dd pn="section-2.3-2.2"> | ||||
| The 6LFF endpoints are the first and last nodes in an unbroken string | ||||
| of 6LFF nodes. They are also the only points | ||||
| where the fragmentation and reassembly operations take place. | ||||
| </dd> | ||||
| <dt pn="section-2.3-2.3">Compressed Form:</dt> | ||||
| <dd pn="section-2.3-2.4"> | ||||
| This specification uses the generic term "compressed form" to refer t | ||||
| o | ||||
| the format of a datagram after the action of <xref target="RFC6282" form | ||||
| at="default" sectionFormat="of" derivedContent="RFC6282"/> | ||||
| and possibly <xref target="RFC8138" format="default" sectionFormat="of" | ||||
| derivedContent="RFC8138"/> for Routing Protocol for Low-Power and Lossy Network | ||||
| (RPL) <xref target="RFC6550" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC6550"/> | ||||
| artifacts. | ||||
| </dd> | ||||
| <dt pn="section-2.3-2.5">Datagram_Size:</dt> | ||||
| <dd pn="section-2.3-2.6"> | ||||
| The size of the datagram in its compressed form before it is fragmented. | ||||
| </dd> | ||||
| <dt pn="section-2.3-2.7">Datagram_Tag:</dt> | ||||
| <dd pn="section-2.3-2.8"> | ||||
| An identifier of a datagram that is locally unique to the Layer 2 sender | ||||
| . | ||||
| Associated with the link-layer address of the sender, this becomes a glo | ||||
| bally | ||||
| unique identifier for the datagram within the duration of its transmissi | ||||
| on. | ||||
| </dd> | ||||
| <dt pn="section-2.3-2.9">Fragment_Offset:</dt> | ||||
| <dd pn="section-2.3-2.10"> | ||||
| The offset of a fragment of a datagram in its compressed form. | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="overview-of-6lowpan-fragmentation" numbered="true" removeIn | ||||
| RFC="false" toc="include" pn="section-3"> | ||||
| <name slugifiedName="name-overview-of-6lowpan-fragmen">Overview of 6LoWPAN | ||||
| Fragmentation</name> | ||||
| <t indent="0" pn="section-3-1"><xref target="FIGperhop" format="default" s | ||||
| ectionFormat="of" derivedContent="Figure 1"/> illustrates 6LoWPAN fragmentation. | ||||
| We assume node A forwards a packet to node B, possibly as part of a multi-hop ro | ||||
| ute between 6LoWPAN Fragment Forwarding endpoints, which may be neither A nor B, | ||||
| though 6LoWPAN may compress the IP header better when they are both the 6LFF an | ||||
| d the 6LoWPAN compression endpoints.</t> | ||||
| <figure anchor="FIGperhop" align="left" suppress-title="false" pn="figure- | ||||
| 1"> | ||||
| <name slugifiedName="name-fragmentation-at-node-a-and">Fragmentation at | ||||
| Node A, and Reassembly at Node B</name> | ||||
| <artwork align="left" pn="section-3-2.1"> | ||||
| +---+ +---+ | ||||
| ... ---| A |-------------------->| B |--- ... | ||||
| +---+ +---+ | ||||
| # (frag. 5) | ||||
| 123456789 123456789 | ||||
| +---------+ +---------+ | ||||
| | # ###| |### # | | ||||
| +---------+ +---------+ | ||||
| outgoing incoming | ||||
| fragmentation reassembly | ||||
| buffer buffer | ||||
| </artwork> | ||||
| </figure> | ||||
| <t indent="0" pn="section-3-3">Typically, node A starts with an uncompress | ||||
| ed packet and compacts the IPv6 packet using the header compression mechanism de | ||||
| fined in <xref target="RFC6282" format="default" sectionFormat="of" derivedConte | ||||
| nt="RFC6282"/>. | ||||
| If the resulting 6LoWPAN packet does not fit into a single link-layer frame, nod | ||||
| e A's 6LoWPAN sub-layer cuts it into multiple 6LoWPAN fragments, which it transm | ||||
| its as separate link-layer frames to node B. | ||||
| Node B's 6LoWPAN sub-layer reassembles these fragments, inflates the compressed | ||||
| header fields back to the original IPv6 header, and hands over the full IPv6 pac | ||||
| ket to its IPv6 layer.</t> | ||||
| <t indent="0" pn="section-3-4">In <xref target="FIGperhop" format="default | ||||
| " sectionFormat="of" derivedContent="Figure 1"/>, a packet forwarded by node A t | ||||
| o node B is cut into nine fragments, numbered 1 to 9 as follows:</t> | ||||
| <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-3-5 | ||||
| "> | ||||
| <li pn="section-3-5.1">Each fragment is represented by the '#' symbol.</ | ||||
| li> | ||||
| <li pn="section-3-5.2">Node A has sent fragments 1, 2, 3, 5, and 6 to no | ||||
| de B.</li> | ||||
| <li pn="section-3-5.3">Node B has received fragments 1, 2, 3, and 6 from | ||||
| node A.</li> | ||||
| <li pn="section-3-5.4">Fragment 5 is still being transmitted at the link | ||||
| layer from node A to node B.</li> | ||||
| </ul> | ||||
| <t indent="0" pn="section-3-6">The reassembly buffer for 6LoWPAN is indexe | ||||
| d in node B by:</t> | ||||
| <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-3-7 | ||||
| "> | ||||
| <li pn="section-3-7.1">a unique identifier of node A (e.g., node A's lin | ||||
| k-layer address).</li> | ||||
| <li pn="section-3-7.2">the Datagram_Tag chosen by node A for this fragme | ||||
| nted datagram.</li> | ||||
| </ul> | ||||
| <t indent="0" pn="section-3-8">Because it may be hard for node B to correl | ||||
| ate all possible link-layer addresses that node A may use (e.g., short versus lo | ||||
| ng addresses), node A must use the same link-layer address to send all the fragm | ||||
| ents of the same datagram to node B. | ||||
| </t> | ||||
| <t indent="0" pn="section-3-9">Conceptually, the reassembly buffer in node | ||||
| B contains:</t> | ||||
| <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-3-1 | ||||
| 0"> | ||||
| <li pn="section-3-10.1">a Datagram_Tag as received in the incoming fragm | ||||
| ents, associated | ||||
| with the interface and the link-layer address of node A for which the rece | ||||
| ived Datagram_Tag is unique,</li> | ||||
| <li pn="section-3-10.2">the actual packet data from the fragments receiv | ||||
| ed so far, in a form that makes it possible to detect when the whole packet has | ||||
| been received and can be processed or forwarded,</li> | ||||
| <li pn="section-3-10.3">a state indicating the fragments already receive | ||||
| d,</li> | ||||
| <li pn="section-3-10.4">a Datagram_Size, and</li> | ||||
| <li pn="section-3-10.5">a timer that allows discarding a partially reass | ||||
| embled packet after some timeout.</li> | ||||
| </ul> | ||||
| <t indent="0" pn="section-3-11">A fragmentation header is added to each fr | ||||
| agment; it indicates what portion of the packet that fragment corresponds to. | ||||
| <xref target="RFC4944" sectionFormat="of" section="5.3" format="default" derived | ||||
| Link="https://rfc-editor.org/rfc/rfc4944#section-5.3" derivedContent="RFC4944"/> | ||||
| defines the format of the header for the first and subsequent fragments. | ||||
| All fragments are tagged with a 16-bit "Datagram_Tag", used to identify which pa | ||||
| cket each fragment belongs to. | ||||
| Each datagram can be uniquely identified by the sender link-layer addresses of t | ||||
| he frame that carries it and the Datagram_Tag that the sender allocated for this | ||||
| datagram. | ||||
| <xref target="RFC4944" format="default" sectionFormat="of" derivedContent="RFC49 | ||||
| 44"/> also mandates that the first fragment is sent first and with a particular | ||||
| format that is different than that of the next fragments. Each fragment except f | ||||
| or the first one can be identified within its datagram by the datagram-offset.</ | ||||
| t> | ||||
| <t indent="0" pn="section-3-12">Node B's typical behavior, per <xref targe | ||||
| t="RFC4944" format="default" sectionFormat="of" derivedContent="RFC4944"/>, is a | ||||
| s follows. | ||||
| Upon receiving a fragment from node A with a Datagram_Tag previously unseen from | ||||
| node A, node B allocates a buffer large enough to hold the entire packet. | ||||
| The length of the packet is indicated in each fragment (the Datagram_Size field) | ||||
| , so node B can allocate the buffer even if the fragment it receives first is no | ||||
| t the first fragment. | ||||
| As fragments come in, node B fills the buffer. | ||||
| When all fragments have been received, node B inflates the compressed header fie | ||||
| lds into an IPv6 header and hands the resulting IPv6 packet to the IPv6 layer, w | ||||
| hich performs the route lookup. This behavior typically results in per-hop fragm | ||||
| entation and reassembly. | ||||
| That is, the packet is fully reassembled, then (re-)fragmented, at every hop.</t | ||||
| > | ||||
| </section> | ||||
| <section anchor="SEClimits" numbered="true" removeInRFC="false" toc="include | ||||
| " pn="section-4"> | ||||
| <name slugifiedName="name-limitations-of-per-hop-frag">Limitations of Per- | ||||
| Hop Fragmentation and Reassembly</name> | ||||
| <t indent="0" pn="section-4-1">There are at least two limitations to doing | ||||
| per-hop fragmentation and reassembly. | ||||
| See <xref target="ARTICLE" format="default" sectionFormat="of" derivedContent="A | ||||
| RTICLE"/> for detailed simulation results on both limitations.</t> | ||||
| <section anchor="latency" numbered="true" removeInRFC="false" toc="include | ||||
| " pn="section-4.1"> | ||||
| <name slugifiedName="name-latency">Latency</name> | ||||
| <t indent="0" pn="section-4.1-1">When reassembling, a node needs to wait | ||||
| for all the fragments to be received before being able to re-form the IPv6 pack | ||||
| et and possibly forwarding it to the next hop. This repeats at every hop.</t> | ||||
| <t indent="0" pn="section-4.1-2">This may result in increased end-to-end | ||||
| latency compared to a case where each fragment is forwarded without per-hop rea | ||||
| ssembly.</t> | ||||
| </section> | ||||
| <section anchor="memory-management-and-reliability" numbered="true" remove | ||||
| InRFC="false" toc="include" pn="section-4.2"> | ||||
| <name slugifiedName="name-memory-management-and-relia">Memory Management | ||||
| and Reliability</name> | ||||
| <t indent="0" pn="section-4.2-1">Constrained nodes have limited memory. | ||||
| Assuming a reassembly buffer for a 6LoWPAN MTU of 1280 bytes as defined in <xref | ||||
| target="RFC4944" sectionFormat="of" section="4" format="default" derivedLink="h | ||||
| ttps://rfc-editor.org/rfc/rfc4944#section-4" derivedContent="RFC4944"/>, typical | ||||
| nodes only have enough memory for 1-3 reassembly buffers.</t> | ||||
| <t indent="0" pn="section-4.2-2">To illustrate this, we use the topology | ||||
| from <xref target="FIGtopology" format="default" sectionFormat="of" derivedCont | ||||
| ent="Figure 2"/>, where nodes A, B, C, and D all send packets through node E. | ||||
| We further assume that node E's memory can only hold 3 reassembly buffers.</t> | ||||
| <figure anchor="FIGtopology" align="left" suppress-title="false" pn="fig | ||||
| ure-2"> | ||||
| <name slugifiedName="name-illustrating-the-memory-man">Illustrating th | ||||
| e Memory Management Issue</name> | ||||
| <artwork align="left" pn="section-4.2-3.1"> | ||||
| +---+ +---+ | ||||
| ... --->| A |------>| B | | ||||
| +---+ +---+\ | ||||
| \ | ||||
| +---+ +---+ | ||||
| | E |--->| F | ... | ||||
| +---+ +---+ | ||||
| / | ||||
| / | ||||
| +---+ +---+ | ||||
| ... --->| C |------>| D | | ||||
| +---+ +---+ | ||||
| </artwork> | ||||
| </figure> | ||||
| <t indent="0" pn="section-4.2-4">When nodes A, B, and C concurrently sen | ||||
| d fragmented packets, all three reassembly buffers in node E are occupied. | ||||
| If, at that moment, node D also sends a fragmented packet, node E has no option | ||||
| but to drop one of the packets, lowering end-to-end reliability.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="ff" numbered="true" removeInRFC="false" toc="include" pn="s | ||||
| ection-5"> | ||||
| <name slugifiedName="name-forwarding-fragments">Forwarding Fragments</name | ||||
| > | ||||
| <t indent="0" pn="section-5-1"> | ||||
| A 6LoWPAN Fragment Forwarding technique makes the routing decision on the first | ||||
| fragment, which is always the one with the IPv6 address of the destination. Upon | ||||
| receiving a first fragment, a forwarding node (e.g., node B in an A->B->C | ||||
| sequence) that does fragment forwarding <bcp14>MUST</bcp14> attempt to create a | ||||
| state and forward the fragment. This is an atomic operation, and if the first f | ||||
| ragment cannot be forwarded, then the state <bcp14>MUST</bcp14> be removed. | ||||
| </t> | ||||
| <t indent="0" pn="section-5-2"> | ||||
| Since the Datagram_Tag is uniquely associated with the source link-layer address | ||||
| of the fragment, the forwarding node <bcp14>MUST</bcp14> assign a new Datagram_ | ||||
| Tag from its own namespace for the next hop and rewrite the fragment header of e | ||||
| ach fragment with that Datagram_Tag. | ||||
| </t> | ||||
| <t indent="0" pn="section-5-3"> | ||||
| When a forwarding node receives a fragment other than a first fragment, it <bcp1 | ||||
| 4>MUST</bcp14> look up state based on the source link-layer address and the Data | ||||
| gram_Tag in the received fragment. If no such state is found, the fragment <bcp1 | ||||
| 4>MUST</bcp14> be dropped; otherwise, the fragment <bcp14>MUST</bcp14> be forwar | ||||
| ded using the information in the state found. | ||||
| </t> | ||||
| <t indent="0" pn="section-5-4"> | ||||
| Compared to <xref target="overview-of-6lowpan-fragmentation" format="default" se | ||||
| ctionFormat="of" derivedContent="Section 3"/>, the conceptual reassembly buffer | ||||
| in node B now contains the following, assuming that node B is neither the source | ||||
| nor the final destination:</t> | ||||
| <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-5-5 | ||||
| "> | ||||
| <li pn="section-5-5.1">a Datagram_Tag as received in the incoming fragme | ||||
| nts, associated with the interface and the link-layer address of node A for whic | ||||
| h the received Datagram_Tag is unique.</li> | ||||
| <li pn="section-5-5.2">the link-layer address that node B uses as the so | ||||
| urce to forward the fragments.</li> | ||||
| <li pn="section-5-5.3"> the interface and the link-layer address of the | ||||
| next-hop C that is resolved on the first fragment.</li> | ||||
| <li pn="section-5-5.4">a Datagram_Tag that node B uniquely allocated for | ||||
| this datagram and that is used when forwarding the fragments of the datagram.</ | ||||
| li> | ||||
| <li pn="section-5-5.5">a buffer for the remainder of a previous fragment | ||||
| left to be sent.</li> | ||||
| <li pn="section-5-5.6">a timer that allows discarding the stale 6LFF sta | ||||
| te after some timeout. | ||||
| The duration of the timer should be longer than that which covers the reassemb | ||||
| ly at the receiving endpoint. | ||||
| </li> | ||||
| </ul> | ||||
| <t indent="0" pn="section-5-6"> | ||||
| A node that has not received the first fragment cannot forward the next fragmen | ||||
| ts. This means that if node B receives a fragment, node A was in possession of t | ||||
| he first fragment at some point. To keep the operation simple and consistent wit | ||||
| h <xref target="RFC4944" format="default" sectionFormat="of" derivedContent="RFC | ||||
| 4944"/>, the first fragment <bcp14>MUST</bcp14> always be sent first. When that | ||||
| is done, if node B receives a fragment that is not the first and for which it ha | ||||
| s no state, then node B treats it as an error and refrains from creating a state | ||||
| or attempting to forward. | ||||
| This also means that node A should perform all its possible retries on the firs | ||||
| t fragment before it attempts to send the next fragments, and that it should abo | ||||
| rt the datagram and release its state if it fails to send the first fragment. | ||||
| </t> | ||||
| <t indent="0" pn="section-5-7">Fragment forwarding obviates some of the be | ||||
| nefits of the 6LoWPAN header compression <xref target="RFC6282" format="default" | ||||
| sectionFormat="of" derivedContent="RFC6282"/> in intermediate hops. In return, | ||||
| the memory used to store the packet is distributed along the path, which limits | ||||
| the buffer-bloat effect. Multiple fragments may progress simultaneously along th | ||||
| e network as long as they do not interfere. | ||||
| An associated caveat is that on a half-duplex radio, if node A sends the next f | ||||
| ragment at the same time as node B forwards the previous fragment to node C down | ||||
| the path, then node B will miss it. | ||||
| If node C forwards the previous fragment to node D at the same time and on the | ||||
| same frequency as node A sends the next fragment to node B, this may result in a | ||||
| hidden terminal problem. In that case, the transmission from node C interferes | ||||
| at node B with that from node A, unbeknownst to node A. | ||||
| Consecutive fragments of a same datagram <bcp14>MUST</bcp14> be separated with | ||||
| an inter-frame gap that allows one fragment to progress beyond the next hop and | ||||
| beyond the interference domain before the next shows up. This can be achieved by | ||||
| interleaving packets or fragments sent via different next-hop routers. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="virtual-reassembly-buffer-vrb-implementation" numbered="tru | ||||
| e" removeInRFC="false" toc="include" pn="section-6"> | ||||
| <name slugifiedName="name-virtual-reassembly-buffer-v">Virtual Reassembly | ||||
| Buffer (VRB) Implementation</name> | ||||
| <t indent="0" pn="section-6-1"> | ||||
| The VRB <xref target="I-D.ietf-lwig-6lowpan-virtual-reassembly" format="default" | ||||
| sectionFormat="of" derivedContent="LWIG-VRB"/> is a particular incarnation of a | ||||
| 6LFF that can be implemented without a change to <xref target="RFC4944" format= | ||||
| "default" sectionFormat="of" derivedContent="RFC4944"/>. | ||||
| </t> | ||||
| <t indent="0" pn="section-6-2">VRB overcomes the limitations listed in <xr | ||||
| ef target="SEClimits" format="default" sectionFormat="of" derivedContent="Sectio | ||||
| n 4"/>. | ||||
| Nodes do not wait for the last fragment before forwarding, reducing end-to-end l | ||||
| atency. | ||||
| Similarly, the memory footprint of VRB is just the VRB table, reducing the packe | ||||
| t drop probability significantly.</t> | ||||
| <t indent="0" pn="section-6-3">However, there are other caveats:</t> | ||||
| <dl indent="3" newline="false" spacing="normal" pn="section-6-4"> | ||||
| <dt pn="section-6-4.1">Non-zero Packet Drop Probability:</dt> | ||||
| <dd pn="section-6-4.2"> | ||||
| The abstract data in a VRB table entry contains at a minimum the link-layer ad | ||||
| dress of the predecessor and the successor, the Datagram_Tag used by the predece | ||||
| ssor, and the local Datagram_Tag that this node will swap with it. The VRB may n | ||||
| eed to store a few octets from the last fragment that may not have fit within MT | ||||
| U and that will be prepended to the next fragment. | ||||
| This yields a small footprint that is 2 orders of magnitude smaller, compared to | ||||
| needing a 1280-byte reassembly buffer for each packet. | ||||
| Yet, the size of the VRB table necessarily remains finite. | ||||
| In the extreme case where a node is required to concurrently forward more packet | ||||
| s than it has entries in its VRB table, packets are dropped.</dd> | ||||
| <dt pn="section-6-4.3">No Fragment Recovery:</dt> | ||||
| <dd pn="section-6-4.4"> | ||||
| There is no mechanism in VRB for the node that reassembles a packet to request | ||||
| a single missing fragment. | ||||
| Dropping a fragment requires the whole packet to be resent. | ||||
| This causes unnecessary traffic, as fragments are forwarded even when the destin | ||||
| ation node can never construct the original IPv6 packet.</dd> | ||||
| <dt pn="section-6-4.5">No Per-Fragment Routing:</dt> | ||||
| <dd pn="section-6-4.6"> | ||||
| All subsequent fragments follow the same sequence of hops from the source to t | ||||
| he destination node as the first fragment, because the IP header is required in | ||||
| order to route the fragment and is only present in the first fragment. A side ef | ||||
| fect is that the first fragment must always be forwarded first.</dd> | ||||
| </dl> | ||||
| <t indent="0" pn="section-6-5">The severity and occurrence of these caveat | ||||
| s depend on the link layer used. | ||||
| Whether they are acceptable depends entirely on the requirements the application | ||||
| places on the network.</t> | ||||
| <t indent="0" pn="section-6-6">If the caveats are present and not acceptab | ||||
| le for the application, alternative specifications may define new protocols to o | ||||
| vercome them. | ||||
| One example is <xref target="RFC8931" format="default" sectionFormat="of" derive | ||||
| dContent="RFC8931"/>, which specifies a 6LFF technique that allows the end-to-en | ||||
| d fragment recovery between the 6LFF endpoints.</t> | ||||
| </section> | ||||
| <section anchor="security-considerations" numbered="true" removeInRFC="false | ||||
| " toc="include" pn="section-7"> | ||||
| <name slugifiedName="name-security-considerations">Security Considerations | ||||
| </name> | ||||
| <t indent="0" pn="section-7-1"> | ||||
| An attacker can perform a Denial-of-Service (DoS) attack on a node | ||||
| implementing VRB by generating a large number of bogus "fragment 1" | ||||
| fragments without sending subsequent fragments. This causes the VRB | ||||
| table to fill up. Note that the VRB does not need to remember the | ||||
| full datagram as received so far but only possibly a few octets from | ||||
| the last fragment that could not fit in it. It is expected that an | ||||
| implementation protects itself to keep the number of VRBs within | ||||
| capacity, and that old VRBs are protected by a timer of a reasonable | ||||
| duration for the technology and destroyed upon timeout. | ||||
| </t> | ||||
| <t indent="0" pn="section-7-2">Secure joining and the link-layer security | ||||
| that it sets up protects against those attacks from network outsiders.</t> | ||||
| <t indent="0" pn="section-7-3"><xref target="RFC8900" format="default" sec | ||||
| tionFormat="of" derivedContent="RFC8900">"IP Fragmentation Considered Fragile"</ | ||||
| xref> discusses security threats and other caveats that are linked to using IP f | ||||
| ragmentation. The 6LoWPAN fragmentation takes place underneath the IP Layer, but | ||||
| some issues described there may still apply to 6LoWPAN fragments.</t> | ||||
| <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-7-4 | ||||
| "> | ||||
| <li pn="section-7-4.1">Overlapping fragment attacks are possible with 6L | ||||
| oWPAN fragments, but there is no known firewall operation that would work on 6Lo | ||||
| WPAN fragments at the time of this writing, so the exposure is limited. An imple | ||||
| mentation of a firewall <bcp14>SHOULD NOT</bcp14> forward fragments but instead | ||||
| should recompose the IP packet, check it in the uncompressed form, and then forw | ||||
| ard it again as fragments if necessary. Overlapping fragments are acceptable as | ||||
| long as they contain the same payload. The firewall <bcp14>MUST</bcp14> drop the | ||||
| whole packet if overlapping fragments are encountered that result in different | ||||
| data at the same offset. </li> | ||||
| <li pn="section-7-4.2">Resource-exhaustion attacks are certainly possibl | ||||
| e and a sensitive issue in a constrained network. An attacker can perform a DoS | ||||
| attack on a node implementing VRB by generating a large number of bogus first fr | ||||
| agments without sending subsequent fragments. This causes the VRB table to fill | ||||
| up. When hop-by-hop reassembly is used, the same attack can be more damaging if | ||||
| the node allocates a full Datagram_Size for each bogus first fragment. With the | ||||
| VRB, the attack can be performed remotely on all nodes along a path, but each no | ||||
| de suffers a lesser hit. This is because the VRB does not need to remember the f | ||||
| ull datagram as received so far but only possibly a few octets from the last fra | ||||
| gment that could not fit in it. | ||||
| An implementation <bcp14>MUST</bcp14> protect itself to keep the number of VR | ||||
| Bs within capacity and to ensure that old VRBs are protected by a timer of a rea | ||||
| sonable duration for the technology and destroyed upon timeout.</li> | ||||
| <li pn="section-7-4.3">Attacks based on predictable fragment identificat | ||||
| ion values are also possible but can be avoided. The Datagram_Tag <bcp14>SHOULD< | ||||
| /bcp14> be assigned pseudorandomly in order to reduce the risk of such attacks. | ||||
| A larger size of the | ||||
| Datagram_Tag makes the guessing more difficult and reduces the chances of an | ||||
| accidental reuse while the original packet is still in flight, at the expense | ||||
| of more space in each frame. | ||||
| Nonetheless, some level of risk remains because an | ||||
| attacker that is able to authenticate to and send traffic on the | ||||
| network can guess a valid Datagram_Tag value, since there are only | ||||
| a limited number of possible values. | ||||
| </li> | ||||
| <li pn="section-7-4.4">Evasion of Network Intrusion Detection Systems (N | ||||
| IDSs) leverages ambiguity in the reassembly of the fragment. This attack makes l | ||||
| ittle sense in the context of this specification since the fragmentation happens | ||||
| within the Low-Power and Lossy Network (LLN), meaning that the intruder should | ||||
| already be inside to perform the attack. | ||||
| NIDS systems would probably not be installed within the LLN either but | ||||
| rather at a bottleneck at the exterior edge of the network.</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="iana-considerations" numbered="true" removeInRFC="false" to | ||||
| c="include" pn="section-8"> | ||||
| <name slugifiedName="name-iana-considerations">IANA Considerations</name> | ||||
| <t indent="0" pn="section-8-1">This document has no IANA actions.</t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <displayreference target="I-D.ietf-lwig-6lowpan-virtual-reassembly" to="LWIG | ||||
| -VRB"/> | ||||
| <references pn="section-9"> | ||||
| <name slugifiedName="name-references">References</name> | ||||
| <references pn="section-9.1"> | ||||
| <name slugifiedName="name-normative-references">Normative References</na | ||||
| me> | ||||
| <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
| 119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| le> | ||||
| <author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="1997" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">In many standards track documents several words are | ||||
| used to signify the requirements in the specification. These words are often ca | ||||
| pitalized. This document defines these words as they should be interpreted in IE | ||||
| TF documents. This document specifies an Internet Best Current Practices for th | ||||
| e Internet Community, and requests discussion and suggestions for improvements.< | ||||
| /t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4919" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 919" quoteTitle="true" derivedAnchor="RFC4919"> | ||||
| <front> | ||||
| <title>IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs | ||||
| ): Overview, Assumptions, Problem Statement, and Goals</title> | ||||
| <author initials="N." surname="Kushalnagar" fullname="N. Kushalnagar | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Montenegro" fullname="G. Montenegro"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Schumacher" fullname="C. Schumacher"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the assumptions, problem sta | ||||
| tement, and goals for transmitting IP over IEEE 802.15.4 networks. The set of g | ||||
| oals enumerated in this document form an initial set only. This memo provides i | ||||
| nformation for the Internet community.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4919"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4919"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4944" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 944" quoteTitle="true" derivedAnchor="RFC4944"> | ||||
| <front> | ||||
| <title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</tit | ||||
| le> | ||||
| <author initials="G." surname="Montenegro" fullname="G. Montenegro"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="N." surname="Kushalnagar" fullname="N. Kushalnagar | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Hui" fullname="J. Hui"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="Culler" fullname="D. Culler"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the frame format for transmi | ||||
| ssion of IPv6 packets and the method of forming IPv6 link-local addresses and st | ||||
| atelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifi | ||||
| cations include a simple header compression scheme using shared context and prov | ||||
| isions for packet delivery in IEEE 802.15.4 meshes. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4944"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4944"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">RFC 2119 specifies common key words that may be used | ||||
| in protocol specifications. This document aims to reduce the ambiguity by cla | ||||
| rifying that only UPPERCASE usage of the key words have the defined special mea | ||||
| nings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| </references> | ||||
| <references pn="section-9.2"> | ||||
| <name slugifiedName="name-informative-references">Informative References | ||||
| </name> | ||||
| <reference anchor="ARTICLE" target="https://ieeexplore.ieee.org/abstract | ||||
| /document/8771317" quoteTitle="true" derivedAnchor="ARTICLE"> | ||||
| <front> | ||||
| <title>6LoWPAN Fragment Forwarding</title> | ||||
| <author initials="Y." surname="Tanaka" fullname="Yasuyuki Tanaka"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P." surname="Minet" fullname="Pascale Minet"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Watteyne" fullname="Thomas Watteyne"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="March" year="2019"/> | ||||
| </front> | ||||
| <seriesInfo name="IEEE Communications Standards Magazine" value="Vol. | ||||
| 3, Issue 1, pp. 35-39"/> | ||||
| <seriesInfo name="DOI" value="10.1109/MCOMSTD.2019.1800029"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-lwig-6lowpan-virtual-reassembly" quoteTitle= | ||||
| "true" target="https://tools.ietf.org/html/draft-ietf-lwig-6lowpan-virtual-reass | ||||
| embly-02" derivedAnchor="LWIG-VRB"> | ||||
| <front> | ||||
| <title>Virtual reassembly buffers in 6LoWPAN</title> | ||||
| <author fullname="Carsten Bormann"> | ||||
| <organization showOnFrontPage="true">Universitaet Bremen TZI</orga | ||||
| nization> | ||||
| </author> | ||||
| <author fullname="Thomas Watteyne"> | ||||
| <organization showOnFrontPage="true">Analog Devices</organization> | ||||
| </author> | ||||
| <date month="March" day="9" year="2020"/> | ||||
| <abstract> | ||||
| <t indent="0"> When employing adaptation layer fragmentation in | ||||
| 6LoWPAN, it may be | ||||
| beneficial for a forwarder not to have to reassemble each packet in | ||||
| its entirety before forwarding it. | ||||
| This has been always possible with the original fragmentation design | ||||
| of RFC 4944. Apart from a brief mention of the way to do this in | ||||
| Section 2.5.2 of the 6LoWPAN book, this has not been extensively | ||||
| described in the literature. The present document attempts to fill | ||||
| that gap. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-lwig-6lowpan-virtu | ||||
| al-reassembly-02"/> | ||||
| <format type="TXT" target="https://www.ietf.org/internet-drafts/draft- | ||||
| ietf-lwig-6lowpan-virtual-reassembly-02.txt"/> | ||||
| <refcontent>Work in Progress</refcontent> | ||||
| </reference> | ||||
| <reference anchor="RFC3031" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 031" quoteTitle="true" derivedAnchor="RFC3031"> | ||||
| <front> | ||||
| <title>Multiprotocol Label Switching Architecture</title> | ||||
| <author initials="E." surname="Rosen" fullname="E. Rosen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Viswanathan" fullname="A. Viswanathan | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Callon" fullname="R. Callon"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2001" month="January"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies the architecture for Multipr | ||||
| otocol Label Switching (MPLS). [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3031"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3031"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4963" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 963" quoteTitle="true" derivedAnchor="RFC4963"> | ||||
| <front> | ||||
| <title>IPv4 Reassembly Errors at High Data Rates</title> | ||||
| <author initials="J." surname="Heffner" fullname="J. Heffner"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Mathis" fullname="M. Mathis"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="B." surname="Chandler" fullname="B. Chandler"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="July"/> | ||||
| <abstract> | ||||
| <t indent="0">IPv4 fragmentation is not sufficiently robust for us | ||||
| e under some conditions in today's Internet. At high data rates, the 16-bit IP | ||||
| identification field is not large enough to prevent frequent incorrectly assembl | ||||
| ed IP fragments, and the TCP and UDP checksums are insufficient to prevent the r | ||||
| esulting corrupted datagrams from being delivered to higher protocol layers. Th | ||||
| is note describes some easily reproduced experiments demonstrating the problem, | ||||
| and discusses some of the operational implications of these observations. This | ||||
| memo provides information for the Internet community.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4963"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4963"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6282" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 282" quoteTitle="true" derivedAnchor="RFC6282"> | ||||
| <front> | ||||
| <title>Compression Format for IPv6 Datagrams over IEEE 802.15.4-Base | ||||
| d Networks</title> | ||||
| <author initials="J." surname="Hui" fullname="J. Hui" role="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P." surname="Thubert" fullname="P. Thubert"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document updates RFC 4944, "Transmission of IPv | ||||
| 6 Packets over IEEE 802.15.4 Networks". This document specifies an IPv6 header | ||||
| compression format for IPv6 packet delivery in Low Power Wireless Personal Area | ||||
| Networks (6LoWPANs). The compression format relies on shared context to allow c | ||||
| ompression of arbitrary prefixes. How the information is maintained in that sha | ||||
| red context is out of scope. This document specifies compression of multicast ad | ||||
| dresses and a framework for compressing next headers. UDP header compression is | ||||
| specified within this framework. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6282"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6282"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6550" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 550" quoteTitle="true" derivedAnchor="RFC6550"> | ||||
| <front> | ||||
| <title>RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks</ | ||||
| title> | ||||
| <author initials="T." surname="Winter" fullname="T. Winter" role="ed | ||||
| itor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P." surname="Thubert" fullname="P. Thubert" role=" | ||||
| editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Brandt" fullname="A. Brandt"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Hui" fullname="J. Hui"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Kelsey" fullname="R. Kelsey"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P." surname="Levis" fullname="P. Levis"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="K." surname="Pister" fullname="K. Pister"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Struik" fullname="R. Struik"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="JP." surname="Vasseur" fullname="JP. Vasseur"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Alexander" fullname="R. Alexander"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2012" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">Low-Power and Lossy Networks (LLNs) are a class of n | ||||
| etwork in which both the routers and their interconnect are constrained. LLN ro | ||||
| uters typically operate with constraints on processing power, memory, and energy | ||||
| (battery power). Their interconnects are characterized by high loss rates, low | ||||
| data rates, and instability. LLNs are comprised of anything from a few dozen t | ||||
| o thousands of routers. Supported traffic flows include point-to-point (between | ||||
| devices inside the LLN), point-to-multipoint (from a central control point to a | ||||
| subset of devices inside the LLN), and multipoint-to-point (from devices inside | ||||
| the LLN towards a central control point). This document specifies the IPv6 Rou | ||||
| ting Protocol for Low-Power and Lossy Networks (RPL), which provides a mechanism | ||||
| whereby multipoint-to-point traffic from devices inside the LLN towards a centr | ||||
| al control point as well as point-to-multipoint traffic from the central control | ||||
| point to the devices inside the LLN are supported. Support for point-to-point | ||||
| traffic is also available. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6550"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6550"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8138" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 138" quoteTitle="true" derivedAnchor="RFC8138"> | ||||
| <front> | ||||
| <title>IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) | ||||
| Routing Header</title> | ||||
| <author initials="P." surname="Thubert" fullname="P. Thubert" role=" | ||||
| editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Bormann" fullname="C. Bormann"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="L." surname="Toutain" fullname="L. Toutain"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Cragie" fullname="R. Cragie"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="April"/> | ||||
| <abstract> | ||||
| <t indent="0">This specification introduces a new IPv6 over Low-Po | ||||
| wer Wireless Personal Area Network (6LoWPAN) dispatch type for use in 6LoWPAN ro | ||||
| ute-over topologies, which initially covers the needs of Routing Protocol for Lo | ||||
| w-Power and Lossy Networks (RPL) data packet compression (RFC 6550). Using this | ||||
| dispatch type, this specification defines a method to compress the RPL Option ( | ||||
| RFC 6553) information and Routing Header type 3 (RFC 6554), an efficient IP-in-I | ||||
| P technique, and is extensible for more applications.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8138"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8138"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8201" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 201" quoteTitle="true" derivedAnchor="RFC8201"> | ||||
| <front> | ||||
| <title>Path MTU Discovery for IP version 6</title> | ||||
| <author initials="J." surname="McCann" fullname="J. McCann"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Deering" fullname="S. Deering"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Mogul" fullname="J. Mogul"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Hinden" fullname="R. Hinden" role="ed | ||||
| itor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="July"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes Path MTU Discovery (PMTUD) f | ||||
| or IP version 6. It is largely derived from RFC 1191, which describes Path MTU D | ||||
| iscovery for IP version 4. It obsoletes RFC 1981.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="87"/> | ||||
| <seriesInfo name="RFC" value="8201"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8201"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8900" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 900" quoteTitle="true" derivedAnchor="RFC8900"> | ||||
| <front> | ||||
| <title>IP Fragmentation Considered Fragile</title> | ||||
| <author initials="R." surname="Bonica" fullname="R. Bonica"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="F." surname="Baker" fullname="F. Baker"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="G." surname="Huston" fullname="G. Huston"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Hinden" fullname="R. Hinden"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="O." surname="Troan" fullname="O. Troan"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="F." surname="Gont" fullname="F. Gont"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2020" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes IP fragmentation and explain | ||||
| s how it introduces fragility to Internet communication.</t> | ||||
| <t indent="0">This document also proposes alternatives to IP fragm | ||||
| entation and provides recommendations for developers and network operators.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="230"/> | ||||
| <seriesInfo name="RFC" value="8900"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8900"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8931" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 931" quoteTitle="true" derivedAnchor="RFC8931"> | ||||
| <front> | ||||
| <title>IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) | ||||
| Selective Fragment Recovery</title> | ||||
| <author initials="P" surname="Thubert" fullname="Pascal Thubert" rol | ||||
| e="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="November" year="2020"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8931"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8931"/> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="acknowledgments" numbered="false" toc="include" removeInRFC | ||||
| ="false" pn="section-appendix.a"> | ||||
| <name slugifiedName="name-acknowledgments">Acknowledgments</name> | ||||
| <t indent="0" pn="section-appendix.a-1">The authors would like to thank <c | ||||
| ontact fullname="Carles Gomez Montenegro"/>, <contact fullname="Yasuyuki Tanaka" | ||||
| />, <contact fullname="Ines Robles"/>, and <contact fullname="Dave Thaler"/> for | ||||
| their in-depth review of this document and suggestions for improvement. Many th | ||||
| anks to <contact fullname="Georgios Papadopoulos"/> and <contact fullname="Domin | ||||
| ique Barthel"/> for their contributions during the WG activities. And many thank | ||||
| s as well to <contact fullname="Roman Danyliw"/>, <contact fullname="Barry Leiba | ||||
| "/>, <contact fullname="Murray Kucherawy"/>, <contact fullname="Derrell Piper"/> | ||||
| , <contact fullname="Sarah Banks"/>, <contact fullname="Joerg Ott"/>, <contact f | ||||
| ullname="Francesca Palombini"/>, <contact fullname="Mirja Kühlewind"/>, <contact | ||||
| fullname="Éric Vyncke"/>, and especially <contact fullname="Benjamin Kaduk"/> f | ||||
| or their constructive reviews through the IETF last call and IESG process.</t> | ||||
| </section> | ||||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| ="include" pn="section-appendix.b"> | ||||
| <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
| <author initials="T." surname="Watteyne" fullname="Thomas Watteyne" role=" | ||||
| editor"> | ||||
| <organization showOnFrontPage="true">Analog Devices</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>32990 Alvarado-Niles Road, Suite 910</street> | ||||
| <city>Union City</city> | ||||
| <region>CA</region> | ||||
| <code>94587</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>thomas.watteyne@analog.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="P." surname="Thubert" fullname="Pascal Thubert" role="ed | ||||
| itor"> | ||||
| <organization abbrev="Cisco Systems" showOnFrontPage="true">Cisco System | ||||
| s, Inc</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <extaddr>Building D</extaddr> | ||||
| <street>45 Allee des Ormes - BP1200</street> | ||||
| <city>Mougins - Sophia Antipolis</city> | ||||
| <code>06254</code> | ||||
| <country>France</country> | ||||
| </postal> | ||||
| <phone>+33 497 23 26 34</phone> | ||||
| <email>pthubert@cisco.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="C." surname="Bormann" fullname="Carsten Bormann"> | ||||
| <organization showOnFrontPage="true">Universität Bremen TZI</organizatio | ||||
| n> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Postfach 330440</street> | ||||
| <city>Bremen</city> | ||||
| <code>D-28359</code> | ||||
| <country>Germany</country> | ||||
| </postal> | ||||
| <phone>+49-421-218-63921</phone> | ||||
| <email>cabo@tzi.org</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 1 change blocks. | ||||
| lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||