170 likes | 346 Views
DTN Bundle Spec Updates IETF63 – 02-Aug-05. Delay Tolerant Networking Research Group Kevin Fall ( kfall@intel.com ) (work mostly by S. Burleigh, K. Scott, and others) http://www.dtnrg.org. draft-irtf-dtnrg-bundle-spec-03. now on version 4 about 50 pages, including:
E N D
DTN Bundle Spec UpdatesIETF63 – 02-Aug-05 Delay Tolerant Networking Research Group Kevin Fall (kfall@intel.com) (work mostly by S. Burleigh, K. Scott, and others) http://www.dtnrg.org
draft-irtf-dtnrg-bundle-spec-03 • now on version 4 • about 50 pages, including: • definitions, services provided, abstract service interface, message formats, forwarding/error generating/fragmentation/reassembly/custody-transfer procedures • requirements of CL implementations • Not covered: CL internals, forwarding, routing, security
Nodes, EIDs, Names • General format [see RFC3986]: • <scheme-name>:<SSP (scheme-specific part)> • limit to 1023 bytes • strings stored in ‘dictionary’ in primary header • 2-byte offset (to scheme, to SSP) • (IANA keeps registry of official scheme names) • bp0 (base scheme) format: • //<host>[:port]/<app-tag> • used for Internet (IPv4) case • likely to evolve or be replaced (its sort of a placeholder) • none scheme format • used for custody bundles w/no custodian • (e.g. when source cannot support custody)
Nodes and EIDs 3 Node: C 4 Bundle Protocol Agent Admin Element 2 B Bundle Protocol Agent CLA X CLA Y CLA Z E A
Bundle construction • Mandatory headers: primary + payload • Primary header contains: • version, processing and CoS flags, time, life • source, destination, report-to, custodian EIDs • dictionary (EIDs are by reference) • Payload header contains: • length of payload, processing flags, payload always first always last
e.g. a fragment Primary Bundle Header +----------------+----------------+----------------+----------------+ | Version | Proc. Flags | COS Flags |Header length(*)| +----------------+----------------+----------------+----------------+ | Destination scheme offset | Destination SSP offset | +----------------+----------------+----------------+----------------+ | Source scheme offset | Source SSP offset | +----------------+----------------+----------------+----------------+ | Report-to scheme offset | Report-to SSP offset | +----------------+----------------+----------------+----------------+ | Custodian scheme offset | Custodian SSP offset | +----------------+----------------+----------------+----------------+ | | + Creation Timestamp (8 bytes) + | | +---------------------------------+---------------------------------+ | Lifetime | +----------------+----------------+----------------+----------------+ | Dictionary length (**) | +----------------+----------------+----------------+----------------+ | Dictionary byte array (variable) | +----------------+----------------+---------------------------------+ | [Fragment offset (***)] | +----------------+----------------+---------------------------------+ | [Total application data unit length (****)] | +----------------+----------------+---------------------------------+ SDNVs present if a fragment
Bundle Payload Header +----------------+----------------+----------------+----------------+ | Header type | Proc. Flags | Header length(*****) | +----------------+----------------+----------------+----------------+ | | | Bundle Payload (variable) | | | / / / / | | +-------------------------------------------------------------------+ required for all extension headers
SDNVs • Self-Delimiting Numeric Values: • support unforeseen needs • “compact” encoding for wide range of integer values • similar to ASN.1 encoding of object ID arcs • no hard upper limit on values • Value comprises bytes 1..N • MSb in byte N is 0; the rest are 1’s • value is concatenation of 7 LSb’s in bytes (1..N) • can handle ~16-30 bit values “well” • also allows you to carry much larger values • We are not completely wed to this, but …
SDNV Example • 0xABC (1010 1011 1100) is encoded as follows: • 10010101 00111100 • 0x1234 (0001 0010 0011 0100) is encoded as: • 10100100 00110100 • 0x7f (0111 1111) is encoded as: • 01111111 • 0x8f (1000 1111) is encoded as: • 10000001 00001111
Processing flags • Bundle primary header proc. flags • bundle is a fragment • ADU is an ‘administrative record’ • bundle must not be fragmented • Other header proc. flags • header must be replicated on fragmentation • send status report of header proc. problem • discard bundle if header proc. problem • (allows some diag for working w/new hdrs)
Report Requests +---------+-------------------------------------------+ | Value | Byte Meaning | +=========+============================================+ | 00000 | No delivery records requested. | +---------+--------------------------------------------+ | 00001 | Request reporting of bundle reception. | +---------+--------------------------------------------+ | 00010 | Request custody acceptance reporting. | +---------+--------------------------------------------+ | 00100 | Request reporting of bundle forwarding. | +---------+--------------------------------------------+ | 01000 | Request reporting of bundle delivery. | +---------+--------------------------------------------+ | 10000 | Request reporting of bundle deletion. | +---------+--------------------------------------------+
Custody Transfer • Custody requested and required • API may include requested/required • source must accept custody if ‘required’ set • custody transfer requested in bundles • custody moved along by signals • Custody transfer fails across ‘diodes’ • but may indicate trial across diode • Custody may be taken if not requested
Processing Admin Records • Bundle status reports (BSRs) • sent to ‘report-to’ EID • reception, custody accepted, forwarded, delivery, deletion • Signals • custody transfer succeeded/failed • (current custodian EID updated) • Open issues • What do you get back on an error? • Should it be like ICMP?
Convergence Layers • Services required of a CL • sending to/toward all nodes in an EID • delivering received bundles to the agent • Abstract API functions • Requests: send.request • Indications: send.report, bundle.indication • Params: receiving EID, bundle, bundle length, send result
General Processing (1) • Processing a Transmission Request • sent to ‘report-to’ EID • Bundle dispatching • Bundle forwarding • Forwarding ‘contraindicated’ • Forwarding failed • Bundles that expire • Bundle reception
General Processing (2) • Local bundle delivery • Fragmentation / Reassembly • Custody Transfer