VirtualBox Network Configuration
VirtualBox Network Configuration Primer
VirtualBox networking supports different configuration. For a in-depth discussion regarding virtual networking see VBox official documentation here.
For developing purpose, we are interested in two configuration:
- NAT, which is the default provided with DVDK, and
- Bridged Networking
Network Address Translation (NAT)
Network Address Translation is a tecnique used in IP networking that modify IP packet header, by changing IP address, while the routing device processes the packet.
Only the IP address of the routing device (in case of a Virtual Machine, the host ack at router for the guest) is seen from outside. Usually the routed device (in our case, the guest machine) has an IP address that belongs to a completely different IP subnet.
NAT make easy to use a virtual machine because:
- it does not require to configure guest network parameters (the router act as DHCP server and give all the needed information to the guest)
- it guarantees that the VM can be executed in any network environment without breaking the existing network.
However it's really hard to configure NAT to let the VM to act as a server (e.g. as NFS or TFTP server), for this reason the developer usually choose a bridged configuration, with proper IP parameter assignments.
In brief, Bridge Networking configure host's physical network interface and guest's virtual network interface as if they are connected with a Ethernet Switch.
In this way:
- guest (DVDK Virtual Machine) has it's own IP address, usually on the same subnet of the host
- guest is directly accessible (apart from firewall rules that may be configured on the host) from any device on the same subnet
To change from NAT to Bridge configuration user have to:
- change Virtual Box network setting
- configure, if needed, guest networking. Guest by default uses DHCP so, if DHCP server is available on your network, no additional configuration is needed.
The procedure here described makes use of graphical tools to configure network interface. To do that, please ensure
network-manager applet is installed by issuing this command on a terminal shell:
dpkg -l network-manager
If it is not installed, use these commands to install it:
sudo apt-get update sudo apt-get install network-manager
After installing it, please reboot the MVM in order to make the changes to take effect.
VBox Bridged configuration
It's easy to change Virtual Box Network configuration:
- open VBox application and start DVDK VM
- from the VBox main window, select your VM and choose Settings from the toolbar
- Choose Network item and, from the Attached To: dropdown choose Bridged Adapter
- Now the Name dropdown should be enabled. If you have more than one network interface, choose the right one to connect the bridge too
- That's all, click Ok to apply changes.
Guest (Ubuntu) Network Configuration
By default, the virtual machine image provided with DVDK is configured with DHCP. If you don't have a DHCP server available on your network, you should configure the interface manually.
Right-Click on the NetworkManager Applet on the top Panel and choose Edit Connections
Now Add new connection
Fill all the required fields (name and IPv4 configuration) and hit Apply button.
Now the new configuration is added and the Network Manager Applet should tell you that the connection with your network is established
For more information about ubuntu take a look at its official documentation
User just need to edit
/etc/exports file to allow the local network to mount NFS shares.
The default configuration provided with DVDK allow mounting all subdirectory of /home/shared by the default class C private network 192.168.0.0/24, but is disabled.
nelk@nelk-desktop:~$ cat /etc/exports # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # #/home/shared 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash,no_all_squash) nelk@nelk-desktop:~$
If you are on the default network just remove the
# at the beginning of the last line. If you are on a different network, e.g. private class A network 10.0.0.0/8, change the line in;
Changes are applied by running
exportfs -a as root, and can be verified with
nelk@nelk-desktop:~$ sudo exportfs -a nelk@nelk-desktop:~$ sudo exportfs /home/shared 192.168.0.0/24
For more information regarding NFS server and /etc/exports see exports man page or, for example, 
TFTP is used by the target to download files from the host machine, in particular to retrieve the u-boot and kernel images. On the DVDK the TFTP service is properly configured to serve files stored in the
/srv/tftp directory. For more information about the tftp service in Ubuntu, please refer to https://help.ubuntu.com/community/UbuntuLTSP/Troubleshooting/TFTP