On 8 Jun 2009, at 12:15, Iljitsch van Beijnum wrote:

On 8 jun 2009, at 9:46, Lloyd Wood wrote:

Other benefits in this particular case are outlined in draft-wood- dtnrg-http-dtn-delivery.)

http://tools.ietf.org/html/draft-wood-dtnrg-http-dtn-delivery-03

I haven't followed delay tolerant networking, but using HTTP here seems rather curious to me unless the delay toleration isn't very ambitious, as HTTP is a request/response protocol.

use of PUT gets around the initial request and response for long-delay links.

('Delay-tolerant' is really an umbrella term to mean 'delay and disruption tolerant' these days, widening the scope from the original deep-space scenarios you discuss to include everything that is not the terrestrial internet. The term itself has become something of a misnomer for the majority of scenarios, but it's still on the banner being waved by academic research.)


This means that if you want to use it towards the Cassini orbiting Saturn, you're wasting half an RTT (about 1.3 hours) of usable communication time waiting for the HTTP request to get there. If each side can autonomously send messages without a request/response cycle that's much more efficient.

again, PUT allows that. The responses (if any - I can see a case for blind unidirectional PUTs) get daisy-chained into the persistent pipeline going the other way. The long propagation delay due to the speed of light is unavoidable, but handshaking in initial request/ response setup can be prevented, leading to a one-RTT exchange time.


Also, the MD5 business is extremely curious, this is just an invitation to implementers to play fast and loose with the underlying reliable transport that HTTP requires.

Having a high-level e2e check is useful. I don't see how checking data reliability is an invitation to play fast and loose with the transport underneath. When dealing with disrupted networks, links that change quality or drop unexpectedly, etc., Content-Length: and Content-MD5: become useful in evaluating whether what has been received is worthwhile or should be discarded. Content-MD5: becomes particularly useful for checking reassembly of partial transfers. And, of course, in this dtn approach the data is copied multiple times across multiple transfers across multiple separate concatenated reliable transports. Always useful to be able to verify that what comes out of the end of that process is what went in before giving it to the app.


HTTP/1.1's persistence, pipelining and chunked transfer encoding give it a level of control that can be argued to be session management.

In the OSI reference model, the session layer is above the transport layer, which means that you can maintain a session across transport instances.

If the application is entirely unaware of whether the http library opens a new tcp stream, or reuses an existing one, I'd argue that it thinks that a session is being maintained...

Using the same OSI model argument, the transport layer is above the network layer, which means that you can maintain a transport across network instances. Ergo, TCP, which traditionally sucks at multihoming and having addresses change on it, is not a(n OSI) transport layer[*]. But we knew that. The 'session' label still fits, even if the OSI dogma does not.

[*] While SCTP is, which somehow figures since it was designed to support ITU-T SS7 telephone networks...

This is a very weak point in HTTP (which pipelining etc don't address), although of course many people have implemented hacks to do exactly this.

DTN work: http://info.ee.surrey.ac.uk/Personal/L.Wood/saratoga/

<http://info.surrey.ac.uk/Personal/L.Wood/><[email protected]>

Reply via email to