Internet-Draft safer-limited-domains July 2024
Kumari, et al. Expires 9 January 2025 [Page]
Workgroup:
Internet Area Working Group
Internet-Draft:
draft-wkumari-intarea-safe-limited-domains-01
Published:
Intended Status:
Standards Track
Expires:
Authors:
W. Kumari
Google, LLC
A. Alston
Liquid Intelligent Technologies
É. Vyncke
Cisco
S. Krishnan
Cisco

Safe(r) Limited Domains

Abstract

There is a trend towards documents describing protocols that are only intended to be used within "limited domains". These documents often do not clearly define how the boundary of the limited domain is implemented and enforced, or require that operators of these limited domains //perfectly// implement filters to protect the rest of the global Internet from these protocols and vice-versa.

This document discusses the concepts of "fail-open" versus "fail-closed" protocols and limited domains, and specifies a layer-2 mechanism that can be used for designing limited domain protocols that are safer to deploy.

Discussion Venues

This note is to be removed before publishing as an RFC.

Discussion of this document takes place on the Internet Area Working Group Working Group mailing list (int-area@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/int-area/.

Source for this draft and an issue tracker can be found at https://github.com/wkumari/draft-wkumari-intarea-safe-limited-domains.

Status of This Memo

This Internet-Draft is submitted in full conformance with the 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 9 January 2025.

Table of Contents

1. Introduction

[RFC8799] discusses the concept of "limited domains", provides examples of limited domains, as well as Examples of Limited Domain Solutions, including Service Function Chaining (SFC), Segment Routing, "Creative uses of IPv6 features" (including Extension headers, e.g., for in situ Operations, Administration, and maintenance [RFC9378]).

In order to provide context, this document will quote extensively from [RFC8799], but it is assumed that the reader will actually read [RFC8799] in its entirety.

[RFC8799] Section 3, notes:

Notably, in [RFC8799] Section 2, states:

This document addresses the problem of "leakage" of limited domain protocols by providing a mechanism so that nodes must be explicitly configured to handle the given limited-domain protocol ("fail-closed"), rather than relying on the network operator to take active steps to protect the boundary ("fail-open").

2. Conventions and Definitions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

3. Fail-open versus Fail-closed

Protocols can be broadly classified as either "fail-open" or "fail-closed". Fail-closed protocols are those that require explicit interface or device-wide configuration to enable them to be accepted or processed when received on an interface. A classic example of a fail-closed protocol is MPLS ([RFC3031]): In order to allow MPLS to transit an interface, the operator must enable the MPLS protocol on that interface and on the device itself. This ensures that outside MPLS traffic does not leak in.

Fail-open protocols are those that require explicit configuration in order to ensure that they do not leak out of a domain, for example, through the application of filters. An example of a fail-open protocol is SRv6 - in order to ensure that SRv6 traffic does not leak out of a network, the operator must explicitly filter this traffic, and, in order to ensure that SRv6 traffic does not leak in, the operator must explicitly filter SRv6 traffic.

Fail-open protocols are inherently more risky than fail-closed protocols, as they rely on perfect configuration of filters on all interfaces at the boundary of a domain, and, if the filters are removed for any reason (for example, during troubleshooting), there is a risk of inbound or oubound leaks. In addition, some devices or interfaces may have limitations in the size and complexity of filters that can be applied, and so adding new filter entries to limit leaks of a new protocol may not be possible.

Fail-closed protocols, on the other hand, do not require any explicit filtering. In order for the protocol to be accepted and processed when received on an interface, the operator must explicitly enable the protocol on that interface and on the device itself. In addition, there is less risk of operational mistakes, as it does not rely on filters that may be limited in number and complexity. Finally, fail-closed protocols do not require that operators of networks outside of the limited domain implement filters to protect their networks from the limited domain traffic.

4. Making a layer-3 type limited-domain protocol fail-closed

One way to make a limited-domain protocol fail-closed is to assign it a unique EtherType (this is the mechanism used by MPLS). In modern router and hosts, if the protocol (and so its associated EtherType) is not enabled on an interface, then the Ethernet chipset will ignore the frame, and the node OS will not process it. This is a very simple and effective mechanism to ensure that the protocol does not leak out of the limited domain if and when an operator makes a mistake in configuring filters.

Note that this only works for transport-type limited domain protocols (i.e., protocols running at layer 3). Higher layer protocols cannot necessarily be protected in this way, and so cryptographically enforced mechanisms may need to be used instead (e.g as done used by ANIMA in [RFC8994] and [RFC8995]).

The EtherType is a 16-bit field in an Ethernet frame, and so it is a somewhat limited resource.

Note that "Since EtherTypes are a fairly scarce resource, the IEEE RAC has let us know that they will not assign a new EtherType to a new IETF protocol specification until the IESG has approved the protocol specification for publication as an RFC. In exceptional cases, the IEEE RA is willing to consider "early allocation" of an EtherType for an IETF protocol that is still under development as long as the request comes from and has been vetted by the IESG." ([I-D.ietf-intarea-rfc7042bis] Appendix B.1, citing [IESG_EtherType])

During development and testing, the protocol can use a "Local Experimental Ethertype" (0x88b5 and 0x88b6 - [IANA_EtherType]). Once the protocol is approved for publication, the IESG can request an EtherType from the IEEE.

For discussion: or simply defining one single EtherType for this testing? I.e., IPv4 and IPv6 can be identified by their first 4 bits.

[ Editor note: EtherTypes are a scarce resource, and so we need to be careful about how we use them. It is likely that there will only be a very limited (sorry!) number of protocols that need to be protected in this way (on the order of 3 or 4).

However, it is worth considering if there are other ways to achieve the same goal. An option would be to set aside a single EtherType, and then have a registry of "limited sub-EtherTypes" that are assigned by IANA. This would allow us to protect a large number of protocols, while only using a single EtherType, but would require something that looks more like a new L2 header. ]

Another option to make a limited-domain protocol fail-closed is to use an identifier under the IANA OUI (00-00-5E) as explained in [RFC9542].

[Editor note: This is a good idea, but it is not clear if it is practical. This above would need a bunch more text / discussion. It ends up being a bit like the "limited sub-EtherTypes" idea above, but with the additional complexity of not having the MAC address be the "normal" MAC address of the device that you are sending the traffic to. This will require more discussion with the WG, and the IEEE liaisons. ]

5. Security Considerations

TODO Security

6. IANA Considerations

This document has no IANA actions.

7. References

7.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8799]
Carpenter, B. and B. Liu, "Limited Domains and Internet Protocols", RFC 8799, DOI 10.17487/RFC8799, , <https://www.rfc-editor.org/rfc/rfc8799>.

7.2. Informative References

[I-D.ietf-intarea-rfc7042bis]
Eastlake, D. E., Abley, J., and Y. Li, "IANA Considerations and IETF Protocol and Documentation Usage for IEEE 802 Parameters", Work in Progress, Internet-Draft, draft-ietf-intarea-rfc7042bis-11, , <https://datatracker.ietf.org/doc/html/draft-ietf-intarea-rfc7042bis-11>.
[IANA_EtherType]
"IANA EtherType Registry", Web <https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml#ieee-802-numbers-1>.
[IESG_EtherType]
"IESG Statement on EtherTypes", Web <https://www.ietf.org/about/groups/iesg/statements/ethertypes>, .
[RFC3031]
Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, DOI 10.17487/RFC3031, , <https://www.rfc-editor.org/rfc/rfc3031>.
[RFC8754]
Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", RFC 8754, DOI 10.17487/RFC8754, , <https://www.rfc-editor.org/rfc/rfc8754>.
[RFC8994]
Eckert, T., Ed., Behringer, M., Ed., and S. Bjarnason, "An Autonomic Control Plane (ACP)", RFC 8994, DOI 10.17487/RFC8994, , <https://www.rfc-editor.org/rfc/rfc8994>.
[RFC8995]
Pritikin, M., Richardson, M., Eckert, T., Behringer, M., and K. Watsen, "Bootstrapping Remote Secure Key Infrastructure (BRSKI)", RFC 8995, DOI 10.17487/RFC8995, , <https://www.rfc-editor.org/rfc/rfc8995>.
[RFC9378]
Brockners, F., Ed., Bhandari, S., Ed., Bernier, D., and T. Mizrahi, Ed., "In Situ Operations, Administration, and Maintenance (IOAM) Deployment", RFC 9378, DOI 10.17487/RFC9378, , <https://www.rfc-editor.org/rfc/rfc9378>.
[RFC9542]
Eastlake 3rd, D., Abley, J., and Y. Li, "IANA Considerations and IETF Protocol and Documentation Usage for IEEE 802 Parameters", BCP 141, RFC 9542, DOI 10.17487/RFC9542, , <https://www.rfc-editor.org/rfc/rfc9542>.

Acknowledgments

Much thanks to Brian Carpenter, for his review and comments.

Also much thanks to Deborah Brungard, for her review and comments.

Also much thanks to everyone else with whom we have discussed this topic; I've had numerous discussions with many many people on this, and I'm sure that I've forgotten some of them. Apologies if you were one of them.

Changelog

Authors' Addresses

Warren Kumari
Google, LLC
Andrew Alston
Liquid Intelligent Technologies
Éric Vyncke
Cisco
Suresh Krishnan
Cisco