- play_arrow Overview
- play_arrow Understanding Contrail Controller
-
- play_arrow Configuring Contrail
- play_arrow Configuring Virtual Networks
- Creating Projects in OpenStack for Configuring Tenants in Contrail
- Creating a Virtual Network with Juniper Networks Contrail
- Creating a Virtual Network with OpenStack Contrail
- Creating an Image for a Project in OpenStack Contrail
- Creating a Floating IP Address Pool
- Using Security Groups with Virtual Machines (Instances)
- Security Policy Enhancements
- Support for IPv6 Networks in Contrail
- Configuring EVPN and VXLAN
- play_arrow Example of Deploying a Multi-Tier Web Application Using Contrail
- play_arrow Configuring Services
- play_arrow Configuring Service Chaining
- play_arrow Examples: Configuring Service Chaining
- play_arrow Adding Physical Network Functions in Service Chains
- play_arrow Configuring High Availability
- play_arrow QoS Support in Contrail
- play_arrow Load Balancers
- play_arrow Optimizing Contrail
-
- play_arrow Monitoring and Troubleshooting Contrail
- play_arrow Configuring Traffic Mirroring to Monitor Network Traffic
- play_arrow Understanding Contrail Analytics
- play_arrow Configuring Contrail Analytics
- Analytics Scalability
- High Availability for Analytics
- Role-Based Access Control for Analytics
- System Log Receiver in Contrail Analytics
- Sending Flow Messages to the Contrail System Log
- More Efficient Flow Queries
- Ceilometer Support in a Contrail Cloud
- User Configuration for Analytics Alarms and Log Statistics
- Alarms History
- Node Memory and CPU Information
- Role- and Resource-Based Access Control for the Contrail Analytics API
- Configuring Analytics as a Standalone Solution
- Configuring Secure Sandesh and Introspect for Contrail Analytics
- play_arrow Using Contrail Analytics to Monitor and Troubleshoot the Network
- Monitoring the System
- Debugging Processes Using the Contrail Introspect Feature
- Monitor > Infrastructure > Dashboard
- Monitor > Infrastructure > Control Nodes
- Monitor > Infrastructure > Virtual Routers
- Monitor > Infrastructure > Analytics Nodes
- Monitor > Infrastructure > Config Nodes
- Monitor > Networking
- Query > Flows
- Query > Logs
- Understanding Flow Sampling
- Example: Debugging Connectivity Using Monitoring for Troubleshooting
- play_arrow Common Support Answers
-
- play_arrow Contrail Commands and APIs
- play_arrow Contrail Commands
- play_arrow Contrail Application Programming Interfaces (APIs)
-
Configuring the Data Plane Development Kit (DPDK) Integrated with Contrail vRouter
DPDK Support in Contrail
Contrail 3.0 and later supports the Data Plane Development Kit (DPDK).
DPDK is an open source set of libraries and drivers for fast packet processing. DPDK enables fast packet processing by allowing network interface cards (NICs) to send direct memory access (DMA) packets directly into an application’s address space, allowing the application to poll for packets, and thereby avoiding the overhead of interrupts from the NIC.
Integrating with DPDK allows a Contrail vRouter to process more packets per second than is possible when running as a kernel module.
When using DPDK with Contrail 4.0, one or more Contrail compute nodes are provisioned with DPDK during installation. An entry in the server configuration file specifies which nodes are to be configured to use the DPDK vRouter mode instead of the regular kernel mode. This allows for a mixed setup, where different nodes use different modes of the vRouter.
Upon installation, when a Contrail compute node is provisioned with DPDK, the server configuration file specifies which physical interface(s) to use, how many CPU cores to use for forwarding packets, and the number of huge pages to allocate for DPDK.
Preparing the Environment File for Provisioning a Cluster Node with DPDK
The environment file is used at provsioning to specify all of the options necessary for the installation of a Contrail cluster, including whether any node should be configured to use DPDK.
Each node to be configured with the DPDK vRouter must be listed in the provisioning file with a dictionary entry, along with the percentage of memory for DPDK huge pages and the CPUs to be used.
The following are descriptions of the required entries for the server configuration. :
huge_pages
—Specify the percentage of host memory to be reserved for the DPDK huge pages. The reserved memory will be used by the vRouter and the Quick Emulator (QEMU) for allocating memory resources for the virtual machines (VMs) spawned on that host.Note:The percentage allocated to
huge_pages
should not be too high, because the host Linux kernel also requires memory.coremask
—Specify a CPU affinity mask with which vRouter will run. vRouter will use only the CPUs specified for its threads of execution. These CPU cores will be constantly polling for packets, and they will be displayed as 100% busy in the output of “top”.Supported formats include:
Hexadecimal (for example, 0xf)
Comma-separated list of CPUs (1,2,4...)
Dash-separated range of CPUs (for example, 1-4)
The server configuration file is configured prior to the installation of Contrail.
Use the standard Contrail installation procedure, and upon completion, your cluster with specified nodes using the DPDK vRouter implementation is ready to use.
Support for Multiple UIO Drivers
Support is available for optionally specifying the userspace IO (UIO) driver to use in a DPDK-enabled compute node.
Specify UIO in the dpdk
section of
the server configuration file, by using the optional attribute uio_driver
:
{ "server" : [{ "parameters" : { "provision": { "contrail_4": { "core_mask": "0x3f", "huge_pages": "50", "uio_driver" : "igb_uio" } } } }] }
The supported values for uio_driver
include:
igb_uio
—specify that the igb_uio module from the DPDK library should be used.vfio-pci
—specify that the vfio module in the Linux kernel should be used instead of uio, which protects memory accesses using the IOMMU when a SR-IOV virtual function is used as the physical interface of vrouter.uio_pci_generic
—specify that the UIO driver that is built into the Linux kernel should be used. This option does not support the use of SR-IOV VFs.
If the uio_driver
is not specified
in the server configuration file, igb_uio
is used by default.
Creating a Flavor for DPDK in OpenStack Kilo
OpenStack Kilo has a feature called flavors, which are virtual hardware templates that define sizes for RAM, disk, and so on. Contrail 3.0 and later supports the OpenStack Kilo flavor that specifies that a VM should use huge pages. The use of huge pages is a requirement for using a DPDK vRouter.
Use the following command to add the flavor, where m1.large
is the name of the flavor. When a VM is created
using this flavor, OpenStack ensures that the VM will only be spawned
on a compute node that has huge pages enabled.
$nova flavor-key m1.large set hw:mem_page_size=large
Huge pages are enabled for compute nodes where vRouter is provisioned with DPDK.
If a VM is spawned with a flavor that does not have huge pages enabled, the VM should not be created on a compute node on which vRouter is provisioned with DPDK.
You can use OpenStack availability zones or host aggregates to exclude the hosts where vRouter is provisioned with DPDK.