Bundle Protocol (BP)
The Bundle Protocol provides datagram transport over a high-delay or disrupted network using a variety of convergence layers (TCPCL, LTPCL, etc.) to give per-hop bundle transport between BP nodes.
History
BPv6 was standardized in RFC 5050. BPv7 was standardized in RFC 9171.
Protocol dependencies
- UDPCL: The BPv6 has a trivial convergence layer which uses a bundle PDU as a UDP datagram payload. This unreliable CL has no additional framing, metadata, or flow control.
- TCPCL: The BPv6 had defined a corresponding TCPCL version 3 and BPv7 has defined a TCPCL version 4 to provide reliable transfer over low-delay (e.g. local or terresterial) data links.
- LTPCL: The BPv6 has an experimental Licklider Transmission Protocol to provide reliable transfer over high-delay and lossy data links. There is currently no disambiguation between BPv6 and v6 over LTP; only one client service ID has been allocated for "Bundle Protocol".
- BPSec: The BP uses extension Block Integrity Block (BIB) and Block Confidentiality Block (BCB) to provide block-level security.
Wireshark
The BP dissector supports extension block dissecting using sub-dissector tables and payload dissection as an administrative record or based on destination EID service identification. The dissection hierarchy looks like:
- If the bundle flag indicates Administrative payload, the "bpv7.admin" dissector is used.
- Otherwise, the destination EID is used to determine how to dissect the payload.
- For the "dtn" scheme, with a well-known scheme specific part (e.g. "dtn:none") the SSP is used with the "bpv7.payload.dtn_wkssp" dissector table.
- For the "dtn" scheme, the DTN service demux is used with the "bpv7.payload.dtn_serv" dissector table.
- For the "ipn" scheme, the IPN service number is used with the "bpv7.payload.ipn_serv" dissector table.
- Otherwise, the heuristic dissector "bpv7.btsd".
Preference Settings
The BPv7 dissector contains a heuristic dissector for block-type-specific data (BTSD) which currently uses CBOR as a fallback. This heuristic dissector applies to all BTSD, including the payload bloack data.
Example capture file
The unit test tree contains a BPv6 and BPv7 test file using separate CLs.
A BPv6 capture is in dtn_tcpclv3_bpv6_transfer.pcapng.
A BPv7/TCPCL capture is in dtn_tcpclv4_bpv7_transfer.pcapng and a BPv7/UDPCL capture with a BIB targeting the payload block is in dtn_udpcl_bpv7_bpsec_bib_admin.pcapng.
Display Filter
Show only BPv6 traffic with filter bundle
and BPv7 traffic with filter bpv7
.
Show TCPCL traffic with filter tcpcl
, LTP traffic with filter ltp
.