numa [Fri, 4 Sep 2009 13:51:03 +0000 (15:51 +0200)]
Revert "Revert "vratili original FreeBSD host.tcl i exec.tcl, a dodali Linux verzije u linux/; dodali OS detection i pomaknuli platform detection iznad source'inga tako da to ide kondicionalno""
numa [Fri, 4 Sep 2009 13:50:22 +0000 (15:50 +0200)]
Revert "vratili original FreeBSD host.tcl i exec.tcl, a dodali Linux verzije u linux/; dodali OS detection i pomaknuli platform detection iznad source'inga tako da to ide kondicionalno"
numa [Fri, 4 Sep 2009 13:17:26 +0000 (15:17 +0200)]
vratili original FreeBSD host.tcl i exec.tcl, a dodali Linux verzije u linux/; dodali OS detection i pomaknuli platform detection iznad source'inga tako da to ide kondicionalno
numa [Fri, 4 Sep 2009 13:17:14 +0000 (15:17 +0200)]
vratili original FreeBSD host.tcl i exec.tcl, a dodali Linux verzije u linux/; dodali OS detection i pomaknuli platform detection iznad source'inga tako da to ide kondicionalno
numa [Fri, 4 Sep 2009 13:16:34 +0000 (15:16 +0200)]
vratili original FreeBSD host.tcl i exec.tcl, a dodali Linux verzije u linux/; dodali OS detection i pomaknuli platform detection iznad source'inga tako da to ide kondicionalno
numa [Fri, 28 Aug 2009 12:10:34 +0000 (14:10 +0200)]
prvi hack setOperMode i createIfc da se uopce dobije trivijalni instantiation na Linuxu; masovna zamjena exec vimage s exec echo vimage da se izbjegnu greske
miljenko [Tue, 28 Oct 2008 12:30:18 +0000 (12:30 +0000)]
- Removed annoying bug: "Error: can't read "": no such variable".
(On GUI startup "Select tool" is not selected. If you try to select
something using left mouse button an error is displayed.)
- Use default font for all menu fields.
(Removed "-font arial" from "Static routes" field)
- Mode for "host" is always "static" (not quagga or xorp)
(If all nodes are selected for "Routing protocol defaults" than
only nodes of type "router" should be efected by the change.)
marko [Thu, 23 Oct 2008 14:19:14 +0000 (14:19 +0000)]
Simplify mechanisms for router config generation introduced in
last commit; fix the syntax for quagga ospf2 / ospf3 configuration;
and inject route redistribution statements to / from rip / ospf and
ripng / ospf3.
marko [Thu, 23 Oct 2008 12:04:20 +0000 (12:04 +0000)]
Add GUI support for selecting routing protocols in use on virtual
routers. The GUI now provides menus for enabling / disabling RIPv2,
RIPng, OSPFv2 and OSPFv3, as well as mechanisms for automatic
generation of appropriate quagga / xorp config files. Routing
protocols can only be enabled or disabled on per-router basis, i.e.
no finer-grain control over individual routing protocol parameters
or options is provided. If required, users can extend the
machine-generated quagga or xorp config file skeletons using the
"Custom config" menu option.
By default, all new quagga or xorp router instances will have both
RIPv2 and RIPng enabled, just as it was before this change. The
defaults can be changed in menu Tools -> Routing protocol defaults,
which will be applied both to all selected routers (if any) at the
time of change, as well as to all the subsequentially created ones.
Thanks Ana!!!
Bug found by:
Submitted by: Ana Mijocevic <ana.mijocevic at fer.hr>
Reviewed by:
Approved by:
Obtained from:
marko [Wed, 24 Sep 2008 13:02:54 +0000 (13:02 +0000)]
Do not special-case parsing of constant values in event scheduler.
Instead, constants are now specified as a "const" function with a
single argument, in addition to already existing "rand", "ramp" and
"square" functions.
marko [Thu, 17 Jul 2008 13:09:01 +0000 (13:09 +0000)]
If environment variable IMUNES_EVENTLOG is set, log all changes
trigerred by the internal event scheduler to the file specified in
$IMUNES_EVENTLOG. The log format is as follows:
timestamp link_id node0_id:ifname node1_id:ifname \
delay BER duplicate bandwidth
marko [Mon, 23 Jun 2008 19:46:24 +0000 (19:46 +0000)]
Add a ramp function generator in event scheduler.
So far, it is possible to schedule changes to link parameters
(bandwidth, delay, BER, duplicate) and attributes (width, color) to
constant values or periodic functions (rand or ramp).
Example:
link l1 {
nodes {n1 n2}
bandwidth 256000
events {
1 width ramp 5 2 1
3 color rand 0 16777216 1
5 bandwidth rand 128000 256000 2
30 width 3
35 color red
}
}
At t = 1s after the experiment is started, the width attribute of link l1
will be set to 5, and will increase by 2 each second, until t = 30s when
it will be set to constant value of 3.
At t = 3s the color attribute of link l1 will randomly change each second,
until t = 35s when the color will be set to "red".
Ar t = 5s bandwidth will begin to take random values between 128000 and
256000 each 2 seconds, and this process will continue for the entire
duration of the experiment.
All changes trigged by the event scheduled will be visible in the GUI.
marko [Mon, 23 Jun 2008 17:02:52 +0000 (17:02 +0000)]
Unbreak the scheduler, so that periodic events can be rescheduled even
in absence of another event for the same target scheduled in the future.
Allow for link width to be modulated from the event scheduler, and
convert integer values to appropriate format for specifying 24-bit
color, so that colors can be specified both as plain integers as well
as using standard Tk color naming conventions.
marko [Sat, 17 May 2008 01:57:02 +0000 (01:57 +0000)]
Introduce support for automated IPv4 address renumbering, and
replace ad-hoc hardcoded 10.0.0.0/8 address pool with user
selectable variable-mask IPv4 address pool.
Bug found by:
Submitted by: Sanja Marjanovic <Sanja.Marjanovic at fer.hr>
Reviewed by:
Approved by:
Obtained from:
To enable X applications running on virtual nodes we create
a pair of virtual ethernet interfaces (with shell script
startopera), one in "default" and the other in virtual node.
If the experiment is terminated while TCP socket (in any virtual node)
is in state TIME_WAIT a system will hang and then reboot.
To prevent virtual node destruction from rebooting the system
a loop checking TIME_WAIT state in all virtual nodes is added
as temporary fix.
marko [Fri, 8 Feb 2008 13:59:46 +0000 (13:59 +0000)]
Unbreak fetching local IP addresses via netstat for addresses wih ASCII
representation with 13 bytes. Previously 123.123.123.123 would be
truncated to 123.123.123.12
marko [Thu, 31 Jan 2008 10:56:56 +0000 (10:56 +0000)]
Redirect standard and diagnostic output of per-node startup scripts
into out.log files located in experiment/node specific runtime
directories in /tmp.
Suggested by: Atanu Ghosh (some 2, 3 or more years ago)
marko [Mon, 28 Jan 2008 19:03:34 +0000 (19:03 +0000)]
Unbreak instatiation of physical interface (aka RJ-45) nodes.
The problem was an artifact of introduction of per-experiment top level
vimage containers, so now we need to assign physical interfaces to top
level vimages first, before attempting to connect them via netgraph to
other nodes in a virtual topology.
marko [Tue, 8 Jan 2008 14:21:00 +0000 (14:21 +0000)]
Initial implementation of a checkbutton menu to choose among currently
open projects. Selecting a desired project at the bottom of the File
menu switches to that particular project.
marko [Tue, 8 Jan 2008 12:35:30 +0000 (12:35 +0000)]
Introduce a global variable cfg_list which holds all cfg ids (not eids)
for currently open projects.
Move previously global variable currentFile to per-cfg namespaces, given
that each project should typically correspond to a different file.
Rename proc newFile to newProc, and slightly reorganize it so that
newProc does all necessary steps for setting up a project environment
inside the GUI.
Introduce proc setWmTitle which should be used exclusively for updating
window title.
Deprecate procs fileOpenStartup and fileNewDialogBox.
It is no longer necessary to set up the default config namespace in
imunes.tcl and initgui.tcl, given that proc loadCfg and proc newFile
now initialize all the necessary state.
marko [Mon, 7 Jan 2008 11:50:04 +0000 (11:50 +0000)]
Adjust node and nodelabel position to fit into the target canvas
when pasting objects which were originally positioned outside the
bounds of the target canvas, i.e. when copying from a bigger to a
smaller canvas.
marko [Thu, 3 Jan 2008 13:47:54 +0000 (13:47 +0000)]
Initial implementation of an editing clipboard: introduce
cut, copy and paste functions, and hook them up to the common
keyboard shortcuts CTRL+X, CTRL+C and CTRL+V.
So far the new functions operate only on proper nodes and links,
but not on annotations.
The clipboard is stored in ::cf::clipboard namespace, which must
never be used for any other purpose.
marko [Wed, 2 Jan 2008 12:08:46 +0000 (12:08 +0000)]
First in a series of commits aimed at (ab)using TCL namespaces for
removing configuration and per-object (node, link, canvas, annotation)
variables from the global namespace. Once completed, this storage
reorganization should allow us to manage multiple independent IMUNES
configs in parallel and simplify implementation of cut/copy/paste
functionality in the GUI.
This change introduces a new top-level namespace ::cf, which holds
all configuration instances in subordinated namespaces. So far only
::cf::cfg0 is used.
The new global variable "curconf" selects the working configuration
instance. Inside most procedures, access to previously global
variables is replaced by variable aliasing to the appropriate
::cf namespace. The change typically looks like this:
- global $target
+ upvar 0 ::cf::[set ::curcfg]::$target $target
So far only storage for objects visible in a canvas has beend pushed out
of the global namespace. Deciding on how to deal with the various GUI
options (option show) needs more thought.
marko [Tue, 1 Jan 2008 18:22:59 +0000 (18:22 +0000)]
Happy new year - hope it won't be as cosmetic and useless as this
commit:
Replace the 4-clause BSD copyright notice with a simplified 2-clause one
obtained from FreeBSD. Hereby we lift the following two restrictions:
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of Zagreb,
-# Croatia and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
Include all the years from when a file originally appeared until including
2008. in copyright notices.
Drop the "all rights reserved" statement from copyright notices, given
that this is implied automatically by contemproary interpretations of US
copyright law.
Our MZT / MZOS funding only covered years 2004. and 2005., so drop the
notice crediting MZT / MZOS from files / code created from scratch in
2006. and afterwards.
marko [Sun, 16 Dec 2007 20:35:11 +0000 (20:35 +0000)]
Our graph partitioning algortihms have been entirely implemented by
Petra Schilhard while she was in no way formally associated with our
department or project. So beyond any doubt she is the copyright holder,
not the University of Zagreb.
marko [Thu, 13 Dec 2007 13:07:27 +0000 (13:07 +0000)]
Allow for creation of random interconnection topologies between
existing nodes from the GUI. Right click on a selected node ->
Create link to -> Selected -> Random.
marko [Sat, 1 Dec 2007 00:56:46 +0000 (00:56 +0000)]
Restore support for "serial" links, which were used by default
for connecting router nodes in the old days. This will only work
with the most recent kernel code from P4.
Note however that with such "serial" links (ng_iface nodes in
reality) our dear friend quagga has some issues and refuses to
open multicast sockets there, resulting in RIP / OSPF not working
in default configurations. Interesting that running routed -P ripv2
works without a glitch on those interfaces.
miljenko [Mon, 26 Nov 2007 08:56:55 +0000 (08:56 +0000)]
Invalid default capture filter "not ip host" is still present in wireshark
(wireshark-0.99.6.tbz from packages)
Workarond: start it with filter: -f " "
ana [Sat, 24 Nov 2007 23:17:06 +0000 (23:17 +0000)]
Invalid default capture filter "not ip host" is still present in wireshark
(wireshark-0.99.6.tbz from packages)
Workarond: start it with filter: -f " "
miljenko [Tue, 13 Nov 2007 09:34:06 +0000 (09:34 +0000)]
Temporary fix to enable multiple inetd and rpcbind processes (in different vimages).
Sholud be removed if each vimage is running in separate file system.
marko [Sat, 10 Nov 2007 01:47:52 +0000 (01:47 +0000)]
Use a shorter name for the top-level vimage container holding all
virtual nodes in an experiment, so that a string in form of
ifname@eid.nodeid could fit into 15 characters or less for all node
ids smaller than n1000. The 15 chatacter string length limitation
is derived from the IF_NAMESIZE constant which applies when specifying
interface names. Longer eids were previously causing trouble when
attempting to open a bpf tap in child nodes.
This change fixes bugzilla bug #2:
http://imunes.tel.fer.hr/bugzilla/show_bug.cgi?id=2
Bug found by: miljenko at tel.fer.hr
Submitted by:
Reviewed by:
Approved by:
Obtained from:
marko [Thu, 1 Nov 2007 21:51:48 +0000 (21:51 +0000)]
Use the new "vimage -lr" form to traverse the entire vimage
hierarchy bellow the current position, given that from now on
"vimage -l" will list only direct children of current vimage.
marko [Thu, 1 Nov 2007 17:37:20 +0000 (17:37 +0000)]
Nuke a now redundant check whether we are running in a default
vimage. Regardless whether we are at the top of the vimage tree
or not, the current vimage will have an address of ".". More
importantly, we can now _really_ start new experiments from within
non-default vimages, i.e. run IMUNES inside IMUNES!
While here, bump our "version" date.
Bug found by:
Submitted by:
Reviewed by:
Approved by:
Obtained from:
marko [Thu, 1 Nov 2007 10:42:27 +0000 (10:42 +0000)]
Allow for multiple independent experiments to run in parallel.
Each experiment is dynamically assigned an experiment id (eid) which
it then uses throughout its lifetime. By default the eid is
constructed by appending the process id of the tcl interpreter to
the prefix "imunes_". All vimages and netgraph nodes corresponding
to virtual nodes in an experiment are created as child nodes of
a "controlling" vimage which has the same name as eid. All virtual
node specific temporary directories / files are created as
subdirectories in /tmp/$eid directory.
vimageCleanup function is modified to destroy / cleanup only those
vimages / netgraph nodes bellow and including the controlling
vimage for the given experiment. Temporary files in /tmp/$eid are
no longer automatically deleted.
marko [Mon, 29 Oct 2007 16:25:23 +0000 (16:25 +0000)]
First in a series of changes to leverage on recently introduced
hierarchical vimage naming model in the kernel.
The main thrust of this change is to decouple experiment id ($eid)
from vimage / netgraph node names. Instead, a top-level vimage
named $eid is created first, in which all vimages / netgraph nodes
are created as child nodes. This relieves the default vimage
context of any netgraph space pollution, and paves a way for
adding support for parallel execution of independent experiments.
This change does NOT include a revamp of experiment cleanup
routines, so be warned that until further notice neither "imunes -b"
nor attempts to stop an experiment from the GUI will work.
marko [Tue, 9 Oct 2007 11:22:51 +0000 (11:22 +0000)]
Eliminate the guesswork when attempting to determine the id of a
newly created ng_eiface or ng_iface node. The replacement
approach at "ngctl mkpeer" invocation yields deterministic
results, and reduces the spawned process pipeline at the same time,
thus reducing the time / CPU cycles wasted on ng node creation.
marko [Mon, 8 Oct 2007 23:28:13 +0000 (23:28 +0000)]
When cleaning up a running experiment, always attempt to kill
all processes in all vimages first.
It seems that quagga has a bug which sets all zebra processes in an
infinite loop if a network interface disappears while the suite is
running. Before this change, we were "unplugging" the ng_eifaces
while zebra & co. were still running, resulting in each vimage
attempting to hog the CPU. This would leave very little CPU time
for IMUNES scripts, and for any user interaction with the system
for that matter, so cleaning up a more complex topology could
last for quite a while.
In short, the cleanup should be now roughly as fast as it used to be
in 4.11 days.
marko [Thu, 30 Aug 2007 23:57:50 +0000 (23:57 +0000)]
Lift the prohibition from configuring link emulation parameters
on links terminating in rj45 nodes, given that exec.tcl already
inserts a ng_pipe instance between rj45 and whatever is on the
other side of the link. This change also revealed a bug in
ng_pipe that will be fixed soon in p4 after a little bit more of
testing.
marko [Thu, 30 Aug 2007 23:19:21 +0000 (23:19 +0000)]
Change default link bandwith to 0. The reasoning behind this decision
is that as we will target bigger / more complex topologies, the
overhead of emulating link effects might become more pronounced.
ng_pipe nodes when configured for zero bandwith, delay, packet
duplication and loss will bypass the complex queuing and state
keeping / locking code, hence forward the packets with minimal
overhead.
While here, once again change the default settings for which
parameters will be displayed in the editor. Displaying link labels,
ifnames and IPv4 addresses is now on by default, while displaying
of IPv6 addresses is not.
marko [Thu, 30 Aug 2007 22:56:09 +0000 (22:56 +0000)]
When instantiatinga an interface in a L3 node which is directly
connected to an rj45 outlet, use the MAC address of the physical
interface on the virtual interface as well. This allows for
virtual nodes to gain access to the outside world via 802.11
physical cards.
marko [Thu, 30 Aug 2007 18:54:35 +0000 (18:54 +0000)]
ngnodemap must be set for rj45 type nodes as well, otherwise
deployCfg would break when attempting to connect an rj45 node to
whatever is on the other side of the link.
With this change plus a kernel-level fix to be submitted to p4
shortly communication to external world via "rj45" nodes should
work properly.
marko [Tue, 21 Aug 2007 07:54:15 +0000 (07:54 +0000)]
Bring back to life ng_pipe insertion on our links. For this to work
you'll need to fetch the latest kernel sources from my home dir
at imunes.tel.fer.hr or from p4. Note that the scheduler for ng_pipe
in -CURRENT at this point in time cannot provide resolution better than
kernel tick intervals, so you'll probably wish to configure your kernels
with high HZ setting - default in -CURRENT is 1000 HZ which should be
fine for proof-of-concept experiments.
Note that ng_pipe in -CURRENT is stripped off of XCP and [GA]RED
functions, but we never used those directly in IMUNES anyway so noone
should be hurt...
marko [Tue, 14 Aug 2007 20:54:03 +0000 (20:54 +0000)]
A hack to allow multicast to work (to some extent) on FreeBSD -CURRENT:
add a route to 224.0.0.0/4 over our loopback interface. This seems
necessary to allow any multicast traffic to be transmitted out of the
machine / virtual nodes, and in particular allows RIP to work with
XORP. OTOH, for reasons beyond my willingless for further investigation,
quagga does not even properly open multicast sockets for RIP, regardless
whether using quagga built from the ports collection, or using a
package built for 6.2-RELEASE in compatibility mode :(
marko [Tue, 14 Aug 2007 20:46:47 +0000 (20:46 +0000)]
Remove comments embedded in switch construct in popupConfigApply in
an attempt to unbreak it -> man n switch says comments may not be
embedded in between switch tokens / sections, it seems that my copy
of tclsh8.4 becomes really nervous about that (the older versions
did not complain as far as I can recall).