Anuket Project

VNFs

VLoop-VNFs

Existing Artifacts:


New Vloop-VNFs

Ubuntu:

Steps:

  1. Download bionic mini.iso from https://help.ubuntu.com/community/Installation/MinimalCD , and name it as bionic-64.mini.iso
  2. qemu-img create -f qcow2 /tmp/vloop-vnf.qcow2 10G
  3. virt-install --virt-type kvm --name trusty --ram 1024 --cdrom=/tmp/bionic-64-mini.iso --disk /tmp/vloop-vnf.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=ubuntutrusty
    1. Complete the installation process - include just openssh-server
  4. Login and install the following:
    1. cloud-init, git, make, ifupdown built-essentials, libnuma-dev, pciutils, bridge-utils, libelf-dev
  5. gcc: newer gcc, for security reasons, have, by default, set with --enable-default-pie (check with gcc -v). This will create linking errors during testpmd build. To overcome this, one option is to we can install a version of gcc (ex: from https://drive.google.com/drive/folders/1xVEATaYAwqvseBzYxKDzJoZ4-Hc_XOJm) with pie not enabled.  Use update-alternatives to set gcc7 to gcc - use command - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc7 100 
  6. Change the default network names to eth*
    1. Open /etc/default/grub
    2. modify GRUB_CMDLINE_LINUX to GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
    3. sudo grub-mkconfig -o /boot/grub/grub.cfg
  7. Enable Serial Console 
    1. cp /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty@ttyS0.service
    2. edit the file and modify the agetty line: ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM    <-- Change this parameter
    3. ln -s /etc/systemd/system/serial-getty@ttyS0.service /etc/systemd/system/getty.target.wants/
    4.  Reload the daemon and start the service: # systemctl daemon-reload, # systemctl start serial-getty@ttyS0.service, # systemctl enable serial-getty@ttyS0.service
    5. Open /etc/default/grub
    6. modify GRUB_CMDLINE_LINUX to GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 console=tty1 console=ttyS0,115200"
    7. sudo grub-mkconfig -o /boot/grub/grub.cfg
  8. enable root login with 'root' password: sudo bash, #passwd, root
  9. All ifdown operations on eth0 and eth1: Add 'eth0' and 'eth1' in /run/network/ifstate.eth0 and /run/network/ifstaet.eth1, respectively. Also add eth0=eth0 and eth1=eth1 in /run/network/ifstate
  10. Perform cleanup; sudo apt-get clean, sudo apt-get autoremove --purge, 
  11. Zeroing the freespace: 
    1. dd if=/dev/zero of=/tmp/zeros bs=1M
    2. rm /tmp/zeros
  12. Shutdown the VM.
  13. Compress the image: qemu-img convert -O qcow2 -c vloop-vnf.qcow2 vloop-vnf-small.qcow2


Fedora:




Noisy-Neighbor-VNFs

  1. Based on stress-ng
  2. Based on Spirent cloudstress ( https://github.com/spirent/cloudstress)