rfc9080xml2.original.xml | rfc9080.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc toc="yes"?> | ||||
<?rfc tocdepth="2"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes" ?> | ||||
<?rfc compact="no" ?> | ||||
<rfc category="std" docName="draft-ietf-homenet-babel-profile-07" | ||||
ipr="trust200902"> | ||||
<front> | ||||
<title abbrev="Homenet Babel profile">Homenet profile of the Babel routing proto | ||||
col</title> | ||||
<author fullname="Juliusz Chroboczek" initials="J." surname="Chroboczek"> | ||||
<organization>IRIF, University of Paris-Diderot</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Case 7014</street> | ||||
<city>75205 Paris Cedex 13</city> | ||||
<region></region> | ||||
<code></code> | ||||
<country>France</country> | ||||
</postal> | ||||
<email>jch@irif.fr</email> | ||||
</address> | ||||
</author> | ||||
<date day="18" month="July" year="2018"/> | ||||
<abstract> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<t>This document defines the exact subset of the Babel routing protocol | ||||
and its extensions that is required by an implementation of the Homenet | ||||
protocol suite, as well as the interactions between the Home Networking | ||||
Control Protocol (HNCP) and Babel.</t> | ||||
</abstract> | ||||
</front> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
docName="draft-ietf-homenet-babel-profile-07" | ||||
number="9080" | ||||
ipr="trust200902" | ||||
obsoletes="" | ||||
updates="" | ||||
submissionType="IETF" | ||||
category="std" | ||||
consensus="true" | ||||
xml:lang="en" | ||||
tocInclude="true" | ||||
tocDepth="2" | ||||
symRefs="true" | ||||
sortRefs="true" | ||||
version="3"> | ||||
<middle> | <!-- xml2rfc v2v3 conversion 3.2.1 --> | |||
<section title="Introduction"> | <front> | |||
<title abbrev="Homenet Babel Profile">Homenet Profile of the Babel Routing P | ||||
rotocol</title> | ||||
<seriesInfo name="RFC" value="9080"/> | ||||
<author fullname="Juliusz Chroboczek" initials="J." surname="Chroboczek"> | ||||
<organization>IRIF, University of Paris-Diderot</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Case 7014</street> | ||||
<city>Paris CEDEX 13</city> | ||||
<code>75205</code> | ||||
<country>France</country> | ||||
</postal> | ||||
<email>jch@irif.fr</email> | ||||
</address> | ||||
</author> | ||||
<date month="August" year="2021"/> | ||||
<t>The core of the Homenet protocol suite consists of the Home Networking | <abstract> | |||
Control Protocol (HNCP) <xref target="RFC7788"/>, a protocol used for | <t>This document defines the exact subset of the Babel routing protocol | |||
and its extensions that is required by an implementation of the Homenet | ||||
protocol suite, as well as the interactions between the Home Networking | ||||
Control Protocol (HNCP) and Babel.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>The core of the Homenet protocol suite consists of the Home Networking | ||||
Control Protocol (HNCP) <xref target="RFC7788" format="default"/>, a protocol us | ||||
ed for | ||||
flooding configuration information and assigning prefixes to links, | flooding configuration information and assigning prefixes to links, | |||
combined with the Babel routing protocol <xref target="RFC6126bis"/>. | combined with the Babel routing protocol <xref target="RFC8966" format="default" | |||
Babel is an extensible, flexible and modular protocol: minimal | />. | |||
Babel is an extensible, flexible, and modular protocol: minimal | ||||
implementations of Babel have been demonstrated that consist of a few | implementations of Babel have been demonstrated that consist of a few | |||
hundred lines of code, while the "large" implementation includes support | hundred lines of code, while the "large" implementation includes support | |||
for a number of extensions and consists of over ten thousand lines of | for a number of extensions and consists of over ten thousand lines of | |||
C code.</t> | C code.</t> | |||
<t>This document consists of two parts. The first specifies the exact | ||||
<t>This document consists of two parts. The first specifies the exact | ||||
subset of the Babel protocol and its extensions that is required by an | subset of the Babel protocol and its extensions that is required by an | |||
implementation of the Homenet protocol suite. The second specifies how | implementation of the Homenet protocol suite. The second specifies how | |||
HNCP interacts with Babel.</t> | HNCP interacts with Babel.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Requirement Language"> | <name>Requirements Language</name> | |||
<t> | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
"OPTIONAL" in this document are to be interpreted as described in BCP 14 | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, | RECOMMENDED</bcp14>", | |||
they appear in all capitals, as shown here.</t> | "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
</section> | be interpreted as | |||
described in BCP 14 <xref target="RFC2119" format="default"/> <xref tar | ||||
<section title="Background"> | get="RFC8174" format="default"/> | |||
when, and only when, they appear in all capitals, as shown here. | ||||
<t>The Babel routing protocol and its extensions are defined in a number | </t> | |||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Background</name> | ||||
<t>The Babel routing protocol and its extensions are defined in a number | ||||
of documents: | of documents: | |||
<list style="symbols"> | </t> | |||
<t>RFC 6126bis <xref target="RFC6126bis"/> defines the Babel routing | <ul spacing="normal"> | |||
<li>RFC 8966 <xref target="RFC8966" format="default"/> defines th | ||||
e Babel routing | ||||
protocol. It allows Babel's control data to be carried either over | protocol. It allows Babel's control data to be carried either over | |||
link-local IPv6 or over IPv4, and in either case allows announcing both | link-local IPv6 or over IPv4 and in either case allows announcing both | |||
IPv4 and IPv6 routes. It leaves link cost estimation, metric computation | IPv4 and IPv6 routes. It leaves link cost estimation, metric computation, | |||
and route selection to the implementation. Distinct implementations of | and route selection to the implementation. Distinct implementations of | |||
RFC 6126bis Babel will interoperate, in the sense that they will | Babel <xref target="RFC8966" format="default"/> will interoperate, in the sense that they will | |||
maintain a set of loop-free forwarding paths. However, if they implement | maintain a set of loop-free forwarding paths. However, if they implement | |||
conflicting options, they might not be able to exchange a full set of | conflicting options, they might not be able to exchange a full set of | |||
routes; in the worst case, an implementation that only implements the IPv6 | routes. In the worst case, an implementation that only implements the IPv6 | |||
subset of the protocol and an implementation that only implements the IPv4 | subset of the protocol and an implementation that only implements the IPv4 | |||
subset of the protocol will not exchange any routes. In addition, if | subset of the protocol will not exchange any routes. In addition, if | |||
implementations use conflicting route selection policies, persistent | implementations use conflicting route selection policies, persistent | |||
oscillations might occur.</t> | oscillations might occur.</li> | |||
<t>The informative Appendix A of RFC 6126bis suggests a simple and | <li>The informative <xref target="RFC8966" section="A" sectionFormat=" | |||
easy to implement algorithm for cost and metric computation that has been | of" format="default"/> suggests a simple and | |||
found to work satisfactorily in a wide range of topologies.</t> | easy-to-implement algorithm for cost and metric computation that has been | |||
<t>While RFC 6126bis does not provide an algorithm for route selection, | found to work satisfactorily in a wide range of topologies.</li> | |||
its Section 3.6 suggests selecting the route with smallest metric | <li>While RFC 8966 does not provide an algorithm for route select | |||
ion, | ||||
its Section <xref target="RFC8966" section="3.6" sectionFormat="bare" format="de | ||||
fault"/> | ||||
suggests selecting the route with the smallest metric | ||||
with some hysteresis applied. An algorithm that has been found to work | with some hysteresis applied. An algorithm that has been found to work | |||
well in practice is described in Section III.E of | well in practice is described in Section III.E of | |||
<xref target="DELAY-BASED"/>.</t> | <xref target="DELAY-BASED" format="default"/>.</li> | |||
<t>Five RFCs and Internet-Drafts define optional extensions to Babel: | <li>Four documents define optional extensions to Babel: | |||
HMAC-based authentication <xref target="RFC7298"/>, source-specific | authentication based on Hashed Message Authentication Code (HMAC) <xref target=" | |||
routing <xref target="BABEL-SS"/>, delay-based routing | RFC8967" format="default"/>, | |||
<xref target="BABEL-RTT"/> and ToS-specific routing | source-specific routing <xref target="RFC9079" format="default"/>, | |||
<xref target="ToS-SPECIFIC"/>. All of these extensions interoperate with | delay-based routing <xref target="I-D.ietf-babel-rtt-extension" format="default" | |||
the core protocol as well as with each other.</t> | />, and | |||
</list> | ToS-specific (Type of Service) routing <xref target="I-D.chouasne-babel-tos-spec | |||
</t> | ific" format="default"/>. | |||
All of these extensions interoperate with | ||||
</section> | the core protocol as well as with each other.</li> | |||
</ul> | ||||
</section> | </section> | |||
</section> | ||||
<section title="The Homenet profile of Babel"> | <section numbered="true" toc="default"> | |||
<name>The Homenet Profile of Babel</name> | ||||
<section title="Requirements"> | <section numbered="true" toc="default"> | |||
<name>Requirements</name> | ||||
<t>REQ1: a Homenet implementation of Babel MUST encapsulate Babel control | <ol type="REQ%d:" group="req" indent="8"> | |||
<li anchor="req1"><t>A Homenet implementation of Babel <bcp14>MUST</bcp1 | ||||
4> encapsulate Babel control | ||||
traffic in IPv6 packets sent to the IANA-assigned port 6696 and either the | traffic in IPv6 packets sent to the IANA-assigned port 6696 and either the | |||
IANA-assigned multicast group ff02::1:6 or to a link-local unicast | IANA-assigned multicast group ff02::1:6 or to a link-local unicast | |||
address.</t> | address.</t> | |||
<t indent="3">Rationale: Since Babel is able to carry both | ||||
<t><list style="empty"><t>Rationale: since Babel is able to carry both | ||||
IPv4 and IPv6 routes over either IPv4 or IPv6, choosing the protocol used | IPv4 and IPv6 routes over either IPv4 or IPv6, choosing the protocol used | |||
for carrying control traffic is a matter of preference. Since IPv6 has | for carrying control traffic is a matter of preference. Since IPv6 has | |||
some features that make implementations somewhat simpler and more reliable | some features that make implementations somewhat simpler and more reliable | |||
(notably properly scoped and reasonably stable link-local addresses), we | (notably properly scoped and reasonably stable link-local addresses), we | |||
require carrying control data over IPv6.</t></list></t> | require carrying control data over IPv6.</t></li> | |||
<li anchor="req2"><t>A Homenet implementation of Babel <bcp14>MUST</bcp1 | ||||
<t>REQ2: a Homenet implementation of Babel MUST implement the IPv6 subset | 4> implement the IPv6 subset | |||
of the protocol defined in the body of RFC 6126bis.</t> | of the protocol defined in the body of RFC 8966.</t> | |||
<t indent="3">Rationale: Support for IPv6 routing is an | ||||
<t><list style="empty"><t>Rationale: support for IPv6 routing is an | essential component of the Homenet architecture.</t></li> | |||
essential component of the Homenet architecture.</t></list></t> | <li anchor="req3"><t>A Homenet implementation of Babel <bcp14>SHOULD</bc | |||
p14> implement the IPv4 | ||||
<t>REQ3: a Homenet implementation of Babel SHOULD implement the IPv4 | subset of the protocol defined in the body of RFC 8966. Use of other | |||
subset of the protocol defined in the body of RFC 6126bis. Use of other | ||||
techniques for acquiring IPv4 connectivity (such as multiple layers of | techniques for acquiring IPv4 connectivity (such as multiple layers of | |||
NAT) is strongly discouraged.</t> | NAT) is strongly discouraged.</t> | |||
<t indent="3">Rationale: Support for IPv4 will likely remain | ||||
<t><list style="empty"><t>Rationale: support for IPv4 will likely remain | ||||
necessary for years to come, and even in pure IPv6 deployments, including | necessary for years to come, and even in pure IPv6 deployments, including | |||
code for supporting IPv4 has very little cost. Since HNCP makes it easy | code for supporting IPv4 has very little cost. Since HNCP makes it easy | |||
to assign distinct IPv4 prefixes to the links in a network, it is not | to assign distinct IPv4 prefixes to the links in a network, it is not | |||
necessary to resort to multiple layers of NAT, with all of its | necessary to resort to multiple layers of NAT, with all of its | |||
problems.</t></list></t> | problems.</t></li> | |||
<li anchor="req4"><t>A Homenet implementation of Babel <bcp14>MUST</bcp1 | ||||
<t>REQ4: a Homenet implementation of Babel MUST implement source-specific | 4> implement source-specific | |||
routing for IPv6, as defined in draft-ietf-babel-source-specific | routing for IPv6, as defined in RFC 9079 | |||
<xref target="BABEL-SS"/>.</t> | <xref target="RFC9079" format="default"/>.</t> | |||
<t indent="3">Rationale: Source-specific routing is an | ||||
<t><list style="empty"><t>Rationale: source-specific routing is an | ||||
essential component of the Homenet architecture. Source-specific routing | essential component of the Homenet architecture. Source-specific routing | |||
for IPv4 is not required, since HNCP arranges things so that a single | for IPv4 is not required, since HNCP arranges things so that a single | |||
non-specific IPv4 default route is announced (Section 6.5 of <xref | nonspecific IPv4 default route is announced (<xref target="RFC7788" section="6.5 | |||
target="RFC7788"/>).</t></list></t> | " sectionFormat="of" format="default"/>).</t></li> | |||
<li anchor="req5"><t>A Homenet implementation of Babel must use metrics | ||||
<t>REQ5: a Homenet implementation of Babel must use metrics that are | that are | |||
of a similar magnitude to the values suggested in Appendix A of | of a similar magnitude to the values suggested in | |||
RFC 6126bis. In particular, it SHOULD assign costs that are no less | <xref target="RFC8966" section="A" sectionFormat="of" format="default"/>. | |||
than 256 to wireless links, and SHOULD assign costs between 32 and 196 to | In particular, it <bcp14>SHOULD</bcp14> assign costs that are no less | |||
than 256 to wireless links and <bcp14>SHOULD</bcp14> assign costs between 32 and | ||||
196 to | ||||
lossless wired links.</t> | lossless wired links.</t> | |||
<t indent="3">Rationale: If two implementations of Babel | ||||
<t><list style="empty"><t>Rationale: if two implementations of Babel | ||||
choose very different values for link costs, combining routers from | choose very different values for link costs, combining routers from | |||
different vendors will cause sub-optimal routing.</t></list></t> | different vendors will cause suboptimal routing.</t></li> | |||
<li anchor="req6"><t>A Homenet implementation of Babel <bcp14>SHOULD</bc | ||||
<t>REQ6: a Homenet implementation of Babel SHOULD distinguish between | p14> distinguish between | |||
wired and wireless links; if it is unable to determine whether a link is | wired and wireless links; if it is unable to determine whether a link is | |||
wired or wireless, it SHOULD make the worst-case hypothesis that the link | wired or wireless, it <bcp14>SHOULD</bcp14> make the worst-case hypothesis that | |||
is wireless. It SHOULD dynamically probe the quality of wireless links | the link | |||
and derive a suitable metric from its quality estimation. Appendix A | is wireless. It <bcp14>SHOULD</bcp14> dynamically probe the quality of wireless | |||
of RFC 6126bis gives an example of a suitable algorithm.</t> | links | |||
and derive a suitable metric from its quality estimation. | ||||
<t><list style="empty"><t>Rationale: support for wireless transit links is | <xref target="RFC8966" section="A" sectionFormat="of" format="default"/> | |||
gives an example of a suitable algorithm.</t> | ||||
<t indent="3">Rationale: Support for wireless transit links is | ||||
a distinguishing feature of Homenet, and one that is requested by our | a distinguishing feature of Homenet, and one that is requested by our | |||
users. In the absence of dynamically computed metrics, the routing | users. In the absence of dynamically computed metrics, the routing | |||
protocol attempts to minimise the number of links crossed by a route, and | protocol attempts to minimise the number of links crossed by a route and | |||
therefore prefers long, lossy links to shorter, lossless ones. In | therefore prefers long, lossy links to shorter, lossless ones. In | |||
wireless networks, "hop-count routing is worst-path routing".</t> | wireless networks, "hop-count routing is worst-path routing".</t> | |||
<t indent="3">While it would be desirable to perform link-quality prob | ||||
<t>While it would be desirable to perform link-quality probing on some | ing on some | |||
wired link technologies, notably power-line networks, these kinds of links | wired link technologies, notably power-line networks, these kinds of links | |||
tend to be difficult or impossible to detect automatically, and we are not | tend to be difficult or impossible to detect automatically, and we are not | |||
aware of any published link-quality algorithms for them. Hence, we do not | aware of any published link-quality algorithms for them. Hence, we do not | |||
require link-quality estimation for wired links of any kind.</t></list></t> | require link-quality estimation for wired links of any kind.</t></li> | |||
</ol> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Optional features"> | <name>Optional Features</name> | |||
<ol type="OPT%d:" group="opt" indent="8"> | ||||
<t>OPT1: a Homenet implementation of Babel MAY perform route selection by | <li anchor="opt1"><t>A Homenet implementation of Babel <bcp14>MAY</bcp14 | |||
applying hysteresis to route metrics, as suggested in Section 3.6 of | > perform route selection by | |||
RFC 6126bis and described in detail in Section III.E of <xref | applying hysteresis to route metrics, as suggested in | |||
target="BABEL-RTT"/>. However, hysteresis is not required, and the | <xref target="RFC8966" section="3.6" sectionFormat="of" format="default"/> | |||
and described in detail in Section III.E of <xref target="DELAY-BASED" form | ||||
at="default"/>. | ||||
However, hysteresis is not required, and the | ||||
implementation may simply pick the route with the smallest metric.</t> | implementation may simply pick the route with the smallest metric.</t> | |||
<t indent="3">Rationale: Hysteresis is only useful in | ||||
<t><list style="empty"><t>Rationale: hysteresis is only useful in | congested and highly dynamic networks. In a typical home network, which is stab | |||
congested and highly dynamic networks. In a typical home network, stable | le | |||
and uncongested, the feedback loop that hysteresis compensates for does | and uncongested, the feedback loop that hysteresis compensates for does | |||
not occur.</t></list></t> | not occur.</t></li> | |||
<li anchor="opt2"><t>A Homenet implementation of Babel may include suppo | ||||
<t>OPT2: a Homenet implementation of Babel may include support for other | rt for other | |||
extensions to the protocol, as long as they are known to interoperate with | extensions to the protocol, as long as they are known to interoperate with | |||
both the core protocol and source-specific routing.</t> | both the core protocol and source-specific routing.</t> | |||
<t indent="3">Rationale: A number of extensions to the Babel | ||||
<t><list style="empty"><t>Rationale: a number of extensions to the Babel | ||||
routing protocol have been defined over the years; however, they are | routing protocol have been defined over the years; however, they are | |||
useful in fairly specific situations, such as routing over global-scale | useful in fairly specific situations, such as routing over global-scale | |||
overlay networks <xref target="BABEL-RTT"/> or multi-hop wireless networks | overlay networks <xref target="I-D.ietf-babel-rtt-extension" format="default"/> | |||
with multiple radio frequencies <xref target="BABEL-Z"/>. Hence, with the | or multi-hop wireless networks | |||
with multiple radio frequencies <xref target="I-D.chroboczek-babel-diversity-rou | ||||
ting" format="default"/>. Hence, with the | ||||
exception of source-specific routing, no extensions are required for | exception of source-specific routing, no extensions are required for | |||
Homenet.</t></list></t> | Homenet.</t></li> | |||
</ol> | ||||
</section> | </section> | |||
</section> | ||||
</section> | <section numbered="true" toc="default"> | |||
<name>Interactions between HNCP and Babel</name> | ||||
<section title="Interactions between HNCP and Babel"> | <t>The Homenet architecture cleanly separates configuration, which is done | |||
<t>The Homenet architecture cleanly separates configuration, which is done | ||||
by HNCP, from routing, which is done by Babel. While the coupling between | by HNCP, from routing, which is done by Babel. While the coupling between | |||
the two protocols is deliberately kept to a minimum, some interactions are | the two protocols is deliberately kept to a minimum, some interactions are | |||
unavoidable.</t> | unavoidable.</t> | |||
<t>All the interactions between HNCP and Babel consist of HNCP causing | ||||
<t>All the interactions between HNCP and Babel consist of HNCP causing | ||||
Babel to perform an announcement on its behalf (under no circumstances | Babel to perform an announcement on its behalf (under no circumstances | |||
does Babel cause HNCP to perform an action). How this is realised is an | does Babel cause HNCP to perform an action). How this is realised is an | |||
implementation detail that is outside the scope of this document; while it | implementation detail that is outside the scope of this document; while it | |||
could conceivably be done using a private communication channel between | could conceivably be done using a private communication channel between | |||
HNCP and Babel, in existing implementations HNCP installs a route in the | HNCP and Babel, in existing implementations, HNCP installs a route in the | |||
operating system's kernel which is later picked up by Babel using the | operating system's kernel that is later picked up by Babel using the | |||
existing redistribution mechanisms.</t> | existing redistribution mechanisms.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Requirements"> | <name>Requirements</name> | |||
<ol type="REQ%d:" group="req" indent="8"> | ||||
<t>REQ7: if an HNCP node receives a DHCPv6 prefix delegation for prefix | <li anchor="req7"><t>If an HNCP node receives a DHCPv6 prefix delegation | |||
for prefix | ||||
P and publishes an External-Connection TLV containing a Delegated-Prefix | P and publishes an External-Connection TLV containing a Delegated-Prefix | |||
TLV with prefix P and no Prefix-Policy TLV, then it MUST announce | TLV with prefix P and no Prefix-Policy TLV, then it <bcp14>MUST</bcp14> announce | |||
a source-specific default route with source prefix P over Babel.</t> | a source-specific default route with source prefix P over Babel.</t> | |||
<t indent="3">Rationale: Source-specific routes are the main | ||||
<t><list style="empty"><t>Rationale: source-specific routes are the main | ||||
tool that Homenet uses to enable optimal routing in the presence of | tool that Homenet uses to enable optimal routing in the presence of | |||
multiple IPv6 prefixes. External connections with non-trivial prefix | multiple IPv6 prefixes. External connections with nontrivial prefix | |||
policies are explicitly excluded from this requirement, since their exact | policies are explicitly excluded from this requirement, since their exact | |||
behaviour is application-specific.</t></list></t> | behaviour is application specific.</t></li> | |||
<li anchor="req8"><t>If an HNCP node receives a DHCPv4 lease with an IPv | ||||
<t>REQ8: if an HNCP node receives a DHCPv4 lease with an IPv4 address and | 4 address and | |||
wins the election for NAT gateway, then it MUST act as a NAT gateway and | wins the election for NAT gateway, then it <bcp14>MUST</bcp14> act as a NAT gate | |||
MUST announce a (non-specific) IPv4 default route over Babel.</t> | way and | |||
<bcp14>MUST</bcp14> announce a (nonspecific) IPv4 default route over Babel.</t> | ||||
<t><list style="empty"><t>Rationale: the Homenet stack does not use | <t indent="3">Rationale: The Homenet stack does not use | |||
source-specific routing for IPv4; instead, HNCP elects a single NAT | source-specific routing for IPv4; instead, HNCP elects a single NAT | |||
gateway and publishes a single default route towards that gateway | gateway and publishes a single default route towards that gateway | |||
(<xref target="RFC7788"/> Section 6.5).</t></list></t> | (<xref target="RFC7788" section="6.5" sectionFormat="comma" format="default"/>). | |||
</t></li> | ||||
<t>REQ9: if an HNCP node assigns a prefix P to an attached link and | <li anchor="req9"><t>If an HNCP node assigns a prefix P to an attached l | |||
announces P in an Assigned-Prefix TLV, then it MUST announce a route towards | ink and | |||
announces P in an Assigned-Prefix TLV, then it <bcp14>MUST</bcp14> announce a ro | ||||
ute towards | ||||
P over Babel.</t> | P over Babel.</t> | |||
<t indent="3">Rationale: Prefixes assigned to links must be | ||||
<t><list style="empty"><t>Rationale: prefixes assigned to links must be | routable within the Homenet.</t></li> | |||
routable within the Homenet.</t></list></t> | </ol> | |||
</section> | ||||
</section> | <section numbered="true" toc="default"> | |||
<name>Optional Features</name> | ||||
<section title="Optional features"> | <ol type="OPT%d:" group="opt" indent="8"> | |||
<li anchor="opt3"><t>An HNCP node that receives a DHCPv6 prefix delegati | ||||
<t>OPT3: an HNCP node that receives a DHCPv6 prefix delegation MAY | on <bcp14>MAY</bcp14> | |||
announce a non-specific IPv6 default route over Babel in addition to the | announce a nonspecific IPv6 default route over Babel in addition to the | |||
source-specific default route mandated by requirement REQ7.</t> | source-specific default route mandated by requirement <xref target="req7" format | |||
="none">REQ7</xref>.</t> | ||||
<t><list style="empty"><t>Rationale: since the source-specific default | <t indent="3">Rationale: Since the source-specific default | |||
route is more specific than the non-specific default route, the former | route is more specific than the nonspecific default route, the former | |||
will override the latter if all nodes implement source-specific routing. | will override the latter if all nodes implement source-specific routing. | |||
Announcing an additional non-specific route is allowed, since doing that | Announcing an additional nonspecific route is allowed, since doing that | |||
causes no harm and might simplify operations in some circumstances, | causes no harm and might simplify operations in some circumstances, | |||
e.g. when interoperating with a routing protocol that does not | e.g., when interoperating with a routing protocol that does not | |||
support source-specific routing.</t></list></t> | support source-specific routing.</t></li> | |||
<li anchor="opt4"><t>An HNCP node that receives a DHCPv4 lease with an I | ||||
<t>OPT4: an HNCP node that receives a DHCPv4 lease with an IPv4 address and | Pv4 address and | |||
wins the election for NAT gateway SHOULD NOT announce a source-specific | wins the election for NAT gateway <bcp14>SHOULD NOT</bcp14> announce a source-sp | |||
ecific | ||||
IPv4 default route.</t> | IPv4 default route.</t> | |||
<t indent="3">Rationale: Homenet does not require support for IPv4 | ||||
<t><list style="empty"><t>Homenet does not require support for IPv4 | ||||
source-specific routing. Announcing IPv4 source-specific routes will not | source-specific routing. Announcing IPv4 source-specific routes will not | |||
cause routing pathologies (blackholes or routing loops), but it might | cause routing pathologies (blackholes or routing loops), but it might | |||
cause packets sourced in different parts of the Homenet to follow | cause packets sourced in different parts of the Homenet to follow | |||
different paths, with all the confusion that this entails.</t></list></t> | different paths, with all the confusion that this entails.</t></li> | |||
</ol> | ||||
</section> | </section> | |||
</section> | ||||
</section> | <section numbered="true" toc="default"> | |||
<name>Security Considerations</name> | ||||
<section title="Security Considerations"> | <t>Both HNCP and Babel carry their control data in IPv6 packets with | |||
<t>Both HNCP and Babel carry their control data in IPv6 packets with | ||||
a link-local source address, and implementations are required to drop | a link-local source address, and implementations are required to drop | |||
packets sent from a global address. Hence, they are only susceptible to | packets sent from a global address. Hence, they are only susceptible to | |||
attacks from a directly connected link on which the HNCP and Babel | attacks from a directly connected link on which the HNCP and Babel | |||
implementations are listening.</t> | implementations are listening.</t> | |||
<t>The security of a Homenet network relies on having a set of "Internal", | ||||
<t>The security of a Homenet network relies on having a set of "Internal", | "Ad Hoc", and "Hybrid" interfaces (<xref target="RFC7788" section="5.1" sectionF | |||
"Ad Hoc" and "Hybrid" interfaces (Section 5.1 of <xref target="RFC7788"/>) | ormat="of" format="default"/>) | |||
that are assumed to be connected to links that are secured at a lower | that are assumed to be connected to links that are secured at a lower | |||
layer. HNCP and Babel packets are only accepted when they originate on | layer. HNCP and Babel packets are only accepted when they originate on | |||
these trusted links. "External" and "Guest" interfaces are connected to | these trusted links. "External" and "Guest" interfaces are connected to | |||
links that are not trusted, and any HNCP or Babel packets that are | links that are not trusted, and any HNCP or Babel packets that are | |||
received on such interfaces are ignored. ("Leaf" interfaces are a special | received on such interfaces are ignored. ("Leaf" interfaces are a special | |||
case, since they are connected to trusted links but HNCP and Babel traffic | case since they are connected to trusted links, but HNCP and Babel traffic | |||
received on such interfaces is ignored.) This implies that the security | received on such interfaces is ignored.) This implies that the security | |||
of a Homenet network depends on the reliability of the border discovery | of a Homenet network depends on the reliability of the border discovery | |||
procedure described in Section 5.3 of <xref target="RFC7788"/>.</t> | procedure described in <xref target="RFC7788" section="5.3" sectionFormat="of" f | |||
ormat="default"/>.</t> | ||||
<t>If untrusted links are used for transit, which is NOT RECOMMENDED, | <t>If untrusted links are used for transit, which is <bcp14>NOT RECOMMENDE | |||
then any HNCP and Babel traffic that is carried over such links MUST be | D</bcp14>, | |||
then any HNCP and Babel traffic that is carried over such links <bcp14>MUST</bcp | ||||
14> be | ||||
secured using an upper-layer security protocol. While both HNCP and Babel | secured using an upper-layer security protocol. While both HNCP and Babel | |||
support cryptographic authentication, at the time of writing no protocol | support cryptographic authentication, at the time of writing, no protocol | |||
for autonomous configuration of HNCP and Babel security has been defined.</t> | for autonomous configuration of HNCP and Babel security has been defined.</t> | |||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>This document has no IANA actions.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
</section> | <displayreference target="I-D.ietf-babel-rtt-extension" to="BABEL-RTT"/> | |||
<displayreference target="I-D.chouasne-babel-tos-specific" to="ToS-SPECIFIC"/> | ||||
<section title="IANA Considerations"> | <displayreference target="I-D.chroboczek-babel-diversity-routing" to="BABEL-Z"/> | |||
<t>This document requires no actions from IANA.</t> | ||||
</section> | ||||
<section title="Acknowledgments"> | ||||
<t>A number of people have helped with defining the requirements listed in | ||||
this document. I am especially indebted to Barbara Stark and Markus | ||||
Stenberg.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references title="Normative References"> | ||||
<reference anchor="RFC2119"><front> | ||||
<title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
<author initials="S." surname="Bradner" fullname="S. Bradner"/> | ||||
<date year="1997" month="March"/> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC8174"><front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"/> | ||||
<date year="2017" month="May"/> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
<reference anchor="RFC6126bis"><front> | ||||
<title>The Babel Routing Protocol</title> | ||||
<author fullname="Juliusz Chroboczek" initials="J." surname="Chroboczek"/> | ||||
<author fullname="David Schinazi" initials="D." surname="Schinazi"/> | ||||
<date month="October" year="2017"/> | ||||
</front> | ||||
<seriesInfo name="Internet Draft" value="draft-ietf-babel-rfc6126bis-04"/> | ||||
</reference> | ||||
<reference anchor="RFC7788"><front> | ||||
<title>Home Networking Control Protocol</title> | ||||
<author initials="M." surname="Stenberg" fullname="M. Stenberg"/> | ||||
<author initials="S." surname="Barth" fullname="S. Barth"/> | ||||
<author initials="P." surname="Pfister" fullname="P. Pfister"/> | ||||
<date year="2016" month="April"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7788"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7788"/> | ||||
</reference> | ||||
<reference anchor="BABEL-SS"> | ||||
<front> | ||||
<title>Source-Specific Routing in Babel</title> | ||||
<author initials='M' surname='Boutier' fullname='Matthieu Boutier'></author> | ||||
<author initials='J' surname='Chroboczek' fullname='Juliusz Chroboczek'></author | ||||
> | ||||
<date day="4" month="August" year="2018"/> | ||||
</front> | ||||
<seriesInfo name='Internet-Draft' value='draft-ietf-babel-source-specific-03'/> | ||||
</reference> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<reference anchor='RFC7298'><front> | ||||
<title>Babel Hashed Message Authentication Code (HMAC) Cryptographic Authenticat | ||||
ion</title> | ||||
<author initials='D.' surname='Ovsienko' fullname='D. Ovsienko'></author> | ||||
<date year='2014' month='July' /> | ||||
</front> | ||||
<seriesInfo name='RFC' value='7298' /> | ||||
</reference> | ||||
<reference anchor="BABEL-RTT"> | <references> | |||
<front> | <name>References</name> | |||
<title>Delay-based Metric Extension for the Babel Routing Protocol</title> | <references> | |||
<author initials='B' surname='Jonglez' fullname='Baptiste Jonglez'></author> | <name>Normative References</name> | |||
<author initials='J' surname='Chroboczek' fullname='Juliusz Chroboczek'></author | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
> | FC.2119.xml"/> | |||
<date month='May' day='27' year='2015' /> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
</front> | FC.8174.xml"/> | |||
<seriesInfo name='Internet-Draft' value='draft-jonglez-babel-rtt-extension-01' / | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
> | FC.7788.xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
FC.8966.xml"/> | ||||
<reference anchor="BABEL-Z"><front> | <reference anchor='RFC9079'> | |||
<title>Diversity Routing for the Babel Routing Protocol</title> | <front> | |||
<author initials='J' surname='Chroboczek' fullname='Juliusz Chroboczek'></author | <title>Source-Specific Routing in the Babel Routing Protocol</title> | |||
> | <author initials='M' surname='Boutier' fullname='Matthieu Boutier'> | |||
<date month='February' day='15' year='2016' /> | <organization /> | |||
</front> | </author> | |||
<seriesInfo name='Internet-Draft' value='draft-chroboczek-babel-diversity-routin | <author initials='J' surname='Chroboczek' fullname='Juliusz Chroboczek'> | |||
g-01'/> | <organization /> | |||
</author> | ||||
<date month='August' year='2021' /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9079"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9079"/> | ||||
</reference> | </reference> | |||
<reference anchor="DELAY-BASED"><front> | </references> | |||
<title>A delay-based routing metric</title> | <references> | |||
<author fullname="Baptiste Jonglez" initials="B." surname="Jonglez"/> | <name>Informative References</name> | |||
<author fullname="Juliusz Chroboczek" initials="J." surname="Chroboczek"/> | ||||
<date month="March" year="2014"/> | ||||
</front> | ||||
<annotation>Available online from http://arxiv.org/abs/1403.3488</annotation> | ||||
</reference> | ||||
<reference anchor="ToS-SPECIFIC"><front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<title>https://tools.ietf.org/id/draft-chouasne-babel-tos-specific-00.xml</title | FC.8967.xml"/> | |||
> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
<author fullname="Gwendoline Chouasne" initials="G." surname="Chouasne"/> | .ietf-babel-rtt-extension.xml"/> | |||
<date day="3" month="July" year="2017"/> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
</front> | .chroboczek-babel-diversity-routing.xml"/> | |||
<seriesInfo name='Internet-Draft' value='draft-chouasne-babel-tos-specific-00'/> | ||||
</reference> | ||||
</references> | <reference anchor="DELAY-BASED" target="http://arxiv.org/abs/1403.3488"> | |||
<front> | ||||
<title>A delay-based routing metric</title> | ||||
<author fullname="Baptiste Jonglez" initials="B." surname="Jonglez"/ | ||||
> | ||||
<author fullname="Matthieu Boutier" initials="M." surname="Boutier"/ | ||||
> | ||||
<author fullname="Juliusz Chroboczek" initials="J." surname="Chroboc | ||||
zek"/> | ||||
<date month="March" year="2014"/> | ||||
</front> | ||||
</reference> | ||||
</back> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
.chouasne-babel-tos-specific.xml"/> | ||||
</references> | ||||
</references> | ||||
<section numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>A number of people have helped with defining the requirements listed in | ||||
this document. I am especially indebted to <contact fullname="Barbara Stark"/> | ||||
and | ||||
<contact fullname="Markus Stenberg"/>.</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 57 change blocks. | ||||
344 lines changed or deleted | 313 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/ |