# DESVIRT integration into RIOT You can find more information about desvirt at https://github.com/des-testbed/desvirt ## Control DESVIRT via Make ### Variables This Makefile introduces some additional variables: * TOPO (name of the topology to use) * TOPO_SIZE (size of the topology to use) * TOPO_TYPE (type of the topology to use [line|grid]) ### Targets It defines the following targets: * desvirt-topology * desvirt-define * desvirt-undefine * desvirt-list * desvirt-start * desvirt-stop * desvirt-clean * desvirt-distclean #### desvirt-topology This target creates a new topology file in `RIOTBASE/dist/tools/desvirt/desvirt/.desvirt` It is necessary to supply the type and size of the new topology with `TOPO_TYPE` and `TOPO_SIZE`. The make target will create the topology file with the name `$(TOPO_TYPE)$(TOPO_SIZE)`. Examples: ``` TOPO_TYPE=line TOPO_SIZE=4 make desvirt-topology TOPO_TYPE=grid TOPO_SIZE=9 make desvirt-topology ``` The names of the files will be: `line4` and `grid9`. #### desvirt-define This target defines a new topology. This must be done prior to starting desvirt. ``` TOPO=line4 make desvirt-define ``` #### desvirt-undefine This target undefines a topology. ``` TOPO=line4 make desvirt-undefine ``` #### desvirt-list This target lists all defined topologies. ``` make desvirt-list ``` #### desvirt-start This target starts a new virtualization with the given topology name. The topology must be defined beforehand. ``` TOPO=line4 make desvirt-start ``` You will get an output like this: ``` cd /home/pschmerzl/RIOT/dist/tools/desvirt/desvirt && ./vnet -s -n line4 vnet : Loaded statefile .desvirt/lib/line4.macs. vif : creating line4_0 for pschmerzl vif : Creating tap: line4_0 vif : creating line4_1 for pschmerzl vif : Creating tap: line4_1 vif : creating line4_2 for pschmerzl vif : Creating tap: line4_2 vif : creating line4_3 for pschmerzl vif : Creating tap: line4_3 lossnet : line4: New link from line4_0 to line4_1, rate=100mbit, loss=0.0, delay=0.0 lossnet : line4: New link from line4_1 to line4_0, rate=100mbit, loss=0.0, delay=0.0 lossnet : line4: New link from line4_1 to line4_2, rate=100mbit, loss=0.0, delay=0.0 lossnet : line4: New link from line4_2 to line4_1, rate=100mbit, loss=0.0, delay=0.0 lossnet : line4: New link from line4_2 to line4_3, rate=100mbit, loss=0.0, delay=0.0 lossnet : line4: New link from line4_3 to line4_2, rate=100mbit, loss=0.0, delay=0.0 vnet : Network Name: line4 vm : Defining RIOT native process line4_1 riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_1',end-close,stderr,pty TCP-L:4711,reuseaddr,fork riotnative : PID: 18235 vm : Defining RIOT native process line4_0 riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_0',end-close,stderr,pty TCP-L:4712,reuseaddr,fork riotnative : PID: 18236 vm : Defining RIOT native process line4_3 riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_3',end-close,stderr,pty TCP-L:4713,reuseaddr,fork riotnative : PID: 18237 vm : Defining RIOT native process line4_2 riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_2',end-close,stderr,pty TCP-L:4714,reuseaddr,fork riotnative : PID: 18238 ``` Once the topology is running, you can use `pyterm` to connect to the various instances, e.g. calling `pyterm -ts 4712` to connect to node `line4_0` from the example above. #### desvirt-stop This target stops a new virtualization with the given topology name. The topology must be defined beforehand. ``` TOPO=line4 make desvirt-stop ``` #### desvirt-clean This target resets the desvirt git-folder. All topologies will be deleted. ``` make desvirt-clean ``` #### desvirt-distclean This target deletes the desvirt folder. ``` make desvirt-distclean ```