Extension of RFC 6374-Based Performance Measurement Using Synonymous Flow Labels
Extracted elements (26)
For multipoint-to-point LSPs, MPLS contains no source address, so SFLs provide a source-specific batch identifier enabling per-source packet loss measurement. Without SFLs, distinguishing packet batches from different sources on an MP2P LSP would be impossible.
RFC 6374's use of the Loss Measurement (LM) packet as the packet accounting demarcation point causes significant errors in ECMP environments (out-of-order arrival, multi-interface accounting), with distributed processor cores, link aggregation, and long forwarding pipelines. SFLs were introduced to batch-mark packets so each batch is recognizable by the receiver, mitigating synchronization issues without requiring hardware-level coordination.
The Average Delay message returns both first-packet and last-packet timestamps plus the sum of all timestamps, allowing analytics engines to compute mean delay and also to characterize delay components at multiple points along the packet path, rather than only at the endpoint.
The Classic Standard Deviation method uses the formula var = (SumS - S*S/n)/(n-1), which avoids requiring a division in the forwarding hardware. The document acknowledges numerical precision concerns when SumS and S*S/n are similar (low-variance flows) but accepts this tradeoff for hardware simplicity.
The Time Bucket method was chosen over per-packet delay recording to give operators structural insight into jitter without per-packet multiply operations on hardware. Bucket intervals are operator-programmable, avoiding the storage and bandwidth demands of per-packet delay logs.
The Time Bucket Jitter Measurement message uses a variable-length format, which is explicitly noted as a departure from the normal fixed format used in RFC 6374. Implementations must handle this variable structure rather than assuming a fixed message size.
A delay measurement interval MUST be short enough that it will complete before the enclosing loss batch completes. A delay measurement MAY start at any point during a loss measurement batch subject to this constraint.
Any system that needs to measure delay MUST be able to measure loss, and MUST be configured to measure loss (whether or not loss statistics are collected is a local matter).
If a Time Bucket Query message is used to configure or modify bucket intervals, the responder MUST respond with 0 packets in each bucket until it has been configured for a full measurement period, indicating the response covers the complete interval.
The Return Information (Return Address TLV or UDP Return Object) MUST be carried in the Query message unless the response is requested in-band and the MPLS construct being measured is a point-to-point LSP.
The SFL TLV MUST be included in the measurement message unless, by some out-of-scope method, it is known that the responder does not need it. The SFL TLV is required when messages are sent over UDP (RFC 7876), because many MPLS implementations do not pass the label stack to the OAM handler.
Where SFLs are being used to monitor packet loss or where label-inferred scheduling is used (RFC 3270), use of an SFL for delay measurement is REQUIRED to ensure the proxy packet experiences a representative delay.
Including originating and flow information in SFL-marked packets degrades privacy by enabling flow identification, though it does not directly reveal the originating node without inspecting the network at ingress or the control protocol. Mitigations include encrypting control protocol packets, regularly rotating synonymous labels, and concurrently using multiple such labels.
Combined Loss/Delay Measurement using SFL is not currently supported by this specification (Section 10 is explicitly out of scope).
Data packets of the flow being instrumented are grouped into batches, all packets within a batch are marked with the corresponding Synonymous Flow Label (SFL), the sender counts packets in the batch, and when the batch is complete the sender issues a Query message using the same SFL to determine packets received and hence packets lost.
Data Service Packet Delay Measurement uses a different SFL type (e.g., SFL=D) to mark a subset of packets for both loss and delay instrumentation concurrently with loss-only batches. An SFL marked for delay is synonymous with the loss-batch SFL and the underlying FEC, so a marked packet is accumulated into the loss batch, into delay statistics, and forwarded normally.
Sampled Measurement allows the responder to measure only the packet at the start of a marked delay batch rather than every packet; the measurement interval is defined by the interval between two readout packets rather than the duration of a marked batch. This approach avoids ECMP effects and may be used if supported by the responder and configured by the operator.
The SFL TLV carries the SFL value used to deliver the packet, the SFL Batch identifier grouping related SFLs for management, an optional SFL Index into the array of SFLs allocated for the FEC, and the FEC itself. This allows operation with hardware that discards the MPLS label stack before passing the packet to the OAM handler.
IANA allocated three new values in the 'MPLS Generalized Associated Channel (G-ACh) Types' registry: 0x0010 (Time Bucket Jitter Measurement), 0x0011 (Multi-packet Delay Measurement), and 0x0012 (Average Delay Measurement), all referencing RFC 9571.
IANA allocated TLV type 4 (Synonymous Flow Label) in the 'MPLS Loss/Delay Measurement TLV Object' registry within the 'Generic Associated Channel (G-ACh) Parameters' registry group, referencing RFC 9571.
Security considerations from RFC 6374 and RFC 8372 (which reference RFC 5920 and RFC 7258) apply. An attacker corrupting the SFL TLV in Section 9.1 could disrupt measurements in a way undetectable by the RFC 6374 responder, though anomalous measurement results would likely be noticed by the operator, and normal MPLS security makes such attacks unlikely. Any control protocol used to request SFLs must ensure legitimacy of requests.
A Query packet carried over an LSP using an SFL has the label stack: LSP Label / SFL / GAL / ACH (Type=0x000A for Direct Loss Measurement) / Measurement Message. The label stack is identical to that of the user data service packets being instrumented, plus the GAL to distinguish OAM from data.
Average Delay Measurement message (ACH type 0x0012) carries, after the RFC 6374 fixed header: Number of Packets (64-bit), Time of First Packet (64-bit), Time of Last Packet (64-bit), Sum of Timestamps of Batch (64-bit), followed by a TLV block. Query placeholders are sent as zero.
Multi-packet Delay Measurement message (ACH type 0x0011) carries, after the RFC 6374 fixed header: Number of Packets (64-bit), Sum of Delays for Batch (64-bit, in RTF time format), Minimum Delay (64-bit), Maximum Delay (64-bit), Sum of squares of inter-packet delay (64-bit), followed by a TLV block.
The SFL TLV (RFC 6374 TLV type 4) encodes: Type (8-bit), Length (8-bit per RFC 6374), MBZ (2-bit), SFL Batch (6-bit), SFL Index (8-bit), SFL (20-bit MPLS label + 12-bit Reserved), and FEC encoded per RFC 5036 Section 3.4.1. MBZ and Reserved MUST be sent as zero and ignored on receipt.
Time Bucket Jitter Measurement message (ACH type 0x0010) extends the RFC 6374 fixed header with: Number of Buckets (8-bit unsigned), Reserved1 (24-bit, send as zero), Interval (64-bit, in 10 ns units), and then N 64-bit Number of Pkts in Bucket fields, one per bucket, followed by a TLV block.