Network Working Group S. Burleigh Internet-Draft Jet Propulsion Laboratory, Intended status: Experimental California Institute of Expires: January 9, 2011 Technology July 8, 2010 Contact Graph Routing draft-burleigh-dtnrg-cgr-01 Abstract This document describes Contact Graph Routing (CGR), a procedure for computing efficient Delay-Tolerant Networking (DTN) bundle forwarding routes between source and destination endpoints when connectivity between pairs of neighboring bundle protocol agents in the network is scheduled and episodic rather than continuous. 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]. 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 January 9, 2011. Copyright Notice Copyright (c) 2010 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 Burleigh Expires January 9, 2011 [Page 1] Internet-Draft CGR July 2010 (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. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Specification . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1. Architectural Considerations . . . . . . . . . . . . . . . 5 2.2. The Contact Plan . . . . . . . . . . . . . . . . . . . . . 6 2.3. The Contact Graph . . . . . . . . . . . . . . . . . . . . 6 2.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 7 2.4.1. Well-Formed Routes . . . . . . . . . . . . . . . . . . 7 2.4.2. Expiration time . . . . . . . . . . . . . . . . . . . 7 2.4.3. OWLT Margin . . . . . . . . . . . . . . . . . . . . . 7 2.4.4. Last Moment . . . . . . . . . . . . . . . . . . . . . 8 2.4.5. Capacity . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.6. Estimated Capacity Consumption . . . . . . . . . . . . 8 2.4.7. Residual Capacity . . . . . . . . . . . . . . . . . . 9 2.4.8. Plausible Opportunity . . . . . . . . . . . . . . . . 9 2.4.9. Plausible Routes . . . . . . . . . . . . . . . . . . . 9 2.4.10. Forfeit Time . . . . . . . . . . . . . . . . . . . . . 9 2.4.11. Network distance . . . . . . . . . . . . . . . . . . . 10 2.4.12. Excluded Neighbors . . . . . . . . . . . . . . . . . . 10 2.4.13. Critical Bundles . . . . . . . . . . . . . . . . . . . 10 2.5. Dynamic Route Computation Algorithm . . . . . . . . . . . 11 2.5.1. Initialization . . . . . . . . . . . . . . . . . . . . 11 2.5.2. Contact Review Procedure . . . . . . . . . . . . . . . 11 2.5.3. Forwarding Decision . . . . . . . . . . . . . . . . . 13 2.6. Exception Handling . . . . . . . . . . . . . . . . . . . . 14 3. Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 5. Security Considerations . . . . . . . . . . . . . . . . . . . 16 6. Normative References . . . . . . . . . . . . . . . . . . . . . 17 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 17 Burleigh Expires January 9, 2011 [Page 2] Internet-Draft CGR July 2010 1. Introduction This document describes Contact Graph Routing (CGR), a set of procedures for computing efficient routes by which Delay-Tolerant Networking (DTN) Bundle Protocol (BP) [RFC5050] "bundles" may be forwarded between source and destination BP endpoints when connectivity between pairs of neighboring bundle protocol agents (BPAs) in the network is scheduled and episodic rather than continuous. BP is designed to enable end-to-end forwarding of a unit of user data, encapsulated in a bundle, from one BP endpoint to another, possibly indirectly through the agency of intermediate BPAs that relay the bundle among themselves toward the destination endpoint. The forwarding of bundles through a DTN-based network differs in several ways from the forwarding of packets through an IP-based network. In an IP-based network: o Connectivity -- the ability of topologically adjacent ("neighboring") network nodes to exchange packets -- is typically continuous throughout the network. Lapses in connectivity are anomalous and may be interpreted as changes in topology. o Signal propagation latencies are very small. This fact, coupled with continuous connectivity, ensures that the rate at which information on changes in connectivity may be propagated through the network far exceeds the rate at which those changes occur. A network based on DTN is different: o There is no expectation of continous connectivity throughout the network. Lapses in connectivity may be routine, lengthy, and recurring; they should not be interpreted as changes in topology. o Signal propagation latencies may be large. This fact, coupled with routinely punctuated connectivity, means that the rate at which information on changes in connectivity may be propagated through the network may be far lower than the rate at which those changes occur. These differences imply that the constraints within which forwarding routes are computed in a DTN-based network are different from those within which IP routes are computed, so route computation procedures must be different. In particular, IP routing at each router can be based on a local understanding of current connectivity in the network that may be Burleigh Expires January 9, 2011 [Page 3] Internet-Draft CGR July 2010 assumed to be generally accurate and generally stable over time. The route to a given destination host, once computed, may be stored in a routing table for future reference and will only need to be changed upon the arrival of new connectivity information -- conveyed by routing protocol messages generated immediately in response to detected changes in connectivity -- that invalidates that route. DTN routing enjoys no such advantages. The potential delay in the arrival of information regarding connectivity changes makes all such information potentially obsolete; a BPA that relied solely on this flow of information might never have a fully accurate understanding of current connectivity in the network. Yet BPAs that must compute routes in a DTN-based network have no alternative but to rely on that understanding, imperfect as it may be. Each BPA must therefore augment its model of connectivity in the network by other means. Some elements of the model may simply be asserted by network management, i.e., as static routes. Some changes in proximate DTN network connectivity may be discovered in real time. Other connectivity changes may be predicted on a probabilistic basis. Contact Graph Routing is designed for use in networks where changes in connectivity are planned and scheduled, rather than predicted, discovered, or contemporaneously asserted. Scheduled changes in connectivity characterize a number of potential DTN application environments: o Episodes of communication between robotic spacecraft in interplanetary space and ground tracking stations on Earth are typically scheduled weeks or months before they occur. o The beginning and end of each communication opportunity between an orbiting spacecraft and a communication asset on a planetary surface -- either Earth or another planet -- can readily be computed from known orbital elements. o Power-conserving motes of sensor webs may communicate on infrequent, fixed intervals established by network configuration. Where changes in connectivity are scheduled, a global "contact plan" of all such events may be distributed in advance to all BPAs, enabling each BPA to have a theoretically accurate understanding of connectivity in the network at any specified moment. The Contact Graph Routing procedures compute bundle forwarding decisions from this time-varying model of network connectivity. Burleigh Expires January 9, 2011 [Page 4] Internet-Draft CGR July 2010 2. Specification 2.1. Architectural Considerations As discussed in the Bundle Protocol (BP) specification [RFC5050], the source and destination of each bundle are BP endpoints, identified by BP endpoint ID (EID) strings that are URIs. However, the actual agents of bundle origination, forwarding, and delivery are instances of Bundle Protocol procedures implementation (bundle protocol agents) that are installed at physical computational entities termed "nodes". For bundle forwarding purposes, a BP endpoint only exists so long as at least one node is "registered" in that endpoint: only the operation of the BPA at a node can cause a bundle to be delivered to an endpoint, and a BPA can only deliver a bundle to an endpoint within which that BPA's host node is registered. That is, the existence of a node is a precondition for the existence of an endpoint, and arrival of a bundle at a node's BPA is a precondition for the delivery of that bundle to an endpoint. Moreover, it is not unusual for a single node to be registered in multiple endpoints, each serving the needs of a different DTN application operating at that node. When this is the case, the arrival of a bundle at some single BPA is a precondition for the delivery of that bundle to any of a potentially large number of endpoints. For these reasons, the design of CGR is based on the concept of forwarding each bundle to the node in which the bundle's destination endpoint is registered (rather than directly to the destination endpoint), leaving to the node's BPA the task of final delivery. Execution of this concept requires that nodes be recognized as first- class BP architectural elements, which must be uniquely identified in order to ensure accurate bundle delivery to the correct destination endpoints. CGR assumes that all nodes in the network are identified by unique "node numbers" as discussed in the specification for Compressed Bundle Header Encoding (CBHE). When CGR is used to forward a bundle to an endpoint identified by a CBHE-conformant EID, the destination node number can simply be extracted from the EID. CGR can also be used to forward bundles to an endpoint identified by a non-CBHE-conformant EID, but only if that EID can somehow be mapped to the appropriate destination node number; mechanisms for accomplishing this mapping are beyond the scope of this specification. Burleigh Expires January 9, 2011 [Page 5] Internet-Draft CGR July 2010 Note that the design of CGR precludes its use for routing a bundle to a "multicast" endpoint: by definition, a multicast endpoint ID cannot be mapped to the number identifying a single node. CGR can only be used for forwarding bundles to "singleton" endpoints. 2.2. The Contact Plan CGR relies on accurate contact plan information, provided in the form of contact plan messages. The details of a protocol for distributing contact plan information to the BPAs that require it have yet to be defined; that protocol is beyond the scope of this document. However, a working notion of contact plan message contents will help to clarify the CGR procedures. Contact plan messages are of two types: contact messages and range messages. Each contact message has the following content:: o The starting UTC time of the interval to which the message pertains. o The stop time of this interval, again in UTC. o The Transmitting (A) node number. o The Receiving (B) node number. o The planned rate of transmission from node A to node B over this interval, in bytes per second. Each range message has the following content: o The starting UTC time of the interval to which the message pertains. o The stop time of this interval, again in UTC. o Node number A. o Node number B. o The anticipated distance between A and B over this interval, in light seconds. 2.3. The Contact Graph Given a complete contact plan, the BPA at a node can construct a "contact graph" data structure. The contact graph constructed locally at a given node contains, for _every other_ node D in the Burleigh Expires January 9, 2011 [Page 6] Internet-Draft CGR July 2010 network: o A list of "xmit" objects encapsulating contact start time, stop time, transmitting node number, and data transmission rate, derived from all contact messages whose receiving node is node D. This list is ordered by stop time. o A list of "origin" objects encapsulating transmitting node number S and that node's presumed current distance from node D, based on the information in range messages. This information must be updated as time passes: stored range messages must be used to add new origin objects to the contact graph as their start times are reached, and xmit and origin objects whose stop times have been reached must be purged from the contact graph. 2.4. Terminology 2.4.1. Well-Formed Routes A well-formed route for given bundle is defined as a sequence of contacts such that the first contact is from the bundle's source node to some other node, every subsequent contact in the sequence is from the receiving node of the prior contact to some other node, the last contact in the sequence is from some node to the bundle's final destination node, and the route contains no loops - i.e., no two contacts in the sequence involve transmission from the same node and no two contacts in the sequence involve transmission to the same node. 2.4.2. Expiration time Every bundle transmitted via DTN has a time-to-live (TTL), the length of time after which the bundle is subject to destruction if it has not yet been delivered to its destination. The expiration time of a bundle is computed as its creation time plus its TTL. When computing the next-hop destination for a bundle that the local bundle agent is required to forward, there is no point in selecting a route that can't get the bundle to its final destination prior to the bundle's expiration time. 2.4.3. OWLT Margin One-way light time (OWLT) - that is, distance - is obviously a factor in delivering a bundle to a node prior to a given time. OWLT can actually change during the time a bundle is en route, but route computation becomes intractably complex if we can't assume an OWLT "safety margin" - a maximum delta by which OWLT between any pair of Burleigh Expires January 9, 2011 [Page 7] Internet-Draft CGR July 2010 nodes can change during the time a bundle is in transit between them. We assume that the maximum rate of change in distance between any two nodes in the network is about 150000 miles per hour, which is about 40 miles per second. (This was the speed of the Helios spacecraft, the fastest man-made object launched to date.) At this speed, the distance between any two nodes that are initially separated by a distance of N light seconds will increase by a maximum of 40 miles per second of transit. This will result in data arrival no later than roughly (N + Q) seconds after transmission, where the "OWLT margin" value Q is (40 * N) divided by 186000, rather than just N seconds after transmission as would be the case if the two nodes were stationary relative to each other. When computing the expected time of arrival of a transmitted bundle we simply use N + Q, the most pessimistic case, as the anticipated total in-transit time. 2.4.4. Last Moment The last moment for sending a bundle during a given contact such that it will arrive at the receiving node prior to some deadline is computed as the deadline minus the sum of (a) the current one-way light time N between the contact's transmitting and receiving nodes (which can be obtained from the origin object for the transmitting node, in the receiving node's list of origins) and (b) the applicable OWLT margin for N, as defined above. If the contact's start time is after the last moment for the deadline, then clearly no transmission whatsoever that is initiated during that contact can be assured of getting the bundle to the contact's receiving node prior to the deadline. 2.4.5. Capacity The capacity of a contact is the product of its data transmission rate (in bytes per second) and its duration (stop time minus start time, in seconds). 2.4.6. Estimated Capacity Consumption The size of a bundle is the sum of the sizes of all blocks of the bundle including the payload block, but bundle size is not the only lien on the capacity of a contact. The total estimated capacity consumption (or "ECC") for a bundle that is queued for transmission over some convergence-layer (CL) protocol channel is a more lengthy computation. For each recognized CLprotocol, we can estimate the number of bytes of "overhead" (that is, data that serves the purposes of the CL protocol itself rather than the user application that is using it) for each frame of CL protocol transmission. If the CL protocol stack were UDP/IP over the Internet, for example, we might estimate the CL overhead per frame to be 100 bytes, allowing for the Burleigh Expires January 9, 2011 [Page 8] Internet-Draft CGR July 2010 nominal sizes of the UDP, IP, and Ethernet or SONET overhead for each IP packet. We can estimate the number of bundle bytes per CL protocol frame as the total size of each frame less the per-frame CL overhead. Continuing the example begun above, we might estimate the number of bundle bytes per frame to be 1400, which is the standard MTU size on the Internet (1500 bytes) less the estimated CL overhead per frame. We can then estimate the total number of frames required for transmission of a bundle of a given size: this number is the bundle size divided by the estimated number of bundle bytes per CL protocol frame, rounded up. The estimated total CL overhead for a given bundle is, then, the per-frame CL overhead multiplied by the total number of frames required for transmission of a bundle of that size. Finally, the ECC for that bundle can be computed as the sum of the bundle's size and its estimated total CL overhead. 2.4.7. Residual Capacity The residual capacity of a given contact between the local node and one of its neighbors, as computed for a given bundle, is the sum of the capacities of that contact and all prior scheduled contacts between the local node and that neighbor, less the sum of the ECCs of all bundles with priority equal to or higher than the priority of the subject bundle that are currently queued for transmission to that neighbor. 2.4.8. Plausible Opportunity A plausible opportunity for transmitting a given bundle to some neighboring node is defined as a contact whose residual capacity is at least equal to the bundle's ECC. That is, if the capacity of a given contact is already fully subscribed, when computing routes for the next bundle there is no purpose served by assuming transmission during that contact. 2.4.9. Plausible Routes A plausible route for a given bundle is a well-formed route whose constituent contacts are all plausible transmission opportunities such that transmission of the bundle during each contact can occur before the last moment for that contact's applicable deadline. The applicable deadline for the last contact in the route is the bundle's expiration time; the applicable deadline for each preceding contact is the end of that contact. 2.4.10. Forfeit Time The forfeit time for a plausible route is the time by which the subject bundle must be transmitted from the local node to a Burleigh Expires January 9, 2011 [Page 9] Internet-Draft CGR July 2010 neighboring node in order to have any chance of taking that route. Typically it is the stop time of the first contact in the route (the contact between the local node and its neighbor). However, it is possible for the first contact in a route to be a continuous contact, in which case the actual forfeit time may be the stop time of a downstream contact that starts after the start of the first contact but ends before the first contact stops. So, more generally, the forfeit time for a route is the earliest stop time among all contacts in the route. 2.4.11. Network distance The network distance for a plausible route is the number of intermediate forwarding nodes that will be utilized in conveying the bundle to the destination node from the node at which route computation is being performed. 2.4.12. Excluded Neighbors A neighboring node C that refuses custody of a bundle destined for some remote node D is termed an excluded neighbor for (that is, with respect to computing routes to) D. So long as C remains an excluded neighbor for D, no bundles destined for D will be forwarded to C - except that occasionally (once per lapse of the RTT between the local node and C) a custodial bundle destined for D will be forwarded to C as a "probe bundle". C ceases to be an excluded neighbor for D as soon as it accepts custody of a bundle destined for D. 2.4.13. Critical Bundles A Critical bundle is one that absolutely has got to reach its destination and, moreover, has got to reach that destination as soon as is physically possible. For ordinary non-Critical bundles, the CGR dynamic route computation algorithm uses the contact graph to calculate which of the plausible routes to the bundle's final destination is determined to be "best" (as defined below). It then inserts the bundle into the outbound transmission queue for transmission to the neighboring node that is the first step along that route. It is possible, though, that due to some unforeseen delay the selected route will turn out to be less successful than another route that was not selected: the bundle might arrive later than it would have if another route had been selected, or it might not even arrive at all. For Critical bundles, the CGR dynamic route computation algorithm causes the bundle to be inserted into the outbound transmission queues for transmission to all neighboring nodes that are on Burleigh Expires January 9, 2011 [Page 10] Internet-Draft CGR July 2010 plausible routes to the bundle's final destination. The bundle is therefore guaranteed to travel over the most successful route, as well as over all other plausible routes. Note that this may result in multiple copies of a Critical bundle arriving at the final destination. Note also that designation of a bundle as Critical is not addressed in the base Bundle Protocol specification, but it is supported by the Extended Class of Service (ECOS) extension block specification. 2.5. Dynamic Route Computation Algorithm 2.5.1. Initialization We start the route computation algorithm by setting destination variable D to the bundle's final destination node number, setting "deadline" variable X to the bundle's expiration time, creating an empty list of Proximate Nodes to send to, initializing forfeit time to infinity, initializing network distance to zero, and creating a list of Excluded Nodes, i.e., nodes through which we will *not* compute a route for this bundle. The list of Excluded Nodes is initially populated with: o the node from which the bundle was directly received (so that we avoid cycling the bundle between that node and the local node) - unless the Dynamic Route Computation Algorithm is being re-applied due to custody refusal as discussed later; o all excluded neighbors for the bundle's final destination node. Then we invoke the Contact Review Procedure as described below. 2.5.2. Contact Review Procedure 1. First append node D to the list of Excluded Nodes, to prevent routing loops. (We don't want to re-compute routes through D in the course of computing routes for the intermediate nodes on any path to D.) 2. Then, for each xmit m in node D's list of xmits (in descending order of transmission stop time): A. If either the current time or m's start time is after the last moment T (a function of m) for deadline X, then skip this xmit. B. Otherwise: Burleigh Expires January 9, 2011 [Page 11] Internet-Draft CGR July 2010 1. If D is the final destination node: A. Set projected delivery time on this path to m's stop time. 2. If m's transmitting node S is the local node (that is, D is a neighbor of the local node): A. Compute the ECC of the bundle, assuming transmission via the local node's outduct to D. B. If m's residual capacity is less than the computed ECC, then skip this xmit. C. Otherwise, if D is already in the list of Proximate Nodes to send this bundle to: a. If the path's projected delivery time is less than the projected delivery time currently noted for D, change to the new projected delivery time. b. If the path's projected delivery time is the same as the one that's currently noted for D but its network distance is less than the network distance currently noted for D, change to the new network distance. D. Otherwise: 1. Add D to the list of Proximate Nodes. 2. Note the path's projected delivery time and network distance in the event that the bundle is queued for transmission to D. 3. Otherwise: A. If S is already in the list of Excluded Nodes, then skip this xmit. B. Otherwise: 1. If m's stop time is less than the forfeit time computed so far for this path: A. Set the forfeit time to m's stop time. Burleigh Expires January 9, 2011 [Page 12] Internet-Draft CGR July 2010 2. Compute estimated forwarding latency L as twice the size of the bundle, divided by the data transmission rate for xmit m. (This value is used to allow for the time needed by node S simply to receive the bundle from its origin, queue it for transmission, and re-radiate it.) 3. Invoke the Contact Review Procedure again, recursively, but with destination variable D now set to S, with network distance increased by 1, and with deadline variable X set to either T or the time that is L seconds before the stop time of xmit m, whichever is earlier. 3. Finally, remove D from the list of Excluded Nodes and let the forfeit time and network distance revert to their previous values (unraveling the recursion stack). 2.5.3. Forwarding Decision At this point, each member of the Proximate Nodes list is a neighboring node to which we can forward the bundle in the expectation that one of that node's planned contacts will enable conveyance of the bundle on a plausible route toward its final destination. If the list of Proximate Nodes is empty, then CGR has been unable to compute a route that can convey this bundle to its final destination node prior to expiration of the bundle. If the list of Proximate Nodes is non-empty: 1. If the bundle is Critical, then we now insert the bundle into the appropriate outbound transmission queue (depending on priority) for every Proximate Node in the list. 2. Otherwise (the bundle is non-critical, so we must select only a single Proximate Node for transmission): 1. We insert the bundle into the appropriate outbound transmission queue (depending on priority) of the Proximate Node that is the receiving node for the first contact on the "best" plausible route. Selection of the "best" plausible route is a network configuration matter. A variety of criteria might be considered: Burleigh Expires January 9, 2011 [Page 13] Internet-Draft CGR July 2010 o Nominally, we select the route starting with the Proximate Node that has the earliest associated projected delivery time. In the event of a tie among multiple Proximate Nodes, we select whichever one of those nodes has the smallest associated network distance. In the event that multiple Proximate Nodes are still tied for "best", we arbitrarily choose the one with smallest node number, just to assure consistency in route computation through the network (e.g., to avoid routing loops). o Routes that traverse specific nodes may have associated network- specific cost functions. In this case, we might alternatively judge the route that has the lowest associated net cost to be best. 2.6. Exception Handling Conveyance of a bundle from source to destination through a DTN-based network can fail in a number of ways, many of which are best addressed by means of reliability mechanisms such as BP's custodial retransmission and LTP. Failures in Contact Graph Routing, specifically, occur when the expectations on which routing decisions are based prove to be false. These failures of information fall into two general categories: contact failure and custody refusal. Contact Failure: A scheduled contact between some node and its neighbor on the end-to-end route may be initiated later than the originally scheduled start time, or be terminated earlier than the originally scheduled stop time, or be canceled altogether. Alternatively, the available capacity for a contact might be overestimated due to, for example, diminished link quality resulting in unexpectedly heavy retransmission at the convergence layer. In each of these cases, the anticipated transmission of a given bundle during the affected contact may not occur as planned: the bundle might expire before the contact's start time, or the contact's stop time might be reached before the bundle has been transmitted. For a non-Critical bundle, we may handle this sort of failure by means of a timeout: if the bundle is not transmitted prior to the forfeit time for the selected Proximate Node, then the bundle MAY be removed from its outbound transmission queue and the Dynamic Route Computation Algorithm re-applied to the bundle so that an alternate route can be computed. Contact Refusal: A node that receives a bundle may find it impossible to forward it, for any of several reasons: it may not have enough storage capacity to hold the bundle, it may be unable to compute a forward route for the bundle, etc. Such bundles are simply discarded, but discarding any such bundle that is marked for custody transfer will cause a custody refusal signal to be Burleigh Expires January 9, 2011 [Page 14] Internet-Draft CGR July 2010 returned to the bundle's current custodian. When the affected bundle is non-Critical, the node that receives the custody refusal MAY re-apply the Dynamic Route Computation Algorithm to the bundle so that an alternate route can be computed - except that in this event the node from which the bundle was originally directly received is omitted from the initial list of Excluded Nodes. This enables a bundle that has reached a dead end in the routing tree to be sent back to a point at which an altogether different branch may be selected. For a Critical bundle no mitigation of either sort of failure is required or indeed possible: the bundle has already been queued for transmission on all plausible routes, so no mechanism that entails re-application of CGR's Dynamic Route Computation Algorithm could improve its prospects for successful delivery to the final destination. However, in some environments it MAY be advisable to re-apply the Dynamic Route Computation Algorithm to all Critical bundles that are still in local custody whenever a new Contact is added to the contact graph: the new contact may open an additional forwarding opportunity for one or more of those bundles. 3. Remarks The CGR routing procedures respond dynamically and automatically to the changes in network topology that the nodes are able know about, i.e., those changes that are subject to managed network configuration and are known in advance rather than discovered in real time. This dynamic responsiveness in route computation should be significantly more effective and less expensive than static routing. Note that the non-Critical forwarding load across multiple parallel paths should be balanced automatically: o Initially all traffic will be forwarded to the node(s) on what is computed to be the best path from source to destination. o At some point, however, a node on that preferred path may have so much outbound traffic queued up that no contacts scheduled within bundles' lifetimes have any residual capacity. This can cause forwarding to fail, resulting in custody refusal. o Custody refusal causes the refusing node to be temporarily added to the current custodian's excluded neighbors list for the affected final destination node. If the refusing node is the only one on the path to the destination, then the custodian may end up sending the bundle back to its upstream neighbor. Moreover, that custodian node too may begin refusing custody of bundles Burleigh Expires January 9, 2011 [Page 15] Internet-Draft CGR July 2010 subsequently sent to it, since it can no longer compute a forwarding path. o The upstream propagation of custody refusals directs bundles over alternate paths that would otherwise be considered suboptimal, balancing the queuing load across the parallel paths. o Eventually, transmission and/or bundle expiration at the oversubscribed node relieves queue pressure at that node and enables acceptance of custody of a "probe" bundle from the upstream node. This eventually returns the routing fabric to its original configuration. Note that there are no "routing tables" in Contact Graph Routing. The best route for a bundle destined for a given node may routinely be different from the best route for a different bundle destined for the same node, depending on bundle priority, bundle expiration time, and changes in the current lengths of transmission queues for neighboring nodes; routes must be computed individually for each bundle, from the BPA's current network connectivity model for the bundle's destination node (the contact graph). Clearly this places a premium on optimizing the implementation of the route computation algorithm. The scalability of CGR to very large networks remains a research topic. 4. IANA Considerations This document has no IANA considerations. 5. Security Considerations CGR in itself introduces no new security considerations. However, the accuracy of CGR forwarding decisions depends heavily on the validity of the contact plan information on which they are based; attacks that would prevent the delivery of that information, corrupt it, or introduce bogus information would degrade forwarding in a network that relies on contact graph routing. When a protocol for distributing contact plan information is developed, it is likely to be an application-layer protocol that utilizes underlying Bundle Protocol capabilities. It will be important to apply Bundle Security Protocol measures to protect that protocol: o Payload Integrity Blocks will be required, to assure the authenticity and validity of the distributed contact plan Burleigh Expires January 9, 2011 [Page 16] Internet-Draft CGR July 2010 information. o Bundle Authentication Blocks will be required, to minimize the effectiveness of denial-of-service attacks that might compromise contact plan information delivery. 6. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005. [RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol Specification", RFC 5050, November 2007. Author's Address Scott Burleigh Jet Propulsion Laboratory, California Institute of Technology 4800 Oak Grove Drive, m/s 301-490 Pasadena, CA 91109 USA Phone: +1 818 393 3353 Email: Scott.C.Burleigh@jpl.nasa.gov Burleigh Expires January 9, 2011 [Page 17]