SlideShare a Scribd company logo
1 of 33
Download to read offline
Złam zasady i stwórz wydajny
stos IP przy użyciu DPDK
Żeby złamac zasady najpierw trzeba je
poznać
Maciej Czekaj
Kraków 2014
Plan
1. Po co nam kolejny stos?
1.1. Kiedy kernel nie daje rady?
1.2. Dlaczego Userspace
1.3. Łamiemy zasady
2. Omówienie DPDK
2.1. Jak działa aplikacja DPDK?
2.2. Struktury danych
2.3. Wątki i synchronizacja
2.4. Końcówki sieciowe: PMD i KNI
3. Przykład: Network Fast Path
Premature optimization is the root of all evil.
Donald Knuth
1. Po co nam kolejny stos?
1.1.Kiedy kernel nie daje rady?
1.2.Dlaczego Userspace
1.3.Łamiemy zasady
2. Omówienie DPDK
2.1.Jak działa aplikacja DPDK?
2.2.Struktury danych
2.3.Wątki i synchronizacja
2.4.Końcówki sieciowe: PMD i KNI
3. Przykład: Network Fast Path
• Łacza optyczne >= 10Gb/s
• 10Gb/s = 14,8 Mln 64B pakietów na sekunde
• 67,2 ns na pakiet = 200 cykli dla 3Ghz
• 200 cykli = 1 dostęp do RAM
albo
200 cykli = 5 dostępów do L3*14
• Linux jako router robi ~1M pps :(
Wyzwania infrastruktury w sieci
*Intel Xeon 5500
• Przerwania (zmiana trybu CPU) 50 ns
• Wątki (zmiana kontekstu) - 1000ns
• Duża przepustowość systemu = duże opóźnienie
• Router: ilość pracy ~ ilość pakietów
• Serwer: ilość pracy ~ ilość danych
Czemu linux nie daje rady?
Kernel
User Space
Hardware
NIC
eth
driver
NICNIC
Application
IP Stack
eth
driver
eth
driver
User Space
+ Dedykowana pamięć - HugeTLB
+ Dedykowany rdzeń procesora
+ Nieograniczony polling - małe opóźnienienie
+ Biblioteki i narzędzia
= Bezpośredni dostęp do sprzętu (DMA)
– Brak interakcji z systemem
Co daje Userspace
Kernel Space
Hardware
NIC
APP IP Stack
eth
driver
eth
driver
driver
stack
NIC NIC
• Architektura warstwowa
• Przenośność
• Współdzielenie zasobów
Łamiemy zasady
Inżynier wie, że osiągnął doskonałość nie wtedy,
kiedy nie można nic już dodać, ale kiedy nie można
nic już zabrać.
Antoine de Saint-Exupery
1. Po co nam kolejny stos?
1.1.Kiedy kernel nie daje rady?
1.2.Dlaczego Userspace
1.3.Łamiemy zasady
2. Omówienie DPDK
2.1.Jak działa aplikacja DPDK?
2.2.Struktury danych
2.3.Wątki i synchronizacja
2.4.Końcówki sieciowe: PMD i KNI
3. Przykład: Network Fast Path
User Space
• Prosta biblioteka do obsługi pakietów
• Bezpośredni dostęp do karty sieciowej i DMA
• Zero kopiowania
• Interakcje ze stosem jądra przez moduł KNI
Co to jest DPDK?
Kernel Space
Hardware
DPDK APP
KNI
PMD
DPDK Library
UIO
PMD
IP Stack
eth
driver
eth
driver
NIC NICNIC NIC
Aplikacja DPDK
• Polling
• Run to completion
• Wątki przypięte do rdzeni (lcore)
• Stała alokacja zasobów
• Lokalne dane, lokalna pamięć
Szybko = Prosto
Hardware
PMD
lcore
NIC
PMD
NIC
PMD
lcore
NIC
PMD
NIC
Aplikacja DPDK
while (true) {
packets = poll(pmd)
process(packets)
xmit(packets)
}
Run to completion
Hardware
NIC NIC
PMD
NIC
PMD
NIC
lcore
PMD
lcore
PMD
lcore
Modele pracy
Run-to-Completion
lcore 1:
RX-forward-TX
port port
Pipeline
lcore 1:
RX and classify
port port
lcore 2:
priority TX
1. Po co nam kolejny stos?
1.1.Kiedy kernel nie daje rady?
1.2.Dlaczego Userspace
1.3.Łamiemy zasady
2. Omówienie DPDK
2.1.Jak działa aplikacja DPDK?
2.2.Struktury danych
2.3.Wątki i synchronizacja
2.4.Końcówki sieciowe: PMD i KNI
3. Przykład: Network Fast Path
rte_malloc
Sterta z hugepage’y
Składowe DPDK
rte_eal
Warstwa abstrakcji:
uruchamianie, sterta, wątki,
timery, PCI, log, debug etc.
rte_ring
Bezlockowe kolejki
wskaźników
rte_mempool
Pule pamięci
rte_mbuf
Bufory pakietów/kontrolne.
Używa puli pamięci.
rte_cmdline
Command line interface (CLI)
rte_ether
Poll mode driver
rte_hash
Tablica haszująca
rte_kni
Kernel NIC interface
rte_lpm
Longest prefix match (DIR-24-8)
rte_meter + rte_sched
Planista QoS i WRED
rte_pmd_*
Sterowniki PMD
rte_timer
Timer
rte_net
Protokoły (ARP, IP, TCP, UDP...)
rte_memzone_reserve(name, len, socket, size)
rte_mempool_create(name, n, elt_size, ...)
Zarządzanie pamięcią
pamięć fizyczna ciągły obszar hugepage’y
pamięć aplikacji mempoolring stertawolna
rte_pktmbuf_alloc(mempool)
rte_pktmbuf
rte_mempool wolne
◌ wolne
obiekty
mbufwolne wolne mbuf mbuf mbuf prywatnewolne
headroom tailroomdata
następny lub NULL
next
• Stały rozmiar obiektów
• Minimalny czas alokacji/zwalniania
• Bezpieczne dla wielu wątków (tylko lcore)
• Stosowana do alokacji pakietów
Pula pamięci a tradycyjna sterta
rte_mempool wolne
◌ wolne
obiekty
mbufwolne wolne mbuf mbuf mbuf prywatnywolne
wolne
zajęte
Bufor pakietu: rte_mbuf
1. Zawiera dane lub informacje kontrolne
2. Alokowany z puli (rte_mempool)
3. Nagłówek to metadane (długość, port, flagi)
4. Pakiet może być klonowany (zliczanie referencji)
rte_pktmbuf_alloc(mempool)
rte_pktmbuf
rte_mempool mbuf
◌ wolne
objekty
mbufmbuf mbuf mbuf mbuf mbuf prywatnembuf
headroom tailroomdata
next
następny lub NULL
• Duże ramki Jumbo (> 1500 B)
• Scatter-Gather IO (DMA)
• Można bezkosztowo “doklejać” dane do ramek
• Przydatne w enkapsulacji i łączeniu pakietów
Długie bufory
mbuf mbuf mbuf mbuf
next
next next NULL
• Cykliczna tablica o stałym rozmiarze - FIFO
• Działa wielowątkowo bez locków
• Można zakolejkować wiele obiektów na raz
• Różne wersje, m.in:
• multi-consumer/single-consumer
• multi-producer/single-producer
Kolejka cykliczna: rte_ring
Cons Prod
1. Po co nam kolejny stos?
1.1. Kiedy kernel nie daje rady?
1.2. Dlaczego Userspace
1.3. Łamiemy zasady
2. Omówienie DPDK
2.1. Jak działa aplikacja DPDK?
2.2. Struktury danych
2.3. Wątki i synchronizacja
2.4. Końcówki sieciowe: PMD i KNI
3. Przykład: Network Fast Path
Aplikacja DPDK
lcore
lcore
PMD
Wątki w DPDK
mailbox
(rte_ring)
mailbox
send
mailbox
(rte_ring)
• Komunikacja za pomocą kolejek
• Nieblokująca (polling)
• rte_mempool używa kolejek do synchronizacji
• Preferowany single-producer/single-consumer
PMD PMD PMD
DPDK a wielowątkowość
• Krytyczne dla wydajności funkcje nie są
synchronizowane: hash, LPM...
• Niekrytyczne funkcje są:
malloc, memzone...
• Szybkie i synchronizowane: kolejki i pule
• Libc jest nie zalecane w DPDK! - syscalle lub locki
• Można swtorzyć “wolny” wątek korzystajac z pthread i
komunikować się przez kolejki z lcore’ami
Aplikacja DPDK
lcore lcore
pthread
1. Po co nam kolejny stos?
1.1. Kiedy kernel nie daje rady?
1.2. Dlaczego Userspace
1.3. Łamiemy zasady
2. Omówienie DPDK
2.1. Jak działa aplikacja DPDK?
2.2. Struktury danych
2.3. Wątki i synchronizacja
2.4. Końcówki sieciowe: PMD i KNI
3. Przykład: Network Fast Path
MempoolPMD
Poll Mode Driver
• Lekka abstrakcja urządzenia sieciowego
• Udostępnia rejestry karty sieciowej do userspace
• Transfer (DMA) pakietów
• Zarządzanie buforami
• Obsługa dodatkowych funkcji: MAC, link, statystyki, etc.
Aplikacja
NIC RX
m m m
m m
m
m
m
RX
m
TX TX
m
• Intel 1Gb (igb), 10Gb (ixgbe)
• virtio_net (QEMU)
• ivshmem (QEMU)
• Intel SR-IOV (igb, ixgbe)
• libpcap (tcpdump)
• … (komercyjne)
Rodzaje interfejsów PMD
• Komunikacja ze stosem TCP/IP jądra
• Pseudo-interfejs sieciowy (widoczny w ifconfig)
• Pakiety są kopiowane
1. Interface with the kernel network stack
Kernel Space
rte_kni
Kernel NIC Interface
User Space
Hardware
NIC
DPDK
Poll Mode
Driver
KNI
Driver
stos
TCP/IP
vEth0
lcore 1: KNI port TX
lcore 2: KNI port RX
NIC
vEth0
1. Po co nam kolejny stos?
1.1. Kiedy kernel nie daje rady?
1.2. Dlaczego Userspace
1.3. Łamiemy zasady
2. Omówienie DPDK
2.1. Jak działa aplikacja DPDK?
2.2. Struktury danych
2.3. Wątki i synchronizacja
2.4. Końcówki sieciowe: PMD i KNI
3. Przykład: Network Fast Path
IP: 10.2.0.1
DMAC: A
SMAC: ...
Przykład: Network Fast Path
Fast Path
(aplikacja DPDK)
Port BPort A
Kernel (slow path)
Next
hop
10.1.0.1/16 10.2.0.1/16
IP: 10.2.0.1
SMAC: B
DMAC: NH
input(packet) {
flow = (src_ip,src_port,dst_ip,dst_port,proto)
out_intf = routing_tbl.lookup(flow)
if (! out_intf)
kernel_intf.send(packet)
else
out_intf.send(packet)
}
output(out_intf, packet) {
flow = (src_ip,src_port,dst_ip,dst_port,proto)
routing_tbl.insert(flow, out_intf)
out_intf.send(packet)
}
Algorytm Network Fast Path
TX
RX
Architektura Routera
lcore 1
1 kolejka RX
1 kolejka TX na port
lcore 2
1 kolejka RX
1 kolejka TX na port
lcore 4
1 kolejka RX
1 kolejka TX na port
...
port 0 q1 q2 q4... port 1 q1 q2 q4... port 2 q1 q2 q4...
port 0 q1 q2 q4... port 1 q1 q2 q4... port 2 q1 q2 q4...
TX
RX
Architektura Routera
lcore 1
1 kolejka RX
1 kolejka TX na port
lcore 2
1 kolejka RX
1 kolejka TX na port
port 0 q1 q2 q4... port 1 q1 q2 q4...
port 1 q1 q2 q4...port 0 q1 q2 q4...
• www.dpdk.org
• Prezentacja Intela
http://www.intel.com/content/dam/www/public/us/en/documents/presentation/
dpdk-packet-processing-ia-overview-presentation.pdf
• What Every Programmer Should Know About Memory
http://www.akkadia.org/drepper/cpumemory.pdf
• How long does it take to make a context switch?
http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html
Źródła
Pytania?

More Related Content

What's hot

Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Redge Technologies
 
LXC - kontener pingwinów
LXC - kontener pingwinówLXC - kontener pingwinów
LXC - kontener pingwinówgnosek
 
100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?Redge Technologies
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL versionMaciej Lasyk
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierciDivante
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Semihalf
 
Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.Semihalf
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITRedge Technologies
 
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...PROIDEA
 
PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych
PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych
PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych PROIDEA
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEA
 
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PROIDEA
 
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PROIDEA
 
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. allegro.tech
 
PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?
PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?
PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?PROIDEA
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatykaOnetIT
 

What's hot (19)

Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
 
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
 
LXC - kontener pingwinów
LXC - kontener pingwinówLXC - kontener pingwinów
LXC - kontener pingwinów
 
100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierci
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.
 
Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
 
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
 
PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych
PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych
PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
 
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
 
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
 
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
 
PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?
PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?
PLNOG 17 - Robert Ślaski - Jak nie zostać bezrobotnym sieciowcem?
 
Noc informatyka
Noc informatykaNoc informatyka
Noc informatyka
 

Similar to Złam zasady i stwórz wydajny stos IP przy użyciu DPDK

Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Semihalf
 
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...PROIDEA
 
PLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet ModułyPLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet ModułyPROIDEA
 
PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...
PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...
PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...PROIDEA
 
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...PROIDEA
 
PLNOG 6: Bartłomiej Anszperger - MPLS
PLNOG 6: Bartłomiej Anszperger - MPLSPLNOG 6: Bartłomiej Anszperger - MPLS
PLNOG 6: Bartłomiej Anszperger - MPLSPROIDEA
 
PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej
PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej
PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej PROIDEA
 
Grzegorz Paszka - Nasza droga do 10GE
Grzegorz Paszka -  Nasza droga do 10GEGrzegorz Paszka -  Nasza droga do 10GE
Grzegorz Paszka - Nasza droga do 10GEPROIDEA
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...PROIDEA
 
PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...
PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...
PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...PROIDEA
 
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój PROIDEA
 
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...PROIDEA
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
 
PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura?
PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura? PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura?
PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura? PROIDEA
 
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PROIDEA
 
06 Bluetooth, zaprojektowany aby "zjednoczyć"
06 Bluetooth, zaprojektowany aby "zjednoczyć"06 Bluetooth, zaprojektowany aby "zjednoczyć"
06 Bluetooth, zaprojektowany aby "zjednoczyć"MarcinStachniuk
 
PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6
PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6
PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6PROIDEA
 
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...PROIDEA
 

Similar to Złam zasady i stwórz wydajny stos IP przy użyciu DPDK (20)

Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
 
PLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet ModułyPLNOG 4: Paweł Andrejas - Onet Moduły
PLNOG 4: Paweł Andrejas - Onet Moduły
 
Urządzenia intersieci tworzące Internet
Urządzenia intersieci tworzące InternetUrządzenia intersieci tworzące Internet
Urządzenia intersieci tworzące Internet
 
PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...
PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...
PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...
 
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
 
PLNOG 6: Bartłomiej Anszperger - MPLS
PLNOG 6: Bartłomiej Anszperger - MPLSPLNOG 6: Bartłomiej Anszperger - MPLS
PLNOG 6: Bartłomiej Anszperger - MPLS
 
PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej
PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej
PLNOG 7: Bartłomiej Anszperger - MPLS - trochę głębiej
 
Grzegorz Paszka - Nasza droga do 10GE
Grzegorz Paszka -  Nasza droga do 10GEGrzegorz Paszka -  Nasza droga do 10GE
Grzegorz Paszka - Nasza droga do 10GE
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
 
PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...
PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...
PLNOG 7: Marcin Aronowski - MPLS dla "tradycyjnego" operatora telekomunikacyj...
 
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
 
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r...
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
 
PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura?
PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura? PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura?
PLNOG 9: Maciej Nabożny, Miłosz Zdybał - Jak powstaje chmura?
 
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
 
06 Bluetooth, zaprojektowany aby "zjednoczyć"
06 Bluetooth, zaprojektowany aby "zjednoczyć"06 Bluetooth, zaprojektowany aby "zjednoczyć"
06 Bluetooth, zaprojektowany aby "zjednoczyć"
 
PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6
PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6
PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6
 
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
 

More from Semihalf

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Semihalf
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Semihalf
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
 
Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Semihalf
 
Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Semihalf
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Semihalf
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Semihalf
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!Semihalf
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Semihalf
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Semihalf
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
 

More from Semihalf (20)

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02
 
Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.
 

Złam zasady i stwórz wydajny stos IP przy użyciu DPDK

  • 1. Złam zasady i stwórz wydajny stos IP przy użyciu DPDK Żeby złamac zasady najpierw trzeba je poznać Maciej Czekaj Kraków 2014
  • 2. Plan 1. Po co nam kolejny stos? 1.1. Kiedy kernel nie daje rady? 1.2. Dlaczego Userspace 1.3. Łamiemy zasady 2. Omówienie DPDK 2.1. Jak działa aplikacja DPDK? 2.2. Struktury danych 2.3. Wątki i synchronizacja 2.4. Końcówki sieciowe: PMD i KNI 3. Przykład: Network Fast Path
  • 3. Premature optimization is the root of all evil. Donald Knuth 1. Po co nam kolejny stos? 1.1.Kiedy kernel nie daje rady? 1.2.Dlaczego Userspace 1.3.Łamiemy zasady 2. Omówienie DPDK 2.1.Jak działa aplikacja DPDK? 2.2.Struktury danych 2.3.Wątki i synchronizacja 2.4.Końcówki sieciowe: PMD i KNI 3. Przykład: Network Fast Path
  • 4. • Łacza optyczne >= 10Gb/s • 10Gb/s = 14,8 Mln 64B pakietów na sekunde • 67,2 ns na pakiet = 200 cykli dla 3Ghz • 200 cykli = 1 dostęp do RAM albo 200 cykli = 5 dostępów do L3*14 • Linux jako router robi ~1M pps :( Wyzwania infrastruktury w sieci *Intel Xeon 5500
  • 5. • Przerwania (zmiana trybu CPU) 50 ns • Wątki (zmiana kontekstu) - 1000ns • Duża przepustowość systemu = duże opóźnienie • Router: ilość pracy ~ ilość pakietów • Serwer: ilość pracy ~ ilość danych Czemu linux nie daje rady? Kernel User Space Hardware NIC eth driver NICNIC Application IP Stack eth driver eth driver
  • 6. User Space + Dedykowana pamięć - HugeTLB + Dedykowany rdzeń procesora + Nieograniczony polling - małe opóźnienienie + Biblioteki i narzędzia = Bezpośredni dostęp do sprzętu (DMA) – Brak interakcji z systemem Co daje Userspace Kernel Space Hardware NIC APP IP Stack eth driver eth driver driver stack NIC NIC
  • 7. • Architektura warstwowa • Przenośność • Współdzielenie zasobów Łamiemy zasady
  • 8. Inżynier wie, że osiągnął doskonałość nie wtedy, kiedy nie można nic już dodać, ale kiedy nie można nic już zabrać. Antoine de Saint-Exupery 1. Po co nam kolejny stos? 1.1.Kiedy kernel nie daje rady? 1.2.Dlaczego Userspace 1.3.Łamiemy zasady 2. Omówienie DPDK 2.1.Jak działa aplikacja DPDK? 2.2.Struktury danych 2.3.Wątki i synchronizacja 2.4.Końcówki sieciowe: PMD i KNI 3. Przykład: Network Fast Path
  • 9. User Space • Prosta biblioteka do obsługi pakietów • Bezpośredni dostęp do karty sieciowej i DMA • Zero kopiowania • Interakcje ze stosem jądra przez moduł KNI Co to jest DPDK? Kernel Space Hardware DPDK APP KNI PMD DPDK Library UIO PMD IP Stack eth driver eth driver NIC NICNIC NIC
  • 10. Aplikacja DPDK • Polling • Run to completion • Wątki przypięte do rdzeni (lcore) • Stała alokacja zasobów • Lokalne dane, lokalna pamięć Szybko = Prosto Hardware PMD lcore NIC PMD NIC PMD lcore NIC PMD NIC
  • 11. Aplikacja DPDK while (true) { packets = poll(pmd) process(packets) xmit(packets) } Run to completion Hardware NIC NIC PMD NIC PMD NIC lcore PMD lcore PMD lcore
  • 12. Modele pracy Run-to-Completion lcore 1: RX-forward-TX port port Pipeline lcore 1: RX and classify port port lcore 2: priority TX
  • 13. 1. Po co nam kolejny stos? 1.1.Kiedy kernel nie daje rady? 1.2.Dlaczego Userspace 1.3.Łamiemy zasady 2. Omówienie DPDK 2.1.Jak działa aplikacja DPDK? 2.2.Struktury danych 2.3.Wątki i synchronizacja 2.4.Końcówki sieciowe: PMD i KNI 3. Przykład: Network Fast Path
  • 14. rte_malloc Sterta z hugepage’y Składowe DPDK rte_eal Warstwa abstrakcji: uruchamianie, sterta, wątki, timery, PCI, log, debug etc. rte_ring Bezlockowe kolejki wskaźników rte_mempool Pule pamięci rte_mbuf Bufory pakietów/kontrolne. Używa puli pamięci. rte_cmdline Command line interface (CLI) rte_ether Poll mode driver rte_hash Tablica haszująca rte_kni Kernel NIC interface rte_lpm Longest prefix match (DIR-24-8) rte_meter + rte_sched Planista QoS i WRED rte_pmd_* Sterowniki PMD rte_timer Timer rte_net Protokoły (ARP, IP, TCP, UDP...)
  • 15. rte_memzone_reserve(name, len, socket, size) rte_mempool_create(name, n, elt_size, ...) Zarządzanie pamięcią pamięć fizyczna ciągły obszar hugepage’y pamięć aplikacji mempoolring stertawolna rte_pktmbuf_alloc(mempool) rte_pktmbuf rte_mempool wolne ◌ wolne obiekty mbufwolne wolne mbuf mbuf mbuf prywatnewolne headroom tailroomdata następny lub NULL next
  • 16. • Stały rozmiar obiektów • Minimalny czas alokacji/zwalniania • Bezpieczne dla wielu wątków (tylko lcore) • Stosowana do alokacji pakietów Pula pamięci a tradycyjna sterta rte_mempool wolne ◌ wolne obiekty mbufwolne wolne mbuf mbuf mbuf prywatnywolne wolne zajęte
  • 17. Bufor pakietu: rte_mbuf 1. Zawiera dane lub informacje kontrolne 2. Alokowany z puli (rte_mempool) 3. Nagłówek to metadane (długość, port, flagi) 4. Pakiet może być klonowany (zliczanie referencji) rte_pktmbuf_alloc(mempool) rte_pktmbuf rte_mempool mbuf ◌ wolne objekty mbufmbuf mbuf mbuf mbuf mbuf prywatnembuf headroom tailroomdata next następny lub NULL
  • 18. • Duże ramki Jumbo (> 1500 B) • Scatter-Gather IO (DMA) • Można bezkosztowo “doklejać” dane do ramek • Przydatne w enkapsulacji i łączeniu pakietów Długie bufory mbuf mbuf mbuf mbuf next next next NULL
  • 19. • Cykliczna tablica o stałym rozmiarze - FIFO • Działa wielowątkowo bez locków • Można zakolejkować wiele obiektów na raz • Różne wersje, m.in: • multi-consumer/single-consumer • multi-producer/single-producer Kolejka cykliczna: rte_ring Cons Prod
  • 20. 1. Po co nam kolejny stos? 1.1. Kiedy kernel nie daje rady? 1.2. Dlaczego Userspace 1.3. Łamiemy zasady 2. Omówienie DPDK 2.1. Jak działa aplikacja DPDK? 2.2. Struktury danych 2.3. Wątki i synchronizacja 2.4. Końcówki sieciowe: PMD i KNI 3. Przykład: Network Fast Path
  • 21. Aplikacja DPDK lcore lcore PMD Wątki w DPDK mailbox (rte_ring) mailbox send mailbox (rte_ring) • Komunikacja za pomocą kolejek • Nieblokująca (polling) • rte_mempool używa kolejek do synchronizacji • Preferowany single-producer/single-consumer PMD PMD PMD
  • 22. DPDK a wielowątkowość • Krytyczne dla wydajności funkcje nie są synchronizowane: hash, LPM... • Niekrytyczne funkcje są: malloc, memzone... • Szybkie i synchronizowane: kolejki i pule • Libc jest nie zalecane w DPDK! - syscalle lub locki • Można swtorzyć “wolny” wątek korzystajac z pthread i komunikować się przez kolejki z lcore’ami Aplikacja DPDK lcore lcore pthread
  • 23. 1. Po co nam kolejny stos? 1.1. Kiedy kernel nie daje rady? 1.2. Dlaczego Userspace 1.3. Łamiemy zasady 2. Omówienie DPDK 2.1. Jak działa aplikacja DPDK? 2.2. Struktury danych 2.3. Wątki i synchronizacja 2.4. Końcówki sieciowe: PMD i KNI 3. Przykład: Network Fast Path
  • 24. MempoolPMD Poll Mode Driver • Lekka abstrakcja urządzenia sieciowego • Udostępnia rejestry karty sieciowej do userspace • Transfer (DMA) pakietów • Zarządzanie buforami • Obsługa dodatkowych funkcji: MAC, link, statystyki, etc. Aplikacja NIC RX m m m m m m m m RX m TX TX m
  • 25. • Intel 1Gb (igb), 10Gb (ixgbe) • virtio_net (QEMU) • ivshmem (QEMU) • Intel SR-IOV (igb, ixgbe) • libpcap (tcpdump) • … (komercyjne) Rodzaje interfejsów PMD
  • 26. • Komunikacja ze stosem TCP/IP jądra • Pseudo-interfejs sieciowy (widoczny w ifconfig) • Pakiety są kopiowane 1. Interface with the kernel network stack Kernel Space rte_kni Kernel NIC Interface User Space Hardware NIC DPDK Poll Mode Driver KNI Driver stos TCP/IP vEth0 lcore 1: KNI port TX lcore 2: KNI port RX NIC vEth0
  • 27. 1. Po co nam kolejny stos? 1.1. Kiedy kernel nie daje rady? 1.2. Dlaczego Userspace 1.3. Łamiemy zasady 2. Omówienie DPDK 2.1. Jak działa aplikacja DPDK? 2.2. Struktury danych 2.3. Wątki i synchronizacja 2.4. Końcówki sieciowe: PMD i KNI 3. Przykład: Network Fast Path
  • 28. IP: 10.2.0.1 DMAC: A SMAC: ... Przykład: Network Fast Path Fast Path (aplikacja DPDK) Port BPort A Kernel (slow path) Next hop 10.1.0.1/16 10.2.0.1/16 IP: 10.2.0.1 SMAC: B DMAC: NH
  • 29. input(packet) { flow = (src_ip,src_port,dst_ip,dst_port,proto) out_intf = routing_tbl.lookup(flow) if (! out_intf) kernel_intf.send(packet) else out_intf.send(packet) } output(out_intf, packet) { flow = (src_ip,src_port,dst_ip,dst_port,proto) routing_tbl.insert(flow, out_intf) out_intf.send(packet) } Algorytm Network Fast Path
  • 30. TX RX Architektura Routera lcore 1 1 kolejka RX 1 kolejka TX na port lcore 2 1 kolejka RX 1 kolejka TX na port lcore 4 1 kolejka RX 1 kolejka TX na port ... port 0 q1 q2 q4... port 1 q1 q2 q4... port 2 q1 q2 q4... port 0 q1 q2 q4... port 1 q1 q2 q4... port 2 q1 q2 q4...
  • 31. TX RX Architektura Routera lcore 1 1 kolejka RX 1 kolejka TX na port lcore 2 1 kolejka RX 1 kolejka TX na port port 0 q1 q2 q4... port 1 q1 q2 q4... port 1 q1 q2 q4...port 0 q1 q2 q4...
  • 32. • www.dpdk.org • Prezentacja Intela http://www.intel.com/content/dam/www/public/us/en/documents/presentation/ dpdk-packet-processing-ia-overview-presentation.pdf • What Every Programmer Should Know About Memory http://www.akkadia.org/drepper/cpumemory.pdf • How long does it take to make a context switch? http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html Źródła