DPDK » Historique » Version 10
Version 9 (Mehdi Abaakouk, 02/05/2014 17:01) → Version 10/113 (Mehdi Abaakouk, 02/05/2014 18:18)
{{>toc}}
h1. DPDK
Traitement haute performance en logiciel, 10 Gbit/s en petit paquets line rate
h2. Liens
* http://dpdk.org
* [[AtelierPPS2012]]
h2. Misc
* Intel PCI id http://www.intel.com/support/network/sb/cs-012904.htm
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-products.html?iid=embed_portal+hdprod_ethernet#s1=Gigabit%20Ethernet&s2=all&s3=all
* Intel Pro/1000 PT vs CT http://hardforum.com/showthread.php?t=1386042
* http://images.ncix.com/forumimages/C9864B87-583B-10FB-B0DE80742781CE07.jpg
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82572EI&s3=all
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82574L&s3=all
* https://github.com/Pktgen/Pktgen-DPDK
* Evaluating the Suitability of Server Network Cards for Software Routers http://kfall.net/ucbpage/papers/snc.pdf
h2. Note sileht dpdk:
Extract from: http://www.intel.com/content/dam/www/public/us/en/documents/guides/intel-dpdk-getting-started-guide.pdf
h3. configuration hugepages:
* 2M (1024*2k): hugepages=1024 (at runtime: echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
* 4G (4x1G): default_hugepagesz=1G hugepagesz=1G hugepages=4 (only works at boot time via grub)
<pre>
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
</pre>
h3. Compile and load modules:
_Note: source tools/setup.sh is a helper tools for this but works only with IGB driver not e1000e_
<pre>
# apt-get install make gcc linux-headers-amd64
# make config T=x86_64-default-linuxapp-gcc
# make T=x86_64-default-linuxapp-gcc
..
Build complete
# modprobe uio (I think this is not useful)
# insmod build/kmod/rte_kni.ko (I think this is not useful)
# insmod build/kmod/igb_uio.ko (I think this is not useful)
# ./tools/pci_unbind.py --status
Network devices using IGB_UIO driver
====================================
<none>
Network devices using kernel driver
===================================
0000:00:19.0 '82579LM Gigabit Network Connection' if=eth1 drv=e1000e unused=<none>
0000:01:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth6 drv=ixgbe unused=igb_uio *Active*
0000:01:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth7 drv=ixgbe unused=igb_uio
0000:04:00.0 '82571EB Gigabit Ethernet Controller' if=eth2 drv=e1000e unused=igb_uio *Active*
0000:04:00.1 '82571EB Gigabit Ethernet Controller' if=eth3 drv=e1000e unused=igb_uio
0000:05:00.0 '82571EB Gigabit Ethernet Controller' if=eth4 drv=e1000e unused=igb_uio
0000:05:00.1 '82571EB Gigabit Ethernet Controller' if=eth5 drv=e1000e unused=igb_uio
0000:06:00.0 'RTL8111/8168B PCI Express Gigabit Ethernet controller' if=eth0 drv=r8169 unused=<none> *Active*
Other network devices
=====================
<none>
</pre>
test sur eth7:
<pre>
# ip link set eth7 down
# ./tools/pci_unbind.py --bind=igb_uio 0000:01:00.1
</pre>
h3. Prepare examples programs:
<pre>
# export RTE_SDK=/root/sileht/dpdk-1.6.0r1
# export RTE_TARGET=build
# cd /root/sileht/
# cp -r $RTE_SDK/examples/helloworld my_rte_app
# cd my_rte_app
# make
</pre>
h3. Tests
<pre>
</pre>
h2. Connerie driver intel:
Une fois le module igb_uio changer sur les:
<pre>
01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
</pre>
Un flags de l'eeprom est changé et le module ixgbe ne charge plus les ports de la carte qui n'ont pas des SFP+ intel avec le message d'erreur suivant:
<pre>
[ 563.069683] ixgbe 0000:01:00.0: failed to load because an unsupported SFP+ or QSFP module type was detected.
[ 563.069786] ixgbe 0000:01:00.0: Reload the driver after installing a supported module.
</pre>
Pour contourner le problème:
<pre>
modprobe ixgbe allow_unsupported_sfp=1 # allow_any_sfp=1 suivant le kernel
</pre>
ou
<pre>
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe_any_sfp.conf
update-initramfs -u -k all
</pre>
h1. DPDK
Traitement haute performance en logiciel, 10 Gbit/s en petit paquets line rate
h2. Liens
* http://dpdk.org
* [[AtelierPPS2012]]
h2. Misc
* Intel PCI id http://www.intel.com/support/network/sb/cs-012904.htm
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-products.html?iid=embed_portal+hdprod_ethernet#s1=Gigabit%20Ethernet&s2=all&s3=all
* Intel Pro/1000 PT vs CT http://hardforum.com/showthread.php?t=1386042
* http://images.ncix.com/forumimages/C9864B87-583B-10FB-B0DE80742781CE07.jpg
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82572EI&s3=all
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82574L&s3=all
* https://github.com/Pktgen/Pktgen-DPDK
* Evaluating the Suitability of Server Network Cards for Software Routers http://kfall.net/ucbpage/papers/snc.pdf
h2. Note sileht dpdk:
Extract from: http://www.intel.com/content/dam/www/public/us/en/documents/guides/intel-dpdk-getting-started-guide.pdf
h3. configuration hugepages:
* 2M (1024*2k): hugepages=1024 (at runtime: echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
* 4G (4x1G): default_hugepagesz=1G hugepagesz=1G hugepages=4 (only works at boot time via grub)
<pre>
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
</pre>
h3. Compile and load modules:
_Note: source tools/setup.sh is a helper tools for this but works only with IGB driver not e1000e_
<pre>
# apt-get install make gcc linux-headers-amd64
# make config T=x86_64-default-linuxapp-gcc
# make T=x86_64-default-linuxapp-gcc
..
Build complete
# modprobe uio (I think this is not useful)
# insmod build/kmod/rte_kni.ko (I think this is not useful)
# insmod build/kmod/igb_uio.ko (I think this is not useful)
# ./tools/pci_unbind.py --status
Network devices using IGB_UIO driver
====================================
<none>
Network devices using kernel driver
===================================
0000:00:19.0 '82579LM Gigabit Network Connection' if=eth1 drv=e1000e unused=<none>
0000:01:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth6 drv=ixgbe unused=igb_uio *Active*
0000:01:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth7 drv=ixgbe unused=igb_uio
0000:04:00.0 '82571EB Gigabit Ethernet Controller' if=eth2 drv=e1000e unused=igb_uio *Active*
0000:04:00.1 '82571EB Gigabit Ethernet Controller' if=eth3 drv=e1000e unused=igb_uio
0000:05:00.0 '82571EB Gigabit Ethernet Controller' if=eth4 drv=e1000e unused=igb_uio
0000:05:00.1 '82571EB Gigabit Ethernet Controller' if=eth5 drv=e1000e unused=igb_uio
0000:06:00.0 'RTL8111/8168B PCI Express Gigabit Ethernet controller' if=eth0 drv=r8169 unused=<none> *Active*
Other network devices
=====================
<none>
</pre>
test sur eth7:
<pre>
# ip link set eth7 down
# ./tools/pci_unbind.py --bind=igb_uio 0000:01:00.1
</pre>
h3. Prepare examples programs:
<pre>
# export RTE_SDK=/root/sileht/dpdk-1.6.0r1
# export RTE_TARGET=build
# cd /root/sileht/
# cp -r $RTE_SDK/examples/helloworld my_rte_app
# cd my_rte_app
# make
</pre>
h3. Tests
<pre>
</pre>
h2. Connerie driver intel:
Une fois le module igb_uio changer sur les:
<pre>
01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
</pre>
Un flags de l'eeprom est changé et le module ixgbe ne charge plus les ports de la carte qui n'ont pas des SFP+ intel avec le message d'erreur suivant:
<pre>
[ 563.069683] ixgbe 0000:01:00.0: failed to load because an unsupported SFP+ or QSFP module type was detected.
[ 563.069786] ixgbe 0000:01:00.0: Reload the driver after installing a supported module.
</pre>
Pour contourner le problème:
<pre>
modprobe ixgbe allow_unsupported_sfp=1 # allow_any_sfp=1 suivant le kernel
</pre>
ou
<pre>
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe_any_sfp.conf
update-initramfs -u -k all
</pre>