| rfc9080.original | rfc9080.txt | |||
|---|---|---|---|---|
| Network Working Group J. Chroboczek | Internet Engineering Task Force (IETF) J. Chroboczek | |||
| Internet-Draft IRIF, University of Paris-Diderot | Request for Comments: 9080 IRIF, University of Paris-Diderot | |||
| Intended status: Standards Track July 18, 2018 | Category: Standards Track August 2021 | |||
| Expires: January 19, 2019 | ISSN: 2070-1721 | |||
| Homenet profile of the Babel routing protocol | Homenet Profile of the Babel Routing Protocol | |||
| draft-ietf-homenet-babel-profile-07 | ||||
| Abstract | Abstract | |||
| This document defines the exact subset of the Babel routing protocol | This document defines the exact subset of the Babel routing protocol | |||
| and its extensions that is required by an implementation of the | and its extensions that is required by an implementation of the | |||
| Homenet protocol suite, as well as the interactions between the Home | Homenet protocol suite, as well as the interactions between the Home | |||
| Networking Control Protocol (HNCP) and Babel. | Networking Control Protocol (HNCP) and Babel. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on January 19, 2019. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9080. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 1.1. Requirement Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language | |||
| 1.2. Background . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.2. Background | |||
| 2. The Homenet profile of Babel . . . . . . . . . . . . . . . . 3 | 2. The Homenet Profile of Babel | |||
| 2.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Requirements | |||
| 2.2. Optional features . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Optional Features | |||
| 3. Interactions between HNCP and Babel . . . . . . . . . . . . . 5 | 3. Interactions between HNCP and Babel | |||
| 3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Requirements | |||
| 3.2. Optional features . . . . . . . . . . . . . . . . . . . . 6 | 3.2. Optional Features | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 4. Security Considerations | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 5. IANA Considerations | |||
| 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8 | 6. References | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6.1. Normative References | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 6.2. Informative References | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 8 | Acknowledgments | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address | |||
| 1. Introduction | 1. Introduction | |||
| The core of the Homenet protocol suite consists of the Home | The core of the Homenet protocol suite consists of the Home | |||
| Networking Control Protocol (HNCP) [RFC7788], a protocol used for | Networking Control Protocol (HNCP) [RFC7788], a protocol used for | |||
| flooding configuration information and assigning prefixes to links, | flooding configuration information and assigning prefixes to links, | |||
| combined with the Babel routing protocol [RFC6126bis]. Babel is an | combined with the Babel routing protocol [RFC8966]. Babel is an | |||
| extensible, flexible and modular protocol: minimal implementations of | extensible, flexible, and modular protocol: minimal implementations | |||
| Babel have been demonstrated that consist of a few hundred lines of | of Babel have been demonstrated that consist of a few hundred lines | |||
| code, while the "large" implementation includes support for a number | of code, while the "large" implementation includes support for a | |||
| of extensions and consists of over ten thousand lines of C code. | number of extensions and consists of over ten thousand lines of C | |||
| code. | ||||
| This document consists of two parts. The first specifies the exact | This document consists of two parts. The first specifies the exact | |||
| subset of the Babel protocol and its extensions that is required by | subset of the Babel protocol and its extensions that is required by | |||
| an implementation of the Homenet protocol suite. The second | an implementation of the Homenet protocol suite. The second | |||
| specifies how HNCP interacts with Babel. | specifies how HNCP interacts with Babel. | |||
| 1.1. Requirement Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 1.2. Background | 1.2. Background | |||
| The Babel routing protocol and its extensions are defined in a number | The Babel routing protocol and its extensions are defined in a number | |||
| of documents: | of documents: | |||
| o RFC 6126bis [RFC6126bis] defines the Babel routing protocol. It | * RFC 8966 [RFC8966] defines the Babel routing protocol. It allows | |||
| allows Babel's control data to be carried either over link-local | Babel's control data to be carried either over link-local IPv6 or | |||
| IPv6 or over IPv4, and in either case allows announcing both IPv4 | over IPv4 and in either case allows announcing both IPv4 and IPv6 | |||
| and IPv6 routes. It leaves link cost estimation, metric | routes. It leaves link cost estimation, metric computation, and | |||
| computation and route selection to the implementation. Distinct | route selection to the implementation. Distinct implementations | |||
| implementations of RFC 6126bis Babel will interoperate, in the | of Babel [RFC8966] will interoperate, in the sense that they will | |||
| sense that they will maintain a set of loop-free forwarding paths. | maintain a set of loop-free forwarding paths. However, if they | |||
| However, if they implement conflicting options, they might not be | implement conflicting options, they might not be able to exchange | |||
| able to exchange a full set of routes; in the worst case, an | a full set of routes. In the worst case, an implementation that | |||
| implementation that only implements the IPv6 subset of the | only implements the IPv6 subset of the protocol and an | |||
| protocol and an implementation that only implements the IPv4 | implementation that only implements the IPv4 subset of the | |||
| subset of the protocol will not exchange any routes. In addition, | protocol will not exchange any routes. In addition, if | |||
| if implementations use conflicting route selection policies, | implementations use conflicting route selection policies, | |||
| persistent oscillations might occur. | persistent oscillations might occur. | |||
| o The informative Appendix A of RFC 6126bis suggests a simple and | * The informative Appendix A of [RFC8966] suggests a simple and | |||
| easy to implement algorithm for cost and metric computation that | easy-to-implement algorithm for cost and metric computation that | |||
| has been found to work satisfactorily in a wide range of | has been found to work satisfactorily in a wide range of | |||
| topologies. | topologies. | |||
| o While RFC 6126bis does not provide an algorithm for route | * While RFC 8966 does not provide an algorithm for route selection, | |||
| selection, its Section 3.6 suggests selecting the route with | its Section 3.6 suggests selecting the route with the smallest | |||
| smallest metric with some hysteresis applied. An algorithm that | metric with some hysteresis applied. An algorithm that has been | |||
| has been found to work well in practice is described in | found to work well in practice is described in Section III.E of | |||
| Section III.E of [DELAY-BASED]. | [DELAY-BASED]. | |||
| o Five RFCs and Internet-Drafts define optional extensions to Babel: | * Four documents define optional extensions to Babel: authentication | |||
| HMAC-based authentication [RFC7298], source-specific routing | based on Hashed Message Authentication Code (HMAC) [RFC8967], | |||
| [BABEL-SS], delay-based routing [BABEL-RTT] and ToS-specific | source-specific routing [RFC9079], delay-based routing | |||
| routing [ToS-SPECIFIC]. All of these extensions interoperate with | [BABEL-RTT], and ToS-specific (Type of Service) routing | |||
| the core protocol as well as with each other. | [ToS-SPECIFIC]. All of these extensions interoperate with the | |||
| core protocol as well as with each other. | ||||
| 2. The Homenet profile of Babel | 2. The Homenet Profile of Babel | |||
| 2.1. Requirements | 2.1. Requirements | |||
| REQ1: a Homenet implementation of Babel MUST encapsulate Babel | REQ1: A Homenet implementation of Babel MUST encapsulate Babel | |||
| control traffic in IPv6 packets sent to the IANA-assigned port 6696 | control traffic in IPv6 packets sent to the IANA-assigned | |||
| and either the IANA-assigned multicast group ff02::1:6 or to a link- | port 6696 and either the IANA-assigned multicast group | |||
| local unicast address. | ff02::1:6 or to a link-local unicast address. | |||
| Rationale: since Babel is able to carry both IPv4 and IPv6 routes | Rationale: Since Babel is able to carry both IPv4 and IPv6 | |||
| over either IPv4 or IPv6, choosing the protocol used for carrying | routes over either IPv4 or IPv6, choosing the protocol | |||
| control traffic is a matter of preference. Since IPv6 has some | used for carrying control traffic is a matter of | |||
| features that make implementations somewhat simpler and more | preference. Since IPv6 has some features that make | |||
| reliable (notably properly scoped and reasonably stable link-local | implementations somewhat simpler and more reliable | |||
| addresses), we require carrying control data over IPv6. | (notably properly scoped and reasonably stable link-local | |||
| addresses), we require carrying control data over IPv6. | ||||
| REQ2: a Homenet implementation of Babel MUST implement the IPv6 | REQ2: A Homenet implementation of Babel MUST implement the IPv6 | |||
| subset of the protocol defined in the body of RFC 6126bis. | subset of the protocol defined in the body of RFC 8966. | |||
| Rationale: support for IPv6 routing is an essential component of | Rationale: Support for IPv6 routing is an essential | |||
| the Homenet architecture. | component of the Homenet architecture. | |||
| REQ3: a Homenet implementation of Babel SHOULD implement the IPv4 | REQ3: A Homenet implementation of Babel SHOULD implement the IPv4 | |||
| subset of the protocol defined in the body of RFC 6126bis. Use of | subset of the protocol defined in the body of RFC 8966. Use | |||
| other techniques for acquiring IPv4 connectivity (such as multiple | of other techniques for acquiring IPv4 connectivity (such as | |||
| layers of NAT) is strongly discouraged. | multiple layers of NAT) is strongly discouraged. | |||
| Rationale: support for IPv4 will likely remain necessary for years | Rationale: Support for IPv4 will likely remain necessary | |||
| to come, and even in pure IPv6 deployments, including code for | for years to come, and even in pure IPv6 deployments, | |||
| supporting IPv4 has very little cost. Since HNCP makes it easy to | including code for supporting IPv4 has very little cost. | |||
| assign distinct IPv4 prefixes to the links in a network, it is not | Since HNCP makes it easy to assign distinct IPv4 prefixes | |||
| necessary to resort to multiple layers of NAT, with all of its | to the links in a network, it is not necessary to resort | |||
| problems. | to multiple layers of NAT, with all of its problems. | |||
| REQ4: a Homenet implementation of Babel MUST implement source- | REQ4: A Homenet implementation of Babel MUST implement source- | |||
| specific routing for IPv6, as defined in draft-ietf-babel-source- | specific routing for IPv6, as defined in RFC 9079 [RFC9079]. | |||
| specific [BABEL-SS]. | ||||
| Rationale: source-specific routing is an essential component of | Rationale: Source-specific routing is an essential | |||
| the Homenet architecture. Source-specific routing for IPv4 is not | component of the Homenet architecture. Source-specific | |||
| required, since HNCP arranges things so that a single non-specific | routing for IPv4 is not required, since HNCP arranges | |||
| IPv4 default route is announced (Section 6.5 of [RFC7788]). | things so that a single nonspecific IPv4 default route is | |||
| announced (Section 6.5 of [RFC7788]). | ||||
| REQ5: a Homenet implementation of Babel must use metrics that are of | REQ5: A Homenet implementation of Babel must use metrics that are | |||
| a similar magnitude to the values suggested in Appendix A of | of a similar magnitude to the values suggested in Appendix A | |||
| RFC 6126bis. In particular, it SHOULD assign costs that are no less | of [RFC8966]. In particular, it SHOULD assign costs that are | |||
| than 256 to wireless links, and SHOULD assign costs between 32 and | no less than 256 to wireless links and SHOULD assign costs | |||
| 196 to lossless wired links. | between 32 and 196 to lossless wired links. | |||
| Rationale: if two implementations of Babel choose very different | Rationale: If two implementations of Babel choose very | |||
| values for link costs, combining routers from different vendors | different values for link costs, combining routers from | |||
| will cause sub-optimal routing. | different vendors will cause suboptimal routing. | |||
| REQ6: a Homenet implementation of Babel SHOULD distinguish between | REQ6: A Homenet implementation of Babel SHOULD distinguish between | |||
| wired and wireless links; if it is unable to determine whether a link | wired and wireless links; if it is unable to determine | |||
| is wired or wireless, it SHOULD make the worst-case hypothesis that | whether a link is wired or wireless, it SHOULD make the | |||
| the link is wireless. It SHOULD dynamically probe the quality of | worst-case hypothesis that the link is wireless. It SHOULD | |||
| wireless links and derive a suitable metric from its quality | dynamically probe the quality of wireless links and derive a | |||
| estimation. Appendix A of RFC 6126bis gives an example of a suitable | suitable metric from its quality estimation. Appendix A of | |||
| algorithm. | [RFC8966] gives an example of a suitable algorithm. | |||
| Rationale: support for wireless transit links is a distinguishing | Rationale: Support for wireless transit links is a | |||
| feature of Homenet, and one that is requested by our users. In | distinguishing feature of Homenet, and one that is | |||
| the absence of dynamically computed metrics, the routing protocol | requested by our users. In the absence of dynamically | |||
| attempts to minimise the number of links crossed by a route, and | computed metrics, the routing protocol attempts to | |||
| therefore prefers long, lossy links to shorter, lossless ones. In | minimise the number of links crossed by a route and | |||
| wireless networks, "hop-count routing is worst-path routing". | therefore prefers long, lossy links to shorter, lossless | |||
| ones. In wireless networks, "hop-count routing is worst- | ||||
| path routing". | ||||
| While it would be desirable to perform link-quality probing on | While it would be desirable to perform link-quality | |||
| some wired link technologies, notably power-line networks, these | probing on some wired link technologies, notably power- | |||
| kinds of links tend to be difficult or impossible to detect | line networks, these kinds of links tend to be difficult | |||
| automatically, and we are not aware of any published link-quality | or impossible to detect automatically, and we are not | |||
| algorithms for them. Hence, we do not require link-quality | aware of any published link-quality algorithms for them. | |||
| estimation for wired links of any kind. | Hence, we do not require link-quality estimation for wired | |||
| links of any kind. | ||||
| 2.2. Optional features | 2.2. Optional Features | |||
| OPT1: a Homenet implementation of Babel MAY perform route selection | OPT1: A Homenet implementation of Babel MAY perform route selection | |||
| by applying hysteresis to route metrics, as suggested in Section 3.6 | by applying hysteresis to route metrics, as suggested in | |||
| of RFC 6126bis and described in detail in Section III.E of | Section 3.6 of [RFC8966] and described in detail in | |||
| [BABEL-RTT]. However, hysteresis is not required, and the | Section III.E of [DELAY-BASED]. However, hysteresis is not | |||
| implementation may simply pick the route with the smallest metric. | required, and the implementation may simply pick the route | |||
| with the smallest metric. | ||||
| Rationale: hysteresis is only useful in congested and highly | Rationale: Hysteresis is only useful in congested and | |||
| dynamic networks. In a typical home network, stable and | highly dynamic networks. In a typical home network, which | |||
| uncongested, the feedback loop that hysteresis compensates for | is stable and uncongested, the feedback loop that | |||
| does not occur. | hysteresis compensates for does not occur. | |||
| OPT2: a Homenet implementation of Babel may include support for other | OPT2: A Homenet implementation of Babel may include support for | |||
| extensions to the protocol, as long as they are known to interoperate | other extensions to the protocol, as long as they are known | |||
| with both the core protocol and source-specific routing. | to interoperate with both the core protocol and source- | |||
| specific routing. | ||||
| Rationale: a number of extensions to the Babel routing protocol | Rationale: A number of extensions to the Babel routing | |||
| have been defined over the years; however, they are useful in | protocol have been defined over the years; however, they | |||
| fairly specific situations, such as routing over global-scale | are useful in fairly specific situations, such as routing | |||
| overlay networks [BABEL-RTT] or multi-hop wireless networks with | over global-scale overlay networks [BABEL-RTT] or multi- | |||
| multiple radio frequencies [BABEL-Z]. Hence, with the exception | hop wireless networks with multiple radio frequencies | |||
| of source-specific routing, no extensions are required for | [BABEL-Z]. Hence, with the exception of source-specific | |||
| Homenet. | routing, no extensions are required for Homenet. | |||
| 3. Interactions between HNCP and Babel | 3. Interactions between HNCP and Babel | |||
| The Homenet architecture cleanly separates configuration, which is | The Homenet architecture cleanly separates configuration, which is | |||
| done by HNCP, from routing, which is done by Babel. While the | done by HNCP, from routing, which is done by Babel. While the | |||
| coupling between the two protocols is deliberately kept to a minimum, | coupling between the two protocols is deliberately kept to a minimum, | |||
| some interactions are unavoidable. | some interactions are unavoidable. | |||
| All the interactions between HNCP and Babel consist of HNCP causing | All the interactions between HNCP and Babel consist of HNCP causing | |||
| Babel to perform an announcement on its behalf (under no | Babel to perform an announcement on its behalf (under no | |||
| circumstances does Babel cause HNCP to perform an action). How this | circumstances does Babel cause HNCP to perform an action). How this | |||
| is realised is an implementation detail that is outside the scope of | is realised is an implementation detail that is outside the scope of | |||
| this document; while it could conceivably be done using a private | this document; while it could conceivably be done using a private | |||
| communication channel between HNCP and Babel, in existing | communication channel between HNCP and Babel, in existing | |||
| implementations HNCP installs a route in the operating system's | implementations, HNCP installs a route in the operating system's | |||
| kernel which is later picked up by Babel using the existing | kernel that is later picked up by Babel using the existing | |||
| redistribution mechanisms. | redistribution mechanisms. | |||
| 3.1. Requirements | 3.1. Requirements | |||
| REQ7: if an HNCP node receives a DHCPv6 prefix delegation for prefix | REQ7: If an HNCP node receives a DHCPv6 prefix delegation for | |||
| P and publishes an External-Connection TLV containing a Delegated- | prefix P and publishes an External-Connection TLV containing | |||
| Prefix TLV with prefix P and no Prefix-Policy TLV, then it MUST | a Delegated-Prefix TLV with prefix P and no Prefix-Policy | |||
| announce a source-specific default route with source prefix P over | TLV, then it MUST announce a source-specific default route | |||
| Babel. | with source prefix P over Babel. | |||
| Rationale: source-specific routes are the main tool that Homenet | Rationale: Source-specific routes are the main tool that | |||
| uses to enable optimal routing in the presence of multiple IPv6 | Homenet uses to enable optimal routing in the presence of | |||
| prefixes. External connections with non-trivial prefix policies | multiple IPv6 prefixes. External connections with | |||
| are explicitly excluded from this requirement, since their exact | nontrivial prefix policies are explicitly excluded from | |||
| behaviour is application-specific. | this requirement, since their exact behaviour is | |||
| application specific. | ||||
| REQ8: if an HNCP node receives a DHCPv4 lease with an IPv4 address | REQ8: If an HNCP node receives a DHCPv4 lease with an IPv4 address | |||
| and wins the election for NAT gateway, then it MUST act as a NAT | and wins the election for NAT gateway, then it MUST act as a | |||
| gateway and MUST announce a (non-specific) IPv4 default route over | NAT gateway and MUST announce a (nonspecific) IPv4 default | |||
| Babel. | route over Babel. | |||
| Rationale: the Homenet stack does not use source-specific routing | Rationale: The Homenet stack does not use source-specific | |||
| for IPv4; instead, HNCP elects a single NAT gateway and publishes | routing for IPv4; instead, HNCP elects a single NAT | |||
| a single default route towards that gateway ([RFC7788] | gateway and publishes a single default route towards that | |||
| Section 6.5). | gateway ([RFC7788], Section 6.5). | |||
| REQ9: if an HNCP node assigns a prefix P to an attached link and | REQ9: If an HNCP node assigns a prefix P to an attached link and | |||
| announces P in an Assigned-Prefix TLV, then it MUST announce a route | announces P in an Assigned-Prefix TLV, then it MUST announce | |||
| towards P over Babel. | a route towards P over Babel. | |||
| Rationale: prefixes assigned to links must be routable within the | Rationale: Prefixes assigned to links must be routable | |||
| Homenet. | within the Homenet. | |||
| 3.2. Optional features | 3.2. Optional Features | |||
| OPT3: an HNCP node that receives a DHCPv6 prefix delegation MAY | OPT3: An HNCP node that receives a DHCPv6 prefix delegation MAY | |||
| announce a non-specific IPv6 default route over Babel in addition to | announce a nonspecific IPv6 default route over Babel in | |||
| the source-specific default route mandated by requirement REQ7. | addition to the source-specific default route mandated by | |||
| requirement REQ7. | ||||
| Rationale: since the source-specific default route is more | Rationale: Since the source-specific default route is more | |||
| specific than the non-specific default route, the former will | specific than the nonspecific default route, the former | |||
| override the latter if all nodes implement source-specific | will override the latter if all nodes implement source- | |||
| routing. Announcing an additional non-specific route is allowed, | specific routing. Announcing an additional nonspecific | |||
| since doing that causes no harm and might simplify operations in | route is allowed, since doing that causes no harm and | |||
| some circumstances, e.g. when interoperating with a routing | might simplify operations in some circumstances, e.g., | |||
| protocol that does not support source-specific routing. | when interoperating with a routing protocol that does not | |||
| support source-specific routing. | ||||
| OPT4: an HNCP node that receives a DHCPv4 lease with an IPv4 address | OPT4: An HNCP node that receives a DHCPv4 lease with an IPv4 | |||
| and wins the election for NAT gateway SHOULD NOT announce a source- | address and wins the election for NAT gateway SHOULD NOT | |||
| specific IPv4 default route. | announce a source-specific IPv4 default route. | |||
| Homenet does not require support for IPv4 source-specific routing. | Rationale: Homenet does not require support for IPv4 | |||
| Announcing IPv4 source-specific routes will not cause routing | source-specific routing. Announcing IPv4 source-specific | |||
| pathologies (blackholes or routing loops), but it might cause | routes will not cause routing pathologies (blackholes or | |||
| packets sourced in different parts of the Homenet to follow | routing loops), but it might cause packets sourced in | |||
| different paths, with all the confusion that this entails. | different parts of the Homenet to follow different paths, | |||
| with all the confusion that this entails. | ||||
| 4. Security Considerations | 4. Security Considerations | |||
| Both HNCP and Babel carry their control data in IPv6 packets with a | Both HNCP and Babel carry their control data in IPv6 packets with a | |||
| link-local source address, and implementations are required to drop | link-local source address, and implementations are required to drop | |||
| packets sent from a global address. Hence, they are only susceptible | packets sent from a global address. Hence, they are only susceptible | |||
| to attacks from a directly connected link on which the HNCP and Babel | to attacks from a directly connected link on which the HNCP and Babel | |||
| implementations are listening. | implementations are listening. | |||
| The security of a Homenet network relies on having a set of | The security of a Homenet network relies on having a set of | |||
| "Internal", "Ad Hoc" and "Hybrid" interfaces (Section 5.1 of | "Internal", "Ad Hoc", and "Hybrid" interfaces (Section 5.1 of | |||
| [RFC7788]) that are assumed to be connected to links that are secured | [RFC7788]) that are assumed to be connected to links that are secured | |||
| at a lower layer. HNCP and Babel packets are only accepted when they | at a lower layer. HNCP and Babel packets are only accepted when they | |||
| originate on these trusted links. "External" and "Guest" interfaces | originate on these trusted links. "External" and "Guest" interfaces | |||
| are connected to links that are not trusted, and any HNCP or Babel | are connected to links that are not trusted, and any HNCP or Babel | |||
| packets that are received on such interfaces are ignored. ("Leaf" | packets that are received on such interfaces are ignored. ("Leaf" | |||
| interfaces are a special case, since they are connected to trusted | interfaces are a special case since they are connected to trusted | |||
| links but HNCP and Babel traffic received on such interfaces is | links, but HNCP and Babel traffic received on such interfaces is | |||
| ignored.) This implies that the security of a Homenet network | ignored.) This implies that the security of a Homenet network | |||
| depends on the reliability of the border discovery procedure | depends on the reliability of the border discovery procedure | |||
| described in Section 5.3 of [RFC7788]. | described in Section 5.3 of [RFC7788]. | |||
| If untrusted links are used for transit, which is NOT RECOMMENDED, | If untrusted links are used for transit, which is NOT RECOMMENDED, | |||
| then any HNCP and Babel traffic that is carried over such links MUST | then any HNCP and Babel traffic that is carried over such links MUST | |||
| be secured using an upper-layer security protocol. While both HNCP | be secured using an upper-layer security protocol. While both HNCP | |||
| and Babel support cryptographic authentication, at the time of | and Babel support cryptographic authentication, at the time of | |||
| writing no protocol for autonomous configuration of HNCP and Babel | writing, no protocol for autonomous configuration of HNCP and Babel | |||
| security has been defined. | security has been defined. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document requires no actions from IANA. | This document has no IANA actions. | |||
| 6. Acknowledgments | ||||
| A number of people have helped with defining the requirements listed | ||||
| in this document. I am especially indebted to Barbara Stark and | ||||
| Markus Stenberg. | ||||
| 7. References | ||||
| 7.1. Normative References | 6. References | |||
| [BABEL-SS] | 6.1. Normative References | |||
| Boutier, M. and J. Chroboczek, "Source-Specific Routing in | ||||
| Babel", draft-ietf-babel-source-specific-03 (work in | ||||
| progress), August 2018. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997. | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC6126bis] | ||||
| Chroboczek, J. and D. Schinazi, "The Babel Routing | ||||
| Protocol", Internet Draft draft-ietf-babel-rfc6126bis-04, | ||||
| October 2017. | ||||
| [RFC7788] Stenberg, M., Barth, S., and P. Pfister, "Home Networking | [RFC7788] Stenberg, M., Barth, S., and P. Pfister, "Home Networking | |||
| Control Protocol", RFC 7788, DOI 10.17487/RFC7788, April | Control Protocol", RFC 7788, DOI 10.17487/RFC7788, April | |||
| 2016. | 2016, <https://www.rfc-editor.org/info/rfc7788>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| 7.2. Informative References | [RFC8966] Chroboczek, J. and D. Schinazi, "The Babel Routing | |||
| Protocol", RFC 8966, DOI 10.17487/RFC8966, January 2021, | ||||
| <https://www.rfc-editor.org/info/rfc8966>. | ||||
| [RFC9079] Boutier, M. and J. Chroboczek, "Source-Specific Routing in | ||||
| the Babel Routing Protocol", RFC 9079, | ||||
| DOI 10.17487/RFC9079, August 2021, | ||||
| <https://www.rfc-editor.org/rfc/rfc9079>. | ||||
| 6.2. Informative References | ||||
| [BABEL-RTT] | [BABEL-RTT] | |||
| Jonglez, B. and J. Chroboczek, "Delay-based Metric | Jonglez, B. and J. Chroboczek, "Delay-based Metric | |||
| Extension for the Babel Routing Protocol", draft-jonglez- | Extension for the Babel Routing Protocol", Work in | |||
| babel-rtt-extension-01 (work in progress), May 2015. | Progress, Internet-Draft, draft-ietf-babel-rtt-extension- | |||
| 00, 26 April 2019, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-ietf-babel-rtt-extension-00>. | ||||
| [BABEL-Z] Chroboczek, J., "Diversity Routing for the Babel Routing | [BABEL-Z] Chroboczek, J., "Diversity Routing for the Babel Routing | |||
| Protocol", draft-chroboczek-babel-diversity-routing-01 | Protocol", Work in Progress, Internet-Draft, draft- | |||
| (work in progress), February 2016. | chroboczek-babel-diversity-routing-01, 15 February 2016, | |||
| <https://datatracker.ietf.org/doc/html/draft-chroboczek- | ||||
| babel-diversity-routing-01>. | ||||
| [DELAY-BASED] | [DELAY-BASED] | |||
| Jonglez, B. and J. Chroboczek, "A delay-based routing | Jonglez, B., Boutier, M., and J. Chroboczek, "A delay- | |||
| metric", March 2014. | based routing metric", March 2014, | |||
| <http://arxiv.org/abs/1403.3488>. | ||||
| Available online from http://arxiv.org/abs/1403.3488 | ||||
| [RFC7298] Ovsienko, D., "Babel Hashed Message Authentication Code | [RFC8967] Dô, C., Kolodziejak, W., and J. Chroboczek, "MAC | |||
| (HMAC) Cryptographic Authentication", RFC 7298, July 2014. | Authentication for the Babel Routing Protocol", RFC 8967, | |||
| DOI 10.17487/RFC8967, January 2021, | ||||
| <https://www.rfc-editor.org/info/rfc8967>. | ||||
| [ToS-SPECIFIC] | [ToS-SPECIFIC] | |||
| Chouasne, G., "https://tools.ietf.org/id/ | Chouasne, G. and J. Chroboczek, "TOS-Specific Routing in | |||
| draft-chouasne-babel-tos-specific-00.xml", draft-chouasne- | Babel", Work in Progress, Internet-Draft, draft-chouasne- | |||
| babel-tos-specific-00 (work in progress), July 2017. | babel-tos-specific-00, 3 July 2017, | |||
| <https://datatracker.ietf.org/doc/html/draft-chouasne- | ||||
| babel-tos-specific-00>. | ||||
| Acknowledgments | ||||
| A number of people have helped with defining the requirements listed | ||||
| in this document. I am especially indebted to Barbara Stark and | ||||
| Markus Stenberg. | ||||
| Author's Address | Author's Address | |||
| Juliusz Chroboczek | Juliusz Chroboczek | |||
| IRIF, University of Paris-Diderot | IRIF, University of Paris-Diderot | |||
| Case 7014 | Case 7014 | |||
| 75205 Paris Cedex 13 | 75205 Paris CEDEX 13 | |||
| France | France | |||
| Email: jch@irif.fr | Email: jch@irif.fr | |||
| End of changes. 61 change blocks. | ||||
| 232 lines changed or deleted | 247 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/ | ||||