Internet DRAFT - draft-irtf-dtnrg-cgreb
draft-irtf-dtnrg-cgreb
Delay-Tolerant Networking Research Group E. Birrane
Internet-Draft Johns Hopkins University Applied Physics Laboratory
Intended status: Experimental October 01, 2013
Expires: April 04, 2014
Contact Graph Routing Extension Block
draft-irtf-dtnrg-cgreb-00
Abstract
This draft describes an extension block used to convey path
information in networks using Contact Graph Routing (CGR). The CGR
Extension Block (CGR-EB) captures the set of contacts comprising the
message path calculated by a CGR agent prior to forwarding a message.
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 http://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 April 04, 2014.
Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Birrane Expires April 04, 2014 [Page 1]
Internet-Draft CGR-EB October 2013
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1. Hybrid Source-Path Routing . . . . . . . . . . . . . 3
1.1.2. Graph Synchronization . . . . . . . . . . . . . . . . 3
1.1.3. Congestion Modeling . . . . . . . . . . . . . . . . . 4
1.2. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Requirements Language . . . . . . . . . . . . . . . . . . 4
2. CGR Extension Block Format . . . . . . . . . . . . . . . . . 4
3. CGR Block Processing . . . . . . . . . . . . . . . . . . . . 7
4. Processing Procedures . . . . . . . . . . . . . . . . . . . . 8
4.1. Block Validation . . . . . . . . . . . . . . . . . . . . 8
4.2. Local Graph Update . . . . . . . . . . . . . . . . . . . 9
5. Policy Considerations . . . . . . . . . . . . . . . . . . . . 10
5.1. Validation Threshold . . . . . . . . . . . . . . . . . . 11
5.2. Validation Lookahead . . . . . . . . . . . . . . . . . . 11
5.3. Block Replacement . . . . . . . . . . . . . . . . . . . . 11
5.4. Block Trimming . . . . . . . . . . . . . . . . . . . . . 12
5.5. Local Contact Replacement . . . . . . . . . . . . . . . . 12
5.6. ECC Modification . . . . . . . . . . . . . . . . . . . . 12
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.1. Normative References . . . . . . . . . . . . . . . . . . 13
8.2. Informative References . . . . . . . . . . . . . . . . . 13
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 13
1. Introduction
This document describes an extension to the Delay-Tolerant Networking
(DTN) Bundle Protocol (BP) [RFC5050] that marks bundles with routing
information from an instance of the Contact Graph Routing [CGR]
algorithm. This information establishes a both a nominal path
calculated for this bundle through the DTN as well as a snapshot of
the graph information available to the route-originating node at the
time the bundle routing information was generated [Acta].
1.1. Goals
Bundle agents may use the information in this block in one of three
ways: (1) to implement a source-path routing system in DTNs whose
dynamicism would otherwise confuse opportunistic forwarding
decisions, (2) to synchronize pieces of contact graph information
across portions of a network, and (3) to infer congestion metrics
across heavily used paths in a DTN.
Birrane Expires April 04, 2014 [Page 2]
Internet-Draft CGR-EB October 2013
1.1.1. Hybrid Source-Path Routing
The standard CGR routing algorithm is a hop-by-hop forwarding
algorithm which produces a set of plausible next-hops for a bundle in
a DTN given a source and destination node. By only persisting the
next hop, CGR must be re-run on a bundle at every hop in the network.
This is advantageous behavior in networks whose topology changes
faster than new contact graphs can be synchronized in the network.
However, this is also expensive behavior as the CGR calculations are
computationally intensive [PAPER REF], as they involve calculating
multiple paths through the network to derive plausible next hops.
Further, the opportunistic nature of CGR as a per-hop forwarding
algorithm place restrictions on the types of cost functions that may
be used to route bundles. Namely, since there is no mechanism for
carrying path information with a bundle as it moves through the DTN,
the cost function must provide some over-arching, out-of-band
information to keep the distributed algorithm from falling into
routing loops.
Alternatively, source path routing refers to the practice of encoding
the nominal message delivery path with the bundle. Since the path
computation is atomic and not spread across multiple nodes in the
network, any cost function may be selected by the network for message
routing. The path, once discovered, will be followed even if the
network topology changes at a later time, eliminating the danger of
falling into a routing loop.
Source-path routing, however, fails to capture the case when the
original, nominal path is invalidated by the dynamics of the network,
either because a link in the DTN has been lost, or is congested with
other traffic. When this occurs, a hybrid mechanism is preferred:
the nominal path is used whenever the nominal path is feasible. If,
and only if, the nominal path is unfeasible is a new path generated.
This new path replaces the old path and the bundle continues as
before.
1.1.2. Graph Synchronization
The hyrbid source-path approach requires that a downstream node not
only be able to understand the nominal path, but to evaluate it in
the context of its local contact graph. This requires that the path
information not only identify the links comprising the path, but also
critical characteristics and assumptions that held when the path was
created. This information is required to determine whether the links
still exist at the evaluating node and, if they do, that they still
have the necessary characteristics (data rate, available capacity,
end time, etc...).
Birrane Expires April 04, 2014 [Page 3]
Internet-Draft CGR-EB October 2013
This information is determined from the contact graph of the node
that populated the extension block. Downstream nodes that inspect
the extension block, beyond validation, may choose to use the
information in the extension block to update their own, local contact
graph if the link information in the extension block represents a
more recent set of information about the state of the network. This
provides the potential for a path-based synchronization mechanism.
1.1.3. Congestion Modeling
Nominal paths represent the anticipated path of a bundle through the
DTN. Since this path is only abandoned when it loses feasibility (as
opposed to more simply losing optimality) the path is expected to be
honored in all cases where the network remains relatively stable.
This provides every node in the network with a set of anticipated
hops, and associated times, for each bundle it sees. Together this
information provides a lower bound estimate on future traffic going
over downstream links.
Each node may use this path information to inform the Estimated
Capacity Consumption (ECC) of links in its own local contact graph.
This significantly provides a congestion model that is both automatic
and predicted, eliminating the need to perform congestion management
as an out-of-band management function.
1.2. Scope
1.3. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
2. CGR Extension Block Format
The CGR block conforms to sections 4.5.2 and 4.6 of [RFC5050],
contrained as follows:
o Block type code is 0xED.
o The following block processing control flag MUST be set to 1:
* Bit 0 - block must be replicated in every fragment.
The setting of other block processing control flags, where not
mandated by the Bundle Protocol specification, is an
implementation matter.
Birrane Expires April 04, 2014 [Page 4]
Internet-Draft CGR-EB October 2013
The extension block content is illustrated in Figure 1.
CGR Extension Block Format
+------+------+-----------+ +------------+
|Flags | ND | Contact 1 | | Contact ND |
| | | Parms | ... | Parms |
|(Byte)|(SDNV)| (var) | | (var) |
+------+------+-----------+-----+------------+
Figure 1
Flags
The CGR block flags identify the amount of contact parameter
information available for each of the following contact
parameters. The format of the byte is as follows.
+------+-------+----------+
| Res. | Time- | Reserved |
| Cap. | Stamp | |
+------+-------+----------+
Bit: 0 1 2 - 7
Res. Cap. Whether the residual capacity associated with each
contact is provided (1) or not (0).
Timestamp Whether the last update timestamp associated with
each contact is provided (1) or not (0).
ND
The network distance of the encoded path. This specifies the
number of contacts remaining in the block.
Contact The information about the nth contact. Contacts are listed
in order from close-to-source to close-to-destination.
Contact parameters contain the information necessary to determine if
the contact exists in the same manner at the local node and, if not,
to update the contact in the local contact graph. The parameters are
illustrated in Figure 2.
Contact Parameters
Birrane Expires April 04, 2014 [Page 5]
Internet-Draft CGR-EB October 2013
+-------+------+------+------+------+------+
| Start | End | *Res.| Data | Rx | *Def.|
| Time | Time | Cap. | Rate | Node | Time |
|(SDNV) |(SDNV)|(SDNV)|(SDNV)|(EID) |(SDNV)|
+-------+------+------+------+------+------+
Figure 2
Start Time
The UTC time of when the contact will be available, encoded
in an SDNV.
End Time
The UTC time of when the contact will stop being available,
encoded in an SDNV.
(Optional) Residual Capacity
The estimated capacity of the link, without accounting for
the bundle traveling over the link. This is measured in
bytes. The current bundle is not factored into this value,
as the contact may update the local contact graph as part of
graph synchronization but still not use the contact if an
alternate path is calculated as part of the hybrid path
verification algorithm.
Data Rate
The data rate associated with this contact, measured in bps
and encoded in an SDNV.
RX Node
The EID of the DTN node receiving transmission over this
contact. The transmitting node is inferred based on the
position of the contact parms in the block: the transmitting
node for contact N is the receiving node for contact (N-1).
(Optional) Definition Time
The UTC time when the contact was authoritatively defined by
the node populating this extension block. This value is used
to determine whether the information associated with a
particular contact in the extension block is more or less
recent than the information on the same contact in the node
local contact graph.
Birrane Expires April 04, 2014 [Page 6]
Internet-Draft CGR-EB October 2013
3. CGR Block Processing
The steps taken by a bundle agent when handling the CGR Extension
Block, is illustrated in Figure 3.
Extension Block Lifecycle
+----------+ +---------+
+-->| Block |------------------------->| Block |
| | Received | | Created |
| +----+-----+ +----+----+
| | |
| | |
| | |
| v v
| +-----------+ +-----------+ +---------+
| | Block |----->| Block |----->| Block |
| | Validated | | Optimized | | Sent |
| +-----------+ +-----------+ +----+----+
| |
+----------------------------------------------+
Figure 3
Block Created
A Bundle Protocol Agent will create a CGR-EB and insert it
into a bundle in one of two circumstances: based on policy
when a bundle is sources at the agent, or based on policy
when a received bundle fails to validate an existing CGR-EB.
When creating a new block, the path is always specified as
from the current node onward to the bundle destination.
Block Received
Upon receiving a bundle with a CGR-EB, a BPA must validate
the contents of the block to ensure that the contacts encoded
within remain feasible. Before the block may move to the
"validated" state, it must survive the block validation
procedure. If the block fails to validate, then it must be
discarded and a new block created from the local node onward.
The validation procedure may validate all contacts along the
specified path, or smaller number of contacts looking into
the future.
Block Validated
When the block has been validated, it indicates that at least
the next N hops have been validated, based on the look-ahead
Birrane Expires April 04, 2014 [Page 7]
Internet-Draft CGR-EB October 2013
associated with the validation procedure. All contacts in
the block that represent the portion of the path prior to the
current BPA are assumed correct since they always represent
the path taken to the current BPA. Based on the validated
contacts, the local graph may be updated using the Local
Graph Update procedure.
Block Optimized
Once the path in the block has been validated, a local
optimization may be made to determine whether there is a
faster way to get to the next hop. Since this optimization
only considers ways to get to the next hop in the path, this
does not risk falling into a routing loop.
Block Sent
The local BPA may add the CGR-EB to any outgoing bundle in
accordance will associated processing flags. There is no
requirement for positioning of the block within the bundle.
The only constraint on the bundle is that only a single CGR-
EB may exist in a bundle at any time.
4. Processing Procedures
This section identifies the pseudo-code associated with the core
processing procedures.
4.1. Block Validation
The validate block procedure examines a subset of contacts in the
block, looks up their associated information from the local contact
graph, and matches them within some tolerance. There is no need to
check contacts that were traversed prior to reaching the current BPA.
The core variables and functions that comprise this procedure as
listed as follows.
LOOKAHEAD
The policy associated with a BPA may choose to evaluate only
the next hop in the path, the entire path, or some number of
hops in-between.
C[i]
The variable C[i] represents the ith set of contact
parameters encoded in the block.
FIND_CONTACT
Birrane Expires April 04, 2014 [Page 8]
Internet-Draft CGR-EB October 2013
The BPA must specify a look-up function that accepts a set of
contact parameters from a block and must produce the contact
in the local contact graph that matches these parameters,
within some specified tolerance.
The pseudo-code listing is as follows.
PROC VALIDATE_BLOCK()
MAX = MIN[ND,LOOKAHEAD]
MIN = Index of contact terminating in local node
FOR I = MIN..MAX
IF I > 0 THEN
CUR_TX = C[I-1].rxNode
ELSE
CUR_TX = Previous hop for this bundle.
END IF
LC = FIND_CONTACT(C[I].start, C[I].end, CUR_TX, C[I].rxNode)
IF LC = NIL
RETURN FALSE
END IF
IF LC does not have capacity for the bundle
RETURN FALSE
END IF
END FOR
RETURN TRUE
END PROC
4.2. Local Graph Update
The local graph update procedure examines those validated contacts in
the extension block and compares them to the contents of the local
contact graph. Two levels of update are performed by this function:
(1) newer contacts parameters from the block update contacts in the
graph and (2) the estimated capacity associated with transmitting the
bundle is propagated through the local contact graph.
The key functions and variables used by this procedure are as
follows:
Birrane Expires April 04, 2014 [Page 9]
Internet-Draft CGR-EB October 2013
NC The number of contacts from the extension block, starting
with the first in the block, that have been validated. Note
that all contacts in the block representing hops prior to the
current node are considered valid.
B The bundle being sent.
MAX The number of contacts inthe extension block.
COPY_PARAMS This helper function copies contact parameters from the
extension block into the local contact.
UPDATE_ECC This helper function reduces the contact's estimated
capacity consumption value by the anticipated capacity
necessary to transmit the bundle. This function is optional
to implement and may simply return an unupdated ECC value.
The pseudo-code listing is as follows.
PROC UPDATE_LOCAL_GRAPH(NC, B)
FOR I = 0..MAX
IF I > 0 THEN
CUR_TX = C[I-1].rxNode
ELSE
CUR_TX = Previous hop for this bundle.
END IF
LC = FIND_CONTACT(C[I].start, C[I].end, CUR_TX, C[I].rxNode)
IF I <= NC THEN
IF LC.Timestamp < C[I].Timestamp THEN
COPY_PARAMS(LC, C[I])
END IF
END IF
UPDATE_ECC(LC, B)
END FOR
END PROC
5. Policy Considerations
This section identifies policy decisions available to BPAs processing
CGR blocks and provides non-normative guidance on the impact of these
decisions.
Birrane Expires April 04, 2014 [Page 10]
Internet-Draft CGR-EB October 2013
5.1. Validation Threshold
When attempting to match contact parameters in the CGR block with a
contact in the local contact graph there may be minor differences
between the paramater values. Differences in transmit and receive
node should not be tolerated, but minor differences in start and end
times and residual capacites may not be significant enough to claim
that a contact match was not made. The definition of matching
thresholds, and how they are applied when matching contacts is an
implementation matter left to a particular implementing bundle agent.
However, some thresholds shoudl be set for start times, end times,
and residual capacity.
5.2. Validation Lookahead
The block validation procedure has the option of validating every
future contact encoded in the block path or looking at some subset of
future contacts.
Validating the entire encoded path has the benefit of learning, very
early, whether or not a problem exists with routing the bundle as
originally planned at the bundle source. This is desirable is
relatively stable network topologies where even far-down-stream path
problems can be worked through by the local node's CGR algorithm.
For example, stable networks that evaluate a path based on congestion
forcasting may prefer vlaidating the entire remaining bundle path at
each hop in the network.
Validating only the immediate next hop, or some subset of hops, will
only ensure that the bundle can achieve incremental progress along
its path. This is desirable behavior in networks where local nodes
have more current information relating to their immediate N-hop
neighbors, where N is the coded lookahead value. In this
configuration problems with the bundle path are dealt with when they
present an immediate routing problem under the assumption that the
nodes closest to the path problem will have th emost up-to-date
information on how to best route around the problem.
5.3. Block Replacement
When a CGR block fails to validate, the local BPA must make the
decision to either abandon path encoding altogether or generate a new
block. It is recommended that the block be replaced in networks
whose routing cost functions are otherwise prone to routing loops.
However, networks that have periods of high topological change may
wish to abandon path routing until such time as the network
stabilizes. The detection of topological change and related
stabilization are implementation matters of the network.
Birrane Expires April 04, 2014 [Page 11]
Internet-Draft CGR-EB October 2013
5.4. Block Trimming
The validated CGR block may be sent to the next hop intact, or
trimmed. The value of sending the CGR block intact to the next hop
is that the previously-used contacts may be used to inform the local
graph update procedure for downstream nodes. However, if the local
contact graph update procedure is not to be used in the network, or
only used for to-be-traversed contacts, then the block size may be
reduced by trimming old contacts.
There is no change to the CGR block format when choosing to trim
contacts, as long as the remaining network diamater variable is
updated to reflect the new contact value.
5.5. Local Contact Replacement
Local BPAs must decide whether to use the information in the CGR
block to update contacts in the local contact graph. This requires
the ability to timestamp contacts in the block and in the local
contact graph. If the timestamp and residual capacity fields of the
contacts are not included in the block there is no additional
information outside of contact definition to update in the local
graph.
5.6. ECC Modification
The decision to update the local contact graph with the ECC
associated with the path of the bundle should reflect the confidence
that the bundle will actually follow the prescribed path. Much like
the lookahead decision when validating paths, network characteristics
must be considered when applying this update. Very stable topologies
may wish to update ECCs in the local contact graph for the entire
path. More dynamic topologies may wish to only update the ECC for
the next N hops.
6. IANA Considerations
This memo includes no request to IANA.
7. Security Considerations
Transport security is handled by the transport layer, for example the
Bundle Security Protocol [RFC6257] when using the Bundle Protocol
[RFC5050].
8. References
Birrane Expires April 04, 2014 [Page 12]
Internet-Draft CGR-EB October 2013
8.1. Normative References
[CGR] Burleigh, S., "Contact Graph Routing ", draft-burleigh-
dtnrg-cgr-01, July 2010.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol
Specification", RFC 5050, November 2007.
[RFC6257] Symington, S., Farrell, S., Weiss, H., and P. Lovell,
"Bundle Security Protocol Specification", RFC 6257, May
2011.
8.2. Informative References
[Acta] Birrane, E., Burleigh, S., and N. Kasch, "Analysis of the
contact graph routing algorithm: Bounding interplanetary
paths ", Acta Astronautica, Volume 75, Pages 108-119, ISSN
0094-5765, June-July 2012.
[IJAHUC] Birrane, E., "Building Routing Overlays in Disrupted
Networks: Inferring Contacts in Challenged Sensor
Internetworks ", International Journal of Ad Hoc and
Ubiquitous Computing (IJAHUC) Special Issue on Algorithms
and Protocols for Opportunistic and Delay Tolerant
Networks, Volume 11, No. 2/3, Pages 139-156, 2012.
[WD] Birrane, E., "Improving Graph-Based Overlay Routing in
Delay Tolerant Networks. ", IFIP Wireless Days (WD 2011),
October 2011.
Author's Address
Edward J. Birrane
Johns Hopkins University Applied Physics Laboratory
11100 Johns Hopkins Road
Laurel , Maryland 20723
USA
Phone: +1 410 778 7423
Email: Edward.Birrane@jhuapl.edu
Birrane Expires April 04, 2014 [Page 13]