Hi,
2011/11/17 Sven Eckelmann sven@narfation.org:
On Thursday 17 November 2011 16:15:42 Daniele Furlan wrote:
This series of patches introduce a correction in tq metric and forwarding rules of ogm packets.
In the current configuration routing loops scenario can emerge due to some conceptual errors such the global tq window and the forwarding of ogm coming from sub-optimal paths substituting ogm tq with the average of current router. An example scenario has been realized also in simulation using qemu.
Interesting statement but maybe it would also be interesting for others to provide examples and explanations.
This argument will be a section of my master thesis. As soon as I have some more material I will forward it to the community together with the script used for testing with qemu.
Can be demonstrated as already done for DSDV[1], that is a protocol very similar to batman, that a proper forwarding policy together with a strict control on metric monotonicity (as suggested in [2]) are sufficient to guarantee loop-freeness for the protocol.
I apologize in advance if the source style is not the best possible, but I hope that the ideas will applied after a phase of code revision.
Please read and understand http://www.open-mesh.org/wiki/open-mesh/Contribute#Submitting-patches
I refer here to checking of your patches using simple static analyzers and the documentation part.
Also things like
- /* update last originator seqno received from this neighbour */
- if ((set_mark) &&
- (batman_ogm_packet->seqno > tmp_neigh_node->last_seqno))
- tmp_neigh_node->last_seqno = batman_ogm_packet->seqno;
are simply wrong. Have you thought about overflow of sequence numbers (hint: seq_before/after)? Ok, forget about the code and look at the rest.
I perfectly know that the code I provided is a mess. But it works and would solve the problems of loops and convergency, and this can be verified by anybody before concentrating on coding technicality.
You don't give any hints about implications of your changes in the commit messages (no, something like "everything will be better because I say it" doesn't count).
As already said I will provide soom formal proofs of NON loop-freeness of current BATMAN implementation together with a proposal of changes that guarantees FORMALLY loop-freeness.
Take for example the stuff prepared by Simon. He gathered information, talked to the people and prepared documentation. I can now use this stuff to discuss with him at a higher level than with the stuff you provided. And his stuff is only a "small" optional feature, but your patches changes things in the path selection and information propagation code.
My modifications are not as drastic as you are saying. They simply remove formally wrong mechanisms such global TQ window and the forwarding of ogm not coming from the actual router.
Maybe you should contact everyone (marec, d0tslash, ordex, ...) on IRC and talk about the actual concepts (and also their concepts... ttvn *hinthinthint*) and prepare actual documentation based on that.
As soon as I have some more material I will expose my concept clearly, meanwhile if someone want to test my patch is free to do that.
Kind regards, Sven
Thanks for your comments! Regards.
Daniele Furlan