rfc9630xml2.original.xml | rfc9630.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='UTF-8'?> | ||||
<!DOCTYPE rfc [ | ||||
<!ENTITY nbsp " "> | ||||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | ||||
tf-mboned-multicast-telemetry-12" number="9630" consensus="true" ipr="trust20090 | ||||
2" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" | ||||
tocDepth="3" symRefs="true" sortRefs="true" version="3"> | ||||
<front> | ||||
<!-- [rfced] Title. FYI, we have expanded the abbreviation in the title. Please | ||||
let us know if any changes are needed. | ||||
Original: | ||||
Multicast On-path Telemetry using IOAM | ||||
Current: | ||||
Multicast On-Path Telemetry Using In Situ Operations, Administration, and Mai | ||||
ntenance | ||||
--> | ||||
<title abbrev="Multicast Telemetry">Multicast On-Path Telemetry Using In Sit | ||||
u Operations, Administration, and Maintenance (IOAM)</title> | ||||
<seriesInfo name="RFC" value="9630"/> | ||||
<author fullname="Haoyu Song" initials="H." surname="Song"> | ||||
<organization>Futurewei Technologies</organization> | ||||
<address> | ||||
<postal> | ||||
<street>2330 Central Expressway</street> | ||||
<city>Santa Clara</city><region>CA</region> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>hsong@futurewei.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Mike McBride" initials="M." surname="McBride"> | ||||
<organization>Futurewei Technologies</organization> | ||||
<address> | ||||
<postal> | ||||
<street>2330 Central Expressway</street> | ||||
<city>Santa Clara</city><region>CA</region> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>mmcbride@futurewei.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Greg Mirsky" initials="G." surname="Mirsky"> | ||||
<organization>Ericsson</organization> | ||||
<address> | ||||
<postal> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>gregimirsky@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Gyan Mishra" initials="G. " surname="Mishra"> | ||||
<organization>Verizon Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>gyan.s.mishra@verizon.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="H" surname="Asaeda" fullname="Hitoshi Asaeda"> | ||||
<organization abbrev="NICT">National Institute of Information and Communic | ||||
ations Technology</organization> | ||||
<address> | ||||
<postal> | ||||
<country>Japan</country> | ||||
</postal> | ||||
<email>asaeda@nict.go.jp</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Tianran Zhou" initials="T. " surname="Zhou"> | ||||
<organization>Huawei Technologies</organization> | ||||
<address> | ||||
<postal> | ||||
<city>Beijing</city> | ||||
<country>China</country> | ||||
</postal> | ||||
<email>zhoutianran@huawei.com</email> | ||||
</address> | ||||
</author> | ||||
<date month="August" year="2024"/> | ||||
<area>OPS</area> | ||||
<workgroup>mboned</workgroup> | ||||
<keyword>Multicast</keyword> | ||||
<keyword>Telemetry</keyword> | ||||
<abstract> | ||||
<t>This document specifies two solutions to meet the requirements of | ||||
on-path telemetry for multicast traffic using IOAM. While | ||||
IOAM is advantageous for multicast traffic telemetry, some unique | ||||
challenges are present. This document provides the solutions based on | ||||
the IOAM trace option and direct export option to support the | ||||
telemetry data correlation and the multicast tree reconstruction without | ||||
incurring data redundancy. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>IP multicast has had many useful applications for several decades. | ||||
<xref target="I-D.ietf-pim-multicast-lessons-learned" format="default | ||||
"/> provides a thorough historical perspective about the design and | ||||
deployment of many of the multicast routing protocols in use with various | ||||
applications. We will mention of few of these throughout this | ||||
document and in the Application Considerations section (<xref target="appl | ||||
ication-considerations"/>). IP multicast has been used by residential broadband | ||||
customers across operator networks, | ||||
private MPLS customers, and internal customers within corporate intranets. | ||||
IP multicast has provided real-time interactive online meetings or | ||||
podcasts, IPTV, and financial markets' real-time data, all of which rely | ||||
on UDP's unreliable transport. End-to-end QoS, therefore, | ||||
should be a critical component of multicast deployments in order to provid | ||||
e a good end-user experience within a specific operational domain. | ||||
In multicast real-time media streaming, if a single packet is lost within | ||||
a keyframe and | ||||
cannot be recovered using forward error correction, many receivers will be | ||||
unable to decode subsequent frames | ||||
within the Group of Pictures (GoP), which results in video freezes or blac | ||||
k pictures until another keyframe is delivered. Unexpectedly long | ||||
delays in delivery of packets can cause timeouts with similar results. Mul | ||||
ticast packet loss and delays can therefore affect application | ||||
performance and the user experience within a domain.</t> | ||||
<t>It is essential to monitor the performance of multicast traffic. New on | ||||
-path telemetry techniques, such as | ||||
IOAM <xref target="RFC9197" format="default"/>, | ||||
IOAM Direct Export (DEX) <xref target="RFC9326" format="defaul | ||||
t"/>, | ||||
IOAM Postkcard-Based Telemetry - Marking (PBT-M) <xref target="I-D.song- | ||||
ippm-postcard-based-telemetry" format="default"/>, and | ||||
Hybrid Two-Step (HTS) <xref target="I-D.ietf-ippm-hybrid-two-step" | ||||
format="default"/>, | ||||
complement existing active OAM performance monitoring methods | ||||
like ICMP ping <xref target="RFC0792" format="default"/>. However, multicast tra | ||||
ffic's unique characteristics | ||||
present challenges in applying these techniques efficiently.</ | ||||
t> | ||||
<t>The IP multicast packet data for a particular (S,G) state remains ident | ||||
ical across different branches to multiple receivers <xref target="RFC4601" form | ||||
at="default"/>. | ||||
When IOAM trace data is added to multicast packets, each replicat | ||||
ed packet retains telemetry data for its entire forwarding path. | ||||
This results in redundant data collection for common path segment | ||||
s, unnecessarily consuming extra network bandwidth. | ||||
For large multicast trees, this redundancy is substantial. Using | ||||
solutions like IOAM DEX could be more efficient by eliminating data redundancy, | ||||
but IOAM DEX lacks a branch identifier, complicating telemetry da | ||||
ta correlation and multicast tree reconstruction.</t> | ||||
<t>This document provides two solutions to the IOAM data-redundancy proble | ||||
m based on the IOAM standards. The requirements for multicast traffic telemetry | ||||
are discussed along with the issues of the existing on-path telemetry | ||||
techniques. We propose modifications and extensions | ||||
to make these techniques adapt to multicast in order for the original | ||||
multicast tree to be correctly reconstructed while | ||||
eliminating redundant data. This document does not cover the operatio | ||||
nal considerations such as how to enable the telemetry on a subset of the traffi | ||||
c to avoid overloading | ||||
the network or the data collector.</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Requirements Language</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | ||||
", | ||||
"<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 described in BCP 14 <xref target="RFC2119"/> <xref | ||||
target="RFC8174"/> when, and only when, they appear in all capitals, as | ||||
shown here. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Requirements for Multicast Traffic Telemetry</name> | ||||
<t> Multicast traffic is forwarded through a multicast tree. With PIM <xre | ||||
f target="RFC7761" format="default"/> and Point-to-Multipoint (P2MP), the forwar | ||||
ding | ||||
tree is established and maintained by the multicast routing protocol. | ||||
</t> | ||||
<t> The requirements for multicast traffic telemetry that are addressed by | ||||
the solutions in this document are:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t> Reconstruct and visualize the multicast tree through data-plane mo | ||||
nitoring.</t> | ||||
</li> | ||||
<li> | ||||
<t> Gather the multicast packet delay and jitter performance on each p | ||||
ath. </t> | ||||
</li> | ||||
<li> | ||||
<t> Find the multicast packet-drop location and reason. </t> | ||||
</li> | ||||
</ul> | ||||
<t> In order to meet all of these requirements, we need the ability to dir | ||||
ectly monitor the multicast traffic and derive data from the multicast packets. | ||||
The conventional OAM mechanisms, such as multicast ping <xref target= | ||||
"RFC6450" format="default"/>, trace <xref target="RFC8487" format="default"/>, a | ||||
nd | ||||
RTCP <xref target="RFC3605" format="default"/>, are not sufficient to | ||||
meet all of these requirements. The telemetry methods in this document meet | ||||
these requirements by providing granular hop-by-hop network monitorin | ||||
g along with the reduction of data redundancy.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Issues of Existing Techniques</name> | ||||
<t> On-path telemetry techniques that directly retrieve data from multicas | ||||
t traffic's live network experience are ideal for | ||||
addressing the aforementioned requirements. The representative te | ||||
chniques include | ||||
IOAM Trace option <xref target="RFC9197" format="default"/>, | ||||
IOAM DEX option <xref target="RFC9326" format="default"/>, and | ||||
PBT-M <xref target="I-D.song-ippm-postcard-based-telemetry" format | ||||
="default"/>. However, | ||||
unlike unicast, multicast poses some unique challenges to applying | ||||
these techniques. </t> | ||||
<t> Multicast packets are replicated at each branch fork node in the corre | ||||
sponding multicast tree. Therefore, there are | ||||
multiple copies of the original multicast packet in the network.</t> | ||||
<t> When the IOAM trace option is utilized for on-path data collection, pa | ||||
rtial trace data is replicated into the packet | ||||
copy for each branch of the multicast tree. Consequently, at the | ||||
leaves of the multicast tree, each copy of the multicast packet | ||||
contains a complete trace. This results in data redundancy, as mo | ||||
st of the data (except from the final leaf branch) appears in multiple copies, | ||||
where only one is sufficient. This redundancy introduces unnecess | ||||
ary header overhead, wastes network bandwidth, and complicates data processing. | ||||
The larger the multicast tree or the longer the multicast path, t | ||||
he more severe the redundancy problem becomes.</t> | ||||
<t> The postcard-based solutions (e.g., IOAM DEX) can eliminate data redun | ||||
dancy because each | ||||
node on the multicast tree sends a postcard with only local data. | ||||
However, these methods cannot accurately track and correlate the tree branches | ||||
due to the absence of branching | ||||
information. For instance, in the multicast tree shown in <xref t | ||||
arget="figure_1" format="default"/>, Node B has two branches, one to Node C and | ||||
the | ||||
other to node D; further, Node C leads to Node E, and Node D lead | ||||
s to Node F (not shown). When applying postcard-based methods, it is impossible | ||||
to determine whether Node E | ||||
is the next hop of Node C or Node D from the received postcards a | ||||
lone, unless one correlates the exporting nodes with knowledge about the tree co | ||||
llected by other | ||||
means (e.g., mtrace). Such correlation is undesirable because it | ||||
introduces extra work and complexity. </t> | ||||
<t> The fundamental reason for this problem is that there is not an identi | ||||
fier (either implicit or explicit) to correlate the | ||||
data on each branch. </t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Modifications and Extensions Based on Existing Solutions</name> | ||||
<!-- [rfced] Section 4. We could not find the term "instruction header" used in | ||||
RFC 9326. Does the following update clearly identify what requires the extension | ||||
? May we update "DEX option header" to "DEX Option-Type header" in the rest of t | ||||
he section? | ||||
Original: | ||||
One is based on IOAM DEX and requires an extension to the | ||||
instruction header of the IOAM DEX Option | ||||
... | ||||
This works for the IOAM DEX option because the IOAM DEX | ||||
option has an instruction header which can be used to hold | ||||
the branch identifier. | ||||
Perhaps: | ||||
One is based on IOAM DEX and requires an extension to the | ||||
DEX Option-Type header | ||||
... | ||||
This works for the IOAM DEX option because the DEX Option-Type | ||||
header can be used to hold | ||||
the branch identifier. | ||||
--> | ||||
<t>We provide two solutions to address the above issues. One is based on I | ||||
OAM DEX and requires an extension to the instruction header of the IOAM DEX Opti | ||||
on. | ||||
The second solution combines the IOAM trace option and postcards for | ||||
redundancy removal.</t> | ||||
<section numbered="true" toc="default" anchor="per-hop-postcard-using-ioam | ||||
-dex"> | ||||
<name>Per-Hop Postcard Using IOAM DEX</name> | ||||
<t>One way to mitigate the postcard-based telemetry's tree-tracking weak | ||||
ness is to augment it with a branch identifier field. This works for | ||||
the IOAM DEX option because the IOAM DEX option has an instruction | ||||
header which can be used to hold | ||||
the branch identifier. To make the branch identifier | ||||
globally unique, the branch fork node ID plus an index is used. Fo | ||||
r example, as shown in <xref target="figure_1" format="default"/>, Node B has tw | ||||
o branches: one to Node C and the other to | ||||
Node D. Node B may use [B, 0] as the branch identifier for the bra | ||||
nch to C, and [B, 1] for the branch to D. The identifier is carried with the mul | ||||
ticast packet until the | ||||
next branch fork node. Each node <bcp14>MUST</bcp14> export the br | ||||
anch identifier in the received IOAM DEX header in the postcards it sends. | ||||
The branch identifier, along with the other fields such as Flow ID | ||||
and Sequence Number, is sufficient for the data collector to | ||||
reconstruct the topology of the multicast tree.</t> | ||||
<t><xref target="figure_1" format="default"/> shows an example of this s | ||||
olution. "P" stands for the postcard packet. The square brackets contains the br | ||||
anch identifier. The | ||||
curly braces contain the telemetry data about a specific node. </t> | ||||
<figure anchor="figure_1"> | ||||
<name>Per-Hop Postcard</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
P:[A,0]{A} P:[A,0]{B} P:[B,1]{D} P:[B,0]{C} P:[B,0]{E} | ||||
^ ^ ^ ^ ^ | ||||
: : : : : | ||||
: : : : : | ||||
: : : +-:-+ +-:-+ | ||||
: : : | | | | | ||||
: : +---:----->| C |------>| E |-... | ||||
+-:-+ +-:-+ | : | | | | | ||||
| | | |----+ : +---+ +---+ | ||||
| A |------->| B | : | ||||
| | | |--+ +-:-+ | ||||
+---+ +---+ | | | | ||||
+-->| D |--... | ||||
| | | ||||
+---+ | ||||
]]></artwork> | ||||
</figure> | ||||
<!-- [rfced] Section 4.1. May we make the terminology in this section consistent | ||||
? The following terms are used inconsistently. We suggest using the latter forms | ||||
. | ||||
branch ID (9) / Branch ID (3) / Multicast Branch ID (3) | ||||
node ID (4) / Node ID (2) / branch fork node ID (2) / Branching Node ID (1) ( | ||||
Branching Node ID is registered with IANA) | ||||
interface index (3) / Interface Index (2) (Interface Index is registered with | ||||
IANA) | ||||
Original: | ||||
Each branch fork node needs to generate a unique branch identifier | ||||
(i.e., branch ID) for each branch in its multicast tree instance and | ||||
include it in the IOAM DEX option header. The branch ID remains | ||||
unchanged until the next branch fork node. The branch ID contains | ||||
two parts: the branch fork node ID and an interface index. | ||||
Perhaps: | ||||
Each branch fork node needs to generate a unique branch identifier | ||||
(i.e., Multicast Branch ID) for each branch in its multicast tree instance an | ||||
d | ||||
include it in the IOAM DEX Option-Type header. The Multicast Branch ID remai | ||||
ns | ||||
unchanged until the next branch fork node. The Multicast Branch ID contains | ||||
two parts: the Branching Node ID and an Interface Index. | ||||
--> | ||||
<t> Each branch fork node needs to generate a unique branch identifier ( | ||||
i.e., branch ID) for each branch in its multicast tree instance and include | ||||
it in the IOAM DEX option header. The branch ID remains unchanged | ||||
until the next branch fork node. The branch ID contains two parts: | ||||
the branch fork node ID and an interface index. </t> | ||||
<t> Conforming to the node ID specification in IOAM <xref target="RFC919 | ||||
7" format="default"/>, the node ID is a 3-octet unsigned integer. | ||||
The interface index is a two-octet unsigned integer. As shown in < | ||||
xref target="figure_2" format="default"/>, the branch ID consumes 8 octets in to | ||||
tal. The three unused octets <bcp14>MUST</bcp14> be set to 0; | ||||
otherwise, the header is considered malformed and the packet < | ||||
bcp14>MUST</bcp14> be dropped. </t> | ||||
<figure anchor="figure_2"> | ||||
<name>Multicast Branch ID Format</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| node_id | unused | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Interface Index | unused | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t> <xref target="figure_3" format="default"/> shows that the branch ID | ||||
is carried as an optional field after the Flow ID and Sequence Number optional f | ||||
ields | ||||
in the IOAM DEX option header. Two bits "N" and "I" (i.e. | ||||
, the third and fourth bits in the Extension-Flags field) are reserved to indica | ||||
te the presence of | ||||
the optional branch ID field. "N" stands for the Node ID, | ||||
and "I" stands for the interface index. If "N" and "I" are both set to 1, the o | ||||
ptional multicast | ||||
branch ID field is present. Two Extension-Flag bits are u | ||||
sed because <xref target="RFC9326" format="default"/> specifies that each extens | ||||
ion flag only indicates the presence of a 4-octet optional data field, | ||||
while we need more than 4 octets to encode the branch ID. | ||||
The two flag bits <bcp14>MUST</bcp14> be both set or clea | ||||
red; otherwise, the header is considered malformed and the packet <bcp14>MUST</b | ||||
cp14> be dropped. </t> | ||||
<figure anchor="figure_3"> | ||||
<name>Carrying the Branch ID in IOAM DEX Option Header</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Namespace-ID | Flags |F|S|N|I|E-Flags| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IOAM-Trace-Type | Reserved | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Flow ID (optional) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Sequence Number (Optional) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Multicast Branch ID (as shown in Figure 2) | | ||||
| (optional) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | ||||
</figure> | ||||
<!-- [rfced] FYI - We found commented-out text in the document's XML. We will de | ||||
lete this text before publication. | ||||
--> | ||||
<!-- <t>To avoid introducing a new type of data field to the IOAM | ||||
DEX option header, we can encode the branch identifier | ||||
using the existing node ID data field as defined in <xref target="I | ||||
-D.ietf-ippm-ioam-data"/>. Currently, the node ID field occupies three octets. | ||||
A simple solution is to shorten the node ID field so a number o | ||||
f bits can be saved to encode the branch index, | ||||
as shown in <xref target="figure_3"/>.</t> | ||||
<t><figure anchor="figure_3" title="Encode Branch Index with Node ID Method 1"> | ||||
<artwork><![CDATA[ | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Hop_Lim | node_id | branch index | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | ||||
</figure></t> | ||||
<t>Another encoding method is to use the sum of the node ID and the branc | ||||
h index as the new node ID, | ||||
as shown in <xref target="figure_4"/>. | ||||
As long as the node IDs are assigned with large enough gap, the tel | ||||
emetry data analyzer can still | ||||
successfully recover the original node ID and branch index. </t | ||||
> | ||||
<t><figure anchor="figure_4" title="Encode Branch Index with Node ID Method 2"> | ||||
<artwork><![CDATA[ | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Hop_Lim | node_id + branch index | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | ||||
</figure></t> | ||||
--> | ||||
<t> Once a node gets the branch ID information from the upstream node, it | ||||
<bcp14>MUST</bcp14> carry this information in its | ||||
telemetry data export postcards so the original multicast tree can be | ||||
correctly reconstructed based on the postcards. </t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Per-Section Postcard for IOAM Trace</name> | ||||
<t>The second solution is a combination of the IOAM trace option <xref t | ||||
arget="RFC9197" format="default"/> and the postcard-based telemetry <xref target | ||||
="I-D.song-opsawg-ifit-framework" format="default"/>. | ||||
To avoid data redundancy, at each branch fork node, the trace da | ||||
ta accumulated up to this node is exported | ||||
by a postcard before the packet is replicated. In this solution, | ||||
each branch also needs to maintain some identifier to help correlate the postcar | ||||
ds | ||||
for each tree section. The natural way to accomplish this is to s | ||||
imply carry the branch fork node's data (including its ID) in the trace of each | ||||
branch. | ||||
This is also necessary because each replicated multicast packet c | ||||
an have different telemetry data pertaining to this particular copy (e.g., node | ||||
delay, egress timestamp, and egress interface). As a consequence, | ||||
the local data exported by each branch fork node can only contain the common | ||||
data shared by all the replicated packets (e.g., ingress interfac | ||||
e and ingress timestamp). </t> | ||||
<t><xref target="figure_4" format="default"/> shows an example in a segm | ||||
ent of a multicast tree. Node B and D are two branch fork nodes, and they will e | ||||
xport | ||||
a postcard covering the trace data for the previous section. The end | ||||
node of each path will also need to export the data of the last section as a | ||||
postcard.</t> | ||||
<figure anchor="figure_4"> | ||||
<name>Per-Section Postcard</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
P:{A,B'} P:{B1,C,D'} | ||||
^ ^ | ||||
: : | ||||
: : | ||||
: : {D1} | ||||
: : +--... | ||||
: +---+ +---+ | | ||||
: {B1} | |{B1,C}| |--+ {D2} | ||||
: +-->| C |----->| D |-----... | ||||
+---+ +---+ | | | | |--+ | ||||
| | {A} | |--+ +---+ +---+ | | ||||
| A |---->| B | +--... | ||||
| | | |--+ +---+ {D3} | ||||
+---+ +---+ | | |{B2,E} | ||||
+-->| E |--... | ||||
{B2} | | | ||||
+---+ | ||||
]]></artwork> | ||||
</figure> | ||||
<!-- [rfced] Section 4.2. We could not find a Remaining Length field in RFC 9197 | ||||
. May we update the field name to RemainingLen? | ||||
Original: | ||||
...reset the Remaining Length field to the initial value). | ||||
--> | ||||
<t>There is no need to modify the IOAM trace option header format as spe | ||||
cified in <xref target="RFC9197" format="default"/>. We just need to configure t | ||||
he branch fork nodes, as well as the leaf nodes, to | ||||
export the postcards that contain the trace data collected so far and | ||||
refresh the IOAM header and data in the packet (e.g., clear the node data list t | ||||
o all zeros and reset the Remaining Length field to the initial value).</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default" anchor="application-considerations"> | ||||
<name>Application Considerations for Multicast Protocols</name> | ||||
<section numbered="true" toc="default"> | ||||
<name>Mtrace Version 2</name> | ||||
<t>Mtrace version 2 (Mtrace2) <xref target="RFC8487" format="default"/> | ||||
is a protocol that allows the tracing of an IP multicast routing path. Mtrace2 p | ||||
rovides | ||||
additional information such as the packet rates and losses, as well as | ||||
other diagnostic information. Unlike unicast traceroute, Mtrace2 traces the path | ||||
that the tree-building messages follow from the receiver to the source. | ||||
An Mtrace2 client sends an Mtrace2 Query to a Last-Hop Router (LHR), and the LH | ||||
R | ||||
forwards the packet as an Mtrace2 Request towards the source or a Rende | ||||
zvous Point (RP) after appending a response block. Each router along the | ||||
path proceeds with the same operations. When the First-Hop Router (FHR) | ||||
receives the Request packet, it appends its own response block, turns the | ||||
Request packet into a Reply, and unicasts the Reply back to the Mtrace2 | ||||
client. </t> | ||||
<t>New on-path telemetry techniques will enhance Mtrace2, and other exis | ||||
ting OAM solutions, with more granular and real-time network status data through | ||||
direct measurements. There are various multicast protocols that are use | ||||
d to forward the multicast data. Each will require its own unique on-path teleme | ||||
try solution. | ||||
Mtrace2 doesn't integrate with IOAM directly, but network management sy | ||||
stems may use Mtrace2 to learn about routers of interest. </t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Application in PIM</name> | ||||
<t>PIM - Sparse Mode (PIM-SM) <xref target="RFC7761" format="default"/> | ||||
is the most widely used multicast routing protocol deployed today. PIM - Source- | ||||
Specific Multicast (PIM-SSM), however, is the preferred method due to | ||||
its simplicity and removal of network source discovery complexity. With PI | ||||
M, control plane state is established in the network in order to forward multica | ||||
st | ||||
UDP data packets. PIM utilizes network-based source discovery. PIM-SSM, ho | ||||
wever, utilizes application-based source discovery. IP multicast packets fall wi | ||||
thin the range | ||||
of 224.0.0.0 through 239.255.255.255 for IPv4 and ff00::/8 for IPv6. Th | ||||
e telemetry solution will need to work within these IP address ranges and provid | ||||
e telemetry data for this UDP traffic. </t> | ||||
<t>A proposed solution for encapsulating the telemetry instruction heade | ||||
r and metadata in IPv6 packets is described in | ||||
<xref target="RFC9486" format="default"/>. </t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<!-- [rfced] Section 5.3. None of the RFCs cited in this section mention an x-PM | ||||
SI tunnel encapsulation attribute. Is there a reference that could be added? | ||||
Current: | ||||
5.3. Application of MVPN X-PMSI Tunnel Encapsulation Attribute | ||||
IOAM, and the recommendations of this document, are equally | ||||
applicable to multicast MPLS forwarded packets. Multipoint Label | ||||
Distribution Protocol (mLDP), P2MP RSVP-TE, Ingress Replication (IR), | ||||
and PIM Multicast Distribution Tree (MDT) SAFI with GRE Transport are | ||||
all commonly used within a Multicast VPN (MVPN) environment utilizing | ||||
MVPN procedures such as multicast in MPLS/BGP IP VPNs [RFC6513] and | ||||
BGP encoding and procedures for multicast in MPLS/BGP IP VPNs | ||||
[RFC6514]. mLDP LDP extensions for P2MP and multipoint-to-multipoint | ||||
(MP2MP) label switched paths (LSPs) [RFC6388] provide extensions to | ||||
LDP to establish point-to-multipoint (P2MP) and MP2MP LSPs in MPLS | ||||
networks. The telemetry solution will need to be able to follow | ||||
these P2MP and MP2MP paths. The telemetry instruction header and | ||||
data should be encapsulated into MPLS packets on P2MP and MP2MP | ||||
paths. | ||||
--> | ||||
<name>Application of MVPN PMSI Tunnel Attribute</name> | ||||
<t>IOAM, and the recommendations of this document, are equally applicabl | ||||
e to multicast MPLS forwarded packets as described in <xref target="RFC6514"/>. | ||||
Multipoint Label Distribution Protocol (mLDP), P2MP RSVP-TE, Ingress Repli | ||||
cation (IR), and PIM Multicast Distribution Tree (MDT) SAFI with GRE Transport a | ||||
re all commonly | ||||
used within a Multicast VPN (MVPN) environment utilizing MVPN procedures s | ||||
uch as multicast in MPLS/BGP IP VPNs <xref target="RFC6513" format="default"/> | ||||
and BGP encoding and procedures for multicast in MPLS/BGP IP VPNs <xref ta | ||||
rget="RFC6514" format="default"/>. mLDP LDP | ||||
extensions for P2MP and multipoint-to-multipoint (MP2MP) label switched pa | ||||
ths (LSPs) <xref target="RFC6388" format="default"/> provide extensions to LDP t | ||||
o establish point-to-multipoint (P2MP) and | ||||
MP2MP LSPs in MPLS networks. The telemetry solution will need to be able t | ||||
o follow these P2MP and MP2MP paths. | ||||
The telemetry instruction header and data should be encapsulated into MPLS | ||||
packets on P2MP and MP2MP paths. </t> | ||||
</section> | ||||
</section> | ||||
<section anchor="Security" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>The schemes discussed in this document share the same security consider | ||||
ations for the IOAM trace option <xref target="RFC9197" format="default"/> and t | ||||
he IOAM DEX | ||||
option <xref target="RFC9326" format="default"/>. In particular, since mul | ||||
ticast has a built-in nature for packet amplification, the possible amplificatio | ||||
n risk for the DEX-based | ||||
scheme is greater than the case of unicast. Hence, stricter mechanisms for | ||||
protections need to be applied. In addition to selecting packets to enable DEX | ||||
and to limit the exported traffic rate, we can also allow only a subset of the n | ||||
odes in a multicast tree to process the option and export the data (e.g., only | ||||
the branching nodes in the | ||||
multicast tree are configured to process the option). </t> | ||||
</section> | ||||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>IANA has registered two Extension-Flags, as described in <xref target=" | ||||
per-hop-postcard-using-ioam-dex"/>, in the "IOAM DEX Extension-Flags" registry.< | ||||
/t> | ||||
<table anchor="ioam-dex-extension-flags-registry"> | ||||
<name>IOAM DEX Extension-Flags</name> | ||||
<thead> | ||||
<tr> | ||||
<th>Bit</th> | ||||
<th>Description</th> | ||||
<th>Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>2</td> | ||||
<td>Multicast Branching Node ID</td> | ||||
<td>This RFC</td> | ||||
</tr> | ||||
<tr> | ||||
<td>3</td> | ||||
<td>Multicast Branching Interface Index</td> | ||||
<td>This RFC</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<displayreference target="I-D.song-ippm-postcard-based-telemetry" to="POSTCA | ||||
RD-TELEMETRY"/> | ||||
<displayreference target="I-D.ietf-ippm-hybrid-two-step" to="HYBRID-TWO-STEP | ||||
"/> | ||||
<displayreference target="I-D.ietf-pim-multicast-lessons-learned" to="MULTIC | ||||
AST-LESSONS-LEARNED"/> | ||||
<displayreference target="I-D.song-opsawg-ifit-framework" to="IFIT-FRAMEWORK | ||||
"/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
761.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
513.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
514.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
388.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
197.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
326.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0 | ||||
792.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
450.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
487.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
605.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
601.xml"/> | ||||
<!-- [I-D.song-ippm-postcard-based-telemetry] IESG state: Expired. Long way beca | ||||
use of an issue with Gyan's initials--> | ||||
<reference anchor="I-D.song-ippm-postcard-based-telemetry" target="https | ||||
://datatracker.ietf.org/doc/html/draft-song-ippm-postcard-based-telemetry-16"> | ||||
<front> | ||||
<title> | ||||
On-Path Telemetry using Packet Marking to Trigger Dedicated OAM Pack | ||||
ets | ||||
</title> | ||||
<author initials="H." surname="Song" fullname="Haoyu Song"> | ||||
<organization>Futurewei Technologies</organization> | ||||
</author> | ||||
<author initials="G." surname="Mirsky" fullname="Greg Mirsky"> | ||||
<organization>Ericsson</organization> | ||||
</author> | ||||
<author initials="T." surname="Zhou" fullname="Tianran Zhou"> | ||||
<organization>Huawei</organization> | ||||
</author> | ||||
<author initials="Z." surname="Li" fullname="Zhenbin Li"> | ||||
<organization>Huawei</organization> | ||||
</author> | ||||
<author initials="T." surname="Graf" fullname="Thomas Graf"> | ||||
<organization>Swisscom</organization> | ||||
</author> | ||||
<author initials="G." surname="Mishra" fullname="Gyan Mishra"> | ||||
<organization>Verizon Inc.</organization> | ||||
</author> | ||||
<author initials="J." surname="Shin" fullname="Jongyoon Shin"> | ||||
<organization>SK Telecom</organization> | ||||
</author> | ||||
<author initials="K." surname="Lee" fullname="Kyungtae Lee"> | ||||
<organization>LG U+</organization> | ||||
</author> | ||||
<date month="June" day="2" year="2023"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-song-ippm-postcard-base | ||||
d-telemetry-16"/> | ||||
</reference> | ||||
<!-- [I-D.ietf-ippm-ioam-ipv6-options] Published as RFC 9486--> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
486.xml"/> | ||||
<!-- [I-D.ietf-ippm-hybrid-two-step] IESG state: Active as of 08/5/24--> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-ip | ||||
pm-hybrid-two-step.xml"/> | ||||
<!-- [I-D.ietf-pim-multicast-lessons-learned] IESG state: I-D Exists as of 06/26 | ||||
/24--> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-pi | ||||
m-multicast-lessons-learned.xml"/> | ||||
<!-- [I-D.song-opsawg-ifit-framework] IESG state: Expired as of 06/26/24--> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-song-op | ||||
sawg-ifit-framework.xml"/> | ||||
</references> | ||||
</references> | ||||
<section anchor="Acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>The authors would like to thank <contact fullname="Gunter Van de Velde" | ||||
/>, <contact fullname="Brett Sheffield"/>, <contact fullname="Éric Vyncke"/>, <c | ||||
ontact fullname="Frank Brockners"/>, <contact fullname="Nils Warnke"/>, <contact | ||||
fullname="Jake Holland"/>, | ||||
<contact fullname="Dino Farinacci"/>, <contact fullname="Henrik Nydell"/>, | ||||
<contact fullname="Zaheduzzaman Sarker"/>, and <contact fullname="Toerless Ecke | ||||
rt"/> for their comments and suggestions.</t> | ||||
</section> | ||||
</back> | ||||
<!-- [rfced] FYI - We have added expansions for abbreviations upon first use per | ||||
Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each expansion in th | ||||
e document carefully to ensure correctness. | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online Style | ||||
Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> and let | ||||
us know if any changes are needed. | ||||
--> | ||||
</rfc> | ||||
End of changes. 1 change blocks. | ||||
lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |