You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+131-1Lines changed: 131 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,7 @@ stamp-suite is a Rust implementation of the Simple Two-Way Active Measurement Pr
19
19
- RFC 9534 Micro-session ID TLV for LAG per-member-link measurement
20
20
- Reflected Test Packet Control TLV (draft-ietf-ippm-asymmetrical-pkts-14, Type 12) for asymmetrical reply measurement
21
21
- Bit Error Rate TLVs (draft-gandhi-ippm-stamp-ber-05, Types 240/241/242) for residual BER measurement against a known padding pattern
22
+
- Reflected Fixed/IPv6 Extension Header Data TLVs (draft-ietf-ippm-stamp-ext-hdr, Types 247/246) for header-transparency diagnostics — feature-gated to the pnet backend, gracefully U-flagged on the default nix backend
22
23
- Class of Service (CoS) TLV support with DSCP/ECN measurement (RFC 8972 §5.2)
23
24
- Location, Timestamp Info, Direct Measurement, Access Report, and Follow-Up Telemetry TLVs
| 247 | Reflected Fixed Header Data | Reflects the raw 20-byte IPv4 or 40-byte IPv6 fixed header (draft-ietf-ippm-stamp-ext-hdr) | Experimental (pnet backend only) |
421
508
422
-
**Status**: Full = structured parsing, validation, and reflector field population. Experimental = implements an active IETF draft; wire format and type numbers for BER (240/241/242) are TBD in the draft (experimental-range picks) while Reflected Control (Type 12) is IANA-assigned. SR-MPLS/SRv6 forwarding is echoed with U-flag (actual segment routing is out of scope for userspace UDP).
509
+
**Status**: Full = structured parsing, validation, and reflector field population. Experimental = implements an active IETF draft; wire format and type numbers for BER (240/241/242) and ext-hdr reflection (246/247) are TBD in the draft (experimental-range picks) while Reflected Control (Type 12) is IANA-assigned. SR-MPLS/SRv6 forwarding is echoed with U-flag (actual segment routing is out of scope for userspace UDP). Types 246/247 require raw IP-header visibility which the default `nix` UDP-socket backend cannot provide; on that backend they are echoed with the U-flag set and a one-time warning is logged — see [Receiver Backends](#receiver-backends) for why the default remains `nix`.
The reflector XORs the received padding against the expected pattern (from the Bit Pattern TLV, or 0xFF00 if absent), counts error bits and the longest consecutive error run across byte boundaries, and writes the results into Types 241 and 242. Per draft §3, duplicate BER TLVs or a missing companion Extra Padding TLV cause the reflector to set the U-flag on all BER TLVs and skip the computation.
608
695
696
+
### Reflected Fixed / IPv6 Extension Header Data TLVs (draft-ietf-ippm-stamp-ext-hdr)
697
+
698
+
Two experimental TLVs let the sender ask the reflector to echo the bytes of the
699
+
received IP headers — useful for diagnosing DSCP remarking, TTL decrement,
700
+
Flow Label rewriting, or tampering with IPv6 Hop-by-Hop / Destination Options
701
+
by intermediate routers.
702
+
703
+
| Type | Name | Content |
704
+
|------|------|---------|
705
+
| 246 | Reflected IPv6 Extension Header Data | Concatenated Hop-by-Hop (NextHeader 0) and Destination Options (NextHeader 60) extension headers, each prefixed with its NextHeader byte and HdrExtLen byte as they appeared on the wire |
706
+
| 247 | Reflected Fixed Header Data | Raw 20-byte IPv4 or 40-byte IPv6 fixed header as received |
707
+
708
+
Type numbers are TBD in the draft; this implementation uses 246/247 from RFC
709
+
8972's experimental range.
710
+
711
+
```bash
712
+
# Ask the reflector to reflect the IPv4/IPv6 fixed header
0 commit comments