The CORE Network Emulator development team released CORE version 4.7 in August 2014. I installed this new version of CORE on a newly-installed Linux 14.04 system and tested some of the new features.
In this post, I list the new features that are most relevant to researchers who use the CORE GUI to set up and run network simulations. I also list some of the defects that I found, along with workarounds.
Updates and New features
The following are the most updates and new features most visible to users like me, who use the CORE GUI. There are many other updates and new features so read the CORE 4.7 release notes to review all the changes in CORE 4.7.
The CORE team made some major improvements to the way link effects are implemented. This alone is worth upgrading to CORE 4.7. The changes are:
- Allow jitter to be configured on links
- Link effects, such as delay and jitter, now can be configured between hub/switch and hub/switch connections (not just between routing nodes such as PCs and Routers).
- Link effects can be configured or changed during runtime, after the simulation is started.
- Allow asymmetric link effects. Different values can be configured in each direction. Asymmetric effects are available when a link is created between two routing nodes such as a PC and a router. Only symmetric effects are available if one of the nodes at any end of the link is a Link-layer node such as a switch.
The CORE development team changed the standard names that CORE assignes to each virtual interface created on a simulated network node. The new CORE 4.7 starts each interface name with the “veth” prefix, the “tap”, or the “b” prefix (for bridges).1 Example: Interface eth0 on node n3 has the interface name, veth3.0.
It appears the CORE development team made this change to avoid the problem where the Ubuntu Network Manager application interferes with virtual interfaces created by the CORE Network Emulator.
New service types
The CORE development team added new services for MGEN_Sink and OLSRv2. OLSR is outside the scope of my research so I will not discuss the OSLRv2 service in this post. I could not find any documentation for the MGEN_Sink service. The mgen utility is used to generate traffic between nodes. The service defines a startup script that tells mgen to listen on a specific UDP port for unicast IP traffic and to join a multicast group on each interface. When using this service, I expect that the user will change the contents of the mgen.sink input file, as required. See the mgen documentation for more information about mgen.
The core-manage command
The CORE development team created a new feature: The core-manage program is now available to help with the creation of customized services and custom node types. But, there is no documentation except for a basic man page, which does not offer much information.
Defects and Workarounds
Wireshark fails to start capture session at launch
Wireshark fails to capture on interface when launched from the CORE GUI. The script that starts Wireshark passes the wrong interface name to Wireshark because it still uses the old interface naming convention. Wireshark cannot start capturing on that device because it exists under another name.
The workaround is to clear the error dialogue box by clicking on the “OK” button, open the Interfaces dialogue box, and then select the correct interface in Wireshark to start capturing on that interface.
Throughput Widget broken
The bandwidth plots and Throughput Widget are broken in CORE 4.7. See bug #257.
As documented in the release notes, the workaround is to apply the following one-line fix using the command:
$ sudo sed -i 's/set ifname "n\$node_num\\\\.\$ifname/set ifname "veth\$node_num\\\\.[string range \$ifname 3 end]/' /usr/lib/core/widget.tcl
Note that if you installed CORE from source, then the CORE files are in the folder /usr/local/lib/core, instead of /usr/lib/core/. So, if you installed CORE from source, use the slightly modified command shown below to fix this issue:
$ sudo sed -i 's/set ifname "n\$node_num\\\\.\$ifname/set ifname "veth\$node_num\\\\.[string range \$ifname 3 end]/' /usr/local/lib/core/widget.tcl
Interface name change case missed
The change to the interface naming convention was inconsistently implemented. The development team missed one of the cases where interface names are assigned by CORE: if two switches are connected together, CORE still uses the old naming convention for the interfaces connecting the two switches.
There is no workaround required in this case but, if you have not already removed the Network Manager application, it will start launching DHCP packets into the interfaces that use the old naming convention. (Network Manager ignores interfaces that use the new naming convention starting with “veth”, “tap” or “b.”)
BIRD router Ubuntu 14.04 repository problem
In Ubuntu 14.04, the BIRD router software in the repository will not install correctly. This is not a problem with CORE 4.7; it is a problem with Ubuntu 14.04 and BIRD. However, since users will likely be running CORE 4.7 on Ubuntu 14.04, this is an issue they need to know about.
After the install fails, you will get an error message when trying to install any other software. To fix this issue, you must remove BIRD from the list of installed software with the following command:
$ sudo dpkg -r bird
Then, if you intend to use it in CORE network simulations, install BIRD from the latest PPA. The instructions are on the BIRD website.
Old version of CORE in Ubuntu 14.04 repository
To verify which version of CORE is in the Ubuntu software repository, execute the following command:
$ apt-cache policy core-network core-network: Installed: (none) Candidate: 4.6-2 Version table: 4.6-2 0 500 http://ca.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
The older versions of CORE started each interface name with the node name, followed by the interface name. For example: interface n3.eth0 ↩