Projet

Général

Profil

DPDK » Historique » Version 12

Laurent GUERBY, 05/07/2014 16:22

1 1 Laurent GUERBY
{{>toc}}
2 1 Laurent GUERBY
3 1 Laurent GUERBY
h1. DPDK
4 1 Laurent GUERBY
5 1 Laurent GUERBY
Traitement haute performance en logiciel, 10 Gbit/s en petit paquets line rate
6 1 Laurent GUERBY
7 1 Laurent GUERBY
h2. Liens
8 1 Laurent GUERBY
9 1 Laurent GUERBY
* http://dpdk.org
10 1 Laurent GUERBY
* [[AtelierPPS2012]]
11 2 Laurent GUERBY
12 2 Laurent GUERBY
h2. Misc
13 2 Laurent GUERBY
14 2 Laurent GUERBY
* Intel PCI id http://www.intel.com/support/network/sb/cs-012904.htm
15 3 Laurent GUERBY
* 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
16 3 Laurent GUERBY
* Intel Pro/1000 PT vs CT http://hardforum.com/showthread.php?t=1386042
17 4 Laurent GUERBY
* http://images.ncix.com/forumimages/C9864B87-583B-10FB-B0DE80742781CE07.jpg
18 4 Laurent GUERBY
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82572EI&s3=all
19 4 Laurent GUERBY
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82574L&s3=all
20 5 Laurent GUERBY
* https://github.com/Pktgen/Pktgen-DPDK
21 6 Laurent GUERBY
* Evaluating the Suitability of Server Network Cards for Software Routers http://kfall.net/ucbpage/papers/snc.pdf
22 7 Mehdi Abaakouk
23 7 Mehdi Abaakouk
24 7 Mehdi Abaakouk
h2. Note sileht dpdk:
25 7 Mehdi Abaakouk
26 7 Mehdi Abaakouk
Extract from: http://www.intel.com/content/dam/www/public/us/en/documents/guides/intel-dpdk-getting-started-guide.pdf
27 7 Mehdi Abaakouk
28 7 Mehdi Abaakouk
h3. configuration hugepages: 
29 7 Mehdi Abaakouk
30 7 Mehdi Abaakouk
* 2M (1024*2k): hugepages=1024 (at runtime: echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
31 7 Mehdi Abaakouk
* 4G (4x1G): default_hugepagesz=1G hugepagesz=1G hugepages=4 (only works at boot time via grub)
32 7 Mehdi Abaakouk
33 7 Mehdi Abaakouk
<pre>
34 7 Mehdi Abaakouk
mkdir /mnt/huge
35 7 Mehdi Abaakouk
mount -t hugetlbfs nodev /mnt/huge
36 7 Mehdi Abaakouk
</pre>
37 7 Mehdi Abaakouk
38 7 Mehdi Abaakouk
h3. Compile and load modules: 
39 7 Mehdi Abaakouk
40 7 Mehdi Abaakouk
_Note: source tools/setup.sh is a helper tools for this but works only with IGB driver not e1000e_
41 7 Mehdi Abaakouk
42 1 Laurent GUERBY
<pre>
43 8 Mehdi Abaakouk
# apt-get install make gcc linux-headers-amd64
44 8 Mehdi Abaakouk
# make config T=x86_64-default-linuxapp-gcc
45 7 Mehdi Abaakouk
# make T=x86_64-default-linuxapp-gcc
46 7 Mehdi Abaakouk
..
47 7 Mehdi Abaakouk
Build complete
48 7 Mehdi Abaakouk
49 7 Mehdi Abaakouk
# modprobe uio  (I think this is not useful)
50 7 Mehdi Abaakouk
# insmod build/kmod/rte_kni.ko (I think this is not useful)
51 7 Mehdi Abaakouk
# insmod build/kmod/igb_uio.ko (I think this is not useful)
52 7 Mehdi Abaakouk
# ./tools/pci_unbind.py --status
53 7 Mehdi Abaakouk
54 7 Mehdi Abaakouk
Network devices using IGB_UIO driver
55 7 Mehdi Abaakouk
====================================
56 7 Mehdi Abaakouk
<none>
57 7 Mehdi Abaakouk
58 7 Mehdi Abaakouk
Network devices using kernel driver
59 7 Mehdi Abaakouk
===================================
60 9 Mehdi Abaakouk
0000:00:19.0 '82579LM Gigabit Network Connection' if=eth1 drv=e1000e unused=<none>
61 9 Mehdi Abaakouk
0000:01:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth6 drv=ixgbe unused=igb_uio *Active*
62 9 Mehdi Abaakouk
0000:01:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth7 drv=ixgbe unused=igb_uio
63 9 Mehdi Abaakouk
0000:04:00.0 '82571EB Gigabit Ethernet Controller' if=eth2 drv=e1000e unused=igb_uio *Active*
64 9 Mehdi Abaakouk
0000:04:00.1 '82571EB Gigabit Ethernet Controller' if=eth3 drv=e1000e unused=igb_uio
65 9 Mehdi Abaakouk
0000:05:00.0 '82571EB Gigabit Ethernet Controller' if=eth4 drv=e1000e unused=igb_uio
66 9 Mehdi Abaakouk
0000:05:00.1 '82571EB Gigabit Ethernet Controller' if=eth5 drv=e1000e unused=igb_uio
67 9 Mehdi Abaakouk
0000:06:00.0 'RTL8111/8168B PCI Express Gigabit Ethernet controller' if=eth0 drv=r8169 unused=<none> *Active*
68 1 Laurent GUERBY
69 1 Laurent GUERBY
Other network devices
70 1 Laurent GUERBY
=====================
71 1 Laurent GUERBY
<none>
72 9 Mehdi Abaakouk
</pre>
73 7 Mehdi Abaakouk
74 9 Mehdi Abaakouk
test sur eth7:
75 9 Mehdi Abaakouk
76 9 Mehdi Abaakouk
<pre>
77 9 Mehdi Abaakouk
# ip link set eth7 down
78 9 Mehdi Abaakouk
# ./tools/pci_unbind.py --bind=igb_uio 0000:01:00.1
79 7 Mehdi Abaakouk
</pre>
80 7 Mehdi Abaakouk
81 7 Mehdi Abaakouk
h3. Prepare examples programs:
82 7 Mehdi Abaakouk
83 7 Mehdi Abaakouk
<pre>
84 7 Mehdi Abaakouk
# export RTE_SDK=/root/sileht/dpdk-1.6.0r1
85 7 Mehdi Abaakouk
# export RTE_TARGET=build
86 7 Mehdi Abaakouk
# cd /root/sileht/
87 7 Mehdi Abaakouk
# cp -r $RTE_SDK/examples/helloworld my_rte_app
88 7 Mehdi Abaakouk
# cd my_rte_app
89 7 Mehdi Abaakouk
# make
90 7 Mehdi Abaakouk
</pre>
91 7 Mehdi Abaakouk
92 7 Mehdi Abaakouk
93 7 Mehdi Abaakouk
h3. Tests
94 7 Mehdi Abaakouk
95 7 Mehdi Abaakouk
<pre>
96 1 Laurent GUERBY
</pre>
97 10 Mehdi Abaakouk
98 11 Mehdi Abaakouk
h2. Limitation SPF carte intel:
99 10 Mehdi Abaakouk
100 11 Mehdi Abaakouk
Une fois le module igb_uio changé sur les:
101 10 Mehdi Abaakouk
102 10 Mehdi Abaakouk
<pre>
103 10 Mehdi Abaakouk
01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
104 10 Mehdi Abaakouk
</pre>
105 10 Mehdi Abaakouk
106 11 Mehdi Abaakouk
Un flags de l'eeprom change 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:
107 10 Mehdi Abaakouk
108 10 Mehdi Abaakouk
<pre>
109 10 Mehdi Abaakouk
[  563.069683] ixgbe 0000:01:00.0: failed to load because an unsupported SFP+ or QSFP module type was detected.
110 10 Mehdi Abaakouk
[  563.069786] ixgbe 0000:01:00.0: Reload the driver after installing a supported module.
111 10 Mehdi Abaakouk
</pre>
112 10 Mehdi Abaakouk
113 10 Mehdi Abaakouk
Pour contourner le problème:
114 10 Mehdi Abaakouk
115 10 Mehdi Abaakouk
<pre>
116 10 Mehdi Abaakouk
modprobe ixgbe allow_unsupported_sfp=1 # allow_any_sfp=1 suivant le kernel
117 10 Mehdi Abaakouk
</pre>
118 10 Mehdi Abaakouk
119 10 Mehdi Abaakouk
ou 
120 10 Mehdi Abaakouk
121 1 Laurent GUERBY
<pre>
122 1 Laurent GUERBY
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe_any_sfp.conf
123 1 Laurent GUERBY
update-initramfs -u -k all
124 11 Mehdi Abaakouk
</pre>
125 11 Mehdi Abaakouk
126 11 Mehdi Abaakouk
La carte fonctionnera à nouveau avec le message suivant:
127 11 Mehdi Abaakouk
128 11 Mehdi Abaakouk
<pre>
129 11 Mehdi Abaakouk
[  908.361767] ixgbe 0000:01:00.0 (unregistered net_device): WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics.  Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter.  Intel Corporation is not responsible for any harm caused by using untested modules.
130 10 Mehdi Abaakouk
</pre>
131 12 Laurent GUERBY
132 12 Laurent GUERBY
h2. Atelier 20140705
133 12 Laurent GUERBY
134 12 Laurent GUERBY
TODO