Free Hosting Online for WorkStations

< Previous | Contents | Next >

5.1. Prerequisites


This package is currently compiled for the lowest possible CPU requirements. Which still requires at least SSE3 to be supported by the CPU.

The list of upstream DPDK supported network cards can be found at supported NICs22. But a lot of those are disabled by default in the upstream Project as they are not yet in a stable state. The subset of network cards that DPDK has enabled in the package as available in Ubuntu 16.04 is:

Intel

• e100023 (82540, 82545, 82546)

• e1000e24 (82571..82574, 82583, ICH8..ICH10, PCH..PCH2)

• igb25 (82575..82576, 82580, I210, I211, I350, I354, DH89xx)

• ixgbe26 (82598..82599, X540, X550)

• i40e27 (X710, XL710, X722)

• fm10k28 (FM10420)


Chelsio

• cxgbe29 (Terminator 5)


Cisco

• enic30 (UCS Virtual Interface Card) Paravirtualization


22 http://dpdk.org/doc/nics

23 http://dpdk.org/doc/guides/nics/e1000em.html

24 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/

25 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/

26 http://dpdk.org/doc/guides/nics/ixgbe.html

27 http://dpdk.org/browse/dpdk/tree/drivers/net/i40e/

28 http://dpdk.org/doc/guides/nics/fm10k.html

29 http://dpdk.org/doc/guides/nics/cxgbe.html

30 http://dpdk.org/browse/dpdk/tree/drivers/net/enic


• virtio-net31 (QEMU)

• vmxnet332


Others

• af_packet33 (Linux AF_PACKET socket)

• ring34 (memory)


On top it experimentally enables the following two PMD drivers as they represent (virtual) devices that are very accessible to end users.

Paravirtualization

• xenvirt35 (Xen)


Others

• pcap36 (file or kernel driver)


Cards have to be unassigned from their kernel driver and instead be assigned to uio_pci_generic of vfio-pci. uio_pci_generic is older and usually getting to work more easily.

The newer vfio-pci requires that you activate the following kernel parameters to enable iommu.


iommu=pt intel_iommu=on


On top for vfio-pci you then have to configure and assign the iommu groups accordingly.


Note: In virtio based environment it is enough to "unassign" devices from the kernel driver. Without that DPDK will reject to use the device to avoid issues with kernel and DPDK working on the device at the same time. Since DPDK can work directly on virtio devices it is not required to assign e.g. uio_pci_generic to those devices.

Manual configuration and status checks can be done via sysfs or with the tool dpdk_nic_bind


dpdk_nic_bind --help


Usage:

------


dpdk_nic_bind [options] DEVICE1 DEVICE2 ....


where DEVICE1, DEVICE2 etc, are specified via PCI "domain:bus:slot.func" syntax or "bus:slot.func" syntax. For devices bound to Linux kernel drivers, they may


31 http://dpdk.org/doc/guides/nics/virtio.html

32 http://dpdk.org/doc/guides/nics/vmxnet3.html

33 http://dpdk.org/browse/dpdk/tree/drivers/net/af_packet

34 http://dpdk.org/doc/guides/nics/pcap_ring.html#rings-based-pmd

35 http://dpdk.org/doc/guides/xen/pkt_switch.html#xen-pmd-frontend-prerequisites

36 http://dpdk.org/doc/guides/nics/pcap_ring.html#libpcap-based-pmd


also be referred to by Linux interface name e.g. eth0, eth1, em0, em1, etc.


Options:

--help, --usage:

Display usage information and quit


-s, --status:

Print the current status of all known network interfaces.

For each device, it displays the PCI domain, bus, slot and function, along with a text description of the device. Depending upon whether the device is being used by a kernel driver, the igb_uio driver, or no driver, other relevant information will be displayed:

* the Linux interface name e.g. if=eth0

* the driver being used e.g. drv=igb_uio

* any suitable drivers not currently using that device

e.g. unused=igb_uio

NOTE: if this flag is passed along with a bind/unbind option, the status display will always occur after the other operations have taken place.


-b driver, --bind=driver:

Select the driver to use or "none" to unbind the device


-u, --unbind:

Unbind a device (Equivalent to "-b none")


--force:

By default, devices which are used by Linux - as indicated by having routes in the routing table - cannot be modified. Using the --force flag overrides this behavior, allowing active links to be forcibly unbound.

WARNING: This can lead to loss of network connection and should be used with caution.


Examples:

---------


To display current device status: dpdk_nic_bind --status


To bind eth1 from the current driver and move to use igb_uio dpdk_nic_bind --bind=igb_uio eth1


To unbind 0000:01:00.0 from using any driver dpdk_nic_bind -u 0000:01:00.0


To bind 0000:02:00.0 and 0000:02:00.1 to the ixgbe kernel driver dpdk_nic_bind -b ixgbe 02:00.0 02:00.


Top OS Cloud Computing at OnWorks: