| rfc9049.original | rfc9049.txt | |||
|---|---|---|---|---|
| PANRG S. Dawkins, Ed. | Internet Research Task Force (IRTF) S. Dawkins, Ed. | |||
| Internet-Draft Tencent America | Request for Comments: 9049 Tencent America | |||
| Intended status: Informational 26 March 2021 | Category: Informational June 2021 | |||
| Expires: 27 September 2021 | ISSN: 2070-1721 | |||
| Path Aware Networking: Obstacles to Deployment (A Bestiary of Roads Not | Path Aware Networking: Obstacles to Deployment | |||
| Taken) | (A Bestiary of Roads Not Taken) | |||
| draft-irtf-panrg-what-not-to-do-19 | ||||
| Abstract | Abstract | |||
| At the first meeting of the Path Aware Networking Research Group, the | This document is a product of the Path Aware Networking Research | |||
| research group agreed to catalog and analyze past efforts to develop | Group (PANRG). At the first meeting of the PANRG, the Research Group | |||
| and deploy Path Aware techniques, most of which were unsuccessful or | agreed to catalog and analyze past efforts to develop and deploy Path | |||
| at most partially successful, in order to extract insights and | Aware techniques, most of which were unsuccessful or at most | |||
| lessons for path-aware networking researchers. | partially successful, in order to extract insights and lessons for | |||
| Path Aware networking researchers. | ||||
| This document contains that catalog and analysis. | This document contains that catalog and analysis. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
| provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
| 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 Research Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IRTF). The IRTF publishes the results of Internet-related research | |||
| time. It is inappropriate to use Internet-Drafts as reference | and development activities. These results might not be suitable for | |||
| material or to cite them other than as "work in progress." | deployment. This RFC represents the consensus of the Path Aware | |||
| Networking Research Group of the Internet Research Task Force (IRTF). | ||||
| Documents approved for publication by the IRSG are not a candidate | ||||
| for any level of Internet Standard; see Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 27 September 2021. | 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/rfc9049. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. | carefully, as they describe your rights and restrictions with respect | |||
| to this document. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction | 1. Introduction | |||
| 1.1. What Do "Path" and "Path Awareness" Mean in this Document? | 1.1. What Do "Path" and "Path Awareness" Mean in This Document? | |||
| 2. A Perspective On This Document | 2. A Perspective on This Document | |||
| 2.1. Notes for the Reader | 2.1. Notes for the Reader | |||
| 2.2. A Note About Path-Aware Techniques Included In This | 2.2. A Note about Path Aware Techniques Included in This | |||
| Document | Document | |||
| 2.3. Venue for Discussion of this Document | 2.3. Architectural Guidance | |||
| 2.4. Architectural Guidance | 2.4. Terminology Used in This Document | |||
| 2.5. Terminology Used in this Document | 2.5. Methodology for Contributions | |||
| 2.6. Methodology for Contributions | ||||
| 3. Applying the Lessons We've Learned | 3. Applying the Lessons We've Learned | |||
| 4. Summary of Lessons Learned | 4. Summary of Lessons Learned | |||
| 4.1. Justifying Deployment | 4.1. Justifying Deployment | |||
| 4.2. Providing Benefits for Early Adopters | 4.2. Providing Benefits for Early Adopters | |||
| 4.3. Providing Benefits During Partial Deployment | 4.3. Providing Benefits during Partial Deployment | |||
| 4.4. Outperforming End-to-end Protocol Mechanisms | 4.4. Outperforming End-to-End Protocol Mechanisms | |||
| 4.5. Paying for Path Aware Techniques | 4.5. Paying for Path Aware Techniques | |||
| 4.6. Impact on Operational Practices | 4.6. Impact on Operational Practices | |||
| 4.7. Per-connection State | 4.7. Per-Connection State | |||
| 4.8. Keeping Traffic on Fast-paths | 4.8. Keeping Traffic on Fast Paths | |||
| 4.9. Endpoints Trusting Intermediate Nodes | 4.9. Endpoints Trusting Intermediate Nodes | |||
| 4.10. Intermediate Nodes Trusting Endpoints | 4.10. Intermediate Nodes Trusting Endpoints | |||
| 4.11. Reacting to Distant Signals | 4.11. Reacting to Distant Signals | |||
| 4.12. Support in Endpoint Protocol Stacks | 4.12. Support in Endpoint Protocol Stacks | |||
| 4.13. Planning For Failure | 4.13. Planning for Failure | |||
| 5. Future Work | 5. Future Work | |||
| 6. Contributions | 6. Contributions | |||
| 6.1. Stream Transport (ST, ST2, ST2+) | 6.1. Stream Transport (ST, ST2, ST2+) | |||
| 6.1.1. Reasons for Non-deployment | 6.1.1. Reasons for Non-deployment | |||
| 6.1.2. Lessons Learned. | 6.1.2. Lessons Learned | |||
| 6.2. Integrated Services (IntServ) | 6.2. Integrated Services (IntServ) | |||
| 6.2.1. Reasons for Non-deployment | 6.2.1. Reasons for Non-deployment | |||
| 6.2.2. Lessons Learned. | 6.2.2. Lessons Learned | |||
| 6.3. Quick-Start TCP | 6.3. Quick-Start TCP | |||
| 6.3.1. Reasons for Non-deployment | 6.3.1. Reasons for Non-deployment | |||
| 6.3.2. Lessons Learned | 6.3.2. Lessons Learned | |||
| 6.4. ICMP Source Quench | 6.4. ICMP Source Quench | |||
| 6.4.1. Reasons for Non-deployment | 6.4.1. Reasons for Non-deployment | |||
| 6.4.2. Lessons Learned | 6.4.2. Lessons Learned | |||
| 6.5. Triggers for Transport (TRIGTRAN) | 6.5. Triggers for Transport (TRIGTRAN) | |||
| 6.5.1. Reasons for Non-deployment | 6.5.1. Reasons for Non-deployment | |||
| 6.5.2. Lessons Learned. | 6.5.2. Lessons Learned | |||
| 6.6. Shim6 | 6.6. Shim6 | |||
| 6.6.1. Reasons for Non-deployment | 6.6.1. Reasons for Non-deployment | |||
| 6.6.2. Lessons Learned | 6.6.2. Lessons Learned | |||
| 6.6.3. Addendum on MultiPath TCP | 6.6.3. Addendum on Multipath TCP | |||
| 6.7. Next Steps in Signaling (NSIS) | 6.7. Next Steps in Signaling (NSIS) | |||
| 6.7.1. Reasons for Non-deployment | 6.7.1. Reasons for Non-deployment | |||
| 6.7.2. Lessons Learned | 6.7.2. Lessons Learned | |||
| 6.8. IPv6 Flow Label | 6.8. IPv6 Flow Labels | |||
| 6.8.1. Reasons for Non-deployment | 6.8.1. Reasons for Non-deployment | |||
| 6.8.2. Lessons Learned | 6.8.2. Lessons Learned | |||
| 6.9. Explicit Congestion Notification (ECN) | 6.9. Explicit Congestion Notification (ECN) | |||
| 6.9.1. Reasons for Non-deployment | 6.9.1. Reasons for Non-deployment | |||
| 6.9.2. Lessons Learned | 6.9.2. Lessons Learned | |||
| 7. Security Considerations | 7. Security Considerations | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 9. Acknowledgments | 9. Informative References | |||
| 10. Informative References | Acknowledgments | |||
| Author's Address | Author's Address | |||
| 1. Introduction | 1. Introduction | |||
| This document describes the lessons that IETF participants have | This document describes the lessons that IETF participants have | |||
| learned (and learned the hard way) about Path Aware Networking over a | learned (and learned the hard way) about Path Aware networking over a | |||
| period of several decades, and provides an analysis of reasons why | period of several decades. It also provides an analysis of reasons | |||
| various Path Aware Networking techniques have seen limited or no | why various Path Aware techniques have seen limited or no deployment. | |||
| deployment. | ||||
| 1.1. What Do "Path" and "Path Awareness" Mean in this Document? | This document represents the consensus of the Path Aware Networking | |||
| Research Group (PANRG). | ||||
| 1.1. What Do "Path" and "Path Awareness" Mean in This Document? | ||||
| One of the first questions reviewers of this document have asked is | One of the first questions reviewers of this document have asked is | |||
| "what's the definition of a path, and what's the definition of path | "What's the definition of a Path, and what's the definition of Path | |||
| awareness?" That is not an easy question to answer for this | Awareness?" That is not an easy question to answer for this | |||
| document. | document. | |||
| These terms have definitions in other [PANRG] documents, and are | These terms have definitions in other PANRG documents [PANRG] and are | |||
| still the subject of some discussion in the research group, as of the | still the subject of some discussion in the Research Group, as of the | |||
| date of this document. But because this document reflects work | date of this document. But because this document reflects work | |||
| performed over several decades, the technologies described in | performed over several decades, the technologies described in | |||
| Section 6 significantly predate the current definitions of "path" and | Section 6 significantly predate the current definitions of "Path" and | |||
| "path aware" in use in the Path Aware Networking Research Group, and | "Path Aware" in use in the Path Aware Networking Research Group, and | |||
| it is unlikely that all the contributors to Section 6 would have had | it is unlikely that all the contributors to Section 6 would have had | |||
| the same understanding of these terms. Those technologies were | the same understanding of these terms. Those technologies were | |||
| considered "path aware" in early PANRG discussions, and so are | considered "Path Aware" in early PANRG discussions and so are | |||
| included in this retrospective document. | included in this retrospective document. | |||
| It is worth noting that the definitions of "path" and "path aware" in | It is worth noting that the definitions of "Path" and "Path Aware" in | |||
| [I-D.irtf-panrg-path-properties] would apply to path aware networking | [PANRG-PATH-PROPERTIES] would apply to Path Aware techniques at a | |||
| techniques at a number of levels of the Internet protocol | number of levels of the Internet protocol architecture ([RFC1122], | |||
| architecture ([RFC1122], plus several decades of refinements), but | plus several decades of refinements), but the contributions received | |||
| the contributions received for this document tended to target the | for this document tended to target the transport layer and to treat a | |||
| Transport Layer, and to treat a "path" constructed by routers as a | "Path" constructed by routers as opaque. It would be useful to | |||
| "black box". It would be useful to consider how applicable the | consider how applicable the Lessons Learned cataloged in this | |||
| Lessons Learned cataloged in this document are, at other layers, and | document are, at other layers, and that would be a fine topic for | |||
| that would be a fine topic for follow-on research. | follow-on research. | |||
| The current definition of "Path" in the Path Aware Networking | The current definition of "Path" in the Path Aware Networking | |||
| Research Group appears in Section 2 ("Terminology") in | Research Group appears in Section 2 ("Terminology") in | |||
| [I-D.irtf-panrg-path-properties]. That definition is included here | [PANRG-PATH-PROPERTIES]. That definition is included here as a | |||
| as a convenience to the reader. | convenience to the reader. | |||
| | Path: A sequence of adjacent path elements over which a packet can | | Path: A sequence of adjacent path elements over which a packet can | |||
| | be transmitted, starting and ending with a node. A path is | | be transmitted, starting and ending with a node. A path is | |||
| | unidirectional. Paths are time-dependent, i.e., the sequence of | | unidirectional. Paths are time-dependent, i.e., the sequence of | |||
| | path elements over which packets are sent from one node to another | | path elements over which packets are sent from one node to another | |||
| | may change. A path is defined between two nodes. For multicast | | may change. A path is defined between two nodes. For multicast | |||
| | or broadcast, a packet may be sent by one node and received by | | or broadcast, a packet may be sent by one node and received by | |||
| | multiple nodes. In this case, the packet is sent over multiple | | multiple nodes. In this case, the packet is sent over multiple | |||
| | paths at once, one path for each combination of sending and | | paths at once, one path for each combination of sending and | |||
| | receiving node; these paths do not have to be disjoint. Note that | | receiving node; these paths do not have to be disjoint. Note that | |||
| | an entity may have only partial visibility of the path elements | | an entity may have only partial visibility of the path elements | |||
| | that comprise a path and visibility may change over time. | | that comprise a path and visibility may change over time. | |||
| | Different entities may have different visibility of a path and/or | | Different entities may have different visibility of a path and/or | |||
| | treat path elements at different levels of abstraction. | | treat path elements at different levels of abstraction. | |||
| The current definition of "Path Awareness", used by the Path Aware | The current definition of Path Awareness, used by the Path Aware | |||
| Networking Research Group, appears in Section 1.1 ("Definition") in | Networking Research Group, appears in Section 1.1 ("Definition") in | |||
| [I-D.irtf-panrg-questions]. That definition is included here as a | [PANRG-QUESTIONS]. That definition is included here as a convenience | |||
| convenience to the reader. | to the reader. | |||
| | For purposes of this document, "path aware networking" describes | | For purposes of this document, "path aware networking" describes | |||
| | endpoint discovery of the properties of paths they use for | | endpoint discovery of the properties of paths they use for | |||
| | communication, and endpoint reaction to these properties that | | communication across an internetwork, and endpoint reaction to | |||
| | affects routing and/or transmission; note that this can and | | these properties that affects routing and/or data transfer. Note | |||
| | already does happen to some extent in the current Internet | | that this can and already does happen to some extent in the | |||
| | architecture. Expanding on this definition, a "path aware | | current Internet architecture; this definition expands current | |||
| | internetwork" is one in which endpoint discovery of path | | techniques of path discovery and manipulation to cross | |||
| | properties and endpoint selection of paths used by traffic | | administrative domain boundaries and up to the transport and | |||
| | exchanged by the endpoint are explicitly supported, regardless of | | application layers at the endpoints. | |||
| | the specific design of the protocol features which enable this | | | |||
| | discovery and selection. | | Expanding on this definition, a "path aware internetwork" is one | |||
| | in which endpoint discovery of path properties and endpoint | ||||
| | selection of paths used by traffic exchanged by the endpoint are | ||||
| | explicitly supported, regardless of the specific design of the | ||||
| | protocol features which enable this discovery and selection. | ||||
| 2. A Perspective On This Document | 2. A Perspective on This Document | |||
| At the first meeting of the Path Aware Networking Research Group | At the first meeting of the Path Aware Networking Research Group | |||
| [PANRG], at IETF 99 [PANRG-99], Olivier Bonaventure led a discussion | [PANRG], at IETF 99 [PANRG-99], Olivier Bonaventure led a discussion | |||
| of "A Decade of Path Awareness" [PATH-Decade], on attempts, which | of "A Decade of Path Awareness" [PATH-Decade], on attempts, which | |||
| were mostly unsuccessful for a variety of reasons, to exploit Path | were mostly unsuccessful for a variety of reasons, to exploit Path | |||
| Aware techniques and achieve a variety of goals over the past decade. | Aware techniques and achieve a variety of goals over the past decade. | |||
| At the end of that discussion, two things were abundantly clear. | At the end of that discussion, two things were abundantly clear. | |||
| * The Internet community has accumulated considerable experience | * The Internet community has accumulated considerable experience | |||
| with many Path Aware techniques over a long period of time, and | with many Path Aware techniques over a long period of time, and | |||
| * Although some path aware techniques have been deployed (for | * Although some Path Aware techniques have been deployed (for | |||
| example, Differentiated Services, or DiffServ [RFC2475]), most of | example, Differentiated Services, or Diffserv [RFC2475]), most of | |||
| these techniques haven't seen widespread adoption and deplyment. | these techniques haven't seen widespread adoption and deployment. | |||
| Even "successful" techniques like DiffServ can face obstacles that | Even "successful" techniques like Diffserv can face obstacles that | |||
| prevents wider usage. The reasons for non-adoption and limited | prevent wider usage. The reasons for non-adoption and limited | |||
| adoption and deployment are many, and are worthy of study. | adoption and deployment are many and are worthy of study. | |||
| The meta-lessons from that experience were | The meta-lessons from that experience were as follows: | |||
| * Path aware networking has been more Research than Engineering, so | * Path Aware networking has been more Research than Engineering, so | |||
| establishing an IRTF Research Group for Path Aware Networking is | establishing an IRTF Research Group for Path Aware networking was | |||
| the right thing to do [RFC7418]. | the right thing to do [RFC7418]. | |||
| * Analyzing a catalog of past experience to learn the reasons for | * Analyzing a catalog of past experience to learn the reasons for | |||
| non-adoption would be a great first step for the Research Group. | non-adoption would be a great first step for the Research Group. | |||
| Allison Mankin, as IRTF Chair, officially chartered the Path Aware | Allison Mankin, as IRTF Chair, officially chartered the Path Aware | |||
| Networking Research Group in July, 2018. | Networking Research Group in July 2018. | |||
| This document contains the analysis performed by that research group | This document contains the analysis performed by that Research Group | |||
| (Section 4), based on that catalog (Section 6). | (Section 4), based on that catalog (Section 6). | |||
| This document represents the consensus of the Path Aware Networking | ||||
| Research Group. | ||||
| 2.1. Notes for the Reader | 2.1. Notes for the Reader | |||
| This Informational document discusses Path Aware protocol mechanisms | This Informational document discusses Path Aware protocol mechanisms | |||
| considered, and in some cases standardized, by the Internet | considered, and in some cases standardized, by the Internet | |||
| Engineering Task Force (IETF), and considers Lessons Learned from | Engineering Task Force (IETF), and it considers Lessons Learned from | |||
| those mechanisms. The intention is to inform the work of protocol | those mechanisms. The intention is to inform the work of protocol | |||
| designers, whether in the IRTF, the IETF, or elsewhere in the | designers, whether in the IRTF, the IETF, or elsewhere in the | |||
| Internet ecosystem. | Internet ecosystem. | |||
| As an Informational document published in the IRTF stream, this | As an Informational document published in the IRTF Stream, this | |||
| document has no authority beyond the quality of the analysis it | document has no authority beyond the quality of the analysis it | |||
| contains. | contains. | |||
| 2.2. A Note About Path-Aware Techniques Included In This Document | 2.2. A Note about Path Aware Techniques Included in This Document | |||
| This document does not catalog every proposed path aware networking | This document does not catalog every proposed Path Aware technique | |||
| technique that was not adopted and deployed. Instead, we limited our | that was not adopted and deployed. Instead, we limited our focus to | |||
| focus to technologies that passed through the IETF community, and | technologies that passed through the IETF community and still | |||
| still identified enough techniques to provide background for the | identified enough techniques to provide background for the lessons | |||
| lessons included in Section 4 to inform researchers and protocol | included in Section 4 to inform researchers and protocol engineers in | |||
| engineers in their work. | their work. | |||
| No shame is intended for the techniques included in this document. | No shame is intended for the techniques included in this document. | |||
| As shown in Section 4, the quality of specific techniques had little | As shown in Section 4, the quality of specific techniques had little | |||
| to do with whether they were deployed or not. Based on the | to do with whether they were deployed or not. Based on the | |||
| techniques cataloged in this document, it is likely that when these | techniques cataloged in this document, it is likely that when these | |||
| techniques were put forward, the proponents were trying to engineer | techniques were put forward, the proponents were trying to engineer | |||
| something that could not be engineered without first carrying out | something that could not be engineered without first carrying out | |||
| research. Actual shame would be failing to learn from experience, | research. Actual shame would be failing to learn from experience and | |||
| and failing to share that experience with other networking | failing to share that experience with other networking researchers | |||
| researchers and engineers. | and engineers. | |||
| 2.3. Venue for Discussion of this Document | ||||
| (RFC Editor: please remove this section before publication) | ||||
| Discussion of specific contributed experiences and this document in | ||||
| general should take place on the PANRG mailing list. | ||||
| 2.4. Architectural Guidance | 2.3. Architectural Guidance | |||
| As background for understanding the Lessons Learned contained in this | As background for understanding the Lessons Learned contained in this | |||
| document, the reader is encouraged to become familiar with the | document, the reader is encouraged to become familiar with the | |||
| Internet Architecture Board's documents on "What Makes for a | Internet Architecture Board's documents on "What Makes for a | |||
| Successful Protocol?" [RFC5218] and "Planning for Protocol Adoption | Successful Protocol?" [RFC5218] and "Planning for Protocol Adoption | |||
| and Subsequent Transitions" [RFC8170]. | and Subsequent Transitions" [RFC8170]. | |||
| Although these two documents do not specifically target path-aware | Although these two documents do not specifically target Path Aware | |||
| networking protocols, they are helpful resources for readers seeking | networking protocols, they are helpful resources for readers seeking | |||
| to improve their understanding of considerations for successful | to improve their understanding of considerations for successful | |||
| adoption and deployment of any protocol. For example, the Basic | adoption and deployment of any protocol. For example, the basic | |||
| Success Factors described in Setion 2.1 of [RFC5218] are helpful for | success factors described in Section 2.1 of [RFC5218] are helpful for | |||
| readers of this document. | readers of this document. | |||
| Because there is an economic aspect to decisions about deployment, | Because there is an economic aspect to decisions about deployment, | |||
| the IAB Workshop on Internet Technology Adoption and Transition | the IAB Workshop on Internet Technology Adoption and Transition | |||
| [ITAT] report [RFC7305] also provides food for thought. | [ITAT] report [RFC7305] also provides food for thought. | |||
| Several of the Lessons Learned in Section 4 reflect considerations | Several of the Lessons Learned in Section 4 reflect considerations | |||
| described in [RFC5218], [RFC7305], and [RFC8170]. | described in [RFC5218], [RFC7305], and [RFC8170]. | |||
| 2.5. Terminology Used in this Document | 2.4. Terminology Used in This Document | |||
| The terms Node and Element in this document have the meaning defined | The terms "node" and "element" in this document have the meaning | |||
| in [I-D.irtf-panrg-path-properties]. | defined in [PANRG-PATH-PROPERTIES]. | |||
| 2.6. Methodology for Contributions | 2.5. Methodology for Contributions | |||
| This document grew out of contributions by various IETF participants | This document grew out of contributions by various IETF participants | |||
| with experience with one or more Path Aware Networking techniques. | with experience with one or more Path Aware techniques. | |||
| There are many things that could be said about the Path Aware | There are many things that could be said about the Path Aware | |||
| networking techniques that have been developed. For the purposes of | techniques that have been developed. For the purposes of this | |||
| this document, contributors were requested to provide | document, contributors were requested to provide | |||
| * the name of a technique, including an abbreviation if one was used | * the name of a technique, including an abbreviation if one was | |||
| used. | ||||
| * if available, a long-term pointer to the best reference describing | * if available, a long-term pointer to the best reference describing | |||
| the technique | the technique. | |||
| * a short description of the problem the technique was intended to | * a short description of the problem the technique was intended to | |||
| solve | solve. | |||
| * a short description of the reasons why the technique wasn't | * a short description of the reasons why the technique wasn't | |||
| adopted | adopted. | |||
| * a short statement of the lessons that researchers can learn from | * a short statement of the lessons that researchers can learn from | |||
| our experience with this technique. | our experience with this technique. | |||
| 3. Applying the Lessons We've Learned | 3. Applying the Lessons We've Learned | |||
| The initial scope for this document was roughly "what mistakes have | The initial scope for this document was roughly "What mistakes have | |||
| we made in the decade prior to [PANRG-99], that we shouldn't make | we made in the decade prior to [PANRG-99], that we shouldn't make | |||
| again". Some of the contributions in Section 6 predate the initial | again?" Some of the contributions in Section 6 predate the initial | |||
| scope. The earliest Path-Aware Networking technique referred to in | scope. The earliest Path Aware technique referred to in Section 6 is | |||
| Section 6 is Section 6.1, published in the late 1970s. Given that | [IEN-119], which was published in the late 1970s; see Section 6.1. | |||
| the networking ecosystem has evolved continuously, it seems | Given that the networking ecosystem has evolved continuously, it | |||
| reasonable to consider how to apply these lessons. | seems reasonable to consider how to apply these lessons. | |||
| The PANRG Research Group reviewed the Lessons Learned (Section 4) | The PANRG reviewed the Lessons Learned (Section 4) contained in the | |||
| contained in the May 23, 2019 version of this document at IETF 105 | May 23, 2019 draft version of this document at IETF 105 | |||
| [PANRG-105-Min], and carried out additional discussion at IETF 106 | [PANRG-105-Min] and carried out additional discussion at IETF 106 | |||
| [PANRG-106-Min]. Table 1 provides the "sense of the room" about each | [PANRG-106-Min]. Table 1 provides the "sense of the room" about each | |||
| lesson after those discussions. The intention was to capture whether | lesson after those discussions. The intention was to capture whether | |||
| a specific lesson seems to be | a specific lesson seems to be | |||
| * "Invariant" - well-understood and is likely to be applicable for | * "Invariant" - well-understood and is likely to be applicable for | |||
| any proposed Path Aware Networking solution. | any proposed Path Aware networking solution. | |||
| * "Variable" - has impeded deployment in the past, but might not be | * "Variable" - has impeded deployment in the past but might not be | |||
| applicable in a specific technique. Engineering analysis to | applicable in a specific technique. Engineering analysis to | |||
| understand whether the lesson is applicable is prudent. | understand whether the lesson is applicable is prudent. | |||
| * "Not Now" - this characteristic tends to turn up a minefield full | * "Not Now" - a characteristic that tends to turn up a minefield | |||
| of dragons, and prudent network engineers will wish to avoid | full of dragons. Prudent network engineers will wish to avoid | |||
| gambling on a technique that relies on this, until something | gambling on a technique that relies on this, until something | |||
| significant changes | significant changes. | |||
| Section 6.9 on ECN was added during the review and approval process, | Section 6.9 on Explicit Congestion Notification (ECN) was added | |||
| based on a question from Martin Duke. That section, along with its | during the review and approval process, based on a question from | |||
| Lessons Learned and place in the "Invariant"/"Variable"/"Not Now" | Martin Duke. Section 6.9, as contained in the March 8, 2021 draft | |||
| taxonomy, as contained in the March 8, 2021 version of this document, | version of this document, was discussed at [PANRG-110] and is | |||
| was discussed at [PANRG-110]. | summarized in Section 4.13, describing a new Lesson Learned. | |||
| +-----------------------------------------------------+-----------+ | +=====================================================+===========+ | |||
| | Lesson | Category | | | Lesson | Category | | |||
| +=====================================================+===========+ | +=====================================================+===========+ | |||
| | Justifying Deployment (Section 4.1) | Invariant | | | Justifying Deployment (Section 4.1) | Invariant | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Providing Benefits for Early Adopters (Section 4.2) | Invariant | | | Providing Benefits for Early Adopters (Section 4.2) | Invariant | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Providing Benefits during Partial Deployment | Invariant | | | Providing Benefits during Partial Deployment | Invariant | | |||
| | (Section 4.3) | | | | (Section 4.3) | | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Outperforming End-to-end Protocol Mechanisms | Variable | | | Outperforming End-to-End Protocol Mechanisms | Variable | | |||
| | (Section 4.4) | | | | (Section 4.4) | | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Paying for Path Aware Techniques (Section 4.5) | Invariant | | | Paying for Path Aware Techniques (Section 4.5) | Invariant | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Impact on Operational Practices (Section 4.6) | Invariant | | | Impact on Operational Practices (Section 4.6) | Invariant | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Per-connection State (Section 4.7) | Variable | | | Per-Connection State (Section 4.7) | Variable | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Keeping Traffic on Fast-paths (Section 4.8) | Variable | | | Keeping Traffic on Fast Paths (Section 4.8) | Variable | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Endpoints Trusting Intermediate Nodes (Section 4.9) | Not Now | | | Endpoints Trusting Intermediate Nodes (Section 4.9) | Not Now | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Intermediate Nodes Trusting Endpoints | Not Now | | | Intermediate Nodes Trusting Endpoints | Not Now | | |||
| | (Section 4.10) | | | | (Section 4.10) | | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Reacting to Distant Signals (Section 4.11) | Variable | | | Reacting to Distant Signals (Section 4.11) | Variable | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Support in Endpoint Protocol Stacks (Section 4.12) | Variable | | | Support in Endpoint Protocol Stacks (Section 4.12) | Variable | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| | Planning for Failure (Section 4.13) | Invariant | | | Planning for Failure (Section 4.13) | Invariant | | |||
| +-----------------------------------------------------+-----------+ | +-----------------------------------------------------+-----------+ | |||
| Table 1 | Table 1 | |||
| "Justifying Deployment", "Providing Benefits for Early Adopters", | "Justifying Deployment", "Providing Benefits for Early Adopters", | |||
| "Paying for Path Aware Techniques", "Impact on Operational Practice", | "Paying for Path Aware Techniques", "Impact on Operational | |||
| and "Planning for Failure" were considered to be invariant - the | Practices", and "Planning for Failure" were considered to be | |||
| sense of the room was that these would always be considerations for | Invariant -- the sense of the room was that these would always be | |||
| any proposed Path Aware Technique. | considerations for any proposed Path Aware technique. | |||
| "Providing Benefits During Partial Deployment" was added after IETF | "Providing Benefits during Partial Deployment" was added after IETF | |||
| 105, during research group last call, and is also considered to be | 105, during Research Group Last Call, and is also considered to be | |||
| invariant. | Invariant. | |||
| For "Outperforming End-to-end Protocol Mechanisms", there is a trade- | For "Outperforming End-to-End Protocol Mechanisms", there is a trade- | |||
| off between improved performance from Path Aware Techniques and | off between improved performance from Path Aware techniques and | |||
| additional complexity required by some Path Aware Techniques. | additional complexity required by some Path Aware techniques. | |||
| * For example, if you can obtain the same understanding of path | * For example, if you can obtain the same understanding of path | |||
| characteristics from measurements obtained over a few more round | characteristics from measurements obtained over a few more round | |||
| trips, endpoint implementers are unlikely to be eager to add | trips, endpoint implementers are unlikely to be eager to add | |||
| complexity, and many attributes can be measured from an endpoint, | complexity, and many attributes can be measured from an endpoint, | |||
| without assistance from intermediate nodes. | without assistance from intermediate nodes. | |||
| For "Per-connection State", the key questions discussed in the | For "Per-Connection State", the key questions discussed in the | |||
| research group were "how much state" and "where state is maintained". | Research Group were "how much state" and "where state is maintained". | |||
| * IntServ (Section 6.2) required state at every intermediate node | * Integrated Services (IntServ) (Section 6.2) required state at | |||
| for every connection between two endpoints. As the Internet | every participating intermediate node for every connection between | |||
| ecosystem has evolved, carrying many connections in a tunnel that | two endpoints. As the Internet ecosystem has evolved, carrying | |||
| appears to intermediate nodes as a single connection has become | many connections in a tunnel that appears to intermediate nodes as | |||
| more common, so that additional end-to-end connections don't add | a single connection has become more common, so that additional | |||
| additional state to intermediate nodes between tunnel endpoints. | end-to-end connections don't add additional state to intermediate | |||
| If these tunnels are encrypted, intermediate nodes between tunnel | nodes between tunnel endpoints. If these tunnels are encrypted, | |||
| endpoints can't distinguish between connections, even if that were | intermediate nodes between tunnel endpoints can't distinguish | |||
| desirable. | between connections, even if that were desirable. | |||
| For "Keeping Traffic on Fast-paths", we noted that this was true for | For "Keeping Traffic on Fast Paths", we noted that this was true for | |||
| many platforms, but not for all. | many platforms, but not for all. | |||
| * For backbone routers, this is likely an invariant, but for | * For backbone routers, this is likely an Invariant, but for | |||
| platforms that rely more on general-purpose computers to make | platforms that rely more on general-purpose computers to make | |||
| forwarding decisions, this may not be a fatal flaw for Path Aware | forwarding decisions, this may not be a fatal flaw for Path Aware | |||
| Networking techniques. | techniques. | |||
| For "Endpoints Trusting Intermediate Nodes" and "Intermediate Nodes | For "Endpoints Trusting Intermediate Nodes" and "Intermediate Nodes | |||
| Trusting Endpoints", these lessons point to the broader need to | Trusting Endpoints", these lessons point to the broader need to | |||
| revisit the Internet Threat Model. | revisit the Internet Threat Model. | |||
| * We noted with relief that discussions about this were already | * We noted with relief that discussions about this were already | |||
| underway in the IETF community at IETF 105 (see the Security Area | underway in the IETF community at IETF 105 (see the Security Area | |||
| Open Meeting minutes [SAAG-105-Min] for discussion of | Open Meeting minutes [SAAG-105-Min] for discussion of | |||
| [I-D.arkko-arch-internet-threat-model] and [I-D.farrell-etm]), and | [INTERNET-THREAT-MODEL] and [FARRELL-ETM]), and the Internet | |||
| the Internet Architecture Board has created a mailing list for | Architecture Board has created a mailing list for continued | |||
| continued discussions ([model-t]), but we recognize that there are | discussions [model-t], but we recognize that there are Path Aware | |||
| Path Aware Networking aspects of this effort, requiring research. | networking aspects of this effort, requiring research. | |||
| For "Reacting to Distant Signals", we noted that not all attributes | For "Reacting to Distant Signals", we noted that not all attributes | |||
| are equal. | are equal. | |||
| * If an attribute is stable over an extended period of time, is | * If an attribute is stable over an extended period of time, is | |||
| difficult to observe via end-to-end mechanisms, and is valuable, | difficult to observe via end-to-end mechanisms, and is valuable, | |||
| Path Aware Techniques that rely on that attribute to provide a | Path Aware techniques that rely on that attribute to provide a | |||
| significant benefit become more attractive. | significant benefit become more attractive. | |||
| * Analysis to help identify attributes that are useful enough to | * Analysis to help identify attributes that are useful enough to | |||
| justify deployment of Path Aware techniques that make use of those | justify deployment of Path Aware techniques that make use of those | |||
| attributes would be helpful. | attributes would be helpful. | |||
| For "Support in Endpoint Protocol Stacks", we noted that Path Aware | For "Support in Endpoint Protocol Stacks", we noted that Path Aware | |||
| applications must be able to identify and communicate requirements | applications must be able to identify and communicate requirements | |||
| about path characteristics. | about path characteristics. | |||
| * The de-facto sockets API has no way of signaling application | * The de facto sockets API has no way of signaling application | |||
| expectations for the network path to the protocol stack. | expectations for the network path to the protocol stack. | |||
| 4. Summary of Lessons Learned | 4. Summary of Lessons Learned | |||
| This section summarizes the Lessons Learned from the contributed | This section summarizes the Lessons Learned from the contributed | |||
| subsections in Section 6. | subsections in Section 6. | |||
| Each Lesson Learned is tagged with one or more contributions that | Each Lesson Learned is tagged with one or more contributions that | |||
| encountered this obstacle as a significant impediment to deployment. | encountered this obstacle as a significant impediment to deployment. | |||
| Other contributed techniques may have also encountered this obstacle, | Other contributed techniques may have also encountered this obstacle, | |||
| but this obstacle may not have been the biggest impediment to | but this obstacle may not have been the biggest impediment to | |||
| deployment for those techniques. | deployment for those techniques. | |||
| It is useful to notice that sometimes an obstacle might impede | It is useful to notice that sometimes an obstacle might impede | |||
| deployment, while at other times, the same obstacle might prevent | deployment, while at other times, the same obstacle might prevent | |||
| adoption and deployment entirely. The research group discussed | adoption and deployment entirely. The Research Group discussed | |||
| distinguishing between obstacles that impede and obstacles that | distinguishing between obstacles that impede and obstacles that | |||
| prevent, but it appears that the boundary between "impede" and | prevent, but it appears that the boundary between "impede" and | |||
| "prevent" can shift over time - some of the Lessons Learned are based | "prevent" can shift over time -- some of the Lessons Learned are | |||
| on both Path Aware techniques that were not deployed, and Path Aware | based on both a) Path Aware techniques that were not deployed and b) | |||
| techniques that were deployed, but were not deployed widely or | Path Aware techniques that were deployed but were not deployed widely | |||
| quickly. See Section 6.6 and Section 6.6.3 as one example of this | or quickly. See Sections 6.6 and 6.6.3 for examples of this shifting | |||
| shifting boundary. | boundary. | |||
| 4.1. Justifying Deployment | 4.1. Justifying Deployment | |||
| The benefit of Path Awareness must be great enough to justify making | The benefit of Path Awareness must be great enough to justify making | |||
| changes in an operational network. The colloquial U.S. American | changes in an operational network. The colloquial U.S. American | |||
| English expression, "If it ain't broke, don't fix it" is a "best | English expression, "If it ain't broke, don't fix it" is a "best | |||
| current practice" on today's Internet. (See Section 6.3, | current practice" on today's Internet. (See Sections 6.3, 6.4, 6.5, | |||
| Section 6.4, Section 6.5, and Section 6.9, in addition to [RFC5218]). | and 6.9, in addition to [RFC5218].) | |||
| 4.2. Providing Benefits for Early Adopters | 4.2. Providing Benefits for Early Adopters | |||
| Providing benefits for early adopters can be key - if everyone must | Providing benefits for early adopters can be key -- if everyone must | |||
| deploy a technique in order for the technique to provide benefits, or | deploy a technique in order for the technique to provide benefits, or | |||
| even to work at all, the technique is unlikely to be adopted widely | even to work at all, the technique is unlikely to be adopted widely | |||
| or quickly. (See Section 6.2 and Section 6.3, in addition to | or quickly. (See Sections 6.2 and 6.3, in addition to [RFC5218].) | |||
| [RFC5218]). | ||||
| 4.3. Providing Benefits During Partial Deployment | 4.3. Providing Benefits during Partial Deployment | |||
| Some proposals require that all path elements along the full length | Some proposals require that all path elements along the full length | |||
| of the path must be upgraded to support a new technique, before any | of the path must be upgraded to support a new technique, before any | |||
| benefits can be seen. This is likely to require coordination between | benefits can be seen. This is likely to require coordination between | |||
| operators who control a subset of path elements, and between | operators who control a subset of path elements, and between | |||
| operators and end users if endpoint upgrades are required. If a | operators and end users if endpoint upgrades are required. If a | |||
| technique provides benefits when only a part of the path has been | technique provides benefits when only a part of the path has been | |||
| upgraded, this is likely to encourage adoption and deployment. (See | upgraded, this is likely to encourage adoption and deployment. (See | |||
| Section 6.2, Section 6.3, and Section 6.9, in addition to [RFC5218]). | Sections 6.2, 6.3, and 6.9, in addition to [RFC5218].) | |||
| 4.4. Outperforming End-to-end Protocol Mechanisms | 4.4. Outperforming End-to-End Protocol Mechanisms | |||
| Adaptive end-to-end protocol mechanisms may respond to feedback | Adaptive end-to-end protocol mechanisms may respond to feedback | |||
| quickly enough that the additional realizable benefit from a new Path | quickly enough that the additional realizable benefit from a new Path | |||
| Aware mechanism that tries to manipulate nodes along a path, or | Aware mechanism that tries to manipulate nodes along a path, or | |||
| observe the attributes of nodes along a path, may be much smaller | observe the attributes of nodes along a path, may be much smaller | |||
| than anticipated (See Section 6.3 and Section 6.5). | than anticipated. (See Sections 6.3 and 6.5.) | |||
| 4.5. Paying for Path Aware Techniques | 4.5. Paying for Path Aware Techniques | |||
| "Follow the money." If operators can't charge for a Path Aware | "Follow the money." If operators can't charge for a Path Aware | |||
| technique to recover the costs of deploying it, the benefits to the | technique to recover the costs of deploying it, the benefits to the | |||
| operator must be really significant. Corollary: If operators charge | operator must be really significant. Corollary: if operators charge | |||
| for a Path Aware technique, the benefits to users of that Path Aware | for a Path Aware technique, the benefits to users of that Path Aware | |||
| technique must be significant enough to justify the cost. (See | technique must be significant enough to justify the cost. (See | |||
| Section 6.1, Section 6.2, Section 6.5, and Section 6.9). | Sections 6.1, 6.2, 6.5, and 6.9.) | |||
| 4.6. Impact on Operational Practices | 4.6. Impact on Operational Practices | |||
| Impact of a Path Aware technique requiring changes to operational | The impact of a Path Aware technique requiring changes to operational | |||
| practices can affect how quickly or widely a promising technique is | practices can affect how quickly or widely a promising technique is | |||
| deployed. The impacts of these changes may make deployment more | deployed. The impacts of these changes may make deployment more | |||
| likely, but often discourage deployment. (See Section 6.6, including | likely, but they often discourage deployment. (See Section 6.6, | |||
| Section 6.6.3). | including Section 6.6.3.) | |||
| 4.7. Per-connection State | 4.7. Per-Connection State | |||
| Per-connection state in intermediate nodes has been an impediment to | Per-connection state in intermediate nodes has been an impediment to | |||
| adoption and deployment in the past, because of added cost and | adoption and deployment in the past, because of added cost and | |||
| complexity. Often, similar benefits can be achieved with much less | complexity. Often, similar benefits can be achieved with much less | |||
| finely-grained state. This is especially true as we move from the | finely grained state. This is especially true as we move from the | |||
| edge of the network, further into the routing core (See Section 6.1 | edge of the network, further into the routing core. (See | |||
| and Section 6.2). | Sections 6.1 and 6.2.) | |||
| 4.8. Keeping Traffic on Fast-paths | 4.8. Keeping Traffic on Fast Paths | |||
| Many modern platforms, especially high-end routers, have been | Many modern platforms, especially high-end routers, have been | |||
| designed with hardware that can make simple per-packet forwarding | designed with hardware that can make simple per-packet forwarding | |||
| decisions ("fast-paths"), but have not been designed to make heavy | decisions ("fast paths") but have not been designed to make heavy use | |||
| use of in-band mechanisms such as IPv4 and IPv6 Router Alert Options | of in-band mechanisms such as IPv4 and IPv6 Router Alert Options | |||
| (RAO) that require more processing to make forwarding decisions. | (RAOs) that require more processing to make forwarding decisions. | |||
| Packets carrying in-band mechanisms are diverted to other processors | Packets carrying in-band mechanisms are diverted to other processors | |||
| in the router with much lower packet processing rates. Operators can | in the router with much lower packet-processing rates. Operators can | |||
| be reluctant to deploy techniques that rely heavily on in-band | be reluctant to deploy techniques that rely heavily on in-band | |||
| mechanisms because they may significantly reduce packet throughput. | mechanisms because they may significantly reduce packet throughput. | |||
| (See Section 6.7). | (See Section 6.7.) | |||
| 4.9. Endpoints Trusting Intermediate Nodes | 4.9. Endpoints Trusting Intermediate Nodes | |||
| If intermediate nodes along the path can't be trusted, it's unlikely | If intermediate nodes along the path can't be trusted, it's unlikely | |||
| that endpoints will rely on signals from intermediate nodes to drive | that endpoints will rely on signals from intermediate nodes to drive | |||
| changes to endpoint behaviors. We note that "trust" is not binary - | changes to endpoint behaviors. We note that "trust" is not binary -- | |||
| one, low, level of trust applies when a node issuing a message can | one low level of trust applies when a node receiving a message can | |||
| confirm that it has visibility of the packets on the path it is | confirm that the sender of the message has visibility of the packets | |||
| seeking to control [RFC8085] (e.g., an ICMP message included a quoted | on the path it is seeking to control [RFC8085] (e.g., an ICMP | |||
| packet from the source). A higher level of trust can arise when an | Destination Unreachable message [RFC0792] that includes the Internet | |||
| endpoint has established a short term, or even long term, trust | Header + 64 bits of Original Data Datagram payload from the source). | |||
| relationship with network nodes. (See Section 6.4 and Section 6.5). | A higher level of trust can arise when an endpoint has established a | |||
| short-term, or even long-term, trust relationship with network nodes. | ||||
| (See Sections 6.4 and 6.5.) | ||||
| 4.10. Intermediate Nodes Trusting Endpoints | 4.10. Intermediate Nodes Trusting Endpoints | |||
| If the endpoints do not have any trust relationship with the | If the endpoints do not have any trust relationship with the | |||
| intermediate nodes along a path, operators have been reluctant to | intermediate nodes along a path, operators have been reluctant to | |||
| deploy techniques that rely on endpoints sending unauthenticated | deploy techniques that rely on endpoints sending unauthenticated | |||
| control signals to routers. (See Section 6.2 and Section 6.7). (We | control signals to routers. (See Sections 6.2 and 6.7.) (We also | |||
| also note this still remains a factor hindering deployment of | note that this still remains a factor hindering deployment of | |||
| DiffServ). | Diffserv.) | |||
| 4.11. Reacting to Distant Signals | 4.11. Reacting to Distant Signals | |||
| Because the Internet is a distributed system, if the distance that | Because the Internet is a distributed system, if the distance that | |||
| information from distant path elements travels to a Path Aware host | information from distant path elements travels to a Path Aware host | |||
| is sufficiently large, the information may no longer accurately | is sufficiently large, the information may no longer accurately | |||
| represent the state and situation at the distant host or elements | represent the state and situation at the distant host or elements | |||
| along the path when it is received locally. In this case, the | along the path when it is received locally. In this case, the | |||
| benefit that a Path Aware technique provides will be inconsistent, | benefit that a Path Aware technique provides will be inconsistent and | |||
| and may not always be beneficial. (See Section 6.3). | may not always be beneficial. (See Section 6.3.) | |||
| 4.12. Support in Endpoint Protocol Stacks | 4.12. Support in Endpoint Protocol Stacks | |||
| Just because a protocol stack provides a new feature/signal does not | Just because a protocol stack provides a new feature/signal does not | |||
| mean that applications will use the feature/signal. Protocol stacks | mean that applications will use the feature/signal. Protocol stacks | |||
| may not know how to effectively utilize Path-Aware techniques, | may not know how to effectively utilize Path Aware techniques, | |||
| because the protocol stack may require information from applications | because the protocol stack may require information from applications | |||
| to permit the technique to work effectively, but applications may not | to permit the technique to work effectively, but applications may not | |||
| a-priori know that information. Even if the application does know | a priori know that information. Even if the application does know | |||
| that information, the de-facto sockets API has no way of signaling | that information, the de facto sockets API has no way of signaling | |||
| application expectations for the network path to the protocol stack. | application expectations for the network path to the protocol stack. | |||
| In order for applications to provide these expectations to protocol | In order for applications to provide these expectations to protocol | |||
| stacks, we need an API that signals more than the packets to be sent. | stacks, we need an API that signals more than the packets to be sent. | |||
| (See Section 6.1 and Section 6.2). | (See Sections 6.1 and 6.2.) | |||
| 4.13. Planning For Failure | 4.13. Planning for Failure | |||
| If early implementers discover severe problems with a new feature, | If early implementers discover severe problems with a new feature, | |||
| that feature is likely to be disabled, and convincing implementers to | that feature is likely to be disabled, and convincing implementers to | |||
| re-enable that feature can be very difficult, and can require years | re-enable that feature can be very difficult and can require years or | |||
| or decades. In addition to testing, partial deployment for a subset | decades. In addition to testing, partial deployment for a subset of | |||
| of users, implementing instrumentation that will detect degraded user | users, implementing instrumentation that will detect degraded user | |||
| experience, and even "failback" to a previous version or "failover" | experience, and even "failback" to a previous version or "failover" | |||
| to an entirely different implementation are likely to be helpful. | to an entirely different implementation are likely to be helpful. | |||
| (See Section 6.9). | (See Section 6.9.) | |||
| 5. Future Work | 5. Future Work | |||
| By its nature, this document has been retrospective. In addition to | By its nature, this document has been retrospective. In addition to | |||
| considering how the Lessons Learned to date apply to current and | considering how the Lessons Learned to date apply to current and | |||
| future Path Aware networking proposals, it's also worth considering | future Path Aware networking proposals, it's also worth considering | |||
| whether there is deeper investigation left to do. | whether there is deeper investigation left to do. | |||
| * We note that this work was based on contributions from experts on | * We note that this work was based on contributions from experts on | |||
| various Path Aware networking techniques, and all of the | various Path Aware techniques, and all of the contributed | |||
| contributed techniques involved unicast protocols. We didn't | techniques involved unicast protocols. We didn't consider how | |||
| consider how these lessons might apply to multicast, and, given | these lessons might apply to multicast, and, given anecdotal | |||
| anecdotal reports at the IETF 109 MOPS working group meeting of IP | reports at the IETF 109 Media Operations (MOPS) Working Group | |||
| multicast offerings within data centers at one or more cloud | meeting of IP multicast offerings within data centers at one or | |||
| providers ([MOPS-109-Min]), it might be useful to think about path | more cloud providers [MOPS-109-Min], it might be useful to think | |||
| awareness in multicast, before we have a history of unsuccessful | about Path Awareness in multicast, before we have a history of | |||
| deployments to document. | unsuccessful deployments to document. | |||
| * The question of whether a mechanism supports admission control, | * The question of whether a mechanism supports admission control, | |||
| based on either endpoints or applications, is associated with Path | based on either endpoints or applications, is associated with Path | |||
| Awareness. One of the motivations of IntServ and a number of | Awareness. One of the motivations of IntServ and a number of | |||
| other architectures (e.g. Deterministic Networking, [RFC8655]) is | other architectures (e.g., Deterministic Networking [RFC8655]) is | |||
| the ability to "say no" to an application based on resource | the ability to "say no" to an application based on resource | |||
| availability on a path, before the application tries to inject | availability on a path, before the application tries to inject | |||
| traffic onto that path and discovers the path does not have the | traffic onto that path and discovers the path does not have the | |||
| capacity to sustain enough utility to meet the application's | capacity to sustain enough utility to meet the application's | |||
| minimum needs. The question of whether admission control is | minimum needs. The question of whether admission control is | |||
| needed comes up repeatedly, but we have learned a few useful | needed comes up repeatedly, but we have learned a few useful | |||
| lessons that, while covered implicitly in some of the lessons | lessons that, while covered implicitly in some of the Lessons | |||
| learned of the document, might be explained explicitly: | Learned provided in this document, might be explained explicitly: | |||
| - We have gained a lot of experience with application-based | - We have gained a lot of experience with application-based | |||
| adaptation since the days where applications just injected | adaptation since the days where applications just injected | |||
| traffic in-elastically into the network. Such adaptations seem | traffic inelastically into the network. Such adaptations seem | |||
| to work well enough that admission control is of less value to | to work well enough that admission control is of less value to | |||
| these applications | these applications. | |||
| - There are end-to-end measurement techniques that can steer | - There are end-to-end measurement techniques that can steer | |||
| traffic at the application layer (Content Distribution | traffic at the application layer (Content Delivery Networks | |||
| Networks, multi-CDNs like Conviva [Conviva], etc.) | (CDNs), multi-CDNs like Conviva [Conviva], etc.). | |||
| - We noted in Section 4.12 that applications often don't know how | - We noted in Section 4.12 that applications often don't know how | |||
| to utilize Path Aware techniques. This includes not knowing | to utilize Path Aware techniques. This includes not knowing | |||
| enough about their admission control threshold to be able to | enough about their admission control threshold to be able to | |||
| ask accurately for the resources they need, whether this is | ask accurately for the resources they need, whether this is | |||
| because the application itself doesn't know, or because the | because the application itself doesn't know or because the | |||
| application has no way to signal its expectations to the | application has no way to signal its expectations to the | |||
| underlying protocol stack. To date, attempts to help them | underlying protocol stack. To date, attempts to help them | |||
| haven't gotten anywhere (e.g. the multiple-TSPEC additions to | haven't gotten anywhere (e.g., the multiple-TSPEC (Traffic | |||
| RSVP to attempt to mirror codec selection by applications | Specification) additions to RSVP to attempt to mirror codec | |||
| [I-D.ietf-tsvwg-intserv-multiple-tspec] expired in 2013). | selection by applications [INTSERV-MULTIPLE-TSPEC] expired in | |||
| 2013). | ||||
| * We note that this work took the then-current IP network | * We note that this work took the then-current IP network | |||
| architecture as given, at least at the time each technique was | architecture as given, at least at the time each technique was | |||
| proposed. It might be useful to consider aspects of the now- | proposed. It might be useful to consider aspects of the now- | |||
| current IP network architecture that ease, or impede, Path Aware | current IP network architecture that ease, or impede, Path Aware | |||
| networking techniques. For example, there is limited ability in | techniques. For example, there is limited ability in IP to | |||
| IP to constrain bidirectional paths to be symmetric, and | constrain bidirectional paths to be symmetric, and information- | |||
| information-centric networking protocols such as Named Data | centric networking protocols such as Named Data Networking (NDN) | |||
| Networking (NDN) and Content-Centric Networking (CCNx) ([RFC8793]) | and Content-Centric Networking (CCNx) [RFC8793] must force | |||
| must force bidirectional path symmetry using protocol-specific | bidirectional path symmetry using protocol-specific mechanisms. | |||
| mechanisms. | ||||
| 6. Contributions | 6. Contributions | |||
| Contributions on these Path Aware networking techniques were analyzed | Contributions on these Path Aware techniques were analyzed to arrive | |||
| to arrive at the Lessons Learned captured in Section 4. | at the Lessons Learned captured in Section 4. | |||
| Our expectation is that most readers will not need to read through | Our expectation is that most readers will not need to read through | |||
| this section carefully, but we wanted to record these hard-fought | this section carefully, but we wanted to record these hard-fought | |||
| lessons as a service to others who may revisit this document, so | lessons as a service to others who may revisit this document, so | |||
| they'll have the details close at hand. | they'll have the details close at hand. | |||
| 6.1. Stream Transport (ST, ST2, ST2+) | 6.1. Stream Transport (ST, ST2, ST2+) | |||
| The suggested references for Stream Transport are: | The suggested references for Stream Transport are: | |||
| * ST - A Proposed Internet Stream Protocol [IEN-119] | * "ST - A Proposed Internet Stream Protocol" [IEN-119] | |||
| * Experimental Internet Stream Protocol, Version 2 (ST-II) [RFC1190] | * "Experimental Internet Stream Protocol: Version 2 (ST-II)" | |||
| [RFC1190] | ||||
| * Internet Stream Protocol Version 2 (ST2) Protocol Specification - | * "Internet Stream Protocol Version 2 (ST2) Protocol Specification - | |||
| Version ST2+ [RFC1819] | Version ST2+" [RFC1819] | |||
| The first version of Stream Transport, ST [IEN-119], was published in | The first version of Stream Transport, ST [IEN-119], was published in | |||
| the late 1970's and was implemented and deployed on the ARPANET at | the late 1970s and was implemented and deployed on the ARPANET at | |||
| small scale. It was used throughout the 1980's for experimental | small scale. It was used throughout the 1980s for experimental | |||
| transmission of voice, video, and distributed simulation. | transmission of voice, video, and distributed simulation. | |||
| The second version of the ST specification (ST2) [RFC1190] [RFC1819] | The second version of the ST specification (ST2) [RFC1190] [RFC1819] | |||
| was an experimental connection-oriented internetworking protocol that | was an experimental connection-oriented internetworking protocol that | |||
| operated at the same layer as connectionless IP. ST2 packets could | operated at the same layer as connectionless IP. ST2 packets could | |||
| be distinguished by their IP header version numbers (IP, at that | be distinguished by their IP header version numbers (IP, at that | |||
| time, used version number 4, while ST2 used version number 5). | time, used version number 4, while ST2 used version number 5). | |||
| ST2 used a control plane layered over IP to select routes and reserve | ST2 used a control plane layered over IP to select routes and reserve | |||
| capacity for real-time streams across a network path, based on a flow | capacity for real-time streams across a network path, based on a flow | |||
| specification communicated by a separate protocol. The flow | specification communicated by a separate protocol. The flow | |||
| specification could be associated with QoS state in routers, | specification could be associated with QoS state in routers, | |||
| producing an experimental resource reservation protocol. This | producing an experimental resource reservation protocol. This | |||
| allowed ST2 routers along a path to offer end-to-end guarantees, | allowed ST2 routers along a path to offer end-to-end guarantees, | |||
| primarily to satisfy the QoS requirements for realtime services over | primarily to satisfy the QoS requirements for real-time services over | |||
| the Internet. | the Internet. | |||
| 6.1.1. Reasons for Non-deployment | 6.1.1. Reasons for Non-deployment | |||
| Although implemented in a range of equipment, ST2 was not widely used | Although implemented in a range of equipment, ST2 was not widely used | |||
| after completion of the experiments. It did not offer the | after completion of the experiments. It did not offer the | |||
| scalability and fate-sharing properties that have come to be desired | scalability and fate-sharing properties that have come to be desired | |||
| by the Internet community. | by the Internet community. | |||
| The ST2 protocol is no longer in use. | The ST2 protocol is no longer in use. | |||
| 6.1.2. Lessons Learned. | 6.1.2. Lessons Learned | |||
| As time passed, the trade-off between router processing and link | As time passed, the trade-off between router processing and link | |||
| capacity changed. Links became faster and the cost of router | capacity changed. Links became faster, and the cost of router | |||
| processing became comparatively more expensive. | processing became comparatively more expensive. | |||
| The ST2 control protocol used "hard state" - once a route was | The ST2 control protocol used "hard state" -- once a route was | |||
| established, and resources were reserved, routes and resources | established, and resources were reserved, routes and resources | |||
| existing until they were explicitly released via signaling. A soft- | existed until they were explicitly released via signaling. A soft- | |||
| state approach was thought superior to this hard-state approach, and | state approach was thought superior to this hard-state approach and | |||
| led to development of the IntServ model described in Section 6.2. | led to development of the IntServ model described in Section 6.2. | |||
| 6.2. Integrated Services (IntServ) | 6.2. Integrated Services (IntServ) | |||
| The suggested references for IntServ are: | The suggested references for IntServ are: | |||
| * RFC 1633 Integrated Services in the Internet Architecture: an | * "Integrated Services in the Internet Architecture: an Overview" | |||
| Overview [RFC1633] | [RFC1633] | |||
| * RFC 2211 Specification of the Controlled-Load Network Element | * "Specification of the Controlled-Load Network Element Service" | |||
| Service [RFC2211] | [RFC2211] | |||
| * RFC 2212 Specification of Guaranteed Quality of Service [RFC2212] | * "Specification of Guaranteed Quality of Service" [RFC2212] | |||
| * RFC 2215 General Characterization Parameters for Integrated | * "General Characterization Parameters for Integrated Service | |||
| Service Network Elements [RFC2215] | Network Elements" [RFC2215] | |||
| * RFC 2205 Resource ReSerVation Protocol (RSVP) [RFC2205] | * "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional | |||
| Specification" [RFC2205] | ||||
| In 1994, when the IntServ architecture document [RFC1633] was | In 1994, when the IntServ architecture document [RFC1633] was | |||
| published, real-time traffic was first appearing on the Internet. At | published, real-time traffic was first appearing on the Internet. At | |||
| that time, bandwidth was still a scarce commodity. Internet Service | that time, bandwidth was still a scarce commodity. Internet Service | |||
| Providers built networks over DS3 (45 Mbps) infrastructure, and sub- | Providers built networks over DS3 (45 Mbps) infrastructure, and sub- | |||
| rate (< 1 Mpbs) access was common. Therefore, the IETF anticipated a | rate (< 1 Mbps) access was common. Therefore, the IETF anticipated a | |||
| need for a fine-grained QoS mechanism. | need for a fine-grained QoS mechanism. | |||
| In the IntServ architecture, some applications can require service | In the IntServ architecture, some applications can require service | |||
| guarantees. Therefore, those applications use the Resource | guarantees. Therefore, those applications use RSVP [RFC2205] to | |||
| Reservation Protocol (RSVP) [RFC2205] to signal QoS reservations | signal QoS reservations across network paths. Every router in the | |||
| across network paths. Every router in the network that participates | network that participates in IntServ maintains per-flow soft state to | |||
| in IntServ maintains per-flow soft-state to a) perform call admission | a) perform call admission control and b) deliver guaranteed service. | |||
| control and b) deliver guaranteed service. | ||||
| Applications use Flow Specification (Flow Specs) [RFC2210] to | Applications use Flow Specifications (Flow Specs, or FLOWSPECs) | |||
| describe the traffic that they emit. RSVP reserves capacity for | [RFC2210] to describe the traffic that they emit. RSVP reserves | |||
| traffic on a per Flow Spec basis. | capacity for traffic on a per-Flow-Spec basis. | |||
| 6.2.1. Reasons for Non-deployment | 6.2.1. Reasons for Non-deployment | |||
| Although IntServ has been used in enterprise and government networks, | Although IntServ has been used in enterprise and government networks, | |||
| IntServ was never widely deployed on the Internet because of its | IntServ was never widely deployed on the Internet because of its | |||
| cost. The following factors contributed to operational cost: | cost. The following factors contributed to operational cost: | |||
| * IntServ must be deployed on every router that is on a path where | * IntServ must be deployed on every router that is on a path where | |||
| IntServ is to be used. Although it is possible to include a | IntServ is to be used. Although it is possible to include a | |||
| router that does not participate in IntServ along the path being | router that does not participate in IntServ along the path being | |||
| controlled, if that router is likely to become a bottleneck, | controlled, if that router is likely to become a bottleneck, | |||
| IntServ cannot be used to avoid that bottleneck along the path | IntServ cannot be used to avoid that bottleneck along the path. | |||
| * IntServ maintained per flow state | * IntServ maintained per-flow state. | |||
| As IntServ was being discussed, the following occurred: | As IntServ was being discussed, the following occurred: | |||
| * For many expected uses, it became more cost effective to solve the | * For many expected uses, it became more cost effective to solve the | |||
| QoS problem by adding bandwidth. Between 1994 and 2000, Internet | QoS problem by adding bandwidth. Between 1994 and 2000, Internet | |||
| Service Providers upgraded their infrastructures from DS3 (45 | Service Providers upgraded their infrastructures from DS3 (45 | |||
| Mbps) to OC-48 (2.4 Gbps). This meant that even if an endpoint | Mbps) to OC-48 (2.4 Gbps). This meant that even if an endpoint | |||
| was using IntServ in an IntServ-enabled network, its requests | was using IntServ in an IntServ-enabled network, its requests | |||
| would rarely, if ever, be denied, so endpoints and Internet | would rarely, if ever, be denied, so endpoints and Internet | |||
| Service Providers had little reason to enable IntServ. | Service Providers had little reason to enable IntServ. | |||
| * DiffServ [RFC2475] offered a more cost-effective, albeit less | * Diffserv [RFC2475] offered a more cost-effective, albeit less | |||
| fine-grained, solution to the QoS problem. | fine-grained, solution to the QoS problem. | |||
| 6.2.2. Lessons Learned. | 6.2.2. Lessons Learned | |||
| The following lessons were learned: | The following lessons were learned: | |||
| * Any mechanism that requires every participating onpath router to | * Any mechanism that requires every participating on-path router to | |||
| maintain per-flow state is not likely to succeed, unless the | maintain per-flow state is not likely to succeed, unless the | |||
| additional cost for offering the feature can be recovered from the | additional cost for offering the feature can be recovered from the | |||
| user. | user. | |||
| * Any mechanism that requires an operator to upgrade all of its | * Any mechanism that requires an operator to upgrade all of its | |||
| routers is not likely to succeed, unless the additional cost for | routers is not likely to succeed, unless the additional cost for | |||
| offering the feature can be recovered from the user. | offering the feature can be recovered from the user. | |||
| In environments where IntServ has been deployed, trust relationships | In environments where IntServ has been deployed, trust relationships | |||
| with endpoints are very different from trust relationships on the | with endpoints are very different from trust relationships on the | |||
| Internet itself, and there are often clearly-defined hierarchies in | Internet itself. There are often clearly defined hierarchies in | |||
| Service Level Agreements (SLAs), and well-defined transport flows | Service Level Agreements (SLAs) governing well-defined transport | |||
| operating with pre-determined capacity and latency requirements over | flows operating with predetermined capacity and latency requirements | |||
| paths where capacity or other attributes are constrained. | over paths where capacity or other attributes are constrained. | |||
| IntServ was never widely deployed to manage capacity across the | IntServ was never widely deployed to manage capacity across the | |||
| Internet. However, the technique that it produced was deployed for | Internet. However, the technique that it produced was deployed for | |||
| reasons other than bandwidth management. RSVP is widely deployed as | reasons other than bandwidth management. RSVP is widely deployed as | |||
| an MPLS signaling mechanism. BGP reuses the RSVP concept of Filter | an MPLS signaling mechanism. BGP reuses the RSVP concept of Filter | |||
| Specs to distribute firewall filters, although they are called Flow | Specs to distribute firewall filters, although they are called "Flow | |||
| Spec Component Types in BGP [RFC5575]. | Spec Component Types" in BGP [RFC5575]. | |||
| 6.3. Quick-Start TCP | 6.3. Quick-Start TCP | |||
| The suggested references for Quick-Start TCP are: | The suggested references for Quick-Start TCP are: | |||
| * Quick-Start for TCP and IP [RFC4782] | * "Quick-Start for TCP and IP" [RFC4782] | |||
| * Determining an appropriate initial sending rate over an | * "Determining an appropriate sending rate over an underutilized | |||
| underutilized network path [SAF07] | network path" [SAF07] | |||
| * Fast Startup Internet Congestion Control for Broadband Interactive | * "Fast Startup Internet Congestion Control for Broadband | |||
| Applications [Sch11] | Interactive Applications" [Sch11] | |||
| * Using Quick-Start to enhance TCP-friendly rate control performance | * "Using Quick-Start to enhance TCP-friendly rate control | |||
| in bidirectional satellite networks [QS-SAT] | performance in bidirectional satellite networks" [QS-SAT] | |||
| Quick-Start [RFC4782] is an Experimental TCP extension that leverages | Quick-Start is defined in an Experimental RFC [RFC4782] and is a TCP | |||
| support from the routers on the path to determine an allowed initial | extension that leverages support from the routers on the path to | |||
| sending rate for a path through the Internet, either at the start of | determine an allowed initial sending rate for a path through the | |||
| data transfers or after idle periods. Without information about the | Internet, either at the start of data transfers or after idle | |||
| path, a sender cannot easily determine an appropriate initial sending | periods. Without information about the path, a sender cannot easily | |||
| rate. The default TCP congestion control therefore uses the safe but | determine an appropriate initial sending rate. The default TCP | |||
| time-consuming slow-start algorithm [RFC5681]. With Quick-Start, | congestion control therefore uses the safe but time-consuming slow- | |||
| connections are allowed to use higher initial sending rates if there | start algorithm [RFC5681]. With Quick-Start, connections are allowed | |||
| is significant unused bandwidth along the path, and if the sender and | to use higher initial sending rates if there is significant unused | |||
| all of the routers along the path approve the request. | bandwidth along the path and if the sender and all of the routers | |||
| along the path approve the request. | ||||
| By examining the Time To Live (TTL) field in Quick-Start packets, a | By examining the Time To Live (TTL) field in Quick-Start packets, a | |||
| sender can determine if routers on the path have approved the Quick- | sender can determine if routers on the path have approved the Quick- | |||
| Start request. However, this method is unable to take into account | Start request. However, this method is unable to take into account | |||
| the routers hidden by tunnels or other network nodes invisible at the | the routers hidden by tunnels or other network nodes invisible at the | |||
| IP layer. | IP layer. | |||
| The protocol also includes a nonce that provides protection against | The protocol also includes a nonce that provides protection against | |||
| cheating routers and receivers. If the Quick-Start request is | cheating routers and receivers. If the Quick-Start request is | |||
| explicitly approved by all routers along the path, the TCP host can | explicitly approved by all routers along the path, the TCP host can | |||
| send at up to the approved rate; otherwise TCP would use the default | send at up to the approved rate; otherwise, TCP would use the default | |||
| congestion control. Quick-Start requires modifications in the | congestion control. Quick-Start requires modifications in the | |||
| involved end-systems as well in routers. Due to the resulting | involved end systems as well as in routers. Due to the resulting | |||
| deployment challenges, Quick-Start was only proposed in [RFC4782] for | deployment challenges, Quick-Start was only proposed in [RFC4782] for | |||
| controlled environments. | controlled environments. | |||
| The Quick-Start mechanism is a lightweight, coarse-grained, in-band, | The Quick-Start mechanism is a lightweight, coarse-grained, in-band, | |||
| network-assisted fast startup mechanism. The benefits are studied by | network-assisted fast startup mechanism. The benefits are studied by | |||
| simulation in a research paper [SAF07] that complements the protocol | simulation in a research paper [SAF07] that complements the protocol | |||
| specification. The study confirms that Quick-Start can significantly | specification. The study confirms that Quick-Start can significantly | |||
| speed up mid-sized data transfers. That paper also presents router | speed up mid-sized data transfers. That paper also presents router | |||
| algorithms that do not require keeping per-flow state. Later studies | algorithms that do not require keeping per-flow state. Later studies | |||
| [Sch11] comprehensively analyzes Quick-Start with a full Linux | [Sch11] comprehensively analyze Quick-Start with a full Linux | |||
| implementation and with a router fast path prototype using a network | implementation and with a router fast-path prototype using a network | |||
| processor. In both cases, Quick-Start could be implemented with | processor. In both cases, Quick-Start could be implemented with | |||
| limited additional complexity. | limited additional complexity. | |||
| 6.3.1. Reasons for Non-deployment | 6.3.1. Reasons for Non-deployment | |||
| However, experiments with Quick-Start in [Sch11] revealed several | However, experiments with Quick-Start in [Sch11] revealed several | |||
| challenges: | challenges: | |||
| * Having information from the routers along the path can reduce the | * Having information from the routers along the path can reduce the | |||
| risk of congestion, but cannot avoid it entirely. Determining | risk of congestion but cannot avoid it entirely. Determining | |||
| whether there is unused capacity is not trivial in actual router | whether there is unused capacity is not trivial in actual router | |||
| and host implementations. Data about available capacity visible | and host implementations. Data about available capacity visible | |||
| at the IP layer may be imprecise, and due to the propagation | at the IP layer may be imprecise, and due to the propagation | |||
| delay, information can already be outdated when it reaches a | delay, information can already be outdated when it reaches a | |||
| sender. There is a trade-off between the speedup of data | sender. There is a trade-off between the speedup of data | |||
| transfers and the risk of congestion even with Quick-Start. This | transfers and the risk of congestion even with Quick-Start. This | |||
| could be mitigated by only allowing Quick-Start to access a | could be mitigated by only allowing Quick-Start to access a | |||
| proportion of the unused capacity along a path. | proportion of the unused capacity along a path. | |||
| * For scalable router fast path implementation, it is important to | * For scalable router fast-path implementations, it is important to | |||
| enable parallel processing of packets, as this is a widely used | enable parallel processing of packets, as this is a widely used | |||
| method e.g. in network processors. One challenge is | method, e.g., in network processors. One challenge is | |||
| synchronization of information between packets that are processed | synchronization of information between packets that are processed | |||
| in parallel, which should be avoided as much as possible. | in parallel, which should be avoided as much as possible. | |||
| * Only some types of application traffic can benefit from Quick- | * Only some types of application traffic can benefit from Quick- | |||
| Start. Capacity needs to be requested and discovered. The | Start. Capacity needs to be requested and discovered. The | |||
| discovered capacity needs to be utilized by the flow, or it | discovered capacity needs to be utilized by the flow, or it | |||
| implicitly becomes available for other flows. Failing to use the | implicitly becomes available for other flows. Failing to use the | |||
| requested capacity may have already reduced the pool of Quick- | requested capacity may have already reduced the pool of Quick- | |||
| Start capacity that was made available to other competing Quick- | Start capacity that was made available to other competing Quick- | |||
| Start requests. The benefit is greatest when senders use this | Start requests. The benefit is greatest when senders use this | |||
| only for bulk flows and avoid sending unnecessary Quick-Start | only for bulk flows and avoid sending unnecessary Quick-Start | |||
| requests, e.g. for flows that only send a small amount of data. | requests, e.g., for flows that only send a small amount of data. | |||
| Choosing an appropriate request size requires application-internal | Choosing an appropriate request size requires application-internal | |||
| knowledge that is not commonly expressed by the transport API. | knowledge that is not commonly expressed by the transport API. | |||
| How a sender can determine the rate for an initial Quick-Start | How a sender can determine the rate for an initial Quick-Start | |||
| request is still a largely unsolved problem. | request is still a largely unsolved problem. | |||
| There is no known deployment of Quick-Start for TCP or other IETF | There is no known deployment of Quick-Start for TCP or other IETF | |||
| transports. | transports. | |||
| 6.3.2. Lessons Learned | 6.3.2. Lessons Learned | |||
| Some lessons can be learned from Quick-Start. Despite being a very | Some lessons can be learned from Quick-Start. Despite being a very | |||
| light-weight protocol, Quick-Start suffers from poor incremental | lightweight protocol, Quick-Start suffers from poor incremental | |||
| deployment properties, both regarding the required modifications in | deployment properties regarding both a) the required modifications in | |||
| network infrastructure as well as its interactions with applications. | network infrastructure and b) its interactions with applications. | |||
| Except for corner cases, congestion control can be quite efficiently | Except for corner cases, congestion control can be quite efficiently | |||
| performed end-to-end in the Internet, and in modern stacks there is | performed end to end in the Internet, and in modern stacks there is | |||
| not much room for significant improvement by additional network | not much room for significant improvement by additional network | |||
| support. | support. | |||
| After publication of the Quick-Start specification, there have been | After publication of the Quick-Start specification, there have been | |||
| large-scale experiments with an initial window of up to 10 MSS | large-scale experiments with an initial window of up to 10 segments | |||
| [RFC6928]. This alternative "IW10" approach can also ramp-up data | [RFC6928]. This alternative "IW10" approach can also ramp up data | |||
| transfers faster than the standard congestion control, but it only | transfers faster than the standard congestion control, but it only | |||
| requires sender-side modifications. As a result, this approach can | requires sender-side modifications. As a result, this approach can | |||
| be easier and incrementally deployed in the Internet. While | be easier and incrementally deployed in the Internet. While | |||
| theoretically Quick-Start can outperform "IW10", the improvement in | theoretically Quick-Start can outperform "IW10", the improvement in | |||
| completion time for data transfer times can, in many cases, be small. | completion time for data transfer times can, in many cases, be small. | |||
| After publication of [RFC6928], most modern TCP stacks have increased | After publication of [RFC6928], most modern TCP stacks have increased | |||
| their default initial window. | their default initial window. | |||
| 6.4. ICMP Source Quench | 6.4. ICMP Source Quench | |||
| The suggested references for ICMP Source Quench are: | The suggested reference for ICMP Source Quench is: | |||
| * INTERNET CONTROL MESSAGE PROTOCOL [RFC0792] | * "Internet Control Message Protocol" [RFC0792] | |||
| The ICMP Source Quench message [RFC0792] allowed an on-path router to | The ICMP Source Quench message [RFC0792] allowed an on-path router to | |||
| request the source of a flow to reduce its sending rate. This method | request the source of a flow to reduce its sending rate. This method | |||
| allowed a router to provide an early indication of impending | allowed a router to provide an early indication of impending | |||
| congestion on a path to the sources that contribute to that | congestion on a path to the sources that contribute to that | |||
| congestion. | congestion. | |||
| 6.4.1. Reasons for Non-deployment | 6.4.1. Reasons for Non-deployment | |||
| This method was deployed in Internet routers over a period of time, | This method was deployed in Internet routers over a period of time; | |||
| the reaction of endpoints to receiving this signal has varied. For | the reaction of endpoints to receiving this signal has varied. For | |||
| low speed links, with low multiplexing of flows the method could be | low-speed links, with low multiplexing of flows the method could be | |||
| used to regulate (momentarily reduce) the transmission rate. | used to regulate (momentarily reduce) the transmission rate. | |||
| However, the simple signal does not scale with link speed, or the | However, the simple signal does not scale with link speed or with the | |||
| number of flows sharing a link. | number of flows sharing a link. | |||
| The approach was overtaken by the evolution of congestion control | The approach was overtaken by the evolution of congestion control | |||
| methods in TCP [RFC2001], and later also by other IETF transports. | methods in TCP [RFC2001], and later also by other IETF transports. | |||
| Because these methods were based upon measurement of the end-to-end | Because these methods were based upon measurement of the end-to-end | |||
| path and an algorithm in the endpoint, they were able to evolve and | path and an algorithm in the endpoint, they were able to evolve and | |||
| mature more rapidly than methods relying on interactions between | mature more rapidly than methods relying on interactions between | |||
| operational routers and endpoint stacks. | operational routers and endpoint stacks. | |||
| After ICMP Source Quench was specified, the IETF began to recommend | After ICMP Source Quench was specified, the IETF began to recommend | |||
| that transports provide end-to-end congestion control [RFC2001]. The | that transports provide end-to-end congestion control [RFC2001]. The | |||
| Source Quench method has been obsoleted by the IETF [RFC6633], and | Source Quench method has been obsoleted by the IETF [RFC6633], and | |||
| both hosts and routers must now silently discard this message. | both hosts and routers must now silently discard this message. | |||
| 6.4.2. Lessons Learned | 6.4.2. Lessons Learned | |||
| This method had several problems: | This method had several problems. | |||
| First, [RFC0792] did not sufficiently specify how the sender would | First, [RFC0792] did not sufficiently specify how the sender would | |||
| react to the ICMP Source Quench signal from the path (e.g., | react to the ICMP Source Quench signal from the path (e.g., | |||
| [RFC1016]). There was ambiguity in how the sender should utilize | [RFC1016]). There was ambiguity in how the sender should utilize | |||
| this additional information. This could lead to unfairness in the | this additional information. This could lead to unfairness in the | |||
| way that receivers (or routers) responded to this message. | way that receivers (or routers) responded to this message. | |||
| Second, while the message did provide additional information, the | Second, while the message did provide additional information, the | |||
| Explicit Congestion Notification (ECN) mechanism [RFC3168] provided a | Explicit Congestion Notification (ECN) mechanism [RFC3168] provided a | |||
| more robust and informative signal for network nodes to provide early | more robust and informative signal for network nodes to provide early | |||
| indication that a path has become congested. | indication that a path has become congested. | |||
| The mechanism originated at a time when the Internet trust model was | The mechanism originated at a time when the Internet trust model was | |||
| very different. Most endpoint implementations did not attempt to | very different. Most endpoint implementations did not attempt to | |||
| verify that the message originated from an on-path node before they | verify that the message originated from an on-path node before they | |||
| utilized the message. This made it vulnerable to denial of service | utilized the message. This made it vulnerable to Denial-of-Service | |||
| attacks. In theory, routers might have chosen to use the quoted | (DoS) attacks. In theory, routers might have chosen to use the | |||
| packet contained in the ICMP payload to validate that the message | quoted packet contained in the ICMP payload to validate that the | |||
| originated from an on-path node, but this would have increased per- | message originated from an on-path node, but this would have | |||
| packet processing overhead for each router along the path, would have | increased per-packet processing overhead for each router along the | |||
| required transport functionality in the router to verify whether the | path and would have required transport functionality in the router to | |||
| quoted packet header corresponded to a packet the router had sent. | verify whether the quoted packet header corresponded to a packet the | |||
| In addition, section 5.2 of [RFC4443] noted ICMPv6-based attacks on | router had sent. In addition, Section 5.2 of [RFC4443] noted | |||
| hosts that would also have threatened routers processing ICMPv6 | ICMPv6-based attacks on hosts that would also have threatened routers | |||
| Source Quench payloads. As time passed, it became increasingly | processing ICMPv6 Source Quench payloads. As time passed, it became | |||
| obvious that the lack of validation of the messages exposed receivers | increasingly obvious that the lack of validation of the messages | |||
| to a security vulnerability where the messages could be forged to | exposed receivers to a security vulnerability where the messages | |||
| create a tangible denial of service opportunity. | could be forged to create a tangible DoS opportunity. | |||
| 6.5. Triggers for Transport (TRIGTRAN) | 6.5. Triggers for Transport (TRIGTRAN) | |||
| The suggested references for TRIGTRAN are: | The suggested references for TRIGTRAN are: | |||
| * TRIGTRAN BOF at IETF 55 [TRIGTRAN-55] | * TRIGTRAN BOF at IETF 55 [TRIGTRAN-55] | |||
| * TRIGTRAN BOF at IETF 56 [TRIGTRAN-56] | * TRIGTRAN BOF at IETF 56 [TRIGTRAN-56] | |||
| TCP [RFC0793] has a well-known weakness - the end-to-end flow control | TCP [RFC0793] has a well-known weakness -- the end-to-end flow | |||
| mechanism has only a single signal, the loss of a segment, and TCP | control mechanism has only a single signal, the loss of a segment, | |||
| implementations since the late 1980s have interpreted the loss of a | detected when no acknowledgment for the lost segment is received at | |||
| segment as evidence that the path between two endpoints may have | the sender. There are multiple reasons why the sender might not have | |||
| become congested enough to exhaust buffers on intermediate hops, so | received an acknowledgment for the segment. To name several, the | |||
| that the TCP sender should "back off" - reduce its sending rate until | segment could have been trapped in a routing loop, damaged in | |||
| it knows that its segments are now being delivered without loss | transmission and failed checksum verification at the receiver, or | |||
| [RFC5681]. More modern TCP stacks have added a growing array of | lost because some intermediate device discarded the packet, or any of | |||
| strategies about how to establish the sending rate [RFC5681], but | a variety of other things could have happened to the acknowledgment | |||
| when a path is no longer operational, TCP would continue to retry | on the way back from the receiver to the sender. TCP implementations | |||
| transmissions, which would fail, again, and double their | since the late 1980s have made the "safe" decision and have | |||
| Retransmission Time Out (RTO) timers with each failed transmission, | interpreted the loss of a segment as evidence that the path between | |||
| with the result that TCP would wait many seconds before retrying a | two endpoints may have become congested enough to exhaust buffers on | |||
| segment, even if the path becomes operational while the sender is | intermediate hops, so that the TCP sender should "back off" -- reduce | |||
| waiting for its next retry. | its sending rate until it knows that its segments are now being | |||
| delivered without loss [RFC5681]. | ||||
| The thinking behind TRIGTRAN was that if a path completely stopped | The thinking behind TRIGTRAN was that if a path completely stopped | |||
| working because a link along the path was "down", somehow something | working because a link along the path was "down", somehow something | |||
| along the path could signal TCP when that link returned to service, | along the path could signal TCP when that link returned to service, | |||
| and the sending TCP could retry immediately, without waiting for a | and the sending TCP could retry immediately, without waiting for a | |||
| full retransmission timeout (RTO) period. | full retransmission timeout (RTO) period. | |||
| 6.5.1. Reasons for Non-deployment | 6.5.1. Reasons for Non-deployment | |||
| The early dreams for TRIGTRAN were dashed because of an assumption | The early dreams for TRIGTRAN were dashed because of an assumption | |||
| that TRIGTRAN triggers would be unauthenticated. This meant that any | that TRIGTRAN triggers would be unauthenticated. This meant that any | |||
| "safe" TRIGTRAN mechanism would have relied on a mechanism such as | "safe" TRIGTRAN mechanism would have relied on a mechanism such as | |||
| setting the IPv4 TTL or IPv6 Hop Count to 255 at a sender and testing | setting the IPv4 TTL or IPv6 Hop Count to 255 at a sender and testing | |||
| that it was 254 upon receipt, so that a receiver could verify that a | that it was 254 upon receipt, so that a receiver could verify that a | |||
| signal was generated by an adjacent sender known to be on the path | signal was generated by an adjacent sender known to be on the path | |||
| being used, and not some unknown sender which might not even be on | being used and not some unknown sender that might not even be on the | |||
| the path (e.g., "The Generalized TTL Security Mechanism (GTSM)" | path (e.g., "The Generalized TTL Security Mechanism (GTSM)" | |||
| [RFC5082]). This situation is very similar to the case for ICMP | [RFC5082]). This situation is very similar to the case for ICMP | |||
| Source Quench messages as described in Section 6.4, which were also | Source Quench messages as described in Section 6.4, which were also | |||
| unauthenticated, and could be sent by an off-path attacker, resulting | unauthenticated and could be sent by an off-path attacker, resulting | |||
| in deprecation of ICMP Source Quench message processing [RFC6633]. | in deprecation of ICMP Source Quench message processing [RFC6633]. | |||
| TRIGTRAN's scope shrunk from "the path is down" to "the first-hop | TRIGTRAN's scope shrunk from "the path is down" to "the first-hop | |||
| link is down". | link is down." | |||
| But things got worse. | But things got worse. | |||
| Because TRIGTRAN triggers would only be provided when the first-hop | Because TRIGTRAN triggers would only be provided when the first-hop | |||
| link was "down", TRIGTRAN triggers couldn't replace normal TCP | link was "down", TRIGTRAN triggers couldn't replace normal TCP | |||
| retransmission behavior if the path failed because some link further | retransmission behavior if the path failed because some link further | |||
| along the network path was "down". So TRIGTRAN triggers added | along the network path was "down". So TRIGTRAN triggers added | |||
| complexity to an already complex TCP state machine, and did not allow | complexity to an already-complex TCP state machine and did not allow | |||
| any existing complexity to be removed. | any existing complexity to be removed. | |||
| There was also an issue that the TRIGTRAN signal was not sent in | There was also an issue that the TRIGTRAN signal was not sent in | |||
| response to a specific host that had been sending packets, and was | response to a specific host that had been sending packets and was | |||
| instead a signal that stimulated a response by any sender on the | instead a signal that stimulated a response by any sender on the | |||
| link. This needs to scale when there are multiple flows trying to | link. This needs to scale when there are multiple flows trying to | |||
| use the same resource, yet the sender of a trigger has no | use the same resource, yet the sender of a trigger has no | |||
| understanding how many of the potential traffic sources will respond | understanding of how many of the potential traffic sources will | |||
| by sending packets - if recipients of the signal back-off their | respond by sending packets -- if recipients of the signal "back off" | |||
| responses to a trigger to improve scaling, then that immediately | their responses to a trigger to improve scaling, then that | |||
| mitigates the benefit of the signal. | immediately mitigates the benefit of the signal. | |||
| Finally, intermediate forwarding nodes required modification to | Finally, intermediate forwarding nodes required modification to | |||
| provide TRIGTRAN triggers, but operators couldn't charge for TRIGTRAN | provide TRIGTRAN triggers, but operators couldn't charge for TRIGTRAN | |||
| triggers, so there was no way to recover the cost of modifying, | triggers, so there was no way to recover the cost of modifying, | |||
| testing, and deploying updated intermediate nodes. | testing, and deploying updated intermediate nodes. | |||
| Two TRIGTRAN BOFs were held, at IETF 55 [TRIGTRAN-55] and IETF 56 | Two TRIGTRAN BOFs were held, at IETF 55 [TRIGTRAN-55] and IETF 56 | |||
| [TRIGTRAN-56], but this work was not chartered, and there was no | [TRIGTRAN-56], but this work was not chartered, and there was no | |||
| interest in deploying TRIGTRAN unless it was chartered and | interest in deploying TRIGTRAN unless it was chartered and | |||
| standardized in the IETF. | standardized in the IETF. | |||
| 6.5.2. Lessons Learned. | 6.5.2. Lessons Learned | |||
| The reasons why this work was not chartered, much less deployed, | The reasons why this work was not chartered, much less deployed, | |||
| provide several useful lessons for researchers. | provide several useful lessons for researchers. | |||
| * TRIGTRAN started with a plausible value proposition, but | * TRIGTRAN started with a plausible value proposition, but | |||
| networking realities in the early 2000s forced reductions in scope | networking realities in the early 2000s forced reductions in scope | |||
| that led directly to reductions in potential benefits, but no | that led directly to reductions in potential benefits but no | |||
| corresponding reductions in costs and complexity. | corresponding reductions in costs and complexity. | |||
| * These reductions in scope were the direct result of an inability | * These reductions in scope were the direct result of an inability | |||
| for hosts to trust or authenticate TRIGTRAN signals they received | for hosts to trust or authenticate TRIGTRAN signals they received | |||
| from the network. | from the network. | |||
| * Operators did not believe they could charge for TRIGTRAN | * Operators did not believe they could charge for TRIGTRAN | |||
| signaling, because first-hop links didn't fail frequently, and | signaling, because first-hop links didn't fail frequently and | |||
| TRIGTRAN provided no reduction in operating expenses, so there was | TRIGTRAN provided no reduction in operating expenses, so there was | |||
| little incentive to purchase and deploy TRIGTRAN-capable network | little incentive to purchase and deploy TRIGTRAN-capable network | |||
| equipment. | equipment. | |||
| It is also worth noting that the targeted environment for TRIGTRAN in | It is also worth noting that the targeted environment for TRIGTRAN in | |||
| the late 1990s contained links with a relatively small number of | the late 1990s contained links with a relatively small number of | |||
| directly-connected hosts - for instance, cellular or satellite links. | directly connected hosts -- for instance, cellular or satellite | |||
| The transport community was well aware of the dangers of sender | links. The transport community was well aware of the dangers of | |||
| synchronization based on multiple senders receiving the same stimulus | sender synchronization based on multiple senders receiving the same | |||
| at the same time, but the working assumption for TRIGTRAN was that | stimulus at the same time, but the working assumption for TRIGTRAN | |||
| there wouldn't be enough senders for this to be a meaningful problem. | was that there wouldn't be enough senders for this to be a meaningful | |||
| In the 2010s, it is common for a single "link" to support many | problem. In the 2010s, it was common for a single "link" to support | |||
| senders and receivers on a single link, likely requiring TRIGTRAN | many senders and receivers, likely requiring TRIGTRAN senders to wait | |||
| senders to wait some random amount of time before sending after | some random amount of time before sending after receiving a TRIGTRAN | |||
| receiving a TRIGTRAN signal, which would have reduced the benefits of | signal, which would have reduced the benefits of TRIGTRAN even more. | |||
| TRIGTRAN even more. | ||||
| 6.6. Shim6 | 6.6. Shim6 | |||
| The suggested references for Shim6 are: | The suggested reference for Shim6 is: | |||
| * Shim6: Level 3 Multihoming Shim Protocol for IPv6 [RFC5533] | * "Shim6: Level 3 Multihoming Shim Protocol for IPv6" [RFC5533] | |||
| The IPv6 routing architecture [RFC1887] assumed that most sites on | The IPv6 routing architecture [RFC1887] assumed that most sites on | |||
| the Internet would be identified by Provider Assigned IPv6 prefixes, | the Internet would be identified by Provider Assigned IPv6 prefixes, | |||
| so that Default-Free Zone routers only contained routes to other | so that Default-Free Zone routers only contained routes to other | |||
| providers, resulting in a very small IPv6 global routing table. | providers, resulting in a very small IPv6 global routing table. | |||
| For a single-homed site, this could work well. A multihomed site | For a single-homed site, this could work well. A multihomed site | |||
| with only one upstream provider could also work well, although BGP | with only one upstream provider could also work well, although BGP | |||
| multihoming from a single upstream provider was often a premium | multihoming from a single upstream provider was often a premium | |||
| service (costing more than twice as much as two single-homed sites), | service (costing more than twice as much as two single-homed sites), | |||
| and if the single upstream provider went out of service, all of the | and if the single upstream provider went out of service, all of the | |||
| multihomed paths could fail simultaneously. | multihomed paths could fail simultaneously. | |||
| IPv4 sites often multihomed by obtaining Provider Independent | IPv4 sites often multihomed by obtaining Provider Independent | |||
| prefixes, and advertising these prefixes through multiple upstream | prefixes and advertising these prefixes through multiple upstream | |||
| providers. With the assumption that any multihomed IPv4 site would | providers. With the assumption that any multihomed IPv4 site would | |||
| also multihome in IPv6, it seemed likely that IPv6 routing would be | also multihome in IPv6, it seemed likely that IPv6 routing would be | |||
| subject to the same pressures to announce Provider Independent | subject to the same pressures to announce Provider Independent | |||
| prefixes, resulting in a global IPv6 routing table that exhibited the | prefixes, resulting in an IPv6 global routing table that exhibited | |||
| same explosive growth as the global IPv4 routing table. During the | the same explosive growth as the IPv4 global routing table. During | |||
| early 2000s, work began on a protocol that would provide multihoming | the early 2000s, work began on a protocol that would provide | |||
| for IPv6 sites without requiring sites to advertise Provider | multihoming for IPv6 sites without requiring sites to advertise | |||
| Independent prefixes into the IPv6 global routing table. | Provider Independent prefixes into the IPv6 global routing table. | |||
| This protocol, called Shim6, allowed two endpoints to exchange | This protocol, called "Shim6", allowed two endpoints to exchange | |||
| multiple addresses ("Locators") that all mapped to the same endpoint | multiple addresses ("Locators") that all mapped to the same endpoint | |||
| ("Identity"). After an endpoint learned multiple Locators for the | ("Identity"). After an endpoint learned multiple Locators for the | |||
| other endpoint, it could send to any of those Locators with the | other endpoint, it could send to any of those Locators with the | |||
| expectation that those packets would all be delivered to the endpoint | expectation that those packets would all be delivered to the endpoint | |||
| with the same Identity. Shim6 was an example of an "Identity/Locator | with the same Identity. Shim6 was an example of an "Identity/Locator | |||
| Split" protocol. | Split" protocol. | |||
| Shim6, as defined in [RFC5533] and related RFCs, provided a workable | Shim6, as defined in [RFC5533] and related RFCs, provided a workable | |||
| solution for IPv6 multihoming using Provider Assigned prefixes, | solution for IPv6 multihoming using Provider Assigned prefixes, | |||
| including capability discovery and negotiation, and allowing end-to- | including capability discovery and negotiation, and allowing end-to- | |||
| end application communication to continue even in the face of path | end application communication to continue even in the face of path | |||
| failure, because applications don't see Locator failures, and | failure, because applications don't see Locator failures and continue | |||
| continue to communicate with the same Identity using a different | to communicate with the same Identity using a different Locator. | |||
| Locator. | ||||
| 6.6.1. Reasons for Non-deployment | 6.6.1. Reasons for Non-deployment | |||
| Note that the problem being addressed was "site multihoming", but | Note that the problem being addressed was "site multihoming", but | |||
| Shim6 was providing "host multihoming". That meant that the decision | Shim6 was providing "host multihoming". That meant that the decision | |||
| about what path would be used was under host control, not under edge | about what path would be used was under host control, not under edge | |||
| router control. | router control. | |||
| Although more work could have been done to provide a better technical | Although more work could have been done to provide a better technical | |||
| solution, the biggest impediments to Shim6 deployment were | solution, the biggest impediments to Shim6 deployment were | |||
| operational and business considerations. These impediments were | operational and business considerations. These impediments were | |||
| discussed at multiple network operator group meetings, including | discussed at multiple network operator group meetings, including | |||
| [Shim6-35] at [NANOG-35]. | [Shim6-35] at [NANOG-35]. | |||
| The technical issues centered around concerns that Shim6 relied on | The technical issues centered around concerns that Shim6 relied on | |||
| the host to track all the connections, while also tracking Identity/ | the host to track all the connections, while also tracking Identity/ | |||
| Locator mappings in the kernel, and tracking failures to recognize | Locator mappings in the kernel and tracking failures to recognize | |||
| that an available path has failed. | that an available path has failed. | |||
| The operational issues centered around concerns that operators were | The operational issues centered around concerns that operators were | |||
| performing traffic engineering on traffic aggregates. With Shim6, | performing traffic engineering on traffic aggregates. With Shim6, | |||
| these operator traffic engineering policies must be pushed down to | these operator traffic engineering policies must be pushed down to | |||
| individual hosts. | individual hosts. | |||
| In addition, operators would have no visibility or control over the | In addition, operators would have no visibility or control over the | |||
| decision of hosts choosing to switch to another path. They expressed | decision of hosts choosing to switch to another path. They expressed | |||
| concerns that relying on hosts to steer traffic exposed operator | concerns that relying on hosts to steer traffic exposed operator | |||
| networks to oscillation based on feedback loops, if hosts moved from | networks to oscillation based on feedback loops, if hosts moved from | |||
| path to path frequently. Given that Shim6 was intended to support | path to path frequently. Given that Shim6 was intended to support | |||
| multihoming across operators, operators providing only one of the | multihoming across operators, operators providing only one of the | |||
| paths would have even less visibility as traffic suddenly appeared | paths would have even less visibility as traffic suddenly appeared | |||
| and disappeared on their networks. | and disappeared on their networks. | |||
| In addition, firewalls that expected to find a TCP or UDP transport- | In addition, firewalls that expected to find a TCP or UDP transport- | |||
| level protocol header in the IP payload would see a Shim6 Identity | level protocol header in the IP payload would see a Shim6 Identity | |||
| header instead, and would not perform transport-protocol-based | header instead, and they would not perform transport-protocol-based | |||
| firewalling functions because the firewall's normal processing logic | firewalling functions because the firewall's normal processing logic | |||
| would not look past the Identity header. | would not look past the Identity header. The firewall would perform | |||
| its default action, which would most likely be to drop packets that | ||||
| don't match any processing rule. | ||||
| The business issues centered on reducing or removing the ability to | The business issues centered on reducing or removing the ability to | |||
| sell BGP multihoming service to their own customers, which is often | sell BGP multihoming service to their own customers, which is often | |||
| more expensive than two single-homed connectivity services. | more expensive than two single-homed connectivity services. | |||
| 6.6.2. Lessons Learned | 6.6.2. Lessons Learned | |||
| It is extremely important to take operational concerns into account | It is extremely important to take operational concerns into account | |||
| when a path-aware protocol is making decisions about path selection | when a Path Aware protocol is making decisions about path selection | |||
| that may conflict with existing operational practices and business | that may conflict with existing operational practices and business | |||
| considerations. | considerations. | |||
| 6.6.3. Addendum on MultiPath TCP | 6.6.3. Addendum on Multipath TCP | |||
| During discussions in the PANRG session at IETF 103 [PANRG-103-Min], | During discussions in the PANRG session at IETF 103 [PANRG-103-Min], | |||
| Lars Eggert, past Transport Area Director, pointed out that during | Lars Eggert, past Transport Area Director, pointed out that during | |||
| charter discussions for the Multipath TCP working group [MP-TCP], | charter discussions for the Multipath TCP Working Group [MP-TCP], | |||
| operators expressed concerns that customers could use Multipath TCP | operators expressed concerns that customers could use Multipath TCP | |||
| to loadshare TCP connections across operators simultaneously and | to load-share TCP connections across operators simultaneously and | |||
| compare passive performance measurements across network paths in real | compare passive performance measurements across network paths in real | |||
| time, changing the balance of power in those business relationships. | time, changing the balance of power in those business relationships. | |||
| Although the Multipath TCP working group was chartered, this concern | Although the Multipath TCP Working Group was chartered, this concern | |||
| could have acted as an obstacle to deployment. | could have acted as an obstacle to deployment. | |||
| Operator objections to Shim6 were focused on technical concerns, but | Operator objections to Shim6 were focused on technical concerns, but | |||
| this concern could have also been an obstacle to Shim6 deployment if | this concern could have also been an obstacle to Shim6 deployment if | |||
| the technical concerns had been overcome. | the technical concerns had been overcome. | |||
| 6.7. Next Steps in Signaling (NSIS) | 6.7. Next Steps in Signaling (NSIS) | |||
| The suggested references for Next Steps in Signaling (NSIS) are: | The suggested references for Next Steps in Signaling (NSIS) are: | |||
| * the concluded working group charter [NSIS-CHARTER-2001] | * the concluded working group charter [NSIS-CHARTER-2001] | |||
| * GIST: General Internet Signalling Transport [RFC5971] | * "GIST: General Internet Signalling Transport" [RFC5971] | |||
| * NAT/Firewall NSIS Signaling Layer Protocol (NSLP) [RFC5973] | * "NAT/Firewall NSIS Signaling Layer Protocol (NSLP)" [RFC5973] | |||
| * NSIS Signaling Layer Protocol (NSLP) for Quality-of-Service | * "NSIS Signaling Layer Protocol (NSLP) for Quality-of-Service | |||
| Signaling [RFC5974] | Signaling" [RFC5974] | |||
| * Authorization for NSIS Signaling Layer Protocols [RFC5981] | * "Authorization for NSIS Signaling Layer Protocols" [RFC5981] | |||
| The NSIS Working Group worked on signaling techniques for network | The NSIS Working Group worked on signaling techniques for network- | |||
| layer resources (e.g., QoS resource reservations, Firewall and NAT | layer resources (e.g., QoS resource reservations, Firewall and NAT | |||
| traversal). | traversal). | |||
| When RSVP [RFC2205] was used in deployments, a number of questions | When RSVP [RFC2205] was used in deployments, a number of questions | |||
| came up about its perceived limitations and potential missing | came up about its perceived limitations and potential missing | |||
| features. The issues noted in the NSIS Working Group charter | features. The issues noted in the NSIS Working Group charter | |||
| [NSIS-CHARTER-2001] include interworking between domains with | [NSIS-CHARTER-2001] include interworking between domains with | |||
| different QoS architectures, mobility and roaming for IP interfaces, | different QoS architectures, mobility and roaming for IP interfaces, | |||
| and complexity. Later, the lack of security in RSVP was also | and complexity. Later, the lack of security in RSVP was also | |||
| recognized ([RFC4094]). | recognized [RFC4094]. | |||
| The NSIS Working Group was chartered to tackle those issues and | The NSIS Working Group was chartered to tackle those issues and | |||
| initially focused on QoS signaling as its primary use case. However, | initially focused on QoS signaling as its primary use case. However, | |||
| over time a new approach evolved that introduced a modular | over time a new approach evolved that introduced a modular | |||
| architecture using application-specific signaling protocols (the NSIS | architecture using two application-specific signaling protocols: a) | |||
| Signaling Layer Protocol (NSLP)) on top of a generic signaling | the NSIS Signaling Layer Protocol (NSLP) on top of b) a generic | |||
| transport protocol (the NSIS Transport Layer Protocol (NTLP)). | signaling transport protocol (the NSIS Transport Layer Protocol | |||
| (NTLP)). | ||||
| The NTLP is defined in [RFC5971]. Two NSLPs are defined: the NSIS | NTLP is defined in [RFC5971]. Two types of NSLPs are defined: an | |||
| Signaling Layer Protocol (NSLP) for Quality-of-Service Signaling | NSLP for QoS signaling [RFC5974] and an NSLP for NATs/firewalls | |||
| [RFC5974] as well as the NAT/Firewall NSIS Signaling Layer Protocol | [RFC5973]. | |||
| (NSLP) [RFC5973]. | ||||
| 6.7.1. Reasons for Non-deployment | 6.7.1. Reasons for Non-deployment | |||
| The obstacles for deployment can be grouped into implementation- | The obstacles for deployment can be grouped into implementation- | |||
| related aspects and operational aspects. | related aspects and operational aspects. | |||
| * Implementation-related aspects: | * Implementation-related aspects: | |||
| Although NSIS provides benefits with respect to flexibility, | Although NSIS provides benefits with respect to flexibility, | |||
| mobility, and security compared to other network signaling | mobility, and security compared to other network signaling | |||
| techniques, hardware vendors were reluctant to deploy this solution, | techniques, hardware vendors were reluctant to deploy this | |||
| because it would require additional implementation effort and would | solution, because it would require additional implementation | |||
| result in additional complexity for router implementations. | effort and would result in additional complexity for router | |||
| implementations. | ||||
| The NTLP mainly operates as path-coupled signaling protocol, i.e, its | NTLP mainly operates as a path-coupled signaling protocol, i.e., | |||
| messages are processed at the intermediate node's control plane that | its messages are processed at the control plane of each | |||
| are also forwarding the data flows. This requires a mechanism to | intermediate node that is also forwarding the data flows. This | |||
| intercept signaling packets while they are forwarded in the same | requires a mechanism to intercept signaling packets while they are | |||
| manner (especially along the same path) as data packets. NSIS uses | forwarded in the same manner (especially along the same path) as | |||
| the IPv4 and IPv6 Router Alert Option (RAO) to allow for interception | data packets. NSIS uses the IPv4 and IPv6 Router Alert Option | |||
| of those path-coupled signaling messages, and this technique requires | (RAO) to allow for interception of those path-coupled signaling | |||
| router implementations to correctly understand and implement the | messages, and this technique requires router implementations to | |||
| handling of RAOs, e.g., to only process packet with RAOs of interest | correctly understand and implement the handling of RAOs, e.g., to | |||
| and to leave packets with irrelevant RAOs in the fast forwarding | only process packets with RAOs of interest and to leave packets | |||
| processing path (a comprehensive discussion of these issues can be | with irrelevant RAOs in the fast forwarding processing path (a | |||
| found in [RFC6398]). The latter was an issue with some router | comprehensive discussion of these issues can be found in | |||
| implementations at the time of standardization. | [RFC6398]). The latter was an issue with some router | |||
| implementations at the time of standardization. | ||||
| Another reason is that path-coupled signaling protocols that interact | Another reason is that path-coupled signaling protocols that | |||
| with routers and request manipulation of state at these routers (or | interact with routers and request manipulation of state at these | |||
| any other network element in general) are under scrutiny: a packet | routers (or any other network element in general) are under | |||
| (or sequence of packets) out of the mainly untrusted data path is | scrutiny: a packet (or sequence of packets) out of the mainly | |||
| requesting creation and manipulation of network state. This is seen | untrusted data path is requesting creation and manipulation of | |||
| as potentially dangerous (e.g., opens up a Denial of Service (DoS) | network state. This is seen as potentially dangerous (e.g., opens | |||
| threat to a router's control plane) and difficult for an operator to | up a DoS threat to a router's control plane) and difficult for an | |||
| control. Path-coupled signaling approaches were considered | operator to control. Path-coupled signaling approaches were | |||
| problematic (see also section 3 of [RFC6398]). There are | considered problematic (see also Section 3 of [RFC6398]). There | |||
| recommendations on how to secure NSIS nodes and deployments (e.g., | are recommendations on how to secure NSIS nodes and deployments | |||
| [RFC5981]). | (e.g., [RFC5981]). | |||
| * Operational Aspects: | * Operational Aspects: | |||
| NSIS not only required trust between customers and their provider, | NSIS not only required trust between customers and their provider, | |||
| but also among different providers. Especially, QoS signaling | but also among different providers. In particular, QoS signaling | |||
| techniques would require some kind of dynamic service level agreement | techniques would require some kind of dynamic SLA support that | |||
| support that would imply (potentially quite complex) bilateral | would imply (potentially quite complex) bilateral negotiations | |||
| negotiations between different Internet service providers. This | between different Internet Service Providers. This complexity was | |||
| complexity was not considered to be justified and increasing the | not considered to be justified, and increasing the bandwidth (and | |||
| bandwidth (and thus avoiding bottlenecks) was cheaper than actively | thus avoiding bottlenecks) was cheaper than actively managing | |||
| managing network resource bottlenecks by using path-coupled QoS | network resource bottlenecks by using path-coupled QoS signaling | |||
| signaling techniques. Furthermore, an end-to-end path typically | techniques. Furthermore, an end-to-end path typically involves | |||
| involves several provider domains and these providers need to closely | several provider domains, and these providers need to closely | |||
| cooperate in cases of failures. | cooperate in cases of failures. | |||
| 6.7.2. Lessons Learned | 6.7.2. Lessons Learned | |||
| One goal of NSIS was to decrease the complexity of the signaling | One goal of NSIS was to decrease the complexity of the signaling | |||
| protocol, but a path-coupled signaling protocol comes with the | protocol, but a path-coupled signaling protocol comes with the | |||
| intrinsic complexity of IP-based networks, beyond the complexity of | intrinsic complexity of IP-based networks, beyond the complexity of | |||
| the signaling protocol itself. Sources of intrinsic complexity | the signaling protocol itself. Sources of intrinsic complexity | |||
| include: | include: | |||
| * the presence of asymmetric routes between endpoints and routers | * the presence of asymmetric routes between endpoints and routers. | |||
| * the lack of security and trust at large in the Internet | * the lack of security and trust at large in the Internet | |||
| infrastructure | infrastructure. | |||
| * the presence of different trust boundaries | * the presence of different trust boundaries. | |||
| * the effects of best-effort networks (e.g., robustness to packet | * the effects of best-effort networks (e.g., robustness to packet | |||
| loss) | loss). | |||
| * divergence from the fate sharing principle (e.g., state within the | * divergence from the fate-sharing principle (e.g., state within the | |||
| network). | network). | |||
| Any path-coupled signaling protocol has to deal with these realities. | Any path-coupled signaling protocol has to deal with these realities. | |||
| Operators view the use of IPv4 and IPv6 Router Alert Option (RAO) to | Operators view the use of IPv4 and IPv6 Router Alert Options (RAOs) | |||
| signal routers along the path from end systems with suspicion, | to signal routers along the path from end systems with suspicion, | |||
| because these end systems are usually not authenticated and heavy use | because these end systems are usually not authenticated and heavy use | |||
| of RAOs can easily increase the CPU load on routers that are designed | of RAOs can easily increase the CPU load on routers that are designed | |||
| to process most packets using a hardware "fast path" and diverting | to process most packets using a hardware "fast path" and diverting | |||
| packets containing RAO to a slower, more capable processor. | packets containing RAOs to a slower, more capable processor. | |||
| 6.8. IPv6 Flow Label | 6.8. IPv6 Flow Labels | |||
| The suggested references for IPv6 Flow Label are: | The suggested reference for IPv6 Flow Labels is: | |||
| * IPv6 Flow Label Specification [RFC6437] | * "IPv6 Flow Label Specification" [RFC6437] | |||
| IPv6 specifies a 20-bit field Flow Label field [RFC6437], included in | IPv6 specifies a 20-bit Flow Label field [RFC6437], included in the | |||
| the fixed part of the IPv6 header and hence present in every IPv6 | fixed part of the IPv6 header and hence present in every IPv6 packet. | |||
| packet. An endpoint sets the value in this field to one of a set of | An endpoint sets the value in this field to one of a set of | |||
| pseudo-randomly assigned values. If a packet is not part of any | pseudorandomly assigned values. If a packet is not part of any flow, | |||
| flow, the flow label value is set to zero [RFC3697]. A number of | the flow label value is set to zero [RFC3697]. A number of Standards | |||
| Standards Track and Best Current Practice RFCs (e.g., [RFC8085], | Track and Best Current Practice RFCs (e.g., [RFC8085], [RFC6437], | |||
| [RFC6437], [RFC6438]) encourage IPv6 endpoints to set a non-zero | [RFC6438]) encourage IPv6 endpoints to set a non-zero value in this | |||
| value in this field. A multiplexing transport could choose to use | field. A multiplexing transport could choose to use multiple flow | |||
| multiple flow labels to allow the network to independently forward | labels to allow the network to either independently forward its | |||
| its subflows, or to use one common value for the traffic aggregate. | subflows or use one common value for the traffic aggregate. The flow | |||
| The flow label is present in all fragments. IPsec was originally put | label is present in all fragments. IPsec was originally put forward | |||
| forward as one important use-case for this mechanism and does encrypt | as one important use case for this mechanism and does encrypt the | |||
| the field [RFC6438]. | field [RFC6438]. | |||
| Once set, the flow label can provide information that can help inform | Once set, the flow label can provide information that can help inform | |||
| network nodes about subflows present at the transport layer, without | network nodes about subflows present at the transport layer, without | |||
| needing to interpret the setting of upper layer protocol fields | needing to interpret the setting of upper-layer protocol fields | |||
| [RFC6294]. This information can also be used to coordinate how | [RFC6294]. This information can also be used to coordinate how | |||
| aggregates of transport subflows are grouped when queued in the | aggregates of transport subflows are grouped when queued in the | |||
| network and to select appropriate per-flow forwarding when choosing | network and to select appropriate per-flow forwarding when choosing | |||
| between alternate paths [RFC6438] (e.g. for Equal Cost Multipath | between alternate paths [RFC6438] (e.g., for Equal-Cost Multipath | |||
| Routing (ECMP) and Link Aggregation (LAG)). | (ECMP) routing and Link Aggregation Groups (LAGs)). | |||
| 6.8.1. Reasons for Non-deployment | 6.8.1. Reasons for Non-deployment | |||
| Despite the field being present in every IPv6 packet, the mechanism | Despite the field being present in every IPv6 packet, the mechanism | |||
| did not receive as much use as originally envisioned. One reason is | did not receive as much use as originally envisioned. One reason is | |||
| that to be useful it requires engagement by two different | that to be useful it requires engagement by two different | |||
| stakeholders: | stakeholders: | |||
| * Endpoint Implementation: | * Endpoint Implementation: | |||
| For network nodes along a path to utilize the flow label there needs | For network nodes along a path to utilize the flow label, there | |||
| to be a non-zero value inserted in the field [RFC6437] at the sending | needs to be a non-zero value inserted in the field [RFC6437] at | |||
| endpoint. There needs to be an incentive for an endpoint to set an | the sending endpoint. There needs to be an incentive for an | |||
| appropriate non-zero value. The value should appropriately reflect | endpoint to set an appropriate non-zero value. The value should | |||
| the level of aggregation the traffic expects to be provided by the | appropriately reflect the level of aggregation the traffic expects | |||
| network. However, this requires the stack to know granularity at | to be provided by the network. However, this requires the stack | |||
| which flows should be identified (or conversely which flows should | to know granularity at which flows should be identified (or, | |||
| receive aggregated treatment), i.e., which packets carry the same | conversely, which flows should receive aggregated treatment), | |||
| flow label. Therefore, setting a non-zero value may result in | i.e., which packets carry the same flow label. Therefore, setting | |||
| additional choices that need to be made by an application developer. | a non-zero value may result in additional choices that need to be | |||
| made by an application developer. | ||||
| Although the standard [RFC3697] forbids any encoding of meaning into | Although the original flow label standard [RFC3697] forbids any | |||
| the flow label value, the opportunity to use the flow label as a | encoding of meaning into the flow label value, the opportunity to | |||
| covert channel or to signal other meta-information may have raised | use the flow label as a covert channel or to signal other meta- | |||
| concerns about setting a non-zero value [RFC6437]. | information may have raised concerns about setting a non-zero | |||
| value [RFC6437]. | ||||
| Before methods are widely deployed to use this method, there could be | Before methods are widely deployed to use this method, there could | |||
| no incentive for an endpoint to set the field. | be no incentive for an endpoint to set the field. | |||
| * Operational support in network nodes: | * Operational support in network nodes: | |||
| A benefit can only be realized when a network node along the path | A benefit can only be realized when a network node along the path | |||
| also uses this information to inform its decisions. Network | also uses this information to inform its decisions. Network | |||
| equipment (routers and/or middleboxes) need to include appropriate | equipment (routers and/or middleboxes) need to include appropriate | |||
| support so they can utilize the field when making decisions about how | support in order to utilize the field when making decisions about | |||
| to classify flows, or to inform forwarding choices. Use of any | how to classify flows or forward packets. The use of any optional | |||
| optional feature in a network node also requires corresponding | feature in a network node also requires corresponding updates to | |||
| updates to operational procedures, and therefore is normally only | operational procedures and therefore is normally only introduced | |||
| introduced when the cost can be justified. | when the cost can be justified. | |||
| A benefit from utilizing the flow label is expected to be increased | A benefit from utilizing the flow label is expected to be | |||
| quality of experience for applications - but this comes at some | increased quality of experience for applications -- but this comes | |||
| operational cost to an operator, and requires endpoints to set the | at some operational cost to an operator and requires endpoints to | |||
| field. | set the field. | |||
| 6.8.2. Lessons Learned | 6.8.2. Lessons Learned | |||
| The flow label is a general purpose header field for use by the path. | The flow label is a general-purpose header field for use by the path. | |||
| Multiple uses have been proposed. One candidate use was to reduce | Multiple uses have been proposed. One candidate use was to reduce | |||
| the complexity of forwarding decisions. However, modern routers can | the complexity of forwarding decisions. However, modern routers can | |||
| use a "fast path", often taking advantage of hardware to accelerate | use a "fast path", often taking advantage of hardware to accelerate | |||
| processing. The method can assist in more complex forwarding, such | processing. The method can assist in more complex forwarding, such | |||
| as ECMP and load balancing. | as ECMP routing and load balancing. | |||
| Although [RFC6437] recommended that endpoints should by default | Although [RFC6437] recommended that endpoints should by default | |||
| choose uniformly-distributed labels for their traffic, the | choose uniformly distributed labels for their traffic, the | |||
| specification permitted an endpoint to choose to set a zero value. | specification permitted an endpoint to choose to set a zero value. | |||
| This ability of endpoints to choose to set a flow label of zero has | This ability of endpoints to choose to set a flow label of zero has | |||
| had consequences on deployability: | had consequences on deployability: | |||
| * Before wide-scale support by endpoints, it would be impossible to | * Before wide-scale support by endpoints, it would be impossible to | |||
| rely on a non-zero flow label being set. Network nodes therefore | rely on a non-zero flow label being set. Network nodes therefore | |||
| would need to also employ other techniques to realize equivalent | would need to also employ other techniques to realize equivalent | |||
| functions. An example of a method is one assuming semantics of | functions. An example of a method is one assuming semantics of | |||
| the source port field to provide entropy input to a network-layer | the source port field to provide entropy input to a network-layer | |||
| hash. This use of a 5-tuple to classify a packet represents a | hash. This use of a 5-tuple to classify a packet represents a | |||
| layering violation [RFC6294]. When other methods have been | layering violation [RFC6294]. When other methods have been | |||
| deployed, they increase the cost of deploying standards-based | deployed, they increase the cost of deploying standards-based | |||
| methods, even though they may offer less control to endpoints and | methods, even though they may offer less control to endpoints and | |||
| result in potential interaction with other uses/interpretation of | result in potential interaction with other uses/interpretation of | |||
| the field. | the field. | |||
| * Even though the flow label is specified as an end-to-end field, | * Even though the flow label is specified as an end-to-end field, | |||
| some network paths have been observed to not transparently forward | some network paths have been observed to not transparently forward | |||
| the flow label. This could result from non-conformant equipment, | the flow label. This could result from non-conformant equipment | |||
| or could indicate that some operational networks have chosen to | or could indicate that some operational networks have chosen to | |||
| re-use the protocol field for other (e.g. internal purposes). | reuse the protocol field for other (e.g., internal) purposes. | |||
| This results in lack of transparency, and a deployment hurdle to | This results in lack of transparency, and a deployment hurdle to | |||
| endpoints expecting that they can set a flow label that is | endpoints expecting that they can set a flow label that is | |||
| utilized by the network. The more recent practice of "greasing" | utilized by the network. The more recent practice of "greasing" | |||
| [GREASE] would suggest that a different outcome could have been | [GREASE] would suggest that a different outcome could have been | |||
| achieved if endpoints were always required to set a non-zero | achieved if endpoints were always required to set a non-zero | |||
| value. | value. | |||
| * [RFC1809] noted that setting the choice of the flow label value | * [RFC1809] noted that setting the choice of the flow label value | |||
| can depend on the expectations of the traffic generated by an | can depend on the expectations of the traffic generated by an | |||
| application, which suggests an API should be presented to control | application, which suggests that an API should be presented to | |||
| the setting or policy that is used. However, many currently | control the setting or policy that is used. However, many | |||
| available APIs do not have this support. | currently available APIs do not have this support. | |||
| A growth in the use of encrypted transports, (e.g. QUIC [QUIC-WG]) | A growth in the use of encrypted transports (e.g., QUIC [RFC9000]) | |||
| seems likely to raise similar issues to those discussed above and | seems likely to raise issues similar to those discussed above and | |||
| could motivate renewed interest in utilizing the flow label. | could motivate renewed interest in utilizing the flow label. | |||
| 6.9. Explicit Congestion Notification (ECN) | 6.9. Explicit Congestion Notification (ECN) | |||
| The suggested references for Explicit Congestion Notification (ECN) | The suggested references for Explicit Congestion Notification (ECN) | |||
| are: | are: | |||
| * Recommendations on Queue Management and Congestion Avoidance in | * "Recommendations on Queue Management and Congestion Avoidance in | |||
| the Internet [RFC2309] | the Internet" [RFC2309] | |||
| * A Proposal to add Explicit Congestion Notification (ECN) to IP | * "A Proposal to add Explicit Congestion Notification (ECN) to IP" | |||
| [RFC2481] | [RFC2481] | |||
| * The Addition of Explicit Congestion Notification (ECN) to IP | * "The Addition of Explicit Congestion Notification (ECN) to IP" | |||
| [RFC3168] | [RFC3168] | |||
| * Implementation Report on Experiences with Various TCP RFCs | * "Implementation Report on Experiences with Various TCP RFCs" | |||
| [vista-impl], slides 6 and 7 | [vista-impl], slides 6 and 7 | |||
| * Implementation and Deployment of ECN [SallyFloyd] | * "Implementation and Deployment of ECN" (at [SallyFloyd]) | |||
| In the early 1990s, the large majority of Internet traffic used TCP | In the early 1990s, the large majority of Internet traffic used TCP | |||
| as its transport protocol, but TCP had no way to detect path | as its transport protocol, but TCP had no way to detect path | |||
| congestion before the path was so congested that packets were being | congestion before the path was so congested that packets were being | |||
| dropped, and these congestion events could affect all senders using a | dropped. These congestion events could affect all senders using a | |||
| path, either by "lockout", where long-lived flows monopolized the | path, either by "lockout", where long-lived flows monopolized the | |||
| queues along a path, or by "full queues", where queues remain full, | queues along a path, or by "full queues", where queues remain full, | |||
| or almost full, for a long period of time. | or almost full, for a long period of time. | |||
| In response to this situation, "Active Queue Management" (AQM) was | In response to this situation, "Active Queue Management" (AQM) was | |||
| deployed in the network. A number of AQM disciplines have been | deployed in the network. A number of AQM disciplines have been | |||
| deployed, but one common approach was that routers dropped packets | deployed, but one common approach was that routers dropped packets | |||
| when a threshold buffer length was reached, so that transport | when a threshold buffer length was reached, so that transport | |||
| protocols like TCP that were responsive to loss would detect this | protocols like TCP that were responsive to loss would detect this | |||
| loss and reduce their sending rates. Random Early Detection (RED) | loss and reduce their sending rates. Random Early Detection (RED) | |||
| was one such proposal in the IETF. As the name suggests, a router | was one such proposal in the IETF. As the name suggests, a router | |||
| using RED as its AQM discipline that detected time-averaged queue | using RED as its AQM discipline that detected time-averaged queue | |||
| lengths passing a threshold would choose incoming packets | lengths passing a threshold would choose incoming packets | |||
| probabilistically to be dropped [RFC2309]. In response to this | probabilistically to be dropped [RFC2309]. | |||
| situation, "Active Queue Management" (AQM) was deployed in the | ||||
| network. A number of AQM disciplines have been deployed, but one | ||||
| common approach was that routers dropped packets when a threshold | ||||
| buffer length was reached, so that transport protocols like TCP that | ||||
| were responsive to loss would detect this loss and reduce their | ||||
| sending rates. Random Early Detection (RED) was one such proposal in | ||||
| the IETF. As the name suggests, a router using RED as its AQM | ||||
| discipline that detected time-averaged queue lengths passing a | ||||
| threshold would choose incoming packets probabilistically to be | ||||
| dropped [RFC2309]. | ||||
| Researchers suggested that providing "explicit congestion | Researchers suggested providing "explicit congestion notifications" | |||
| notifications" to senders when routers along the path detected their | to senders when routers along the path detected that their queues | |||
| queues were building, so that some senders would "slow down" as if a | were building, giving senders an opportunity to "slow down" as if a | |||
| loss had occurred, so that the path queues had time to drain, and the | loss had occurred, giving path queues time to drain, while the path | |||
| path still had sufficient buffer capacity to accommodate bursty | still had sufficient buffer capacity to accommodate bursty arrivals | |||
| arrivals of packets from other senders. This was proposed as an | of packets from other senders. This was proposed as an experiment in | |||
| Experiment in [RFC2481], and standardized in [RFC3168]. | [RFC2481] and standardized in [RFC3168]. | |||
| A key aspect of ECN was the use of IP header fields rather than IP | A key aspect of ECN was the use of IP header fields rather than IP | |||
| options to carry explicit congestion notifications, since the | options to carry explicit congestion notifications, since the | |||
| proponents recognized that | proponents recognized that | |||
| Many routers process the "regular" headers in IP packets more | Many routers process the "regular" headers in IP packets more | |||
| efficiently than they process the header information in IP | efficiently than they process the header information in IP | |||
| options. | options. | |||
| Unlike most of the Path Aware technologies included in this document, | Unlike most of the Path Aware technologies included in this document, | |||
| the story of ECN continues to the present day, and encountered a | the story of ECN continues to the present day and encountered a large | |||
| large number of Lessons Learned during that time. The early history | number of Lessons Learned during that time. The early history of ECN | |||
| of ECN (non-)deployment provides Lessons Learned that were not | (non-)deployment provides Lessons Learned that were not captured by | |||
| captured by other contributions in Section 6, so that is the emphasis | other contributions in Section 6, so that is the emphasis in this | |||
| in this section of the document. | section of the document. | |||
| 6.9.1. Reasons for Non-deployment | 6.9.1. Reasons for Non-deployment | |||
| There are at least three sub-stories - ECN deployment in clients, ECN | ECN deployment relied on three factors -- support in client | |||
| deployment in routers, and AQM deployment in operational networks. | implementations, support in router implementations, and deployment | |||
| All three sub-stories mattered. | decisions in operational networks. | |||
| The proponents of ECN did so much right, anticipating many of the | The proponents of ECN did so much right, anticipating many of the | |||
| Lessons Learned now recognized in Section 4. They recognized the | Lessons Learned now recognized in Section 4. They recognized the | |||
| need to support incremental deployment (Section 4.2). They | need to support incremental deployment (Section 4.2). They | |||
| considered the impact on router throughput (Section 4.8). They even | considered the impact on router throughput (Section 4.8). They even | |||
| considered trust issues between end nodes and the network, both for | considered trust issues between end nodes and the network, for both | |||
| non-compliant end nodes (Section 4.10) and non-compliant routers | non-compliant end nodes (Section 4.10) and non-compliant routers | |||
| (Section 4.9). | (Section 4.9). | |||
| They were rewarded with ECN being implemented in major operating | They were rewarded with ECN being implemented in major operating | |||
| systems, both for end nodes and for routers. A number of | systems, for both end nodes and routers. A number of implementations | |||
| implementations are listed under "Implementation and Deployment of | are listed under "Implementation and Deployment of ECN" at | |||
| ECN" at [SallyFloyd]. | [SallyFloyd]. | |||
| What they did not anticipate, was routers that would crash, when they | What they did not anticipate was routers that would crash when they | |||
| saw bits 6 and 7 in the IPv4 TOS octet [RFC0791]/IPv6 Traffic Class | saw bits 6 and 7 in the IPv4 Type of Service (TOS) octet [RFC0791] / | |||
| field [RFC2460], which [RFC2481] redefined to be "currently unused", | IPv6 Traffic Class field [RFC2460], which [RFC2481] redefined to be | |||
| being set to a non-zero value. | "Currently Unused", being set to a non-zero value. | |||
| As described in [vista-impl], | As described in [vista-impl] ("IGD" stands for "Intermediate Gateway | |||
| Device"), | ||||
| Intermediate Gateway Device problem #1: one of the most popular | | IGD problem #1: one of the most popular versions from one of the | |||
| versions from one of the most popular vendors. When a data packet | | most popular vendors. When a data packet arrives with either | |||
| arrives with either ECT(0) or ECT(1) (indicating successful ECN | | ECT(0) or ECT(1) (indicating successful ECN capability | |||
| capability negotiation) indicated, router crashed. Cannot be | | negotiation) indicated, router crashed. Cannot be recovered at | |||
| recovered at TCP layer (sic) | | TCP layer [sic] | |||
| This implementation, which would be run on a significant percentage | This implementation, which would be run on a significant percentage | |||
| of Internet end nodes, was shipped with ECN disabled, as was true for | of Internet end nodes, was shipped with ECN disabled, as was true for | |||
| several of the other implementations listed under "Implementation and | several of the other implementations listed under "Implementation and | |||
| Deployment of ECN" at [SallyFloyd]. Even if subsequent router | Deployment of ECN" at [SallyFloyd]. Even if subsequent router | |||
| vendors fixed these implementations, ECN was still disabled on end | vendors fixed these implementations, ECN was still disabled on end | |||
| nodes, and given the tradeoff between the benefits of enabling ECN | nodes, and given the trade-off between the benefits of enabling ECN | |||
| (somewhat better behavior during congestion) and the risks of | (somewhat better behavior during congestion) and the risks of | |||
| enabling ECN (possibly crashing a router somewhere along the path), | enabling ECN (possibly crashing a router somewhere along the path), | |||
| ECN tended to stay disabled on implementations that supported ECN for | ECN tended to stay disabled on implementations that supported ECN for | |||
| decades afterwards. | decades afterwards. | |||
| 6.9.2. Lessons Learned | 6.9.2. Lessons Learned | |||
| Of the contributions included in Section 6, ECN may be unique in | Of the contributions included in Section 6, ECN may be unique in | |||
| providing these lessons: | providing these lessons: | |||
| * Even if you do everything right, you may trip over implementation | * Even if you do everything right, you may trip over implementation | |||
| bugs in devices you know nothing about, that will cause severe | bugs in devices you know nothing about, that will cause severe | |||
| problems that prevent successful deployment of your path aware | problems that prevent successful deployment of your Path Aware | |||
| technology. | technology. | |||
| * After implementations disable your Path Aware technology, it may | * After implementations disable your Path Aware technology, it may | |||
| take years, or even decades, to convince implementers to re-enable | take years, or even decades, to convince implementers to re-enable | |||
| it by default. | it by default. | |||
| These two lessons, taken together, could be summarized as "you get | These two lessons, taken together, could be summarized as "you get | |||
| one chance to get it right". | one chance to get it right." | |||
| During discussion of ECN at [PANRG-110], we noted that "you get one | During discussion of ECN at [PANRG-110], we noted that "you get one | |||
| chance to get it right" isn't quite correct today, because operating | chance to get it right" isn't quite correct today, because operating | |||
| systems on so many host systems are frequently updated, and transport | systems on so many host systems are frequently updated, and transport | |||
| protocols like QUIC [I-D.ietf-quic-transport] are being implemented | protocols like QUIC [RFC9000] are being implemented in user space and | |||
| in user space, and can be updated without touching installed | can be updated without touching installed operating systems. Neither | |||
| operating systems. Neither of these factors were true in the early | of these factors were true in the early 2000s. | |||
| 2000s. | ||||
| We think that these restatements of the ECN Lessons Learned are more | We think that these restatements of the ECN Lessons Learned are more | |||
| useful for current implementers: | useful for current implementers: | |||
| * Even if you do everything right, you may trip over implementation | * Even if you do everything right, you may trip over implementation | |||
| bugs in devices you know nothing about, that will cause severe | bugs in devices you know nothing about, that will cause severe | |||
| problems that prevent successful deployment of your path aware | problems that prevent successful deployment of your Path Aware | |||
| technology. Testing before deployment isn't enough to ensure | technology. Testing before deployment isn't enough to ensure | |||
| successful deployment. It is also necessary to "deploy gently", | successful deployment. It is also necessary to "deploy gently", | |||
| which often means deploying for a small subset of users to gain | which often means deploying for a small subset of users to gain | |||
| experience, and implementing feedback mechanisms to detect that | experience and implementing feedback mechanisms to detect that | |||
| user experience is being degraded. | user experience is being degraded. | |||
| * After implementations disable your Path Aware technology, it may | * After implementations disable your Path Aware technology, it may | |||
| take years, or even decades, to convince implementers to re-enable | take years, or even decades, to convince implementers to re-enable | |||
| it by default. This might be based on the difficulty of | it by default. This might be based on the difficulty of | |||
| distributing implementations that enable it by default, but are | distributing implementations that enable it by default, but it is | |||
| just as likely to be based on the "bad taste in the mouth" that | just as likely to be based on the "bad taste in the mouth" that | |||
| implementers have after an unsuccessful deployment attempt that | implementers have after an unsuccessful deployment attempt that | |||
| degraded user experience. | degraded user experience. | |||
| With these expansions, the two lessons, taken together, could be more | With these expansions, the two lessons, taken together, could be more | |||
| helpfully summarized as "plan for failure" - anticipate what your | helpfully summarized as "plan for failure" -- anticipate what your | |||
| next step will be, if initial deployment is unsuccessful. | next step will be, if initial deployment is unsuccessful. | |||
| ECN deployment was also hindered by non-deployment of AQM in many | ECN deployment was also hindered by non-deployment of AQM in many | |||
| devices, because of operator interest in QoS features provided in the | devices, because of operator interest in QoS features provided in the | |||
| network, rather than using the network to assist end systems in | network, rather than using the network to assist end systems in | |||
| providing for themselves. But that's another story, and the AQM | providing for themselves. But that's another story, and the AQM | |||
| Lessons Learned are already covered in other contributions in | Lessons Learned are already covered in other contributions in | |||
| Section 6. | Section 6. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| This document describes Path Aware techniques that were not adopted | This document describes Path Aware techniques that were not adopted | |||
| and widely deployed on the Internet, so it doesn't affect the | and widely deployed on the Internet, so it doesn't affect the | |||
| security of the Internet. | security of the Internet. | |||
| If this document meets its goals, we may develop new techniques for | If this document meets its goals, we may develop new techniques for | |||
| Path Aware Networking that would affect the security of the Internet, | Path Aware networking that would affect the security of the Internet, | |||
| but security considerations for those techniques will be described in | but security considerations for those techniques will be described in | |||
| the corresponding RFCs that specify them. | the corresponding RFCs that specify them. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| This document makes no requests of IANA. | This document has no IANA actions. | |||
| 9. Acknowledgments | ||||
| Initial material for Section 6.1 on ST2 was provided by Gorry | ||||
| Fairhurst. | ||||
| Initial material for Section 6.2 on IntServ was provided by Ron | ||||
| Bonica. | ||||
| Initial material for Section 6.3 on Quick-Start TCP was provided by | ||||
| Michael Scharf, who also provided suggestions to improve this section | ||||
| after it was edited. | ||||
| Initial material for Section 6.4 on ICMP Source Quench was provided | ||||
| by Gorry Fairhurst. | ||||
| Initial material for Section 6.5 on Triggers for Transport (TRIGTRAN) | ||||
| was provided by Spencer Dawkins. | ||||
| Section 6.6 on Shim6 builds on initial material describing obstacles | ||||
| provided by Erik Nordmark, with background added by Spencer Dawkins. | ||||
| Initial material for Section 6.7 on Next Steps In Signaling (NSIS) | ||||
| was provided by Roland Bless and Martin Stiemerling. | ||||
| Initial material for Section 6.8 on IPv6 Flow Labels was provided by | ||||
| Gorry Fairhurst. | ||||
| Initial material for Section 6.9 on Explicit Congestion Notification | ||||
| was provided by Spencer Dawkins. | ||||
| Our thanks to Adrian Farrel, Bob Briscoe, C.M. Heard, David Black, | ||||
| Eric Kinnear, Erik Auerswald, Gorry Fairhurst, Jake Holland, Joe | ||||
| Touch, Joeri de Ruiter, Kireeti Kompella, Mohamed Boucadair, Roland | ||||
| Bless, Ruediger Geib, Theresa Enghardt, and Wes Eddy, who provided | ||||
| review comments on this document as a "work in process". | ||||
| Mallory Knodel reviewed this document for the Internet Research | ||||
| Steering Group, and provided many helpful suggestions. | ||||
| David Oran also provided helpful comments and text suggestions on | ||||
| this document during Internet Research Steering Group balloting. In | ||||
| particular, Section 5 reflects his review. | ||||
| Benjamin Kaduk and Rob Wilton provided helpful comments during | ||||
| Internet Engineering Steering Group conflict review. | ||||
| Special thanks to Adrian Farrel for helping Spencer navigate the | ||||
| twisty little passages of Flow Specs and Filter Specs in IntServ, | ||||
| RSVP, MPLS, and BGP. They are all alike, except when they are | ||||
| different [Colossal-Cave]. | ||||
| 10. Informative References | 9. Informative References | |||
| [Colossal-Cave] | [Colossal-Cave] | |||
| "Wikipedia Page for Colossal Cave Adventure", January | Wikipedia, "Colossal Cave Adventure", June 2021, | |||
| 2019, | ||||
| <https://en.wikipedia.org/wiki/Colossal_Cave_Adventure>. | <https://en.wikipedia.org/wiki/Colossal_Cave_Adventure>. | |||
| [Conviva] "Conviva Precision : Data Sheet", December 2020, | [Conviva] "Conviva Precision : Data Sheet", January 2021, | |||
| <https://www.conviva.com/datasheets/precision-delivery- | <https://www.conviva.com/datasheets/precision-delivery- | |||
| intelligence/>. | intelligence/>. | |||
| [FARRELL-ETM] | ||||
| Farrell, S., "We're gonna need a bigger threat model", | ||||
| Work in Progress, Internet-Draft, draft-farrell-etm-03, 6 | ||||
| July 2019, | ||||
| <https://tools.ietf.org/html/draft-farrell-etm-03>. | ||||
| [GREASE] Thomson, M., "Long-term Viability of Protocol Extension | [GREASE] Thomson, M., "Long-term Viability of Protocol Extension | |||
| Mechanisms", July 2019, <https://tools.ietf.org/html/ | Mechanisms", Work in Progress, Internet-Draft, draft-iab- | |||
| draft-iab-use-it-or-lose-it-00>. | use-it-or-lose-it-00, 7 August 2019, | |||
| <https://tools.ietf.org/html/draft-iab-use-it-or-lose-it- | ||||
| 00>. | ||||
| [I-D.arkko-arch-internet-threat-model] | [IEN-119] Forgie, J., "ST - A Proposed Internet Stream Protocol", | |||
| September 1979, | ||||
| <https://www.rfc-editor.org/ien/ien119.txt>. | ||||
| [INTERNET-THREAT-MODEL] | ||||
| Arkko, J., "Changes in the Internet Threat Model", Work in | Arkko, J., "Changes in the Internet Threat Model", Work in | |||
| Progress, Internet-Draft, draft-arkko-arch-internet- | Progress, Internet-Draft, draft-arkko-arch-internet- | |||
| threat-model-01, 8 July 2019, <http://www.ietf.org/ | threat-model-01, 8 July 2019, | |||
| internet-drafts/draft-arkko-arch-internet-threat-model- | <https://tools.ietf.org/html/draft-arkko-arch-internet- | |||
| 01.txt>. | threat-model-01>. | |||
| [I-D.farrell-etm] | ||||
| Farrell, S., "We're gonna need a bigger threat model", | ||||
| Work in Progress, Internet-Draft, draft-farrell-etm-03, 6 | ||||
| July 2019, <http://www.ietf.org/internet-drafts/draft- | ||||
| farrell-etm-03.txt>. | ||||
| [I-D.ietf-quic-transport] | ||||
| Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed | ||||
| and Secure Transport", Work in Progress, Internet-Draft, | ||||
| draft-ietf-quic-transport-34, 14 January 2021, | ||||
| <http://www.ietf.org/internet-drafts/draft-ietf-quic- | ||||
| transport-34.txt>. | ||||
| [I-D.ietf-tsvwg-intserv-multiple-tspec] | [INTSERV-MULTIPLE-TSPEC] | |||
| Polk, J. and S. Dhesikan, "Integrated Services (IntServ) | Polk, J. and S. Dhesikan, "Integrated Services (IntServ) | |||
| Extension to Allow Signaling of Multiple Traffic | Extension to Allow Signaling of Multiple Traffic | |||
| Specifications and Multiple Flow Specifications in | Specifications and Multiple Flow Specifications in | |||
| RSVPv1", Work in Progress, Internet-Draft, draft-ietf- | RSVPv1", Work in Progress, Internet-Draft, draft-ietf- | |||
| tsvwg-intserv-multiple-tspec-02, 25 February 2013, | tsvwg-intserv-multiple-tspec-02, 25 February 2013, | |||
| <http://www.ietf.org/internet-drafts/draft-ietf-tsvwg- | <https://tools.ietf.org/html/draft-ietf-tsvwg-intserv- | |||
| intserv-multiple-tspec-02.txt>. | multiple-tspec-02>. | |||
| [I-D.irtf-panrg-path-properties] | ||||
| Enghardt, T. and C. Krahenbuhl, "A Vocabulary of Path | ||||
| Properties", Work in Progress, Internet-Draft, draft-irtf- | ||||
| panrg-path-properties-01, 7 September 2020, | ||||
| <http://www.ietf.org/internet-drafts/draft-irtf-panrg- | ||||
| path-properties-01.txt>. | ||||
| [I-D.irtf-panrg-questions] | ||||
| Trammell, B., "Current Open Questions in Path Aware | ||||
| Networking", Work in Progress, Internet-Draft, draft-irtf- | ||||
| panrg-questions-08, 23 December 2020, | ||||
| <http://www.ietf.org/internet-drafts/draft-irtf-panrg- | ||||
| questions-08.txt>. | ||||
| [IEN-119] Forgie, J., "ST - A Proposed Internet Stream Protocol", | ||||
| September 1979, | ||||
| <https://www.rfc-editor.org/ien/ien119.txt>. | ||||
| [ITAT] "IAB Workshop on Internet Technology Adoption and | [ITAT] "IAB Workshop on Internet Technology Adoption and | |||
| Transition (ITAT)", December 2013, | Transition (ITAT) 2013", December 2013, | |||
| <https://www.iab.org/activities/workshops/itat/>. | <https://www.iab.org/activities/workshops/itat/>. | |||
| [model-t] "Model-t -- Discussions of changes in Internet deployment | [model-t] "Model-t -- Discussions of changes in Internet deployment | |||
| patterns and their impact on the Internet threat model", | patterns and their impact on the Internet threat model", | |||
| n.d., <https://www.iab.org/mailman/listinfo/model-t>. | model-t mailing list, | |||
| <https://www.iab.org/mailman/listinfo/model-t>. | ||||
| [MOPS-109-Min] | [MOPS-109-Min] | |||
| "Media Operations Working Group - IETF-109 Minutes", | "Media Operations Working Group - IETF 109 Minutes", | |||
| November 2020, | November 2020, | |||
| <https://datatracker.ietf.org/meeting/109/materials/ | <https://datatracker.ietf.org/meeting/109/materials/ | |||
| minutes-109-mops-00>. | minutes-109-mops-00>. | |||
| [MP-TCP] "Multipath TCP Working Group Home Page", n.d., | [MP-TCP] "Multipath TCP Working Group Home Page", | |||
| <https://datatracker.ietf.org/wg/mptcp/about/>. | <https://datatracker.ietf.org/wg/mptcp/>. | |||
| [NANOG-35] "North American Network Operators Group NANOG-35 Agenda", | [NANOG-35] "NANOG 35 Agenda", North American Network Operators' Group | |||
| October 2005, | (NANOG), October 2005, | |||
| <https://www.nanog.org/meetings/nanog35/agenda>. | <https://archive.nanog.org/meetings/nanog35/agenda>. | |||
| [NSIS-CHARTER-2001] | [NSIS-CHARTER-2001] | |||
| "Next Steps In Signaling Working Group Charter", March | "Next Steps In Signaling Working Group Charter", March | |||
| 2011, | 2011, | |||
| <https://datatracker.ietf.org/doc/charter-ietf-nsis/>. | <https://datatracker.ietf.org/doc/charter-ietf-nsis/>. | |||
| [PANRG] "Path Aware Networking Research Group (Home Page)", n.d., | [PANRG] "Path Aware Networking Research Group Home Page", | |||
| <https://irtf.org/panrg>. | <https://irtf.org/panrg>. | |||
| [PANRG-103-Min] | [PANRG-103-Min] | |||
| "Path Aware Networking Research Group - IETF-103 Minutes", | "Path Aware Networking Research Group - IETF 103 Minutes", | |||
| November 2018, | November 2018, | |||
| <https://datatracker.ietf.org/doc/minutes-103-panrg/>. | <https://datatracker.ietf.org/doc/minutes-103-panrg/>. | |||
| [PANRG-105-Min] | [PANRG-105-Min] | |||
| "Path Aware Networking Research Group - IETF-105 Minutes", | "Path Aware Networking Research Group - IETF 105 Minutes", | |||
| July 2019, | July 2019, | |||
| <https://datatracker.ietf.org/doc/minutes-105-panrg/>. | <https://datatracker.ietf.org/doc/minutes-105-panrg/>. | |||
| [PANRG-106-Min] | [PANRG-106-Min] | |||
| "Path Aware Networking Research Group - IETF-106 Minutes", | "Path Aware Networking Research Group - IETF 106 Minutes", | |||
| November 2019, | November 2019, | |||
| <https://datatracker.ietf.org/doc/minutes-106-panrg/>. | <https://datatracker.ietf.org/doc/minutes-106-panrg/>. | |||
| [PANRG-110] | [PANRG-110] | |||
| "Path Aware Networking Research Group - IETF-110", July | "Path Aware Networking Research Group - IETF 110", March | |||
| 2017, | 2021, | |||
| <https://datatracker.ietf.org/meeting/110/sessions/panrg>. | <https://datatracker.ietf.org/meeting/110/session/panrg>. | |||
| [PANRG-99] "Path Aware Networking Research Group - IETF-99", July | [PANRG-99] "Path Aware Networking Research Group - IETF 99", July | |||
| 2017, | 2017, | |||
| <https://datatracker.ietf.org/meeting/99/sessions/panrg>. | <https://datatracker.ietf.org/meeting/99/session/panrg>. | |||
| [PANRG-PATH-PROPERTIES] | ||||
| Enghardt, T. and C. Krähenbühl, "A Vocabulary of Path | ||||
| Properties", Work in Progress, Internet-Draft, draft-irtf- | ||||
| panrg-path-properties-02, 22 February 2021, | ||||
| <https://tools.ietf.org/html/draft-irtf-panrg-path- | ||||
| properties-02>. | ||||
| [PANRG-QUESTIONS] | ||||
| Trammell, B., "Current Open Questions in Path Aware | ||||
| Networking", Work in Progress, Internet-Draft, draft-irtf- | ||||
| panrg-questions-09, 16 April 2021, | ||||
| <https://tools.ietf.org/html/draft-irtf-panrg-questions- | ||||
| 09>. | ||||
| [PATH-Decade] | [PATH-Decade] | |||
| Bonaventure, O., "A Decade of Path Awareness", July 2017, | Bonaventure, O., "A Decade of Path Awareness", July 2017, | |||
| <https://datatracker.ietf.org/doc/slides-99-panrg-a- | <https://datatracker.ietf.org/doc/slides-99-panrg-a- | |||
| decade-of-path-awareness/>. | decade-of-path-awareness/>. | |||
| [QS-SAT] Secchi, R., Sathiaseelan, A., Potorti, F., Gotta, A., and | [QS-SAT] Secchi, R., Sathiaseelan, A., Potortì, F., Gotta, A., and | |||
| G. Fairhurst, "Using Quick-Start to enhance TCP-friendly | G. Fairhurst, "Using Quick-Start to enhance TCP-friendly | |||
| rate control performance in bidirectional satellite | rate control performance in bidirectional satellite | |||
| networks", 2009, | networks", DOI 10.1002/sat.929, May 2009, | |||
| <https://dl.acm.org/citation.cfm?id=3160304.3160305>. | <https://dl.acm.org/citation.cfm?id=3160304.3160305>. | |||
| [QUIC-WG] "QUIC Working Group Home Page", n.d., | ||||
| <https://datatracker.ietf.org/wg/quic/about/>. | ||||
| [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
| DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
| [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, | |||
| RFC 792, DOI 10.17487/RFC0792, September 1981, | RFC 792, DOI 10.17487/RFC0792, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc792>. | <https://www.rfc-editor.org/info/rfc792>. | |||
| [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | |||
| RFC 793, DOI 10.17487/RFC0793, September 1981, | RFC 793, DOI 10.17487/RFC0793, September 1981, | |||
| skipping to change at line 2041 ¶ | skipping to change at line 1977 ¶ | |||
| DOI 10.17487/RFC8655, October 2019, | DOI 10.17487/RFC8655, October 2019, | |||
| <https://www.rfc-editor.org/info/rfc8655>. | <https://www.rfc-editor.org/info/rfc8655>. | |||
| [RFC8793] Wissingh, B., Wood, C., Afanasyev, A., Zhang, L., Oran, | [RFC8793] Wissingh, B., Wood, C., Afanasyev, A., Zhang, L., Oran, | |||
| D., and C. Tschudin, "Information-Centric Networking | D., and C. Tschudin, "Information-Centric Networking | |||
| (ICN): Content-Centric Networking (CCNx) and Named Data | (ICN): Content-Centric Networking (CCNx) and Named Data | |||
| Networking (NDN) Terminology", RFC 8793, | Networking (NDN) Terminology", RFC 8793, | |||
| DOI 10.17487/RFC8793, June 2020, | DOI 10.17487/RFC8793, June 2020, | |||
| <https://www.rfc-editor.org/info/rfc8793>. | <https://www.rfc-editor.org/info/rfc8793>. | |||
| [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | ||||
| Multiplexed and Secure Transport", RFC 9000, | ||||
| DOI 10.17487/RFC9000, May 2021, | ||||
| <https://www.rfc-editor.org/info/rfc9000>. | ||||
| [SAAG-105-Min] | [SAAG-105-Min] | |||
| "Security Area Open Meeting - IETF-105 Minutes", July | "Security Area Open Meeting - IETF 105 Minutes", July | |||
| 2019, <https://datatracker.ietf.org/meeting/105/materials/ | 2019, <https://datatracker.ietf.org/meeting/105/materials/ | |||
| minutes-105-saag-00>. | minutes-105-saag-00>. | |||
| [SAF07] Sarolahti, P., Allman, M., and S. Floyd, "Determining an | [SAF07] Sarolahti, P., Allman, M., and S. Floyd, "Determining an | |||
| appropriate sending rate over an underutilized network | appropriate sending rate over an underutilized network | |||
| path", Computer Networking Volume 51, Number 7, May 2007. | path", Computer Networks: The International Journal of | |||
| Computer and Telecommunications Networking, Volume 51, | ||||
| Number 7, DOI 10.1016/j.comnet.2006.11.006, May 2007, | ||||
| <https://dl.acm.org/doi/10.1016/j.comnet.2006.11.006>. | ||||
| [SallyFloyd] | [SallyFloyd] | |||
| Floyd, S., "ECN (Explicit Congestion Notification) in TCP/ | Floyd, S., "ECN (Explicit Congestion Notification) in TCP/ | |||
| IP", n.d., <https://www.icir.org/floyd/ecn.html>. | IP", June 2009, <https://www.icir.org/floyd/ecn.html>. | |||
| [Sch11] Scharf, M., "Fast Startup Internet Congestion Control for | [Sch11] Scharf, M., "Fast Startup Internet Congestion Control for | |||
| Broadband Interactive Applications", Ph.D. Thesis, | Broadband Interactive Applications", Ph.D. Thesis, | |||
| University of Stuttgart, April 2011. | University of Stuttgart, April 2011. | |||
| [Shim6-35] Meyer, D., Huston, G., Schiller, J., and V. Gill, "IAB | [Shim6-35] Meyer, D., Huston, G., Schiller, J., and V. Gill, "IAB | |||
| IPv6 Multihoming Panel at NANOG 35", NANOG North American | IPv6 Multihoming Panel at NANOG 35", North American | |||
| Network Operator Group, October 2005, | Network Operators' Group (NANOG), October 2005, | |||
| <https://www.youtube.com/watch?v=ji6Y_rYHAQs>. | <https://www.youtube.com/watch?v=ji6Y_rYHAQs>. | |||
| [TRIGTRAN-55] | [TRIGTRAN-55] | |||
| "Triggers for Transport BOF at IETF 55", July 2003, | "Triggers for Transport BOF at IETF 55", November 2002, | |||
| <https://www.ietf.org/proceedings/55/239.htm>. | <https://www.ietf.org/proceedings/55/239.htm>. | |||
| [TRIGTRAN-56] | [TRIGTRAN-56] | |||
| "Triggers for Transport BOF at IETF 56", November 2003, | "Triggers for Transport BOF at IETF 56", March 2003, | |||
| <https://www.ietf.org/proceedings/56/251.htm>. | <https://www.ietf.org/proceedings/56/251.htm>. | |||
| [vista-impl] | [vista-impl] | |||
| Sridharan, M., Bansal, D., and D. Thaler, "Implementation | Sridharan, M., Bansal, D., and D. Thaler, "Implementation | |||
| Report on Experiences with Various TCP RFCs", November | Report on Experiences with Various TCP RFCs", March 2007, | |||
| 2003, <https://www.ietf.org/proceedings/68/slides/tsvarea- | <https://www.ietf.org/proceedings/68/slides/tsvarea-3/ | |||
| 3/sld1.htm>. | sld1.htm>. | |||
| Acknowledgments | ||||
| Initial material for Section 6.1 on ST2 was provided by Gorry | ||||
| Fairhurst. | ||||
| Initial material for Section 6.2 on IntServ was provided by Ron | ||||
| Bonica. | ||||
| Initial material for Section 6.3 on Quick-Start TCP was provided by | ||||
| Michael Scharf, who also provided suggestions to improve this section | ||||
| after it was edited. | ||||
| Initial material for Section 6.4 on ICMP Source Quench was provided | ||||
| by Gorry Fairhurst. | ||||
| Initial material for Section 6.5 on Triggers for Transport (TRIGTRAN) | ||||
| was provided by Spencer Dawkins. | ||||
| Section 6.6 on Shim6 builds on initial material describing obstacles, | ||||
| which was provided by Erik Nordmark, with background added by Spencer | ||||
| Dawkins. | ||||
| Initial material for Section 6.7 on Next Steps in Signaling (NSIS) | ||||
| was provided by Roland Bless and Martin Stiemerling. | ||||
| Initial material for Section 6.8 on IPv6 Flow Labels was provided by | ||||
| Gorry Fairhurst. | ||||
| Initial material for Section 6.9 on Explicit Congestion Notification | ||||
| was provided by Spencer Dawkins. | ||||
| Our thanks to Adrian Farrel, Bob Briscoe, C.M. Heard, David Black, | ||||
| Eric Kinnear, Erik Auerswald, Gorry Fairhurst, Jake Holland, Joe | ||||
| Touch, Joeri de Ruiter, Kireeti Kompella, Mohamed Boucadair, Randy | ||||
| Presuhn, Roland Bless, Ruediger Geib, Theresa Enghardt, and Wes Eddy, | ||||
| who provided review comments on this document as a "work in process". | ||||
| Mallory Knodel reviewed this document for the Internet Research | ||||
| Steering Group and provided many helpful suggestions. | ||||
| David Oran also provided helpful comments and text suggestions on | ||||
| this document during Internet Research Steering Group balloting. In | ||||
| particular, Section 5 reflects his review. | ||||
| Benjamin Kaduk, Martin Duke, and Rob Wilton provided helpful comments | ||||
| during Internet Engineering Steering Group conflict review. | ||||
| Special thanks to Adrian Farrel for helping Spencer navigate the | ||||
| twisty little passages of Flow Specs and Filter Specs in IntServ, | ||||
| RSVP, MPLS, and BGP. They are all alike, except when they are | ||||
| different [Colossal-Cave]. | ||||
| Author's Address | Author's Address | |||
| Spencer Dawkins (editor) | Spencer Dawkins (editor) | |||
| Tencent America | Tencent America | |||
| United States of America | United States of America | |||
| Email: spencerdawkins.ietf@gmail.com | Email: spencerdawkins.ietf@gmail.com | |||
| End of changes. 281 change blocks. | ||||
| 717 lines changed or deleted | 713 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/ | ||||