Hi Sven, thank you,
I will have a closer look at the code and send some more details over the weekend. Essentially I understand that neighbor ranking for a destination node 'D' is performed on the number of OGM's received in the sliding window. What I want to do is introduce an extra metric say X that alters the number of OGM's in the sliding window (a kind of penalty), then when BATMAN calculates the next best hop for that destination 'D', this information will reflect that:
For example, N1: node that wishes to route a packet to destination D D: Destination node N2, N3: Neighbours of N1 and D
[1] at t = 0: (N2) / ___ / \ (N1) (D) \ ____/ \ / (N3) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [2] at t = t_1: N2 and N3 broadcast their OGM's with some metric about themselves (X_n) attached. N(1) keeps a list of neighbours, with their associated metric X_n at any time- it will be used for neighbour ranking.
(N2) ogm+x_2/ ___ / \ (N1) (D) \ ____/ ogm+x_3\ / (N3) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [3] at t = t_2: D Broadcasts its OGM
(N2) / _OGM / \ (N1) (D) \ OGM_/ \ / (N3) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [4] at t = t_3: N2 forward D's OGM onto N1
(N2) OGM/ ___ / \ (N1) (D) \ ____/ \ / (N3) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [5] at t = t_4:
sliding window of neigbour N2 for Destination D is:
|__________10....._| --> ten sequence numbers have been received from D over N2 but we penalize this count with x_2, which leaves it at 6
sliding window of neigbour N3 for Destination D is:
|__________8....._| --> eight sequence numbers have been received from D over N3 but we penalize this with x_3, which leaves it at 6
at this point the next best hop to route a packet to destination D is N2 or N3
and lastly in this time interval, N3 forward D's OGM onto N1
(N2) / ___ / \ (N1) (D) OGM\ ____/ \ / (N3) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [6] at t = t_5:
sliding window of neigbour N2 for Destination D is:
|__________10....._| --> ten sequence numbers have been received from D over N2 but we penalize this count with x_2, which leaves it at 6
sliding window of neigbour N3 for Destination D is:
|__________9....._| --> nine sequence numbers have been received from D over N3 but we penalize this with x_3, which leaves it at 7
at this point the next best hop to route a packet to destination D is the link over N3 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Again, thank you for your kind assistance.
Dominic UCT
On Tue, Aug 21, 2012 at 12:32 AM, Sven Eckelmann sven@narfation.org wrote:
On Sunday 19 August 2012 17:13:28 Dominic Follett-Smith wrote:
I am using the batmand release and I trying to edit where batman keeps a statistic of next best hops to a destination node.
The development focus of many people changed to batman-adv. Therefore, most people aren't knowing the code very well (or have to read a while to get into the code again).
I want to change the metric in some way to alter the choices that batman makes when routing a packet to its destination. However I am rather stuck, and would appreciate some direction on where the updating of this statistic of next best hops for a destination is done in the batman code.
You're request is a little bit too general. Maybe you can go a little bit more in detail. Otherwise I can only recommend batman(void) in batman.c and update_orig(...) in originator.c
Kind regards, Sven