Internet-Draft BPv7 TREB September 2026
Koo Expires 26 March 2027 [Page]
Workgroup:
Delay-Tolerant Networking
Internet-Draft:
draft-koo-dtn-traceroute-eb-00
Published:
Intended Status:
Standards Track
Expires:
Author:
C. H. Koo
Korea Aerospace Research Institute (KARI)

Traceroute Extension Block for Bundle Protocol Version 7

Abstract

This document defines a Traceroute Extension Block for Bundle Protocol Version 7 (BPv7). The extension block provides path discovery and per-hop performance measurement capabilities for Delay-Tolerant Networks (DTNs). Each node along the bundle's path appends a hop record containing its endpoint identifier, timestamp, link characteristics, and convergence layer information. This enables comprehensive network diagnostics including path verification, delay analysis, link type identification, and congestion monitoring without requiring status reports from every intermediate node.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 26 March 2027.

Table of Contents

1. Introduction

Network diagnostic tools are essential for operational networks. In DTN, particularly space communications, operators need visibility into:

While Bundle Protocol Version 7 [RFC9171] provides Bundle Status Reports (BSRs) that can theoretically provide some path information, using BSRs for routine path tracking is inefficient. Enabling status reports for every bundle creates significant network overhead, as each intermediate node must generate and transmit a separate status report bundle back to the source. This approach is particularly problematic in bandwidth-constrained space networks.

This specification addresses these needs through a comprehensive yet selective traceroute mechanism that can be enabled on specific diagnostic bundles when path visibility is required.

2. Conventions and Definitions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

This document uses terminology from [RFC9171]:

Bundle Protocol Agent (BPA):
The software component that implements the Bundle Protocol.
Endpoint Identifier (EID):
A name for a BP endpoint, used as the source or destination of bundles.
Extension Block:
A block other than the primary block or payload block that extends the capabilities of the Bundle Protocol.

3. Extension Block Specification

3.1. Block Type Code

This document requests IANA to assign a block type code for the Traceroute Extension Block from the "Bundle Block Types" registry.

Suggested value: TBD1 (recommended: 194 or higher, in the Specification Required range)

3.2. CDDL Definition

The block-type-specific-data is encoded as CBOR [RFC8949] following [RFC9171] Appendix B conventions:

; Traceroute Extension Block Data
traceroute-data = [
  traceroute-id: uint,          ; Unique identifier
  hop-limit: uint .size 1,      ; Max hop-records (1-255)
  hop-records: [* hop-record]   ; Array of hop records
]

hop-record = [
  self-node-eid: eid,           ; Current node
  next-node-eid: eid,           ; Next hop node
  event-type: event-type-code,  ; Event at this node
  dtn-timestamp: dtn-time,      ; When event occurred
  link-info                     ; Link characteristics
]

; Link characteristics grouped for modularity
link-info = [
  link-type: link-type-code,
  link-distance: link-distance-km,
  cl-type: cl-type-code,
  congestion-status: congestion-status-code
]

event-type-code = uint .size 1
  ; 0 = bundle-creation
  ; 1 = bundle-forwarding
  ; 2 = bundle-delivery
  ; 3 = bundle-deletion
  ; 4-255 = reserved

link-type-code = uint .size 1
  ; 0 = unknown/not-applicable
  ; 1 = RF (Radio Frequency)
  ; 2 = optical/laser
  ; 3 = internet/terrestrial
  ; 4 = inter-satellite-link (ISL)
  ; 5-255 = reserved

link-distance-km = uint
  ; 0 = unknown/withheld
  ; 1+ = distance in kilometers

cl-type-code = uint .size 1
  ; 0 = unknown/not-applicable
  ; 1 = LTP
  ; 2 = TCPCLv3
  ; 3 = TCPCLv4
  ; 4 = UDPCL
  ; 5-255 = reserved

congestion-status-code = uint .size 1
  ; 0 = unknown
  ; 1 = very low (0-10%)
  ; 2 = low (11-30%)
  ; 3 = medium (31-60%)
  ; 4 = high (61-80%)
  ; 5 = very high (81-100%)
  ; 6-100 = exact percentage
  ; 101-255 = reserved

dtn-time = uint  ; Milliseconds since DTN epoch

3.3. Block Processing Control Flags

The following block processing control flags MUST be set:

  • Bit 0 (must-replicate): MUST be 0 by default
  • Bit 2 (delete-if-not-processed): MUST be 0
  • Bit 4 (discard-if-not-processed): MUST be 0

This ensures the traceroute block is preserved even by nodes that do not understand it.

4. Processing Rules

4.1. At the Departure Node

A departure node MAY add a Traceroute Extension Block to any bundle. The first hop-record (hop-records[0]) MUST always represent the departure node.

When creating a bundle with a Traceroute Extension Block:

  1. The BPA MUST create an initial hop-record with: self-node-eid set to the local node's EID; next-node-eid set to the next hop's EID (from routing table); event-type set to 0 (bundle-creation); dtn-timestamp set to current DTN time in milliseconds; link-info set to [0, 0, 0, 0] or known values.

  2. The traceroute-id SHOULD be unique within the scope of the departure node (typically 0, incremented for retries).

  3. The hop-limit SHOULD be set to a reasonable value based on expected network diameter (suggested default: 32).

If the departure node wants to receive traceroute information via status reports, the bundle processing control flags for forwarding, delivery, and deletion reporting SHOULD be set accordingly.

4.1.1. Traceroute Carrier Bundle

A traceroute carrier bundle is a bundle specifically created for gathering path information. The Traceroute Extension Block SHOULD be placed as the last extension block (before the payload block) to enable efficient hop-record appending. Since [RFC9171] requires the payload block to be the last block of a bundle, appending a hop-record displaces only the payload block. Using a fixed payload such as "This bundle is the host of traceroute extension block." allows the payload block to be pre-encoded as a constant, making the cost of appending a hop-record independent of the number of extension blocks present.

When the traceroute carrier bundle reaches its destination, the destination node includes the accumulated Traceroute Extension Block in the delivery status report returned to the departure node. Similarly, if a bundle is deleted at any intermediate node, the deletion status report carries the accumulated traceroute data up to that point. This enables complete forward-path visibility and failure localization from a single diagnostic bundle.

4.2. At Intermediate Nodes

Any intermediate node in the bundle's path has the following options:

  1. The node MAY ignore this extension block and forward it unchanged.

  2. The node SHALL NOT remove this extension block.

  3. The node MAY protect this extension block with BPSec [RFC9172] if security context permits.

If processing the block, the node MUST first check the hop-limit. If the number of hop-records equals hop-limit, the BPA SHALL forward the bundle without appending a new hop-record.

Otherwise, the BPA MUST determine link-info elements and append a new hop-record:

  1. Determine link-info: link-type from the interface that received the bundle (1=RF, 2=optical, 3=internet, 4=ISL, 0=unknown); link-distance as estimated distance in kilometers (0 if unknown); cl-type from the convergence layer that delivered the bundle; congestion-status from local resource utilization.

  2. Append hop-record with: self-node-eid set to the local node's EID; next-node-eid set to the next hop's EID; event-type set to 1 (bundle-forwarding); dtn-timestamp set to current DTN time; link-info set to determined values.

Rationale for optional processing: nodes may not trust traceroute from unknown sources, classified missions may prohibit topology disclosure, or resource-constrained nodes may skip optional features.

4.3. At the Destination Node

When a BPA delivers a bundle containing a Traceroute Extension Block:

  1. The BPA MUST append a final hop-record with: self-node-eid set to the local node's EID; next-node-eid set to the local node's EID (self-delivery); event-type set to 2 (bundle-delivery); dtn-timestamp set to current DTN time; link-info set to characteristics of the final link.

  2. The completed traceroute-data is delivered to the application.

  3. If bundle processing control flags request a delivery report, the node MUST include the complete Traceroute Extension Block (with all accumulated hop-records) in the delivery status report.

4.4. On Bundle Deletion

When a node deletes a bundle containing a Traceroute Extension Block (due to lifetime expiration, storage exhaustion, or other reasons):

  1. The node SHOULD append a hop-record with event-type set to 3 (bundle-deletion) before generating any deletion status report.

  2. If bundle processing control flags request deletion reports, the node MUST include the Traceroute Extension Block (with the deletion hop-record) in the deletion status report.

This enables the departure node to identify precise deletion locations and distinguish between network failures (no reports) and intentional deletion (deletion report received).

4.5. Inclusion in Status Reports

When a bundle contains a Traceroute Extension Block AND the bundle's processing control flags request reporting, nodes SHALL generate appropriate status reports with the Traceroute Extension Block included. This comprehensive reporting enables the departure node to distinguish between network failures (silence after last forwarding report) and intentional deletions (explicit deletion report with event-type=3).

4.5.1. Forwarding Status Reports

Intermediate nodes generating forwarding status reports:

  1. SHALL generate bundle forwarding status reports as requested by bundle processing control flags.

  2. MUST append a new hop-record for this node's forwarding event with: self-node-eid set to this node's EID; next-node-eid set to the next hop EID (the node this bundle is being forwarded to); event-type set to 1 (bundle-forwarding); dtn-timestamp set to current time; link-info set to determined values.

  3. MUST include the Traceroute Extension Block in the forwarding status report bundle, containing ALL previously accumulated hop-records (from bundle reception) PLUS the newly created hop-record from step 2.

By including the forwarding hop-record in the status report, the departure node can identify:

  • Last successful forwarding point: If forwarding fails, the last received status report shows which node forwarded to which next-hop.

  • Failure location: If bundle disappears after Node N's forwarding report, the failure occurred between Node N and its declared next-hop (or at the next-hop itself).

  • Complete forwarding chain: Each status report progressively builds the complete path topology.

4.5.2. Delivery Status Reports

The destination node MUST include the complete Traceroute Extension Block with all hop-records including the final delivery record (event-type=2) in the delivery status report. This confirms successful end-to-end delivery with full path visibility.

4.5.3. Deletion Status Reports

When a node deletes a bundle, it MUST include the Traceroute Extension Block with a deletion hop-record (event-type=3) appended in the deletion status report. This provides explicit notification of deletion location and reason (congestion, storage exhaustion, lifetime expiration, etc.).

4.6. Traceroute Completion

A traceroute operation completes when the departure node receives sufficient information to determine the outcome. The following conditions define traceroute completion:

4.6.1. Successful Completion

A traceroute completes successfully when the departure node receives a delivery status report from the destination node containing the Traceroute Extension Block with event-type=2 (bundle-delivery). The complete hop-records array provides full end-to-end path visibility.

4.6.2. Unsuccessful Completion

A traceroute completes unsuccessfully under the following conditions:

  • Deletion: The departure node receives a deletion status report containing the Traceroute Extension Block with event-type=3 (bundle-deletion). The hop-records reveal the path up to the deletion point and the deleting node's identity.

  • Truncation: The number of hop-records reaches hop-limit before the bundle reaches its destination. The traceroute data is incomplete but still provides partial path information.

  • Timeout: No status report arrives within the expected time window. The last received forwarding status report (if any) indicates the last known successful hop. Silence after that point suggests failure between the last reporting node and its declared next-hop.

4.6.3. Partial Path Visibility

Even in unsuccessful cases, the accumulated hop-records provide diagnostic value. Operators can analyze:

  • The path traversed before failure

  • Per-hop timing to identify delay sources

  • Link characteristics at each hop

  • Congestion status along the path

4.7. Fragmentation

As required by [RFC9171] Section 5.8, this section defines rules for replication of the Traceroute Extension Block in bundle fragments.

A Traceroute Extension Block SHALL have its "Block must be replicated in every fragment" processing control flag (bit 0) set to 0. Under [RFC9171] Section 5.8, the block is then replicated only into the fragment whose offset is zero. Exactly one Traceroute Extension Block survives reassembly, and its hop-records remain an unambiguous ordered path.

A departure node creating a bundle specifically for traceroute diagnostics SHOULD set the "Bundle must not be fragmented" flag (bit 2) in the primary block to avoid fragmentation entirely.

4.8. Privacy and Policy Considerations

Nodes MAY withhold sensitive information by setting link-info fields to their "unknown" values:

link-info = [0, 0, 0, 0]  ; All fields withheld

A link-info array with any element set to 0 (unknown) SHALL NOT be treated as an error. This supports deployments where nodes in different administrative domains may have varying disclosure policies.

5. Security Considerations

5.1. Information Disclosure

The Traceroute Extension Block reveals network topology, node identities, link characteristics, and timing information. In sensitive environments, operators SHOULD:

  • Use Bundle Protocol Security [RFC9172] to encrypt traceroute data
  • Configure nodes to withhold sensitive link-info fields
  • Restrict traceroute processing to authorized bundles

5.2. Amplification Attacks

Unlike IP traceroute which generates ICMP responses, this mechanism does not generate additional bundles. The traceroute data travels with the original bundle, limiting amplification potential.

5.3. Resource Exhaustion

A malicious actor could send bundles with large hop-limit values. Implementations SHOULD:

  • Enforce a maximum hop-limit (suggested: 255)
  • Rate-limit traceroute block processing
  • Monitor for unusual traceroute patterns

6. IANA Considerations

6.1. Bundle Block Type Registration

This document requests IANA to register the following entry in the "Bundle Block Types" registry:

Table 1
Value Description Reference
TBD1 Traceroute Extension Block This document

6.2. Event Type Codes Registry

This document requests IANA to create a new registry titled "Traceroute Extension Block Event Type Codes" with the following initial values:

Table 2
Value Description Reference
0 bundle-creation This document
1 bundle-forwarding This document
2 bundle-delivery This document
3 bundle-deletion This document
4-255 Unassigned

6.4. CL Type Codes Registry

This document requests IANA to create a new registry titled "Traceroute Extension Block CL Type Codes" with the following initial values:

Table 4
Value Description Reference
0 unknown/not-applicable This document
1 LTP This document
2 TCPCLv3 This document
3 TCPCLv4 This document
4 UDPCL This document
5-255 Unassigned

6.5. Congestion Status Codes Registry

This document requests IANA to create a new registry titled "Traceroute Extension Block Congestion Status Codes" with the following initial values:

Table 5
Value Description Reference
0 unknown This document
1 very-low (0-10%) This document
2 low (11-30%) This document
3 medium (31-60%) This document
4 high (61-80%) This document
5 very-high (81-100%) This document
6-100 exact percentage This document
101-255 Reserved

7. References

7.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8949]
Bormann, C. and P. Hoffman, "Concise Binary Object Representation (CBOR)", STD 94, RFC 8949, DOI 10.17487/RFC8949, , <https://www.rfc-editor.org/info/rfc8949>.
[RFC9171]
Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol Version 7", RFC 9171, DOI 10.17487/RFC9171, , <https://www.rfc-editor.org/info/rfc9171>.
[RFC9172]
Birrane, E. and K. McKeever, "Bundle Protocol Security (BPSec)", RFC 9172, DOI 10.17487/RFC9172, , <https://www.rfc-editor.org/info/rfc9172>.

Appendix A. CBOR Encoding Examples

This appendix provides complete CBOR encoding examples for representative scenarios.

A.1. Cislunar Scenario

Network topology:

Earth Ground Station (ipn:1.0)
       |
       | RF link, 400,000 km, LTP
       v
Lunar Relay Satellite (ipn:2.0)
       |
       | RF link, 2,000 km, LTP
       v
Surface Rover (ipn:3.0)

Complete CBOR encoding (89 bytes):

83 00 18 20 83
85 82 02 82 01 00 82 02 82 02 00 00
   1B 00 00 00 C3 E1 D8 30 00 84 00 00 00 00
85 82 02 82 02 00 82 02 82 03 00 01
   1B 00 00 00 C3 E1 D8 35 3C 84 01 1A 00 06 1A 80 01 00
85 82 02 82 03 00 82 02 82 03 00 02
   1B 00 00 00 C3 E1 D8 35 46 84 01 19 07 D0 01 00

A.2. Outer Solar System Scenario (uint64 Required)

For Neptune distances (4.5 billion km), link-distance exceeds uint32 maximum (4,294,967,295), requiring uint64 encoding:

link-info = [1, 4500000000, 1, 3]

CBOR: 84 01 1B 00 00 00 01 0C 38 8D 00 01 03
           ^^ uint64 marker

This validates the design decision to use unconstrained CBOR uint for link-distance.

Appendix B. Size Analysis

Table 6
Scenario Distance Total Size Size/Hop
Cislunar 400,000 km 89 bytes ~28 bytes
Mars 225,000,000 km 93 bytes ~29 bytes
Neptune 4,500,000,000 km 101 bytes ~32 bytes

Formula: TracerouteEB_size ~= 10 + (28-32 * hops) bytes

Acknowledgments

The author thanks the CCSDS SIS-DTN Working Group for their input on DTN diagnostic requirements.

Author's Address

Cheol Hea Koo
Korea Aerospace Research Institute (KARI)
Republic of Korea