= BattleMeshV5 Tests = <> == General Rules == * same routing protocol configuration for every test * routing protocols are tested in turn (i.e. not altogether) * cpu and memory consumption should be tracked during each test * no points, just results and a final analysis == Tests == === Be Quick or Be Stable Test === To be performed on a subset of the nodes. {{{ +----+ | L1 |-----(A) : : : : : : (B) +----+ : r1 | : | : | : r2 | : | : +----+ (C)-----------| L2 | +----+ }}} * L1, L2: laptops * A, B, C: wireless nodes * link A-B uses association rate r1 * link A-C uses association rate r2 * r2 > r1 * - and | are cables * : are wireless links ==== Steps ==== only 1x for each protocol 1. perform a continuous traceroute (mtr or whatever) from L1 to L2 1. load the network with UDP (iperf or whatever) from L1 to L2 1. start a 21 minutes download from L2 to L1 1. see how many times (if any) the route flaps in 21 minutes 1. see if the routing protocol prefers the slow or the fast route ==== Goals ==== Check the stability of the routing protocol, and if the metric is effective. ==== References ==== * http://www.youtube.com/watch?v=fZLv2G0Hhn4 === The ZooBab Test === To be performed on a subset of the nodes. {{{ +----+ | L1 |-----(A) : : : : : : (B) +----+ : x : : : x : : x : : : : : : (C) (E) | | +----+ (D) : : : : : : (F)-------| L2 | y +----+ }}} * L1, L2: laptops * A, B, C, E: nodes set on channel x * D, F: nodes set on channel y * - and | are cables * : are wireless links ==== Steps ==== only 1x for each protocol 1. load the network with TCP (iperf or whatever) from L1 to L2 1. perform a continuous traceroute (mtr or whatever) from L1 to L2 1. sleep for 21 minutes 1. see for which fraction of the time the routing protocol chooses the best route (L1->A->C->D->F->L2) ==== Goal ==== See if the routing protocol prefers the channel-changing route, by design or by just because is the best path. === Convergence Time Test === To be performed on the whole mesh. {{{ .~.~.~.~.~.~.~.~.~.~.~. (A) : ( ) ( ) ( ) ( (N) ) ( ) ( ) ( ) : (B) ( MESH CLOUD ) .~.~.~.~.~.~.~.~.~.~.~.~. }}} ==== Steps - part 1 ==== repeat 3x for each protocol 1. traceroute from one end (node ''A'') to the other (node ''B'') of the mesh until the path is stable 1. find a critical node ''N'' in the path so that a. has good quality links with its neighbors (possibly more than one) a. if shut down the network does not split 1. start a ping from ''A'' to ''B'' 1. turn off ''N'' 1. count the number of pings from the first lost ping to the first subsequent successful ping ==== Steps - part 2 ==== 1. start a continuous traceroute (mtr or whatever) from node ''A'' to node ''B'' 1. turn back on node ''N'' and start a stopwatch 1. measure the time needed to get the node ''N'' (back) into the traceroute ==== Goal ==== Just convergence time. === Don't Cross the Streams Test === To be performed on the whole mesh {{{ +----+ .~.~.~.~.~.~.~.~.~.~.~. +----+ | L1 |-----(A) : ( ) : (C)-----| L3 | +----+ ( ) +----+ ( ) ( MESH ) ( CLOUD ) +----+ ( ) +----+ | L4 |-----(D) : ( ) : (B)-----| L2 | +----+ ( ) +----+ .~.~.~.~.~.~.~.~.~.~.~.~. }}} * L1, L2, L3, L4: laptops * A, B, C, D: edge wireless nodes ==== Steps ==== only 1x for each protocol 1. start, at the same time: a. a TCP stream between L1 to L2 a. a TCP stream between L3 to L4 a. a stopwatch 1. sleep for 21 minutes 1. measure the total number of bytes transferred ==== Goal ==== See if the routing protocol can choose the paths for the two streams that maximizes throughput. ==== References ==== * http://www.youtube.com/watch?v=jyaLZHiJJnE