We will have deep dive of the biggest release ever – DPDK 18.05. And we will have one hands-on showing ease of use and one demo showing simplicity of build system. DPDK 18.05 is the biggest release with lot of great feature set. This sets the inflection point in usage scope – 1) Ease of use, 2) Performance, 3 Power and Core Saving . Ease of Use: The lab sessions with a) python quick start script and b) meson build demo session highlight Ease of use Performance: Features like PGA bus support, 100 Gig VF Devices point in the high performance vector. Power and Core Savings: Addition of VHost interrupt mode shows equal importance to the vectors like power savings and freeing CPUs.
Speaker: Muthurajan Jayakumar - M Jay joined Intel in 1991 and has been in various roles and divisions with Intel, including as a 64 bit CPU front side bus architect and a 64 bit HAL developer, before joining the DPDK team in 2009. M Jay holds 21 US Patents, both individually and jointly, all issued while working in Intel. He was awarded the Intel Achievers Award in 2016.
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
DPDK 18.05 @ Inflection Point
1. 1) Ease Of Use 2) Saving Power and 3) Breakthrough
Performance
M Jay
Muthurajan.Jayakumar@intel.com
2. 2
Abstract
The biggest release ever – DPDK 18.05. And we will have one hands-on showing
ease of use and one demo showing simplicity of build system.
This sets the inflection point in usage scope – 1) Ease of use, 2) Performance, 3
Power and Core Saving
Ease of Use: The lab sessions with a) python quick start script and b) meson
build demo session highlight Ease of use
Performance: Features like PGA bus support, 100 Gig VF Devices point in the
high performance vector.
Power and Core Savings: Addition of VHost interrupt mode shows equal
importance to the vectors like power savings and freeing CPUs.
4. Kernel
Space
Driver
4
Packet Processing Kernel vs. User Space
User
Space
NIC
Applications
Stack
System Calls
CSRs
Interrupts
Memory (RAM)
Packet Data
Copy
Socket Buffers
(mbuf’s)
Configuration
Descriptors
Kernel Space Driver
Configuration
Descriptors
DMA
Benefit #1
Removed Data
copy from Kernel
to User Space
Benefit #2
No Interrupts
Descriptors
Mapped from Kernel
Configuration
Mapped from Kernel
Descriptor
Rings
Memory (RAM)
User Space Driver with Zero Copy
Kernel
Space
User
Space
NIC
DPDK PMD
Stack
UIO Driver
System Calls
CSRs
DPDK Enabled App
DMA
Descriptor
Rings
Socket
Buffers
(skb’s)
1
2
3
1
2
Benefit #3
Network stack can
be streamlined
and optimized
DATA
Source: DPDK.org
5. 5
Feature Description
FPGA Support This includes:
• IFPGA Bus and Rawdev Driver: This is a generic Intel FPGA
bus library and a corresponding raw device (rawdev) driver,
which provide support for integrating any Intel FPGA device
with DPDK. They integrate with Open Programmable
Acceleration Engine (OPAE) software to scan FPGA
devices, associate the correct DPDK drivers with each
Accelerated Function Unit (AFU), and handle other
operations such as partial reconfiguration.
• IFCVF Driver: An IFCVF vDPA (vhost Data Path
Acceleration) driver has been added to support Intel FPGA
100G VF devices. IFCVF works as a hardware vhost data
path accelerator. It supports live migration and is compatible
with virtio 0.95 and 1.0.
Intel® Ethernet Network
Adapter X722
DPDK support has been added for the standalone (Champagne
Fountain) NIC based on the X722 (Fort Park) IP.
Compression
Acceleration API
A new compressdev API has been added to support hardware
and software acceleration of compression. This is similar in
desigSourn to the existing cryptodev API, and can be used to
accelerate storage use cases. A software PMD using the Intel®
Storage Acceleration Library (ISA-L) has been added. A PMD to
support compression via Intel® QuickAssist Technology will be
added in 18.08.
Vhost Data Path
Acceleration (vDPA)
This is an extension of the vhost-user library to support a
selective data path. This allows the DPDK vhost-user library to
interface to devices that provide hardware support for virtio,
enabling an accelerated data path for these devices.
Feature Description
Virtio Crypto New APIs have been introduced in vhost library to enable virtio
crypto support including session creation/deletion handling and
translating virtio-crypto request into DPDK crypto operations. A
virtio crypto PMD has also been added which supports AES-
CBC ciphering and AES-CBC with HMAC-SHA1 algorithm
chaining. A new sample application has also been introduced to
demonstrate use of these new capabilities.
Tunnel Encap/Decap
Extensions to Rte_flow
The rte_flow API has been extended to support encapsulation &
decapsulation for VXLAN and NVGRE. This allows hardware
acceleration by devices that support these capabilities.
AES-CMAC Support in
AESNI-MB PMD
The AESNI-MB crypto PMD has been updated to add support for
AES-CMAC (128-bit key).
Eventdev Timer and
Crypto Adapters
The eventdev API supports an event-driven programming model
in DPDK. A timer adapter has been created to allow applications
to arm/cancel event timers that generate timer expiry events. A
crypto adapter has also been added which allows applications to
enqueue/dequeue crypto operations to/from cryptodev as events
scheduled by an event device.
Device Event Monitoring
Framework
Added a general device event monitoring framework to the EAL,
for dynamic device management. This uses the Linux uevent
framework and can be used to implement functions such as
device hotplug.
Release 18.05 (May 2018)
Source: www.dpdk.org
6. 6
Feature Description
Virtio-User Server Mode In a container environment, if the vhost-user backend in the host
restarted, there was no way for it to reconnect to virtio-user in
the container. This meant that if the vswitch restarted, it couldn’t
resume communications with processes in the containers unless
they were also restarted. Now, support for server mode has
been added. This means that if the backend restarts, it can
reconnect to virtio-user and continue communications.
Vhost Interrupt Mode Interrupt mode has been added for vhost. Previously, vhost
always operated in polling mode, but now an application can
switch to interrupt model during low traffic periods in order to free
up CPU resources for other applications or to save power.
Memory Hotplug The memory subsystem has been enhanced to allow dynamic
scaling of memory, which allows an application to add and
remove memory when required. This can be used to improve
application startup time by starting an app with the minimum
memory required then adding more when required, and enables
better sharing of resources when running multiple DPDK
applications on a system. This is a significant step towards
making DPDK friendlier for container and cloud native
environments.
Userspace eBPF Library This provides the ability to load and execute Enhanced Berkeley
Packet Filters (eBPF) within DPDK applications. It introduces a
basic framework to load/unload eBPF-based filters on Ethernet
devices (via Rx/Tx callbacks).
RSS in Rte_flow PMDs for Intel NICs (e1000, igb, ixgbe, i40e) were modified to
allow configuration of RSS via the rte_flow API.
Feature Description
Port Representor This provides a generic mechanism for Virtual Function (VF)
management in DPDK. It allows a single control plane
application to control configuration, management and monitoring
of VFs using standard DPDK APIs. A data path is also supported
which allows physical ports to be presented as separate logical
ports within an application.
IP Pipeline Refactoring Refactored the IP pipeline application. This includes: 1) Moving
table actions into the librte_pipeline library which improves
flexibility by allowing any action to be combined with any match
(i.e. table type); 2) removing the static configuration file and
allowing dynamic configuration via CLI; 3) replacing the local CLI
with a remote CLI capability which allows connection to external
control plane applications such as Open BRAS.
Enhancements to IP
Pipeline for BRAS/BNG
Enhancements were made to the IP Pipeline to support
BRAS/BNG use cases, including:
• Support for NAT: An action to support Network Address
Translation (NAT) was added. This supports NAT44 and
NAT66.
• Support for PPPoE: Support was added for different types of
packet encapsulation, including VLAN, QinQ, MPLS and
PPPoE.
Release 18.05 (May 2018)
Source: www.dpdk.org
15. 15
EventDev
Provides an event-driven programming
model.
Lcores call a scheduler that selects
packets for them based on programmer-
specified criteria.
Benefits include efficient core utilization
and dynamic load balancing.
Supports the following scheduling types
per queue:
• Atomic (a flow can only be processed on one core at a
time)
• Ordered (a flow can be processed on two or more
cores simultaneously, but packet order is maintained)
• Parallel (all cores can process all flows, with no
preservation of packet order)
Source:DPDK.org
16. You Said – EASE of USE Is IMPORTANT TO
YOU… And ….
16
17. You Said – EASE of USE is IMPORTANT TO
YOU… And ….
We Listened!!
17
29. 29
Running Application after Install
# Check if huge pages are available
cat /proc/meminfo
# Add the following line to .bashrc file. It will get loaded on every boot
export LD_LIBRARY_PATH=
/usr/local/lib/x86_64-linux-gnu/dpdk/drivers:/usr/local/lib/x86_64-linux-gnu
# Run Application
./examples/dpdk-helloworld
# Run tests
How to run tests after install?
32. 32
Running Application in Build directory
# Check if huge pages are available
cat /proc/meminfo
# Run Application
cd /dpdk-Jun20-build
./examples/dpdk-helloworld
33. 33
Running Test Apps in build directory
# Check if huge pages are available
cat /proc/meminfo
# Run tests
cd /dpdk-Jun20-build
ninja test
34. 34
How fast is the build? – Time it yourselves
1) touch lib/librte_table/rte_table.h
2) Time ninja –C build
Other Commands :
Ldd /usr/local/lib64/dpdk/drivers/librte_pmd_i40e.so
----
meson configure –Dexamples=helloworld
cd hellowworld ;; vi Makefile
rm –rf build-* x86_64-native-linuxapp-gcc*
35. 35
Tips & FAQs
Q1: Aborted DPDK application. To clean up properly what should be done
A1: Press Cntl-C and Type reset
Q2 What is the connection between PKG_CONFIG_PATH in meson.build and
libdpdk.pc file?
A2: https://stackoverflow.com/questions/45598164/set-pkg-config-path-inside-
meson-build
39. 39
• Same technology as
‘make menuconfig’ in
kernel
• Easy-to-use dialog and
menu system
• Guides the user through
installation
• Gives sensible defaults
along the way
‘Dialog’-Based User Interface
41. Install PuTTY
Click the URL
http://the.earth.li/~sgtatham/putty/0.60/x86/
Double-click putty-0.60-installer.exe option
You have downloaded to your download folder
Right-click and run as administrator
You have installed PuTTY
Next step is to configure PuTTY
41
42. PuTTY Config: Session
Screen 1/2
1) Host name 207.108.8.161
2) Port 22
3) Connection Type SSH
1st select
this
42
45. PuTTY Config: Connection -- > Proxy Screen 2/2
1) Proxy Type: None
2) Proxy host name: Leave it
blank
3) Do DNS name lookup at proxy
end:
Auto
Next step is to save the
configuration
45
46. 1) Name The Configuration. 2) Save It.
Click “Session” on the top-left corner.
It will take you to the 1st screen - shown here .
In Saved Sessons Box, Enter a name, e.g., dpdk
training cluster.
Press Save button.
From now on, you can load the saved session
when starting PuTTY.
46
47. Getting to The HostVM-<m> Through Cluster Jump Server
47
48. Start PuTTY
Find PuTTY that you just installed.
Click on icon “putty.exe”. You will get the PuTTY Configuration screen.
Select the Saved Session, shown here e.g., dpdk training cluster.
Press Load button. Press Open button. You will get ssh session shown in 3rd screen asking username.
Username: student<m> [<m> is given to you. For example, it may be student19 or student25 or any other student<m>]
Ask for your specific <m> and use only that. This will avoid overlapping with other teams’ <m>.
Password is same as username. For example, if your username is student19, then password is student19.
Repeat the above steps so that you have many connections to the jump server.
48
49. How to Log in & Connect to <HostVM>
Log in as student<m>; password student<m>
The next step is to connect to ubuntu@<HostVM#> assigned to you.
In case it is not given, ask for your own <HostVM#>.
Note: We are using 1:1 – same student name and same HostVM#- name.
Type in the following command ssh to username ubuntu@<HostVM#>.
ssh ubuntu@<HostVM#> <HostVM#> dbdw01 to dbdw17
Password: ubuntu [same as username above]. dskl01 to dslk10
sudo su –
cd /home/ubuntu
sudo apt-get install libnuma-dev
Sudo apt-get install dialog
49
50. export TERM=putty ;; Sudo python dpdk-quickstart.py
50
PRESS ENTER to continue
Export TERM=putty
55. Home Work – Short Summary [Details – At The End]
55
1) For Binding again to kernel driver
cd /home/ubuntu/dpdk_demo/usertools
./dpdk-devbind.py - -status
./dpdk-devbind.py - -bind=ixgbe 03:00.0
./dpdk-devbind.py - -bind=ixgbe 03:00.1
Ifconfig –a
Ifconfig enp3s0f0 promisc up
Ifconfig enp3s0f1 promisc up
https://dpdk-guide.gitlab.io/dpdk-guide/setup/binding.html
2) To Start Again the script
cd /home/ubuntu
python dpdk-quickstart.py