Friday, November 30, 2012

Routing Tutorials from RNP

A CORE user from Brazil's RNP training unit, ESR, has contributed some tutorial material developed for a course on IP routing protocols.

The PDFs cover configuration of static routes, RIP, OSPF, and BGP protocols, and include imn scenario files and some pcap traces. The material is available on the supplemental downloads page. Thanks Luiz Carlos Lobato!

Wednesday, October 31, 2012

3D GUI with SDT3D

A new 3D GUI menu item has been introduced under the View menu. CORE can now publish its topology to the SDT3D (Scripted Display Tool 3D) developed by NRL. The latitude, longitude, and altitude settings under the Canvas Size and Scale dialog will determine the coordinate mapping to a geographic location. SDT3D is based on NASA's WorldWind Java SDK. This is three-dimensional virtual globe software similar to Google Earth.
Node movements and links are drawn on the 3D map as depicted in the screenshot below.
In order to get this working, a /usr/local/bin/sdt3d.sh launcher script is made with the following contents:
#!/bin/sh
cd ~
/opt/sdt/sdt3d.sh $@
The following line is used in an ~/sdtConfig.txt file in the user's home directory; this causes SDT3D to receive commands on a local UDP port 5000 socket :
listen 5000
Here we have SDT3D installed to /opt/sdt, with a /opt/sdt/sdt3d.sh script as shown below:

#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
THISDIR=`dirname $0`
export LD_LIBRARY_PATH=${THISDIR}/lib
java -jar -Dsun.java2d.noddraw=true -Xmx512m \ ${THISDIR}/jars/sdt3d.jar


For tips on building and install SDT3D under Ubuntu 12.04 x86_64, see this SDT3D wiki page. OpenJDK 1.7 is used, as the Oracle JDK did not seem to work.

Tuesday, September 25, 2012

CORE 4.4 released

A new 4.4 release of CORE is available. To obtain the software, please visit:


The high-level changes since version 4.3 are:

GUI
  • real-time bandwidth plotting tool
  • added Wireshark and tshark right-click menu items
  • X,Y coordinates shown in the status bar
  • updated GUI attribute option to link messages for changing color/width/dash
  • added sample IPsec and VPN scenarios, how many nodes script
  • added jitter parameter to WLANs
  • renamed Experiment menu to Session menu, added session options
  • use 'key=value' configuration for services, EMANE models, WLAN models, etc.
  • save only service values that have been customized
  • copy service parameters from one customized service to another
  • right-click menu to start/stop/restart each service

EMANE
  • EMANE 0.7.4 support
  • added support for EMANE CommEffect model and Comm Effect controller GUI
  • added support for EMANE Raw Transport when using RJ45 devices

Services
  • improved service customization; allow a service to define custom Tcl tab
  • added vtysh.conf for Quagga service to support 'write mem'
  • support scheduled events and services that start N seconds after runtime
  • added UCARP service

Documentation
  • converted the CORE manual to reStructuredText using Sphinx; added Python docs

General
  • Python code reorganization
  • improved cored.py thread locking
  • merged xen branch into trunk
  • added an event queue to a session with notion of time zero
  • added UDP support to cored.py
  • use UDP by default in coresendmsg.py; added '-H' option to print examples
  • enter a bash shell by default when running vcmd with no arguments
  • fixes to distributed emulation entering runtime state
  • write 'nodes' file upon session startup
  • make session number and other attributes available in environment
  • support /etc/core/environment and ~/.core/environment files
  • added Ns2ScriptedMobility model to Python, removed from the GUI
  • namespace nodes mount a private /sys
  • fixed the following bugs:  80, 81, 84, 99, 104, 109, 110, 122, 124, 131, 133, 134, 135, 137, 140,  143, 144, 146, 147, 151, 154, 155

These release notes along with a list of known issues are posted here:

Monday, April 30, 2012

throughput plots

The Throughput Widget in CORE has shown the real-time kbps bandwidth usage on each link, and now we can plot this data using a new Plot Tool.
About the new Plot Tool:
  • Available in the SVN snapshot of CORE
  • Click on the new blue plot icon in the Execution Toolbar
  • Click on any link to open a new plot for that link. (Opening a new plot will turn on the Throughput Widget if it is off.)
  • Plots are updated every second (along with the throughput labels.)
  • Plots can be dragged around the canvas with the mouse.
  • Right-click on a plot to close it.

To-do list -- help wanted!

Are you interested in improving the plot tool? Here are some items on the To-do list:
  • Plot re-sizing: drag the edge/corner of a plot to resize it; use Tk canvas scale command
  • Color picker: click an icon to choose one of several preset color schemes for the plot (choices could appear after floating the mouse in the upper-right corner of the plot)
  • link/interface label on a plot (with many plots on screen, it may be useful to know which plot belongs to which nodes)
  • lock all scales together (plots will auto-scale up to display higher throughputs; this may cause the scales of several plots to be out of sync and difficult to compare)
  • pause plot (e.g. float mouse in upper-right corner and pause/color selection buttons appear)
  • scroll back plot history
  • save/log plot data to a file (throughput data is calculated from bytes reported in /proc/net/dev)
  • save location and plot settings with the imn file for auto-loading
  • plot something else: kbps in/out? plot different protocols, TCP/UDP, unicast/multicast?

Thursday, March 8, 2012

CORE 4.3 released



A new 4.3 release of CORE is available. To obtain the software, please visit:
http://cs.itd.nrl.navy.mil/work/core/
http://downloads.pf.itd.nrl.navy.mil/core/packages/4.3/

Quickstart installation instructions are here:
http://code.google.com/p/coreemu/wiki/Quickstart

The high-level changes since version 4.2 are:

  • EMANE 0.7.2 and 0.7.3 support
  • hook scripts: customize actions at any of six different session states
  • Check Emulation Light (CEL) exception feedback system
  • added FTP and XORP services, and service validate commands
  • services can flag when customization is required
  • Python classes to support ns-3 simulation experiments
  • write state, node X,Y position, and servers to pycore session dir
  • removed over 9,000 lines of unused GUI code
  • performance monitoring script
  • batch mode improvements and --closebatch option
  • export session to EmulationScript XML files
  • basic range model moved from GUI to Python, supports 3D coordinates
  • improved WLAN dialog with tabs
  • added PhysicalNode class for joining real nodes with emulated networks
  • fixed the following bugs: 50, 75, 76, 79, 82, 83, 85, 86, 89, 90, 92, 94, 96, 98, 100, 112, 113, 116, 119, 120


These release notes along with a list of known issues are posted here:
http://code.google.com/p/coreemu/wiki/ReleaseNotes

Wednesday, February 1, 2012

XML export

There's a new option under the Save As dialog box, to export your topology to an XML format. The supported schema can be found here. This is the NRL EmulationScript NetworkPlan with time 0 location information. Note that this format will see some updating as the spec evolves.
Sample output for two router nodes linked together is shown below. There is still much to be done in order to represent all of the data contained in the imn file format.
The XML export occurs at the Python (cored.py) level, with the GUI feeding the back-end the filename to write. This was done so that Python-scripted scenarios could be saved/loaded directly to/from XML without the GUI.

Monday, January 16, 2012

physical nodes

When defining new node types, you can also specify the machine type. The default machine type is netns (for a Linux network namespace), and other options are xen and physical. (The xen machine type is only available on the Xen code branch -- more about that in a later post.) The physical machine type allows you to incorporate physical testbed machines into your emulated network.
There is a new default node type with a green icon named prouter, or physical router. You can define other node types that are physical nodes. When you link to a physical node, a GRE interface will be built on the real machine for that link, to tunnel data to/from the emulated network. Services will be started and stopped as defined in the service list. Double-clicking a physical node opens an SSH shell to that node.

Physical nodes must be assigned to a server just like emulation servers in a distributed session. The physical node should be running the cored.py daemon. The difference between a physical node and a distributed emulation server is that no virtual namespaces are created; processes run directly on the physical node without virtualization.