Instructions for launching full-mesh topology with Qemu/VirtualBox/bhyve scripts or with GNS3
If you want to use bhyve, here is the BSDRP bhyve lab shell script.
fetch --no-verify-peer -o BSDRP-lab-bhyve.sh "https://raw.githubusercontent.com/ocochard/BSDRP/master/tools/BSDRP-lab-bhyve.sh" chmod +x BSDRP-lab-bhyve.sh
Usage of this script is:
Usage: ./BSDRP-lab-bhyve.sh [-dhp] -i FreeBSD-disk-image.img [-n vm-number] [-l LAN-number] -c Number of core per VM (default 1) -d Delete All VMs, including the template -h Display this help -i filename FreeBSD file image -l X Number of LAN common to all VM (default 0) -m X RAM size (default 256M) -n X Number of VM full meshed (default 1) -p Patch FreeBSD disk-image for serial output -w dirname Working directory (default /tmp/BSDRP) This script needs to be executed with superuser privileges
Patched release of Qemu can be found:
If you want to use Qemu or KVM, here is the BSDRP qemu/kvm lab shell script.
fetch -o BSDRP-lab-qemu.sh "https://raw.githubusercontent.com/ocochard/BSDRP/master/tools/BSDRP-lab-qemu.sh" chmod +x BSDRP-lab-qemu.sh
Linux users have to replace fetch by wget.
This script was tested with qemu 0.11.1 on FreeBSD) and with KVM on a Debian GNU/Linux.
Usage of this script is:
Usage: ./BSDRP-lab-qemu.sh [-s] -i BSDRP-full.img [-n router-number] [-l LAN-number] -i filename BSDRP file image path -n X Lab mode: start X routers (between 2 and 9) full meshed -l Y Number of LAN between 0 and 9 (in lab mode only) -s Enable a shared LAN with Qemu host -h Display this help Note: In lab mode, the qemu process are started in snapshot mode, this mean that all modifications to disks are lose after quitting the lab Script need to be started with root if you want a shared LAN with the Qemu host
There is a VBScript for windows on irom's Blog: BSDRP – QEMU VBScript
If you are under MS Windows, here is a BSDRP Virtualbox lab PowerShell script (need PowerShell and .Net).
For starting this PS script you need to:
After use, if you want to use a new BSDRP image for the lab, delete all Virtualbox BSDRP_lab_* VM. The script will generate a BSDRP-Putty-sessions.reg file on your desktop: Import this file to your registration database for auto-configuring Putty&Kitty sessions.
If you want to use Virtualbox, here is the BSDRP Virtualbox shell lab script.
fetch "https://raw.githubusercontent.com/ocochard/BSDRP/master/tools/BSDRP-lab-vbox.sh" chmod +x BSDRP-lab-vbox.sh
Linux users have to replace fetch by wget.
Usage: /usr/local/BSDRP/tools/BSDRP-lab-vbox.sh [-hdsv] [-a i386|amd64] [-i BSDRP_image_file.img] [-n router-number] [-l LAN-number] [-o serial|vga] -a ARCH Force architecture: i386 or amd This disable automatic arch/console detection from the filename You should use -o with -a -c Enable internal NIC shared with host for each routers (default: Disable) -d Delete all BSDRP VM and disks -i filename BSDRP image file name (to be used the first time only) -h Display this help -l Y Number of LAN between 0 and 9 (default: 0) -m RAM (in MB) for each VM (default: 192) -n X Number of router (between 1 and 9) full meshed (default: 1) -o CONS Force console: vga (default if -a) or serial -s Stop all VM -v Enable virtio drivers
./BSDRP-lab-qemu.sh -n 4 -l 2 -i BSDRP.i386.img
or with VirtualBox script:
./BSDRP-lab-vbox.sh -n 4 -l 2 -i BSDRP_0.36_full_amd64_serial.img BSD Router Project (http://bsdrp.net) - VirtualBox lab script Image file given... rebuilding BSDRP router template and deleting all routers x86-64 image serial image Creating lab with 4 router(s): - 2 LAN between all routers - Full mesh Ethernet links between each routers Router1 have the following NIC: em0 connected to Router2. em1 connected to Router3. em2 connected to Router4. em3 connected to LAN number 1. em4 connected to LAN number 2. Router2 have the following NIC: em0 connected to Router1. em1 connected to Router3. em2 connected to Router4. em3 connected to LAN number 1. em4 connected to LAN number 2. Router3 have the following NIC: em0 connected to Router1. em1 connected to Router2. em2 connected to Router4. em3 connected to LAN number 1. em4 connected to LAN number 2. Router4 have the following NIC: em0 connected to Router1. em1 connected to Router2. em2 connected to Router3. em3 connected to LAN number 1. em4 connected to LAN number 2. Connect to router 1: socat unix-connect:/tmp/BSDRP_lab_R1.serial STDIO,raw,echo=0 Connect to router 2: socat unix-connect:/tmp/BSDRP_lab_R2.serial STDIO,raw,echo=0 Connect to router 3: socat unix-connect:/tmp/BSDRP_lab_R3.serial STDIO,raw,echo=0 Connect to router 4: socat unix-connect:/tmp/BSDRP_lab_R4.serial STDIO,raw,echo=0
This will start 4 routers full-meshed (ethernet cross-over cable) and each routers connected to 2 LAN:
If you would testing BSDRP integration with Cisco/Juniper devices,GNS3 is a great tools.
Latest release of GNS3 support the use of virtualbox guest: The guest speed with virtualbox is a lot's better than with Qemu.
Download a full i386/amd65 BSDRP serial image and un-xz it (using 7-zip)… you should obtain a .img file (not a .xz file!).
Using a serial image will permit to prevent keyboard mapping problem: We will connect to the console with a virtual serial port and Putty.
We need to convert the RAW BSDRP .img file to a .vdi VirtualBox hard drive image using the command-line only "VBoxManage convertfromraw".
Under MS Windows this is done by opening a cmd.exe window and entering:
C:\Users\Olivier>cd %VBOX_INSTALL_PATH% C:\Program Files\Oracle\VirtualBox>VBoxManage convertfromraw D:\BSDRP_1.1_full_amd64_serial.img D:\BSDRP_1.1_full_amd64_serial.vdi Converting from raw image file=D:\BSDRP_1.1_full_amd64_serial.img to file=D:\BSDRP_1.1_full_amd64_serial.vdi... Creating dynamic image with size 256000000 bytes (245MB)... C:\Program Files\Oracle\VirtualBox>
Now start VirtualBox and create a new VM:
Then, only if you are using the “serial” BSDRP image, edit your VM:
You can test your settings by starting your VM and launch PuTTY with theses parameters:
You should see the bootloader and dmesg, now shutdown your VM.
Under GNS3, go to “Edit” ⇒ “Preferences…” ⇒ “VirtualBox” ⇒ “VirtualBox Guest”
And simply select the BSDRP Vbox VM.
Use Qemu only if you can use the KVM acceleration feature (GNS3 under GNU/Linux only), if not: Use the virtualbox guest.
Download a full i386 BSDRP VGA and un-xz it (using 7-zip)… you should obtain a .img file (not a .xz file!).
Don't use a 64bit image: GNS3's Qemu is configured for running 32bits guest only.
Under GNS3, go to “Edit” ⇒ “Preferences…” ⇒ “Qemu” ⇒ “Qemu Guest”
And simply give the path to the BSDRP vga image.
If when you try starting your BSDRP qemu host you have this message:
“CPU doesn't support long mode”
This mean your are trying to start a 64bits OS on your 32bits emulated guest.