Stosy sieciowe w przestrzeni użytkownika.

Semihalf
SemihalfSemihalf
Stosy sieciowe w przestrzeni użytkownika.
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
1 sur 40

Recommandé

Efekt motyla w kodzie maszynowym. par
Efekt motyla w kodzie maszynowym.Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.Semihalf
128 vues29 diapositives
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU? par
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Semihalf
162 vues34 diapositives
Wirtualizacja urządzeń PCI (SR-IOV). par
Wirtualizacja urządzeń PCI (SR-IOV).Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Semihalf
436 vues55 diapositives
(prawie) Wszystko o Tinkerze par
(prawie) Wszystko o Tinkerze(prawie) Wszystko o Tinkerze
(prawie) Wszystko o TinkerzeLaravel Poland MeetUp
154 vues27 diapositives
PLNOG 8: Łukasz Bromirski - IP Anycast - Ochrona i skalowanie usług sieciowych par
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
49 vues33 diapositives
GlusterFS par
GlusterFSGlusterFS
GlusterFSŁukasz Jagiełło
1.8K vues32 diapositives

Contenu connexe

Tendances

100 M pakietów na sekundę dla każdego. par
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
973 vues41 diapositives
Barcamp 08/06/2010 par
Barcamp 08/06/2010Barcamp 08/06/2010
Barcamp 08/06/2010Michał Gruchała
723 vues35 diapositives
DTrace par
DTraceDTrace
DTraceMarcin Kula
455 vues23 diapositives
Python i elektronika par
Python i elektronikaPython i elektronika
Python i elektronikariklaunim
7.6K vues34 diapositives
100Mpps czyli jak radzić sobie z atakami DDoS? par
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
905 vues15 diapositives
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03 par
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! S07E03Semihalf
521 vues43 diapositives

Tendances(20)

Python i elektronika par riklaunim
Python i elektronikaPython i elektronika
Python i elektronika
riklaunim7.6K vues
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03 par Semihalf
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
Semihalf521 vues
Embedded Debugging, czyli co kryje się w jądrze? par 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?
Semihalf337 vues
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd... par Redge Technologies
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. par Semihalf
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
Semihalf1.3K vues
CPU GHOST BUSTING. Semihalf Barcamp Special. par Semihalf
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
Semihalf3.4K vues
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m... par PROIDEA
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...
PROIDEA120 vues
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018 par Semihalf
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
Semihalf125 vues
Programowanie sterowników w Linuksie. par Semihalf
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
Semihalf995 vues
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM. par 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.
Semihalf360 vues
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac... par PROIDEA
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...
PROIDEA29 vues
Interfejs RS232C par rlutowsk
Interfejs RS232CInterfejs RS232C
Interfejs RS232C
rlutowsk291 vues
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana... par PROIDEA
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...
PROIDEA73 vues
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost... par 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...
PROIDEA49 vues
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce. par Semihalf
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Semihalf181 vues
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ... par PROIDEA
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 ...
PROIDEA116 vues

Similaire à Stosy sieciowe w przestrzeni użytkownika.

ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC. par
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
520 vues41 diapositives
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ... par
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
26 vues31 diapositives
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury... par
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
163 vues24 diapositives
Monitoring sieci par
Monitoring sieciMonitoring sieci
Monitoring sieciKamil Grabowski
829 vues47 diapositives
Praca Dyplomowa par
Praca DyplomowaPraca Dyplomowa
Praca DyplomowaJacek Kościesza
938 vues72 diapositives
Praca Dyplomowa par
Praca DyplomowaPraca Dyplomowa
Praca DyplomowaJacek Kościesza
1.2K vues72 diapositives

Similaire à Stosy sieciowe w przestrzeni użytkownika.(20)

ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC. par Semihalf
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.
Semihalf520 vues
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ... par PROIDEA
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 ...
PROIDEA26 vues
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury... par 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...
PROIDEA163 vues
Hierarchia pamięci w systemach komputerowych. par Semihalf
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
Semihalf746 vues
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój par 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
PROIDEA10 vues
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX par PROIDEA
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
PROIDEA165 vues
Projekcik Routery2 par arkulik
Projekcik Routery2Projekcik Routery2
Projekcik Routery2
arkulik1.6K vues
IT od kuchni w Nokaut.pl par 3camp
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
3camp1.4K vues
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą... par 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ą...
PROIDEA24 vues
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej par 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
PROIDEA45 vues
PLNOG 18 - Piotr Jabłoński - Co utrudnia życie projektanta sieci? par 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?
PROIDEA206 vues
PLNOG 13: Robert Ślaski: NFV, Virtualise networks or die – the voice of the r... par 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...
PROIDEA609 vues
PLNOG 4: Piotr Wojciechowski - NAT-PT, czyli współistnienie sieci IPv4 i IPv6 par PROIDEA
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
PROIDEA54 vues
PLNOG 21: Piotr Okupski - Wieloetapowe_filtrowanie_ruchu_DDoS_za_pomocą_Wangu... par 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...
PROIDEA45 vues
Halokwadrat PLNOG - Freeswitch a big boys Softswitch par michalpodoski
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
michalpodoski625 vues

Plus de Semihalf

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym par
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
322 vues32 diapositives
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01 par
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
312 vues30 diapositives
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018 par
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
321 vues51 diapositives
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018 par
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
74 vues28 diapositives
Skazani na firmware. ARM Trusted Firmware. S07E02 par
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Semihalf
406 vues38 diapositives
Skazani na firmware. Świat komputera przed systemem operacyjnym. par
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
325 vues32 diapositives

Plus de Semihalf(15)

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym par Semihalf
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Semihalf322 vues
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01 par Semihalf
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
Semihalf312 vues
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018 par Semihalf
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
Semihalf321 vues
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018 par Semihalf
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
Semihalf74 vues
Skazani na firmware. ARM Trusted Firmware. S07E02 par Semihalf
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02
Semihalf406 vues
Skazani na firmware. Świat komputera przed systemem operacyjnym. par 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.
Semihalf325 vues
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail. par 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.
Semihalf180 vues
Architektura mikrokontrolera pisana słowem. par Semihalf
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
Semihalf177 vues
Jak napisać własny RTOS! par Semihalf
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
Semihalf376 vues
Czym są heterogeniczne systemy mikroprocesorowe? par Semihalf
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
Semihalf151 vues
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych. par Semihalf
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
Semihalf477 vues
Wirtualizacja sieci na przykładzie OpenContrail vRouter. par Semihalf
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Semihalf412 vues
DTrace, czyli jak zobaczyć to czego nie widać. par 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ć.
Semihalf209 vues
Secure Coding w praktyce. par Semihalf
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.
Semihalf316 vues
FreeBSD on Cavium ThunderX System on a Chip par Semihalf
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
Semihalf1.9K vues

Stosy sieciowe w przestrzeni użytkownika.

  • 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