IBR-DTN Router Question in regards to Connection and Node Events
Hello, I've pretty much been able to finish my IBRDTN router, and now I am testing it to find functional flaws and polish it up. One thing I noticed is that when a node I am using goes out of range and a TransferAbortedEvent occurs, the source continues to try and send bundles to that node unsuccessfully until the node returns. I made my router based off of the FloodRouter and EpidemicRouter that you included with your source code so the code looks like this:
const dtn::net::TransferAbortedEvent &aborted = dynamic_cast<const dtn::net::TransferAbortedEvent&>(*evt);
// transfer the next bundle to this destination _taskqueue.push( new SearchNextBundleTask( aborted.getPeer() ) ); return;
I assume this was intentional, correct? I know that there are other reasons why a bundle transfer should fail, but in my case, at least 99% of the time it is because nodes come and go out of range fairly quickly. Should I just comment out the taskqueue line to stop it from continuing to send packets unsuccesfully and just wait until a connection event continues bundle transmissions?
Thanks, Carson
Hello Carson.
Am 15.02.2012 16:31, schrieb Carson Dunbar:
const dtn::net::TransferAbortedEvent &aborted = dynamic_cast<const dtn::net::TransferAbortedEvent&>(*evt);
// transfer the next bundle to this destination _taskqueue.push( new SearchNextBundleTask( aborted.getPeer() ) ); return;
This statement is not a retransmission try. It is only a poke to look for other bundles to transfer. If you comment out this part of the router, it will not transfer other bundles if one of them was rejected by the peer.
Furthermore, the daemon do not try to redeliver a bundle unlimited times. If the peer is gone, no more bundles will be queued to a peer. The only scenario where this might happen is, if a static connection get interrupted. Are you using static configured hosts or the discovery mechanism?
Kind regards, Johannes
participants (2)
-
Carson Dunbar
-
Johannes Morgenroth