view Side-By-Side changes
Delay Tolerant Networking Research GroupS. BurleighM. Ramadas Internet Draft Ohio University <draft-irtf-dtnrg-ltp-02.txt> S. Burleigh December 2004 NASA/Jet Propulsion Laboratory<draft-irtf-dtnrg-ltp-01.txt> M. Ramadas July 2004 Ohio UniversityExpiresJanuaryJune 2005 S. Farrell Trinity College Dublin Licklider Transmission Protocol - Specification Status of this Memo By submitting this Internet-Draft, we certify that any applicable patent or other IPR claims of which we are aware have been disclosed, or will be disclosed, and any of which we become aware will be disclosed, in accordance with RFC 3668. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. 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 a "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/1id-abstracts.html The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html 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 [B97]. Discussions on this internet-draft are being made in the Delay Tolerant Networking Research Group (DTNRG) mailing list. More information can be found in the DTNRG web-site at http://www.dtnrg.org Abstract This document describes the Licklider Transmission Protocol (LTP) designed to provide retransmission-based reliability over linksin challenged internet environments exhibitingcharacterized by extremely long message round-trip times(RTTs),(RTTs) Ramadas et al. Expires - June 2005 [Page 1] Internet Draft LTP - Specification December 2004 and/or frequent interruptions inconnectivity, and high bit error rates.connectivity. Since communication across interplanetary space is the most prominent example of this sort of environment, LTP is principally aimed at supporting"long-haul""long- haul" reliable transmissionBurleigh et al. Expires - January 2005 [Page 1] Internet Draft Licklider Transmission Protocol July 2004in interplanetary space, butmight havehas applications in other environments as well. In an Interplanetary Internet setting deploying the Bundling protocol being developed by the Delay Tolerant Networking Research Group, LTP is intended to serve as a reliable convergence layer over single hop deep-space RF links. LTP does ARQ of data transmissions by soliciting selective-acknowledgment receptionreports,reports. It is stateful, and has no negotiation orhandshakes, and supports out-of-transmission-order data delivery.handshakes. Table of Contents 1. Introduction .................................................43 2.Motivation ................................................... 5 2.1 IPN Operating Environment ................................ 5 2.2 Why not TCP? ............................................. 7 3. Features ..................................................... 8 3.1 Massive State Retention .................................. 9 3.1.1 Multiplicity of Protocol State Machines ............. 10 3.1.2 Session IDs ......................................... 10 3.1.3 Use of Non-volatile Storage ......................... 10 3.2 Absence of Negotiation ................................... 11 3.3 Laconic Acknowledgment ................................... 11 3.4 Adjacency ................................................ 12 3.5 Optimistic and Dynamic Timeout Interval Computation ...... 13 3.6 Deferred Transmission .................................... 14 4.Terminology ..................................................14 5. Overall Operation ............................................ 18 5.1 Nominal Operation ........................................ 18 5.2 Retransmission ........................................... 20 5.2.1 Reception Reporting Rules ........................... 22 5.2.2 Design Rationale .................................... 22 5.3 Accelerated Delivery ..................................... 23 5.4 Accelerated Retransmission ............................... 24 5.5 Session Cancellation ..................................... 24 5.6 Unreliable Transmission .................................. 25 6. Functional Model ............................................. 26 6.1 Deferred Transmission .................................... 26 6.2 Bandwidth Management ..................................... 27 6.3 Timers ................................................... 28 7.3 3. Segment Structure ............................................30 7.18 3.1 Segment Header ...........................................30 7.1.19 3.1.1 Segment Type Flags ..................................31 7.1.210 3.1.2 Segment Type Codes ..................................32 7.1.310 3.1.3 Segment Class Masks .................................32 7.1.411 3.1.4 Extensions Field ....................................33 7.212 3.2 Segment Content ..........................................34 Burleigh et al. Expires - January 2005 [Page 2] Internet Draft Licklider Transmission Protocol July 2004 7.2.113 3.2.1 Data Segment ........................................34 7.2.213 3.2.2 Report Segment ......................................35 7.2.314 3.2.3 Report Acknowledgment Segment .......................37 7.2.416 3.2.4 Session Management Segments .........................37 8.16 3.3 Segment Trailer .......................................... 17 4. Requests from Client Service .................................38 8.117 4.1 Transmission Request .....................................38 8.217 4.2 Cancellation Request .....................................39 9.18 5. Internal Procedures ..........................................40 9.119 5.1 Start Transmission .......................................41 9.219 5.2 Start Checkpoint Timer ...................................41 9.319 5.3 Start RS Timer ...........................................41 9.420 5.4 Stop Transmission ........................................41 9.520 5.5 Suspend Timers ...........................................41 9.620 5.6 Resume Timers ............................................42 9.721 5.7 Retransmit Checkpoint ....................................43 9.821 5.8 Retransmit RS ............................................43 9.922 5.9 Signify Red-Part Reception ............................... 22 5.10 Signify Green-Part Segment Arrival.................................. 44 9.10 Signify Block Reception ................................. 44 9.11...................... 22 5.11 Send Reception Report ...................................44 9.1223 5.12 Signify Transmission Completion .........................45 9.1324 5.13 Retransmit Data .........................................45 9.1425 5.14 Stop RS Timer ...........................................46 9.1526 5.15 Start Cancel Timer ......................................46 9.1626 Ramadas et al. Expires - June 2005 [Page 2] Internet Draft LTP - Specification December 2004 5.16 Retransmit Cancellation Segment .........................47 9.1726 5.17 Acknowledge Cancellation ................................47 9.1826 5.18 StopCancellationCancel Timer................................. 48 9.19....................................... 27 5.19 Cancel Session ..........................................48 9.2027 5.20 Close Session ...........................................48 10.27 5.21 Handle Miscolored Segment ............................... 27 6. Notices to Client Service................................... 48 10.1.................................... 28 6.1 Session Start............................................ 48 10.2 Data............................................. 28 6.2 Green-Part Segment Arrival..................................... 49 10.3 Block................................ 28 6.3 Red-Part Reception.......................................... 49 10.4........................................ 29 6.4 Transmission Completion.................................. 49 10.5................................... 29 6.5 Transmission Cancellation................................ 50 10.6................................. 29 6.6 Reception Cancellation................................... 50 11..................................... 30 7. State Transition Diagrams.................................... 50 11.1..................................... 30 7.1 Sender................................................... 52 11.2.................................................... 32 7.2 Receiver................................................. 55 12................................................... 37 8. Requirements from the Operating Environment.................. 58 13.................... 41 9. Security Considerations...................................... 58 13.1....................................... 42 9.1 Security Mechanisms and Layering Considerations................... 59 13.2........... 43 9.2 Denial of Service Considerations......................... 60 13.3 LTP Authentication ....................................... 61 13.4 Implementation Considerations ............................ 64 13.5.......................... 44 9.3 Replay Handling.......................................... 65 14. Tracing LTP back to CFDP ..................................... 65 15............................................ 45 9.4 Implementation Considerations ............................. 46 10. IANA Considerations ..........................................67 16.46 11. Acknowledgments ..............................................68 Burleigh et al. Expires - January 2005 [Page 3] Internet Draft Licklider Transmission Protocol July 2004 17.47 12. References ...................................................68 17.1 Informative References ................................... 68 17.247 12.1 Normative References .....................................68 18.47 12.2 Informative References ................................... 47 13. Author's Addresses ...........................................69 19.48 14. Copyright Statement ..........................................7048 1. IntroductionThe Licklider Transmission Protocol (LTP) described in this memo is designed to provide retransmission-based reliability over links characterized by extremely long message round-trip times, frequent interruptions in connectivity,This document serves as the main protocol specification of LTP, andhigh bit error rates. Communication in interplanetary spaceisthe most prominent examplepart ofthis sorta series ofenvironment,documents describing LTP. Other documents in this series include the motivation document [LTPMOTIVE] andLTP is principally aimed at supporting "long-haul" reliable transmission over deep-space RF links. Since 1982theprincipal source of standards for space communications has beenprotocol extensions document [LTPEXT] respectively. We strongly recommend reading the protocol motivation document before reading theConsultative Committeefollowing document to establish sufficient background and motivation forSpace Data Systems (CCSDS) [CCSDS]. Engineers of CCSDS member agencies have developed communication protocols that function withintheconstraints imposed by operationscontents that follow indeep space. These constraints differ sharply from thosethis document. 2. Terminology (1) Engine ID A number that uniquely identifies a given LTP engine, withinwhich the Internet typically functions: o Extremely long signal propagation delays, on the order of seconds, minutes, or hours rather than milliseconds. o Frequent and lengthy interruptions in connectivity. o Low levels of communication traffic coupled with high ratessome closed set oftransmission error. o Meager bandwidth and highly asymmetrical data rates. The CCSDS File Delivery Protocol (CFDP) [CFDP], in particular, automates reliable file transfer across interplanetary distances by detecting data loss and initiating the requisite retransmission without mission operator intervention. CFDP by itselfcommunicating LTP engines. Note that when LTP issufficient foroperatingindividual missions, but its built-in networking capabilities are rudimentary. In order to operate within the IPN environment it must rely on the routing and incremental retransmission capabilities ofunderneath the DTN Bundling protocol[BP] defined for Delay-Tolerant Networks [DTN]. LTP is intended to serve as a reliable "convergence layer" protocol underlying Bundling in DTN regions whose links are characterized by very long round-trip times. Burleigh[BP][DTN], the convergence layer adapter mediating between the two will be Ramadas et al. Expires -JanuaryJune 2005 [Page4]3] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004Its design notions are directly descended from the retransmission procedures definedresponsible forCFDP. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",translating between DTN endpoint IDs and"OPTIONAL"LTP engine IDs inthis document arean implementation-specific manner. (2) Block An array of contiguous octets of application data handed down by the upper layer protocol (typically Bundling) to beinterpreted as described in [B97]. 2. Motivation 2.1 IPN Operating Environment There aretransmitted via LTP from one client service instance to another. Any subset of anumberblock comprising contiguous octets that begins at the start offundamental differences betweentheenvironment for terrestrial communications andblock is termed a "block prefix" and any such subset of theoperating environments envisioned forblock that ends with the end of theIPN.block is termed a "block suffix". (3) Red-Part Themost challenging difference between communication among points on Earth and communication among planetsblock prefix that isround-trip delay, of which there are two main sources, both relatively intractable: natural lawto be transmitted reliably, i.e., subject to acknowledgement andeconomics.retransmission. (4) Green-Part Themore obvious type of delay imposed by natureblock suffix that issignal propagation time. Our inabilitytotransmit data at speeds higher thanbe transmitted unreliably, i.e., not subject to acknowledgments or retransmissions. If present, thespeedgreen- part oflight means that while round-trip times in the terrestrial Internet range from milliseconds toafew seconds, minimum round-trip times to Mars range from 8 to 40 minutes, depending onblock begins at theplanet's position. Round-trip times between Earth and Jupiter's moon Europa run between 66 and 100 minutes. Less obvious and more dynamic isoctet following thedelay imposed by occultation. Communication between planets must be by radiant transmission, which is usually possible only whenend of thecommunicating entities are in linered- part. (5) Session A thread ofsightLTP protocol activity conducted for the purpose ofeach other. An entity residing ontransmitting aplanetary surface will be periodically taken outblock. (6) Segment The unit ofsight by the planet's rotation (it will be "onLTP data transmission activity. It is theother side of"data structure transmitted from one LTP engine to another in theplanet); an entity that orbitscourse of aplanet will be periodically taken outsession. An LTP segment is either a data segment, a report segment, a report-acknowledgment segment, a cancel segment, or a cancel- acknowledgment segment. (7) Reception Claim An assertion of reception of some number of contiguous octets of application data (a subset ofsighta block) characterized byorbital motion (it will be "behind"theplanet); and planets themselves lose mutual visibility when their trajectories take them to opposite sidesoffset of theSun. During the time that communication is impossible, delivery is impairedfirst received octet andmessages must wait in a queue for later transmission. Round-trip times and occultations can at least be readily computed giventheephemeridesnumber ofthe communicating entities. Additional delay that is less easily predictable is introduced by discontinuous transmission support, which is rooted in economics. Communicating over interplanetary distances requires expensive special equipment: large antennas, high-performance receivers, etc. For most deep-space missions, even non-NASA ones, these are currently Burleighcontiguous octets received. (8) Scope Ramadas et al. Expires -JanuaryJune 2005 [Page5]4] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004provided by NASA's Deep Space Network (DSN) [DSN]. The communication resourcesScope identifies a subset ofthe DSN are currently oversubscribeda block andwill probably remain so for the foreseeable future. While studies have been done as tocomprises two numbers - upper bound and lower bound. For a data segment, lower bound is thefeasibilityoffset ofupgrading or replacingthecurrent DSN,segment's application data from thenumberstart ofdeep space missions will probably continue to grow faster than the terrestrial infrastructure that supports them, making over- subscription a persistent problem. Radio contact viatheDSN must therefore be carefully scheduled andblock (in octets), while upper bound isoften severely limited. This over-subscription means that the round-trip times experienced by packets will be affected not only bythesignal propagation delay and occultation, but also bysum of theschedulingoffset andqueuing delays imposed by managementlength ofEarth-based resources: packets to be sent tothe segment's application data (in octets). For example, agiven destination maysegment with block offset 1000 and length 500 would haveto be queued untila lower bound 1000 and upper bound 1500. For a report segment, upper bound is thenext scheduled contact period,end of the block prefix to whichmay be hours, days, or even weeks away. While queuing and scheduling delays are generally known wellthe reception claims inadvance except when missions need emergency service (such as during landings and maneuvers),thelong and highly variable delays makereport apply, while lower bound is thedesignend oftimers, and retransmission timersthe (smaller) interior block prefix to which the reception claims inparticular, quite difficult. Another significant difference between deep spacethe report do *not* apply. That is, data at any offset equal to or greater than the report's lower bound but less than its upper bound andterrestrial communication is bandwidth availability. The combined effectsnot designated as "received" by any oflarge distances (resulting in signal attenuation),theexpensereport's reception claims must be assumed not received and therefore eligible for retransmission. For example, if a report segment carried a lower bound of 1000 anddifficultyan upper bound ofdeploying large antennas to distant planets,5000, and thedifficultyreception claims indicated reception ofgenerating electric power in space all mean thatdata within offsets 1000-1999 and 3000-4999, data within theavailable bandwidthblock offsets 2000-2999 can be considered eligible forcommunicationretransmission. Reception reports (which may comprise multiple report segments) also have scope, as defined inthe IPN will likely remain modest compared to terrestrial systems. MaximumSection 5.11. (9) End of Block (EOB) The last datarates onsegment transmitted as part of theorderoriginal transmission of afew tens of megabits per second will probably beblock. This data segment also indicates that thenorm forsegment's upper bound is thenext few decades. Moreover,total length of theavailable bandwidths are highly asymmetrical: data are typicallyblock (in octets). (10) End of Red-Part (EORP) That segment transmittedat different rates in different directions onas part of thesame link. Current missions are usually designed withoriginal transmission of amuch higher data "return" rate (from spacecraft to Earth) than "command" rate (from Earth to spacecraft). The reason forblock which contains theasymmetry is simple: nobody ever wanted a high-rate command channel, and, all else being equal, it was deemed better to have a more reliable command channel than a faster one.last octet of the block's red-part. Thisdesign choice has led todatarate asymmetries in excesssegment also indicates that the segment's upper bound is the length of100:1, sometimes approaching 1000:1.the block's red-part (in octets). (11) Checkpoint Astrong desire fordata segment soliciting avery robust command channel will probably remain, so any transport protocol designed for use inreception report from theIPN will need to function with a relatively low-bandwidth outbound channel to spacecraft and landers.receiving LTP engine. Thedifficulty of generating power on and around other planets will also result in relatively low signal-to-noise ratios and thus high bit error rates. Current deep-space missions operate with raw bit error rates onEORP segment must be flagged as a checkpoint, as must theorderlast segment of10^(-1), or one error in ten bits; heavy Burleighany retransmission; these are "mandatory checkpoints". All other checkpoints are "discretionary checkpoints". (12) Reception Report Ramadas et al. Expires -JanuaryJune 2005 [Page6]5] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004coding is used to reduce these rates, andA sequence ofcourse this coding further reduces the residual bandwidth available forone or more report segments reporting on all block datatransmission. Signal propagation delayreception within some scope. (13) Synchronous Reception Report A reception report that isthe only truly immutable characteristicissued in response to a checkpoint. (14) Asynchronous Reception Report A reception report thatdistinguishesis issued in response to some implementation- defined event other than theIPN from terrestrial communications (unless and until we findarrival of awaycheckpoint. (15) Primary Reception Report A reception report that is issued in response totransmit information fastersome event other than thespeedarrival oflight). Queuing and scheduling delays, low data rates, intermittent connectivity,a checkpoint segment that was itself issued in response to a reception report. Primary reception reports include all asynchronous reception reports andhigh bit error rates canallbe mitigatedsynchronous reception reports that are sent in response to discretionary checkpoints oreliminated by adding more infrastructure. But this additional infrastructure is likelytobe provided (if at all) only in the more highly developed core areas of the IPN. We seetheIPN growing outwards from Earth as we explore more and more planets, moons, asteroids, and possibly other stars. This suggests that there will always beEORP segment for a"fringe"session. (16) Secondary Reception Report A reception report that is issued in response to thefabricarrival ofthe IPN, an area withoutarich communications infrastructure. The delay, data rate, connectivity, and error characteristics mentioned above will probably always be an issue somewhere in the IPN. 2.2 Why not TCP? These environmental characteristics - long delays, low and asymmetric bandwidth, intermittent connectivity, and relatively high error rates - make using unmodified TCP for end to end communicationscheckpoint segment that was itself issued inthe IPN infeasible. Using the TCP throughput equation from [TFRC] we can calculate the loss event rate (p) requiredresponse toachieveagiven steady- state throughput. Assuming the closest RTTreception report. (17) Self-Delimiting Numeric Value (SDNV) The design of LTP attempts toMars from planet Earthreconcile minimal consumption of8 minutes,transmission bandwidth with (a) extensibility to satisfy requirements not yet identified and (b) scalability across apacket sizevery wide range of1500 bytes, assuming the receiver to acknowledge every other packet,network sizes andignoring negligible higher order termstransmission payload sizes. A key strategic element inp (i.e., ignoringthesecond additive term indesign is thedenominatoruse of self-delimiting numeric values (SDNVs) that are similar in design to thethroughput equation from [TFRC]), we obtain the following tableAbstract Syntax Notation One [ASN1] encoding ofloss event rates requireddata structures. SDNVs are of two basic types, SDNV-8 and SDNV-16. An SDNV-8 can be used toachieve various throughput values. Throughput Loss event rate (p) ---------- ------------------- 10 Mbps 4.68 * 10^(-12) 1 Mbps 4.68 * 10^(-10) 100 Kbps 4.68 * 10^(-8) 10 Kbps 4.68 * 10^(-6) Note that multiple losses encountered inencode asingle RTT are countedvariable length number from 1 to 128 octets in length; an SDNV-16 can bepart ofused to encode asingle loss event in the TCP throughput equation. However, such loss event rates are still too highvariable length number from 2 torealize in deep space links where typical raw bit error rates are128 octets in length. The first octet of an SDNV - theorder"discriminant" - fully characterizes the SDNV's value. SDNV-8 If the most significant bit of10^(-1). The above values are upper bounds on steady-state throughput. Since Burleighthe discriminant is zero, the Ramadas et al. Expires -JanuaryJune 2005 [Page7]6] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004the numberlength ofpackets in an episode of connectivity will generally be under 10,000 due to the low available bandwidth, TCP performance would be dominated by its behavior during slow-start. This means that even when Mars is at its closest approach to Earth it would take a TCP nearly 100 minutes to ramp up to an Earth-Mars transmission rate of 20kbps. Note: lab experiments using a channel emulator and standard applications show that even if TCP could be pushed to work efficiently at such distances, many applications either rely on several rounds of handshaking or have built-in timers that render them non-functional whentheround-trip-timeSDNV-8 isover a couple of minutes. For example, it typically takes eight round trips for FTP to get to a state where data can begin flowing. Since an FTP server may time out1 octet andresettheconnection after 5 minutescontents ofinactivity, a conformant standard FTP server could be unusable for communicating even withtheclosest planets. 3. Features The design of LTP differs from that of TCP in several significant ways. The common themes running through these differences are two central design assumptions, both of which amount to making virtuesremaining 7 bits ofnecessity. First: given the severe innate constraints on interplanetary communication discussed above, we assume thatthecomputational resources available to LTP engines will always be ample compared todiscriminant viewed as an unsigned integer is thecommunication resources available onvalue of thelink between them. CertainlySDNV. An integer inmany casesthecomputational resources availablerange of 0 toa given LTP engine - such as one on board a small robotic spacecraft will not127 can beample byencoded this way. Otherwise (if thestandardsmost significant bit of theInternet. But in those cases we expect thatdiscriminant is 1), theassociated communication resources (transmitter power, antenna size) will be even less ample, preservingremaining 7 bits encode theexpected disproportion betweenlength of thetwo. Second, we note that establishing a communication link across interplanetary distance entails enacting several hardware configuration measures based onSDNV's value. If thepresumed operational statecontent of theremote communicating entity: o orienting a directional antenna correctly; o tuning a transponder to pre-selected transmission and/or reception frequencies; o diverting precious electrical power toremaining 7 bits viewed as an unsigned integer has thetransponder atvalue N, theBurleigh et al. Expires - January 2005 [Page 8] Internet Draft Licklider Transmission Protocol July 2004 last possible moment,encoded number is N+1 octets long andforhas theminimum necessary lengthvalue found by concatenating octets 2 through N+2 oftime. We therefore assume that the operating environment in which LTP functions is able to pass information onthelink status (called "link state cues" from here on) to LTP, telling it which remote LTP engine(s) should currently be transmitting toSDNV-8, viewed as an unsigned integer. For example, if N were 0, thelocal LTP engine and vice versa. The operating environment itself must have this information in order to configure communication link hardware correctly. 3.1 Massive State Retention Like any reliable transport service employing ARQ, LTP is "stateful". In order to assurefollowing single octet would contain thereception of a block of data it has sent, LTP must retain for possible retransmission all portions of that block which might not yet have been received. In order to do so, it must keep track of which portionsvalue of theblock are known to have been received so far, and which are not, together with any additional information needed for purposes of retransmitting part or all of that block. Long round-trip times mean substantial delay betweenSDNV-8; if N were 127, thetransmissionfollowing 128 octets would contain the encoded unsigned number. SDNV-16 If the most significant bit ofa blockthe discriminant is zero, then the length ofdatathe SDNV-16 is 2 octets and thereceptioncontents ofan acknowledgment fromtheblock's destination, signaling arrivalremaining 7 bits of theblock. If LTP postponed transmission of additional blocks of data until it received acknowledgment ofdiscriminant concatenated with thearrivalfollowing octet, viewed as a 15-bit unsigned integer, is the value encoded. An integer in the range ofall prior blocks, valuable opportunities0 toutilize what little deep space transmission bandwidth is available would32767 can beforever lost. Forencoded thisreason, LTP is based in part on a notionway. Otherwise (if the most significant bit ofmassive state retention. Any numberthe discriminant is 1), the encoding is similar to SDNV-8. If the content ofrequested transmissions may be concurrently "in flight" at various displacements alongthelink between two LTP engines, andremaining 7 bits viewed as an unsigned integer has theLTP engines must necessarily retain transmission statusvalue N, the encoded number is N+1 octets long andretransmission resources for all of them. Moreover, if any ofhas thedatavalue found by concatenating octets 2 through N+2 ofa given block are lost en route, it willthe SDNV-16, viewed as an unsigned integer. An SDNV can therefore benecessaryused toretainrepresent both very large and very small integer values. For example, thestatemaximum size ofthat transmission duringanadditional round tripSDNV - a 1024-bit number - is large enough to contain a fairly safe encryption key, while any whole-degree Celsius temperature in thelost data are retransmitted; even multiple retransmission cycles may be necessary. In sum, LTP transmission state information persists for a long time becauserange in which water is along time must pass before LTPliquid can beassured of transmission success - so LTP must retainrepresented in agreat deal of state information. Sincesingle-octet SDNV-8. In the LTP header specification that follows, various fields in thealternativesheader arenon-reliabilitydefined to be of types SDNV-8 or SDNV-16 depending on theone hand and severe under-utilizationtypical range oftransmission opportunities onvalues expected for theother, we believe such massive statefulness is cost-justified (though probably Burleigh et al. Expires - January 2005 [Page 9] Internet Draft Licklider Transmission Protocol July 2004 notfield. If a field inall applications). 3.1.1 Multiplicity of Protocol State Machines This design decision is reflected in a significant structural difference between LTP and TCP. Both TCP and LTP provide mechanisms for multiplexing access bythe header carries avariety of higher-layer services or applications: LTP's "client service IDs" correspondnumber that typically requires 16 bits toTCP's port numbers. Also, both TCPencode, but under certain infrequent conditions may grow longer andLTP implement devices for encapsulating threads of retransmission protocol (protocol state machines): LTP's "sessions" functionally correspondrequire, say, 32 bits toTCP connections. At any moment each such thread of retransmission protocol is engaged in conveying some single block of data from one protocol end pointencode, it might be optimal toanother. However, a single TCP association (local host address, local port number, foreign host address, foreign port number) can accommodate at most one connection at any one time. In contrast, a single LTP association (local engine ID, local client service ID, foreign engine ID, foreign client service ID) can accommodate multiple concurrent sessions. 3.1.2 Session IDs In TCP,specify it as an SDNV-16 instead of specifying thefact that any single associationfield as a fixed 32 bit integer. However, SDNV isoccupied by at most one connection at any time enablesclearly not theprotocol to use host addresses and port numbers to demultiplex arriving databest way to represent every numeric value. When theappropriate protocol state machines. LTP'smaximum possiblemultiplicityvalue ofsessions per association makes it necessary for each segmenta number is known without question, the cost ofapplication data to includean additionaldemultiplexing token,8 bits of discriminant may not be Ramadas et al. Expires - June 2005 [Page 7] Internet Draft LTP - Specification December 2004 justified. For example, an SDNV-8 is a"session ID" that uniquely identifies the sessionpoor way to represent an integer whose value typically falls inwhichthesegment was issued. 3.1.3 Use of Non-volatile Storage Another important implication of massive statefulness isrange 128 to 255. In general, though, we believe thatimplementationsSDNV representation ofLTP should consider retaining transmission state informationselected numeric values innon-volatile storage of some kind,LTP segments yields the smallest segment sizes without sacrificing scalability. (18) Client Service Instance A software entity, such asmagnetic diskan application orflash memory. Transport protocols such as TCP typically retain transmission statea higher-layer protocol implementation, that is using LTP to transfer data. 3. Segment Structure Each LTP segment comprises (a) a "header" indynamic RAM; ifthecomputer on which the software resides is rebootedformat defined below. (b) zero orpowered down, then all transmissions currentlymore octets of "content". (c) zero or more octets of "trailer" as indicated by information inprogress are aborted buttheresulting degree"extensions field" ofcommunication disruption is limited, becausethenumberheader. LTP segments are ofconcurrent connections is limited. Rebooting or power-cycling a computerfour general types depending on the nature of the content carried: Data segments carry client service (application) data, together with metadata enabling the receiving client service instance to receive and make use of that data. A report segment carries data reception claims together with the upper and lower bounds of the data block scope to whichan LTP engine resides could abort a much largerthe claims pertain. A report-acknowledgment segment carries only the serial number oftransmission sessions in various stagesthe report being acknowledged. Session management segments are ofcompletion, attwo general subtypes: Cancellation and Cancellation-acknowledgment. A Cancellation segment carries amuch larger total cost. Burleighsingle byte reason-code to indicate the reason for the cancellation. Cancellation-acknowledgment segments have no content. The overall segment structure is illustrated below : Ramadas et al. Expires -JanuaryJune 2005 [Page10]8] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 20043.2 Absence of Negotiation In the IPN, round-trip times may be so long and communication opportunities so brief that a negotiation exchange, such as an adjustment of transmission rate, might not be completed before connectivity was lost. Even if connectivity were uninterrupted, waiting for negotiation to complete before revising data transmission parameters might well result in costly under-utilization of link resources. For this reason, allBit 0 1 2 3 4 5 6 7 ^ +-----+-----+-----+-----+-----+-----+-----+-----+ | | Version number | Segment Type Flags | | +-----------------------+-----------------------+ | | | | / Session ID \ | \ / Header +-----------------------+-----------------------+ | | Header Extension Cnt. | Trailer Extension Cnt.| | +-----------------------+-----------------------+ | | | | / Header Extensions \ | \ / V +-----------------------------------------------+ | | | | | | | Segment Content | / \ \ / | | | | | | ^ +-----------------------------------------------+ | | | Trailer / Trailer Extensions \ | \ / V +-----------------------------------------------+ 3.1 Segment Header An LTPcommunicationsegment header comprises three data items: a single-octet control byte, a sessionparameters are asserted unilaterally, subjectID, and an extensions field. Control byte comprises the following: Version number (4 bits): MUST be set toapplication-level network management activity that may not take effectthe binary value 0000 forhours, days, or weeks. 3.3 Laconic Acknowledgment Another respect in which LTP differs from TCP is that, while TCP connections are bidirectional (blocksthis version ofapplication data may be flowing in both directions on any single connection), LTP sessions are unidirectional. This design decision derives fromthefact thatprotocol. Segment type flags (4 bits): described below. Session ID uniquely identifies, among all transmissions between theflow of data in deep space flight missions is usually unidirectional. (Long round trip times make interactive spacecraft operation infeasible, so spacecrafts are largely autonomoussegment's sender andcommand traffic is very light.) One could imagine an LTP instance, upon being asked to transmit a block of data, searching through all existing sessions in hopes of finding one that was established upon reception of data fromreceiver, thenew block's destination; transmissionsession of which thenew block could be piggybacked on the acknowledgment traffic for that session. But the prevailing unidirectionality of space data communications means that such a search would frequently fail, and a new unidirectional session would have to be established anyway. Session bidirectionality therefore seemed to entail somewhat greater complexity unmitigated by any clear performance advantage, so we abandoned it. Bidirectional data transfer is supported, but it requires opening two individual LTP sessions. Because they are not piggybacked on data segments, LTP data acknowledgments - "reception reports" - are carried in a separatesegmenttype. To minimize consumption of low and asymmetric transmission bandwidth in the IPN, these report segments are sent infrequently; eachis onecontains a comprehensive report of all data received within some specified range of offsets fromtoken. It comprises thestartfollowing: Session originator: the engine ID of thetransmitted block. The expectation isLTP engine thatmost data segments will arrive safely, so individual acknowledgment of each one would be expensive in information-theoretical terms:initiated thereal information Burleighsession, in SDNV-8 representation. Ramadas et al. Expires -JanuaryJune 2005 [Page11]9] Internet DraftLicklider Transmission Protocol July 2004 provided per byte of acknowledgment data transmitted would be very small. Instead, report segments are normally sent only upon encountering explicit solicitations for reception reports - "checkpoints"LTP - Specification December 2004 Session number: a number in SDNV-16 representation, typically a random number (for anti-DoS reasons), generated by thesequence of incoming data segments.LTP engine identified as the session originator. Theaggregate natureformat and resolution ofreception reports gives LTP transmission an episodic character: o "Original transmissions"session number aresequences of data segments issued in response to transmission requests from client services. o "Retransmissions"matters that aresequences of data segments issued in responseprivate to thearrival of report segments that indicate incomplete reception. Checkpoints are mandatory only atsession-originating engine; theend of each such sequence. For applicationsonly requirement imposed by LTP is thatrequire accelerated retransmission (and can afford the additional bandwidth consumption entailed), reception reporting can be more aggressive. Additional checkpoints may optionally be inserted at other points inevery session initiated by anoriginal transmission, and additional reception reports may optionallyLTP engine MUST besent on an asynchronous basis during reception of an original transmission. 3.4 Adjacency TCP reliability is "end to end": traffic between two TCP endpoints may traverse any number of intermediate network nodes, and two successively transmitted segments may traveluniquely identified byentirely different routes to reachthesame destination.session ID. Theunderlying IP network- layer protocol accomplishes this routing. Although TCP always delivers data segments to any single portextensions field is described inorder and without gaps,Section 3.1.4. 3.1.1 Segment Type Flags The last four bits of theIP datagrams delivered to TCP itself may not arrivecontrol byte in theorder in which they were transmitted. In contrast, LTP is a protocol for "point to point" reliability on a single link: traffic between two LTP engines is expected not to traverse any intermediate relays. Point-to-point topology is innate insegment header are flags that indicate the nature ofdeep space communication, which is simplytheexchangesegment. In order (most significant bit first), these flags are CTRL, EXC, Flag 1 and Flag 0. A value ofradiation between two mutually visible antennae. No underlying network infrastructure is presumed, so no underlying network-layer protocol activity is expected;0 in theunderlying communication service is assumed to be a point-to-point link-layer protocol suchCTRL (Control) flag identifies the segment asCCSDS Telemetry/Telecommand [TM][TC] (or, for terrestrial applications, PPP). The contentsa data segment while a value oflink-layer frames delivered1 identifies it as a control segment. A data segment with the EXC (Exception) flag set toLTP are always expected0 is a red-part segment; a data segment with EXC set toarrive in1 is a green-part segment. For a control segment, having theorder in which they were transmitted, though possibly with any number of gaps dueEXC flag set todata loss or corruption. Burleigh et al. Expires - January 2005 [Page 12] Internet Draft Licklider Transmission Protocol July 2004 Note1 indicates thatbuilding an interplanetary network infrastructure - the DTN-based architecture oftheIPN - *on top of* LTP does not conflictsegment pertains to session cancellation activity. Any data segment (whether red-part or green-part) withLTP design principles. The Bundling protocol functions at a new hyper-network level,both Flag 1 andLTP bears essentially the same relationshipFlag 0 set toBundling that a reliable link protocol (for example, the ARQ capabilities1 indicates end ofLLC) would bearblock. Any data segment (whether red-part or green-part) with both Flag 1 and Flag 0 set toIP. The design of LTP relies heavily on this topological premise, in at least two ways: If two successively transmitted segments could travel by materially different routes0 indicates data without any additional protocol significance. Any red-part data segment with either Flag bit non-zero is a checkpoint. Any red-part data segment with Flag 1 set toreach the same destination, then1 indicates theassumptionend ofrough determinism in timeout interval computation discussed below would not hold. Our inability to estimate timeout intervals with any accuracy would severely compromise performance. If data arrived at an LTP engine outthe red-part oftransmission order, thentheassumptions on whichblock. 3.1.2 Segment Type Codes Combinations of therules for reception reporting are based would no longer hold. A more complex and/or less efficient retransmission mechanism would be needed. 3.5 Optimistic and Dynamic Timeout Interval Computation TCP determines timeout intervals by measuring and recording actual round trip times, then applying statistical techniques to recent RTT history to compute a predicted round trip time for each transmitted segment. The problem is at once both simpler and more difficult for LTP: Since multiple sessions can be conducted on any single association, retardationsettings oftransmission on any single session while awaiting a timeout need not degrade communication performance ontheassociationsegment type flags CTRL, EXC, Flag 1 and Flag 0 constitute segment type codes which serve asa whole. Timeout intervals that would be intolerably optimistic in TCP don't necessarily degrade LTP's bandwidth utilization. But the reciprocal half-duplex natureconcise representations ofLTP communication makes it infeasible to use statistical analysisdetailed segment nature. CTRL EXC Flag 1 Flag 0 Code Nature ofround-trip history as a means of predicting round-trip time. The round-trip time for transmitted segment N could easily be orders of magnitude greater than that for segment N-1 if there happened to be a transient loss of connectivity between thesegmenttransmissions. Since statistics derived from round-trip history cannot safely be used as a predictor of LTP round-trip times, we have to assume that round-trip timing is at least roughly deterministic - i.e., that sufficiently accurate RTT estimates can be computed individually in real time from available information. Burleigh---- --- ------ ------ ---- ----------------------------------------- 0 0 0 0 0 Red data, NOT {Checkpoint or EORP or EOB} 0 0 0 1 1 Red data, Checkpoint, NOT {EORP or EOB} 0 0 1 0 2 Red data, Checkpoint, EORP, NOT EOB 0 0 1 1 3 Red data, Checkpoint, EORP, EOB 0 1 0 0 4 Green data, NOT EOB 0 1 0 1 5 Undefined 0 1 1 0 6 Undefined 0 1 1 1 7 Green data, EOB Ramadas et al. Expires -JanuaryJune 2005 [Page13]10] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004This computation is performed in two stages. We calculate a first approximation of RTT by simply doubling the known one-way light time1 0 0 0 8 Report segment 1 0 0 1 9 Report-acknowledgment segment 1 0 1 0 10 Undefined 1 0 1 1 11 Undefined 1 1 0 0 12 Cancel segment from block sender 1 1 0 1 13 Cancel-acknowledgment segment tothe destination and adding an arbitrary margin for any additional anticipated latency, such as queuing and processing delay at both ends of the transmission.block sender 1 1 1 0 14 Cancel segment from block receiver 1 1 1 1 15 Cancel-acknowledgment segment to block receiver 3.1.3 Segment Class Masks Fordeep space operations,themargin value is typically a small numberpurposes ofwhole seconds. Although such a margin is enormous by Internet standards, it is insignificant compared to the two-way light time component of round-trip time in deep space. We choose to risk tardy retransmission, which will postpone delivery of one block by a relatively tiny increment,this specification, some bit patterns inpreference to premature retransmission, which will unnecessarily consume precious bandwidth and thereby degrade overall performance. Then, to account fortheadditional delay imposedsegment type flags field correspond to "segment classes" that are designated byinterrupted connectivity, we dynamically suspend timers during periods when the relevant remote LTP enginesmnemonics. The mnemonics areknown to be unable to transmit responses. This knowledge of the operational state of remote entities is assumedintended tobe provided by link state cues fromevoke theoperating environment, as discussed earlier. 3.6 Deferred Transmission Link state cues also notify LTP when it is and isn't possible to transmit segmentscharacteristics shared bypassing them to the underlying communication service. Continuous duplex communication is the norm for TCP operations in the Internet; when communication links are not available, TCP simply does not operate. In deep space communications, however, at no moment can there ever be any expectationall types oftwo-way connectivity. It is always possible for LTP to be generating outboundsegments characterized by these flag bit patterns. CTRL EXC Flag 1 Flag 0 Mnemonic Description ---- --- ------ ------ -------- --------------------------- 0 0 -in response to received segments, timeouts,1 -- orrequests from client services-- 0 0 1 -that cannot immediately be transmitted. These segments must be queued for transmission at a later time when a link has been established, as signaled by a link state cue. 4. Terminology (1) Engine ID A number that uniquely identifies a given LTP engine, within some closed setCP Checkpoint 0 0 1 - EORP End ofcommunicating LTP engines. Note that when LTP is operating underneath the DTN Bundling protocol, the convergence layer adapter mediating between the two will be responsible for translating between DTN endpoint IDs and LTP engine IDs in an implementation- specific manner. Burleighred-part; red-part size = offset + length 0 - 1 1 EOB End of block; block size = offset + length 1 0 0 0 RS Report segment; carries reception claims 1 0 0 1 RA Report-acknowledgment segment 1 1 0 0 CS Cancel segment from block sender 1 1 0 1 CAS Cancel-acknowledgment segment to block sender 1 1 1 0 CR Cancel segment from block receiver 1 1 1 1 CAR Cancel-acknowledgment segment to block receiver Ramadas et al. Expires -JanuaryJune 2005 [Page14]11] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004(2) Block An array of contiguous octets of application data handed down by the upper layer (typically1 1 - 0 Cx Cancel segment (generic) 1 1 - 1 CAx Cancel-acknowledgment segment (generic) 3.1.4 Extensions field The extension field enables thebundling layer)inclusion of zero or more functional extensions tobe transmitted viathe basic LTPfrom one client service instance to another. (3) Block Prefix Any subsetsegment, each in type-length-value (TLV) representation as explained below. The first octet ofa block that begins atthestart ofextensions field indicates theblock. (4) Session A threadnumber ofLTP protocol activity conducted forextensions present in thepurpose of transmitting a block. (5) Segment The unit of LTP data transmission activity. It issegment: thedata structure transmitted from one LTP engine to anotherhigh-order 4 bits indicate the number of extension TLVs in thecourseheader (immediately following the extensions count octet and preceding the segment's content) while the low-order 4 bits indicate the number ofa session. An LTP segment is either a data segment, a report segment, a report-acknowledgment segment, a cancel segment, or a cancel- acknowledgment segment. (6) Reception Claim An assertion of reception of some number of contiguous octets of application data (a subset of a block) characterized byextension TLVs in theoffset oftrailer (immediately following thefirst received octetsegment's content). That is, each segment may have from 0 to 15 extension TLVs in its header and from 0 to 15 extension TLVs in its trailer. In thenumber of contiguous octets received. (7) Scope Scope identifies a subsetabsence ofa block and comprises two numbers - upper bound and lower bound. For a data segment, lower bound is the offsetany extension TLVs, all bits ofthe segment's application data from the startthis extensions count octet MUST be set to zero. Each extension consists of a one-octet tag identifying theblock (in octets), while upper bound is the sumtype ofthe offset and lengthextension (the "T" of thesegment's application data (in octets). For example, a segment with block offset 1000 and length 500 would haveextension TLV), followed by an extension specification in SDNV-8 format. [Since an SDNV-8 comprises both alower bound 1000numeric data value andupper bound 1500. For a report segment, upper bound istheendlength of that value, theblock prefixextension specification serves towhich the reception claims insupply both thereport apply, while lower bound is"L" and theend"V" of the(smaller) interior block prefix to whichextension TLV.] The diagram below illustrates thereception claimsextension TLVs as they may occur in thereport do *not* apply. That is, data at any offset equal toheader orgreater than the report's lower bound but less than its upper bound and not designated as "received" by any of the report's Burleightrailer. +--------+---------------///-+ |ext-tag | SDNV-8 spec | +--------+-------------------////-+ |ext-tag | SDNV-8 spec | +--------+-------------------////-+ |ext-tag | SDNV-8 spec | +--------+------------////-+-+ |ext-tag | SDNV-8 spec | +--------+--------------////-+ One extension type is defined at this time. Extension tag Meaning ------------- ------- 0x00 LTP authentication extension [LTPEXT] 0x01 LTP cookie estension [LTPEXT] 0x02-0xff Reserved Ramadas et al. Expires -JanuaryJune 2005 [Page15]12] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004reception claims must be assumed not received and therefore eligible for retransmission. For example, if3.2 Segment Content 3.2.1 Data Segment (DS) The content of areportdata segmentcarried a lower bound of 1000 and an upper bound of 5000, and the reception claims indicated reception ofincludes client service datawithin offsets 1000-1999and3000-4999, data withinmetadata enabling theblock offsets 2000-2999 can be considered eligible for retransmission. Reception reports (which may comprise multiple report segments) also have scope, as defined in Sec 5.2.1. (8) Endreceiving client service instance to receive and make use ofBlock (EOB)that data. Client service ID [SDNV-8] Thelast dataclient service ID number identifies the upper-level service to which the segmenttransmitted as partis to be delivered by the destination LTP engine. It is functionally analogous to a well-known TCP port number. If multiple instances of theoriginal transmissionclient service are present at the destination, multiplexing must be done by the client service itself on the basis ofainformation encoded within the transmitted block.This data segment alsoOffset [SDNV-16] Offset indicatesthatthe location of the segment'supper boundclient service data within the session's transmitted block. It is thetotal lengthnumber of bytes in the block(in octets). (9) Checkpoint Aprior to the byte from which the first octet of the segment's client service data was copied. Length [SDNV-16] The length of the ensuing client service data, in octets. If the data segmentsolicitingis areception report from the receiving LTP engine. All checkpoints other thancheckpoint, theEOBsegment MUST additionally include the following two serial numbers (Checkpoint serial number and Report serial number) to support efficient retransmission. Data segments that are not checkpoints MUST NOTthemselves issuedhave these two fields inresponse to a reception report, are discretionary checkpoints, sent unreliably. The EOB segmentthe header andall checkpoints issued in response to reception reports are mandatory checkpoints, sent reliably. (10) Reception Report A sequence of one or more report segments reportingMUST continue onall block data reception (within some scope) sincedirectly with thestart ofclient service data. Checkpoint serial number [SDNV-8] The checkpoint serial number uniquely identifies theblock's transmission session. (11) Synchronous Reception Report A reception report that ischeckpoint among all checkpoints issued by the block sender inresponse toacheckpoint. (12) Asynchronous Reception Report A reception report that issession. The first checkpoint issuedin response to some implementation- defined event other thanby thearrival of a checkpoint. (13) Primary Reception Report A reception report thatsender MUST have this serial number chosen randomly for security reasons, and it isissuedRECOMMENDED that the sender use the guidelines inresponse to some event other than[ECS94] for this. Any subsequent checkpoints issued by thearrival ofsender MUST have the serial number value found by incrementing the prior checkpoint serial number by 1. When a checkpoint segmentthat was itself issued in response to a reception report. Primary reception reports include all asynchronous reception reports and all synchronous reception reports that are sent in response to discretionary checkpoints or tois retransmitted, however, its serial number MUST be theEOB for a session. Burleighsame as when it was originally Ramadas et al. Expires -JanuaryJune 2005 [Page16]13] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004(14) Secondary Receptiontransmitted. ReportA reception report that is issued in response toserial number [SDNV-8] If thearrival of acheckpointsegment thatwasitself issuedqueued for transmission in response toathe receptionreport. (15) Self-Delimiting Numeric Value (SDNV) The design of LTP attempts to reconcile minimal consumption of transmission bandwidth with (a) extensibility to satisfy requirements not yet identified and (b) scalability across a very wide rangeofnetwork sizes and transmission payload sizes. A key strategic element in the design isan RS [Sec 5.13], then its value MUST be theusereport serial number value ofself-delimiting numeric values (SDNVs)the RS thatare similar in design tocaused theAbstract Syntax Notation One [ASN1] encoding. An SDNV can be useddata segment toencode a variable lengthbe queued for transmission. Otherwise, the value of report serial numberfrom 1 to 128 bytes long, and isMUST be zero. Client service data [array oftwo basic types, SDNV-8 and SDNV-16.octets] Thefirst octet of an SDNV - the "discriminant" - fully characterizes the SDNV's value. SDNV-8 If the most significant bit ofclient service data carried in thediscriminantsegment iszero, the lengtha copy ofthe SDNV-8 is 1 octet and the contentsa subset of theremaining 7 bits of the discriminant viewed as an unsigned integer is the value encoded. An integerbytes in therange of 0 to 127 can be encoded this way. Otherwise (iforiginal client service data block, starting at themost significant bitindicated offset. 3.2.2 Report Segment (RS) The content of an RS comprises one or more data reception claims, together with thediscriminant is 1), the remaining 7 bits encode the lengthupper and lower bounds of theencoded number. Ifscope within thecontent ofdata block to which theremaining 7 bits viewed as an unsigned integer hasclaims pertain. It also includes two serial numbers to support efficient retransmission. Report serial number [SDNV-8] The report serial number uniquely identifies thevalue N,report among all reports issued by theencodedblock receiver in a session. The first report issued by the receiver MUST have this serial numberis N+1 octets longchosen randomly for security reasons, andhasit is RECOMMENDED that the receiver use the guidelines in [ECS94] for this. Any subsequent RS issued by the receiver MUST have the serial number value found byconcatenating octets 2 through N+2 ofincrementing theSDNV-8, viewed aslast report serial number by 1. When anunsigned integer. For example, if N were 0, the following single octet would haveRS is retransmitted however, its serial number MUST be the same as when it was originally transmitted. Checkpoint serial number [SDNV-8] The value ofthe SDNV-8;checkpoint serial number MUST be zero ifN were 127, the following 128 octets would have the encoded unsigned number. SDNV-16 Ifthemost significant bit of the discriminantreport segment iszero, then the lengthNOT a response to reception of a checkpoint, i.e., theSDNV-16reception report is asynchronous; otherwise it is2 octets and the contents oftheremaining 7 bitscheckpoint serial number of thediscriminant concatenated withcheckpoint that caused thefollowing octet, viewed asRS to be issued. Upper bound [SDNV-16] The upper bound of a15-bit unsigned integer,report segment is thevalue Burleighsize of the block prefix to which the segment's reception claims pertain. Ramadas et al. Expires -JanuaryJune 2005 [Page17]14] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004encoded. An integer in the rangeLower bound [SDNV-16] The lower bound of0 to 32767 can be encoded this way. Otherwise (ifa report segment is themost significant bitsize of thediscriminant is 1), the encoding is similar(interior) block prefix toSDNV-8. Ifwhich thecontentsegment's reception claims do NOT pertain. Reception claim count [SDNV-8] The number of data reception claims in this report segment. Reception claims Each reception claim comprises two elements: offset and length. Offset [SDNV-16] The offset indicates theremaining 7 bits viewed as an unsigned integer has the value N,successful reception of data beginning at theencoded number is N+1 octets long, and hasindicated offset from thevalue found by concatenating octets 2 through N+2lower bound of theSDNV-16, viewed as an unsigned integer. An SDNVRS. The offset within the entire block canthereforebeused to represent both very large and very small integer values. For example,calculated by summing this offset with themaximum sizelower bound of the RS. Length [SDNV-16] The length ofan SDNV -a1024-bitreception claim indicates the number- is large enough to contain a fairly safe encryption key, while any whole-degree Celsius temperature inof contiguous octets of block data starting at therange in which water is a liquid can be represented in a single-octet SDNV-8. Inindicated offset (within theLTP header specification that follows, various fields inscope of theheader are definedreport) that have been successfully received so far. Reception claims MUST conform tobe of types SDNV-8 or SDNV-16 depending onthetypical range of values expected forfollowing rules: A reception claim's length shall never be less than 1 and shall never exceed thefield. If a field indifference between theheader carries a number that typically requires 16 bits to encode, but under certain infrequent conditions may grow longerupper andrequire, say, 32 bits to encode, it might be optimal to specify it as an SDNV-16 insteadlower bounds ofspecifyingthefield asreport segment. The offset of afixed 32 bit integer. However, SDNV is clearly not the best way to represent every numeric value. Whenreception claim shall always be greater than themaximum possible valuesum ofa number is known without question,thecostoffset and length ofan additional 8 bitsthe prior claim, if any. The sum ofdiscriminant may not be justified. For example, an SDNV-8 isapoor way to represent an integer whose value typically falls inreception claim's offset and length and therange 128 to 255. In general, though, we believe that SDNV representationlower bound ofselected numeric values in LTP segments yieldsthesmallestreport segmentsizes without sacrificing scalability. (16) Client Service Instance A software entity, such as an application or a higher-layer protocol implementation, that is using LTP to transfer data. 5. Overall Operation 5.1 Nominal Operation The nominal sequenceshall never exceed the upper bound of the report segment. Implied requests for retransmission ofevents in an LTP transmission session is as follows. Operation begins when aclient serviceinstance asksdata can be inferred from anLTP engine to transmit aRS's data reception claims. However, *nothing* can be inferred regarding reception of block data at any offset equal to or greater than the segment's upper bound or at any offset less than the segment's lower bound. For example, if the scope of aremote client service instance. The sending Burleighreport segment has lower bound 0 and Ramadas et al. Expires -JanuaryJune 2005 [Page18]15] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004engine opens a Sending State Record (SSR) for a new session, thereby starting the session,upper bound 6000, andnotifies the client service instance that the session has been started. The sending engine then initiates an original transmission: it queues for transmission as many data segments as are necessary to transmit the entire block, within the constraints on maximum segment size imposed by the underlying communication service. The last such segment is marked as a checkpoint, indicating thatthereceiving engine must issuereport contains a single data receptionreport upon receiving the segment,claim with offset 0 andas an EOB, indicating thatlength 6000, then thereceiving engine can calculatereport signifies successful reception of thesizefirst 6000 bytes of theblock by summingblock. If theoffset andtotal length of thedata in the segment. Atblock is 6000, then thenext opportunity, subject to allocationreport additionally signifies successful reception ofbandwidth to the queue into which the block data segments were written, the enqueued segments are transmitted totheLTP engine servingentire block. If on theremote client service instance. A timer is started forother hand, theEOB, so that it can be retransmitted automatically if no response is received. On receptionscope ofthe first dataa report segmentfor the block,has lower bound 1000 and upper bound 6000, and thereceiving engine opens a Receiving State Record (RSR) forreport contains two data reception claims, one with offset 0 and length 2000 and thenew sessionother with offset 3000 andnotifieslength 500, then thelocal instancereport signifies successful reception only of bytes 1000-2999 and 4000-4499 of therelevant client serviceblock. From this we can infer thatthe session has been started. In the nominal case it receives all segmentsbytes 3000-3999 and 4500-5999 of theoriginal transmission without error. Therefore onblock need to be retransmitted, but we cannot infer anything about reception of theEOB data segment it responds by (a) queuing for transmission tofirst 1000 bytes. 3.2.3 Report Acknowledgment Segment The content of an RA is simply thesending engine areportsegment indicating complete reception and (b) delivering the received block to the local instanceserial number of theclient service. At the next opportunity, the enqueued report segment is immediately transmittedRS in response to which thesending engine and a timer is started so that the reportsegmentcan be retransmitted automatically if no response is received. The sending engine receiveswas generated. Report serial number [SDNV-8] This field returns the reportsegment, turns offserial number of thetimer forRS being acknowledged. 3.2.4 Session Management Segments Note: theEOB, enqueuesreason we use different cancel segment types fortransmission tothereceiving engine a report-acknowledgment segment, notifies the local client service instance that the block has been successfully transmitted,originator andcloses the SSR for the session. At the next opportunity, the enqueued report-acknowledgment segmentrecipient isimmediately transmittedtothe receiving engine. The receiving engine receives the report-acknowledgment segment, turns off the timer for the report segment, and closes the RSR for the session. Closing both the SSR and RSR forallow asession terminatesloopback mode to work without disturbing any replay protection mechanism in use. Cancel segments (Cx) carry a single byte reason-code with the following semantics : Reason-Code Mnemonic Semantics ----------- -------- --------------------------------------- 00 CNCLD Client Service canceled session.Burleigh01 UNREACH Unreachable Client Service. 02 RLEXC Retransmission limit exceeded. 03 MISCOLORED Received either a red-part data segment at block offset above any green-part data segment offset or a green-part data segment at block offset below any red-part data segment offset. Ramadas et al. Expires -JanuaryJune 2005 [Page19]16] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 20045.2 Retransmission Loss or corruption of transmitted segments causes the operation04-FF Undefined The Cancel-acknowledgments (CAx) have no content. 3.3 Segment Trailer The segment trailer consists ofLTP to deviate from the nominala sequence ofeventsfrom zero to 15 extension TLVs as described in Section 3.1.4 above.Loss of one or more data segments other than the EOB triggers data retransmission: Rather than returning a single reception report indicating complete reception,4. Requests from Client Service In all cases thereceiving engine returnsrepresentation of request parameters is areception report comprising as many report segmentslocal implementation matter, as areneeded in order to reportvalidation of parameter values and notification of the client service indetail on all data reception for this session (other than data receptionthe event thatwas previously reported in responsea request is found toany discretionary checkpoints), within the constraints on maximum segment size imposed by the underlying communication service. [Still, only one report segment is normally returned; multiple report segments are needed only when a large number of segments comprising non-contiguous intervalsbe invalid. 4.1 Transmission Request In order to request transmission of a blockdata are lost.] A timer is started for each report segment. On receptionofeach report segmentclient service data, thesendingclient service MUST provide the following parameters to LTP: Client service ID Destination LTP enginerespondsID Client service data to send, asfollows: It turns off the timer for the checkpoint referenced byan array of bytes. Length of thereport segment, if any. It enqueues a reception-acknowledgment segment acknowledgingdata to be sent. This value MUST NOT exceed thereport segment (to turn offlargest numeric value that can be represented in an SDNV-8. Length of thereport retransmission timer atred-part of thereceiving engine).data. Thissegment is sent immediately at the next transmission opportunity. If the reception claimsvalue MUST be in thereport segment indicate that not all data withinrange from zero to thescope have been received, it normally initiates a retransmission by enqueuing alltotal length of datasegments not yet received. The last such segment is markedto be sent. On reception of acheckpoint and containsvalid transmission request from a client service, LTP proceeds as follows. First thereport serial numberarray ofthe report segmentdata towhich the retransmission is a response. These segments are likewisebe sentatis subdivided as necessary, with each subdivision serving as thenext transmission opportunity, but subject to allocationclient service data ofbandwidth to the queue into which the retransmissiona single new LTP datasegments were written. A timer is startedsegment. The algorithm used for subdividing thecheckpoint, so thatdata is a local implementation matter; itcan be retransmitted automatically if no responsive report segmentisreceived. However,expected that data size constraints imposed by the underlying communication service, if any, will be accommodated in this algorithm. The last (and only thenumberlast) ofcheckpoints issued for this session has reachedthe resulting data segments must be marked as the EOB. Note that segment type indicates that the client service data in apredefined limit (established by network management), thengiven LTP segment either is or is not in thereceiving engine instead cancelsred-part of thesession as described later. Burleighblock. Ramadas et al. Expires -JanuaryJune 2005 [Page20]17] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004On the other hand, if the reception claims in the reportTo prevent segmentindicate that alltype ambiguity, each datawithinsegment MUST contain either only red-part data or only green-part data. Note that this implies that, when thescopelength of thereport segment have been received,block's red-part is N and theuniontotal length ofall reception claims received so far in this session indicate that all data in the block have been received, then the sending engine notifies the local client service instance thatthe blockhas been successfully transmittedM, andcloses the SSR forN is not equal to M, thesession. On reception(N+1)st byte ofa checkpoint segment with a non-zero report serial number, the receiving engine first turns offthetimer forblock MUST be thereferenced report segment. Then it returns a reception report comprising as many report segments as are needed in order to reportfirst byte of client service data indetail on allsome green-part datareception withinsegment. If thescopelength of thereferenced report segment, withinblock's red-part is greater than zero, then theconstraints on maximumlast data segment containing red-part data must be marked as the EORP segmentsize imposedby setting theunderlying communication service; a timerappropriate segment type flag bits [Sec 3.1.2]. Zero or more preceding data segments containing red-part data (selected according to an algorithm that isstarted for each report segment. If at this point alla local implementation matter) MAY additionally be marked to serve as additional discretionary checkpoints [Sec 3.1.2]. All datainsegments are appended to theblock have been received,(conceptual) application data queue for transmission. Finally, a session start notice [Sec 6.1] is sent back to thereceiving engine deliversclient service that requested thereceived blocktransmission. 4.2 Cancellation Request In order tothe local instancerequest cancellation of a session, either as sender or as receiver of the associated data block, the client serviceand closesmust provide to LTP theRSR forsession ID of thesession; otherwisesession to be canceled. On reception of a valid cancellation request from a client service, LTP proceeds as follows. First thedata retransmission cycle continues. However,internal "Cancel session" procedure [Sec 5.19] is invoked. Next, if thenumber of reception reports issued for thissessionhas reached a predefined limit (establishedis being canceled bynetwork management), thenthereceiving engine instead cancelsblock sender (i.e., the sessionas described later. The detailed rules under which reception reports are produced are defined in Sec 5.2.1. Loss of an EOB or other checkpoint segment, ororiginator part of theresponsive report segment causessession ID supplied in thecheckpoint timer to expire. When this occurs,cancellation request is thesendinglocal LTP enginenormally retransmits the checkpoint segment. However, ifID): If none of thenumberdata segments previously queued for transmission as part oftimesthischeckpoint hassession have yet beenretransmitted has reached a predefined limit (established by network management), then the sending agent instead cancels the session. Similarly, loss of a report segment or of the responsive report- acknowledgment segment causes the report segment's timer to expire. When this occurs, the receiving engine normally retransmits the report segment. However,de-queued and radiated - i.e., if thenumberdestination engine cannot possibly be aware oftimesthisreport segment has been retransmitted has reached a predefined limit (established by network management),session - then thereceiving agent instead cancelssession is simply closed; thesession. Reception of"Close session" procedure [Sec 5.20] is invoked. Otherwise, apreviously received report segment that was retransmitted due to loss of an report-acknowledgment segment causes another responsive report-acknowledgment segment toCS with reason-code CNCLD MUST betransmitted, but is otherwise ignored; if any ofqueued for transmission to thedata retransmitteddestination LTP engine specified inresponse tothepreviously received report segment were lost, further Burleightransmission request that started this session. Otherwise (i.e., the session is being canceled by the block receiver): Ramadas et al. Expires -JanuaryJune 2005 [Page21]18] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004retransmission of those data will be requested by one or more new report segments issued in response to that earlier retransmission's checkpoint. Thus unnecessary retransmissionIf there issuppressed. 5.2.1 Reception Reporting Rules The upperno transmission queue-set boundof a synchronous reception report isfor theupper bound ofblock sender (possibly because thecheckpoint segment to which it responds. The upper bound of an asynchronous reception reportlocal LTP engine isthe maximum upper bound value among all data segments received so far in the affected session. The lower bound ofrunning on aprimary reception reportreceive- only device), then the session is simply closed; theupper bound of the previously issued primary reception report for the same session, if any; otherwise it"Close session" procedure [Sec 5.20] iszero. The lower bound ofinvoked. Otherwise, asecondary reception report is the lower bound of the report segmentCR with reason-code CNCLD MUST be queued for transmission towhich the triggering checkpoint was itself a response. Asynchronous reception reports are never issued afterthearrival ofblock sender. 5. Internal Procedures This section describes theEOB segment for a session. A reception report comprises as many reception segments asinternal procedures that arenecessary to report on all data reception intriggered by thescopeoccurrence of various events during thereception report, withinlife-time of theconstraints on maximum segment size imposed byLTP session. Whenever theunderlying communication service. [Again, a reception report normally comprises only a single reception segment; multiple report segments are needed only when a large number of segments for non-contiguous intervalscontent ofblock data are lost.] The lower boundany of thefirst report segmentfields ofa reception report is the reception report's lower bound;theupper boundheader of any received LTP segment does not conform to this specification document, thelast reportsegment is assumed to be corrupt and MUST be discarded immediately and processed no further. This procedure supersedes all other procedures described below. All internal procedures described below that are triggered by the arrival of areception report isdata segment are superseded by thereception report's upper bound. 5.2.2 Design Rationale Notefollowing procedure in the event that theresponsibility for responding toclient service identified by the data segmentloss indoes not exist at the local LTP engine: If there isshared betweenno transmission queue-set bound for the block senderand receiver of(possibly because the local LTP engine is running on ablock:receive- only device), then thesender retransmits checkpoint segments in response to checkpoint timeouts, and it retransmits non-checkpointreceived datasegments in response to reception reports indicating incomplete reception, whilesegment is simply discarded. Otherwise, if thereceiver additionally retransmits report segments in responsedata segment contains data from the red-part of the block, a CR with reason-code UNREACH MUST be enqueued for transmission totimeouts. An alternative design would have beenthe block sender. A CR with reason-code UNREACH SHOULD be similarly enqueued for transmission tomakethe data senderresponsible for all retransmission,even if the data segment contained data from the green-part of the block; note however that (for example) inwhichthe case where the block receiverwouldknows that the sender of this green-part data is functioning in a "beacon" (transmit-only) fashion, a CR need notexpect report-acknowledgment segmentsbe sent. In either case the received data segment is discarded. 5.1 Start Transmission This procedure is triggered by arrival of a link state cue indicating the start of transmission to a specified remote LTP engine. Response: the de-queuing andwould not retransmit report segments. There are two disadvantagesdelivery of segments tothis approach: Burleighthe LTP engine specified in the link state cue begins. 5.2 Start Checkpoint Timer Ramadas et al. Expires -JanuaryJune 2005 [Page22]19] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004First, because of constraints on segment size that might be imposedThis procedure is triggered by arrival of a link state cue indicating theunderlying communication service, it is at least remotely possible thatde-queuing (for transmission) of a CP segment. Response: theresponse to any single checkpoint might be multiple report segments. An additional sender-side mechanism for detecting and appropriately responding to the loss of some proper subsetexpected arrival time ofthose reception reports wouldthe RS that will beneeded. We believeproduced on reception of this CP segment is computed, and a countdown timer for this arrival time is started. However, if it is known that thecurrent designremote LTP engine has ceased transmission [Sec 5.5], then this timer issimpler. Second,immediately suspended, because the computed expected arrival time may require anengineadjustment thatreceives a block needs a way to determine when the session cancannot yet beclosed. In the absencecomputed. 5.3 Start RS Timer This procedure is triggered by arrival ofexplicit final report acknowledgment (which entails retransmissiona link state cue indicating the de-queuing (for transmission) of an RS. Response: thereport in caseexpected arrival time of thelossRA that will be produced on reception of this RS is computed, and a countdown timer for this arrival time is started. However, if it is known that thereport acknowledgment),remote LTP engine has ceased transmission [Sec 5.5], then this timer is immediately suspended, because thealternatives are (a) to closecomputed expected arrival time may require an adjustment that cannot yet be computed. 5.4 Stop Transmission This procedure is triggered by arrival of a link state cue indicating thesession immediately on transmissioncessation of transmission to a specified remote LTP engine. Response: thereport segment that signifies complete receptionde-queuing and(b)delivery toclosethesession on receiptunderlying communication system ofan explicit authorizationsegments from traffic queues bound for thesender. In case (a), loss of the final report segment would cause retransmission of a checkpoint byLTP engine specified in thesender, but the session would no longer exist at the time the retransmitted checkpoint arrived; the checkpoint could reasonably be interpreted as the first data segmentlink state cue ceases. 5.5 Suspend Timers This procedure is triggered by arrival of anew block, most of which was lost in transit, andlink state cue indicating theresult would be redundant retransmissioncessation of transmission from a specified remote LTP engine to theentire block. In case (b),local LTP engine. Normally, this event is inferred from advance knowledge of theexplicit session termination segment andremote engine's planned transmission schedule. Response: countdown timers for theresponsive acknowledgment byacknowledging segments that thereceiver (needed in orderremote engine is expected toturn offreturn are suspended as necessary based on thetimer forfollowing procedure. The nominal acknowledge transmission time is computed as thetermination segment, which in turn would be needed in case of in- transit loss or corruptionsum ofthat segment) would somewhat complicatetheprotocol, increase bandwidth consumption, and retard the releasetransmission time ofsession state resources atthesender. Again we believeoriginal segment (to which thecurrent design is simpleracknowledging segment will respond) andmore efficient. 5.3 Accelerated Delivery The receiving engine normally delivers block data content totheclient service only atone-way light time to themoment when receptionremote engine, plus N seconds ofthe block"additional anticipated latency" (AAL) encompassing anticipated transmission delays other than signal propagation time. N iscompleteddetermined in an implementation-specific Ramadas et al. Expires -that is, on reception ofJune 2005 [Page 20] Internet Draft LTP - Specification December 2004 manner. For example, when LTP is deployed in deep space vehicles, thelast not-yet-received segment ofone-way light time to theblock. For some applications however, itremote engine may bedesirable to deliver block data content incrementally, upon arrival, because portions of the block mayvery large while N normally need only reflect processing and queuing delay margin; it can beindividually usefula network management parameter, for which 2 seconds seems tothe client service. When the client service requests accelerated delivery ofbe ablock, the arrivalreasonable default value. As another example, when LTP is deployed in a terrestrial "data mule" environment, one-way light time latency is effectively zero while N may need to be some dynamically computed function ofeach newthe datasegment causesmule circulation schedule. If thereceiving engine to delivernominal acknowledge transmission time is greater than or equal to theclient service the data content ofcurrent time (i.e., the acknowledging segmenttogether with the segment's offset within the block. The client service assumes all responsibilitymay be presented forreassemblingtransmission during theblock; upon completion of reception,time that transmission at thereceivingremote enginejust delivers the final data segment's content and offset to the client service as usual but additionally indicates that receptionisnow complete. Burleigh et al. Expires - January 2005 [Page 23] Internet Draft Licklider Transmission Protocol July 2004 5.4 Accelerated Retransmission Datasuspended), then the countdown timer for this acknowledging segmentretransmission occurs only on receiptis suspended. 5.6 Resume Timers This procedure is triggered by arrival of areport segmentlink state cue indicatingincomplete reception; report segments are normally transmitted only attheendstart ofan originaltransmissionor retransmission. For some applications it may be desirablefrom a specified remote LTP engine totrigger data segment retransmission incrementally duringthecourselocal LTP engine. Normally, this event is inferred from advance knowledge ofan original transmission so thattheretransmitted segments arrive sooner. This can be accomplished in two ways: Any dataremote engine's planned transmission schedule. Response: expected arrival time is adjusted for every acknowledging segmentprior tothat thelast one inremote engine is expected to return, for which the countdown timer has been suspended. In each case, expected arrival time is increased by a transmissioncan additionally be flaggeddelay interval that is calculated asa checkpoint. Receptionfollows: The nominal acknowledge transmission time is computed as the sum ofeach checkpoint causesthereceiving engine to issue a reception report. At anytransmission timeduringof the originaltransmission of a session (that is, prior to reception ofsegment (to which theEOB),acknowledging segment will respond) and thereceiving engine can unilaterally issue additional "asynchronous" reception reports. Note thatone-way light time to theCFDP protocol's "Immediate" mode is an example of this sortremote engine, plus N seconds ofasynchronous reception reporting; see Sec 12. The reception reports generated for accelerated retransmission are processed in exactlyAAL [Sec 5.5]. If thesame way asnominal acknowledge transmission time is greater than thestandard reception reports. Note that checkpoints and reception reports transmitted to perform accelerated retransmission are discretionary in nature and are sent unreliably, i.e. no timers are started upon theircurrent time i.e., the remote engine resumed transmission prior toretransmit them automatically later. 5.5 Session Cancellation A transmission session may be canceled by eitherpresentation of thesending oracknowledging segment for transmission, then thereceiving engine, in response either to a request fromtransmission delay interval is zero. Otherwise, thelocal client service instance or to an LTP operational failure as noted earlier. Session cancellationtransmission delay interval isaccomplishedcomputed asfollows. The canceling engine deletes all currently queued segments for the session and notifiesthelocal instance ofcurrent time less theaffected client service thatnominal acknowledge transmission time. After adjustment of expected arrival time, each of thesessionsuspended countdown timers iscanceled. If no segments for this session have yet been sent to or received from the corresponding LTP engine, then at this point the canceling engine simply closes its state record for the session and cancellationresumed. 5.7 Retransmit Checkpoint This procedure iscomplete. Otherwise, the canceling engine queues for transmission totriggered by thecorresponding engineexpiration of asession cancellationcountdown timer associated with a CP segment.At the next opportunity, subject to allocation of bandwidth to the queue into which the cancellation segment was written, the enqueued cancellation segment is transmitted to the LTP engine serving the BurleighRamadas et al. Expires -JanuaryJune 2005 [Page24]21] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004remote client service instance. A timer is started for the segment, so that it can be retransmitted automaticallyResponse: ifno response is received. The corresponding engine receivesthecancellation segment, enqueuesnumber of times this CP segment has been queued for transmissiontoexceeds thecanceling engine a cancellation- acknowledgment segment, deletes all other currently queued segmentscheckpoint retransmission limit established for theindicated session, notifies thelocalclient service instance that the block has been canceled, and closes its state record for the session. AtLTP engine by network management, then thenext opportunity,session of which theenqueued cancellation-acknowledgmentsegment isimmediately transmitted to the canceling engine. The canceling engine receives the cancellation-acknowledgment, turns offone token is canceled: thetimer for"Cancel session" procedure [Sec 5.19] is invoked, a CS with reason-code RLEXC is appended to thecancellation segment,(conceptual) application data queue, andcloses its state record for the session. Loss ofa transmission cancellationsegment or of the responsive cancellation- acknowledgment causesnotice [Sec 6.5] is sent back to thecancellationclient service that requested the transmission. Otherwise, a new copy of the CP segmenttimeris appended toexpire. When this occurs,thecanceling engine normally retransmits(conceptual) application data queue. 5.8 Retransmit RS This procedure is triggered by either (a) expiration of a countdown timer associated with an RS or (b) reception of a CP segment whose checkpoint serial number is equal to that of one or more previously issued RSs for thecancellation segment. However,same session -- an unnecessarily retransmitted checkpoint. Response: if the number of timesthis cancellation segmentany affected RS has beenretransmitted has reached a predefinedqueued for transmission exceeds the report retransmission limit(establishedestablished for the local LTP engine by networkmanagement),management, then thecanceling agent instead simply closes its state record for the session. 5.6 Unreliable Transmission For operational conditions insession of which themassive statefulness of LTP reliabilitysegment isunsupportable or unnecessary, LTP can perform unreliable transmission. In unreliable mode all retransmission and session cancellation capabilities are disabled, but LTP's block segmentation and reassembly, deferred transmission, bandwidth management, and interface toone token is canceled: theunderlying communication service may still make it useful to client services. The nominal sequence of events in an unreliable transmission session"Cancel session" procedure [Sec 5.19] ismuch simplified. Operation begins wheninvoked, aclient service instance asks anCR with reason-code RLEXC is queued for transmission to the LTP engineto transmitthat originated the session, and ablock unreliablyreception cancellation notice [Sec 6.6] is sent toa remotethe client serviceinstance. The sending engine queues for transmission as manyidentified in each of the data segmentsas are necessaryreceived in this session. Otherwise, a new copy of each affected RS is queued for transmission totransmit the entire block, withintheconstraints on maximum segment size imposed byLTP engine that originated theunderlying communication service. The last such segmentsession. 5.9 Signify Red-Part Reception This procedure ismarked an EOB signifying thattriggered by thereceiving engine can calculatearrival of a CP segment when the EORP for this session has been received (ensuring that the size of theblock by summingdata block's red-part is known; this includes theoffsetcase where the CP segment itself is the EORP segment) andlengthall data in the red-part of thedatablock being transmitted in thissegment. Note that thissession have been received. Response: a red-part reception notice [Sec 6.3] is sent to the specified client service. 5.10 Signify Green-Part Segment Arrival This procedure is triggered by the arrival of a data segment whose content isan EOB but notacheckpoint. Burleighportion of the green-part of a block. Ramadas et al. Expires -JanuaryJune 2005 [Page25]22] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004AtResponse: a green-part segment arrival notice [Sec 6.2] is sent to thenext opportunity, subjectspecified client service. 5.11 Send Reception Report This procedure is triggered by either (a) reception of a CP segment whose checkpoint serial number is not equal toallocationthat ofbandwidthany previously issued RS or (b) an implementation-specific circumstance pertaining tothe queue into which thea particular blockdata segments were written,reception session for which no EORP has yet been received ("asynchronous" reception reporting). Response: if theenqueued segments are transmitted tonumber of reception problems detected for this session exceeds a limit established for the local LTP engineservingby network management, then theremote client service instance. The arrival of each data segment causesaffected session is canceled: thereceiving engine to deliver"Cancel session" procedure [Sec 5.19] is invoked, a CR with reason- code RLEXC is issued and is, in concept, appended to theclient service the data contentqueue ofthe segment together with the segment's offset within the block. The client service assumes all responsibilityinternal operations traffic bound forreassembling the block. Upon arrival of the EOB segment,thereceivingLTP enginejust deliversthatfinal data segment's contentoriginated the session, andoffseta reception cancellation notice [Sec 6.6] is sent to the client serviceas usual but additionally indicates that reception of the block is now complete. Loss or corruption of transmitted data segments is not recoverableidentified inthis mode. Losseach of theEOB is particularly troublesome: the receiving client service instance cannot readily distinguish between actualdataloss and very severe queuing delaysegments received in thiscase, andsession. One possible limit on reception problems would be thetotal sizemaximum number ofthe blockreception reports which canneverbeknown. Butissued forsome applications (e.g., continuous telemetry streaming), or in deployment overany single session. If such limit is not reached, areliable link-layer protocol, this deficiency may be unimportant. 6. Functional Model The functional model underlying the specification of LTPreception report isoneissued as follows. If production ofdeferred, opportunistic transmission, with access totheactive transmission link apportioned among multiple outbound traffic queues. The accuracy of LTP retransmission timers depend in large part on a faithful adherence to this model. 6.1 Deferred Transmission Every outbound LTP segment is appended to onereception report was triggered by reception ofseveral conceptual queues -- forminga"queue set" -- of trafficcheckpoint: The upper boundforof theLTP engine that is that segment's destination. One such conceptual traffic queue is designatedreport SHOULD be the"internal operations queue"upper bound (the sum ofthat queue set,the offset and length) of thequeue set includes at least one additional conceptual queue for applicationcheckpoint datatransmission. The production and enqueuingsegment, to minimize unnecessary retransmission. Note: For deployments where bandwidth economy is not critical, the upper bound of asegment andsynchronous reception report MAY be thesubsequent actual transmission of that segment aremaximum upper bound value among all red-part data segments received so far inprinciple wholly asynchronous. Intheevent that (a) a transmission link toaffected session. If thedestinationcheckpoint was itself issued in response to a report segment, then this report iscurrently active and (b)a "secondary" reception report. In that case thequeuelower bound of the report SHOULD be the lower bound of the report segment to which the triggering checkpoint was itself agiven outbound segment is appendedresponse, to minimize unnecessary retransmission. Note: For deployments where bandwidth economy isotherwise empty and (c)not critical, the lower bound of the report MAY instead be zero. If the checkpoint was not issued in response to a report segment, thisqueuereport isdetermined to havea "primary" reception report. The lower bound of thehighest transmission priority among all outbound traffic Burleighfirst primary reception report issued for any session MUST be Ramadas et al. Expires -JanuaryJune 2005 [Page26]23] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004queues associated with that destination,zero. The lower bound of each subsequent primary reception report issued for thesegment willsame session SHOULD betransmitted immediately upon production. Transmission of a newly queued segment is necessarily deferred in all other circumstances. Conceptually,thede-queuing of segments from traffic queuesupper boundfor a given destination is initiated upon receptionofa link state cue indicating thattheunderlying communication system is now transmitting to that destination, i.e.,prior primary reception report issued for thelinksession, tothat destinationminimize unnecessary retransmission. Note: For deployments where bandwidth economy isnow active. It ceases uponnot critical, the lower bound of every primary reception report MAY be zero. If production ofa link state cue indicating thattheunderlying communication systemreception report isno longer transmitting to that destination, i.e., the link to that destination is no longer active. Note: in"asynchronous" as noted above: The upper bound of thefollowing discussion,report MUST be thede-queuingmaximum upper bound among all red-part data segments received so far for this session. The lower bound ofa segment always implies delivering it totheunderlying communication system for immediate transmission. 6.2 Bandwidth Management We believe it is necessaryfirst asynchronous reception report issued forLTP to provide a mechanismany session forapportioning access towhich no other primary reception reports have yet been issued MUST be zero. The lower bound of each subsequent asynchronous reception report SHOULD be theactive transmission link, possibly unevenly, among multiple classesupper bound ofclient service data traffic, and atthesame time to provide a minimum-latency control channelprior primary reception report issued foracknowledgment traffic. One such mechanism is described below, but note that hardware limitations or other management considerations might render this bandwidth management model sub-optimal or infeasible. In casesthe session, to minimize unnecessary retransmission. Note: For deployments wheremore optimalbandwidthqueue management mechanisms are available, implementations are free to use them. We strongly recommend at least providing a minimum-latency path for control traffic to enable efficient protocol operation. Althougheconomy is not critical, thechoicelower bound ofbandwidth management mechanism may have an impact on protocol performance, it will not affect interoperability; an LTP implementation using a different bandwidth management model or none at all may stillevery asynchronous reception report MAY bedeemed compliant with this specification.zero. In all cases, if theproposed model, one physical traffic queue for each destination is strictly reserved forapplicable lower bound of theconceptual internal operations queue: it contains onlyscope of a reportand acknowledgment segments (collectively, "acknowledging segments"), which mustis determined to betransmitted promptlygreater than or equal toprotect timer accuracy. A second physical queue for each destination is reserved for segmentsthe applicable upper bound (e.g., due to out-of-order arrival of discretionary checkpoints) then the reception report MUST NOT be issued. Otherwise: As many RSs must be producedin sessions designatedas"priority" sessions. Other physical traffic queues supported by a given LTP enginearefor segments producedneeded innon-priority sessions, typically of varying levelsorder to report on all data reception within the scope ofurgency.the report, given whatever data size constraints are imposed by the underlying communication service. Theclient service specifiesRSs are, in concept, appended to the queueto be usedof internal operations traffic bound fortransmitting a given block - eitherthepriority session queue or oneLTP engine that originated the indicated session. The lower bound of thenon- priority session queues - Burleigh et al. Expires - January 2005 [Page 27] Internet Draft Lickliderfirst RS of the report MUST be the reception report's lower bound. The upper bound of the last RS of the report MUST be the reception report's upper bound. 5.12 Signify TransmissionProtocol July 2004Completion This procedure is triggered at the earliest timetransmissionat which (a) all data in the block are known to have been transmitted *and* (b) the entire red-part of the block - if of non-zero length - isrequested. While the linkknown toa given destinationhave been successfully received. Condition (a) isactive, continuous iterationsignaled by arrival ofthe following algorithm governsa link state cue indicating the de-queuing (for transmission) ofsegments fromthephysical traffic queues boundEOB segment forthat destination: If any segments are currently intheinternal operations queue, then de-queueblock. Condition (b) is signaled by reception of an RS whose reception claims, taken together with theoldest such segment. Otherwise, if any segments are currentlyreception claims of all other RSs previously received in thepriority session queue, then de-queue the oldest such segment. Otherwise, if there are any other non-empty queues, invoke an implementation-specific algorithm to selectcourse of this session, indicate complete reception of thenext queue to transmit from and then de-queuered-part of theoldest segment in that queue. 6.3 Timersblock. Ramadas et al. Expires - June 2005 [Page 24] Internet Draft LTPrelies on accurate calculation of expected arrival times for report and acknowledgment segments in order to know when proactive retransmission is required. If- Specification December 2004 Response: acalculated time were even slightly early,transmission completion notice [Sec 6.4] is sent to theresult would be costly unnecessary retransmission. Onclient service that requested theother hand, calculated arrival times may safely be several seconds late:transmission identified in theonly penalties for late timeout and retransmission are slightly delayed data deliverysegment header andslightly delayed release ofthe sessionresources. The following discussionis closed: thebasis for LTP's expected arrival time calculations. The total time consumed in a single "round trip" (transmission and reception of the original segment, followed"Close session" procedure [Sec 5.20] is invoked. 5.13 Retransmit Data This procedure is triggered bytransmission andreception of an RS. Response: first, an RA with theacknowledging segment) hassame report serial number as thefollowing components: Protocol processing time consumedRS is issued and is, inissuingconcept, appended to theoriginal segment, receivingqueue of internal operations traffic bound for theoriginal segment, generating and issuingLTP engine that originated theacknowledging segment, and receivingindicated session. If theacknowledging segment. Outbound queuing delay: delay atRS is redundant -- i.e., either thesender ofindicated session is unknown (for example, theoriginal segment while that segmentRS isin a queue waiting for transmission, and delay atreceived after thesender ofsession has been completed or canceled), or theacknowledging segment while that segmentRS's report serial number isinequal to that of aqueue waiting for transmission. Radiation time:previously received report segment for this session -- then no further action is taken. Otherwise thetime that passes while all bits ofprocedure below is followed. If theoriginal segment are being radiated, andreport's checkpoint serial number is not zero, then thetime that passes while all bits ofcountdown timer associated with theacknowledgingindicated checkpoint segmentare being radiated. (Thisissignificant only at extremely lowdeleted. Note: All retransmission buffer space occupied by datatransmission rates.) Burleigh et al. Expires - January 2005 [Page 28] Internet Draft Licklider Transmission Protocol July 2004 Round-trip light time: propagation delay at the speed of light,whose reception is claimed inboth directions. Inbound queuing delay: delay atthereceiverreport segment can be released. If the segment's reception claims indicate incomplete data reception within the scope of theoriginal segment while that segment is inreport segment: If the number of transmission problems for this session exceeds areception queue, and delay atlimit established for thereceiverlocal LTP engine by network management, then the session of which theacknowledging segment while thatsegment isinone token is canceled: the "Cancel session" procedure [Sec 5.19] is invoked, areception queue. Delay inCS with reason-code RLEXC is appended to the transmissionofqueue specified in theacknowledging segment due to loss of connectivity -transmission request thatis, interruption in outbound link activity atstarted this session, and a transmission cancellation notice [Sec 6.5] is sent back to thesender ofclient service that requested theacknowledging segment due to occultation, scheduled end of tracking pass, etc. In this context, where errorstransmission. One possible limit on transmission problems would be theordermaximum number ofseconds or even minutesretransmission CP segments which may betolerated, processing time at each end of the session is assumed to be negligible. Inbound queuing delay is also assumed to be negligible because, even on small spacecraft, LTP processing speeds are high compared to data transmission rates. Two mechanisms are used to make outbound queuing delay negligible: The expected arrival time of an acknowledging segment is not calculated until the momentissued for any single session. If theunderlying communication system notifies LTP that radiationnumber ofthe original segment has begun. All outbound queuing delaytransmission problems forthe original segmentthis session hasalready been incurred at that point. The bandwidth management mechanism [Sec 6.2] is expected to minimize latency in the delivery of acknowledgingnot exceeded any limit, new data segments(reports and acknowledgments) to the underlying communication system. For example, inencapsulating all block data whose non-reception is implied by theexample bandwidth management model described in Sec 6.2, acknowledging segmentsreception claims arealwaysappended to thephysical internal operations queue. This limits outbound queuing delay for an acknowledging segment to the time needed to de-queue and radiate all other acknowledging segments that are currentlytransmission queue specified in the transmission request thatqueue. Since acknowledging segments are sent infrequentlystarted this session. The last - andare normally very small, outbound queuing delay for a given acknowledgingonly the last - such segmentis likely tomust beminimal. Radiation delay at each end of the session is simplymarked as a CP segmentsize divided by transmission data rate. It is insignificant except when data rate is extremely low (e.g., 10 bps), in which caseand must contain theusereport serial number ofLTP may well be inadvisable for other reasons. Therefore radiation delay is normally assumed to be negligible. And we assume that one-way light time tothenearest second can Burleighreceived RS. Ramadas et al. Expires -JanuaryJune 2005 [Page29]25] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004always be known (e.g., provided by the operating environment). So the initial expected arrival time for each acknowledging segment5.14 Stop RS Timer This procedure istypically computed as simply the current time at the moment that radiationtriggered by reception of an RA. Response: the countdown timer associated with the originalsegment begins, plus twiceRS (identified by theone-way light time, plus 2*N secondsreport serial number ofmargin to account for processing and queuing delays and for radiation time at both ends. Nthe RA segment) isa parameter set by network managementdeleted. If no other countdown timers associated with RSs exist forwhich 2 seconds seem to be a reasonable default value. This leaves only one unknown,this session, then theadditional round trip time introducedsession is closed: the "Close session" procedure [Sec 5.20] is invoked. 5.15 Start Cancel Timer This procedure is triggered bylossarrival ofconnectivity. To account for this, we again rely on externala link statecues. Whenever interruptioncue indicating the de-queuing (for transmission) oftransmission at a remote LTP engine is signaled byalink state cue, we suspendCx. Response: thecountdown timers for all acknowledging segmentsexpectedfromarrival time of the CAx thatengine. Uponwill be produced on reception of this Cx is computed and asignalcountdown timer for this arrival time is started. However, if it is known thattransmissionthe remote LTP engine hasresumed at that engine, we resume those timers after (in effect) adding to eachceased transmission [Sec 5.5] then this timer is immediately suspended, because the computed expected arrival time may require an adjustment that cannot yet be computed. 5.16 Retransmit Cancellation Segment This procedure is triggered by thelengthexpiration ofthe timer suspension interval. 7. Segment Structure Each LTP segment comprises (a)a"header" incountdown timer associated with astandard format, (b) zero or more octets of "content", (c) zero or more octets of "trailer" as indicated by information inCx. Response: if the"extensions field"number of times this Cx has been queued for transmission exceeds theheader.cancellation retransmission limit established for the local LTPsegments are of four general types, depending onengine by network management, then thenaturesession of which thecontent carried. Data segments carry client service (application) data, together with metadata enabling the receiving client service instance to receive and make use of that data. A reportsegmentcarries data reception claims together withis one token is simply closed: theupper and lower bounds"Close session" procedure [Sec 5.20] is invoked. Otherwise, a copy of thedata block scopecancellation segment (retaining the same reason-code) is queued for transmission towhichtheclaims pertain. A report-acknowledgment segment carries onlyappropriate LTP engine. 5.17 Acknowledge Cancellation This procedure is triggered by theserial numberreception of a Cx. Response: in thereport being acknowledged. Session management segments arecase oftwo general subtypes: Cancellation and Cancellation-acknowledgment. A Cancellation segment carriesasingle byte reason-code to indicate the reasonCS where there is no transmission queue-set bound for thecancellation. Cancellation-acknowledgment segments haveengine that originated the segment's session (possibly because the local LTP engine is running on a receive-only device), then nocontent. 7.1 Segment Header << Recommendations of SDNV-8 / SDNV-16 for fields inaction is taken. Otherwise: If the received segmentBurleighis a CS, a CAS is issued and is, in Ramadas et al. Expires -JanuaryJune 2005 [Page30]26] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004header as recommended in this section are under discussion. Future versions of the draft may recommend fieldsconcept, appended tobe of one SDNV type instead oftheother (SDNV-8 in placequeue ofSDNV-16,internal operations traffic bound forexample), if found to be more appropriate. >> Anthe LTP engine that sent the CS. If the received segmentheader comprises three data items:is asingle-octet control byte,CR, asession ID,CAR is issued andan extensions field. Control byte comprises the following: Version number (4 bits): MUST be setis, in concept appended to thebinary value 0000 for this versionqueue of internal operations traffic bound for theprotocol. Segment type flags (4 bits): described below. Session ID uniquely identifies, among all transmissions betweenLTP engine that sent thesegment's sender and receiver,CR. It is possible that the Cx has been retransmitted because a previous responding acknowledgment CAx was lost, in which case there will no longer be any record of the session of which the segment is one token.It comprisesIf so, no further action is taken. Otherwise: thefollowing: Session originator:"Cancel session" procedure [Sec 5.19] is invoked and a reception cancellation notice [Sec 6.6] is sent to theengine IDclient service identified in each of theLTP engine that initiated the session, in SDNV-8 representation. Session number: a numberdata segments received inSDNV-16 representation, typically a random number (for anti-DoS reasons), generated by the LTP engine identified asthis session. Finally, the sessionoriginator. The format and resolution of session number are matters that are private to the session-originating engine;is closed: theonly requirement imposed by LTP"Close session" procedure [Sec 5.20] isthat every session initiated by an LTP engine MUST be uniquely identifiedinvoked. 5.18 Stop Cancel Timer This procedure is triggered by reception of a CAx. Response: the sessionID. The extensions fieldof which the segment isdescribed in section 7.1.4 below. 7.1.1 Segment Type Flags The last four bitsone token is closed, i.e., the "Close session" procedure [Sec 5.20] is invoked. 5.19 Cancel Session This procedure is triggered internally by one of thecontrol byte inother procedures described above. Response: all segments of thesegment header are flagsaffected session thatindicateare currently queued for transmission can be deleted from thenature ofoutbound traffic queues. All countdown timers currently associated with thesegment. In order (most significant bit first), these flagssession areas follows. Control flag (CTRL) A value of 0 indicates thatdeleted. Note: If thesegmentlocal LTP engine isa data segment, while a valuethe originator of1 indicates thatthesegmentsession, then all remaining data retransmission buffer space allocated to the session can be released. 5.20 Close Session This procedure isa control segment. Exception flag (EXC) A valuetriggered internally by one of1 inthe other procedures described above. Response: any remaining countdown timers associated with the session (such as the timer associated with adata segment indicates thatCx) are deleted. The session state record (SSR|RSR) for thesegmentsession isbeing transmitted unreliably. In a control segment (CTRL flag set), this Burleighdeleted; existence of the session is no longer recognized. 5.21 Handle Miscolored Segment Ramadas et al. Expires -JanuaryJune 2005 [Page31]27] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004indicates thatThis procedure is triggered by thesegment pertains to session cancellation activity. Request flag (REQ) If set, this flag signifiesarrival of either (a) arequest for some specific response from the receiver, depending onred- part data segment whose block offset begins at an offset higher than thevaluesoffset of any green-part data segment previously received for theother flags as described below. Closure flag (CLOS) When set, this flag signifiessame session or (b) a green-part data segment whose block offset begins at an offset lower than thetermination of some elementoffset ofprotocol activity.any red-part data segment previously received for the same session. Response: the received data segment is simply discarded. Thenature ofCancel Session procedure [Sec 5.19] is invoked and a CR with reason-code MISCOLORED SHOULD be enqueued for transmission to theactivity being terminated again dependsdata sender. Note : If there is no transmission queue-set bound for the block sender (possibly because the local LTP engine is running on a receive-only device), or if thevaluesblock receiver knows that the sender of this green-part data is functioning in a "beacon" (transmit-only) fashion, a CR need not be sent. A Reception Cancellation Notice [Sec 6.6] is sent to theother flags as described below. 7.1.2 Segment Type Codes Combinationsclient service. 6. Notices to Client Service In all cases the representation of notice parameters is a local implementation matter. 6.1 Session Start The LTP engine returns thesettingssession ID of thesegment type flags CTRL, EXC, REQ and CLOS constitute segment type codes which serve as concise representationsnew transmission session when a session start notice is delivered. A session start notice informs the client service ofdetailed segment nature. CTRL EXC REQ CLOS Code Naturethe initiation ofsegment ---- ---- ---- ---- ---- --------------------------------------- 0 0 0 0 0 Data, NOTaCheckpoint, NOT EOB 0 0 0 1 1 Undefined 0 0 1 0 2 Data, Checkpoint, NOT EOB 0 0 1 1 3 Data, Checkpoint, EOB 0 1 0 0 4 Data [unreliable transmission], not EOB 0 1 0 1 5 Data [unreliable transmission], EOB 0 1 1 0 6 Undefined 0 1 1 1 7 Undefined 1 0 0 0 8 Report segment 1 0 0 1 9 Report-acknowledgment 1 0 1 0 10 Undefined 1 0 1 1 11 Undefined 1 1 0 0 12 Cancel segment from block sender 1 1 0 1 13 Cancel-acknowledgment segmenttransmission session in response toblock sender 1 1 1 0 14 Cancel segmenta transmission request fromblock receiver 1 1 1 1 15 Cancel-acknowledgment segmentthat client service. On receiving this notice the client service may, for example, release resources of its own that are allocated to the blockreceiver 7.1.3being transmitted, or remember the session ID so that the session can be canceled in the future if necessary. 6.2 Green-Part SegmentClass Masks BurleighArrival The following parameters are provided by the LTP engine when a green-part segment arrival notice is delivered: Session ID of the transmission session. Array of client service data bytes contained in the data segment. Offset of the data segment's content from the start of the Ramadas et al. Expires -JanuaryJune 2005 [Page32]28] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004Forblock. Length of thepurposesdata segment's content. Indication as to whether or not the last byte of thisspecification, some bit patterns indata segment's content is also thesegment type flags field correspond to "segment classes" that are designated by mnemonics.end of the block. Source LTP engine ID. 6.3 Red-Part Reception Themnemonicsfollowing parameters areintended to evoke the characteristics sharedprovided byall typesthe LTP engine when a red-part reception notice is delivered: Session ID ofsegments characterized by these flag bit patterns. CTRL EXC REQ CLOS Mnemonic Description ---- ---- ---- ---- -------- --------------------------- 0 0 1 - CP Checkpoint 0 - - 1 EOB Endthe transmission session. Array ofblock; block size = offset + length 1 0 0 0 RS Report segment; carries reception claims 1 0 0 1 RA Report-acknowledgment segment 1 1 0 0 CS Cancel segment from block sender 1 1 0 1 CAS Cancel-acknowledgment segment to block sender 1 1 1 0 CR Cancel segment from block receiver 1 1 1 1 CAR Cancel-acknowledgment segment to block receiver 1 1 - 0 Cx Cancel segment (generic) 1 1 - 1 CAx Cancel-acknowledgment segment (generic) 7.1.4 Extensions field The extension field contains a sequenceclient service data bytes that constitute the red-part ofzero or more extensions tothebasic segment header. The first octetblock. Length of theextensions field containsred-part of thenumberblock. Indication as to whether or not the last byte ofextensions present (thus 255the red-part is also themaximum numberend ofextensions forthe block. Source LTP engine ID. 6.4 Transmission Completion The sole parameter provided by the LTP engine when asingle segment). Intransmission completion notice is delivered is theabsencesession ID ofany extensions, this octet MUST contain zero. Each extension consiststhe transmission session. A transmission completion notice informs the client service that all bytes ofa one-octet tag identifyingthetypeindicated data block have been transmitted and the destination LTP engine has received the red-part ofextension, followed by an extension specification in SDNV-8 format.the block. 6.5 Transmission Cancellation Thediagram below shows howparameters provided by theexpansion zoneLTP engine when a transmission cancellation notice isconstructed. Burleighdelivered are: Session ID of the transmission session. The reason-code sent or received in the Cx segment that initiated the cancellation sequence. A transmission cancellation notice informs the client service that the indicated session was terminated, either by decision of the Ramadas et al. Expires -JanuaryJune 2005 [Page33]29] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004+--------+--------+---------------///-+ | #exts |ext-tag | SDNV-8 spec | +--------+--------+-------------------////-+ |ext-tag | SDNV-8 spec | +--------+-------------------////-+ |ext-tag | SDNV-8 spec | +--------+------------////-+-+ |ext-tag | SDNV-8 spec | +--------+--------------////-+ For each extension present, the segment will have a sequence of zerodestination client service instance ormore octetsdue to violation oftrailer information. Trailer information sequences appeara retransmission limit in thesame order as the corresponding extensions. The size of each trailer information sequence is extension-specific and may be determined from the tag and specification of the corresponding extension. One extension type is defined at this time. Extension tag Meaning ------------- ------- 0x00local LTPauthentication extension as defined in Section 13.3 0x01-0xff Reserved 7.2 Segment Content 7.2.1 Data Segment (DS) The content of a data segment includes client service data and metadata enablingengine. There is no assurance that thereceivingdestination client service instanceto receive and make use of that data. Client service ID [SDNV-8] The client service ID number identifiesreceived theupper-level service to whichcritical part of thesegment is to be delivereddata block. 6.6 Reception Cancellation The parameters provided by thedestinationLTPengine. It is functionally analogous toengine when awell-known TCP port number. If multiple instancesreception cancellation notice is delivered are: Session ID of the transmission session. The reason-code explaining the cancellation. A reception cancellation notice informs the client serviceare present atthat thedestination, multiplexing must be doneindicated session was terminated, either by decision of the source client serviceitself oninstance or due to error conditions at thebasis of information encoded withinlocal LTP engine. No subsequent delivery notices will be issued for this session. 7. State Transition Diagrams The following mnemonics have been used in thetransmitted block. Offset [SDNV-16] Offset indicatessender and receiver LTP state transition diagrams that follow : TE Timer Expiry RDS Regular Red Data Segment (NOT {CP|EORP|EOB}) GDS Regular Green Data Segment (NOT EOB) RL EXC Retransmission Limit Exceeded Both thelocationdiagrams have been specified in two parts such that sequence of state transitions that occur multiple times in thesegment's client service data within the session's transmitted block. It ismain diagram have been presented in thenumber of bytessecond part. Note that blocks represented in rectangles as in +---------+ | FG_XMIT | +---------+ specify actual states in theblock priorstate-transition diagrams, while blocks represented as in /\/\/\/\ | Cncld | \/\/\/\/ are not actual states but merely pointers tothe byte from which the first octeta state or a sequence of state transitions represented elsewhere in theBurleighstate transition Ramadas et al. Expires -JanuaryJune 2005 [Page34]30] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004segment's client service data was copied. Length [SDNV-16] The lengthdiagram (to avoid having multiple copies ofthe following client service data, in octets. If the data segment isacheckpoint, the segment MUST additionally include the following two serial numbers (Checkpoint serial number and Report serial number) to support efficient retransmission. Data segments that are not checkpoints MUST NOT have these two fields in the header and MUST continue on directly with the client service data. Checkpoint serial number [SDNV-8] The checkpoint serial number uniquely identifies the checkpoint among all checkpoints issued by the block sender in a session. The first checkpoint issued by the sender MUST have this serial number chosen randomly for security reasons, and it is RECOMMENDED that the sender use the guidelines in [ECS94] for this. Any subsequent checkpoints issued by the sender MUST have the serial number value found by incrementing the prior checkpoint serial number by 1. When a checkpoint segment is retransmitted however, its serial number MUST be the same as when it was originally transmitted. Report serial number [SDNV-8] If the checkpoint was queued for transmission in response to the reception of an RS [Sec 9.13], then its value MUST be the report serial number value of the RS that caused the data segment to be queued for transmission. Otherwise, the value of report serial number MUST be zero. Client service data [array of octets] The client service data carried in the segment is a copy of a subset of the bytes in the original client service data block, starting at the indicated offset. 7.2.2 Report Segment (RS) The content of an RS comprises one or more data reception claims, together with the upper and lower boundssequence ofthe scope within the data block to which the claims pertain. It also includes two serial numbers to support efficient retransmission. Burleighstate transitions, thus accomodating space constraints). Ramadas et al. Expires -JanuaryJune 2005 [Page35]31] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004Report serial number [SDNV-8] The report serial number uniquely identifies the report among all reports issued by the block receiver in a session. The first report issued by the receiver MUST have this serial number chosen randomly for security reasons, and it is RECOMMENDED that the receiver use the guidelines in [ECS94] for this. Any subsequent reports issued by the receiver MUST have the serial number value found by incrementing the last report serial number by 1. When an RS is retransmitted however, its serial number MUST be the same as when it was originally transmitted. Checkpoint serial number [SDNV-8] The value of checkpoint serial number MUST be zero if the report segment is NOT a response to reception of a checkpoint, i.e., the reception report is asynchronous; otherwise it is the checkpoint serial number of the checkpoint that caused the RS to be issued. Upper bound [SDNV-16] The upper bound of a report segment is the size of the block prefix to which the segment's reception claims pertain. Lower bound [SDNV-16] The lower bound of a report segment is the size of the (interior) block prefix to which the segment's reception claims do NOT pertain. Reception claim count [SDNV-8] The number of data reception claims in this report segment. Reception claims Each reception claim comprises two elements: offset and length. Offset [SDNV-16] The offset indicates the successful reception of data beginning at the indicated offset from the lower bound of the RS. The offset within the entire block can be calculated by summing this offset with the lower bound of the RS. Length [SDNV-16] The length of a reception claim indicates the number of Burleigh et al. Expires - January 2005 [Page 36] Internet Draft Licklider Transmission Protocol July 2004 contiguous octets of block data starting at the indicated offset (within the scope of the report) that have been successfully received so far. Reception claims MUST conform to the following rules: A reception claim's length shall never be less than 1. The offset of a reception claim shall always be greater than the sum of the offset and length of the prior claim, if any. The sum of a reception claim's offset and length shall never exceed the difference between the upper and lower bounds of the report segment. Implied requests for retransmission of client service data can be inferred from an RS's data reception claims. However, *nothing* can be inferred regarding reception of block data at any offset equal to or greater than the segment's upper bound or at any offset less than the segment's lower bound. For example, if the scope of a report segment has lower bound 0 and upper bound 6000, and the report contains a single data reception claim with offset 0 and length 6000, then the report signifies successful reception of the first 6000 bytes of the block. If the total length of the block is 6000, then the report additionally signifies successful reception of the entire block. If on the other hand, the scope of a report segment has lower bound 1000 and upper bound 6000, and the report contains two data reception claims, one with offset 0 and length 2000 and the other with offset 3000 and length 500, then the report signifies successful reception only of bytes 1000-2999 and 4000-4499 of the block. From this we can infer that bytes 3000-3999 and 4500-5999 of the block need to be retransmitted, but we cannot infer anything about reception of the first 1000 bytes. 7.2.3 Report Acknowledgment Segment The content of an RA is simply the report serial number of the RS in response to which the segment was generated. Report serial number [SDNV-8] This field returns the report serial number of the RS being acknowledged. 7.2.4 Session Management Segments Burleigh et al. Expires - January 2005 [Page 37] Internet Draft Licklider Transmission Protocol July 2004 Note : the reason we use different cancel segments for the originator and recipient is to allow a loopback mode to work without disturbing replay protection. Cancel segments (Cx) carry a single byte reason-code with the following semantics : Reason-Code Semantics ----------- ------------------------------------- 00 CNCLD Client Service canceled session 01 UNREACH Unreachable Client Service 02 RLEXC Retransmission limit exceeded 03-FF Undefined The Cancel-acknowledgments (CAx) have no content. 8. Requests from Client Service In all cases the representation of request parameters is a local implementation matter, as are validation of parameter values and notification of the client service in the event that a request is found to be invalid. 8.1 Transmission Request In order to request transmission of a block of client service data, the client service MUST provide the following parameters to LTP: Client service ID Destination LTP engine ID Data to send, as an array of bytes. Length of the data to be sent. Quality of service required: reliable or unreliable transmission. Flow-label, used as a bandwidth management hint; for example, in the example bandwidth management model described in 6.2 above it would be used to choose transmission queue within the queue-set for the LTP destination. On reception of a valid transmission request from a client service, LTP proceeds as follows. First the array of data to be sent is subdivided as necessary, with each subdivision serving as the client service data of a single new Burleigh et al. Expires - January 2005 [Page 38] Internet Draft Licklider Transmission Protocol July 2004 LTP data segment. The algorithm used for subdividing the data is a local implementation matter; it is expected that data size constraints imposed by the underlying communication service, if any, will be accommodated in this algorithm. The last (and only the last) of the resulting data segments MUST be marked as an EOB, with appropriate EOB segment flag bits set depending on reliable / unreliable transmission [Sec 7.1.2]. If the requested quality of service is reliable transmission, then all data segments resulting from subdivision of the data MUST have the EXC flag cleared. Moreover, at least the EOB segment MUST also be marked a checkpoint by having the REQ flag set; zero or more other data segments (selected according to an algorithm that is a local implementation matter) MAY additionally have the REQ flag set to indicate additional checkpoints. On the other hand, if the requested quality of service is unreliable transmission then all data segments resulting from subdivision of the data MUST have the EXC flag set and REQ flag cleared. All data segments are appended to the appropriate (conceptual) transmission queue as specified in the transmission request. Finally, a session start notice [Sec 10.1] is sent back to the client service that requested the transmission. 8.2 Cancellation Request In order to request cancellation of a session, either as sender or as receiver of the associated data block, the client service must provide to LTP the session ID of the session to be canceled. On reception of a valid cancellation request from a client service, LTP proceeds as follows. First the internal "Cancel session" procedure [Sec 9.19] is invoked. Next, if the session is being canceled by the block sender, i.e., the session originator part of the session ID supplied in the cancellation request is the local LTP engine ID: If none of the data segments previously queued for transmission as part of this session have yet been de-queued and radiated - i.e., if the destination engine cannot possibly be aware of this session - then the session is simply closed; the "Close session" procedure [Sec 9.20] is invoked. Burleigh et al. Expires - January 2005 [Page 39] Internet Draft Licklider Transmission Protocol July 2004 Otherwise, a CS with reason-code value 00 [Sec 7.2.4] MUST be queued for transmission to the destination LTP engine specified in the transmission request that started this session. Otherwise, (i.e., the session is being canceled by the block receiver): If there is no transmission queue-set bound for the block sender (possibly because the local LTP engine is running on a receive- only device), then the session is simply closed; the "Close session" procedure [Sec 9.20] is invoked. Otherwise, a CR with reason-code value 00 [Sec 7.2.4] MUST be queued for transmission to the block sender. 9. Internal Procedures This section describes the internal procedures that are triggered by the occurrence of various events during the life-time of the LTP session. Whenever the content of any of the fields of the header of any received LTP segment does not conform to this specification document, the segment is assumed to be corrupt and MUST be discarded immediately and processed no further. This procedure supersedes all other procedures described below. The data segments transmitted in the course of any single LTP session MUST either all be transmitted reliably (segment type code value less than 4) or unreliably (segment type code value greater than 3). All internal procedures described below that are triggered by the arrival of a data segment are superseded by the following procedure in the event that the client service identified by the data segment does not exist at the local LTP engine: If there is no transmission queue-set bound for the block sender (possibly because the local LTP engine is running on a receive- only device), then the data segment is simply discarded. Otherwise, if the data segment was transmitted reliably, a CR with reason-code UNREACH MUST be enqueued for transmission to the block sender; a CR with reason-code UNREACH SHOULD be similarly enqueued for transmission to the data sender if the data segment was transmitted unreliably. [For example, in the case where the block receiver knows that the sender is functioning in a "beacon" (transmit-only) fashion, a CR need not be sent]. In either case the received data segment is discarded. Burleigh et al. Expires - January 2005 [Page 40] Internet Draft Licklider Transmission Protocol July 2004 9.1 Start Transmission This procedure is triggered by arrival of a link state cue indicating the start of transmission to a specified remote LTP engine. Response: the de-queuing and delivery of segments to the LTP engine specified in the link state cue begins. 9.2 Start Checkpoint Timer This procedure is triggered by arrival of a link state cue indicating the de-queuing (for transmission) of a CP segment, provided that this segment either is the EOB for a session or else was issued in response to an RS -- i.e., the segment's report serial number is non- zero. Response: the expected arrival time of the RS that will be produced on reception of this CP segment is computed, and a countdown timer for this arrival time is started. However, if it is known that the remote LTP engine has ceased transmission [Sec 9.5], then this timer is immediately suspended, because the computed expected arrival time may require an adjustment that cannot yet be computed. 9.3 Start RS Timer This procedure is triggered by arrival of a link state cue indicating the de-queuing (for transmission) of an RS. Response: the expected arrival time of the RA that will be produced on reception of this RS is computed, and a countdown timer for this arrival time is started. However, if it is known that the remote LTP engine has ceased transmission [Sec 9.5], then this timer is immediately suspended, because the computed expected arrival time may require an adjustment that cannot yet be computed. 9.4 Stop Transmission This procedure is triggered by arrival of a link state cue indicating the cessation of transmission to a specified remote LTP engine. Response: the de-queuing and delivery to the underlying communication system of segments from traffic queues bound for the LTP engine specified in the link state cue ceases. 9.5 Suspend Timers This procedure is triggered by arrival of a link state cue indicating the cessation of transmission from a specified remote LTP engine to Burleigh et al. Expires - January 2005 [Page 41] Internet Draft Licklider Transmission Protocol July 2004 the local LTP engine. Normally, this event is inferred from advance knowledge of the remote engine's planned transmission schedule. Response: countdown timers for the acknowledging segments that the remote engine is expected to return are suspended as necessary based on the following procedure: The nominal acknowledge transmission time is computed as the sum of the transmission time of the original segment (to which the acknowledging segment will respond) and the one-way light time to the remote engine, plus N seconds of "additional anticipated latency" (AAL) encompassing anticipated transmission delays other than signal propagation time. N is determined in an implementation-specific manner. When LTP is deployed in deep space vehicles, for example, the one-way light time to the remote engine may be very large while N normally need only reflect processing and queuing delay margin; it can be a network management parameter, for which 2 seconds seems to be a reasonable default value. When LTP is deployed in a terrestrial "data mule" environment, on the other hand, one-way light time latency is effectively zero while N may need to be some dynamically computed function of the data mule circulation schedule. If the nominal acknowledge transmission time is greater than or equal to the current time (i.e., the acknowledging segment may be presented for transmission during the time that transmission at the remote engine is suspended), then the countdown timer for this acknowledging segment is suspended. 9.6 Resume Timers This procedure is triggered by arrival of a link state cue indicating the start of transmission from a specified remote LTP engine to the local LTP engine. Normally, this event is inferred from advance knowledge of the remote engine's planned transmission schedule. Response: expected arrival time is adjusted for every acknowledging segment that the remote engine is expected to return, for which the countdown timer has been suspended. In each case, expected arrival time is increased by a transmission delay interval that is calculated as follows: The nominal acknowledge transmission time is computed as the sum of the transmission time of the original segment (to which the acknowledging segment will respond) and the one-way light time to the remote engine, plus N seconds of additional anticipated latency as discussed in Sec 9.5. If the nominal acknowledge transmission time is greater than the Burleigh et al. Expires - January 2005 [Page 42] Internet Draft Licklider Transmission Protocol July 2004 current time i.e., the remote engine resumed transmission prior to presentation of the acknowledging segment for transmission, then the transmission delay interval is zero. Otherwise, the transmission delay interval is computed as the current time less the nominal acknowledge transmission time. After adjustment of expected arrival time, each of the suspended countdown timers is resumed. 9.7 Retransmit Checkpoint This procedure is triggered by the expiration of a countdown timer associated with a CP segment. Response: if the number of times this CP segment has been queued for transmission exceeds the checkpoint retransmission limit established for the local LTP engine by network management, then the session of which the segment is one token is canceled: the "Cancel session" procedure [Sec 9.19] is invoked, a CS with reason-code RLEXC is appended to the transmission queue specified in the transmission request that started this session, and a transmission cancellation notice [Sec 10.5] is sent back to the client service that requested the transmission. Otherwise, a new copy of the CP segment is appended to the transmission queue specified in the transmission request that started this session. 9.8 Retransmit RS This procedure is triggered by either (a) expiration of a countdown timer associated with an RS or (b) reception of a CP segment whose checkpoint serial number is equal to that of one or more previously issued RSs for the same session -- an unnecessarily retransmitted checkpoint. Response: if the number of times any affected RS has been queued for transmission exceeds the report retransmission limit established for the local LTP engine by network management, then the session of which the segment is one token is canceled: the "Cancel session" procedure [Sec 9.19] is invoked, a CR with reason-code RLEXC is queued for transmission to the LTP engine that originated the session, and a reception cancellation notice [Sec 10.6] is sent to the client service identified in each of the data segments received in this session. Otherwise, a new copy of each affected RS is queued for transmission Burleigh et al. Expires - January 2005 [Page 43] Internet Draft Licklider Transmission Protocol July 2004 to the LTP engine that originated the session. 9.9 Signify Segment Arrival This procedure is triggered by the arrival of a data segment, but only when either (a) the data segment is being transmitted unreliably or (b) segment arrival notification has been authorized for the local LTP engine by client service or network management. Response: a segment arrival notice [Sec 10.2] is sent to the specified client service. 9.10 Signify Block Reception This procedure is triggered by the arrival of a data segment, but only when either (a) the segment is also the EOB segment for a block being transmitted unreliably or (b) the segment is also a CP segment for a reliably transmitted block, and the EOB for this session has been received (ensuring that the data block's size is known; this includes the case where this segment itself is the EOB segment), and all data in the block being transmitted in this session have been received. Response: a block reception notice [Sec 10.3] is sent to the specified client service. 9.11 Send Reception Report This procedure is triggered by either (a) reception of a CP segment whose checkpoint serial number is not equal to that of any previously issued RS or (b) an implementation-specific circumstance pertaining to a particular block reception session for which no EOB has yet been received ("asynchronous" reception reporting). The response in either case is the same. Response: if the number of errors detected for this session exceeds a limit established for the local LTP engine by network management, then the affected session is canceled: the "Cancel session" procedure [Sec 9.19] is invoked, a CR with reason-code RLEXC is appended to the queue of internal operations traffic bound for the LTP engine that originated the session, and a reception cancellation notice [Sec 10.6] is sent to the client service identified in each of the data segments received in this session. One possible limit is to place a maximum on the number of reception reports which can be issued for the session. Otherwise, a reception report is issued as follows. Burleigh et al. Expires - January 2005 [Page 44] Internet Draft Licklider Transmission Protocol July 2004 As many RSs are produced as are needed in order to report on all data reception within the scope of the report, given whatever data size constraints are imposed by the underlying communication service. They are appended to the queue of internal operations traffic bound for the LTP engine that originated the indicated session. If production of the reception report was triggered by reception of a checkpoint: The upper bound of the report is the upper bound (the sum of the offset and length) of the checkpoint data segment. If the checkpoint was itself issued in response to a report segment, then this report is a "secondary" reception report and the lower bound of the report is that earlier report segment's lower bound. Otherwise, this report is a "primary" reception report and the lower bound of the report is the upper bound of the prior primary reception report issued for this session. Otherwise, i.e., the reception report is asynchronous: The upper bound of the report is the maximum upper bound among all data segments received so far for this session. The lower bound of the report is the upper bound of the prior primary reception report issued for this session. 9.12 Signify Transmission Completion This procedure is triggered by either (a) reception of an RS whose reception claims taken together with the reception claims of all other RSs previously received in the course of this session indicate complete reception of an entire data block, or (b) arrival of a link state cue indicating the de-queuing (for transmission) of an EOB segment for a block transmitted unreliably. Response: a transmission completion notice [Sec 10.4] is sent to the client service that requested the transmission identified in the segment header and the session is closed: the "Close session" procedure [Sec 9.20] is invoked. 9.13 Retransmit Data This procedure is triggered by reception of an RS. Response: first, an RA with the same report serial number as the RS is appended to the queue of internal operations traffic bound for the LTP engine that originated the indicated session. If the RS is redundant -- i.e., either the indicated session is unknown (for Burleigh et al. Expires - January 2005 [Page 45] Internet Draft Licklider Transmission Protocol July 2004 example, the RS is received after the session has been completed or canceled), or the RS's report serial number is equal to that of a previously received report segment for this session -- then no further action is taken. Otherwise the procedure below is followed. If the report's checkpoint serial number is not zero, then the countdown timer associated with the indicated checkpoint segment is deleted. All retransmission buffer space occupied by data whose reception is claimed in the report segment can be released. If the segment's reception claims indicate incomplete data reception within the scope of the report segment: If the number of errors for this session exceeds a limit established for the local LTP engine by network management, then the session of which the segment is one token is canceled: the "Cancel session" procedure [Sec 9.19] is invoked, a CO with reason-code RLEXC is appended to the transmission queue specified in the transmission request that started this session, and a transmission cancellation notice [Sec 10.5] is sent back to the client service that requested the transmission. One possible limit here is a maximum on the number of CP segments which may be issued for the session. Otherwise, new data segments encapsulating all block data whose non-reception is implied by the reception claims are appended to the transmission queue specified in the transmission request that started this session. The last - and only the last - such segment must be marked as a CP segment and must contain the report serial number of the received RS. 9.14 Stop RS Timer This procedure is triggered by reception of an RA. Response: the countdown timer associated with the original RS (identified by the report serial number of the RA segment) is deleted. If no other countdown timers associated with RSs exist for this session, then the session is closed: the "Close session" procedure [Sec 9.20] is invoked. 9.15 Start Cancel Timer This procedure is triggered by arrival of a link state cue indicating the de-queuing (for transmission) of a Cx. Burleigh et al. Expires - January 2005 [Page 46] Internet Draft Licklider Transmission Protocol July 2004 Response: the expected arrival time of the CAx that will be produced on reception of this Cx is computed and a countdown timer for this arrival time is started. However, if it is known that the remote LTP engine has ceased transmission [Sec 9.5] then this timer is immediately suspended, because the computed expected arrival time may require an adjustment that cannot yet be computed. 9.16 Retransmit Cancellation Segment This procedure is triggered by the expiration of a countdown timer associated with a Cx. Response: if the number of times this Cx has been queued for transmission exceeds the cancellation retransmission limit established for the local LTP engine by network management, then the session of which the segment is one token is simply closed: the "Close session" procedure [Sec 9.20] is invoked. Otherwise, a copy of the cancellation segment (retaining the same reason-code) is queued for transmission to the appropriate LTP engine. 9.17 Acknowledge Cancellation This procedure is triggered by the reception of a Cx. Response: in the case of a CS where there is no transmission queue-set bound for the engine that originated the segment's session (possibly because the local LTP engine is running on a receive-only device), then no action is taken. Otherwise: If the received segment is a CS, a CAS is appended to the queue of internal operations traffic bound for the LTP engine that sent the CS. Otherwise (the received segment is a CR), a CAR is appended to the queue of internal operations traffic bound for the LTP engine that sent the CR. It is possible that the Cx has been retransmitted because a previous responding acknowledgment CAx was lost, in which case there will no longer be any record of the session of which the segment is one token. If so, no further action is taken. Otherwise that session is locally canceled: the "Cancel session" procedure [Sec 9.19] is invoked and a reception cancellation notice [Sec 10.6] is sent to the client service identified in each of the data segments received in this session. Finally, the Burleigh et al. Expires - January 2005 [Page 47] Internet Draft Licklider Transmission Protocol July 2004 session is closed: the "Close session" procedure [Sec 9.20] is invoked. 9.18 Stop Cancellation Timer This procedure is triggered by reception of a CAx. Response: the session of which the segment is one token is closed, i.e., the "Close session" procedure [Sec 9.20] is invoked. 9.19 Cancel Session This procedure is triggered internally by one of the other procedures described above. Response: all segments of the affected session that are currently queued for transmission can be deleted from the outbound traffic queues. If the local LTP engine is the originator of the session, then all remaining data retransmission buffer space allocated to the session can be released. All countdown timers currently associated with the session are deleted. 9.20 Close Session This procedure is triggered internally by one of the other procedures described above. Response: any remaining countdown timers associated with the session (such as the timer associated with a Cx) are deleted. All other state information regarding the session is deleted; existence of the session is no longer recognized. 10. Notices to Client Service In all cases the representation of notice parameters is a local implementation matter. 10.1 Session Start The LTP engine returns the Session ID of the new transmission session when a session start notice is delivered. A session start notice informs the client service of the initiation of a transmission session in response to a transmission request from that client service. On receiving this notice the client service may, for example, release resources of its own that are allocated to the block being transmitted, or remember the Session ID so that the session can be canceled in the future. Burleigh et al. Expires - January 2005 [Page 48] Internet Draft Licklider Transmission Protocol July 2004 10.2 Data Segment Arrival The parameters provided by the LTP engine when a data segment arrival notice is delivered are: Session ID of the transmission session Array of client service data bytes contained in the data segment Offset of the data segment's content from the start of the block Length of the data segment's content Source LTP engine ID A flag indicating if this segment was an EOB segment or not. Data segment arrival notices deliver block data incrementally, as it is received. This enables the receiving client service instance to make use of partial data immediately, rather than potentially waiting hours or days for the retransmission of missing segments and the ultimate delivery of the completed block. Incremental block data delivery is mandatory for unreliable transmission, because there's never any guarantee that the EOB segment- which is required in order to deliver a complete block - will ever be received at all. Incremental delivery also enables the client service to cancel reception of a block, if necessary. 10.3 Block Reception The parameters provided by the LTP engine when a block reception notice is delivered are: Session ID of the transmission session. Array of client service data bytes that constitutes the block Length of the block. Source LTP engine ID. A block reception notice delivers a complete data block to the client service. 10.4 Transmission Completion Burleigh et al. Expires - January 2005 [Page 49] Internet Draft Licklider Transmission Protocol July 2004 The sole parameter provided by the LTP engine when a transmission completion notice is delivered is the Session ID of the transmission session. A transmission completion notice informs the client service that the indicated session has successfully completed; the destination LTP engine has received the entire data block. 10.5 Transmission Cancellation The sole parameter provided by the LTP engine when a transmission cancellation notice is delivered is the Session ID of the transmission session. A transmission cancellation notice informs the client service that the indicated session was terminated, either by decision of the destination client service instance or due to violation of a retransmission limit in the local LTP engine. There is no assurance that the destination client service instance received the data block. 10.6 Reception Cancellation The sole parameter provided by the LTP engine when a reception cancellation notice is delivered is the Session ID of the transmission session. A reception cancellation notice informs the client service that the indicated session was terminated, either by decision of the source client service instance or due to violation of a retransmission limit in the local LTP engine. The complete data block will not be delivered. 11. State Transition Diagrams The state transition diagrams for a reliable block delivery session are described in this section. The terms "sender" and "receiver" are here used to refer to the sending and receiving lobes of this single session state machine; note that any LTP engine might at any moment comprise any number of session state machine nodes of both types. The diagrams do not include the behavior of the sender and receiver under accelerated delivery or accelerated retransmission, nor in the case where a reception report must comprise multiple report segments. <<We propose to update the diagrams with the accelerated features Burleigh et al. Expires - January 2005 [Page 50] Internet Draft Licklider Transmission Protocol July 2004 in subsequent versions of this draft.>> Burleigh et al. Expires - January 2005 [Page 51] Internet Draft Licklider Transmission Protocol July 2004 11.1 Sender LTP Sender State Transition Diagram +----+ +----+ Rcv RS; Rcv CR; | V V | Snd RA Snd CAR | +-------------+--+ +--+ CLOSED |<-----------------+----+----------------+ +------+------+ ^ ^ | | | | | | Blk Trans Req | | | +----+ | | | | Snd DS | V V Rcv CAS | | CS TE, | (NOT EOB/CP) | +-------------+ | | RL EXC | +--+PRI_BLK_TRANS|==> | | | +------+------+ | | | | | | | Snd DS (EOB/CP), | | | | Start CP Tmr | | | | | | | | +-------------------+ | | | | | | | | | | | CP TE,+----+ | | | | +-------+ | | RL NOT EXC;| V V V | | V | | | Rxmt CP,| +-------------+ +---+----+----+ | | | Restart +-+ CP_SENT |==> | CANCEL_SENT |==> | | | CP Tmr +------+---+--+ +-----------+-+ | | | | | CP TE, RL EXC; ^ | | | | Rcv RS; | | Snd CS | +-------+ | | Stop CP Tmr, | | Start CS Tmr | CS TE, | | Snd RA | | | RL NOT EXC; | | V +-------------------+ Rxmt CS, | | +-------------+ Restart CS Tmr | | |CHK_BLK_RCVD |==> | | +----+-----+--+ | | Blk NOT / | Blk rcvd fully | | rcvd fully / | | | / | | | | +-------------------------------------------+ | | +--------+ | V V | KEY | +-------------+ | --- | +SEC_BLK_TRANS|==> | ==>: Async Cncl Req | +------+---+--+ | RL : Retrans. limit | | | | EXC: Exceeded | Snd missing | +--------+ TE : Timer Expiry | DS (CP), | Snd missing DS | Start CP Tmr | (NOT CP) +---------------+ Burleigh et al. Expires - January 2005 [Page 52] Internet Draft Licklider Transmission Protocol July 2004 CLOSED The sender is initially in this state. Upon reception of a block transmission request from the upper layer, the sender moves to the PRI_BLK_TRANS state. The sender enters CLOSED state upon having sent an RA (for a fully received block) or a CAR, or upon having received a CAS, or upon exceeding a retransmission limit, while in any state other than CLOSED. After entering CLOSED state in this way, the sender lobe of the session state machine can no longer move to any other state. If an RS or CR arrives at the sender when it is in this condition (possibly due to retransmission by the receiver, in the event that either the RA/CAR was corrupted or the corresponding count-down timer expired prematurely), the sender retransmits the relevant RA/CAR but remains in the CLOSED state. PRI_BLK_TRANS (Primary Block Transmission) The sender segments the received block respecting the current link MTU and enqueues the DSs for transmission. Upon transmission of the last DS (marked EOB, CP), the CP timer is started and the sender enters the CP_SENT state. CP_SENT (Checkpoint Sent) In this state, the sender expects an RS acknowledging the CP DS sent most recently. Upon reception of the RS corresponding to that CP, the CP timer is stopped, an RA acknowledging the RS is sent, and the sender enters the CHK_BLK_RCVD state. If the CP timer expires before the expected RS arrives, a check is made to see if the Retransmission Limit (RL) set by network management is exceeded by the number of times this CP has been retransmitted. If the RL is not exceeded, a duplicate CP segment is queued for transmission and the CP timer restarted when that transmission occurs. The sender remains in CP_SENT state. On the other hand, if the RL has been reached already at the time the CP timer expires, a CS with reason-code RLEXC is queued for transmission, and the CS timer is started upon transmission. The sender then enters the CANCEL_SENT state. CHK_BLK_RCVD (Check Block Received) In this state, the sender checks if the entire block has been Burleigh et al. Expires - January 2005 [Page 53] Internet Draft Licklider Transmission Protocol July 2004 reported as received, aggregating all the RSs received so far. If so, the sender enters the CLOSED state; if not, the SEC_BLK_TRANS state is entered. SEC_BLK_TRANS (Secondary Block Transmission) In this state, the sender queues for retransmission all the data segments reported missing from the last RS received. Upon transmission of the last DS retransmitted (marked CP), the CP timer is started and the sender returns to the CP_SENT state. CANCEL_SENT In this state, the sender waits for the CAS acknowledging the transmitted CS. Upon receiving the CAS, the sender returns to the CLOSED state. If the CS timer expires before reception of the CAS, and the RL is not exceeded, a duplicate CS (with the same reason-code value sent last) is queued for transmission, and the CS timer is restarted upon transmission. However, if the CS timer expires and the RL value has been reached in the number of times this CS has been transmitted, the sender simply returns to the CLOSED state. Async Cncl Req (Asynchronous Cancel Request) An asynchronous cancel request might be received by a sender in any state. If the request is received locally from the client service in a Cancel Request while the sender is in any state other than CLOSED or CANCEL_SENT, a CS with reason-code CNCLD is queued for transmission to the receiver and the session enters the CANCEL_SENT state. On the other hand, if the cancel request was received from the receiver in a CR segment, a CAR segment is queued for transmission in response, and the sender returns to the CLOSED state. Burleigh et al. Expires - January 2005 [Page 54] Internet Draft Licklider Transmission Protocol July 2004 11.2 Receiver7.1 Sender LTPReceiverSender State Transition Diagram+----+ +--------------------------+--+/\/\/\/\ | Cncld | \/\/\/\/ +--------+ | +------+ RcvCS;CR; | V V^ ^V | Rcv RS; SndCASCAR | +-------------+Rcv CAR||CR TE, +--+Snd RA +-------+ CLOSED +----+ +---------------------------->+------+------+ | | Blk. Trans. Req |RL EXC +-------------->+------+------+ | | | | Clnt svc. doesn't exist; | | | Rcv DS; | Snd CR, Start CR TmrZero RP + | Xmit ________________________/ \ Non-Zero RP | GDS; / \ |Start Session+---+ | +------------------+ | +------+ |+-----+| V/V ||/\/\ Rcv RS V V V | |+----------------+ +-----+--+----+ | | | FIRST_DS_REC |==>|CANCEL_SENT |==>|+---------+ +<-| RX |<---+ +---------+ |+------+-------+-+ +-----------+-+| +<-+ FG_XMIT |Rcv DS (EOB, CP)| \/\/ +---+ +--->+ Xmit RDS; |Rcv DS ^ |_____|+----+----+ | | RP_XMIT |(NOT CP) +------+|CR TE,| |V V| /\/\ +---+ +--->+ Xmit {RDS, CP}; +<--------+ +<-| CP |<---+ +-----+---+ Start CP Tmr |RL NOT EXC;Xmit \/\/ CP TE | \ |+--------------+{GDS, EOB}; | |Rxmt CR,| Xmit {RDS, CP, EORP}; | +-------+ |PRI_BLK_REC |==>Start CP Tmr | |Restart CR Tmr| |+------------+-+| | +------------------+ | +---+ |/ |______| +-----------------+Xmit {RDS, | |//\/\ RcvDS Rcv DSRS V V V | |+------------+CP, EORP, | +<-| RX |<---+ +---------+ |(EOB, CP) (NOT CP) RS TE,| EOB}; | |V V V RL NOT EXC;\/\/ +---+ | | |+-------------+ Rcv CP; Rxmt RS,Start | | ||CHK_BLK_RCVD |==> Rxmt RS Restart RSGP_XMIT +->+ | CP Tmr | | /\/\ +---+ | Xmit |+-+-----------+ Blk rcvd fully; +--+ +------+| +<-| CP |<---+ +-----+---+ GDS; | | \/\/ CP TE | |Snd RS,|V V| | | Xmit {GDS, EOB}; | +---------+ | |Start RS Tmr +-+----------+| | +------------------+ | | | | /\/\ RcvCP;RS V V V |+------------------>+ CLOSE_WAIT |==>+<-| RX |<---+ +-------------+ | | \/\/ +---+ | |Rxmt RS|Blk NOT rcvd +-+--+-----+-+| WAIT_RP_ACK | | | /\/\ +---+ | | +<-| CP |<---+ +-----+-------+ | \/\/ CP TE | RP acknowledged fully;Snd RS, Rcv RA;| V +----------------------------------------+ Ramadas et al. Expires - June 2005 [Page 32] Internet Draft LTP - Specification December 2004 LTP Sender State Transition Diagram (contd.) /\/\ /\/\ ||______|CP | | CX | \/\/ \/\/ | | |Start RS Tmr Stop RS TmrSnd CS, | | RL EXC; | Start CS Tmr; | | |V V| | /\/\ | +---+ | +------>| CX | V V |+-------------+<---+ RS TE,| \/\/ +---------+ |RSCS TE, | | CS_SENT |+--+ RPT_SENT |==>| RL NOT EXC;| |V RL NOT EXC;| | | +----+---+--+-++-+--+--+-+ | RxmtRS, |CS, Rxmt CP, |Snd CR,| | | Restart Start CP Tmr; CS TE, | ||______| Restart RS+---+ CS Tmr/RL EXC; |Start CR Tmr| | | RcvDS | |CAS; V V /\/\/\/\ | Cncld | \/\/\/\/ /\/\ | RX ||(NOT CP)\/\/ |+---------------------------|----+------------------+Cncl CP Tmr (if any) V Snd RA +---------+ +----+ | CHK_RPT |+---+|Rcv RA; RS TE,| +-+--+----+ RP in scope V | | |V V Stop RS Tmr RL EXC;\KEYNOT rcvd. fully +---------+ | Rxmt Redundant | |+-------------+ Snd CR,RP +--------------------->| RP_RXMT |---| missing RS rcvd; |+--+ SEC_BLK_REC |==> Start CR Tmr|==>: Async Cncl Reqin scope +----+--+-+ | RDS; |+------+------+|RL : Retrans. limitrcvd. fully | | |Rcv DS (CP)V V Rxmt last |EXC: Exceeded+----+ missing RDS |+------------+(marked CP) |TE : Timer Expiry +-----------------------------------------------+ BurleighStart CP Tmr; | V Ramadas et al. Expires -JanuaryJune 2005 [Page55]33] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004 The sender LTP stays in the CLOSED state until receiving a Block Transmission Request (Blk. Trans. Req) from the client service instance. Upon receiving the request it either moves to the Fully Green Transmission State (FG_XMIT) if no portion of the block was requested to be transmitted as red, or moves to the Red- Part Transmission State (RP_XMIT) state if a non-zero block-prefix was requested to be transmitted red. In the FG_XMIT state, the block is segmented as multiple green LTP data segments respecting the link MTU size and the segments are queued for transmission to the remote engine. Thereceiverlast such segment isinmarked as EOB and the sender LTP returns to the CLOSED stateuntilafter queuing it for transmission. Similarly, from thearrivalRP_XMIT state multiple red data segments are queued for transmission. The sender LTP may optionally mark some of thesession's first DS. At that time, the receiver entersred data segments as asynchronous checkpoints; theFIRST_DS_REC state. The receiver enters CLOSED state upon having sent a CAS, or upon having received an RA (for a fully received block) or a CAR, orinternal procedure Start Checkpoint Timer [Sec 5.2] is followed uponexceedingreceiving aretransmission limit, while in any state other than CLOSED. After entering CLOSED state in this way,link-state cue indicating thereceiver can no longer move to any other state. If a CS arrives atactual beginning of transmission of such segments. The sender LTP marks thereceiver whenlast red- data segment of the block as both CP and EORP, and after queuing itis in this condition (possibly duefor transmission moves toretransmission by the sender, intheevent that eitherGreen Part Transmission (GP_XMIT) state. If theCASblock transmission wascorrupted or the corresponding count- down timer expired prematurely), the receiver retransmitsfully red however, therelevant CAS but remains inlast red-data segment is marked as CP, EORP, and EOB and theCLOSED state. FIRST_DS_REC (First Data Segment Received) In this state,sender LTP moves to thereceiver considersWait-for-Red-Part-Acknowledgment (WAIT_RP_ACK) state instead. For both theDS received and checks to see ifabove state-transitions, thereferenced client serviceinternal procedure Start Checkpoint Timer [Sec 5.2] isreachable. If not, the receiver schedules a CR with reason-code UNREACH for transmission, starts a CR timerfollowed upontransmission, and then entersreceiving a link-state cue indicating theCANCEL_SENT state. Otherwise (ifbeginning of transmission of theclient service exists): ifqueued CP segments. If theDS is marked EOB and CP, (a single-segment block transmission),sender LTP entered thereceiver entersGP_XMIT state, theCHK_BLK_RCVD state; if not, it entersremaining green-part of the block is segmented as green data segments and queued for transmission to thePRI_BLK_REC state. PRI_BLK_REC (Primary Block Reception) Thereceiverstays in this state until receivingLTP; the last green segment ofprimary block transmission, marked with EOB, CP. WhentheEOB, CP marked DSblock isreceived,additionally marked as EOB and thereceiver enterssender LTP moves to theCHK_BLK_RCVDWAIT_RP_ACK state.CHK_BLK_RCVD (Check Block Received) In this stateWhile thereceiver checks to see ifsender LTP is at any of theblock has been received fully. If so,RP_XMIT, GP_XMIT, or WAIT_RP_ACK states, itqueues anmight be interrupted by the following two events asynchronously: 1. An RSclaiming successful receptionmight be received from the receiver LTP (either in response to a previously transmitted CP segment or sent asynchronously fortransmission, starts an RS timer upon transmission, andaccelerated retransmission). The sender LTP thenentersmoves to perform theCLOSE_WAIT state. Otherwise,sequence of state transitions beginning at the RX marker (second-part of the diagram), and retransmits data ifthere are still holes innecessary, illustrating theblock transmitted,internal procedure Retransmit Data [Sec 5.13]: First, if thereceiver queues for transmission anRSselectively Burleighhad a non-zero CP serial number, the Ramadas et al. Expires -JanuaryJune 2005 [Page56]34] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004 corresponding CP timer is canceled. Then, an RA segment acknowledging the receivedsegments of data, starts anRStimer uponis queued for transmissionofto the receiver LTP and the sender LTP moves to the Check Report state (CHK_RPT). If the RS was redundantly transmitted by the receiver LTP (possibly because either the last transmitted RA got lost or the RS timer expired prematurely at the receiver), theRS,sender LTP does nothing more andthen entersreturns back to theRPT_SENTinterrupted state.CLOSE_WAIT In this state, the receiver expectsSimilarly, if all red-data within thearrivalscope ofan RA acknowledgingthe RSmost recently sent. Upon arrival ofis reported as received, there is no work to be done and theRS, itsender LTP returns to theCLOSEDinterrupted state.IfHowever, if the RStimer expires before the arrivalindicated incomplete reception ofthe RA,data within its scope, the senderchecksLTP moves tosee if the Retransmission Limit (RL) set by network management was exceeded bythenumber of times this RS has been retransmitted. If so, it schedules a CR with reason- code RLEXCRed-part Retransmit state (RP_RXMT) where missing red data-segments within scope are queued fortransmission, startstransmission. The last such segment is marked as a CP, and theCR timersender LTP returns to the interrupted state. The internal procedure [Sec 5.2] is followed upon receiving a link-state cue indicating beginning of transmission of theCR, and entersCP segment. 2. A previously set CP timer might expire. Now theCANCEL_SENT state. Ifsender LTP follows theRL value was not exceeded,states beginning at thereceiver queues a duplicate RS for transmission, startsCP marker (second-part of theRS timer upon transmission,diagram), andstays in CLOSE_WAIT state. RPT_SENT (Report Sent) Much like the CLOSE_WAIT state,follows thereceiver expects an RA in this state. Upon reception ofinternal procedure Retransmit Checkpoint [Sec 5.7]: If theRA,CP Retransmission Limit set by network management for thereceiver stopssession has been exceeded, theRS timer, and enterssender LTP proceeds towards canceling theSEC_BLK_REC state. Ifsession (with reason-code RLEXC) as indicated by theRS timer expires before arrivalsequence of state transitions following theRA andCX marker. Otherwise (if theRLRetransmission Limit is not exceededbyyet), thenumber of times this RS has been retransmitted, the receiver queues a duplicate RSCP segment is queued fortransmissionretransmission andstarts an RS timer upon transmission of the RS. IftheRL has been reached,sender LTP returns to thereceiver queues a CR with reason-code RLEXC, starts a CR timerinterrupted state. The Start Checkpoint Timer internal procedure [Sec 5.2] is started again uponits transmission, and then entersreceiving a link-state cue indicating theCANCEL_SENT state. SEC_BLK_RECbeginning of transmission of the segment. Thereceiversender LTP staysin this Secondary Block Reception State while continuing to receive non-checkpoint DSs constituting recovery ofat thesegments reported missing. When a checkpoint DSWAIT_RP_ACK state after reaching it until the red-part data isreceived,fully acknowledged as received by the receivergoes backLTP, and then returns to theCHK_BLK_RCVDCLOSED stateto see iffollowing theblock reception is complete. CANCEL_SENT In this state,internal procedure Close Session [Sec 5.20]. <<Talk about 2 MSL here??>> Note that while at thereceiver waits forCLOSED state, theCAR acknowledgingsender LTP might receive an RS (if the last transmittedCR. Upon receivingRA before session close got lost or if the receiver LTP retransmitted theCAR,RS prematurely), in which case itreturns toretransmits an acknowledging RA and stays in the CLOSED state.Burleigh et al. Expires - January 2005 [Page 57] Internet Draft Licklider Transmission Protocol July 2004If theCR timer expires before reception of the CAR, andsession was canceled by theRL is not exceeded,Receiver by issuing aduplicateCR(with the same reason-code value sent last) is queued for transmission andsegment, theCR timer is restarted upon transmission. However, ifreceiver may retransmit the CRtimer expires and the RL value has been exceeded by(either prematurely or because thenumber of timesacknowledging CAR got lost). In thisCR has been retransmitted,case, thereceiver returns tosender LTP retransmits the acknowledging Ramadas et al. Expires - June 2005 [Page 35] Internet Draft LTP - Specification December 2004 CAR and stays in the CLOSED state.Async Cncl Req (Asynchronous Cancel Request) An asynchronousAsynchronous cancel requestmightmay be receivedby an LTP receiver in any state. If the request is received locallyfrom the local client servicein a Cancel Requestwhile the sender LTP was in any of the states mentioned. If it was not already in the sequence of stateother than CLOSED or CANCEL_SENT, a CRtransitions beginning at the CX marker, the internal procedure Cancel Session [Sec 5.19] is followed, and the sender LTP moves from its current state into the sequence beginning at the CX marker initiating session cancellation with reason-codeCNCLDCNCLD. From the CX marker, the CS segment with appropriate reason-code (CNCLD or RLEXC depending on how the CX sequence was entered) is queued for transmission to thesenderreceiver LTP and thereceiversender enters theCANCEL_SENTCancel- from-Sender Sent(CS_SENT) state.On the other hand, ifThe internal procedure Start Cancel Timer [Sec 5.15] is started upon receiving a link-state cue indicating thecancel request was received frombeginning of transmission of thesender in aCSsegment, asegment. Upon receiving the acknowledging CASsegment is queued for transmission in response andfrom thereceiver returnsreceiver, the sender LTP moves to the CLOSEDstate. 12. Requirements fromstate (via theOperating Environment LTP requires support from its operating environment (which includes network management activities) and link-state cues fromCncld marker). If thedata-link layer for its operations. The local data-link layer needs to inform LTP wheneverCS Timer expires, thelink to a specific LTP destinationinternal procedure Retransmit Cancellation Segment [Sec 5.16] isbrought up or torn down. Similarly, the operating environment needs to informfollowed: If thelocal LTP engine whenever it is known that a remote LTP engine isnetwork management setto begin communication withretransmission limit is exceeded, thelocal engine based onsession is simply closed and theoperating schedules.sender LTPalso needs to be able to queryfollows thecurrent distance (in light seconds) to any peer engine in orderCncld marker tocalculate timeout intervals in a typical deep-space environment. A MIB (Management Information Base), withtheabove parameters filled in byCLOSED state. If thelocal data-link layer andretransmission limit is not exceeded however, theoperating environment periodically, should be made availableCS segment is queued for a retransmission and the sender LTPengine for its operations.stays in the CS_SENT state. Theexact detailsCS Timer is started upon receiving a link-state cue indicating the beginning of actual transmission according to theMIB are, however, beyondinternal procedure Start Cancel Timer [Sec 5.15]. Asynchronous cancel request may also be received from thescope of this document. Inreceiver LTP in theabsenceform of a CR segment when theusesender LTP is in any of the states. Upon receiving such a CR segment, the internal procedure Acknowledge Cancellation [Sec 5.17] is invoked: The sender LTP sends a CAR segment in response and returns to the CLOSED state. Ramadas et al. Expires - June 2005 [Page 36] Internet Draft LTP - Specification December 2004 7.2 Receiver LTP Receiver State Transition Diagram /\/\/\/\ +----+ +----+ Cncld | Rcv CS; | V V \/\/\/\/ Snd CAS | +-------------+ +--+ CLOSED +<--------------------------+ +------+------+ | +----+ | Rcv first DS | Rcv RA; | V V | Cncl RS Tmr | +--------+ | +---+ DS_REC | | +----------------------------->+-+--+-+-+<----------------------+---+ | | Svc. does not exist | | | RS TE | | | | /\/\ or Rcv miscolored seg. | | | /\/\ | | | | | CX |<-----------------------+ | +------------->| RX |---->+ | | | \/\/ | \/\/ | | | Rcv RDS; | Rcv GDS; | | | +-----------+------------+ | | | V V | | | /\/\ RS TE +--------------+ +--------+ | | +<-| RX |<------+ RCV_RP | | RCV_GP | | | | \/\/ +-+----+--+--+-+ +--+-+-+-+ | | | | | | | | | | | | | Rcvd RDS; | | | | Rcvd {RDS, CP, | | | RS TE /\/\ | | | | | | | EORP, EOB}; | | +------>| RX |->+ | +<----------------+ | | | Snd RS, | | \/\/ | | | | | | Start RS Tmr | | Rcvd GDS; | | | Rcvd {RDS, CP}; | | | | +---------------->+ | | Snd RS, Start RS Tmr | | +-------+ +-----+ | +<---------------------+ | | | Rcvd {GDS, EOB}; | | | | | | | | +-----+ | | +------+ | | Rcvd {RDS, CP, EORP}; | | V V V V | | | Snd RS, Start RS Tmr | | +----------------+ | Rcv RDS; | | | | | +-->+ | | | | | WAIT_RP_REC | | Rcv {RDS, CP}; | | | | | +-->+ Snd RS, Start | +<------------------------+ | +---+--+-+-+-----+ | RS Tmr | | RS TE | | | | Rcv RA; | | | V | | | Cncl | | | /\/\ | | | RS Tmr | | +---| RX | | | +-------->+ | \/\/ | | | /\/\ | | | | CX |<------------------------+ | RP rcvd. fully | \/\/ Rcv miscolored seg. +--------------------------->+ Ramadas et al. Expires - June 2005 [Page 37] Internet Draft LTPauthentication [Sec 13.3]- Specification December 2004 LTPalso requires the underlying data-link layer to perform data integrity check of the segments received. Specifically, the data- link layer is expected to detect any corrupted segments received and to silently discard them. 13. Security Considerations BurleighReceiver State Transition Diagram (contd.) /\/\ | RX | \/\/ | | | | RL EXC; /\/\ RL NOT EXC; | +---------->| CX | Rxmt RS, | \/\/ Start RS Tmr | V /\/\ | CX | \/\/ | Snd CR, | Start CR Tmr; | | +----+ V V | +---------+ | CR TE, | CR_SENT | | RL NOT EXC; +-+--+--+-+ | Rxmt CR, | | | | Restart CR TE, | | +---+ CR Tmr RL EXC; | | | | Rcv CAR; V V /\/\/\/\ | Cncld | \/\/\/\/ Ramadas et al. Expires -JanuaryJune 2005 [Page58]38] Internet DraftLicklider Transmission Protocol July 2004 There is a clear risk that unintended receivers can listen in on LTP transmissions over satellite and other radio broadcast datalinks. Such unintended recipients ofLTPtransmissions may also be able to manipulate- Specification December 2004 The receiver LTPsegmentsbegins atwill. Hence there is a potential requirement for confidentiality, integrity and anti-DoS (Denial of Service) security services and mechanisms. In particular, DoS problems are more severe for LTP compared to other typical internet protocols because LTP inherently retainsthe CLOSED statefor long periods,andhas very high time-out values. Further, it couldenters the Data Segment Reception (DS_REC) state upon receiving the first data segment. If the client service ID referenced in the data segment was non-existent, a CX segment with reason-code UNREACH SHOULD bedifficultsent toresetthe sender LTPnodeswith the Cancellation sequence beginning with the CX marker (second part of the diagram). If the received segment was found torecover frombe miscolored (a red-part data segment whose block offset begins at anattack. Thusoffset higher than the offset of anyadversary who can actively attackgreen-part data segment previously received, or a green-part data segment whose block offset begins at anLTP transmission hasoffset lower than thepotentialoffset of any red-part data segment previously received), the internal procedure Handle Miscolored Segment [Sec 5.21] is followed; a CX segment with reason-code MISCOLORED SHOULD be sent tocreate severe DoS conditions forthe sender LTPreceiver. To give a terrestrial example - werewith the Cancellation sequence beginning with the CX marker. Otherwise, the receiver LTPto be used in a sparse sensor network, DoS attacks could be mounted resulting in nodes missing critical information, for example, communications schedule updates.enters the Receive Red-Part state (RCV_RP) or the Receive Green-Part state (RCV_GP) depending on whether the segment received was red or green respectively. Insuch cases,the RCV_RP state, asingle successful DoS attack could takecheck is made of the nature of the received red DS. If the segment was anode entirely offregular red data segment, thenetwork untilreceiver LTP just returns to thenode is physically visitedDS_REC state. For red data segments marked also as CP andreset. Evenas CP & EORP, a responding RS is queued fordeep space applications of LTP, we do needtransmission toconsider certain terrestrial attacks,the sender following either the internal procedure Retransmit RS [Sec 5.8] or Send Reception Report [Sec 5.11] depending on whether the CP segment was a retransmission (An RS corresponding to the Checkpoint Serial Number inparticular those involving insertion of messages into an on-going session (usually without having seentheexact bytesCP was previously issued) or not, respectively. The receiver LTP then returns to the DS_REC state. If the block transmission was fully red and the segment was marked as CP, EORP, and EOB, the receiver LTP enters the Wait-for-Red-Part-Reception state (WAIT_RP_REC). In all cases the internal procedure Start RS Timer [Sec 5.3] is followed upon receiving link-state cues indicating beginning of transmission of theprevious messages inRS segments. In thesession). Such attacks are likely inRCV_GP state, if thepresence of firewall failures at various nodes inreceived green data segment was not marked EOB, thenetwork, or duereceiver LTP returns toTrojan software running on an authorized host. Many message insertion attacks will depend ontheattacker correctly "guessing" something aboutDS_REC state. Otherwise it enters the WAIT_RP_REC state to receive the red-part of the block fully. A previously set RS timer may expire asynchronously while the receiver LTPpeers, but experience shows that successful guesses are easier than might be thought [DDJ]. 13.1 Security Mechanisms and Layering Considerations In this section we considerwas in theappropriate layer(s)DS_REC, RCV_RP, RCV_GP, or WAIT_RP_REC states. If so, the internal procedure Retransmit RS [Sec 5.8] is followed as illustrated in the states beginning atwhich security mechanisms can best be deployed to increasethesecurity propertiesRX marker (shown in the second part ofLTP. The Application layer (above-LTP) Higher layer security mechanisms clearly protect LTP payload, but leave LTP headers open. Such mechanisms provide little or no protection against DoS type attacks against LTP, but may Burleighthe diagram) before returning to the interrupted state: Ramadas et al. Expires -JanuaryJune 2005 [Page59]39] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004well provide sufficient data integrity and oughtA check is made here to see if the retransmission limit set by the network management has been exceeded in the number of RSs sent in the session. If so, a CR segment with reason-code RLEXC SHOULD beable to provide data confidentiality. The LTP layer An authentication header (similarsent toIPSEC [AH]) can help protect against replay attacks and other bogus packets. However, an adversary may still seethe sender LTPheaderand the sequence following the CX marker is followed. Otherwise, the RS is queued for retransmission and the associated RS timer is started following the internal procedure Start RS Timer [Sec 5.3] upon receiving a link-state cue indicating the beginning of its transmission. The receiver LTP may also receive RA segmentspassing byfrom the sender in response to theether. This approach also requires some key management infrastructureRSs sent while in the DS_REC state. If so, then the RS timer corresponding tobethe report serial number mentioned inplacethe RA segment is canceled following the internal procedure Stop RS Timer [Sec 5.14]. The receiver LTP stays inorderthe WAIT_RP_REC state until the entire red-part of the block is received, and moves toprovide strong authentication, which may not always be an acceptable overhead. Such an authentication header could mitigate against many DoS attacks. Similarly,the CLOSED state upon full red-part reception. In this state, aconfidentiality service could be defined for LTP payloadcheck is made upon reception of every red-part DS to see if it is at a block offset higher than any green-part DS received. If so, the Handle Miscolored Segment internal procedure [Sec 5.21] is invoked and(some) header fields. However, this seems less attractive since (a) confidentialitythe sequence of state transitions beginning with the CX marker isarguably better provided either abovefollowed; a CX segment with reason-code MISCOLORED SHOULD be sent to the sender LTP with the Cancellation sequence beginning with the CX marker. Note that if there were no red data segments received in the session yet, including the case where the session was indeed fully green orbelowtheLTP layer, (b) key management for such a servicepathological case where the entire red-part of the block gets lost but at least the green data segment marked EOB isharder (in a high-delay context) than for an integrity service, and (c) forcingreceived (the receiver LTPengines to attempt decryptionhas no indication ofincoming segments can in itself providewhether the session had aDoS opportunity. Further, withinred-part transmission), the receiver LTPlayer we can make various design decisionsassumes the "RP rcvd. fully" condition to be true and moves toreducetheprobability of successful DoS attacks.CLOSED state from the WAIT_RP_REC state. Inparticular, we can mandate that values for certain fields intheheader (session numbers, for example) be chosen randomly. The Datalink layer (below-LTP) The lower layers can clearly provide confidentiality and integrity services, although such security may result in unnecessary overhead (if a service provided is not required for allWAIT_RP_REC state, the receiver LTPsessions,may receive the retransmitted red data segments. Upon receiving red data segments marked CP, it queues the responding RS forexample) and loss of flexibility. However,transmission based on either internal procedure Retransmit RS [Sec 5.8] or Send Reception Report [Sec 5.11] depending on whether thelower layers may wellCP was found to be a retransmission or not, respectively. The Start RS Timer internal procedure is invoked upon receiving a link-state cue indicating theoptimal place to do compression and encryption. 13.2 Denialbeginning ofService Considerations Implementers SHOULD consider the likelihoodtransmission of thefollowing DoS attacks : A fake Cx could be inserted, thus bringing down a session. Various acknowledgment segments (RA, RS, etc.) could be deleted, causing timersRS. If an RA segment is received, the RS timer corresponding toexpire,the report segment mentioned is canceled andhasthepotential to disable communication altogether if done with a knowledgereceiver LTP stays in the state until the entire red-part is received. In the sequence of state transitions beginning at thecommunications schedule. This could be achieved either by BurleighCX marker, Ramadas et al. Expires -JanuaryJune 2005 [Page60]40] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004mounting a DoS attackthe CR segment with the given reason-code (depending ona lower layer service in order to prevent ithow the sequence is entered) is queued for transmission, and the CR timer is started upon reception of the link-state cue indicating actual transmission following internal procedure Start Cancel Timer [Sec 5.15]. If the CAR is received fromsending an acknowledgment segment, orthe sender LTP, the receiver LTP returns to the CLOSED state (via the Cncld marker) following the Stop Cancel Timer internal procedure [Sec 5.18]. If the CR timer expires asynchronously, the internal procedure Retransmit Cancellation Segment [Sec 5.16] is followed : A check is made to see if the retransmission limit set bysimply jammingthetransmission (allnetwork management for the number ofwhich are more likelyCRs per session has been exceeded. If so, the receiver LTP returns to the CLOSED state following the Cncld marker. Otherwise, a CR segment is scheduled forterrestrial applicationsretransmission with the CR timer being started following the internal procedure Start Cancel Timer [Sec 5.15] upon reception ofLTP). An attackera link-state cue indicating actual transmission. <<Talk about 2 MSL here??>> The receiver LTP might alsoflip some bits, whichreceive a retransmitted CS at the CLOSED state (either if the CAS segment previously transmitted was lost or if the CS timer expired prematurely at the sender LTP). In such a case the CAS istantamountscheduled for retransmission. Asynchronous cancel requests are handled similar todeleting that segment. An attacker may floodthe way they are handled in the sender LTP. If the cancel request was made from the local client service instance and the receiver LTP was not already in the CR_SENT state, anodeCR withsegments forreason-code CNCLD SHOULD be sent to theinternal operations queue [Sec 6.2] and prevent transmissionsender LTP following the sequence oflegitimate data segments. An attacker could attempt to fill upstate transitions beginning at thestorage inCX marker as described above. If the asynchronous cancel request is received from the sender LTP, anode by sending many large messagesCAS segment is sent and the receiver LTP moves toit. In terrestrialthe CLOSED state (independent of the state the receiver LTPapplications thismay bemuch more serious since spottingin). 8. Requirements from theadditional traffic may not be possibleOperating Environment LTP requires support fromanyits operating environment (which includes network managementpoint. <<More TBD>>activities) and link-state cues from the data-link layer for its operations. The local data-link layer needs to inform LTPincludeswhenever thefollowing anti-DoS mechanisms: Session numbers MUST be partly random making it harderlink toinsert valid segments. A node which suspects that either it or its peera specific LTP destination isunder DoS attack could frequently checkpoint its data segments (if it were the sender)brought up orsend asynchronous RSs (iftorn down. Similarly, the operating environment needs to inform the local LTP engine whenever itwereis known that a remote LTP engine is set to begin or stop communication with the local engine based on thereceiver), thus eliciting an earlier responseoperating schedules. LTP requires link state cues fromits peer or timing out earlier due tothefailuredatalink layer upon transmission ofan attacker to respond. Serial numbers (checkpoint serial numbers, report serial numbers) MUST begin each session anew using random numbers rather than from 0. An authentication header as defined in Section 13.3. Replay handling as defined in Section 13.5. 13.3 LTP Authentication Thethe CP, RS, EORP, EOB, and Cx segments. LTPAuthentication mechanism MAYalso needs to beusedable toprovide cryptographic authentication ofquery thesegment. Implementations MAY support this extension field. If they do not Burleighcurrent distance (in light Ramadas et al. Expires -JanuaryJune 2005 [Page61]41] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004supportseconds) to any peer engine in order to calculate timeout intervals in a typical deep-space environment. A MIB (Management Information Base), with the above parameters filled in by the local data-link layer and the operating environment periodically, should be made available to the LTP engine for its operations. The exact details of the MIB are, however, beyond the scope of thisheader then they MUST ignore it.document. The underlying data-link layer is required to never deliver incompletely received LTP segments to LTP. In the absence of the use of LTP authenticationextension field has extension tag value 0x00. <<Check[LTPEXT] LTP also requires the underlying data-link layer to perform data integrity check of the segments received. Specifically, the data-link layer is expected to detect any corrupted segments received and to silently discard them. 9. Security Considerations <<Note : The LTP-Auth security mechanism defined in [LTPEXT] may be moved back into this section if there was community consensus in having it as a critical feature thatignoring is ok forought to be implemented in allcasesimplementations ofresponse generation.>> LTP authentication requires three new fields,thefirst two of which are carriedprotocol.>> There is a clear risk that unintended receivers can listen inthe extensions field of theon LTPheader,transmissions over satellite andthe thirdother radio broadcast datalinks. Such unintended recipients ofwhichLTP transmissions may also be able to manipulate LTP segments at will. Hence there iscarried in the segment trailer. The fields which are carried in the header extensions field are: Ciphersuite: an eight bit integer value with values defined below. KeyID: An SDNV-8 whose value MUST containakey identifier, the interpretation of which is out of scopepotential requirement forthis specification (that is, implementers MUST treat these KeyID fields as raw octets, even if they contained an ASN.1 DER encodingconfidentiality, integrity and anti-DoS (Denial ofan X.509 IssuerSerial construct [PKIXPROF],Service) security services and mechanisms. In particular, DoS problems are more severe forexample. The fields MUSTLTP compared to other typical internet protocols because LTP inherently retains state for long periods, and has very high time-out values. Further, it could bepresent in the first segmentdifficult to reset LTP nodes to recover from an attack. Thus any adversary who can actively attack an LTP transmission has the potential to create severe DoS conditions for the LTPsession which usesreceiver. To give a terrestrial example - were LTPauthentication, but MAYto beomitted from subsequent segmentsused inthat session. To guard against additional problems arising from lost segments, implementations SHOULD, where bandwidth allows, include these fieldsa sparse sensor network, DoS attacks could be mounted resulting in nodes missing critical information, for example, communications schedule updates. In such cases, anumber of segments in the LTP session. The field carried assingle successful DoS attack could take atrailer extension isnode entirely off theAuthVal field. It containsnetwork until theauthentication value, which is either a MAC or a digital signature. Thisnode isitself a structured field whose lengthphysically visited andformatting depends on the ciphersuite. We define three ciphersuites in this specification. Our approach here is to "hardcode" all algorithm options in a single ciphersuite value - 255 potential ciphersuites are supported by this version of LTP. Ciphersuite Value ----------- ----- OriginAuth 0 Signature 1 NULL 255 1. OriginAuth Ciphersuite Burleighreset. Ramadas et al. Expires -JanuaryJune 2005 [Page62]42] Internet DraftLicklider Transmission Protocol July 2004 The OriginAuth ciphersuite involves generating a message authentication code (MAC) over theLTPsegment and appending the resulting AuthVal field to the end of the segment. There is only one MACing algorithm defined- Specification December 2004 Even forthis which is HMAC- SHA1-80 [HMAC]. The AuthVal field in this case contains just the outputdeep space applications ofthe HMAC-SHA1-80 algorithm which is a fixed width field (10 octets). <<Need to check if this is still the best HMAC variant to pick - and whetherLTP, we do need totruncate and so allowconsider certain terrestrial attacks, in particular those involving insertion of messages into an on-going session (usually without having seen theextra bits for key mgt. later on.>> 2. Signature Ciphersuite The Signature ciphersuite involves generating a digital signatureexact bytes of theLTP segment and appendingprevious messages in theresulting AuthVal field tosession). Such attacks are likely in theendpresence of firewall failures at various nodes in thesegment. There is only one signature algorithm defined for this which is RSA with SHA1 [RSA]. Since the length of an RSA signature dependsnetwork, or due to Trojan software running on an authorized host. Many message insertion attacks will depend on thesigning key and is often longer than the maximum value supported by the SDNV data-type, we also include a two octet length field which contains the length ofattacker correctly "guessing" something about thedigital signature in bits. Sostate of theAuthVal field inLTP peers, but experience shows that successful guesses are easier than might be thought [DDJ]. 9.1 Security Mechanisms and Layering Considerations In thiscase is as follows (wheresection we consider thesignature value occupiesappropriate layer(s) at which security mechanisms can best be deployed to increase theminimum numbersecurity properties ofoctets, e.g. 128 octets for a 1024 bit signature). +--------------+---------/----+ |length-in-bits| signature value | |(2 octets) | | +--------------+---------/----+ Clearly, the KeyID field in this case MUST beLTP. The Application layer (above-LTP) Higher layer security mechanisms clearly protect LTP payload, but leave LTP headers open. Such mechanisms provide little or no protection against DoS type attacks against LTP, but may well provide sufficient data integrity and ought to be able to provide data confidentiality. The LTP layer An authentication header (similar tosecurely identifyIPSEC [AH]) can help protect against replay attacks and other bogus packets. However, an adversary may still see the LTP header of segments passing by in thepublicether. This approach also requires some keyusablemanagement infrastructure toverify the signature. 3. NULL Ciphersuite <<It is probably debatable whether it is betterbe in place in order toinclude this or not. A purist crypto position would probablyprovide strong authentication, which may not always be"just allow a CRC if that's what you want",an acceptable overhead. Such an authentication header could mitigate many DoS attacks. Similarly, amore code-centric position mightconfidentiality service could be"I have working HMAC code, why not use that?". Sodefined for LTP payload and (some) header fields. However, thisciphersuite may well changeseems less attractive since (a) confidentiality is arguably better provided either above ordisappear asbelow thedocument progresses.>> The NULL ciphersuiteLTP layer, (b) key management for such a service isbasically the same as the OriginAuth ciphersuite, but withharder (in ahardcoded key. This ciphersuite effectively provides only datahigh-delay context) than for an integritywithout authentication,service, andthus is subject(c) forcing LTP engines toactive attacks and is Burleighattempt decryption of incoming segments can in itself provide a DoS opportunity. Further, within the LTP layer we can make various design Ramadas et al. Expires -JanuaryJune 2005 [Page63]43] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004 decisions to reduce theequivalentprobability ofproviding a CRC. The hardcoded key to be used with this ciphersuite issuccessful DoS attacks. In particular, we can mandate that values for certain fields in thefollowing: HMAC_KEY : c37b7e64 92584340 : bed12207 80894115 : 5068f738 <<The aboveheader (session numbers, for example) be chosen randomly. The Datalink layer (below-LTP) The lower layers can clearly provide confidentiality and integrity services, although such security may result in unnecessary overhead (if a service provided is not required for all LTP sessions, for example) and loss of flexibility. However, thetest vector from RFC 3537, but who cares anyway?>> In each caselower layers may well be thebytes which are inputoptimal place tothe cryptographic algorithm consistdo compression and encryption. 9.2 Denial of Service Considerations Implementers SHOULD consider theentire LTP segment except the AuthVal. In particular the header extensions field which may containlikelihood of theciphersuite numberfollowing DoS attacks : A fake Cx could be inserted, thus bringing down a session. Various acknowledgment segments (RA, RS, etc.) could be deleted, causing timers to expire, and has theKeyID field are partpotential to disable communication altogether if done with a knowledge of theinput. The output bytescommunications schedule. This could be achieved either by mounting a DoS attack on a lower layer service in order to prevent it from sending an acknowledgment segment, or by simply jamming the transmission (all ofthe cryptographic operationwhich arethe payloadmore likely for terrestrial applications ofthe AuthVal field. 13.4 Implementation Considerations SDNV Implementations SHOULD make sanity checks on SDNV length fields and SHOULD check that no SDNV fieldLTP). An attacker might also flip some bits, which istoo long when compared with the overall segment length. Implementations SHOULD checktantamount to deleting thatSDNV values are within suitable ranges where possible, e.g. <<TBD>> Byte ranges Various report and othersegment. An attacker may flood a node with segmentscontain offset and length fields. Implementations MUST ensure that these are consistentfor the internal operations queue andsane. Randomness Various fieldsprevent transmission of legitimate data segments. An attacker could attempt to fill up the storage in a node by sending many large messages to it. In terrestrial LTP(e.g. serial numbers) shouldapplications this may beinitialized using random values. Good sources of randomness which aremuch more serious since spotting the additional traffic may noteasily guessable SHOULDbeused [ECS94]. The collision ofpossible from any network management point. <<More TBD>> LTP includes the following anti-DoS mechanisms: Session numbers MUST be partly randomvalues is subjectmaking it harder tothe birthday paradox,Ramadas et al. Expires - June 2005 [Page 44] Internet Draft LTP - Specification December 2004 insert valid segments. A node whichmeanssuspects thata collisioneither it or its peer islikely after roughlyunder DoS attack could frequently checkpoint its data segments (if it were thesquare-root ofsender) or send asynchronous RSs (if it were thespace has been seen (e.g. 2^16 inreceiver), thus eliciting an earlier response from its peer or timing out earlier due to thecasefailure ofa 32-bit random value). Implementersan attacker to respond. Serial numbers (checkpoint serial numbers, report serial numbers) MUSTensure that they use sufficiently longbegin each session anew using randomvalues so that the birthday paradox doesn't cause a problem in their environment. Burleigh et al. Expires - January 2005 [Page 64] Internet Draft Licklider Transmission Protocol July 2004 13.5numbers rather than from 0. The authentication header [LTPEXT]. 9.3 ReplayhandlingHandling The following algorithm is given as an example of how an LTP implementation MAY handle replays. 1. On receipt of an LTP segment, checkagainst a cache for replay. If this is a replay segment and if a pre-cooked response is available (stored from the last time this segment was processed), then send the pre-cooked response. If there is no pre-cooked response then silently drop the inbound segment. This can all be done without attempting to decode the buffer. 2. If the inbound segment does not decode correctly, then silently drop the segment. If the segment decodes properly, then add its hash to the replay cache and return a handle to the entry. 3. For those cases where a pre-cooked response should be stored, store the response using the handle received from the previous step. These cases include: (a) when the inbound packet is a CP DS the response RS gets stored as pre-cooked; (b) when the incoming packet is an RS the RA is stored as precooked, and, (c) when the incoming packet is a Cx the CAx gets stored precooked. 4. Occasionally clean out the replay cache - how frequently this happens in an implementation issue. The downside ofagainst a cache for replay. If thisalgorithmisthat receiving a totally bogus segment still results ina replaycache searchsegment andattempted LTP decode operation. Its not clear that it is possible to do much better though, since all an attacker would have to do to get past the replay cache would be to tweakif asingle bit in the inbound segment each time, whichpre-cooked response iscertainly cheaper than the hash+lookup+decode combination, though also certainly more expensive than simply sendingavailable (stored from thesame octets many times. The benefit of doinglast time this segment was processed), then send the pre-cooked response. If there isthat implementersnolonger need to analyze many bugs/attacks based on replaying packets, which in combination with the use of LTP authentication should defeat many attempted DoS attacks. 14. Tracing LTP back to CFDP Burleigh et al. Expires - January 2005 [Page 65] Internet Draft Licklider Transmission Protocol July 2004 LTP in effect implements most of the "core procedures" ofpre-cooked response then silently drop theCCSDS File Delivery Protocol (CFDP) specification, minusinbound segment. This can allfeatures that are specificbe done without attempting tooperations on files and filestores (file systems); indecode theIPN architecture we expect that file and filestore operations will be conducted by file transfer application protocols -- notably CFDP itself -- operating on top ofbuffer. 2. If theDTN Bundling protocol. (Bundling in effect implementsinbound segment does not decode correctly, then silently drop theCFDP "extended procedures" in a more robust and scalable manner than is prescribed bysegment. If theCFDP standard.) The fundamental difference is that, while CFDP delivers named files end-to-end, LTP is usedsegment decodes properly, then add its hash totransmit arbitrary, unnamed blocks of data point- to-point. Some differences between LTPthe replay cache andCFDP are simply matters of terminology;return a handle to the entry. 3. For those cases where a pre-cooked response should be stored, store thefollowing table summarizesresponse using thecorrespondences in language betweenhandle received from thetwo. --------------LTP------------- ------------CFDP----------- LTP engine CFDP entity Segment Protocol Data Unit (PDU) Reception Report NAK Client service request Service request Client service notice Service indication CFDP specifies four mechanisms for initiating data retransmission, called "lost segment detection modes". LTP effectively supports all four: "Deferred" modeprevious step. These cases include: (a) when the inbound packet isimplemented in LTP bya CP DS theRequest flag inresponse RS gets stored as pre-cooked; (b) when theEOB data segment, which triggers reception reporting upon receipt ofincoming packet is an RS theEOB. "Prompted" modeRA isimplemented in LTP by turning on Request flags in data segments that precedestored as precooked, and, (c) when theEOB; these additional checkpoints trigger interim reception reporting underincoming packet is a Cx thecontrol ofCAx gets stored precooked. 4. Occasionally clean out thesource LTP engine. "Asynchronous" mode is implementedreplay cache - how frequently this happens inLTP by the autonomous production, under locally specified conditions, of additional reception reports prior to arrivalan implementation issue. The downside ofthe EOB. "Immediate" modethis algorithm issimply a special case of asynchronous mode, where the conditionthattriggers autonomous reception Burleighreceiving a totally bogus Ramadas et al. Expires -JanuaryJune 2005 [Page66]45] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004reporting is detection of a gapsegment still results inthe incoming data. CFDP usesacyclic timer to iterate reception reporting until receptionreplay cache search and attempted LTP decode operation. It iscomplete. Because choosing a suitable interval for suchnot clear that it is possible to do much better though, since all an attacker would have to do to get past the replay cache would be to tweak atimersingle bit in the inbound segment each time, which ispotentially quite difficult, LTP instead flagscertainly cheaper than thelast data segment of each retransmission as a checkpoint, sent reliably;hash+lookup+decode combination, though also certainly more expensive than simply sending thecascading reliable transmissionsame octets many times. The benefit ofcheckpoint and RS segments assuresdoing this is that implementers no longer need to analyze many bugs/attacks based on replaying packets, which in combination with thecontinuous progressuse ofthe transmission session. CFDP's Suspend and Resume PDUs are functionally displaced inLTPby deferred transmissionauthentication should defeat many attempted DoS attacks. 9.4 Implementation Considerations SDNV Implementations SHOULD make sanity checks on SDNV length fields andautomated bandwidth management. As the following table indicates, most ofSHOULD check that no SDNV field is too long when compared with thefunctions of CFDP PDUsoverall segment length. Implementations SHOULD check that SDNV values areaccomplished in some way by LTP segments. --------------LTP------------- -------------CFDP---------- Datawithin suitable ranges where possible, e.g. <<TBD>> Byte ranges Various report and other segmentsFile datacontain offset andmetadata PDUs Closure flag on data segment EOF (Complete) Request flag on data segment EOF (Complete), Prompt (NAK), Prompt (Keep Alive) Report segment ACK (EOF Complete), NAK, Keep Alive, Finished (Complete) Report-acknowledgment ACK (Finished Complete) Cancel segment EOF (Cancel, Protocol Error) Finished (Cancel, Protocol Error) Cancellation Acknowledgment ACK (EOF (Cancel, Protocol Error), Finished (Cancel, Protocol Error)) But some CFDP PDUs have no LTP equivalent becauselength fields. Implementations MUST ensure that these are consistent and sane. Randomness Various fields inan IPN architecture they will likelyLTP (e.g. serial numbers) should beimplemented elsewhere. CFDP's EOF (Filestore error) and Finished (Filestore error) PDUs wouldinitialized using random values. Good sources of randomness which are not easily guessable SHOULD beimplemented in an IPN application-layer file transfer protocol, e.g., CFDP itself. CFDP's Finished [End System] PDUused [ECS94]. The collision of random values is subject to the birthday paradox, which means that afeaturecollision is likely after roughly the square-root of theExtended Procedures, which wouldspace has been seen (e.g. 2^16 ineffect be implemented bytheBundling protocol. 15.case of a 32-bit random value). Implementers MUST ensure that they use sufficiently long random values so that the birthday paradox doesn't cause a problem in their environment. 10. IANA Considerations At present there are none known. However if someone wanted to run LTP over IP (or even TCP or UDP), then we would want to allocate aBurleighport number. <<Considering this is TBD>> Ramadas et al. Expires -JanuaryJune 2005 [Page67]46] Internet DraftLicklider Transmission Protocol JulyLTP - Specification December 2004port number. <<Considering this is TBD>> 16.11. Acknowledgments Many thanks to Tim Ray, Vint Cerf, Bob Durst, Kevin Fall, Adrian Hooke, Keith Scott, Leigh Torgerson, Eric Travis, and Howie Weiss for their thoughts on this protocol and its role in Delay-Tolerant Networking architecture. Part of the research described in this document was carried out at the Jet Propulsion laboratory, California Institute of Technology, under a contract with the National Aeronautics and Space Administration. This work was performed under DOD Contract DAA- B07- 00-CC201, DARPA AO H912; JPL Task Plan No. 80-5045, DARPA AO H870; and NASA Contract NAS7-1407.This work was performed under DOD Contract DAA-B07-00-CC201, DARPA AO H912; JPL Task Plan No. 80-5045, DARPA AO H870; and NASA Contract NAS7-1407.Thanks are also due to Shawn Ostermann, Hans Kruse, and Dovel Myers at Ohio University for their suggestions and advice in making various design decisions. Part of this work was carried out at Trinity College Dublin as part of the SeNDT contract funded by Enterprise Ireland's research innovation fund.17.12. References17.112.1 Normative References [B97] S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.[HMAC] Krawczyk, H. et al, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, February 1997. [RSA] Kaliski, B, Staddon J, "PKCS #1: RSA Cryptography Specifications Version 2.0", RFC 2437, October 1998. 17.2[LTPMOTIVE] Burleigh, S., Ramadas, M., and Farrell, S., "Licklider Transmission Protocol - Motivation", draft-irtf-dtnrg-ltp- motivation-00.txt (Work in Progress), December 2004. [LTPEXT] Farrell, S., Ramadas, M., and Burleigh, S., "Licklider Transmission Protocol - Extensions", draft-irtf-dtnrg-ltp- extensions-00.txt (Work in Progress), December 2004. 12.2 Informative References [AH] Kent, S., and R. Atkinson, "IP Authentication Header", RFC 2402, November 1998. [ASN1] Abstract Syntax Notation One (ASN.1). Specification of Basic Notation. ITU-T Rec. X.680 (2002) | ISO/IEC 8824-1:2002.[BP] K. Scott, and S. Burleigh, "Bundle Protocol Specification", Burleigh et al. Expires - January 2005 [Page 68] Internet Draft Licklider Transmission Protocol July 2004 Work in Progress, October 2003. [CCSDS] Consultative Committee for Space Data Systems web page, "http://www.ccsds.org". [CFDP] CCSDS File Delivery Protocol (CFDP). Recommendation for Space Data System Standards, CCSDS 727.0-B-2 BLUE BOOK Issue 1, October 2002.[DDJ] I. Goldberg and E. Wagner, "Randomness and the Netscape Browser", Dr. Dobb's Journal, 1996, (pages 66-70).[DSN] Deep Space Mission Systems Telecommunications Link Design Handbook (810-005) web-page, "http://eis.jpl.nasa.gov/deepspace/dsndocs/810-005/"Ramadas et al. Expires - June 2005 [Page 47] Internet Draft LTP - Specification December 2004 [BP] K. Scott, and S. Burleigh, "Bundle Protocol Specification", Work in Progress, October 2003. [DTN] K. Fall, "A Delay-Tolerant Network Architecture for Challenged Internets", In Proceedings of ACM SIGCOMM 2003, Karlsruhe, Germany, Aug 2003. [IPN] InterPlanetary Internet Special Interest Group web page, "http://www.ipnsig.org".[TFRC] M. Handley, S. Floyd, J. Padhye, and J. Widmer, "TCP Friendly Rate Control (TFRC): Protocol Specification", RFC 3448, January 2003. [PKIXPROF] Housley, R. et al, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3280, April 2002. [TM] Packet Telemetry Specification. Recommendation for Space Data System Standards, CCSDS 103.0-B-2 BLUE BOOK Issue 2, June 2001. [TC] Telecommand Part 2 - Data Routing Service. Recommendation for Space Data System Standards, CCSDS 202.0-B-3 BLUE BOOK Issue 3, June 2001.[ECS94] D. Eastlake, S. Crocker, and J. Schiller, "Randomness Recommendations for Security", RFC 1750, December 1994.18.13. Author's Addresses Manikantan Ramadas Internetworking Research Group 301 Stocker Center Ohio University Athens, OH 45701 Telephone +1 (740) 593-1562 Email mramadas@irg.cs.ohiou.edu Scott C. Burleigh Jet Propulsion Laboratory 4800 Oak Grove Drive M/S: 179-206 Pasadena, CA 91109-8099Burleigh et al. Expires - January 2005 [Page 69] Internet Draft Licklider Transmission Protocol July 2004Telephone +1 (818) 393-3353 FAX +1 (818) 354-1075 Email Scott.Burleigh@jpl.nasa.govManikantan Ramadas Internetworking Research Group 301 Stocker Center Ohio University Athens, OH 45701 Telephone +1 (740) 593-1562 Email mramadas@irg.cs.ohiou.eduStephen Farrell Distributed Systems Group Computer Science Department Trinity College Dublin Ireland Telephone +353-1-608-3070 Email stephen.farrell@cs.tcd.ie19.14. Copyright Statement Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights." This document and the information contained herein are provided on an Ramadas et al. Expires - June 2005 [Page 48] Internet Draft LTP - Specification December 2004 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.BurleighRamadas et al. Expires -JanuaryJune 2005 [Page70]49] ----