Pentest Tools

Published on September 12th, 2015 📆 | 6451 Views ⚑

0

IMUNES — Multiprotocol Network Emulator – Simulator


iSpeech
IMUNES GUI is a simple Tcl/Tk based management console, allowing for specification and management of virtual network topologies. The emulation execution engine itself operates within the operating system kernel.

Univesity of Zagreb developed a realistic network topology emulation / simulation framework based on the FreeBSD and Linux operating system kernel partitioned into multiple lightweight virtual nodes, which can be interconnected via kernel-level links to form arbitrarily complex network topologies.

[adsense size='1']

Main advantages:

  • Real time IP network topology emulation / simulation at Gigabit speeds
  • 100s to 1000s of virtual nodes on one physical machine, each node capable of running unmodified UNIX applications
  • Scalable architecture for real-time large scale experiments
  • GUI: management plane, automated node and link creation and configuration
  • Lightweight, portable experiments which can be quickly and easily instantiated
  • FreeBSD kernel-level network stack virtualization technology developed at the University of Zagreb
  • Open source and free

 

Current applications:

 

Technologies used:

  • jails, netgraph (FreeBSD)
  • Docker, Open vSwitch (Linux)

 

IMUNES advantages

  • Each virtual node has its own IPv4/IPv6/IPsec/socket/firewall configuration/address space
  • Traffic manipulation (delay, BER, duplicate, bandwidth) on links
  • All nodes in IMUNES operate as real phyisical nodes
  • Standard UNIX APIs 100% preserved (BSD and Linux binaries run unmodified)
  • Packet handoff by reference
  • Efficient usage of hardware resources (RAM, CPU)
  • Scalability: 100s of virtual nodes per physical machine (depending on applications)
  • Fast experiment instantiation (seconds not minutes)
  • Virtualized network stack as a standard feature in FreeBSD since 8.0-RELEASE

 

Project overview

As invaluable tools in networked and distributed systems research, network emulators and simulators offer a viable alternative to live experimental networks. This is a realistic network topology emulation / simulation framework based on the FreeBSD and Linux operating system kernel partitioned into multiple lightweight virtual nodes, which can be interconnected via kernel-level links to form arbitrarily complex network topologies.

The concept of using virtual nodes inside a kernel for fast network emulation is not entirely new, yet previously published work generally advocated the implementation of kernel-level virtual nodes with capabilities limited to only certain simple functions, such as passing of network frames from one queue to another based on a static precomputed path. Team is basing their work on a thesis that virtual nodes, which could offer the identical rich set of capabilities as the standard kernel does, can be implemented very efficiently by reusing the existing OS kernel code.

This model therefore not only provides each node with an independent replica of the entire standard network stack, thus enabling highly realistic and detailed emulation of network routers; it also enables each virtual node to run a private copy of any unmodified user-level application, including routing protocol daemons, traffic generators, analyzers, or application servers. Furthermore, in later development phases team expect to enable each virtual node to support multiple network protocols concurrently, such as both IPv4 and IPv6, which would bring us a step closer to allowing for emulation of true multiprotocol networked environments.

 [adsense size='1']

 

System requirements (FreeBSD)

When IMUNES is used on top of FreeBSD 8 (or higher) it requires a kernel that is compiled with the VIMAGE option included. A sample kernel config file is as follows:

include GENERIC
nooptions FLOWTABLE
options VIMAGE
options VNET_DEBUG
options KDB
options DDB

options IPSEC
device  crypto
options IPSEC_DEBUG
options IPSEC_NAT_T

To compile the VIMAGE enabled kernel you must have a copy of the FreeBSD kernel and create the config file with the above mentioned lines.

# cd /usr/src/sys/amd64/conf/ #for 64bit machines
# cd /usr/src/sys/i386/conf/  #for 32bit machines
# vi VIMAGE

Then you need to compile and install the kernel and reboot.

# config VIMAGE
# cd ../compile/VIMAGE

### standard compilation (single thread)
# make depend && make
### concurrent compliation (e.g. 4 threads)
# make -j4 depend && make -j4

# make install
# reboot

 

FreeBSD packages

First we need to install the packages required for IMUNES. To do this execute the following command (on FreeBSD 9.3 and higher):

# pkg install tk86 ImageMagick tcllib wireshark socat git gmake

 





Operating system (Linux)

When IMUNES is used on top of Linux a 3.10 Linux kernel is the minimum requirement.

[adsense size='1']

Linux packages

First we need to install the packages required for IMUNES:

tcl (version 8.6 or greater)
tk (version 8.6 or greater)
tcllib
wireshark (with GUI)
ImageMagick
Docker (version 1.4 or greater)
OpenvSwitch
nsenter (part of the util-linux package since version 2.23 and later)
xterm
make (used for installation)

Note: on some distributions the netem module sch_netem required for link configuration is only available by installing additional kernel packages. Please check the availability of the module:

# modinfo sch_netem

 

Installing IMUNES

Checkout the last fresh IMUNES source through the public github repository:

# git clone https://github.com/imunes/imunes.git

Now we need to install IMUNES and populate the virtual file system with predefined and required data. To install imunes on the system execute (as root):

# cd imunes
# make install

[adsense size='1']

Filesystem for virtual nodes

For the topologies to work a template filesystem must be created. This is done by issuing the following command (as root):

# imunes -p

Now the IMUNES GUI can be ran just by typing the imunes command in the terminal:

# imunes

 

Multiprotocol Network Emulator IMUNES

 

 

Source && Download



Comments are closed.