SlideShare a Scribd company logo
Stosy sieciowe w przestrzeni użytkownika
Maciej Czekaj
Kto mówi?
● Inżynier systemów wbudowanych
● Linux/ARM
● Sieci
● DPDK
● ODP
● OFP
Plan
1. Co to jest stos sieciowy?
2. Ewolucja podejścia do oprogr. sieciowego
○ zmiany w architekturze syst. komputerowych
○ nowe paradygmaty programowania sieciowego
3. Wprowadzenie do aplikacji typu Dataplane
4. Przykładowy stos jako program użytkownika
○ OFP
5. Wyzwania i pułapki czekające na twórców stosów sieciowych
Plan
1. Co to jest stos sieciowy?
2. Ewolucja podejścia do oprogr. sieciowego
○ zmiany w architekturze syst. komputerowych
○ nowe paradygmaty programowania sieciowego
3. Wprowadzenie do aplikacji typu Dataplane
4. Przykładowy stos jako program użytkownika
○ OFP
5. Wyzwania i pułapki czekające na twórców stosów sieciowych
Zagadka #1
● Ile pakietów na sekundę musi przetworzyć system podł. do sieci 10Gb/s?
● Jaki budżet czasowy na 1 ramkę?
● Ramka = preambuła 8B + IFG 12B + ramka L2 min 60B + FCS 4B
● min ramka = 8+12+60+4 = 84B
○ f = 10e9/84*8 ~= 14,8 Mpps
○ t = 1/f ~= 60ns!
● IP MTU = 1500 => 8 + 12 + 14 (L2 hdr) + 1500 + 4 (FCS) = 1536 B
○ f = 10e9/1536*8 ~= 800Kpps
○ t ~= 1,2 us
Stos sieciowy - opis warstw
*http://www.slideshare.net/anil_pugalia/linux-network-management
Stos sieciowy - opis warstw
*http://www.slideshare.net/anil_pugalia/linux-network-managementc
5-7 Aplikacja
3-4 Jądro
2 Sterownik
1 H/W
Stos sieciowy - opis funkcjonalny
*https://en.wikipedia.org/wiki/Netfilter#/media/File:Netfilter-packet-flow.svg
Plan
1. Co to jest stos sieciowy?
2. Ewolucja podejścia do oprogr. sieciowego
○ zmiany w architekturze syst. komputerowych
○ nowe paradygmaty programowania sieciowego
3. Wprowadzenie do aplikacji typu Dataplane
4. Przykładowy stos jako program użytkownika
○ OFP
5. Wyzwania i pułapki czekające na twórców stosów sieciowych
Rozwój systemów komp. nie jest równomierny
*http://www.techdesignforums.com/practice/files/2013/02/tdf-snps-ARMcc-feb13-fig1lg.jpgc
Procesor i sieć
*http://queue.acm.org/detail.cfm?id=2874238
Wydajność stosu Linuxa
Kernel
User Space
Hardware
NIC
eth
driver
NICNIC
Application
IP Stack
eth
driver
eth
driver
operacja czas (ns)
dostęp do L3 10
dostęp do ram 100
syscall 100
przeł. kontekstu 1000
Wnioski z trendów technologicznych
● Pasmo/1 CPU ~ stałe
● Skalowanie z ilością CPU (GPU, etc)
● Dedykowany krzem do:
○ grafiki
○ kryptografii
○ sieci
● Inwestycja w specjalizowany software
○ zero-copy
○ jednofunkcyjny
○ bazujący na możliwościach konkretnego sprzętu (brak abstrakcji, warstw itd)
Plan
1. Co to jest stos sieciowy?
2. Ewolucja podejścia do oprogr. sieciowego
○ zmiany w architekturze syst. komputerowych
○ nowe paradygmaty programowania sieciowego
3. Wprowadzenie do aplikacji typu Dataplane
4. Przykładowy stos jako program użytkownika
○ OFP
5. Wyzwania i pułapki czekające na twórców stosów sieciowych
Biblioteki i aplikacje Dataplane - co je wyróżnia
● Programowanie blisko sprzętu (jak firmware/bare metal)... ale w Linuksie
● Wszystko od zera:
○ nowe paradygmaty programowania
○ specjalne zarządzanie rdzeniami CPU
○ specjalne zarządzanie pamięcią
Aplikacja Dataplane
Hardware
DRV
Wątek Dataplane
na CPU
NIC
DRV
NIC
DRV
Wątek Dataplane
na CPU
NIC
DRV
NIC
Biblioteki i aplikacje Dataplane - wady
● Brak protokołów - trzeba je samemu realizować
● Dla każdego urządzenia sieciowego - nowy sterownik
● Trudności w:
○ zarządzaniu zużyciem energii
○ współdzieleniu zasobów systemu z innymi aplikacjami
○ w tym współdzieleniu dostępu do sieci
● Przykład:
○ brak ifconfig, tcpdump, etc.,
○ wątek Dataplane zawsze zużywa 100% CPU, net, jak nic nie robi*
Polling
get_packets(pkts [], n) {
avail = read_hw_regs(HEAD, TAIL); // read packet count from h/w
n = min(n, avail);
for (i=0; i < avail; i++)
read_hw_desc(HEAD+i, pkts[i]) // read packet descriptor from DMA ring
write_hw_reg(TAIL, avail); // signal received packet to h/w
return avail;
}
Run to completion
while (true) {
nb_rx = get_packets(pkts, burst_size)
nb_proc = process(pkts, nb_rx)
nb_tx = xmit(pkts, nb_proc)
for (i = nb_tx; i < nb_proc; i++)
free(pkts[i]);
}
Open Source biblioteki Dataplane
● DPDK
○ Największa społeczność
○ Platforma Intel, ARM, Power8
○ Duża ilość sterowników
● ODP
○ Konsorcjum pod Linaro Network Group
○ Platforma Octeon, ARM, Intel, NXP
○ Publiczne API + prywatne implementacje
● VPP
○ Środowisko tworzenia aplikacji Dataplane z komponentów
○ Współpracuje z DPDK ale też z innymi (nie z ODP)
Dataplane Development Kit
User Space Kernel Space
Hardware
DPDK APP
KNI
PMD
DPDK Library
UIO
PMD
IP Stack
eth driver eth driver
NIC NICNIC NIC
DPDK - komponenty
● Core - zarządzanie pamięcią i
procesorem
● Platforma - łączność z OS
● Ethdev - abstrakcja urz. sieciowego
● PMD - Poll Mode Driver
● Crypto - sterowniki kryptograficzne
● Classify, Qos,... - dodatkowe biblioteki
*http://vmpro.at/2014/08/18/paper-intel-dpdk-with-vmware-vsphere/
Open Data Plane
*http://docs.opendataplane.org/snapshots/odp-publish/generic/usr_html/master/latest/linux-generic/output/users-guide.html
ODP - architektura aplikacji
*http://docs.opendataplane.org/snapshots/odp-publish/generic/usr_html/master/latest/linux-generic/output/users-guide.html
Plan
1. Co to jest stos sieciowy?
2. Ewolucja podejścia do oprogr. sieciowego
○ zmiany w architekturze syst. komputerowych
○ nowe paradygmaty programowania sieciowego
3. Wprowadzenie do aplikacji typu Dataplane
4. Przykładowy stos jako program użytkownika
○ OFP
5. Wyzwania i pułapki czekające na twórców stosów sieciowych
Stosy sieciowe Open Source
● lwIP
● mTCP
● OFP
● NetBSD Rump Kernel
● TLDK - tylko UDP (TCP w trakcie konstrukcji)
OFP - organizacja projektu
● Licencja BSD
● Kod przeniesiony z FreeBSD
● Główni uczestnicy: Nokia, Enea, ARM
○ + Cavium, NXP, …
● Bazuje na ODP
● Ścisła współpraca z Linaro
● http://www.openfastpath.org
Architektura OFP
*http://www.openfastpath.org/index.php/service/technicaloverview/
OFP - główne funkcje
● L4: UDP, TCP, ICMP
● L3:
○ ARP/NDP
○ IPv6, IPv4 routing
○ fragmentacja IPv4
○ tunele GRE, VXLAN dla IPv4
○ IGMP, IP mutlicast
● Obsługa poprzez linuksowy ifconfig
● Współpraca z Linuksem przez TAP
● Zero-copy
● Binarny zamiennik BSD sockets (z kopiowaniem)
OFP - komponenty
*http://www.openfastpath.org/index.php/service/technicaloverview/
FastPath / SlowPath
Fast Path
(aplikacja OFP)
Port BPort A
Kernel (slow path)
10.1.0.1/16 10.2.0.1/16
IP:*/TCP:22 (SSH)
TCP:80 (HTTP)
IPv4
TCP
Routing
fp0 (A) fp1 (B)
● Gdzie pójdzie pakiet? (dst IP/
dst port)
○ 10.1.0.1/TCP:22
○ 10.2.0.4/TCP:80
○ 10.1.0.2/TCP:22
○ 10.2.0.1/TCP:80
○ 10.2.0.1/UDP:80
Ścieżka odbiorcza
Ścieżka nadawcza
Skalowanie na wiele rdzeni
Plan
1. Co to jest stos sieciowy?
2. Ewolucja podejścia do oprogr. sieciowego
○ zmiany w architekturze syst. komputerowych
○ nowe paradygmaty programowania sieciowego
3. Wprowadzenie do aplikacji typu Dataplane
4. Przykładowy stos jako program użytkownika
○ OFP
5. Wyzwania i pułapki czekające na twórców stosów sieciowych
Dataplane + stary kod = :<
● Stary kod nie zadziała szybciej tylko dlatego, że teraz nazywa się Dataplane
11.54% udp_fwd_socket [ofp] odp_rwlock_read_lock
10.73% udp_fwd_socket [ofp] odp_rwlock_read_unlock
5.43% udp_fwd_socket [ofp] ofp_in_pcblookup
4.94% udp_fwd_socket [ofp] udp_send
4.79% udp_fwd_socket [ofp] ofp_ip_output
4.26% udp_fwd_socket [drv] nicvf_qset_cq_handler
3.83% udp_fwd_socket [ofp] ofp_udp_input
3.82% udp_fwd_socket [ofp] ofp_in_pcbrele_rlocked
3.70% udp_fwd_socket [ofp] ofp_ip_output_add_eth
2.68% udp_fwd_socket [drv] nicvf_xmit
2.63% udp_fwd_socket [ofp] ofp_ipv4_processing
2.57% udp_fwd_socket [ofp] ofp_packet_input
2.44% udp_fwd_socket [ofp] ofp_eth_vlan_processing
1.90% udp_fwd_socket [ofp] ofp_ipv4_lookup_mac
1.86% udp_fwd_socket [ofp] in_pcblookup_hash_locked.isra.2
1.84% udp_fwd_socket [ofp] ofp_get_packet_hooks
1.76% udp_fwd_socket [ofp] ofp_udp_pkt_sendto
1.73% udp_fwd_socket [app]ofp_udp_packet_parse
Dataplane + stary kod = :<
● Stary kod nie zadziała szybciej tylko dlatego, że teraz nazywa się Dataplane
children self
- 92.49% 2.33% udp_fwd_socket udp_fwd_socket [.] ofp_packet_input
- 97.48% ofp_packet_input
- 93.18% ofp_ipv4_processing
- 83.57% ofp_udp_input
+ 43.33% udp_append.isra.1
- 19.20% ofp_in_pcblookup
6.14% odp_rwlock_read_lock
4.30% ofp_in_pcbrele_rlocked
2.01% in_pcblookup_hash_locked.isra.2
6.37% odp_rwlock_read_lock
5.66% odp_rwlock_read_unlock
Zasady wydajnych programów
● Lokalność
○ danych
○ kodu
○ wątków
● Brak niepotrzebnych abstrakcji
○ nie da się zrobić BSD sockets bez kopiowania danych!
● Run-to-completion
● Hurtowe przetwarzanie danych (SIMD, itd.)
Dziękuję!
Latencja a pasmo
● Przepustowość ~ 2x
● Latencja ~ 1.4x
*https://www.ll.mit.edu/HPEC/agendas/proc04/invited/patterson_keynote.pc

More Related Content

What's hot

100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
Redge Technologies
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronikariklaunim
 
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
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
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
 
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
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
Semihalf
 
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
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PROIDEA
 
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
Semihalf
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
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
 
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PROIDEA
 
Interfejs RS232C
Interfejs RS232CInterfejs RS232C
Interfejs RS232C
rlutowsk
 
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
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
 
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
 
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PROIDEA
 

What's hot (20)

100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
Barcamp 08/06/2010
Barcamp 08/06/2010Barcamp 08/06/2010
Barcamp 08/06/2010
 
DTrace
DTraceDTrace
DTrace
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronika
 
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?
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
 
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?
 
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...
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
 
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
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
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.
 
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
 
Interfejs RS232C
Interfejs RS232CInterfejs RS232C
Interfejs RS232C
 
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
 
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...
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
 
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
 

Similar to Stosy sieciowe w przestrzeni użytkownika.

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
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PROIDEA
 
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
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
Kamil Grabowski
 
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 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 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
PROIDEA
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2arkulik
 
It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
Przemyslaw Wroblewski
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
3camp
 
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
 
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejŁukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
PROIDEA
 
PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?
PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?
PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?
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
 
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
PROIDEA
 
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PROIDEA
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitchmichalpodoski
 

Similar to Stosy sieciowe w przestrzeni użytkownika. (20)

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.
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
 
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...
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
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 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 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
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2
 
It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 
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ą...
 
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejŁukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
 
PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?
PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?
PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci?
 
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...
 
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 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu...
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
 

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
 
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
Semihalf
 
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
Semihalf
 
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
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. S07E02
Semihalf
 
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
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
Semihalf
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
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
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.
Semihalf
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
Semihalf
 

More from Semihalf (15)

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
 
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 - 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
 
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.
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
 
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ć.
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
 

Stosy sieciowe w przestrzeni użytkownika.

  • 1.
  • 2. Stosy sieciowe w przestrzeni użytkownika Maciej Czekaj
  • 3. Kto mówi? ● Inżynier systemów wbudowanych ● Linux/ARM ● Sieci ● DPDK ● ODP ● OFP
  • 4. Plan 1. Co to jest stos sieciowy? 2. Ewolucja podejścia do oprogr. sieciowego ○ zmiany w architekturze syst. komputerowych ○ nowe paradygmaty programowania sieciowego 3. Wprowadzenie do aplikacji typu Dataplane 4. Przykładowy stos jako program użytkownika ○ OFP 5. Wyzwania i pułapki czekające na twórców stosów sieciowych
  • 5. Plan 1. Co to jest stos sieciowy? 2. Ewolucja podejścia do oprogr. sieciowego ○ zmiany w architekturze syst. komputerowych ○ nowe paradygmaty programowania sieciowego 3. Wprowadzenie do aplikacji typu Dataplane 4. Przykładowy stos jako program użytkownika ○ OFP 5. Wyzwania i pułapki czekające na twórców stosów sieciowych
  • 6. Zagadka #1 ● Ile pakietów na sekundę musi przetworzyć system podł. do sieci 10Gb/s? ● Jaki budżet czasowy na 1 ramkę? ● Ramka = preambuła 8B + IFG 12B + ramka L2 min 60B + FCS 4B ● min ramka = 8+12+60+4 = 84B ○ f = 10e9/84*8 ~= 14,8 Mpps ○ t = 1/f ~= 60ns! ● IP MTU = 1500 => 8 + 12 + 14 (L2 hdr) + 1500 + 4 (FCS) = 1536 B ○ f = 10e9/1536*8 ~= 800Kpps ○ t ~= 1,2 us
  • 7. Stos sieciowy - opis warstw *http://www.slideshare.net/anil_pugalia/linux-network-management
  • 8. Stos sieciowy - opis warstw *http://www.slideshare.net/anil_pugalia/linux-network-managementc 5-7 Aplikacja 3-4 Jądro 2 Sterownik 1 H/W
  • 9. Stos sieciowy - opis funkcjonalny *https://en.wikipedia.org/wiki/Netfilter#/media/File:Netfilter-packet-flow.svg
  • 10. Plan 1. Co to jest stos sieciowy? 2. Ewolucja podejścia do oprogr. sieciowego ○ zmiany w architekturze syst. komputerowych ○ nowe paradygmaty programowania sieciowego 3. Wprowadzenie do aplikacji typu Dataplane 4. Przykładowy stos jako program użytkownika ○ OFP 5. Wyzwania i pułapki czekające na twórców stosów sieciowych
  • 11. Rozwój systemów komp. nie jest równomierny *http://www.techdesignforums.com/practice/files/2013/02/tdf-snps-ARMcc-feb13-fig1lg.jpgc
  • 13. Wydajność stosu Linuxa Kernel User Space Hardware NIC eth driver NICNIC Application IP Stack eth driver eth driver operacja czas (ns) dostęp do L3 10 dostęp do ram 100 syscall 100 przeł. kontekstu 1000
  • 14. Wnioski z trendów technologicznych ● Pasmo/1 CPU ~ stałe ● Skalowanie z ilością CPU (GPU, etc) ● Dedykowany krzem do: ○ grafiki ○ kryptografii ○ sieci ● Inwestycja w specjalizowany software ○ zero-copy ○ jednofunkcyjny ○ bazujący na możliwościach konkretnego sprzętu (brak abstrakcji, warstw itd)
  • 15. Plan 1. Co to jest stos sieciowy? 2. Ewolucja podejścia do oprogr. sieciowego ○ zmiany w architekturze syst. komputerowych ○ nowe paradygmaty programowania sieciowego 3. Wprowadzenie do aplikacji typu Dataplane 4. Przykładowy stos jako program użytkownika ○ OFP 5. Wyzwania i pułapki czekające na twórców stosów sieciowych
  • 16. Biblioteki i aplikacje Dataplane - co je wyróżnia ● Programowanie blisko sprzętu (jak firmware/bare metal)... ale w Linuksie ● Wszystko od zera: ○ nowe paradygmaty programowania ○ specjalne zarządzanie rdzeniami CPU ○ specjalne zarządzanie pamięcią Aplikacja Dataplane Hardware DRV Wątek Dataplane na CPU NIC DRV NIC DRV Wątek Dataplane na CPU NIC DRV NIC
  • 17. Biblioteki i aplikacje Dataplane - wady ● Brak protokołów - trzeba je samemu realizować ● Dla każdego urządzenia sieciowego - nowy sterownik ● Trudności w: ○ zarządzaniu zużyciem energii ○ współdzieleniu zasobów systemu z innymi aplikacjami ○ w tym współdzieleniu dostępu do sieci ● Przykład: ○ brak ifconfig, tcpdump, etc., ○ wątek Dataplane zawsze zużywa 100% CPU, net, jak nic nie robi*
  • 18. Polling get_packets(pkts [], n) { avail = read_hw_regs(HEAD, TAIL); // read packet count from h/w n = min(n, avail); for (i=0; i < avail; i++) read_hw_desc(HEAD+i, pkts[i]) // read packet descriptor from DMA ring write_hw_reg(TAIL, avail); // signal received packet to h/w return avail; }
  • 19. Run to completion while (true) { nb_rx = get_packets(pkts, burst_size) nb_proc = process(pkts, nb_rx) nb_tx = xmit(pkts, nb_proc) for (i = nb_tx; i < nb_proc; i++) free(pkts[i]); }
  • 20. Open Source biblioteki Dataplane ● DPDK ○ Największa społeczność ○ Platforma Intel, ARM, Power8 ○ Duża ilość sterowników ● ODP ○ Konsorcjum pod Linaro Network Group ○ Platforma Octeon, ARM, Intel, NXP ○ Publiczne API + prywatne implementacje ● VPP ○ Środowisko tworzenia aplikacji Dataplane z komponentów ○ Współpracuje z DPDK ale też z innymi (nie z ODP)
  • 21. Dataplane Development Kit User Space Kernel Space Hardware DPDK APP KNI PMD DPDK Library UIO PMD IP Stack eth driver eth driver NIC NICNIC NIC
  • 22. DPDK - komponenty ● Core - zarządzanie pamięcią i procesorem ● Platforma - łączność z OS ● Ethdev - abstrakcja urz. sieciowego ● PMD - Poll Mode Driver ● Crypto - sterowniki kryptograficzne ● Classify, Qos,... - dodatkowe biblioteki *http://vmpro.at/2014/08/18/paper-intel-dpdk-with-vmware-vsphere/
  • 24. ODP - architektura aplikacji *http://docs.opendataplane.org/snapshots/odp-publish/generic/usr_html/master/latest/linux-generic/output/users-guide.html
  • 25. Plan 1. Co to jest stos sieciowy? 2. Ewolucja podejścia do oprogr. sieciowego ○ zmiany w architekturze syst. komputerowych ○ nowe paradygmaty programowania sieciowego 3. Wprowadzenie do aplikacji typu Dataplane 4. Przykładowy stos jako program użytkownika ○ OFP 5. Wyzwania i pułapki czekające na twórców stosów sieciowych
  • 26. Stosy sieciowe Open Source ● lwIP ● mTCP ● OFP ● NetBSD Rump Kernel ● TLDK - tylko UDP (TCP w trakcie konstrukcji)
  • 27. OFP - organizacja projektu ● Licencja BSD ● Kod przeniesiony z FreeBSD ● Główni uczestnicy: Nokia, Enea, ARM ○ + Cavium, NXP, … ● Bazuje na ODP ● Ścisła współpraca z Linaro ● http://www.openfastpath.org
  • 29. OFP - główne funkcje ● L4: UDP, TCP, ICMP ● L3: ○ ARP/NDP ○ IPv6, IPv4 routing ○ fragmentacja IPv4 ○ tunele GRE, VXLAN dla IPv4 ○ IGMP, IP mutlicast ● Obsługa poprzez linuksowy ifconfig ● Współpraca z Linuksem przez TAP ● Zero-copy ● Binarny zamiennik BSD sockets (z kopiowaniem)
  • 31. FastPath / SlowPath Fast Path (aplikacja OFP) Port BPort A Kernel (slow path) 10.1.0.1/16 10.2.0.1/16 IP:*/TCP:22 (SSH) TCP:80 (HTTP) IPv4 TCP Routing fp0 (A) fp1 (B) ● Gdzie pójdzie pakiet? (dst IP/ dst port) ○ 10.1.0.1/TCP:22 ○ 10.2.0.4/TCP:80 ○ 10.1.0.2/TCP:22 ○ 10.2.0.1/TCP:80 ○ 10.2.0.1/UDP:80
  • 35. Plan 1. Co to jest stos sieciowy? 2. Ewolucja podejścia do oprogr. sieciowego ○ zmiany w architekturze syst. komputerowych ○ nowe paradygmaty programowania sieciowego 3. Wprowadzenie do aplikacji typu Dataplane 4. Przykładowy stos jako program użytkownika ○ OFP 5. Wyzwania i pułapki czekające na twórców stosów sieciowych
  • 36. Dataplane + stary kod = :< ● Stary kod nie zadziała szybciej tylko dlatego, że teraz nazywa się Dataplane 11.54% udp_fwd_socket [ofp] odp_rwlock_read_lock 10.73% udp_fwd_socket [ofp] odp_rwlock_read_unlock 5.43% udp_fwd_socket [ofp] ofp_in_pcblookup 4.94% udp_fwd_socket [ofp] udp_send 4.79% udp_fwd_socket [ofp] ofp_ip_output 4.26% udp_fwd_socket [drv] nicvf_qset_cq_handler 3.83% udp_fwd_socket [ofp] ofp_udp_input 3.82% udp_fwd_socket [ofp] ofp_in_pcbrele_rlocked 3.70% udp_fwd_socket [ofp] ofp_ip_output_add_eth 2.68% udp_fwd_socket [drv] nicvf_xmit 2.63% udp_fwd_socket [ofp] ofp_ipv4_processing 2.57% udp_fwd_socket [ofp] ofp_packet_input 2.44% udp_fwd_socket [ofp] ofp_eth_vlan_processing 1.90% udp_fwd_socket [ofp] ofp_ipv4_lookup_mac 1.86% udp_fwd_socket [ofp] in_pcblookup_hash_locked.isra.2 1.84% udp_fwd_socket [ofp] ofp_get_packet_hooks 1.76% udp_fwd_socket [ofp] ofp_udp_pkt_sendto 1.73% udp_fwd_socket [app]ofp_udp_packet_parse
  • 37. Dataplane + stary kod = :< ● Stary kod nie zadziała szybciej tylko dlatego, że teraz nazywa się Dataplane children self - 92.49% 2.33% udp_fwd_socket udp_fwd_socket [.] ofp_packet_input - 97.48% ofp_packet_input - 93.18% ofp_ipv4_processing - 83.57% ofp_udp_input + 43.33% udp_append.isra.1 - 19.20% ofp_in_pcblookup 6.14% odp_rwlock_read_lock 4.30% ofp_in_pcbrele_rlocked 2.01% in_pcblookup_hash_locked.isra.2 6.37% odp_rwlock_read_lock 5.66% odp_rwlock_read_unlock
  • 38. Zasady wydajnych programów ● Lokalność ○ danych ○ kodu ○ wątków ● Brak niepotrzebnych abstrakcji ○ nie da się zrobić BSD sockets bez kopiowania danych! ● Run-to-completion ● Hurtowe przetwarzanie danych (SIMD, itd.)
  • 40. Latencja a pasmo ● Przepustowość ~ 2x ● Latencja ~ 1.4x *https://www.ll.mit.edu/HPEC/agendas/proc04/invited/patterson_keynote.pc