Direct Execution of OLSR MANET Routing Daemon in NS-3

Direct Execution of OLSR MANET
Routing Daemon in NS-3
Evgeni Bikov, Pavel Boyko
IITP RAS, Moscow
• Questions:
– Can the ns-3-dce framework run unmodified OLSRd
routing daemon?
– Does it match the out of box ns-3 OLSR model?
– Can it be used instead of model in large scale
simulation campaigns?
• Answer: yes
• … almost
• MANET routing protocol models are difficult
to verify.
• 3X more verification when model coexists with
the “real” implementation!
Direct Code Execution
• Run [as much as possible] unmodified
”implementation” code instead of model in
simulated environment.
• Methods:
– Virtual machines;
– Manual source modifications (AODV-UU);
– Automatic source modifications (NSC).
NS-3-DCE Framework
• No source code patching:
– custom ELF loader with automatic globalization;
– custom process and thread management;
– glibc API reimplemented to use NS-3 API;
– netlink API reimplemented .
• Shown to run Zebra routing daemon.
• Now runs Linux kernel as well as user space
Production quality OLSR implementation.
~80 KLOC in C, user space, portable, BSD license.
Widely used in community mesh networks,
O(10K) installations worldwide:
– 12K+ operating nodes, Spain
– Austria
• Large number of RFC extensions; plugin
• OLSRv2 implementation in progress.
Running OLSRd on NS-3-DCE
• OLSRd appeared to be quite demanding to
glibc implementation quality (good test case)
• But finally it runs
• Now how to check that NS-3-DCE executes
OLSRd correctly?
– read PCAPs;
– compare to virtual machine execution;
– compare to out of box NS-3 OLSR model.
OLSRd vs. ns3::olsr::RoutingProtocol
Small static topologies
Steady state simulation
No traffic apart OLSR
– routing tables @ all nodes;
– mean packet size (B);
– mean packet rate (1/s).
• Results:
– all routing tables match;
– mean packet size and rate: up to 2X difference.
• Find and fix the differences between OLSRd and
NS-3 OLSR model until observables match.
• Differences found:
default timeouts
HELLO compression
message aggregation
message jitter
OLSRd modified;
model modified;
model modified;
OLSRd modified.
• After calibration observables match within 1-5%.
Example: Message Jitter
NS-3 OLSR model
Comparison: Transient Behavior
100 nodes
Static random positions
No traffic
Mean known route
length (top)
• Number of known
destinations (bottom)
• Similar behavior, but
difference >> stddev.
Comparison: Steady State
• Good: average steady state route length
• Bad: up to 2x difference in average packet size
and average packet rate.
• Calibration made for small networks does not
help at larger scale. Need more accurate
message compression and aggregation
mechanisms in the model.
Comparison: Performance
• OLSRd outperforms model at 100 nodes
• Use model at the early stages of MANET
routing protocol design/research.
• Finally discard model and switch to DCE of
• Use calibration procedure in between to test
model and implementation against each

similar documents