Commit df0b9ca9 authored by David G Andersen's avatar David G Andersen
Browse files

Some overall documentation

parent 2eb86f74
The "assign" program takes two inputs:
a) A description of the physical layout of the testbed
b) A description of the virtual network the user wishes to emulate
and maps the virtual network onto the physical network by assigning
nodes in the virtual network (vnodes) to nodes in the physical
network. It treats delay nodes specially because multiple delay
links can be handled by one computer.
Assign uses simulated annealing to determine the mapping.
The basic idea is quite simple:
Set a starting temperature for the system
Make random changes to the the system. In our case, I move a node
from one switch to another.
Compute a "score" for the system which reflects how good the solution
If the score is better, then accept the change. If it is worse,
then accept it with a probability which decreases as the temperature
The simulated annealing algorithm I use is quite simple. We perform
one "cycle" at each temperature, and then multiplicatively decrease
the temperature to 90% of its previous value. A cycle consists
of a number of random changes; this number is a function of the
number of nodes and edges in the graph, so as our graph gets
bigger, we take longer and longer in a cycle. We quit once our
temperature falls below 2.
The program uses the LEDA graph library and graph GUI. For
the testbed purposes, the GUI is unnecessary, but it's a fun
addition. More information about LEDA can be found at:
LEDA is commercial software. Dave has a source code license for it
which can be used by anyone at MIT, and presumably, by people at
Utah as well, since their licensing terms say it can apply as a
cite license. Please do NOT distribute the LEDA binaries I've installed.
I'm not sure yet about the resulting licensing terms on binaries we
create. I've contacted LEDA research about it and will update this
file when I hear from them.
1) Hardwired connections between machines
This will require a big change to the scoring, because now
instead of assigning nodes to switches and doing a simple
greedy assignment from there, we'll need to assign nodes
to nodes. This will slow the program down by
a lot - probably a factor of 100.
Change the annealing to swap two node assignments
instead of simply moving a node to a different graph
There can, of course, be null assignments.
Scoring will need to be updated, but that should be fairly
trivial with the right data structures.
When we add this, we'll need to tweak the annealing parameters
to match the length of time we need to achieve a good solution.
If we do 1), then DNARDs follow. Simply call nodes with
dnards attached "dnard handling nodes" and then assign
a cluster of dnards and the router they connect to to a
dnard handling node.
3) Speed
See comments in assign.h. 4 seconds for the assignment is
acceptable, but once we start doing the hardwired connections
and dnards, we'll really need to boost the speed. The best
way to do this is to avoid the global score recomputation
each step by replacing it with an incremental score update,
avoiding a *lot* of work.
The simulated annealing is Dave's fault. The physical topology
and parsing stuff is Chris' fault, except where it's an ugly
bad hack, where Dave is probably to blame. :)
LEDA is LEDA's fault.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment