Create the OVS Provider Bridge and Start 2 VMs

Getting Started with Napatech Link-Virtualization™ Software

Platform
Napatech SmartNIC
Content Type
Getting Started Guide
Capture Software Version
Link-Virtualization™ Software 4.4

About this task

The OVS provider bridge is typically managed by the service provider and provides connectivity to the physical network via a connected physical interface.

Procedure

  1. Create the OVS Provider bridge:
    ovs-vsctl --if-exists del-br br0
    ovs-vsctl add-br br0 -- set bridge br0 \ 
    
     datapath_type=netdev \
       -- br-set-external-id br0 bridge-id br0 \
       -- set bridge br0 fail-mode=standalone
    
    # Add physical port
    ovs-vsctl add-port br0 dpdk0 \
      -- set interface dpdk0 type=dpdk \
      options:dpdk-devargs=class=eth,mac=xx:xx:xx:xx:xx:xx \
       mtu_request=1600
    
    where:

    mac=xx:xx:xx:xx:xx:xx is the MAC address of the SmartNIC physical port

    Use:
    ntlog | grep mac
    on the physical port to discover the MAC address.
  2. Bring up the br0 internal port and bind it with an IP address to the kernel TCPIP stack:
    ip addr add 172.16.1.1/24 dev br0
    ip link set br0 up
    
    Note: 172.16.1.x is the local host IP address of the SmartNIC port.
    • When setting up host1, use address 172.16.1.1
    • When setting up host2, use address 172.16.1.2
  3. Start two VMs on host1:
    qemu-system-x86_64 \
      -enable-kvm -cpu host -m 4G -smp 4 \
      -object memory-backend-file,id=mem,size=4G,mem-path=/mnt/huge,share \
      -chardev socket,id=char0,path=/usr/local/var/run/stdvio5,server \
      -netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce \
      -device virtio-net-pci,netdev=mynet1,mac=DE:AD:BE:EF:0A:01 \
      -numa node,memdev=mem -mem-prealloc \
      -net user,hostfwd=tcp::10021-:22 \
      -net nic,macaddr=BA:AD:CA:FE:0A:01 \
      -nographic \
      /path/to/images/vm1.img
    
    qemu-system-x86_64 \
      -enable-kvm -cpu host -m 4G -smp 4 \
      -object memory-backend-file,id=mem,size=4G,mem-path=/mnt/huge,share \
      -chardev socket,id=char0,path=/usr/local/var/run/stdvio6,server \
      -netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce \
      -device virtio-net-pci,netdev=mynet1,mac=DE:AD:BE:EF:0A:02 \
      -numa node,memdev=mem -mem-prealloc \
      -net user,hostfwd=tcp::10022-:22 \
      -net nic,macaddr=BA:AD:CA:FE:0A:02 \
      -nographic \
      /path/to/images/vm2.img