Projet

Général

Profil

DPDK » Historique » Version 21

Laurent GUERBY, 25/02/2015 22:46

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 16 Laurent GUERBY
* GIT http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/dpdk
12 16 Laurent GUERBY
<pre>
13 16 Laurent GUERBY
$ git clone ssh://git@git.tetaneutral.net/dpdk.git
14 16 Laurent GUERBY
</pre>
15 16 Laurent GUERBY
16 17 Laurent GUERBY
* Nerim Antoine https://twitter.com/nerim_net/status/517592380841930752
17 17 Laurent GUERBY
** Du code maison fondé sur #DPDK en prod dans le réseau : première étape vers l'élimination des systèmes propriétaires ?
18 2 Laurent GUERBY
19 2 Laurent GUERBY
h2. Misc
20 2 Laurent GUERBY
21 21 Laurent GUERBY
* http://www.cs.cmu.edu/~dongz/papers/cuckooswitch.pdf
22 21 Laurent GUERBY
** We show that CUCKOOSWITCH can process 92.22 million minimumsized
23 21 Laurent GUERBY
packets per second on a commodity server equipped with eight 10 Gbps Ethernet interfaces while maintaining a forwarding table of one billion forwarding entries.
24 18 Laurent GUERBY
* Improving Linux networking performance https://lwn.net/Articles/629155/
25 18 Laurent GUERBY
** https://www.youtube.com/watch?v=3XG9-X777Jo
26 19 Laurent GUERBY
** http://people.netfilter.org/hawk/presentations/LCA2015/net_stack_challenges_100G_LCA2015.pdf
27 20 Laurent GUERBY
* http://www.bigswitch.com/sites/default/files/presentations/onug-baremetal-2014-final.pdf
28 2 Laurent GUERBY
* Intel PCI id http://www.intel.com/support/network/sb/cs-012904.htm
29 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
30 3 Laurent GUERBY
* Intel Pro/1000 PT vs CT http://hardforum.com/showthread.php?t=1386042
31 4 Laurent GUERBY
* http://images.ncix.com/forumimages/C9864B87-583B-10FB-B0DE80742781CE07.jpg
32 4 Laurent GUERBY
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82572EI&s3=all
33 4 Laurent GUERBY
* http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-controllers.html#s1=all&s2=82574L&s3=all
34 5 Laurent GUERBY
* https://github.com/Pktgen/Pktgen-DPDK
35 6 Laurent GUERBY
* Evaluating the Suitability of Server Network Cards for Software Routers http://kfall.net/ucbpage/papers/snc.pdf
36 13 Laurent GUERBY
* http://www.intel.fr/content/dam/www/public/us/en/documents/guides/intel-dpdk-sample-applications-user-guide.pdf
37 13 Laurent GUERBY
*  rte_eth_rx_burst
38 13 Laurent GUERBY
** http://dpdk.org/doc/api/rte__ethdev_8h.html#a5ac93faa0f3f69545ca121dcfd9433f5
39 13 Laurent GUERBY
** http://dpdk.info/ml/archives/dev/2014-January/001223.html
40 14 Laurent GUERBY
* http://www.intel.fr/content/dam/www/public/us/en/documents/white-papers/aes-ipsec-performance-linux-paper.pdf
41 15 Laurent GUERBY
* http://networkbuilders.intel.com/docs/Network_Builders_RA_vBRAS_Final.pdf
42 15 Laurent GUERBY
43 15 Laurent GUERBY
* https://github.com/SnabbCo/snabbswitch
44 15 Laurent GUERBY
** https://github.com/SnabbCo/snabbswitch/blob/master/src/apps/intel/intel10g.lua
45 15 Laurent GUERBY
** http://blog.ipspace.net/2014/06/snabb-switch-and-nfv-on-openstack-in.html
46 15 Laurent GUERBY
** https://github.com/SnabbCo/snabbswitch/wiki/Snabb-Lab
47 15 Laurent GUERBY
** https://twitter.com/lukego/status/327714050219847680
48 7 Mehdi Abaakouk
49 7 Mehdi Abaakouk
h2. Note sileht dpdk:
50 7 Mehdi Abaakouk
51 7 Mehdi Abaakouk
Extract from: http://www.intel.com/content/dam/www/public/us/en/documents/guides/intel-dpdk-getting-started-guide.pdf
52 7 Mehdi Abaakouk
53 7 Mehdi Abaakouk
h3. configuration hugepages: 
54 7 Mehdi Abaakouk
55 7 Mehdi Abaakouk
* 2M (1024*2k): hugepages=1024 (at runtime: echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
56 7 Mehdi Abaakouk
* 4G (4x1G): default_hugepagesz=1G hugepagesz=1G hugepages=4 (only works at boot time via grub)
57 7 Mehdi Abaakouk
58 7 Mehdi Abaakouk
<pre>
59 7 Mehdi Abaakouk
mkdir /mnt/huge
60 7 Mehdi Abaakouk
mount -t hugetlbfs nodev /mnt/huge
61 7 Mehdi Abaakouk
</pre>
62 7 Mehdi Abaakouk
63 7 Mehdi Abaakouk
h3. Compile and load modules: 
64 7 Mehdi Abaakouk
65 7 Mehdi Abaakouk
_Note: source tools/setup.sh is a helper tools for this but works only with IGB driver not e1000e_
66 7 Mehdi Abaakouk
67 1 Laurent GUERBY
<pre>
68 8 Mehdi Abaakouk
# apt-get install make gcc linux-headers-amd64
69 8 Mehdi Abaakouk
# make config T=x86_64-default-linuxapp-gcc
70 7 Mehdi Abaakouk
# make T=x86_64-default-linuxapp-gcc
71 7 Mehdi Abaakouk
..
72 7 Mehdi Abaakouk
Build complete
73 7 Mehdi Abaakouk
74 7 Mehdi Abaakouk
# modprobe uio  (I think this is not useful)
75 7 Mehdi Abaakouk
# insmod build/kmod/rte_kni.ko (I think this is not useful)
76 7 Mehdi Abaakouk
# insmod build/kmod/igb_uio.ko (I think this is not useful)
77 7 Mehdi Abaakouk
# ./tools/pci_unbind.py --status
78 7 Mehdi Abaakouk
79 7 Mehdi Abaakouk
Network devices using IGB_UIO driver
80 7 Mehdi Abaakouk
====================================
81 7 Mehdi Abaakouk
<none>
82 7 Mehdi Abaakouk
83 7 Mehdi Abaakouk
Network devices using kernel driver
84 7 Mehdi Abaakouk
===================================
85 9 Mehdi Abaakouk
0000:00:19.0 '82579LM Gigabit Network Connection' if=eth1 drv=e1000e unused=<none>
86 9 Mehdi Abaakouk
0000:01:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth6 drv=ixgbe unused=igb_uio *Active*
87 9 Mehdi Abaakouk
0000:01:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection' if=eth7 drv=ixgbe unused=igb_uio
88 9 Mehdi Abaakouk
0000:04:00.0 '82571EB Gigabit Ethernet Controller' if=eth2 drv=e1000e unused=igb_uio *Active*
89 9 Mehdi Abaakouk
0000:04:00.1 '82571EB Gigabit Ethernet Controller' if=eth3 drv=e1000e unused=igb_uio
90 9 Mehdi Abaakouk
0000:05:00.0 '82571EB Gigabit Ethernet Controller' if=eth4 drv=e1000e unused=igb_uio
91 9 Mehdi Abaakouk
0000:05:00.1 '82571EB Gigabit Ethernet Controller' if=eth5 drv=e1000e unused=igb_uio
92 9 Mehdi Abaakouk
0000:06:00.0 'RTL8111/8168B PCI Express Gigabit Ethernet controller' if=eth0 drv=r8169 unused=<none> *Active*
93 1 Laurent GUERBY
94 1 Laurent GUERBY
Other network devices
95 1 Laurent GUERBY
=====================
96 1 Laurent GUERBY
<none>
97 9 Mehdi Abaakouk
</pre>
98 7 Mehdi Abaakouk
99 9 Mehdi Abaakouk
test sur eth7:
100 9 Mehdi Abaakouk
101 9 Mehdi Abaakouk
<pre>
102 9 Mehdi Abaakouk
# ip link set eth7 down
103 9 Mehdi Abaakouk
# ./tools/pci_unbind.py --bind=igb_uio 0000:01:00.1
104 7 Mehdi Abaakouk
</pre>
105 7 Mehdi Abaakouk
106 7 Mehdi Abaakouk
h3. Prepare examples programs:
107 7 Mehdi Abaakouk
108 7 Mehdi Abaakouk
<pre>
109 7 Mehdi Abaakouk
# export RTE_SDK=/root/sileht/dpdk-1.6.0r1
110 7 Mehdi Abaakouk
# export RTE_TARGET=build
111 7 Mehdi Abaakouk
# cd /root/sileht/
112 7 Mehdi Abaakouk
# cp -r $RTE_SDK/examples/helloworld my_rte_app
113 7 Mehdi Abaakouk
# cd my_rte_app
114 7 Mehdi Abaakouk
# make
115 7 Mehdi Abaakouk
</pre>
116 7 Mehdi Abaakouk
117 7 Mehdi Abaakouk
118 7 Mehdi Abaakouk
h3. Tests
119 7 Mehdi Abaakouk
120 7 Mehdi Abaakouk
<pre>
121 1 Laurent GUERBY
</pre>
122 10 Mehdi Abaakouk
123 11 Mehdi Abaakouk
h2. Limitation SPF carte intel:
124 10 Mehdi Abaakouk
125 11 Mehdi Abaakouk
Une fois le module igb_uio changé sur les:
126 10 Mehdi Abaakouk
127 10 Mehdi Abaakouk
<pre>
128 10 Mehdi Abaakouk
01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
129 10 Mehdi Abaakouk
</pre>
130 10 Mehdi Abaakouk
131 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:
132 10 Mehdi Abaakouk
133 10 Mehdi Abaakouk
<pre>
134 10 Mehdi Abaakouk
[  563.069683] ixgbe 0000:01:00.0: failed to load because an unsupported SFP+ or QSFP module type was detected.
135 10 Mehdi Abaakouk
[  563.069786] ixgbe 0000:01:00.0: Reload the driver after installing a supported module.
136 10 Mehdi Abaakouk
</pre>
137 10 Mehdi Abaakouk
138 10 Mehdi Abaakouk
Pour contourner le problème:
139 10 Mehdi Abaakouk
140 10 Mehdi Abaakouk
<pre>
141 10 Mehdi Abaakouk
modprobe ixgbe allow_unsupported_sfp=1 # allow_any_sfp=1 suivant le kernel
142 10 Mehdi Abaakouk
</pre>
143 10 Mehdi Abaakouk
144 10 Mehdi Abaakouk
ou 
145 10 Mehdi Abaakouk
146 1 Laurent GUERBY
<pre>
147 1 Laurent GUERBY
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe_any_sfp.conf
148 1 Laurent GUERBY
update-initramfs -u -k all
149 11 Mehdi Abaakouk
</pre>
150 11 Mehdi Abaakouk
151 11 Mehdi Abaakouk
La carte fonctionnera à nouveau avec le message suivant:
152 11 Mehdi Abaakouk
153 11 Mehdi Abaakouk
<pre>
154 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.
155 10 Mehdi Abaakouk
</pre>
156 12 Laurent GUERBY
157 12 Laurent GUERBY
h2. Atelier 20140705
158 12 Laurent GUERBY
159 12 Laurent GUERBY
TODO