George Riley and Josh Pelkey
Georgia Institute of Technology
• Motivation
• Approach
• Details of XML interface
• Problems with the Approach
• Alternative Approaches
• Summary
• A primary effort from the NSF funding for ns-3 is
“educational use”.
• The ns-3 simulator requires tools for compiling, linking, and in some cases C++ programming skills.
• The majority of classroom educators at college level, either at undergraduate or graduate level are unlikely to have these compiling/linking tools readily available, and are not in fact skilled in these areas.
– Often rely on undergraduate or graduate “teaching assistants”, who may or may not have programming skills.
• In order to promote “educational use”, we must have a simple way, using tools that are readily available to nearly all users (eg. Text editor)
• Describe the ns-3 simulation scenario using the well-known
Extensible Markup Language (XML).
• Implement an XML parser that both understands the XML syntax, and the meaning of the ns-3 objects specified
• The XML parser will read the complete XML file, validate that it is correct, then create the ns-3 objects (nodes, links, protocol stacks, routing objects, and applications)
• The parser will produce meaningful and detailed error messages when erroneous specifications are detected.
• Allows command line arguments to vary independent variables, to illustrate effects of network parameters.
• A difficulty is that the XML syntax is not easily adapted to concepts such as loops, repetitions, and references to other XML elements
• The XML root element is the ns3 element
– Attribute “ StopAt ”
– Subelements:
• cmdline
• randomgenerators
• topology
• applications
• animation
• statistics
• Attributes are:
– name
• Name of ns-3 attribute
– default
• Default value if not specified
– help
• Help text
• Subelements
– exponential
• Name
• Mean
• limit
– Uniform
• Name
• Min
• Max
– Normal
• Name
• Mean
• variance
– Constant
• Name
• Value
•
•
•
•
•
• <randomgenerators runNumber = "$runNumber" seed =
"123456" >
<exponential name = "exp1" mean = "1.0" limit
= "100.0" />
<uniform name = "uni1" min = "0.0" max =
"1.0" />
<normal name = "norm1" mean = "0.0" variance = "1.0" />
<constant name = "const1" value = "0.0" />
</randomgenerators>
• Attributes
– autoIPV4
– GODRouting
– NIXRouting
– autoIPV4Base
– autoIPV4mask
• Subelements
– Queue element
– P2plink element
– Node element
– Connect p2p
– Dumbbell
• Subelements
– Onoff
– Constantbitrate
– Bulksend
• Log subelement, attributes:
– Repeat
– Name
– Stat
– At
– Frequency
• Example:
–
<log repeat = "10" name = "sinkRx" stat =
"$packetsinkapp$0$totalBytesRx" at = "1.0" frequency =
"1.0" />
• Windows!
– The vast majority of teaching faculty use windows. We will have to have a windows versio
• John Abraham has already ported most of ns-3 to the win32 API
• Animation!
– Not only topology and packets, but various metrics (queue occupancy, sequence number for TCP, etc)
• Still need detailed understanding of how ns-3 pieces fit together
• Lack of “real-time” statistics (ie. Queue occupancy over time as simulation is running).
• Requires new code in ns3xml for each release (with new topology, applications, queues, etc).
• Drag and drop GUI
– Still need some “save file format”, so perhaps the drag and drop GUI could produce ns3xml format.
• Pre-compile many “scenarios” and use command line arguments for setting independent variables.
– Presupposes we an predict in advance all possible teaching scenarios. Seems unlikely
• Ns3xml is still work in progress
• Usefulness and ease of use in the classroom is yet to be demonstrated
• Proof is in the pudding.
– We will monitor when and if other teaching faculty download and use ns3xml