imunes / imunes Goto Github PK
View Code? Open in Web Editor NEWIntegrated Multiprotocol Network Emulator/Simulator
License: Other
Integrated Multiprotocol Network Emulator/Simulator
License: Other
Hello
I'm trying to use the service FTP on HOST on Ubuntu 16.10 with dockers and OpenvSwitch (Lubuntu version). I'm using a simple topology with only an HOST called ftp1 and I activated the service ftp and I started the experiment.
I tried to lunch ftp on the HOST ftp1 and I received the error message "command not found."
The same experiment with Imunes on FreeBSD distribution goes on.
Thank you
Franco
It would be good if IMUNES supported also BGP and ISIS in the GUI. These protocols are already included in the used quagga version:
But the GUI has no "knobs" to create a working BGP and or ISIS topologies:
Since these routing protocols are already included in quagga it should be a no-brainer to add it in future releases to the IMUNES GUI.
When the filter node without any links is configured, "Apply" and "Apply and Close" should act as "Cancel". Currently "Application Error" is displayed: "tab 'current' not found".
I'm hoping to find a good testbed for routing protocol development. Does imunes allow one to run arbitrary software on a node that can modify the routing tables?
The pkg_add_imunes script of the VMware and VirtualBox images IMUNES-11.0-RELEASE_20170227.ova doesn't work:
[root@IMUNES ~]# pkg_add_imunes
/usr/local/bin/pkg_add_imunes: pkg_add: not found
[root@IMUNES ~]#
Hello,
I've tried to install IMUNES and everything went well except the part where i enter line for the topologies to work (imunes -p).
I receive this: Error loading package cmdline: can't find package cmdline.
I did everything that was written in the manual. And also I am using Ubuntu 16.04.2.
Thank you for your help.
Hello, I've downloaded imunes from git, compiled and installed it. Also I installed required dependencies. When I tried to launch a simple case and when I tried to launch an example from examples repo, I got the following error:
However, I've got docker installed and running (1.6.2), ovs-vswitchd is said to be already working, xterm and ncenter are also installed. Is there any way to get some more additional output to understand what's working incorrectly?
P.S. I forgot to mention I use Ubuntu 16.04, kernel 4.4.0
LIMUNES depends on several packages to be available:
Docker - service started (for nodes)
Openvswitch - service started (for switches and links)
xterm - on command path (strictly for running terminals on nodes, could become modular in the future)
If ANY of the above doesn't apply, IMUNES should issue a controlled error notifying the user what to do. It has to be done before everything else and atomically because IMUNES could quite possibly create a couple of nodes and then fail or get stuck because e.g. Openvswitch isn't started leaving orphaned containers and/or switches.
Hi
I'm trying to save the running configuration that I made on my routers but it doesn't work. For example, I create 3 routers, setup ospf areas using vtysh terminal, and tried to save the configuration using "copy running-config startup-config" and nothing. I also tried with the context menu on the router and Settings -> "Import running config".
I need to save my ospf modifications on the routers, if I'm doing it wrong, please tellme
Thanks
Hello good afternoon, I hope you are well, on this occasion continuous snmp suitable for quagga. I have been following the instructions of the manual of quagga 1.2.0 of the month of March.
I have previously enabled quagga to work with the snmp option and I have installed net-snmp to work with smuxpeer.
However, when I run an experiment on IMUNES, and when I try to start ospfd indicating the configuration file to read, I get the following error.
Of course, when I try to check the operation of the snmp as indicated in the manual, it does nothing.
The snmpd.conf and ospfd.conf configuration files are as follows:
Attached I leave the manual by which I'm guided, I hope you can help me, it seems to fit quagga with snmp is more difficult than I expected. Thanks.
quaggaingles2017.pdf
I have been searching around and it looks like it is possible to run pf inside of a FreeBSD 12 VMNET jail. I tried enabling pf in /etc/rc.conf but I still get an error in a imunes host when I try to run pfctl -e
.
pfctl: /dev/pf: No such file or directory
Searching around on that error makes it look like I need to enable the dev directory in the jails. I am hoping someone can help me figure out how to do that or if there is another way to enable a firewall in the hosts/PCs in imunes.
Thanks in advance.
Good evening folks, I'm a Telecommunications student and I'm doing my degree work on IMUNES. It's really about the SNMP protocol. I am trying to reinstall quagga through the ports to enable the SNMP function, which by default is disabled. I execute the make and make install commands, indicating the following destination address "/var/imunes/vroot/usr/local". However, when you open IMUNES and try to run an experiment, an error occurs and it does not start. Has anyone been able to install quagga with SNMP option? Thank you.
Translated with www.DeepL.com/Translator
The loopback interface is by default named "lo" in Docker/Linux but IMUNES assumes it's "lo0" like on FreeBSD. Because of this, you can't run tcpdump and wireshark on localhost - the name IMUNES keeps in its list is "lo0" and not "lo".
Is it possible to connect a imunes' node with a virtualbox machine?
I'm not sure if this configuration is valid, but I'll try to explain it with images:
I'm running imunes on linux (arch) and virtualbox with win7 guest
I've made a bridge network connection between the VM and a port on switch1
(n0
)
Then, I've set a valid IP address for this network
With this configuration, I was able to ping a node (svr-http
) inside imunes
But any tcp connection doesn't work properly... It seems that the packages are scrambled
This is the wireshark analysis on router1
Am I missing something? I'm not sure if I should create an especial node to make the bridge between VM and Imunes... But the ICMP messages is working anyway...
Hi, just wondering if you would consider releasing an official torrent link as an option for downloading the large ova files available on your website. As you are probably aware, many projects such as Debian, Arch, and Ubuntu distribute their large files in this manner.
I apologise if this message does not conform to etiquette - I have never submitted an issue before.
If IMUNES is run with a specified template for the first time it will take a long time for the first node to start because Docker will automatically be downloading the image if it doesn't exist locally. This makes it seem like IMUNES is stuck. A notification like "Please wait, IMUNES is preparing the filesystem" would be nice...
The goal is to make IMUNES part of the vanilla Linux distribution repositories. Specifically, having packages for Debian, Fedora, Ubuntu and ArchLinux would cover a lot of users. Specific knowledge of how IMUNES works isn't required but it still requires some time, knowledge and determination from users to create and add the packages to the distros which the core developers don't necessarily have.
Build fails since MALLOC and FREE are deprecated with latest malloc.h.
A patch that fixes by defining MALLOC and FREE
diff --git a/src/ng_patmat/ng_patmat.c b/src/ng_patmat/ng_patmat.c
index 7551ef0..53af3c5 100644
--- a/src/ng_patmat/ng_patmat.c
+++ b/src/ng_patmat/ng_patmat.c
@@ -27,6 +27,13 @@
MALLOC_DEFINE(M_NETGRAPH_PM, "ng_patmat", "ng_patmat");
+#ifndef MALLOC
+#define MALLOC(space, cast, size, type, flags) \
+ ((space) = (cast)malloc((u_long)(size), (type), (flags)))
+#define FREE(addr, type) free((addr), (type))
+#endif
+
+
/* Netgraph methods */
static ng_constructor_t ng_pm_constructor;
static ng_rcvmsg_t ng_pm_rcvmsg;
diff --git a/src/ng_rfee/ng_rfee.c b/src/ng_rfee/ng_rfee.c
index e96cfb6..a7b700a 100644
--- a/src/ng_rfee/ng_rfee.c
+++ b/src/ng_rfee/ng_rfee.c
@@ -41,6 +41,7 @@
#include <sys/ctype.h>
#include <sys/kdb.h>
#include <sys/kernel.h>
+#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <netgraph/ng_message.h>
@@ -49,8 +50,14 @@
#include <netgraph/ng_parse.h>
#include "ng_rfee.h"
-
MALLOC_DEFINE(M_NETGRAPH_RFEE, "ng_rfee", "ng_rfee");
+#ifndef MALLOC
+#define MALLOC(space, cast, size, type, flags) \
+ ((space) = (cast)malloc((u_long)(size), (type), (flags)))
+#define FREE(addr, type) free((addr), (type))
+#endif
+
+
#ifndef M_DONTWAIT
#define M_DONTWAIT M_NOWAIT
Hi,
Experiment list in Linux is deducted by docker ps
output, so experiments that have only switches and no hosts, can't be resumed.
I think that you should read them from /var/run/imunes instead.
Is there a way to simulate a physical link or switch failure such that RSTP doesn't rely on the max age timer to determine a failure occurred? So far I've used "ifconfig ethx down" for a link failure and using the "STOP" feature of IMUNES for a switch failure, both result in the default max age timer of 6 seconds before RSTP begins proposals.
Setting the VLAN tag on the external (rj45) interface isn't implemented. Make it so!
Hi all,
Regards,
/t
I'm trying to enable network connection between the host and the nodes in my emulated network. I guess a RJ45 node should be used for this but it seems that it's not working yet in Linux.
I've started tinkering a bit with imunes sources. I've removed net="none"
from the docker run
command here: https://github.com/imunes/imunes/blob/master/runtime/linux.tcl#L337 to enable default docker bridge network in each node. Then I've created a simple configuration with two PC nodes connected through a switch and edited the corresponding .imn
file by hand to rename the interface created by imunes at each PC to eth1
(since eth0
is already created by docker for the bridge network).
Now it seems everything works fine, at least for this simple scenario. Do you think I will run into trouble using this approach with more complex networks? Or maybe there is a simpler way to achieve this, without modifying imunes sources?
I've been recently using imunes to simulate small networks and running some examples with iptables. Now I'm trying to do some vpn examples with openvpn and easy-rsa but those packages are not installed on L3 components. How can I install those?
I know that I can install it running apt-get install but I have to run apt-get update first. When I do it, it returns the following message: "Err [debian updates Release.gpg URLs]" and "W: Failed to fetch [debian_repos]". I think that means I have no internet connection, so the real question is how can I use the host connection for update and install packages?
Thanks in advance!
Please add "Restart" to Filter node.
When setting the duplication rate of packages on links and pinging across the link the response times increase constantly until the link fails to transfer any traffic. This is probably a problem with badly configured tc/netem rules in configureLinkBetween
There is some template code that in hub.start procedure that show how generally hub supprt should be done. It doesn't work, breaking openvswitch that is supposed to behave like a hub. This is not a critical feature and the Hub node is disabled on Linux for now but would be nice to have it out of the box like in FreeBSD. That's why I'm labelling it as "enhancement".
I am trying to set up IMUNES on Ubuntu Linux 14.04. I followed all steps and when I get to the point where I enter the imunes -p
command, I see the following problem:
$ sudo imunes -p
Pulling repository docker.io/imunes/vroot
2015/07/25 22:25:06 HTTP code: 404
Details:
I am running Ubuntu Server 14.04 with XFCE. I am running my server on Amazon AWS.
It would be great to include an option in the configuration for PC and Host nodes which allows to pick a docker image to run for a specific node. Or, as an alternative, choose a docker container by name/id that should already be instantiated (appears in docker ps -a). The second option would allow using complex docker parameters (mounting volumes and devices, setting env variables, running privileged, etc), which I guess would be slightly more involved to implement. Though I guess a string (text field for the GUI) for extra docker args would suffice. Maybe this can be complementary to the custom config feature.
This is a kind of extension of #51, where the answer was to switch the image started for any and all nodes in the network. Here, though, I am especially interested in starting different images for different nodes.
It would be useful to document requirements for the docker image in order to use it with IMUNES in any case.
Thanks for the great work so far!
Running vtysh on router node prints a warning: terminal not fully functional. Inputing Q and Enter solves the issue temporatily.
Question: is the LAN switch node implemented by an instance of Open vSwitch?
If so, do you have plans to expose more Open vSwitch functionality to the IMUNES user?
Would you consider, at some point in the future, enabling the OpenFlow or OVSDB functionality and enable connection between Open vSwitch nodes and SDN controllers? This would allow IMUNES to emulate both traditional routing/switching scenarios and software-defined-networking scenarios.
Thanks,
Brian
If you don't stop experiment and exit imunes, it leaves launched containers as they are. It'd be a good idea to check whether experiment is terminated and terminate it or to show a warning message.
Syslog Server
Hello, is there any way to enable a syslog on one of the IMUNES computers?
I want to record certain results.
In Filter configuration, if a new rule is added, with "Rule Num" different from the automatically inserted number (which is always +10 greater the the last rule num), the Application Error is displayed: "bad window path name .popup.nbook.nfe0.panwin.f2" (although the new rule is correctly inserted).
When I start IMUNES in Linux, the GUI starts OK. I add a node (a PC) and execute the experiment. I see the pop-up window that says it is startin the experiment. But it just hangs up at that point.
Here is what I saw when I started IMUNES:
$ cd imunes
$ sudo imunes
[sudo] password for brian:
/usr/local/bin/imunes: 80: [: :1.0: unexpected operator
After I start the experiment, the GUI looks like the following:
Hi,
I would like to add a Cisco router icon on the toolbox of IMUNES (in left side of the software)(Graphic interface)
I would like to do this by changing or adding some codes in tcl files.
But I have no idea about that.
Can you tell me step by step how can I do that?
Thank you
I use imunes to create a container topology for automated testing of an rpc protocol implementation.
Once the topology is created, a test harness runs the rpc server and client on the nodes.
I need to modify link parameters (in particular: delay, up/down) from the test harness, too.
As far as I can tell, this use case is covered with the vlink script for FreeBSD, although it seems rather hacky to jexec into the jail and call ngctl from within.
I tracked down the code that configures the links for open vswitch: https://github.com/imunes/imunes/blob/master/runtime/linux.tcl#L985
That code apparently also runs when modifying link parameters from the GUI while an experiment is running.
Could that code be extracted into a command line script?
Thanks for this great project!
When connecting to imunes via VNC you can´t use wireshark from a node.
The app tries to connect to display :0 insted of :1
root@imunes:/tmp # more startxcmd_i26f00_n0.log
Unable to init server: Could not connect to 127.0.0.1: Connection refused
(wireshark:4877): Gtk-WARNING **: cannot open display: :0.0
After stopping a particular node via the menu and then trying to start via the menu "Start" button it produces an error that container isn't started. Docker containers are actually started in createNodeContainer in l3node.instantiate on experiment execution and l3node.start is called AFTER that. But when you call "Start" you don't run instantiate, you skip right to l3node.start which doesn't do much except to exec runConfOnNode on a stopped container. This is why the error happens.
@gcetusic Hi, I have installed imunes on Ubuntu 16.10, the emulation function is very powerful. But I still have two problems.
Thank you in advance.
The IMUNES application icon (cloud) should be replaced with the IMUNES logo and the name of application window set to "IMUNES"
I am a new user of IMUNES. I currently have it running on the FreeBSD platform where I will be doing some network emulation invovling the Rapid Spanning Tree Protocal (RSTP). I seen than an IMUNES option is available for Linux. Is RSTP available in the Linux option?
Probably it's not the right place to post question but I didn't find any other ways to contact devs (irc? mail?)
Is it possible to install an MPI application on every emulated PC? for example, Linpack/HPL? If yes, what steps should I do? (didn't manage to find this information in wiki)
As far as I understand, I have to modify default docker image and install there required dependencies and the application itself. Then I have to add some information about hosts/ip so that MPI will know where to go.
Some other unrelated questions:
duplicate
and width
? Does duplicate mean the number(percentage) of duplicated packets sent?Hi, I'm trying to setup a simple topology with a single layer 2 switch and some PCs. I created the topology and it works without any problem, I can ping between the PCs. I tried adjusting some parameters in the link, more specifically, Bandwidth= 100Mbps, Delay=2ms, and after that the Ping doesn't work. If I remove the parameters and test, it works again. Any suggestions?
I'm using Ubuntu 14.04.5, Docker 1.12.3 and Imunes 2.2.2
First, thanks for the great software.
When running experiments in IMUNES I am unable to get Wireshark to come up. The option is available when I right click on nodes, but when I click on Wireshark and select the port to monitor, nothing comes up. Through other means I can tell that the simulation is running and network traffic is being passed as expected, but it would be nice to have the in-program Wireshark call functional. Any suggestions?
I am running IMUNES version 2.2.2 on FreeBSD 12.0 in a Hyper-V virtual machine. I also have Wireshark 2.6.5 installed in FreeBSD.
for details, please look at [http://blog.csdn.net/ztguang/article/details/51371388]
Hi,
I would like a virtual machine inside imune to access the internet. My intuition says that it is done through the "external connection" entity. But I do not know how to do it. Is there any documentation regarding "external connection" ?
Regards,
/tahiry
Good, I downloaded a version of freebsd 11.2 and installed it in a virtual machine (virtualbox), I decided to install IMUNES using the repositories found on this page. However, it gives me a couple of errors. The first of them after executing the following command: # config VIMAGE
The result is as follows
Aun asi decido continuar con el siguiente paso: # cd ../compile/VIMAGE
para mi sorpresa, el directorio se ha creado, pero al intentar ejecutar los comandos "make", me arroja los siguientes errores:
Igualmente, decido seguir y reiniciar el sistema.
Procedo a ir a la carpeta en donde se encuentran los archivos de IMUNES que descargue de esta pagina y procedo a ejecutar los comandos :
Por supuesto, antes de estos descargue los paquetes necesarios para instalar IMUNES: # pkg install tk86 ImageMagick tcllib wireshark socat git gmake
Volviendo al principio, luego de ejecutar "imunes -p" ( y de esperar un largo tiempo), procedo a abrir imunes: # imunes, en modo root.
IMUNES abre, puedo crear cualquier topologia que yo desee, pero al ejecutar el experimento aparece el siguiente error:
Of course, I decide to click the "ok" button and proceed to close the experiment by pressing "terminate".
Does anyone have any idea what's going on?
Given the availability of the setcap command we can finely tune the capabilities of IMUNES:
http://linux.die.net/man/7/capabilities
Like this:
setcap cap_dac_override,cap_sys_admin,cap_net_admin,cap_net_raw=ep /usr/local/bin/imunes
In combination with some file permissions in /var/run/netns and adding IMUNES to docker group it should make it possible to run IMUNES without using sudo. This would enable us to smoothly install IMUNES through distribution packages and run it from the deskop environment without asking the users to input their passwords because the package would set the capabilites on installation.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.