.. _vmxnet3:

VPP with VMware/Vmxnet3
=======================

This section describes a native Vmxnet3 driver that is included with VPP.
This driver is written as a plugin and is found in src/plugin/vmxnet3.

Advantages
----------

The native VPP native vmxnet3 driver provides the following features
that are not provided with the standard dpdk vmxnet3 driver.

-  Interrupt mode
-  Adaptive mode
-  LRO/TSO mode

Does not support
----------------

This driver does yet support the following features.

-  VLAN filter

Prerequisites
-------------

-  This code is tested with vfio-pci driver installed with Ubuntu 18.04
   which has kernel version 4.15.0-33-generic.

-  This code is tested with ESXi vSwitch version 6.5 and 6.7 for LRO/TSO support,
   VMware Workstation 15 Pro (no LRO/TSO), and VMware Fusion 11 Pro (no LRO/TSO).

-  Driver requires MSI-X interrupt support, which is not supported by
   uio_pci_generic driver, so vfio-pci needs to be used. On systems
   without IOMMU vfio driver can still be used with recent kernels which
   support no-iommu mode.

VMware Fusion for Mac
---------------------

VMware fusion does not have a menu option to change the default driver (e1000)
to the **vmxnet3** driver. VPP supports the **vmxnet3** driver.

These instructions describe how to change the e1000 driver for VMware fusion.

* From the VMware Fusion menu bar select **Window** then **Virtual Machine
  Library**.
* From the Virtual Machine menu right click on the Virtual Machine you are using
  and select **Show in Finder**
* Find the name associated with the VM you are using, right click on it and
  select **Show Package Contents**
* Find the **.vmx** file and edit it.
* Find all the occurrences of **e1000** and change them to **vmxnet3**

If you are concerned more with configuration not performance the vmxnet3 driver
can be set to **interrupt** mode in VPP. This will save a great deal on battery
usage. Do this with the following

VMware Workstation PRO 15 for Linux
-----------------------------------

VMware Workstation does not have a menu option to change the default driver
(e1000) to the **vmxnet3** driver. VPP supports the **vmxnet3** driver.

These instructions describe how to change the e1000 driver for VMware
Workstation PRO 15 Linux. You may need to be a superuser for performing these
steps.

* Shut down the VM you are about to change.
* From the vmware folder where vmware creates and stores the VM's, change the
  directory to the specific VM which you want to modify, and use your favorite
  text editor to open the corresponding VM's .vmx file. By default, it is
  $HOME/vmware/<vm-name>/<vm-name>.vmx
* Locate the line for the interface which you want to modify. For example, if it
  is ethernet1, then change the line **ethernet1.virtualDev = "e1000"** to
  **ethernet1.virtualDev = "vmxnet3"**
* Save the file and power on the VM.

If you are concerned more with configuration not performance the vmxnet3 driver
can be set to **interrupt** mode in VPP. This will save a great deal on battery
usage. Do this with the following

.. code-block:: console

    $ sudo vppctl set interface rx-mode <interface> interrupt


System setup
~~~~~~~~~~~~

To use the native VPP vmxnet3 driver use the following Steps

Load VFIO driver

.. code-block:: console

    $ sudo modprobe vfio-pci

Make sure the interface is down

.. code-block:: console

    $ sudo ifconfig <if-name> down

The next 2 steps are optional and may be accomplished by specifying the optional
"bind" keyword when creating the vmxnet3 interface.

For systems without IOMMU only, enable unsafe NOIOMMU mode

.. code-block:: console

    $ echo Y | sudo tee /sys/module/vfio/parameters/enable_unsafe_noiommu_mode

To bind interface to vfio-pci first install get the dpdk_devbind.py script.

Bind the driver with the following commands:

.. code-block:: console

    $ sudo /usr/local/vpp/vpp-config/scripts/dpdk-devbind.py -s

    Network devices using DPDK-compatible driver
    ============================================
    <none>

    Network devices using kernel driver
    ===================================
    0000:03:00.0 'VMXNET3 Ethernet Controller' if=ens160 drv=vmxnet3 unused=vfio-pci,uio_pci_generic
    0000:0b:00.0 'VMXNET3 Ethernet Controller' drv=vfio-pci unused=vmxnet3,uio_pci_generic
    0000:13:00.0 'VMXNET3 Ethernet Controller' drv=vfio-pci unused=vmxnet3,uio_pci_generic
    .....

    $ sudo /usr/local/vpp/vpp-config/scripts/dpdk-devbind.py --bind vfio-pci 0b:00.0


Interface Creation
~~~~~~~~~~~~~~~~~~

Now create the interface dynamically with following. The bind option must be
specified if pci is not already bound manually by above steps.

.. code-block:: console

    $ sudo vppctl create interface vmxnet3 0000:0b:00.0 bind
    $ sudo vppctl set interface state vmxnet3-0/b/0/0 up

Interface Deletion
~~~~~~~~~~~~~~~~~~

If the interface needs to be deleted:

.. code-block:: console

    $ sudo vppctl delete interface vmxnet3 <if-name>

Show vmxnet3
~~~~~~~~~~~~

Interface and ring information can be obtained with the command
**show vmxnet3 [if-name] [desc]**

For example:

.. code-block:: console

    $ sudo vppctl show vmxnet3
    Interface: vmxnet3-0/b/0/0 (ifindex 1)
      Version: 1
      PCI Address: 0000:0b:00.0
      Mac Address: 00:50:56:88:63:be
      hw if index: 1
      Device instance: 0
      Number of interrupts: 2
      Queue 0 (RX)
        RX completion next index 786
        RX completion generation flag 0x80000000
        ring 0 size 4096 fill 4094 consume 785 produce 784
        ring 1 size 4096 fill 4096 consume 0 produce 0
      Queue 0 (TX)
        TX completion next index 216
        TX completion generation flag 0x0
        size 4096 consume 216 produce 245
