Hello João.

 

Your observation is correct. The tool dtnstream is designed to split-up a continuous stream into chunks and bring it into the right order at the receiver. As long as your DTN assures delivery without lost bundles, this should work. In case you are not interested in the right order, you can simply use dtnstream as sender and dtnrecv as receiver. The additional data for the streaming and reordering is stored in an extension block of the bundle and not within the payload. So it is possible to just receive the payload of the stream by calling dtnrecv.

 

If you just looking for a timeout mechanism to skip lost bundles after a timeout, you can just set the parameter “-t” of dtnstream.

 

To modify the behavior, you need to adapt the class BundleStreamBuf [1] within the tools package. The method __underflow(), checks if the next sequence number is available and blocks until this is available or a predefined timeout is reached [2].

 

Kind regards,

Johannes

 

[1] https://github.com/ibrdtn/ibrdtn/blob/master/ibrdtn/tools/src/streaming/BundleStreamBuf.cpp#L178

[2] https://github.com/ibrdtn/ibrdtn/blob/master/ibrdtn/tools/src/streaming/BundleStreamBuf.cpp#L187

 

 

Von: Ibr-dtn <ibr-dtn-bounces@ibr.cs.tu-bs.de> Im Auftrag von João Pedro Loureiro via Ibr-dtn
Gesendet: Freitag, 18. Dezember 2020 13:53
An: ibr-dtn@ibr.cs.tu-bs.de
Betreff: [ibr-dtn] dtnstream: Lost Bundles

 

Hello!

 

My name is João Loureiro and I'm a MSc student at University of Porto (Portugal) & INESC-TEC (a research institute). 

 

In my master thesis, I'm performing some tests using the IBR-DTN tool "dtnstream" and 3 nodes, where the first node (sender) only reaches the third (final destination) through the "middle" node. 

 

The problem I'm facing is the following: I want the destination (where the video/audio stream is being reproduced and piped into VLC player) to ignore lost bundles/chunks, i.e., If I receive at this node, for example, the chunks with the seq. nrs. 0,1 and 3, I want to have a continuous video streaming, ignoring the packet with seq. nr. 2, and passing from 1 to 3 instantaneously or with a specified timeout. 

 

I've read the documentation and this paper: https://doi.org/10.1145/2030652.2030673, but, in my understanding, and following the dozens of tests I've already performed, currently dtnstream keeps waiting for the right sequence number instead of keep going with the last received one. I just wanted to confirm that is truly what is happening and, if it is, if there's some simple tips for modifying the code in order to obtain this behavior (I have already tried several modifications but with no success...). 

 

Thanks a lot for your help, in advance!

João P. T. Loureiro