ݺߣ

ݺߣShare a Scribd company logo
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.)
ٳęę!
Latencja a pasmo
● Przepustowość ~ 2x
● Latencja ~ 1.4x
*https://www.ll.mit.edu/HPEC/agendas/proc04/invited/patterson_keynote.pc
Ad

Recommended

Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.
Semihalf
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Semihalf
Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).
Semihalf
(prawie) Wszystko o Tinkerze
(prawie) Wszystko o Tinkerze
Laravel Poland MeetUp
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
GlusterFS
GlusterFS
Łukasz Jagiełło
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
Wojciech Szymański
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Semihalf
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 elektronika
riklaunim
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! S07E03
Semihalf
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...
Redge Technologies
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
Semihalf
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...
PROIDEA
Programuj 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.
Semihalf
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...
PROIDEA
Interfejs RS232C
Interfejs RS232C
rlutowsk
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...
PROIDEA
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 ...
PROIDEA
PLNOG 18 - Łukasz Bromirski - CEF, NetFlow, NetFPGA, Superman, Eureka, fd.io,...
PLNOG 18 - Łukasz Bromirski - CEF, NetFlow, NetFPGA, Superman, Eureka, fd.io,...
PROIDEA
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...
PROIDEA

More Related Content

What's hot (20)

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 elektronika
riklaunim
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! S07E03
Semihalf
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...
Redge Technologies
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
Semihalf
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...
PROIDEA
Programuj 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.
Semihalf
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...
PROIDEA
Interfejs RS232C
Interfejs RS232C
rlutowsk
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...
PROIDEA
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 ...
PROIDEA
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 elektronika
riklaunim
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! S07E03
Semihalf
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...
Redge Technologies
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
Semihalf
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...
PROIDEA
Programuj 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.
Semihalf
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...
PROIDEA
Interfejs RS232C
Interfejs RS232C
rlutowsk
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...
PROIDEA
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 ...
PROIDEA

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

PLNOG 18 - Łukasz Bromirski - CEF, NetFlow, NetFPGA, Superman, Eureka, fd.io,...
PLNOG 18 - Łukasz Bromirski - CEF, NetFlow, NetFPGA, Superman, Eureka, fd.io,...
PROIDEA
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...
PROIDEA
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...
PROIDEA
PLNOG19 - Robert Ślaski - Przełączniki w wydaniu otwartym - po co Open Networ...
PLNOG19 - Robert Ślaski - Przełączniki w wydaniu otwartym - po co Open Networ...
PROIDEA
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PROIDEA
Linux. Mechanizmy sieciowe
Linux. Mechanizmy sieciowe
Wydawnictwo Helion
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PROIDEA
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
Paweł Małachowski
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PROIDEA
PLNOG16: Praktyczne zastosowania technologii SDN w  6 4 2 0 Kolumna 1 Kolumn...
PLNOG16: Praktyczne zastosowania technologii SDN w  6 4 2 0 Kolumna 1 Kolumn...
PROIDEA
PLNOG 17 - Piotr Jabłoński - Sieci nakładkowe w Data Center - uproszczenie, c...
PLNOG 17 - Piotr Jabłoński - Sieci nakładkowe w Data Center - uproszczenie, c...
PROIDEA
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PROIDEA
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
PLNOG15: MPLS and SDN in modern Data Center - Artur Gmaj
PLNOG15: MPLS and SDN in modern Data Center - Artur Gmaj
PROIDEA
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PROIDEA
PLNOG 18 - Łukasz Bromirski - CEF, NetFlow, NetFPGA, Superman, Eureka, fd.io,...
PLNOG 18 - Łukasz Bromirski - CEF, NetFlow, NetFPGA, Superman, Eureka, fd.io,...
PROIDEA
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...
PROIDEA
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...
PROIDEA
PLNOG19 - Robert Ślaski - Przełączniki w wydaniu otwartym - po co Open Networ...
PLNOG19 - Robert Ślaski - Przełączniki w wydaniu otwartym - po co Open Networ...
PROIDEA
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PROIDEA
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PLNOG 9: Daniel Fenert - nazwa.pl - nieustanny rozwój
PROIDEA
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
Paweł Małachowski
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...
PROIDEA
PLNOG16: Praktyczne zastosowania technologii SDN w  6 4 2 0 Kolumna 1 Kolumn...
PLNOG16: Praktyczne zastosowania technologii SDN w  6 4 2 0 Kolumna 1 Kolumn...
PROIDEA
PLNOG 17 - Piotr Jabłoński - Sieci nakładkowe w Data Center - uproszczenie, c...
PLNOG 17 - Piotr Jabłoński - Sieci nakładkowe w Data Center - uproszczenie, c...
PROIDEA
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PROIDEA
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
PLNOG15: MPLS and SDN in modern Data Center - Artur Gmaj
PLNOG15: MPLS and SDN in modern Data Center - Artur Gmaj
PROIDEA
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PROIDEA
Ad

More from Semihalf (17)

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Semihalf
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
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: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/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/2018
Semihalf
Skazani 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.
Semihalf
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Semihalf
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
Semihalf
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
Semihalf
Jak napisać własny RTOS!
Jak napisać własny RTOS!
Semihalf
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.
Semihalf
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ć.
Semihalf
Secure Coding w praktyce.
Secure Coding w praktyce.
Semihalf
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
Semihalf
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Semihalf
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
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: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/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/2018
Semihalf
Skazani 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.
Semihalf
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Semihalf
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
Semihalf
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
Semihalf
Jak napisać własny RTOS!
Jak napisać własny RTOS!
Semihalf
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.
Semihalf
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ć.
Semihalf
Secure Coding w praktyce.
Secure Coding w praktyce.
Semihalf
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
Semihalf
Ad

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