Hello.
As I understand you right, what you want is to select the "first" route for a specific destination and exclude other routes for the same destination.
Consider this routing table with patterns X and Y:
[1] bundles matching Y routed to A
[2] bundles matching X routed to A
[3] bundles matching Y routes to B
In each round you have to select the valid entries.
Assuming A and B is in your neighbor list, the algorithm might start with neighbor A and select these entries...
[1] bundles matching Y routed to A
[2] bundles matching X routed to A
Now every bundle matching Y or X is forwarded to A.
As next the algorithm consider the neighbor C in another round and selects these routes:
[3] bundles matching Y routes to B
That forwards all bundles matching Y to B.
All together we have the situation that A and B gets all bundles matching Y. (That is the current behavior.)
To limit the routing, you need to limit the route selection.
If the algorithm processes neighbor B, it can notice that there is also neighbor A available which has the same pattern assigned. Based on the ordering of node names it is possible to skip the routes already valid for another node. The result then is this route set.
[2] bundles matching X routed to A
Bundle matching pattern Y are now only forwarded to node A, if node A and B are available as neighbor.
Kind regards,
Johannes Morgenroth
Am 21.08.2013 16:01, schrieb ssireskin@gmail.com:
Thank you for helping me, Johannes!
I'm not familiar with ibr-dtn logic and I'm not a good programmer, so it is difficult to me to understand your explanation. I understood, that bundles are selected for forwarding in rounds, one round for each neighbor. But I can't understand this part: "only the routes are selected where no other path exists", mainly "where no other path exists". Could you please explain the algorithm in more detail?
1. Get a list of current neighbors;
2. ...;
3. ...
Best regards,
Sergey Sireskin