| rfc9198xml2.original.xml | rfc9198.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <!DOCTYPE rfc [ | |||
| <?rfc toc="yes"?> | <!ENTITY nbsp " "> | |||
| <?rfc tocompact="yes"?> | <!ENTITY zwsp "​"> | |||
| <?rfc tocdepth="3"?> | <!ENTITY nbhy "‑"> | |||
| <?rfc tocindent="yes"?> | <!ENTITY wj "⁠"> | |||
| <?rfc symrefs="yes"?> | ]> | |||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc comments="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
| <?rfc inline="yes"?> | docName="draft-ietf-ippm-route-10" number="9198" ipr="trust200902" | |||
| <?rfc compact="yes"?> | updates="2330" obsoletes="" submissionType="IETF" category="std" | |||
| <?rfc subcompact="no"?> | consensus="true" xml:lang="en" tocInclude="true" tocDepth="3" | |||
| <rfc category="std" docName="draft-ietf-ippm-route-10" ipr="trust200902" | symRefs="true" sortRefs="true" version="3"> | |||
| updates="2330"> | ||||
| <!-- xml2rfc v2v3 conversion 3.1.1 --> | ||||
| <front> | <front> | |||
| <title abbrev="AURA Metrics & Methods">Advanced Unidirectional Route | <title abbrev="AURA Metrics & Methods">Advanced Unidirectional Route | |||
| Assessment (AURA)</title> | Assessment (AURA)</title> | |||
| <seriesInfo name="RFC" value="9198"/> | ||||
| <author fullname="J. Ignacio Alvarez-Hamelin" initials="J.I." | <author fullname="J. Ignacio Alvarez-Hamelin" initials="J" surname="Alvarez- | |||
| surname="Alvarez-Hamelin"> | Hamelin"> | |||
| <organization>Universidad de Buenos Aires</organization> | <organization>Universidad de Buenos Aires</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Av. Paseo Colón 850</street> | <street>Av. Paseo Colón 850</street> | |||
| <city>Buenos Aires</city> | <city>Buenos Aires</city> | |||
| <code>C1063ACV</code> | <code>C1063ACV</code> | |||
| <country>Argentina</country> | <country>Argentina</country> | |||
| </postal> | </postal> | |||
| <phone>+54 11 5285-0716</phone> | <phone>+54 11 5285-0716</phone> | |||
| <email>ihameli@cnet.fi.uba.ar</email> | <email>ihameli@cnet.fi.uba.ar</email> | |||
| <uri>http://cnet.fi.uba.ar/ignacio.alvarez-hamelin/</uri> | <uri>http://cnet.fi.uba.ar/ignacio.alvarez-hamelin/</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Al Morton" initials="A." surname="Morton"> | <author fullname="Al Morton" initials="A." surname="Morton"> | |||
| <organization>AT&T Labs</organization> | <organization>AT&T Labs</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>200 Laurel Avenue South</street> | <street>200 Laurel Avenue South</street> | |||
| <city>Middletown</city> | <city>Middletown</city> | |||
| <region>NJ</region> | <region>NJ</region> | |||
| <code>07748</code> | <code>07748</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <phone>+1 732 420 1571</phone> | <phone>+1 732 420 1571</phone> | |||
| <facsimile>+1 732 368 1192</facsimile> | ||||
| <email>acm@research.att.com</email> | <email>acm@research.att.com</email> | |||
| <uri/> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Joachim Fabini" initials="J." surname="Fabini"> | <author fullname="Joachim Fabini" initials="J." surname="Fabini"> | |||
| <organization>TU Wien</organization> | <organization>TU Wien</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Gusshausstrasse 25/E389</street> | <street>Gusshausstrasse 25/E389</street> | |||
| <city>Vienna</city> | <city>Vienna</city> | |||
| <region/> | <region/> | |||
| <code>1040</code> | <code>1040</code> | |||
| <country>Austria</country> | <country>Austria</country> | |||
| </postal> | </postal> | |||
| <phone>+43 1 58801 38813</phone> | <phone>+43 1 58801 38813</phone> | |||
| <facsimile>+43 1 58801 38898</facsimile> | ||||
| <email>Joachim.Fabini@tuwien.ac.at</email> | <email>Joachim.Fabini@tuwien.ac.at</email> | |||
| <uri>http://www.tc.tuwien.ac.at/about-us/staff/joachim-fabini/</uri> | <uri>http://www.tc.tuwien.ac.at/about-us/staff/joachim-fabini/</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Carlos Pignataro" initials="C." surname="Pignataro"> | <author fullname="Carlos Pignataro" initials="C." surname="Pignataro"> | |||
| <organization>Cisco Systems, Inc.</organization> | <organization>Cisco Systems, Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>7200-11 Kit Creek Road</street> | <street>7200-11 Kit Creek Road</street> | |||
| <city>Research Triangle Park</city> | <city>Research Triangle Park</city> | |||
| <region>NC</region> | <region>NC</region> | |||
| <code>27709</code> | <code>27709</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <phone/> | <phone/> | |||
| <facsimile/> | ||||
| <email>cpignata@cisco.com</email> | <email>cpignata@cisco.com</email> | |||
| <uri/> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Ruediger Geib" initials="R." surname="Geib"> | <author fullname="Ruediger Geib" initials="R." surname="Geib"> | |||
| <organization>Deutsche Telekom</organization> | <organization>Deutsche Telekom</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Heinrich Hertz Str. 3-7</street> | <street>Heinrich Hertz Str. 3-7</street> | |||
| <city>Darmstadt</city> | <city>Darmstadt</city> | |||
| <region/> | <region/> | |||
| <code>64295</code> | <code>64295</code> | |||
| <country>Germany</country> | <country>Germany</country> | |||
| </postal> | </postal> | |||
| <phone>+49 6151 5812747</phone> | <phone>+49 6151 5812747</phone> | |||
| <facsimile/> | ||||
| <email>Ruediger.Geib@telekom.de</email> | <email>Ruediger.Geib@telekom.de</email> | |||
| <uri/> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="May" year="2022"/> | ||||
| <date day="13" month="August" year="2020"/> | <keyword>Performance</keyword> | |||
| <keyword>Metrics</keyword> | ||||
| <keyword>IPPM</keyword> | ||||
| <keyword>path</keyword> | ||||
| <keyword>parallel paths</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>This memo introduces an advanced unidirectional route assessment | <t>This memo introduces an advanced unidirectional route assessment | |||
| (AURA) metric and associated measurement methodology, based on the IP | (AURA) metric and associated measurement methodology based on the IP | |||
| Performance Metrics (IPPM) Framework RFC 2330. This memo updates RFC | Performance Metrics (IPPM) framework (RFC 2330). This memo updates RFC | |||
| 2330 in the areas of path-related terminology and path description, | 2330 in the areas of path-related terminology and path description, | |||
| primarily to include the possibility of parallel subpaths between a | primarily to include the possibility of parallel subpaths between a | |||
| given Source and Destination pair, owing to the presence of multi-path | given Source and Destination pair, owing to the presence of multipath | |||
| technologies.</t> | technologies.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section numbered="true" toc="default"> | |||
| <t>The IETF IP Performance Metrics (IPPM) working group first created a | <name>Introduction</name> | |||
| framework for metric development in <xref target="RFC2330"/>. This | <t>The IETF IP Performance Metrics (IPPM) Working Group first created a | |||
| framework for metric development in <xref target="RFC2330" format="default | ||||
| "/>. This | ||||
| framework has stood the test of time and enabled development of many | framework has stood the test of time and enabled development of many | |||
| fundamental metrics. It has been updated in the area of metric | fundamental metrics. It has been updated in the area of metric | |||
| composition <xref target="RFC5835"/>, and in several areas related to | composition <xref target="RFC5835" format="default"/> and in several areas related to | |||
| active stream measurement of modern networks with reactive properties | active stream measurement of modern networks with reactive properties | |||
| <xref target="RFC7312"/>.</t> | <xref target="RFC7312" format="default"/>.</t> | |||
| <t>The framework in <xref target="RFC2330" format="default"/> motivated th | ||||
| <t>The <xref target="RFC2330"/> framework motivated the development of | e development of | |||
| "performance and reliability metrics for paths through the Internet," | "performance and reliability metrics for paths through the Internet"; | |||
| and Section 5 of <xref target="RFC2330"/> defines terms that support | <xref target="RFC2330" section="5" sectionFormat="of"/> defines terms that | |||
| support | ||||
| description of a path under test. However, metrics for assessment of | description of a path under test. However, metrics for assessment of | |||
| paths and related performance aspects had not been attempted in IPPM | paths and related performance aspects had not been attempted in IPPM | |||
| when the <xref target="RFC2330"/> framework was written.</t> | when the framework in <xref target="RFC2330" format="default"/> was writte | |||
| n.</t> | ||||
| <t>This memo takes up the route measurement challenge and specifies a | <t>This memo takes up the Route measurement challenge and specifies a | |||
| new route metric, two practical frameworks for methods of measurement | new Route metric, two practical frameworks for methods of measurement | |||
| (using either active or hybrid active-passive methods <xref | (using either active or hybrid active-passive methods <xref | |||
| target="RFC7799"/>), and Round-Trip Delay and link information discovery | target="RFC7799" format="default"/>), and Round-Trip Delay and link | |||
| using the results of measurements. All route measurements are limited by | information discovery | |||
| the willingness of hosts along the path to be discovered, to cooperate | using the results of measurements. All Route measurements are limited by | |||
| the willingness of Hosts along the path to be discovered, to cooperate | ||||
| with the methods used, or to recognize that the measurement operation is | with the methods used, or to recognize that the measurement operation is | |||
| taking place (such as when tunnels are present).</t> | taking place (such as when tunnels are present).</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Issues with Earlier Work to Define a Route Metric"> | <name>Issues with Earlier Work to Define a Route Metric</name> | |||
| <t>Section 7 of <xref target="RFC2330"/> presented a simple example of | <t><xref target="RFC2330" section="7" sectionFormat="of"/> presents a si | |||
| a "route" metric along with several other examples. The example is | mple example of | |||
| reproduced below (where the reference is to Section 5 of <xref | a "Route" metric along with several other examples. The example is | |||
| target="RFC2330"/>):</t> | reproduced below (where the reference is to <xref | |||
| target="RFC2330" section="5" sectionFormat="of"/>):</t> | ||||
| <t>"route: The path, as defined in Section 5, from A to B at a given | <blockquote> | |||
| time."</t> | <dl newline="false" spacing="normal"> | |||
| <dt>route:</dt> | ||||
| <dd>The path, as defined in Section <xref target="RFC2330" section="5" | ||||
| sectionFormat="bare"/>, from A to B at a given time.</dd> | ||||
| </dl> | ||||
| </blockquote> | ||||
| <t>This example provides a starting point to develop a more complete | <t>This example provides a starting point to develop a more complete | |||
| definition of route. Areas needing clarification include:</t> | definition of Route. Areas needing clarification include:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t><list style="hanging"> | <dt>Time:</dt> | |||
| <t hangText="Time:">In practice, the route will be assessed over a | <dd>In practice, the Route will be assessed over a | |||
| time interval, because active path detection methods like Paris | time interval because active path detection methods like Paris-trace | |||
| Traceroute <xref target="PT"/> rely on hop limits for their | route <xref target="PT" format="default"/> rely on Hop Limits for their | |||
| operation and cannot accomplish discovery of all hosts using a | operation and cannot accomplish discovery of all Hosts using a | |||
| single packet.</t> | single packet.</dd> | |||
| <dt>Type-P:</dt> | ||||
| <t hangText="Type-P:">The legacy route definition lacks the option | <dd>The legacy Route definition lacks the option | |||
| to cater for packet-dependent routing. In this memo, we assess the | to cater for packet-dependent routing. In this memo, we assess the | |||
| route for a specific packet of Type-P, and reflect this in the | Route for a specific packet of Type-P and reflect this in the | |||
| metric definition. The methods of measurement determine the | metric definition. The methods of measurement determine the | |||
| specific Type-P used.</t> | specific Type-P used.</dd> | |||
| <dt>Parallel Paths:</dt> | ||||
| <t hangText="Parallel Paths:">Parallel paths are a reality of the | <dd>Parallel paths are a reality of the | |||
| Internet and a strength of advanced route assessment methods, so | Internet and a strength of advanced Route assessment methods, so | |||
| the metric must acknowledge this possibility. Use of Equal Cost | the metric must acknowledge this possibility. Use of Equal-Cost | |||
| Multi-Path (ECMP) and Unequal Cost Multi-Path (UCMP) technologies | Multipath (ECMP) and Unequal-Cost Multipath (UCMP) technologies | |||
| are common sources of parallel subpaths.</t> | are common sources of parallel subpaths.</dd> | |||
| <dt>Cloud Subpath:</dt> | ||||
| <t hangText="Cloud Subpath:">May contain hosts that do not | <dd>Cloud subpaths may contain Hosts that do not | |||
| decrement hop limit, but may have two or more exchange links | decrement the Hop Limit but may have two or more exchange links | |||
| connecting "discoverable" hosts or routers. Parallel subpaths | connecting "discoverable" Hosts or routers. Parallel subpaths | |||
| contained within clouds cannot be discovered. The assessment | contained within clouds cannot be discovered. The assessment | |||
| methods only discover hosts or routers on the path that decrement | methods only discover Hosts or routers on the path that decrement | |||
| hop limit, or cooperate with interrogation protocols. The presence | Hop Limit or cooperate with interrogation protocols. The presence | |||
| of tunnels and nested tunnels further complicate assessment by | of tunnels and nested tunnels further complicate assessment by | |||
| hiding hops.</t> | hiding Hops.</dd> | |||
| <dt>Hop:</dt> | ||||
| <t hangText="Hop:">Although the <xref target="RFC2330"/> | <dd>The definition of Hop in <xref target="RFC2330" | |||
| definition of a hop was a link-host pair, only hosts that are | format="default"/> was a link-Host pair. However, only Hosts | |||
| discoverable or have the capability to cooperate with | that were discoverable and cooperated with | |||
| interrogation protocols where link information may be exposed.</t> | interrogation protocols (where link information may be exposed) prov | |||
| </list>The refined definition of Route metrics begins in the | ided both link and Host information.</dd> | |||
| sections that follow.</t> | </dl> | |||
| <t>Note that the actual definitions appear in <xref target="terms"/>.</t | ||||
| > | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Requirements Language"> | <name>Requirements Language</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | NOT</bcp14>", | |||
| 14<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and | ||||
| "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as desc | ||||
| ribed in BCP | ||||
| 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" | ||||
| format="default"/> when, and only | ||||
| when, they appear in all capitals, as shown here.</t> | when, they appear in all capitals, as shown here.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Scope" numbered="true" toc="default"> | ||||
| <section anchor="Scope" title="Scope"> | <name>Scope</name> | |||
| <t>The purpose of this memo is to add new route metrics and methods of | <t>The purpose of this memo is to add new Route metrics and methods of | |||
| measurement to the existing set of IPPM metrics.</t> | measurement to the existing set of IPPM metrics.</t> | |||
| <t>The scope is to define Route metrics that can identify the path taken | ||||
| <t>The scope is to define route metrics that can identify the path taken | by a packet or a flow traversing the Internet between two Hosts. | |||
| by a packet or a flow traversing the Internet between two hosts. | Although primarily intended for Hosts communicating on the Internet, the | |||
| Although primarily intended for hosts communicating on the Internet, the | ||||
| definitions and metrics are constructed to be applicable to other | definitions and metrics are constructed to be applicable to other | |||
| network domains, if desired. The methods of measurement to assess the | network domains, if desired. The methods of measurement to assess the | |||
| path may not be able to discover all hosts comprising the path, but such | path may not be able to discover all Hosts comprising the path, but such | |||
| omissions are often deterministic and explainable sources of error.</t> | omissions are often deterministic and explainable sources of error.</t> | |||
| <t>This memo also specifies a framework for active methods of | <t>This memo also specifies a framework for active methods of | |||
| measurement which uses the techniques described in <xref target="PT"/>, | measurement that uses the techniques described in <xref target="PT" format | |||
| as well as a framework for hybrid active-passive methods of measurement | ="default"/> | |||
| such as the Hybrid Type I method <xref target="RFC7799"/> described in | as well as a framework for hybrid active-passive methods of measurement, | |||
| <xref target="I-D.ietf-ippm-ioam-data"/>. Methods using <xref | such as the Hybrid Type I method <xref target="RFC7799" format="default"/> | |||
| target="I-D.ietf-ippm-ioam-data"/> are intended only for single | described in | |||
| <xref target="RFC9197" format="default"/>. Methods using <xref target="RFC | ||||
| 9197" format="default"/> are intended only for single | ||||
| administrative domains that provide a protocol for explicit | administrative domains that provide a protocol for explicit | |||
| interrogation of nodes on a path. Combinations of active methods and | interrogation of Nodes on a path. Combinations of active methods and | |||
| hybrid active-passive methods are also in-scope.</t> | hybrid active-passive methods are also in scope.</t> | |||
| <t>Further, this memo provides additional analysis of the Round-Trip | ||||
| <t>Further, this memo provides additional analysis of the round-trip | Delay measurements made possible by the methods in an effort to | |||
| delay measurements made possible by the methods, in an effort to | ||||
| discover more details about the path, such as the link technology in | discover more details about the path, such as the link technology in | |||
| use.</t> | use.</t> | |||
| <t>This memo updates <xref target="RFC2330" section="5" sectionFormat="of" | ||||
| <t>This memo updates Section 5 of <xref target="RFC2330"/> in the areas | /> in the areas | |||
| of path-related terminology and path description, primarily to include | of path-related terminology and path description, primarily to include | |||
| the possibility of parallel subpaths between a given Source and | the possibility of parallel subpaths between a given Source and | |||
| Destination address pair (possibly resulting from Equal Cost Multi-Path | Destination address pair (possibly resulting from ECMP and UCMP technologi | |||
| (ECMP) and Unequal Cost Multi-Path (UCMP) technologies).</t> | es).</t> | |||
| <t>There are several simple non-goals of this memo. There is no attempt | <t>There are several simple non-goals of this memo. There is no attempt | |||
| to assess the reverse path from any host on the path to the host | to assess the reverse path from any Host on the path to the Host | |||
| attempting the path measurement. The reverse path contribution to delay | attempting the path measurement. The reverse path contribution to delay | |||
| will be that experienced by ICMP packets (in active methods), and may be | will be that experienced by ICMP packets (in active methods) and may be | |||
| different from delays experienced by UDP or TCP packets. Also, the round | different from delays experienced by UDP or TCP packets. Also, the | |||
| trip delay will include an unknown contribution of processing time at | Round-Trip Delay will include an unknown contribution of processing time | |||
| the host that generates the ICMP response. Therefore, the ICMP-based | at | |||
| the Host that generates the ICMP response. Therefore, the ICMP-based | ||||
| active methods are not supposed to yield accurate, reproducible | active methods are not supposed to yield accurate, reproducible | |||
| estimations of the Round-Trip Delay that UDP or TCP packets will | estimations of the Round-Trip Delay that UDP or TCP packets will | |||
| experience.</t> | experience.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Route Metric Specifications"> | <name>Route Metric Specifications</name> | |||
| <t>This section sets requirements for the components of the Route | <t>This section sets requirements for the components of the route | |||
| Metric.</t> | metric.</t> | |||
| <section numbered="true" toc="default" anchor="terms"> | ||||
| <section title="Terms and Definitions"> | <name>Terms and Definitions</name> | |||
| <t/> | <t/> | |||
| <dl newline="true" spacing="normal"> | ||||
| <dt>Host</dt> | ||||
| <t><list style="hanging"> | <dd>A Host (as defined in <xref target="RFC2330" format="default"/>) i | |||
| <t hangText="Host">A Host as defined in <xref target="RFC2330"/> | s | |||
| (a computer capable of IP communication, includes routers), a.k.a. | a computer capable of IP communication, including routers (aka an | |||
| RFC 2330 Host.</t> | RFC 2330 Host).</dd> | |||
| <dt>Node </dt> | ||||
| <t hangText="Node ">A Node is any network function on the path | <dd>A Node is any network function on the path | |||
| capable of IP-layer Communication, includes RFC 2330 Hosts.</t> | capable of IP-layer Communication, including RFC 2330 Hosts.</dd> | |||
| <dt>Node Identity</dt> | ||||
| <t hangText="Node Identity">The unique address for Nodes | <dd>The Node identity is the unique address for Nodes | |||
| communicating within the network domain. For Nodes communicating | communicating within the network domain. For Nodes communicating | |||
| on the Internet with IP, it is the globally routable IP address | on the Internet with IP, it is the globally routable IP address | |||
| which the Node uses when communicating with other Nodes under | that the Node uses when communicating with other Nodes under | |||
| normal or error conditions. The Node Identity revealed (and its | normal or error conditions. The Node identity revealed (and its | |||
| connection to a Node Name through reverse DNS) determines whether | connection to a Node name through reverse DNS) determines whether | |||
| interfaces to parallel links can be associated with a single Node, | interfaces to parallel links can be associated with a single Node | |||
| or appear to identify unique Nodes.</t> | or appear to identify unique Nodes.</dd> | |||
| <dt>Discoverable Node</dt> | ||||
| <t hangText="Discoverable Node">Nodes that convey their Node | <dd>Discoverable Nodes are Nodes that convey their Node | |||
| Identity according to the requirements of their network domain, | identity according to the requirements of their network domain, | |||
| such as when error conditions are detected by that Node. For Nodes | such as when error conditions are detected by that Node. For Nodes | |||
| communicating with IP packets, compliance with Section 3.2.2.4 of | communicating with IP packets, compliance with | |||
| <xref target="RFC1122"/> when discarding a packet due to TTL or | <xref target="RFC1122" section="3.2.2.4" sectionFormat="of"/>, when | |||
| Hop Limit Exceeded condition, MUST result in sending the | discarding a packet due to TTL or | |||
| Hop Limit Exceeded condition, <bcp14>MUST</bcp14> result in sending | ||||
| the | ||||
| corresponding Time Exceeded message (containing a form of Node | corresponding Time Exceeded message (containing a form of Node | |||
| identity) to the source. This requirement is also consistent with | identity) to the source. This requirement is also consistent with | |||
| section 5.3.1 of <xref target="RFC1812"/> for routers.</t> | <xref target="RFC1812" sectionFormat="of" section="5.3.1"/> for rout | |||
| ers.</dd> | ||||
| <t hangText="Cooperating Node">Nodes that respond to direct | <dt>Cooperating Node</dt> | |||
| queries for their Node identity as part of a previously agreed and | <dd>Cooperating Nodes are Nodes that respond to direct | |||
| established interrogation protocol. Nodes SHOULD also provide | queries for their Node identity as part of a previously established | |||
| and | ||||
| agreed upon interrogation protocol. Nodes <bcp14>SHOULD</bcp14> also | ||||
| provide | ||||
| information such as arrival/departure interface identification, | information such as arrival/departure interface identification, | |||
| arrival timestamp, and any relevant information about the Node or | arrival timestamp, and any relevant information about the Node or | |||
| specific link which delivered the query to the Node.</t> | specific link that delivered the query to the Node.</dd> | |||
| <dt>Hop specification</dt> | ||||
| <t hangText="Hop specification">A Hop specification MUST contain a | <dd>A Hop specification <bcp14>MUST</bcp14> contain a | |||
| Node Identity, and MAY contain arrival and/or departure interface | Node identity and <bcp14>MAY</bcp14> contain arrival and/or departur | |||
| identification, round trip delay, and an arrival timestamp.</t> | e interface | |||
| identification, Round-Trip Delay, and an arrival timestamp.</dd> | ||||
| <t hangText="Routing Class">A route that treats equally a class of | <dt>Routing Class</dt> | |||
| <dd>Routing Class is a Route that treats a class of | ||||
| different types of packets, designated "C" (unrelated to address | different types of packets, designated "C" (unrelated to address | |||
| classes of the past) <xref target="RFC2330"/> <xref | classes of the past) equally (<xref target="RFC2330" format="default | |||
| target="RFC8468"/>. Knowledge of such a class allows any one of | "/> <xref target="RFC8468" format="default"/>). Knowledge of such a class allows | |||
| any one of | ||||
| the types of packets within that class to be used for subsequent | the types of packets within that class to be used for subsequent | |||
| measurement of the route. The designator "class C" is used for | measurement of the Route. The designator "class C" is used for | |||
| historical reasons, see <xref target="RFC2330"/>.</t> | historical reasons; see <xref target="RFC2330" format="default"/>.</ | |||
| </list></t> | dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Formal Name"> | <name>Formal Name</name> | |||
| <t>The formal name of the metric is:</t> | <t>The formal name of the metric is:</t> | |||
| <t> Type-P-Route-Ensemble-Method-Variant </t> | <t> Type-P-Route-Ensemble-Method-Variant </t> | |||
| <t>abbreviated as Route Ensemble.</t> | <t>abbreviated as Route Ensemble.</t> | |||
| <t>Note that Type-P depends heavily on the chosen method and | <t>Note that Type-P depends heavily on the chosen method and | |||
| variant.</t> | variant.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Parameters"> | <name>Parameters</name> | |||
| <t>This section lists the REQUIRED input factors to define and measure | <t>This section lists the <bcp14>REQUIRED</bcp14> input factors to defin | |||
| a Route metric, as specified in this memo.<list style="symbols"> | e and measure | |||
| <t>Src, the address of a Node (such as the globally routable IP | a Route metric, as specified in this memo.</t> | |||
| address).</t> | <dl spacing="normal"> | |||
| <dt>Src:</dt> | ||||
| <t>Dst, the address of a Node (such as the globally routable IP | <dd> the address of a Node (such as the globally routable IP | |||
| address).</t> | address).</dd> | |||
| <dt>Dst:</dt> | ||||
| <t>i, the limit on the number of Hops a specific packet may visit | <dd> the address of a Node (such as the globally routable IP | |||
| address).</dd> | ||||
| <dt>i:</dt> | ||||
| <dd> the limit on the number of Hops a specific packet may visit | ||||
| as it traverses from the Node at Src to the Node at Dst (such as | as it traverses from the Node at Src to the Node at Dst (such as | |||
| the TTL or Hop Limit).</t> | the TTL or Hop Limit).</dd> | |||
| <dt>MaxHops:</dt> | ||||
| <t>MaxHops, the maximum value of i used, (i=1,2,3,...MaxHops).</t> | <dd> the maximum value of i used (i=1,2,3,...MaxHops).</dd> | |||
| <dt>T0:</dt> | ||||
| <t>T0, a time (start of measurement interval)</t> | <dd>a time (start of measurement interval).</dd> | |||
| <dt>Tf:</dt> | ||||
| <t>Tf, a time (end of measurement interval)</t> | <dd>a time (end of measurement interval).</dd> | |||
| <dt>MP(address):</dt> | ||||
| <t>MP(address), Measurement Point at address, such as Src or Dst, | <dd>the Measurement Point at address, such as Src or Dst, | |||
| usually at the same node stack layer as "address".</t> | usually at the same Node stack layer as "address".</dd> | |||
| <dt>T:</dt> | ||||
| <t>T, the Node time of a packet as measured at MP(Src), meaning | <dd> the Node time of a packet as measured at MP(Src), meaning | |||
| Measurement Point at the Source.</t> | Measurement Point at the Source.</dd> | |||
| <dt>Ta:</dt> | ||||
| <t>Ta, the Node time of a reply packet's *arrival* as measured at | <dd> the Node time of a reply packet's <strong>arrival</strong> as meas | |||
| ured at | ||||
| MP(Src), assigned to packets that arrive within a "reasonable" | MP(Src), assigned to packets that arrive within a "reasonable" | |||
| time (see parameter below).</t> | time (see parameter below).</dd> | |||
| <dt>Tmax:</dt> | ||||
| <t>Tmax, a maximum waiting time for reply packets to return to the | <dd> a maximum waiting time for reply packets to return to the | |||
| source, set sufficiently long to disambiguate packets with long | source, set sufficiently long to disambiguate packets with long | |||
| delays from packets that are discarded (lost), such that the | delays from packets that are discarded (lost), such that the | |||
| distribution of Round-Trip Delay is not truncated.</t> | distribution of Round-Trip Delay is not truncated.</dd> | |||
| <dt>F:</dt> | ||||
| <t>F, the number of different flows simulated by the method and | <dd> the number of different flows simulated by the method and | |||
| variant.</t> | variant.</dd> | |||
| <dt>flow:</dt> | ||||
| <t>flow, the stream of packets with the same n-tuple of designated | <dd> the stream of packets with the same n-tuple of designated | |||
| header fields that (when held constant) result in identical | header fields that (when held constant) result in identical | |||
| treatment in a multi-path decision (such as the decision taken in | treatment in a multipath decision (such as the decision taken in | |||
| load balancing). Note: The IPv6 flow label MAY be included in the | load balancing). Note: The IPv6 flow label <bcp14>MAY</bcp14> be inc | |||
| flow definition if the MP(Src) is a Tunnel End Point (TEP) | luded in the | |||
| complying with <xref target="RFC6438"/> guidelines.</t> | flow definition if the MP(Src) is a Tunnel Endpoint (TEP) | |||
| complying with the guidelines in <xref target="RFC6438" format="defa | ||||
| <t>Type-P, the complete description of the packets for which this | ult"/>.</dd> | |||
| assessment applies (including the flow-defining fields).</t> | <dt>Type-P:</dt> | |||
| </list></t> | <dd> the complete description of the packets for which this | |||
| assessment applies (including the flow-defining fields).</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default" anchor="Metric"> | ||||
| <section title="Metric Definitions"> | <name>Metric Definitions</name> | |||
| <t>This section defines the REQUIRED measurement components of the | <t>This section defines the <bcp14>REQUIRED</bcp14> measurement componen | |||
| ts of the | ||||
| Route metrics (unless otherwise indicated):</t> | Route metrics (unless otherwise indicated):</t> | |||
| <dl spacing="normal"> | ||||
| <t>M, the total number of packets sent between T0 and Tf.</t> | <dt>M:</dt> | |||
| <dd> the total number of packets sent between T0 and Tf.</dd> | ||||
| <t>N, the smallest value of i needed for a packet to be received at | <dt>N:</dt> | |||
| Dst (sent between T0 and Tf).</t> | <dd> the smallest value of i needed for a packet to be received at | |||
| Dst (sent between T0 and Tf).</dd> | ||||
| <t>Nmax, the largest value of i needed for a packet to be received at | <dt>Nmax:</dt> | |||
| Dst (sent between T0 and Tf). Nmax may be equal to N.</t> | <dd> the largest value of i needed for a packet to be received at | |||
| Dst (sent between T0 and Tf). Nmax may be equal to N.</dd> | ||||
| <t>Next define a *singleton* definition for a Node on the path, with | </dl> | |||
| <t>Next, define a <strong>singleton</strong> for a Node on the path with | ||||
| sufficient indexes to identify all Nodes identified in a measurement | sufficient indexes to identify all Nodes identified in a measurement | |||
| interval (where *singleton* is part of the IPPM Framework <xref | interval (where <strong>singleton</strong> is part of the IPPM Framework | |||
| target="RFC2330"/>).</t> | <xref | |||
| target="RFC2330" format="default"/>).</t> | ||||
| <t>A Hop Specification, designated h(i,j), the IP address and/or | <dl spacing="normal"> | |||
| identity of Discoverable Nodes (or Cooperating Nodes) that are i hops | <dt>singleton:</dt> | |||
| <dd>A Hop specification, designated h(i,j), the IP address and/or | ||||
| identity of Discoverable Nodes (or Cooperating Nodes) that are i Hops | ||||
| away from the Node with address = Src and part of Route j during the | away from the Node with address = Src and part of Route j during the | |||
| measurement interval, T0 to Tf. As defined here, a Hop singleton | measurement interval T0 to Tf. As defined here, a Hop singleton | |||
| measurement MUST contain a Node Identity, hid(i,j), and MAY contain | measurement <bcp14>MUST</bcp14> contain a Node identity, hid(i,j), and < | |||
| one or more of the following attributes:<list style="symbols"> | bcp14>MAY</bcp14> contain | |||
| <t>a(i,j) Arrival Interface ID (e.g., when <xref | one or more of the following attributes:</dd> | |||
| target="RFC5837"/> is supported)</t> | </dl> | |||
| <ul spacing="normal"> | ||||
| <t>d(i,j) Departure Interface ID (e.g., when <xref | <li>a(i,j) Arrival Interface ID (e.g., when <xref target="RFC5837" | |||
| target="RFC5837"/> is supported)</t> | format="default"/> is supported)</li> | |||
| <li>d(i,j) Departure Interface ID (e.g., when <xref target="RFC5837" | ||||
| <t>t(i,j) Arrival Timestamp, where t(i,j) is ideally supplied by | format="default"/> is supported)</li> | |||
| the Hop. (Note that t(i,j) might be approximated from the sending | <li>t(i,j) arrival timestamp, where t(i,j) is ideally supplied by | |||
| time of the packet that revealed the Hop, e.g., when the round | the Hop (note that t(i,j) might be approximated from the sending | |||
| trip response time is available and divided by 2.)</t> | time of the packet that revealed the Hop, e.g., when the | |||
| round-trip response time is available and divided by 2)</li> | ||||
| <t>Measurements of Round-Trip Delay (for each packet that reveals | <li>Measurements of Round-Trip Delay (for each packet that reveals | |||
| the same Node Identity and flow attributes, then this attribute is | the same Node identity and flow attributes, then this attribute is | |||
| computed, see next section)</t> | computed; see next section)</li> | |||
| </list></t> | </ul> | |||
| <t>Node identities and related information can be ordered by their | ||||
| <t>Node Identities and related information can be ordered by their | ||||
| distance from the Node with address Src in Hops h(i,j). Based on this, | distance from the Node with address Src in Hops h(i,j). Based on this, | |||
| two forms of Routes are distinguished:</t> | two forms of Routes are distinguished:</t> | |||
| <t>A Route Ensemble is defined as the combination of all Routes | ||||
| <t>A Route Ensemble is defined as the combination of all routes | ||||
| traversed by different flows from the Node at Src address to the Node | traversed by different flows from the Node at Src address to the Node | |||
| at Dst address. A single Route traversed by a single flow (determined | at Dst address. A single Route traversed by a single flow (determined | |||
| by an unambiguous tuple of addresses Src and Dst, and other identical | by an unambiguous tuple of addresses Src and Dst and other identical | |||
| flow criteria) is a member of the Route Ensemble and called a Member | flow criteria) is a member of the Route Ensemble and called a Member | |||
| Route.</t> | Route.</t> | |||
| <t>Using h(i,j) and components and parameters further define:</t> | ||||
| <t>Using h(i,j) and components and parameters, further define:</t> | ||||
| <t>When considering the set of Hops in the context of a single flow, a | <t>When considering the set of Hops in the context of a single flow, a | |||
| Member Route j is an ordered list {h(1,j), ... h(Nj, j)} where h(i-1, | Member Route j is an ordered list {h(1,j), ... h(Nj, j)} where h(i-1, | |||
| j) and h(i, j) are 1 hop away from each other and Nj satisfying | j) and h(i, j) are one Hop away from each other and Nj satisfying | |||
| h(Nj,j)=Dst is the minimum count of Hops needed by the packet on | h(Nj,j)=Dst is the minimum count of Hops needed by the packet on | |||
| Member Route j to reach Dst. Member Routes must be unique. The | member Route j to reach Dst. Member Routes must be unique. The | |||
| uniqueness property requires that any two Member routes j and k that | uniqueness property requires that any two Member Routes, j and k, that | |||
| are part of the same Route Ensemble differ either in terms of minimum | are part of the same Route Ensemble differ either in terms of minimum | |||
| hop count Nj and Nk to reach the destination Dst, or, in the case of | Hop count Nj and Nk to reach the destination Dst or, in the case of | |||
| identical hop count Nj=Nk, they have at least one distinct Hop: h(i,j) | identical Hop count Nj=Nk, they have at least one distinct Hop: h(i,j) | |||
| != h(i,k) for at least one i (i=1..Nj).</t> | != h(i,k) for at least one i (i=1..Nj).</t> | |||
| <t>All the optional information collected to describe a Member Route, | <t>All the optional information collected to describe a Member Route, | |||
| such as the arrival interface, departure interface, and Round Trip | such as the arrival interface, departure interface, and Round-Trip | |||
| Delay at each Hop, turns each list item into a rich structure. There | Delay at each Hop, turns each list item into a rich structure. There | |||
| may be information on the links between Hops, possibly information on | may be information on the links between Hops, possible information on | |||
| the routing (arrival interface and departure interface), an estimate | the routing (arrival interface and departure interface), an estimate | |||
| of distance between Hops based on Round-Trip Delay measurements and | of distance between Hops based on Round-Trip Delay measurements and | |||
| calculations, and a time stamp indicating when all these additional | calculations, and a timestamp indicating when all these additional | |||
| details were valid.</t> | details were measured.</t> | |||
| <t>The Route Ensemble from Src to Dst, during the measurement interval | <t>The Route Ensemble from Src to Dst, during the measurement interval | |||
| T0 to Tf, is the aggregate of all m distinct Member Routes discovered | T0 to Tf, is the aggregate of all m distinct Member Routes discovered | |||
| between the two Nodes with Src and Dst addresses. More formally, with | between the two Nodes with Src and Dst addresses. More formally, with | |||
| the Node having address Src omitted:</t> | the Node having address Src omitted:</t> | |||
| <sourcecode name=""><![CDATA[ | ||||
| <t><figure> | Route Ensemble = { | |||
| <artwork><![CDATA[Route Ensemble = { | ||||
| {h(1,1), h(2,1), h(3,1), ... h(N1,1)=Dst}, | {h(1,1), h(2,1), h(3,1), ... h(N1,1)=Dst}, | |||
| {h(1,2), h(2,2), h(3,2),..., h(N2,2)=Dst}, | {h(1,2), h(2,2), h(3,2),..., h(N2,2)=Dst}, | |||
| ... | ... | |||
| {h(1,m), h(2,m), h(3,m), ....h(Nm,m)=Dst} | {h(1,m), h(2,m), h(3,m), ....h(Nm,m)=Dst} | |||
| } | } | |||
| ]]></sourcecode> | ||||
| ]]></artwork> | <t>where the following conditions apply: i <= Nj <= Nmax | |||
| </figure>where the following conditions apply: i <= Nj <= Nmax | ||||
| (j=1..m)</t> | (j=1..m)</t> | |||
| <t>Note that some h(i,j) may be empty (null) in the case that systems | <t>Note that some h(i,j) may be empty (null) in the case that systems | |||
| do not reply (not discoverable, or not cooperating).</t> | do not reply (not discoverable or not cooperating).</t> | |||
| <t>h(i-1,j) and h(i,j) are the Hops on the same Member Route one Hop | ||||
| <t>h(i-1,j) and h(i,j) are the Hops on the same Member Route one hop | ||||
| away from each other.</t> | away from each other.</t> | |||
| <t>Hop h(i,j) may be identical with h(k,l) for i!=k and j!=l, which | ||||
| <t>Hop h(i,j) may be identical with h(k,l) for i!=k and j!=l ; which | ||||
| means there may be portions shared among different Member Routes | means there may be portions shared among different Member Routes | |||
| (parts of Member Routes may overlap).</t> | (parts of Member Routes may overlap).</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Related Round-Trip Delay and Loss Definitions"> | <name>Related Round-Trip Delay and Loss Definitions</name> | |||
| <t>RTD(i,j,T) is defined as a singleton of the <xref | <t>RTD(i,j,T) is defined as a singleton of the <xref target="RFC2681" | |||
| target="RFC2681"/> Round-Trip Delay between the Node with address = | format="default"/> Round-Trip Delay between the Node with address = | |||
| Src and the Node at Hop h(i,j) at time T.</t> | Src and the Node at Hop h(i,j) at time T.</t> | |||
| <t>RTL(i,j,T) is defined as a singleton of the <xref target="RFC6673" | ||||
| <t>RTL(i,j,T) is defined as a singleton of the <xref | format="default"/> Round-Trip Loss between the Node with address = Src | |||
| target="RFC6673"/> Round-trip Loss between the Node with address = Src | ||||
| and the Node at Hop h(i,j) at time T.</t> | and the Node at Hop h(i,j) at time T.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Discussion"> | <name>Discussion</name> | |||
| <t>Depending on the way that Node Identity is revealed, it may be | <t>Depending on the way that the Node identity is revealed, it may be | |||
| difficult to determine parallel subpaths between the same pair of | difficult to determine parallel subpaths between the same pair of | |||
| Nodes (i.e. multiple parallel links). It is easier to detect parallel | Nodes (i.e., multiple parallel links). It is easier to detect parallel | |||
| subpaths involving different Nodes.<list style="symbols"> | subpaths involving different Nodes.</t> | |||
| <t>If a pair of discovered Nodes identify two different addresses | <ul spacing="normal"> | |||
| <li>If a pair of discovered Nodes identify two different addresses | ||||
| (IP or not), then they will appear to be different Nodes. See item | (IP or not), then they will appear to be different Nodes. See item | |||
| below.</t> | below.</li> | |||
| <li>If a pair of discovered Nodes identify two different IP | ||||
| <t>If a pair of discovered Nodes identify two different IP | addresses and the IP addresses resolve to the same Node name (in | |||
| addresses, and the IP addresses resolve to the same Node name (in | the DNS), then they will appear to be the same Node.</li> | |||
| the DNS), then they will appear to be the same Nodes.</t> | <li>If a discovered Node always replies using the same network | |||
| <t>If a discovered Node always replies using the same network | ||||
| address, regardless of the interface a packet arrives on, then | address, regardless of the interface a packet arrives on, then | |||
| multiple parallel links cannot be detected in that network domain. | multiple parallel links cannot be detected in that network domain. | |||
| This condition may apply to traceroute-style methods, but may not | This condition may apply to traceroute-style methods but may not | |||
| apply to other hybrid methods based on In-situ Operations, | apply to other hybrid methods based on In situ Operations, | |||
| Administration, and Maintenance (IOAM). For example, if the <xref | Administration, and Maintenance (IOAM). For example, if the ICMP ext | |||
| target="RFC5837"/> ICMP extension mechanism is implemented, then | ension mechanism described in <xref | |||
| target="RFC5837" format="default"/> is | ||||
| implemented, then | ||||
| parallel links can be detected with the discovery traceroute-style | parallel links can be detected with the discovery traceroute-style | |||
| methods. </t> | methods. </li> | |||
| <li>If parallel links between routers are aggregated below the IP | ||||
| <t>If parallel links between routers are aggregated below the IP | layer, then, from the Node's point of view, all these links share th | |||
| layer, then from Node point of view, all these links share the | e | |||
| same pair of IP addresses. The existence of these parallel links | same pair of IP addresses. The existence of these parallel links | |||
| can't be detected at the IP layer. This applies to other network | can't be detected at the IP layer. This applies to other network | |||
| domains with layers below them, as well. This condition may apply | domains with layers below them as well. This condition may apply | |||
| to traceroute-style methods, but may not apply to other hybrid | to traceroute-style methods but may not apply to other hybrid | |||
| methods based on IOAM.</t> | methods based on IOAM.</li> | |||
| </list></t> | </ul> | |||
| <t>When a Route assessment employs IP packets (for example), the | ||||
| <t>When a route assessment employs IP packets (for example), the | ||||
| reality of flow assignment to parallel subpaths involves layers above | reality of flow assignment to parallel subpaths involves layers above | |||
| IP. Thus, the measured Route Ensemble is applicable to IP and higher | IP. Thus, the measured Route Ensemble is applicable to IP and higher | |||
| layers (as described in the methodology's packet of Type-P and flow | layers (as described in the methodology's packet of Type-P and flow | |||
| parameters).</t> | parameters).</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Reporting the Metric"> | <name>Reporting the Metric</name> | |||
| <t>An Information Model and an XML Data Model for Storing Traceroute | <t>An Information Model and an XML Data Model for Storing Traceroute | |||
| Measurements is available in <xref target="RFC5388"/>. The measured | Measurements is available in <xref target="RFC5388" format="default"/>. | |||
| information at each hop includes four pieces of information: a | The measured | |||
| one-dimensional hop index, Node symbolic address, Node IP address, and | information at each Hop includes four pieces of information: a | |||
| one-dimensional Hop index, Node symbolic address, Node IP address, and | ||||
| RTD for each response.</t> | RTD for each response.</t> | |||
| <t>The description of Hop information that may be collected according | <t>The description of Hop information that may be collected according | |||
| to this memo covers more dimensions, as defined in Section 3.4 above. | to this memo covers more dimensions, as defined in <xref target="Metric" />. | |||
| For example, the Hop index is two-dimensional to capture the | For example, the Hop index is two-dimensional to capture the | |||
| complexity of a Route Ensemble, and it contains corresponding Node | complexity of a Route Ensemble, and it contains corresponding Node | |||
| identities at a minimum. The models need to be expanded to include | identities at a minimum. The models need to be expanded to include | |||
| these features, as well as Arrival Interface ID, Departure Interface | these features as well as Arrival Interface ID, Departure Interface | |||
| ID, and Arrival Timestamp, when available. The original sending | ID, and arrival timestamp, when available. The original sending | |||
| Timestamp from the Src Node anchors a particular measurement in | Timestamp from the Src Node anchors a particular measurement in | |||
| time.</t> | time.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Methodologies" numbered="true" toc="default"> | ||||
| <section anchor="Methodologies" title="Route Assessment Methodologies"> | <name>Route Assessment Methodologies</name> | |||
| <t>There are two classes of methods described in this section, active | <t>There are two classes of methods described in this section, active | |||
| methods relying on the reaction to TTL or Hop Limit Exceeded condition | methods relying on the reaction to TTL or Hop Limit Exceeded condition | |||
| to discover Nodes on a path, and Hybrid active-passive methods that | to discover Nodes on a path and hybrid active-passive methods that | |||
| involve direct interrogation of cooperating Nodes (usually within a | involve direct interrogation of Cooperating Nodes (usually within a | |||
| single domain). Description of these methods follow.</t> | single domain). Description of these methods follow.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Active Methodologies"> | <name>Active Methodologies</name> | |||
| <t>This section describes the method employed by current open source | <t>This section describes the method employed by current open-source | |||
| tools, thereby providing a practical framework for further advanced | tools, thereby providing a practical framework for further advanced | |||
| techniques to be included as method variants. This method is | techniques to be included as method variants. This method is | |||
| applicable for use across multiple administrative domains.</t> | applicable for use across multiple administrative domains.</t> | |||
| <t>Internet routing is complex because it depends on the policies of | <t>Internet routing is complex because it depends on the policies of | |||
| thousands of Autonomous Systems (AS). Most routers perform load | thousands of Autonomous Systems (ASes). Most routers perform load | |||
| balancing on flows using a form of Equal Cost Multiple Path (ECMP). | balancing on flows using a form of ECMP. | |||
| <xref target="RFC2991"/> describes a number of flow-based or hashed | <xref target="RFC2991" format="default"/> describes a number of flow-bas | |||
| approaches (e.g., Modulo-N Hash, Hash-Threshold, Highest Random Weight | ed or hashed | |||
| (HRW)), and makes some good suggestions. Flow-based ECMP avoids | approaches (e.g., Modulo-N Hash, Hash-Threshold, and Highest Random Weig | |||
| increased packet delay variation and possibly overwhelming levels of | ht | |||
| (HRW)) and makes some good suggestions. Flow-based ECMP avoids | ||||
| increased packet Delay Variation and possibly overwhelming levels of | ||||
| packet reordering in flows.</t> | packet reordering in flows.</t> | |||
| <t>A few routers still divide the workload through packet-based | <t>A few routers still divide the workload through packet-based | |||
| techniques, such as a round-robin scheme to distribute every new | techniques, such as a round-robin scheme to distribute every new | |||
| outgoing packet to multiple links, as explained in <xref | outgoing packet to multiple links, as explained in <xref | |||
| target="RFC2991"/>. The methods described in this section assume | target="RFC2991" format="default"/>. The methods described in this | |||
| flow-based ECMP.</t> | section assume flow-based ECMP.</t> | |||
| <t>Taking into account that Internet protocol was designed under the | <t>Taking into account that Internet protocol was designed under the | |||
| “end-to-end” principle, the IP payload and its header do | "end-to-end" principle, the IP payload and its header do | |||
| not provide any information about the routes or path necessary to | not provide any information about the Routes or path necessary to | |||
| reach some destination. For this reason, the popular tool traceroute | reach some destination. For this reason, the popular tool, traceroute, | |||
| was developed to gather the IP addresses of each hop along a path | was developed to gather the IP addresses of each Hop along a path | |||
| using the ICMP protocol <xref target="RFC0792"/>. Traceroute also | using ICMP <xref target="RFC0792" format="default"/>. Traceroute also | |||
| measures RTD from each hop. However, the growing complexity of the | measures RTD from each Hop. However, the growing complexity of the | |||
| Internet makes it more challenging to develop an accurate traceroute | Internet makes it more challenging to develop an accurate traceroute | |||
| implementation. For instance, the early traceroute tools would be | implementation. For instance, the early traceroute tools would be | |||
| inaccurate in the current network, mainly because they were not | inaccurate in the current network, mainly because they were not | |||
| designed to retain a flow state. However, evolved traceroute tools, | designed to retain a flow state. However, evolved traceroute tools, | |||
| such as Paris-traceroute <xref target="PT"/> <xref target="MLB"/> and | such as Paris-traceroute (<xref target="PT" format="default"/> <xref | |||
| Scamper <xref target="SCAMPER"/>, expect to encounter ECMP and achieve | target="MLB" format="default"/>) and | |||
| Scamper (<xref target="SCAMPER" format="default"/>), expect to encounter | ||||
| ECMP and achieve | ||||
| more accurate results when they do, where Scamper ensures traceroute | more accurate results when they do, where Scamper ensures traceroute | |||
| packets will follow the same path in 98% of cases<xref | packets will follow the same path in 98% of cases (<xref target="SCAMPER | |||
| target="SCAMPER"/>.</t> | " format="default"/>).</t> | |||
| <t>Today's traceroute tools send Type-P of packets, which are either ICM | ||||
| <t>Today's traceroute tools send Type-P of packets, either ICMP, UDP, | P, UDP, | |||
| or TCP. UDP and TCP are used when a particular characteristic needs to | or TCP. UDP and TCP are used when a particular characteristic needs to | |||
| be verified, such as filtering or traffic shaping on specific ports | be verified, such as filtering or traffic shaping on specific ports | |||
| (i.e., services). UDP and TCP traceroute are also used when ICMP | (i.e., services). UDP and TCP traceroute are also used when ICMP | |||
| responses are not received. <xref target="SCAMPER"/> supports IPv6 | responses are not received. <xref target="SCAMPER" format="default"/> su | |||
| traceroute measurements, keeping the FlowLabel constant in all | pports IPv6 | |||
| traceroute measurements, keeping the Flow Label constant in all | ||||
| packets.</t> | packets.</t> | |||
| <t>Paris-traceroute allows its users to measure the RTD to every Node | <t>Paris-traceroute allows its users to measure the RTD to every Node | |||
| of the path for a particular flow. Furthermore, either | of the path for a particular flow. Furthermore, either | |||
| Paris-traceroute or Scamper is capable of unveiling the many available | Paris-traceroute or Scamper is capable of unveiling the many available | |||
| paths between a source and destination (which are visible to active | paths between a source and destination (which are visible to active | |||
| methods). This task is accomplished by repeating complete traceroute | methods). This task is accomplished by repeating complete traceroute | |||
| measurements with different flow parameters for each measurement; | measurements with different flow parameters for each measurement; | |||
| Paris-traceroute provides “exhaustive” mode while scamper | Paris-traceroute provides an "exhaustive" mode, while Scamper | |||
| provides “tracelb” (stands for traceroute load balance). | provides "tracelb" (which stands for "traceroute load balance"). | |||
| The Framework for IP Performance Metrics (IPPM) (<xref | <xref | |||
| target="RFC2330"/> updated by<xref target="RFC7312"> </xref>) has the | target="RFC2330" format="default">"Framework for IP Performance Metrics"< | |||
| /xref>, updated by <xref target="RFC7312" | ||||
| format="default"> </xref>, has the | ||||
| flexibility to require that the Round-Trip Delay measurement <xref | flexibility to require that the Round-Trip Delay measurement <xref | |||
| target="RFC2681"/> uses packets with the constraints to assure that | target="RFC2681" format="default"/> uses packets with the constraints | |||
| to assure that | ||||
| all packets in a single measurement appear as the same flow. This | all packets in a single measurement appear as the same flow. This | |||
| flexibility covers ICMP, UDP, and TCP. The accompanying methodology of | flexibility covers ICMP, UDP, and TCP. The accompanying methodology of | |||
| <xref target="RFC2681"/> needs to be expanded to report the sequential | <xref target="RFC2681" format="default"/> needs to be expanded to report | |||
| hop identifiers along with RTD measurements, but no new metric | the sequential | |||
| Hop identifiers along with RTD measurements, but no new metric | ||||
| definition is needed.</t> | definition is needed.</t> | |||
| <t>The advanced Route assessment methods used in Paris-traceroute | ||||
| <t>The advanced route assessment methods used in Paris-traceroute | <xref target="PT" format="default"/> keep the critical fields constant f | |||
| <xref target="PT"/> keep the critical fields constant for every packet | or every packet | |||
| to maintain the appearance of the same flow. When considering IPv6 | to maintain the appearance of the same flow. When considering IPv6 | |||
| headers, it is necessary to ensure that the IP source and destination | headers, it is necessary to ensure that the IP Source and Destination | |||
| addresses and the FlowLabel are constant (but note that many routers | addresses and Flow Label are constant (but note that many routers | |||
| ignore the FlowLabel field at this time), see <xref | ignore the Flow Label field at this time); see <xref target="RFC6437" | |||
| target="RFC6437"/>. Use of IPv6 Extension Headers may add critical | format="default"/>. Use of IPv6 Extension Headers may add critical | |||
| fields, and SHOULD be avoided. In IPv4, certain fields of the IP | fields and <bcp14>SHOULD</bcp14> be avoided. In IPv4, certain fields of | |||
| header and the first four bytes of the IP payload should remain | the IP | |||
| constant in a flow. In the IPv4 header, the IP source and destination | header and the first 4 bytes of the IP payload should remain | |||
| constant in a flow. In the IPv4 header, the IP Source and Destination | ||||
| addresses, protocol number, and Diffserv fields identify flows. The | addresses, protocol number, and Diffserv fields identify flows. The | |||
| first four payload bytes include the UDP and TCP ports, and the ICMP | first 4 payload bytes include the UDP and TCP ports and the ICMP | |||
| type, code, and checksum fields.</t> | type, code, and checksum fields.</t> | |||
| <t>Maintaining a constant ICMP checksum in IPv4 is most challenging, | <t>Maintaining a constant ICMP checksum in IPv4 is most challenging, | |||
| as the ICMP sequence number or identifier fields will usually change | as the ICMP sequence number or identifier fields will usually change | |||
| for different probes of the same path. Probes should use arbitrary | for different probes of the same path. Probes should use arbitrary | |||
| bytes in the ICMP data field to offset changes to sequence number and | bytes in the ICMP data field to offset changes to the sequence number an d | |||
| identifier, thus keeping the checksum constant.</t> | identifier, thus keeping the checksum constant.</t> | |||
| <t>Finally, it is also essential to Route the resulting ICMP Time | ||||
| <t>Finally, it is also essential to route the resulting ICMP Time | ||||
| Exceeded messages along a consistent path. In IPv6, the fields above | Exceeded messages along a consistent path. In IPv6, the fields above | |||
| are sufficient. In IPv4, the ICMP Time Exceeded message will contain | are sufficient. | |||
| the IP header and the first eight bytes of the IP payload, which | In IPv4, the ICMP Time Exceeded message will contain | |||
| affects its ICMP checksum. The TCP sequence number, UDP Length, and | the IP header and the first 8 bytes of the IP payload, both of which | |||
| UDP checksum will affect this value, and should remain constant.</t> | affect its ICMP checksum calculation. The TCP sequence number, UDP lengt | |||
| h, and | ||||
| UDP checksum will affect this value and should remain constant.</t> | ||||
| <t>Formally, to maintain the same flow in the measurements to a | <t>Formally, to maintain the same flow in the measurements to a | |||
| particular hop, the Type-P-Route-Ensemble-Method-Variant packets | particular Hop, the Type-P-Route-Ensemble-Method-Variant packets | |||
| should be<xref target="PT"/>:</t> | should have the following attributes (see <xref target="PT" format="defa | |||
| ult"/>):</t> | ||||
| <t><list style="symbols"> | ||||
| <t>TCP case: For IPv4, the fields Src, Dst, port-Src, port_Dst, | ||||
| sequence number, and Diffserv Field SHOULD be the same. For IPv6, | ||||
| the field FlowLabel, Src and Dst SHOULD be the same.</t> | ||||
| <t>UDP case: For IPv4, the fields Src, Dst, port-Src, port-Dst, | <dl spacing="normal"> | |||
| Diffserv should be the same, and the UDP-checksum SHOULD change to | <dt>TCP case:</dt> | |||
| keep the IP checksum of the ICMP time exceeded reply constant. | <dd> For IPv4, the fields Src, Dst, port-Src, port_Dst, | |||
| sequence number, and Diffserv <bcp14>SHOULD</bcp14> be the same. For | ||||
| IPv6, | ||||
| the fields Flow Label, Src, and Dst <bcp14>SHOULD</bcp14> be the sam | ||||
| e.</dd> | ||||
| <dt>UDP case:</dt> | ||||
| <dd> For IPv4, the fields Src, Dst, port-Src, port-Dst, and | ||||
| Diffserv should be the same, and the UDP checksum <bcp14>SHOULD</bcp | ||||
| 14> change to | ||||
| keep the IP checksum of the ICMP Time Exceeded reply constant. | ||||
| Then, the data length should be fixed, and the data field is used | Then, the data length should be fixed, and the data field is used | |||
| to make it so (consider that ICMP checksum uses its data field, | to make it so (consider that ICMP checksum uses its data field, | |||
| which contains the original IP header plus 8 bytes of UDP, where | which contains the original IP header plus 8 bytes of UDP, where | |||
| TTL, IP identification, IP checksum, and UDP checksum changes). | TTL, IP identification, IP checksum, and UDP checksum changes). | |||
| For IPv6, the field FlowLabel, and Source and Destination | For IPv6, the field Flow Label and Source and Destination | |||
| addresses SHOULD be the same.</t> | addresses <bcp14>SHOULD</bcp14> be the same.</dd> | |||
| <dt>ICMP case:</dt> | ||||
| <t>ICMP case: For IPv4, the Data field SHOULD compensate | <dd> For IPv4, the data field <bcp14>SHOULD</bcp14> compensate | |||
| variations on TTL or Hop Limit, IP identification, and IP checksum | variations on TTL or Hop Limit, IP identification, and IP checksum | |||
| for every packet. There is no need to consider ICMPv6 because only | for every packet. There is no need to consider ICMPv6 because only | |||
| FlowLabel of IPv6 and Source and Destination addresses are used, | Flow Label of IPv6 and Source and Destination addresses are used, | |||
| and all of them SHOULD be constant.</t> | and all of them <bcp14>SHOULD</bcp14> be constant.</dd> | |||
| </list></t> | </dl> | |||
| <t>Then, the way to identify different Hops and attempts of the same | ||||
| <t>Then, the way to identify different hops and attempts of the same | ||||
| IPv4 flow is:</t> | IPv4 flow is:</t> | |||
| <dl spacing="normal"> | ||||
| <dt>TCP case:</dt> | ||||
| <dd> The IP identification field.</dd> | ||||
| <dt>UDP case:</dt> | ||||
| <dd> The IP identification field.</dd> | ||||
| <dt>ICMP case:</dt> | ||||
| <dd> The IP identification field and ICMP sequence | ||||
| number.</dd> | ||||
| </dl> | ||||
| <t><list style="symbols"> | <section numbered="true" toc="default"> | |||
| <t>TCP case: The IP identification field.</t> | <name>Temporal Composition for Route Metrics</name> | |||
| <t>The active Route assessment methods described above have the | ||||
| <t>UDP case: The IP identification field.</t> | ||||
| <t>ICMP case: The IP identification field, and ICMP Sequence | ||||
| number.</t> | ||||
| </list></t> | ||||
| <section title="Temporal Composition for Route Metrics"> | ||||
| <t>The Active Route Assessment Methods described above have the | ||||
| ability to discover portions of a path where ECMP load balancing is | ability to discover portions of a path where ECMP load balancing is | |||
| present, observed as two or more unique Member Routes having one or | present, observed as two or more unique Member Routes having one or | |||
| more distinct Hops which are part of the Route Ensemble. Likewise, | more distinct Hops that are part of the Route Ensemble. Likewise, | |||
| attempts to deliberately vary the flow characteristics to discover | attempts to deliberately vary the flow characteristics to discover | |||
| all Member Routes will reveal portions of the path which are | all Member Routes will reveal portions of the path that are | |||
| flow-invariant.</t> | flow invariant.</t> | |||
| <t><xref target="RFC2330" section="9.2" sectionFormat="of"/> describes | ||||
| <t>Section 9.2 of <xref target="RFC2330"/> describes Temporal | the Temporal | |||
| Composition of metrics, and introduces the possibility of a | Composition of metrics and introduces the possibility of a | |||
| relationship between earlier measurement results and the results for | relationship between earlier measurement results and the results for | |||
| measurement at the current time (for a given metric). There is value | measurement at the current time (for a given metric). There is value | |||
| in establishing a Temporal Composition relationship for Route | in establishing a Temporal Composition relationship for Route | |||
| Metrics. However, this relationship does not represent a forecast of | metrics; however, this relationship does not represent a forecast of | |||
| future route conditions in any way.</t> | future Route conditions in any way.</t> | |||
| <t>For Route-metric measurements, the value of Temporal Composition | ||||
| <t>For Route Metric measurements, the value of Temporal Composition | ||||
| is to reduce the measurement iterations required with repeated | is to reduce the measurement iterations required with repeated | |||
| measurements. Reduced iterations are possible by inferring that | measurements. Reduced iterations are possible by inferring that | |||
| current measurements using fixed and previously measured flow | current measurements using fixed and previously measured flow | |||
| characteristics:<list style="symbols"> | characteristics:</t> | |||
| <t>will have many common hops with previous measurements.</t> | <ul spacing="normal"> | |||
| <li>will have many common Hops with previous measurements.</li> | ||||
| <t>will have relatively time-stable results at the ingress and | <li>will have relatively time-stable results at the ingress and | |||
| egress portions of the path when measured from user locations, | egress portions of the path when measured from user locations, | |||
| as opposed to measurements of backbone networks and across | as opposed to measurements of backbone networks and across | |||
| inter-domain gateways.</t> | inter-domain gateways.</li> | |||
| <li>may have greater potential for time variation in path | ||||
| <t>may have greater potential for time-variation in path | ||||
| portions where ECMP load balancing is observed (because | portions where ECMP load balancing is observed (because | |||
| increasing or decreasing the pool of links changes the hash | increasing or decreasing the pool of links changes the hash | |||
| calculations).</t> | calculations).</li> | |||
| </list></t> | </ul> | |||
| <t>Optionally, measurement systems may take advantage of the | <t>Optionally, measurement systems may take advantage of the | |||
| inferences above when seeking to reduce measurement iterations, | inferences above when seeking to reduce measurement iterations | |||
| after exhaustive measurements indicate that the time-stable | after exhaustive measurements indicate that the time-stable | |||
| properties are present. Repetitive Active Route measurement | properties are present. Repetitive active Route measurement | |||
| systems:<list style="numbers"> | systems:</t> | |||
| <t>SHOULD occasionally check path portions which have exhibited | <ol spacing="normal" type="1"> | |||
| <li><bcp14>SHOULD</bcp14> occasionally check path portions that have | ||||
| exhibited | ||||
| stable results over time, particularly ingress and egress | stable results over time, particularly ingress and egress | |||
| portions of the path (e.g., daily checks if measuring many times | portions of the path (e.g., daily checks if measuring many times | |||
| during a day).</t> | during a day).</li> | |||
| <li><bcp14>SHOULD</bcp14> continue testing portions of the path that | ||||
| <t>SHOULD continue testing portions of the path that have | have | |||
| previously exhibited ECMP load balancing.</t> | previously exhibited ECMP load balancing.</li> | |||
| <li><bcp14>SHALL</bcp14> trigger reassessment of the complete path a | ||||
| <t>SHALL trigger re-assessment of the complete path and Route | nd Route | |||
| Ensemble, if any change in hops is observed for a specific (and | Ensemble if any change in Hops is observed for a specific (and | |||
| previously tested) flow.</t> | previously tested) flow.</li> | |||
| </list></t> | </ol> | |||
| <t/> | <t/> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Routing Class Identification"> | <name>Routing Class Identification</name> | |||
| <t>There is an opportunity to apply the <xref target="RFC2330"/> | <t>There is an opportunity to apply the notion from <xref target="RFC2 | |||
| notion of equal treatment for a class of packets, "...very useful to | 330" format="default"/> | |||
| of equal treatment for a class of packets, "...very useful to | ||||
| know if a given Internet component treats equally a class C of | know if a given Internet component treats equally a class C of | |||
| different types of packets", as it applies to Route measurements. | different types of packets", as it applies to Route measurements. | |||
| The notion of class C was examined further in <xref | The notion of class C was examined further in <xref target="RFC8468" | |||
| target="RFC8468"/> as it applied to load-balancing flows over | format="default"/> as it applied to load-balancing flows over | |||
| parallel paths, which is the case we develop here. Knowledge of | parallel paths, which is the case we develop here. Knowledge of | |||
| class C parameters (unrelated to address classes of the past) on a | class C parameters (unrelated to address classes of the past) on a | |||
| path potentially reduces the number of flows required for a given | path potentially reduces the number of flows required for a given | |||
| method to assess a Route Ensemble over time.</t> | method to assess a Route Ensemble over time.</t> | |||
| <t>First, recognize that each Member Route of a Route Ensemble will | <t>First, recognize that each Member Route of a Route Ensemble will | |||
| have a corresponding class C. Class C can be discovered by testing | have a corresponding class C. Class C can be discovered by testing | |||
| with multiple flows, all of which traverse the unique set of hops | with multiple flows, all of which traverse the unique set of Hops | |||
| that comprise a specific Member Route.</t> | that comprise a specific Member Route.</t> | |||
| <t>Second, recognize that the different classes depend primarily on | <t>Second, recognize that the different classes depend primarily on | |||
| the hash functions used at each instance of ECMP load balancing on | the hash functions used at each instance of ECMP load balancing on | |||
| the path.</t> | the path.</t> | |||
| <t>Third, recognize the synergy with Temporal Composition methods | <t>Third, recognize the synergy with Temporal Composition methods | |||
| (described above), where evaluation intends to discover time-stable | (described above), where evaluation intends to discover time-stable | |||
| portions of each Member Route, so that more emphasis can be placed | portions of each Member Route so that more emphasis can be placed | |||
| on ECMP portions that also determine class C.</t> | on ECMP portions that also determine class C.</t> | |||
| <t>The methods to assess the various class C characteristics benefit | <t>The methods to assess the various class C characteristics benefit | |||
| from the following measurement capabilities:<list style="symbols"> | from the following measurement capabilities:</t> | |||
| <t>flows designed to determine which n-tuple header fields are | <ul spacing="normal"> | |||
| considered by a given hash function and ECMP hop on the path, | <li>flows designed to determine which n-tuple header fields are | |||
| considered by a given hash function and ECMP Hop on the path | ||||
| and which are not. This operation immediately narrows the search | and which are not. This operation immediately narrows the search | |||
| space, where possible, and partially defines a class C.</t> | space, where possible, and partially defines a class C.</li> | |||
| <li>a priori knowledge of the possible types of hash functions in | ||||
| <t>a priori knowledge of the possible types of hash functions in | ||||
| use also helps to design the flows for testing (major router | use also helps to design the flows for testing (major router | |||
| vendors publish information about these hash functions, examples | vendors publish information about these hash functions; examples | |||
| are here <xref target="LOAD_BALANCE"/>.</t> | are in <xref target="LOAD_BALANCE" format="default"/>).</li> | |||
| <li>ability to direct the emphasis of current measurements on | ||||
| <t>ability to direct the emphasis of current measurements on | ||||
| ECMP portions of the path, based on recent past measurement | ECMP portions of the path, based on recent past measurement | |||
| results (the Routing Class of some portions of the path is | results (the Routing Class of some portions of the path is | |||
| essentially "all packets").</t> | essentially "all packets").</li> | |||
| </list></t> | </ul> | |||
| <t/> | <t/> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Intermediate Observation Point Route Measurement"> | <name>Intermediate Observation Point Route Measurement</name> | |||
| <t>There are many examples where passive monitoring of a flow at an | <t>There are many examples where passive monitoring of a flow at an | |||
| Observation Point within the network can detect unexpected Round | Observation Point within the network can detect unexpected | |||
| Trip Delay or Delay Variation. But how can the cause of the | Round-Trip Delay or Delay Variation. But how can the cause of the | |||
| anomalous delay be investigated further *from the Observation Point* | anomalous delay be investigated further <strong>from the Observation P | |||
| oint</strong> | ||||
| possibly located at an intermediate point on the path?</t> | possibly located at an intermediate point on the path?</t> | |||
| <t>In this case, knowledge that the flow of interest belongs to a | <t>In this case, knowledge that the flow of interest belongs to a | |||
| specific Routing Class C will enable measurement of the route where | specific Routing Class C will enable measurement of the Route where | |||
| anomalous delay has been observed. Specifically, Round-Trip Delay | anomalous delay has been observed. Specifically, Round-Trip Delay | |||
| assessment to each Hop on the path between the Observation Point and | assessment to each Hop on the path between the Observation Point and | |||
| the Destination for the flow of interest may discover high or | the Destination for the flow of interest may discover high or | |||
| variable delay on a specific link and Hop combination.</t> | variable delay on a specific link and Hop combination.</t> | |||
| <t>The determination of a Routing Class C that includes the flow of | ||||
| <t>The determination of a Routing Class C which includes the flow of | ||||
| interest is as described in the section above, aided by computation | interest is as described in the section above, aided by computation | |||
| of the relevant hash function output as the target.</t> | of the relevant hash function output as the target.</t> | |||
| <t/> | <t/> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <name>Hybrid Methodologies</name> | ||||
| <t>The Hybrid Type I methods provide an alternative for Route | ||||
| assessment. | ||||
| The "Scope, Applicability, and Assumptions" section of <xref | ||||
| target="RFC9197" format="default"/> provides one possible set of data | ||||
| fields that would support Route identification.</t> | ||||
| <t>In general, Nodes in the measured domain would be equipped with | ||||
| specific abilities:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>Store the identity of Nodes that a packet has visited in header | ||||
| data fields in the order the packet visited the Nodes.</li> | ||||
| <li>Support of a "Loopback" capability where a copy of the packet | ||||
| is returned to the encapsulating Node and the packet is processed | ||||
| like any other IOAM packet on the return transfer.</li> | ||||
| </ul> | ||||
| <section title="Hybrid Methodologies"> | <t>In addition to Node identity, Nodes may also identify the ingress | |||
| <t>The Hybrid Type I methods provide an alternative method for Route | ||||
| Member assessment. As mentioned in the Scope section, <xref | ||||
| target="I-D.ietf-ippm-ioam-data"/> provides a possible set of data | ||||
| fields that would support route identification.</t> | ||||
| <t>In general, nodes in the measured domain would be equipped with | ||||
| specific abilities:<list style="symbols"> | ||||
| <t>Store the identity of nodes that a packet has visited in header | ||||
| data fields, in the order the packet visited the nodes.</t> | ||||
| <t>Support of a "Loopback" capability, where a copy of the packet | ||||
| is returned to the encapsulating node, and the packet is processed | ||||
| like any other IOAM packet on the return transfer.</t> | ||||
| </list></t> | ||||
| <t>In addition to node identity, nodes may also identify the ingress | ||||
| and egress interfaces utilized by the tracing packet, the absolute | and egress interfaces utilized by the tracing packet, the absolute | |||
| time when the packet was processed, and other generic data (as | time when the packet was processed, and other generic data (as | |||
| described in section 4 of <xref target="I-D.ietf-ippm-ioam-data"/>). | described in <xref target="RFC9197" sectionFormat="of" section="3"/>). | |||
| Interface identification isn't necessarily limited to IP, i.e. | Interface identification isn't necessarily limited to IP, i.e., | |||
| different links in a bundle (LACP) could be identified. Equally well, | different links in a bundle (Link Aggregation Control Protocol (LACP)) | |||
| could be identified. Equally well, | ||||
| links without explicit IP addresses can be identified (like with | links without explicit IP addresses can be identified (like with | |||
| unnumbered interfaces in an IGP deployment).</t> | unnumbered interfaces in an IGP deployment).</t> | |||
| <t>Note that the Type-P packet specification for this method will | <t>Note that the Type-P packet specification for this method will | |||
| likely be a partial specification, because most of the packet fields | likely be a partial specification because most of the packet fields | |||
| are determined by the user traffic. The packet (encapsulation) | are determined by the user traffic. The packet encapsulation | |||
| header(s) added by the Hybrid method can certainly be specified in | header or headers added by the hybrid method can certainly be specified | |||
| in | ||||
| Type-P, in unpopulated form.</t> | Type-P, in unpopulated form.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Combining Different Methods"> | <name>Combining Different Methods</name> | |||
| <t>In principle, there are advantages if the entity conducting Route | <t>In principle, there are advantages if the entity conducting Route | |||
| measurements can utilize both forms of advanced methods (active and | measurements can utilize both forms of advanced methods (active and | |||
| hybrid), and combine the results. For example, if there are Nodes | hybrid) and combine the results. For example, if there are Nodes | |||
| involved in the path that qualify as Cooperating Nodes, but not as | involved in the path that qualify as Cooperating Nodes but not as | |||
| Discoverable Nodes, then a more complete view of Hops on the path is | Discoverable Nodes, then a more complete view of Hops on the path is | |||
| possible when a hybrid method (or interrogation protocol) is applied | possible when a hybrid method (or interrogation protocol) is applied | |||
| and the results are combined with the active method results collected | and the results are combined with the active method results collected | |||
| across all other domains.</t> | across all other domains.</t> | |||
| <t>In order to combine the results of active and hybrid/interrogation | <t>In order to combine the results of active and hybrid/interrogation | |||
| methods, the network Nodes that are part of a domain supporting an | methods, the network Nodes that are part of a domain supporting an | |||
| interrogation protocol have the following attributes: <list | interrogation protocol have the following attributes: </t> | |||
| style="numbers"> | <ol spacing="normal" type="1"> | |||
| <t>Nodes at the ingress to the domain SHOULD be both Discoverable | <li>Nodes at the ingress to the domain <bcp14>SHOULD</bcp14> be both Di | |||
| and Cooperating.</t> | scoverable | |||
| and Cooperating.</li> | ||||
| <t>Any Nodes within the domain that are both Discoverable and | <li>Any Nodes within the domain that are both Discoverable and | |||
| Cooperating SHOULD reveal the same Node Identity in response to | Cooperating <bcp14>SHOULD</bcp14> reveal the same Node identity in r | |||
| both active and hybrid methods.</t> | esponse to | |||
| both active and hybrid methods.</li> | ||||
| <t>Nodes at the egress to the domain SHOULD be both Discoverable | <li>Nodes at the egress to the domain <bcp14>SHOULD</bcp14> be both Di | |||
| and Cooperating, and SHOULD reveal the same Node Identity in | scoverable | |||
| response to both active and hybrid methods.</t> | and Cooperating and <bcp14>SHOULD</bcp14> reveal the same Node ident | |||
| </list></t> | ity in | |||
| response to both active and hybrid methods.</li> | ||||
| </ol> | ||||
| <t>When Nodes follow these requirements, it becomes a simple matter to | <t>When Nodes follow these requirements, it becomes a simple matter to | |||
| match single domain measurements with the overlapping results from a | match single-domain measurements with the overlapping results from a | |||
| multidomain measurement.</t> | multidomain measurement.</t> | |||
| <t>In practice, Internet users do not typically have the ability to | <t>In practice, Internet users do not typically have the ability to | |||
| utilize the OAM capabilities of networks that their packets traverse, | utilize the Operations, Administrations, and Maintenance (OAM) | |||
| capabilities of networks that their packets traverse, | ||||
| so the results from a remote domain supporting an interrogation | so the results from a remote domain supporting an interrogation | |||
| protocol would not normally be accessible. However, a network operator | protocol would not normally be accessible. However, a network operator | |||
| could combine interrogation results from their access domain with | could combine interrogation results from their access domain with | |||
| other measurements revealing the path outside their domain.</t> | other measurements revealing the path outside their domain.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Cases" numbered="true" toc="default"> | ||||
| <section anchor="Cases" | <name>Background on Round-Trip Delay Measurement Goals</name> | |||
| title="Background on Round-Trip Delay Measurement Goals"> | ||||
| <t>The aim of this method is to use packet probes to unveil the paths | <t>The aim of this method is to use packet probes to unveil the paths | |||
| between any two end-Nodes of the network. Moreover, information derived | between any two End-Nodes of the network. Moreover, information derived | |||
| from RTD measurements might be meaningful to identify:</t> | from RTD measurements might be meaningful to identify:</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <t><list style="numbers"> | <li>Intercontinental submarine links</li> | |||
| <t>Intercontinental submarine links</t> | <li>Satellite communications</li> | |||
| <li>Congestion</li> | ||||
| <t>Satellite communications</t> | <li>Inter-domain paths</li> | |||
| </ol> | ||||
| <t>Congestion</t> | ||||
| <t>Inter-domain paths</t> | ||||
| </list></t> | ||||
| <t>This categorization is widely accepted in the literature and among | <t>This categorization is widely accepted in the literature and among | |||
| operators alike, and it can be trusted with empirical data and several | operators alike, and it can be trusted with empirical data and several | |||
| sources as ground of truth (e.g., <xref target="RTTSub"/> ) but it is an | sources as ground of truth (e.g., <xref target="RTTSub" format="default"/> | |||
| inference measurement nonetheless <xref target="bdrmap"/><xref | ), but it is an | |||
| target="IDCong"/>.</t> | inference measurement nonetheless <xref target="bdrmap" | |||
| format="default"/><xref target="IDCong" format="default"/>.</t> | ||||
| <t>The first two categories correspond to the physical distance | <t>The first two categories correspond to the physical distance | |||
| dependency on Round-Trip Delay (RTD), the next one binds RTD with | dependency on RTD, the next one binds RTD with | |||
| queuing delay on routers, and the last one helps to identify different | queuing delay on routers, and the last one helps to identify different | |||
| ASes using traceroutes. Due to the significant contribution of | ASes using traceroutes. Due to the significant contribution of | |||
| propagation delay in long-distance hops, RTD will be on the order of | propagation delay in long-distance Hops, RTD will be on the order of | |||
| 100ms on transatlantic hops, depending on the geolocation of the vantage | 100 ms on transatlantic Hops, depending on the geolocation of the vantage | |||
| points. Moreover, RTD is typically higher than 480ms when two hops are | points. Moreover, RTD is typically higher than 480 ms when two Hops are | |||
| connected using geostationary satellite technology (i.e., their orbit is | connected using geostationary satellite technology (i.e., their orbit is | |||
| at 36000km). Detecting congestion with latency implies deeper | at 36000 km). Detecting congestion with latency implies deeper | |||
| mathematical understanding since network traffic load is not stationary. | mathematical understanding, since network traffic load is not stationary. | |||
| Nonetheless, as the first approach, a link seems to be congested if | Nonetheless, as the first approach, a link seems to be congested if | |||
| observing different/varying statistical results after sending several | observing different/varying statistical results after sending several | |||
| traceroute probes (e.g., see <xref target="IDCong"/>). Finally, to | traceroute probes (e.g., see <xref target="IDCong" format="default"/>). Fi | |||
| recognize distinctive ASes in the same traceroute path is challenging, | nally, to | |||
| because more data is needed, like AS relationships and RIR delegations | recognize distinctive ASes in the same traceroute path is challenging | |||
| among other (for more detail, please consult <xref | because more data is needed, like AS relationships and Regional Internet | |||
| target="bdrmap"/>).</t> | Registry (RIR) delegations | |||
| among others (for more details, please consult <xref target="bdrmap" forma | ||||
| t="default"/>).</t> | ||||
| </section> | </section> | |||
| <section anchor="Statistics" numbered="true" toc="default"> | ||||
| <section anchor="Statistics" title="RTD Measurements Statistics"> | <name>RTD Measurements Statistics</name> | |||
| <t>Several articles have shown that network traffic presents a | <t>Several articles have shown that network traffic presents a | |||
| self-similar nature <xref target="SSNT"/> <xref target="MLRM"/> which is | self-similar nature <xref target="SSNT" format="default"/> <xref | |||
| target="MLRM" format="default"/> that is | ||||
| accountable for filling the queues of the routers. Moreover, router | accountable for filling the queues of the routers. Moreover, router | |||
| queues are designed to handle traffic bursts, which is one of the most | queues are designed to handle traffic bursts, which is one of the most | |||
| remarkable features of self-similarity. Naturally, while queue length | remarkable features of self-similarity. Naturally, while queue length | |||
| increases, the delay to traverse the queue increases as well and leads | increases, the delay to traverse the queue increases as well and leads | |||
| to an increase on RTD. Due to traffic bursts generating short-term | to an increase on RTD. Due to traffic bursts generating short-term | |||
| overflow on buffers (spiky patterns), every RTD only depicts the | overflow on buffers (spiky patterns), every RTD only depicts the | |||
| queueing status on the instant when that packet probe was in transit. | queueing status on the instant when that packet probe was in transit. | |||
| For this reason, several RTD measurements during a time window could | For this reason, several RTD measurements during a time window could | |||
| begin to describe the random behavior of latency. Loss must also be | begin to describe the random behavior of latency. Loss must also be | |||
| accounted for in the methodology.</t> | accounted for in the methodology.</t> | |||
| skipping to change at line 956 ¶ | skipping to change at line 865 ¶ | |||
| accountable for filling the queues of the routers. Moreover, router | accountable for filling the queues of the routers. Moreover, router | |||
| queues are designed to handle traffic bursts, which is one of the most | queues are designed to handle traffic bursts, which is one of the most | |||
| remarkable features of self-similarity. Naturally, while queue length | remarkable features of self-similarity. Naturally, while queue length | |||
| increases, the delay to traverse the queue increases as well and leads | increases, the delay to traverse the queue increases as well and leads | |||
| to an increase on RTD. Due to traffic bursts generating short-term | to an increase on RTD. Due to traffic bursts generating short-term | |||
| overflow on buffers (spiky patterns), every RTD only depicts the | overflow on buffers (spiky patterns), every RTD only depicts the | |||
| queueing status on the instant when that packet probe was in transit. | queueing status on the instant when that packet probe was in transit. | |||
| For this reason, several RTD measurements during a time window could | For this reason, several RTD measurements during a time window could | |||
| begin to describe the random behavior of latency. Loss must also be | begin to describe the random behavior of latency. Loss must also be | |||
| accounted for in the methodology.</t> | accounted for in the methodology.</t> | |||
| <t>To understand the ongoing process, examining the quartiles provides a | <t>To understand the ongoing process, examining the quartiles provides a | |||
| non-parametric way of analysis. Quartiles are defined by five values: | nonparametric way of analysis. Quartiles are defined by five values: | |||
| minimum RTD (m), RTD value of the 25% of the Empirical Cumulative | minimum RTD (m), RTD value of the 25% of the Empirical Cumulative | |||
| Distribution Function (ECDF) (Q1), the median value (Q2), the RTD value | Distribution Function (ECDF) (Q1), the median value (Q2), the RTD value | |||
| of the 75% of the ECDF (Q3) and the maximum RTD (M). Congestion can be | of the 75% of the ECDF (Q3), and the maximum RTD (M). Congestion can be | |||
| inferred when RTD measurements are spread apart, and consequently, the | inferred when RTD measurements are spread apart; consequently, the | |||
| Inter-Quartile Range (IQR), the distance between Q3 and Q1, increases | Interquartile Range (IQR), i.e., the distance between Q3 and Q1, increases | |||
| its value.</t> | its value.</t> | |||
| <t>This procedure requires the algorithm presented in <xref target="P2" | ||||
| <t>This procedure requires the algorithm presented in <xref | format="default"/> to compute quartile values "on the fly".</t> | |||
| target="P2"/> to compute quartile values "on the fly”.</t> | <t>This procedure allows us to update the quartile values whenever a new | |||
| <t>This procedure allows us to update the quartiles value whenever a new | ||||
| measurement arrives, which is radically different from classic methods | measurement arrives, which is radically different from classic methods | |||
| of computing quartiles because they need to use the whole dataset to | of computing quartiles, because they need to use the whole dataset to | |||
| compute the values. This way of calculus provides savings in memory and | compute the values. This way of calculus provides savings in memory and | |||
| computing time.</t> | computing time.</t> | |||
| <t>To sum up, the proposed measurement procedure consists of performing | <t>To sum up, the proposed measurement procedure consists of performing | |||
| traceroutes several times to obtain samples of the RTD in every hop from | traceroutes several times to obtain samples of the RTD in every Hop from | |||
| a path, during a time window (W), and compute the quartiles for every | a path during a time window (W) and compute the quartiles for every | |||
| hop. This procedure could be done for a single Member Route flow, a | Hop. This procedure could be done for a single Member Route flow, for a | |||
| non-exhaustive search with parameter E (defined below) set as False, or | non-exhaustive search with parameter E (defined below) set to False, or | |||
| for every detected Route Ensemble flow (E=True).</t> | for every detected Route Ensemble flow (E=True).</t> | |||
| <t>The identification of a specific Hop in a traceroute is based on the IP | ||||
| <t>The identification of a specific Hop in traceroute is based on the IP | origin address of the returned ICMP Time Exceeded packet and on the | |||
| origin address of the returned ICMP Time Exceeded packet, and on the | ||||
| distance identified by the value set in the TTL (or Hop Limit) field | distance identified by the value set in the TTL (or Hop Limit) field | |||
| inserted by traceroute. As this specific Hop can be reached by different | inserted by traceroute. As this specific Hop can be reached by different | |||
| paths, also the IP source and destination addresses of the traceroute | paths, the IP Source and Destination addresses of the traceroute | |||
| packet need to be recorded. Finally, different return paths are | packet also need to be recorded. Finally, different return paths are | |||
| distinguished by evaluating the ICMP Time Exceeded TTL (or Hop Limit) of | distinguished by evaluating the ICMP Time Exceeded TTL (or Hop Limit) of | |||
| the reply message: if this TTL (or Hop Limit) is constant for different | the reply message; if this TTL (or Hop Limit) is constant for different | |||
| paths containing the same Hop, the return paths have the same distance. | paths containing the same Hop, the return paths have the same distance. | |||
| Moreover, this distance can be estimated considering that the TTL (or | Moreover, this distance can be estimated considering that the TTL (or | |||
| Hop Limit) value is normally initialized with values 64, 128, or 255. | Hop Limit) value is normally initialized with values 64, 128, or 255. | |||
| The 5-tuple (origin IP, destination IP, reply IP, distance, response TTL | The 5-tuple (origin IP, destination IP, reply IP, distance, and response T TL | |||
| or Hop Limit) unequivocally identifies every measurement.</t> | or Hop Limit) unequivocally identifies every measurement.</t> | |||
| <t>This algorithm below runs in the origin of the traceroute. It returns | <t>This algorithm below runs in the origin of the traceroute. It returns | |||
| the Qs quartiles for every Hop and Alt (alternative paths because of | the Qs quartiles for every Hop and Alt (alternative paths because of | |||
| balancing). Notice that the "Alt" parameter condenses the parameters of | balancing). Notice that the "Alt" parameter condenses the parameters of | |||
| the 5-tuple (origin IP, destination IP, reply IP, distance, response | the 5-tuple (origin IP, destination IP, reply IP, distance, and response | |||
| TTL), i.e., one for each possible combination.</t> | TTL), i.e., one for each possible combination.</t> | |||
| <sourcecode name="" type="pseudocode"><![CDATA[ | ||||
| <t><figure> | ================================================================ | |||
| <artwork><![CDATA[==================================================== | ||||
| ============ | ||||
| 0 input: W (window time of the measurement) | 0 input: W (window time of the measurement) | |||
| 1 i_t (time between two measurements, set the i_t time | 1 i_t (time between two measurements, set the i_t time | |||
| 2 long enough to avoid incomplete results) | 2 long enough to avoid incomplete results) | |||
| 3 E (True: exhaustive, False: a single path) | 3 E (True: exhaustive, False: a single path) | |||
| 4 Dst (destination IP address) | 4 Dst (destination IP address) | |||
| 5 output: Qs (quartiles for every Hop and Alt) | 5 output: Qs (quartiles for every Hop and Alt) | |||
| ---------------------------------------------------------------- | ---------------------------------------------------------------- | |||
| 6 T := start_timer(W) | 6 T := start_timer(W) | |||
| 7 while T is not finished do: | 7 while T is not finished do: | |||
| 8 | start_timer(i_t) | 8 | start_timer(i_t) | |||
| 9 | RTD(Hop,Alt) = advanced-traceroute(Dst,E) | 9 | RTD(Hop,Alt) = advanced-traceroute(Dst,E) | |||
| 10 | for each Hop and Alt in RTD do: | 10 | for each Hop and Alt in RTD do: | |||
| 11 | | Qs[Dst,Hop,Alt] := ComputeQs(RTD(Hop,Alt)) | 11 | | Qs[Dst,Hop,Alt] := ComputeQs(RTD(Hop,Alt)) | |||
| 12 | done | 12 | done | |||
| 13 | wait until i_t timer is expired | 13 | wait until i_t timer is expired | |||
| 14 done | 14 done | |||
| 15 return (Qs) | 15 return (Qs) | |||
| ================================================================]]></artwork> | ================================================================ | |||
| </figure></t> | ]]> | |||
| </sourcecode> | ||||
| <t>During the time W, lines 6 and 7 assure that the measurement loop is | <t>During the time W, lines 6 and 7 assure that the measurement loop is | |||
| made. Line 8 and 13 set a timer for each cycle of measurements. A cycle | made. | |||
| Lines 8 and 13 set a timer for each cycle of measurements. A cycle | ||||
| comprises the traceroutes packets, considering every possible Hop and | comprises the traceroutes packets, considering every possible Hop and | |||
| the alternatives paths in the Alt variable (ensured in lines 9-12). In | the alternatives paths in the Alt variable (ensured in lines 9-12). In | |||
| line 9, the advance-traceroute could be either Paris-traceroute or | line 9, the advanced-traceroute could be either Paris-traceroute or | |||
| Scamper, which will use the “exhaustive” mode or | Scamper, which will use the "exhaustive" mode or | |||
| “tracelb” option if E is set True, respectively. The | "tracelb" option if E is set to True, respectively. The | |||
| procedure returns a list of tuples (m,Q1,Q2,Q3,M) for each intermediate | procedure returns a list of tuples (m, Q1, Q2, Q3, and M) for each interme | |||
| hop, or "Alt" in as a function of the 5-tuple, in the path towards the | diate | |||
| Dst. Finally, lines 10 through 12 stores each measurement into the | Hop, or "Alt" in as a function of the 5-tuple, in the path towards the | |||
| Dst. Finally, lines 10 through 12 store each measurement into the | ||||
| real-time quartiles computation.</t> | real-time quartiles computation.</t> | |||
| <t>Notice there are cases where even having a unique Hop at distance | ||||
| <t>Notice there are cases where the even having a unique hop at distance | ||||
| h from the Src to Dst, the returning path could have several | h from the Src to Dst, the returning path could have several | |||
| possibilities, yielding in different total paths. In this situation, the | possibilities, yielding different total paths. In this situation, the | |||
| algorithm will return more "Alt" for this particular hop.</t> | algorithm will return another "Alt" for this particular Hop.</t> | |||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>The security considerations that apply to any active measurement of | <t>The security considerations that apply to any active measurement of | |||
| live paths are relevant here as well. See <xref target="RFC4656"/> and | live paths are relevant here as well. See <xref target="RFC4656" format="d | |||
| <xref target="RFC5357"/>.</t> | efault"/> and | |||
| <xref target="RFC5357" format="default"/>.</t> | ||||
| <t>The active measurement process of "changing several fields to keep | <t>The active measurement process of changing several fields to keep | |||
| the checksum of different packets identical" does not require special | the checksum of different packets identical does not require special | |||
| security considerations because it is part of synthetic traffic | security considerations because it is part of synthetic traffic | |||
| generation, and is designed to have minimal to zero impact on network | generation and is designed to have minimal to zero impact on network | |||
| processing (to process the packets for ECMP).</t> | processing (to process the packets for ECMP).</t> | |||
| <t>Some of the protocols used (e.g., ICMP) do not provide cryptographic | <t>Some of the protocols used (e.g., ICMP) do not provide cryptographic | |||
| protection for the requested/returned data, and there are risks of | protection for the requested/returned data, and there are risks of | |||
| processing untrusted data in general, but these are limitations of the | processing untrusted data in general, but these are limitations of the | |||
| existing protocols where we are applying new methods.</t> | existing protocols where we are applying new methods.</t> | |||
| <t>For applicable hybrid methods, the security considerations in <xref | ||||
| <t>For applicable Hybrid methods, the security considerations in<xref | target="RFC9197" format="default"/> apply.</t> | |||
| target="I-D.ietf-ippm-ioam-data"/> apply.</t> | <t>When considering the privacy of those involved in measurement or those | |||
| <t>When considering privacy of those involved in measurement or those | ||||
| whose traffic is measured, the sensitive information available to | whose traffic is measured, the sensitive information available to | |||
| potential observers is greatly reduced when using active techniques | potential observers is greatly reduced when using active techniques | |||
| which are within this scope of work. Passive observations of user | that are within this scope of work. Passive observations of user | |||
| traffic for measurement purposes raise many privacy issues. We refer the | traffic for measurement purposes raise many privacy issues. We refer the | |||
| reader to the privacy considerations described in the Large Scale | reader to the privacy considerations described in the Large-scale | |||
| Measurement of Broadband Performance (LMAP) Framework <xref | Measurement of Broadband Performance (LMAP) Framework <xref | |||
| target="RFC7594"/>, which covers active and passive techniques.</t> | target="RFC7594" format="default"/>, which covers active and passive | |||
| </section> | techniques.</t> | |||
| <section anchor="IANA" title="IANA Considerations"> | ||||
| <t>This memo makes no requests of IANA. We thank the good folks at IANA | ||||
| for having checked this section anyway.</t> | ||||
| </section> | ||||
| <section anchor="Acknowledgements" title="Acknowledgements"> | ||||
| <t>The original 3 authors (Ignacio, Al, Joachim) acknowledge Ruediger | ||||
| Geib, for his penetrating comments on the initial draft, and his initial | ||||
| text for the Appendix on MPLS. Carlos Pignataro challenged the authors | ||||
| to consider a wider scope, and applied his substantial expertise with | ||||
| many technologies and their measurement features in his extensive | ||||
| comments. Frank Brockners also shared useful comments, so did Footer | ||||
| Foote. We thank them all!</t> | ||||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <section title="Appendix I MPLS Methods for Route Assessment"> | <name>IANA Considerations</name> | |||
| <t>A Node assessing an MPLS path must be part of the MPLS domain where | <t>This document has no IANA actions.</t> | |||
| the path is implemented. When this condition is met, RFC 8029 provides a | ||||
| powerful set of mechanisms to detect “correct operation of the | ||||
| data plane, as well as a mechanism to verify the data plane against the | ||||
| control plane” <xref target="RFC8029"/>.</t> | ||||
| <t>MPLS routing is based on the presence of a Forwarding Equivalence | ||||
| Class (FEC) Stack in all visited Nodes. Selecting one of several Equal | ||||
| Cost Multi Path (ECMP) is however based on information hidden deeper in | ||||
| the stack. Late deployments may support a so called "Entropy label" for | ||||
| this purpose. State of the art deployments base their choice of an ECMP | ||||
| member interface on the complete MPLS label stack and on IP addresses up | ||||
| to the complete 5 tuple IP header information (see Section 2.4 of <xref | ||||
| target="RFC7325"/>). Load Sharing based on IP information decouples this | ||||
| function from the actual MPLS routing information. Thus, an MPLS | ||||
| traceroute is able to check how packets with a contiguous number of ECMP | ||||
| relevant IP addresses (and an identical MPLS label stack) are forwarded | ||||
| by a particular router. The minimum number of equivalent MPLS paths | ||||
| traceable at a router should be 32. Implementations supporting more | ||||
| paths are available.</t> | ||||
| <t>The MPLS echo request and reply messages offering this feature must | ||||
| support the Downstream Detailed Mapping TLV (was Downstream Mapping | ||||
| initially, but the latter has been deprecated). The MPLS echo response | ||||
| includes the incoming interface where a router received the MPLS Echo | ||||
| request. The MPLS Echo reply further informs which of the n addresses | ||||
| relevant for the load sharing decision results in a particular next hop | ||||
| interface and contains the next hop’s interface address (if | ||||
| available). This ensures that the next hop will receive a properly coded | ||||
| MPLS Echo request in the next step route of assessment.</t> | ||||
| <t><xref target="RFC8403"/> explains how a central Path Monitoring | ||||
| System could be used to detect arbitrary MPLS paths between any routers | ||||
| within a single MPLS domain. The combination of MPLS forwarding, Segment | ||||
| Routing and MPLS traceroute offers a simple architecture and a powerful | ||||
| mechanism to detect and validate (segment routed) MPLS paths.</t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <references> | |||
| <?rfc include='reference.RFC.0792'?> | <name>References</name> | |||
| <references> | ||||
| <?rfc include='reference.RFC.1122'?> | <name>Normative References</name> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.1812'?> | FC.0792.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.2119'?> | FC.1122.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.2330'?> | FC.1812.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.2681'?> | FC.2119.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc ?> | FC.2330.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.4656'?> | FC.2681.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.5388'?> | FC.4656.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.6438'?> | FC.5388.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.6673'?> | FC.6438.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.7799'?> | FC.6673.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.8029'?> | FC.7799.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.8174'?> | FC.8029.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.8468'?> | FC.8174.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.I-D.ietf-ippm-ioam-data'?> | FC.8468.xml"/> | |||
| </references> | ||||
| <references title="Informative References"> | ||||
| <?rfc include='reference.RFC.2991'?> | ||||
| <?rfc include='reference.RFC.5357'?> | ||||
| <?rfc include='reference.RFC.5835'?> | ||||
| <?rfc include='reference.RFC.5837'?> | ||||
| <?rfc include='reference.RFC.6437'?> | ||||
| <?rfc include='reference.RFC.7312'?> | ||||
| <?rfc include='reference.RFC.7325'?> | ||||
| <?rfc include='reference.RFC.7594'?> | ||||
| <?rfc include='reference.RFC.8403'?> | ||||
| <reference anchor="PT"> | ||||
| <front> | ||||
| <title>Avoiding traceroute anomalies with Paris traceroute</title> | ||||
| <author fullname="Brice Augustin" initials="B.A" surname="Augustin"> | <reference anchor='RFC9197' target='https://www.rfc-editor.org/info/rfc9197'> | |||
| <!-- fullname="B. Augustin"--> | <front> | |||
| <title>Data Fields for In Situ Operations, Administration, and Maintenance (IOAM | ||||
| )</title> | ||||
| <author initials='F' surname='Brockners' fullname='Frank Brockners' role="editor | ||||
| "> | ||||
| </author> | ||||
| <author initials='S' surname='Bhandari' fullname='Shwetha Bhandari' role="editor | ||||
| "> | ||||
| </author> | ||||
| <author initials='T' surname='Mizrahi' fullname='Tal Mizrahi' role="editor"> | ||||
| </author> | ||||
| <date month='May' year='2022' /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9197"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9197"/> | ||||
| </reference> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2991.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5357.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5835.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5837.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6437.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7312.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7325.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7594.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8403.xml"/> | ||||
| <reference anchor="PT"> | ||||
| <front> | ||||
| <title>Avoiding traceroute anomalies with Paris traceroute</title> | ||||
| <author fullname="Brice Augustin" initials="B" surname="Augustin"> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Xavier Cuvellier" initials="X" surname="Cuvellier" | ||||
| <author fullname="Xavier Cuvellier" initials="X.C." | > | |||
| surname="Cuvellier"> | ||||
| <!-- fullname="X. Cuvellier" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Benjamin Orgogozo" initials="B" surname="Orgogozo" | ||||
| <author fullname="Benjamin Orgogozo" initials="B.O." | > | |||
| surname="Orgogozo"> | ||||
| <!-- fullname="B. Orgogozo" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Fabien Viger" initials="F" surname="Viger"> | ||||
| <author fullname="Fabien Viger" initials="F.V." surname="Viger"> | ||||
| <!-- fullname="F. Viger" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Timur Friedman" initials="T" surname="Friedman"> | ||||
| <author fullname="Timur Friedman" initials="T.F." surname="Friedman"> | ||||
| <!-- fullname="T. Friedman" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Matthieu Latapy" initials="M" surname="Latapy"> | ||||
| <author fullname="Matthieu Latapy" initials="M.L." surname="Latapy"> | ||||
| <!-- fullname="M. Latapy" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Clmence Magnien" initials="C" surname="Magnien"> | ||||
| <author fullname="Clmence Magnien" initials="C.M." surname="Magnien"> | ||||
| <!-- fullname="C. Magnien" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Renata Teixeira" initials="R" surname="Teixeira"> | ||||
| <author fullname="Renata Teixeira" initials="R.T." | ||||
| surname="Teixeira"> | ||||
| <!-- fullname="R. Teixeira" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="October" year="2006"/> | ||||
| <date day="" month="" year="2006"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1145/1177080.1177100"/> | |||
| <refcontent>Proceedings of the 6th ACM SIGCOMM conference on | ||||
| <seriesInfo name="" | Internet measurement, pp. 153-158</refcontent> | |||
| value=" Proceedings of the 6th ACM SIGCOMM conference on Int | </reference> | |||
| ernet measurement, pp. 153-158. ACM, 2006."/> | ||||
| </reference> | ||||
| <reference anchor="LOAD_BALANCE"> | <reference anchor="LOAD_BALANCE"> | |||
| <front> | <front> | |||
| <title>COMPARISON OF HASH STRATEGIES FOR FLOW-BASED LOAD | <title>COMPARISON OF HASH STRATEGIES FOR FLOW-BASED LOAD | |||
| BALANCING</title> | BALANCING</title> | |||
| <author fullname="Surasak Sanguanpong" initials="S." surname="Sangua | ||||
| <author fullname="Surasak Sanguanpong" initials="S." | npong"> | |||
| surname="Sanguanpong"> | ||||
| <!-- fullname="Surasak Sanguanpong"--> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Witsarut Pittayapitak" initials="W." surname="Pitt | ||||
| <author fullname="Witsarut Pittayapitak" initials="W." | ayapitak"> | |||
| surname="Pittayapitak"> | ||||
| <!-- fullname="Witsarut Pittayapitak"--> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Kasom Koht-Arsa" initials="K." surname="Kasom Koht | ||||
| <author fullname="Kasom Koht-Arsa" initials="K." | -Arsa"> | |||
| surname="Kasom Koht-Arsa"> | ||||
| <!-- fullname="Kasom Koht-Arsa"--> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="December" year="2015"/> | ||||
| <date day="" month="" year="2015"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.7903/ijecs.1346"/> | |||
| <refcontent>International Journal of Electronic | ||||
| <seriesInfo name="" | Commerce Studies, Vol.6, No.2, pp.259-268</refcontent> | |||
| value="International Journal of Electronic Commerce Studies, | </reference> | |||
| Vol.6, No.2, pp.259-268. http://dx.doi.org/10.7903/ijecs.1346"/> | ||||
| </reference> | ||||
| <reference anchor="MLB"> | ||||
| <front> | ||||
| <title>Measuring load-balanced paths in the Internet</title> | ||||
| <author fullname="Brice Augustin" initials="B.A" surname="Augustin"> | ||||
| <!-- fullname="B. Augustin"--> | ||||
| <reference anchor="MLB"> | ||||
| <front> | ||||
| <title>Measuring load-balanced paths in the internet</title> | ||||
| <author fullname="Brice Augustin" initials="B" surname="Augustin"> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Timur Friedman" initials="T" surname="Friedman"> | ||||
| <author fullname="Timur Friedman" initials="T.F." surname="Friedman"> | ||||
| <!-- fullname="T. Friedman" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Renata Teixeira" initials="R" surname="Teixeira"> | ||||
| <author fullname="Renata Teixeira" initials="R.T." | ||||
| surname="Teixeira"> | ||||
| <!-- fullname="R. Teixeira" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="October" year="2007"/> | ||||
| <date day="" month="" year="2007"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1145/1298306.1298329"/> | |||
| <refcontent>Proceedings of the 7th ACM SIGCOMM conference on | ||||
| <seriesInfo name="" | Internet measurement, pp. 149-160</refcontent> | |||
| value=" Proceedings of the 7th ACM SIGCOMM conference on Int | </reference> | |||
| ernet measurement, pp. 149-160. ACM, 2007."/> | ||||
| </reference> | ||||
| <reference anchor="SCAMPER"> | ||||
| <front> | ||||
| <title>Scamper: a scalable and extensible packet prober for active | ||||
| measurement of the Internet</title> | ||||
| <author fullname="Matthew Luckie" initials="M.L." | ||||
| surname="Matthew Luckie"> | ||||
| <!-- fullname="M. Luckie"--> | ||||
| <reference anchor="SCAMPER"> | ||||
| <front> | ||||
| <title>Scamper: a scalable and extensible packet prober for active | ||||
| measurement of the internet</title> | ||||
| <author fullname="Matthew Luckie" initials="M" surname="Matthew Luck | ||||
| ie"> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="November" year="2010"/> | ||||
| <date day="" month="" year="2010"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1145/1879141.1879171"/> | |||
| <refcontent>Proceedings of the 10th ACM SIGCOMM conference on | ||||
| <seriesInfo name="" | Internet measurement, pp. 239-245</refcontent> | |||
| value="Proceedings of the 10th ACM SIGCOMM conference on Int | </reference> | |||
| ernet measurement, pp. 239-245. ACM, 2010."/> | ||||
| </reference> | ||||
| <reference anchor="SSNT"> | <reference anchor="SSNT"> | |||
| <front> | <front> | |||
| <title>Self-Similar Network Traffic and Performance Evaluation (1st | <title>Self-Similar Network Traffic and Performance Evaluation (1st | |||
| ed.)</title> | ed.)</title> | |||
| <author fullname="Kihong Park" initials="K" surname="Park"> | ||||
| <author fullname="Kihong Park" initials="K.P." surname="Park"> | ||||
| <!-- fullname="K. Park"--> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Walter Willinger" initials="W" surname="Willinger" | ||||
| <author fullname="Walter Willinger" initials="W.W." | > | |||
| surname="Willinger"> | ||||
| <!-- fullname="W. Willinger"--> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="August" year="2000"/> | ||||
| <date day="" month="" year="2000"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1002/047120644X"/> | |||
| <seriesInfo name="" value="John Wiley & Sons, Inc., New York, NY, | ||||
| <seriesInfo name="" | USA"/> | |||
| value="John Wiley & Sons, Inc., New York, NY, USA"/> | </reference> | |||
| </reference> | ||||
| <reference anchor="MLRM"> | <reference anchor="MLRM"> | |||
| <front> | <front> | |||
| <title>An empirical mixture model for large-scale RTT | <title>An empirical mixture model for large-scale RTT | |||
| measurements</title> | measurements</title> | |||
| <author fullname="Romain Fontugne" initials="R" surname="Fontugne"> | ||||
| <author fullname="Romain Fontugne" initials="R.F." | ||||
| surname="Fontugne"> | ||||
| <!-- fullname="R. Fontugne"--> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Johan Mazel" initials="J" surname="Mazel"> | ||||
| <author fullname="Johan Mazel" initials="J.M." surname="Mazel"> | ||||
| <!-- fullname="J. Mazel" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Kensuke Fukuda" initials="K" surname="Fukuda"> | ||||
| <author fullname="Kensuke Fukuda" initials="K.F." surname="Fukuda"> | ||||
| <!-- fullname="K. Fukuda" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="April" year="2015"/> | ||||
| <date day="" month="" year="2015"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1109/INFOCOM.2015.7218636"/> | |||
| <refcontent>2015 IEEE Conference on Computer Communications | ||||
| <seriesInfo name="" | (INFOCOM), pp. 2470-2478</refcontent> | |||
| value="2015 IEEE Conference on Computer Communications (INFO | </reference> | |||
| COM), pp. 2470-2478. IEEE, 2015."/> | ||||
| </reference> | ||||
| <reference anchor="P2"> | <reference anchor="P2"> | |||
| <front> | <front> | |||
| <title>The P 2 algorithm for dynamic calculation of quartiles and | <title>The P 2 algorithm for dynamic calculation of quartiles and | |||
| histograms without storing observations</title> | histograms without storing observations</title> | |||
| <author fullname="Raj Jain" initials="R" surname="Jain"> | ||||
| <author fullname="Raj Jain" initials="R.J." surname="Jain"> | ||||
| <!-- fullname="R. Jain"--> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Imrich Chlamtac" initials="I" surname="Chlamtac"> | ||||
| <author fullname="Imrich Chlamtac" initials="I.C." | ||||
| surname="Chlamtac"> | ||||
| <!-- fullname="I. Chlamtac" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="October" year="1985"/> | ||||
| <date day="" month="" year="2015"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1145/4372.4378"/> | |||
| <refcontent>Communications of the ACM 28.10 (1985): 1076-1085</refcont | ||||
| <seriesInfo name="" | ent> | |||
| value="Communications of the ACM 28.10 (1985): 1076-1085"/> | </reference> | |||
| </reference> | ||||
| <reference anchor="IDCong"> | ||||
| <front> | ||||
| <title>Challenges in inferring Internet interdomain | ||||
| congestion</title> | ||||
| <author fullname="Matthew Luckie" initials="M." surname="Luckie"> | ||||
| <!-- fullname="M. Luckie"--> | ||||
| <reference anchor="IDCong"> | ||||
| <front> | ||||
| <title>Challenges in Inferring Internet Interdomain | ||||
| Congestion</title> | ||||
| <author fullname="Matthew Luckie" initials="M." surname="Luckie"> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Amogh Dhamdhere" initials="A." surname="Dhamdhere" | ||||
| <author fullname="Amogh Dhamdhere" initials="A." surname="Dhamdhere"> | > | |||
| <!-- fullname="A. Dhamdhere" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="David Clark" initials="D." surname="Clark"> | ||||
| <author fullname="David Clark" initials="D." surname="Clark"> | ||||
| <!-- fullname="D. Clark" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Bradley Huffaker" initials="B." surname="Huffaker" | ||||
| <author fullname="Bradley Huffaker" initials="B." surname="Huffaker"> | > | |||
| <!-- fullname="B. Huffaker" --> | ||||
| <organization>bdrmap: Inference of Borders Between IP | <organization>bdrmap: Inference of Borders Between IP | |||
| Networks</organization> | Networks</organization> | |||
| </author> | </author> | |||
| <date month="November" year="2014"/> | ||||
| <date day="" month="" year="2014"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1145/2663716.2663741"/> | |||
| <refcontent>Proceedings of the 2014 Conference on Internet | ||||
| <seriesInfo name="" | Measurement Conference, pp. 15-22</refcontent> | |||
| value="In Proceedings of the 2014 Conference on Internet Mea | </reference> | |||
| surement Conference, pp. 15-22. ACM"/> | ||||
| </reference> | ||||
| <reference anchor="bdrmap"> | ||||
| <front> | ||||
| <title>bdrmap: Inference of Borders Between IP Networks</title> | ||||
| <author fullname="Matthew Luckie" initials="M." surname="Luckie"> | ||||
| <!-- fullname="M. Luckie"--> | ||||
| <reference anchor="bdrmap"> | ||||
| <front> | ||||
| <title>bdrmap: Inference of Borders Between IP Networks</title> | ||||
| <author fullname="Matthew Luckie" initials="M." surname="Luckie"> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Amogh Dhamdhere" initials="A." surname="Dhamdhere" | ||||
| <author fullname="Amogh Dhamdhere" initials="A." surname="Dhamdhere"> | > | |||
| <!-- fullname="A. Dhamdhere" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Bradley Huffaker" initials="B." surname="Huffaker" | ||||
| <author fullname="Bradley Huffaker" initials="B." surname="Huffaker"> | > | |||
| <!-- fullname="B. Huffaker" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="David Clark" initials="D." surname="Clark"> | ||||
| <author fullname="David Clark" initials="D." surname="Clark"> | ||||
| <!-- fullname="D. Clark" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="KC" initials="KC." surname="Claffy"> | ||||
| <author fullname="KC" initials="KC." surname="Claffy"> | ||||
| <!-- fullname="D. Clark" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="November" year="2016"/> | ||||
| <date day="" month="" year="2016"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1145/2987443.2987467"/> | |||
| <refcontent>Proceedings of the 2016 ACM on Internet Measurement Confer | ||||
| <seriesInfo name="" | ence, pp. 381-396</refcontent> | |||
| value="In Proceedings of the 2016 ACM on Internet Measuremen | </reference> | |||
| t Conference, pp. 381-396. ACM"/> | ||||
| </reference> | ||||
| <reference anchor="RTTSub"> | ||||
| <front> | ||||
| <title>In and out of Cuba: Characterizing Cuba's | ||||
| connectivity</title> | ||||
| <author fullname="Zachary S. Bischof" initials="Z.S." | ||||
| surname="Bischof"> | ||||
| <!-- fullname="M. Luckie"--> | ||||
| <reference anchor="RTTSub"> | ||||
| <front> | ||||
| <title>In and out of Cuba: Characterizing Cuba's | ||||
| Connectivity</title> | ||||
| <author fullname="Zachary S. Bischof" initials="Z" surname="Bischof" | ||||
| > | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="John P. Rula" initials="J" surname="Rula"> | ||||
| <author fullname="John P. Rula" initials="J.P." surname="Rula"> | ||||
| <!-- fullname="A. Dhamdhere" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Fabian E. Bustamante" initials="F" surname="Bustam | ||||
| <author fullname="Fabian E. Bustamante" initials="F.E." | ante"> | |||
| surname="Bustamante"> | ||||
| <!-- fullname="D. Clark" --> | ||||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="October" year="2015"/> | ||||
| <date day="" month="" year="2015"/> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.1145/2815675.2815718"/> | |||
| <refcontent>Proceedings of the 2015 ACM Conference on Internet | ||||
| <seriesInfo name="" | Measurement Conference, pp. 487-493</refcontent> | |||
| value="In Proceedings of the 2015 ACM Conference on Internet | </reference> | |||
| Measurement Conference, pp. 487-493. ACM"/> | </references> | |||
| </reference> | ||||
| </references> | </references> | |||
| <section numbered="true" toc="default"> | ||||
| <name>MPLS Methods for Route Assessment</name> | ||||
| <t>A Node assessing an MPLS path must be part of the MPLS domain where | ||||
| the path is implemented. When this condition is met, <xref | ||||
| target="RFC8029" format="default"/> provides a | ||||
| powerful set of mechanisms to detect "correct operation of the | ||||
| data plane, as well as a mechanism to verify the data plane against the | ||||
| control plane".</t> | ||||
| <t>MPLS routing is based on the presence of a Forwarding Equivalence | ||||
| Class (FEC) Stack in all visited Nodes. Selecting one of several | ||||
| Equal-Cost Multipaths (ECMPs) is, however, based on information hidden | ||||
| deeper in | ||||
| the stack. Late deployments may support a so-called "Entropy label" for | ||||
| this purpose. State-of-the-art deployments base their choice of an ECMP | ||||
| member interface on the complete MPLS label stack and on IP addresses up | ||||
| to the complete 5-tuple IP header information (see <xref | ||||
| target="RFC7325" section="2.4" sectionFormat="of"/>). Load sharing based | ||||
| on IP information decouples this | ||||
| function from the actual MPLS routing information. Thus, an MPLS | ||||
| traceroute is able to check how packets with a contiguous number of | ||||
| ECMP-relevant IP addresses (and an identical MPLS label stack) are | ||||
| forwarded | ||||
| by a particular router. The minimum number of equivalent MPLS paths | ||||
| traceable at a router should be 32. Implementations supporting more | ||||
| paths are available.</t> | ||||
| <t>The MPLS echo request and reply messages offering this feature must | ||||
| support the Downstream Detailed Mapping TLV (was Downstream Mapping | ||||
| initially, but the latter has been deprecated). The MPLS echo response | ||||
| includes the incoming interface where a router received the MPLS echo | ||||
| request. The MPLS echo reply further informs which of the n addresses | ||||
| relevant for the load-sharing decision results in a particular next-hop | ||||
| interface and contains the next Hop's interface address (if | ||||
| available). This ensures that the next Hop will receive a properly coded | ||||
| MPLS echo request in the next step Route of assessment.</t> | ||||
| <t><xref target="RFC8403" format="default"/> explains how a central Path M | ||||
| onitoring | ||||
| System could be used to detect arbitrary MPLS paths between any routers | ||||
| within a single MPLS domain. The combination of MPLS forwarding, Segment | ||||
| Routing, and MPLS traceroute offers a simple architecture and a powerful | ||||
| mechanism to detect and validate (segment-routed) MPLS paths.</t> | ||||
| </section> | ||||
| <section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>The original three authors (Ignacio, Al, Joachim) acknowledge <contact | ||||
| fullname="Ruediger | ||||
| Geib"/> for his penetrating comments on the initial document and his initi | ||||
| al | ||||
| text for the appendix on MPLS. <contact fullname="Carlos Pignataro"/> chal | ||||
| lenged the authors | ||||
| to consider a wider scope and applied his substantial expertise with | ||||
| many technologies and their measurement features in his extensive | ||||
| comments. <contact fullname="Frank Brockners"/> also shared useful | ||||
| comments and so did <contact fullname="Footer | ||||
| Foote"/>. We thank them all!</t> | ||||
| </section> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 278 change blocks. | ||||
| 1068 lines changed or deleted | 935 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/ | ||||