Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?SemihalfJak zbudować wysokowydajny stos TCP/IP działający w przestrzeni użytkownika (userspace), na bazie tradycyjnej implementacji z jądra systemu FreeBSD?
Wirtualizacja urządzeń PCI (SR-IOV).SemihalfPiękny byłby świat komputerów, gdyby sprzęt zachowywał się tak samo jak oprogramowanie. Pomyślmy o nowej karcie graficznej, którą instalujemy w komputerze, zaznaczamy myszką, klikamy kopiuj, wklej, i bach, mamy już dwie! Albo nawet i trzy. A gdy już się nam znudzi, przesuwamy ją do kosza i cieszymy się z podstawowej konfiguracji. Sceptycy krzykną: niemożliwe! Ale czy na pewno?
Hierarchia pamięci w systemach komputerowych.Wojciech SzymańskiPamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Prezentacja miała miejsce 29 kwietnia 2015, w ramach odbywających się barcampów organizowanych przez Semihalf.
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalfW prezentacji znajdziesz opis zagadnienia przetwarzania pakietów w wysokowydajnych sieciach światłowodowych. Koncepcja przetwarzania ruchu sieciowego w przestrzeni użytkownika oparta jest na zastosowaniu frameworku DPDK na platformie Linux/x86.
100 M pakietów na sekundę dla każdego. Redge TechnologiesPrezentacja dotycząca wydajnego przetwarzania ruchu IP na PC wygłoszona podczas IT Conference na WAT (http://itacademicday.azurewebsites.net/), listopad 2015.
(Polish only) Talk regarding effective IP traffic processing on x86 platforms, given at IT Academic Day / Military University of Technology in Warsaw, November 2015.
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03SemihalfPrzedstawiamy firmware UEFI, dzięki któremu możliwe jest coraz śmielsze wkraczanie architektury ARM64 do świata urządzeń serwerowych, czyli królestwa władanego przez Intel. Standardy, ich założenia i realizacja zostałą przybliżona na przykładzie dodawania wsparcia dla n
Embedded Debugging, czyli co kryje się w jądrze?SemihalfPrezentacja barcampu firmy Semihalf z 27.11.2018 r.
Jak zaglądnąć tam gdzie pozornie jest to niewykonalne? Kernel panic? Crash dump? Za pomocą narzędzi software'owych i sprzętowych można rozwiązać i takie problemy.
Zagadnienia:
Wsparcie sprzętowe procesorów do debugowania (stepping, pmu, etc.)
Wsparcie systemu operacyjnego (trap, crash dump)
Narzędzia: LLDB, KDB
Case study: (Linux, FreeBSD, macOS, Windows)
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Redge Technologies(Polish only)
Gaming/DDoS mitigation/x86 performance and elasticity.
Talk given at Net::IP meetup in Wrocław, Poland (2017.05): https://www.meetup.com/Wroclaw-Net-IP-Meetup/events/238738376/
Bootloadery i programy bare metal.SemihalfDroga, którą procesor przebywa od włączenia do uruchomienia systemu operacyjnego, jest długa, kręta i pełna pułapek. Prezentacja nakreśla jej przebieg, ze szczególnym uwzględnieniem niełatwych początków uruchamiania systemu. Aplikacja Hello World była pisana na wiele sposobów, a tutaj pojawi się kolejny: Bare Metal.
CPU GHOST BUSTING. Semihalf Barcamp Special. SemihalfZ prezentacji dowiesz się jak działają nowoczesne procesory, jakich technik używają (Speculative Execution, Branch Prediction) aby zwiększyć wydajność i jak to się stało, że niektóre z tych usprawnień mogą być sprytnie wykorzystane do pozyskania poufnych danych. Omawiamy przykład złośliwego kodu wykorzystującego te luki i skutki jego działania. Pokazujemy mechanizmy obrony i wyjaśniamy jakie mogą przynosić ograniczenia.
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PROIDEAYouTube: https://www.youtube.com/watch?v=xcA-rqwFMYU&list=PLnKL6-WWWE_VNp6tUznu7Ca8hBF8yjKj2&index=50
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018SemihalfPrezentacja z barcampu firmy Semihalf. Przyglądamy się potencjałowi jaki leży w z pozoru starych urządzeniach domowych. Wystarczy pomysł, lutownica, odrobina determinacji i otwarty umysł by użyć stary router jako bazę do stworzenia własnego urządzenia komputerowego.
Programowanie sterowników w Linuksie.SemihalfWiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.SemihalfDowiesz się na czym polega tajemnica kilku równoległych systemów operacyjnych. Wprowadzimy Cię w świat wirtualnych systemów operacyjnych, poznasz metody umożliwiające ich incepcję oraz zoptymalizujesz wydajność swojej maszyny wirtualnej.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.SemihalfDowiesz się dlaczego systemy wielordzeniowe przypominają bardziej sieci lokalne, niż maszyny ze wspólną pamięcią.
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...PROIDEAPLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się na błędach, Marcin Kuczera
100 M pakietów na sekundę dla każdego. Redge TechnologiesPrezentacja dotycząca wydajnego przetwarzania ruchu IP na PC wygłoszona podczas IT Conference na WAT (http://itacademicday.azurewebsites.net/), listopad 2015.
(Polish only) Talk regarding effective IP traffic processing on x86 platforms, given at IT Academic Day / Military University of Technology in Warsaw, November 2015.
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03SemihalfPrzedstawiamy firmware UEFI, dzięki któremu możliwe jest coraz śmielsze wkraczanie architektury ARM64 do świata urządzeń serwerowych, czyli królestwa władanego przez Intel. Standardy, ich założenia i realizacja zostałą przybliżona na przykładzie dodawania wsparcia dla n
Embedded Debugging, czyli co kryje się w jądrze?SemihalfPrezentacja barcampu firmy Semihalf z 27.11.2018 r.
Jak zaglądnąć tam gdzie pozornie jest to niewykonalne? Kernel panic? Crash dump? Za pomocą narzędzi software'owych i sprzętowych można rozwiązać i takie problemy.
Zagadnienia:
Wsparcie sprzętowe procesorów do debugowania (stepping, pmu, etc.)
Wsparcie systemu operacyjnego (trap, crash dump)
Narzędzia: LLDB, KDB
Case study: (Linux, FreeBSD, macOS, Windows)
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Redge Technologies(Polish only)
Gaming/DDoS mitigation/x86 performance and elasticity.
Talk given at Net::IP meetup in Wrocław, Poland (2017.05): https://www.meetup.com/Wroclaw-Net-IP-Meetup/events/238738376/
Bootloadery i programy bare metal.SemihalfDroga, którą procesor przebywa od włączenia do uruchomienia systemu operacyjnego, jest długa, kręta i pełna pułapek. Prezentacja nakreśla jej przebieg, ze szczególnym uwzględnieniem niełatwych początków uruchamiania systemu. Aplikacja Hello World była pisana na wiele sposobów, a tutaj pojawi się kolejny: Bare Metal.
CPU GHOST BUSTING. Semihalf Barcamp Special. SemihalfZ prezentacji dowiesz się jak działają nowoczesne procesory, jakich technik używają (Speculative Execution, Branch Prediction) aby zwiększyć wydajność i jak to się stało, że niektóre z tych usprawnień mogą być sprytnie wykorzystane do pozyskania poufnych danych. Omawiamy przykład złośliwego kodu wykorzystującego te luki i skutki jego działania. Pokazujemy mechanizmy obrony i wyjaśniamy jakie mogą przynosić ograniczenia.
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PROIDEAYouTube: https://www.youtube.com/watch?v=xcA-rqwFMYU&list=PLnKL6-WWWE_VNp6tUznu7Ca8hBF8yjKj2&index=50
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018SemihalfPrezentacja z barcampu firmy Semihalf. Przyglądamy się potencjałowi jaki leży w z pozoru starych urządzeniach domowych. Wystarczy pomysł, lutownica, odrobina determinacji i otwarty umysł by użyć stary router jako bazę do stworzenia własnego urządzenia komputerowego.
Programowanie sterowników w Linuksie.SemihalfWiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.SemihalfDowiesz się na czym polega tajemnica kilku równoległych systemów operacyjnych. Wprowadzimy Cię w świat wirtualnych systemów operacyjnych, poznasz metody umożliwiające ich incepcję oraz zoptymalizujesz wydajność swojej maszyny wirtualnej.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.SemihalfDowiesz się dlaczego systemy wielordzeniowe przypominają bardziej sieci lokalne, niż maszyny ze wspólną pamięcią.
PLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się n...PROIDEAPLNOG16: Ewolucja infrastruktury średniego ISP, czyli jak człowiek uczy się na błędach, Marcin Kuczera
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PROIDEAW trakcie wykładu poruszony zostanie temat użycia platform serwerowych na potrzeby wydajnego routingu pakietów. Mocne i słabe strony zastosowania architektury jedno- czy wieloprocesorowej pod kątem konfiguracji sieciowej, jej wypływ na wydajność oraz skalowalność rozwiązania.
PLNOG19 - Robert Ślaski - Przełączniki w wydaniu otwartym - po co Open Networ...PROIDEAJakby wspaniałe nie były rozwiązania Cisco, Juniper czy Huawei, zawsze ktoś będzie marudził, a to na support, a to na vendor lock. Poza tym wielcy również produkują sprzęt oparty o standardowy krzem silicon vendorów typu Broadcom. Właśnie dla nich jest alternatywa w postaci open networking. Będzie więc coś o bare metal / white box switchach, Open Compute Projekcie, oprogramowaniu / NOS (ONIE, Cumulus Linux, OpenSwitch, PicOS) oraz sprzęcie (Mellanox, Edge-Core, QCT), a także o tym jak bardzo "open" jest ten networking.
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEAZaprezentowany zostanie obecny status rozwiązań NFV. Ich historyczne znaczenie w przeszłości, zmiany na rynku, które doprowadziły do ponownego odkrycia tej technologii. Pokazane zostana możliwe scieżki rozwoju rozwiązań NFV i co w chwili obecnej stanowi blokadę do szerszego wdrożenia tych technologii. Zaprezentowane zostaną przykłady implementacji technolgoii NFV z wykorzystaniem rozwiązań Juniper vSRX vMX oraz produktów z rodziny NFX
Linux. Mechanizmy siecioweWydawnictwo Helion Kompletny przewodnik po mechanizmach sieciowych Linuksa
* Inicjalizacja urządzeń sieciowych.
* Interfejsy pomiędzy urządzeniami i protokołami.
* Rozwiązania specyficzne dla protokołów.
Sieci, a szczególnie internet, to jeden z filarów współczesnej informatyki. Niemal każdy elektroniczny gadżet może pracować w sieci za pośrednictwem różnych metod komunikacji. Ogromna ilość produkowanych dziś urządzeń sieciowych opiera się na różnych dystrybucjach systemu operacyjnego Linux. Ten dostępny nieodpłatnie system operacyjny od początku tworzony był z uwzględnieniem roli, jaką mógłby odgrywać w świecie sieci komputerowych, więc zaimplementowano w nim niemal wszystkie możliwe mechanizmy sieciowe. Dodatkowo filozofia, jaką przyjęto przy rozwoju tego systemu operacyjnego, pozwala wszystkim jego użytkownikom na dodawanie do jądra Linuksa własnych modułów zapewniających obsługę niestandardowych urządzeń i protokołów.
Książka "Linux. Mechanizmy sieciowe" to szczegółowe omówienie rozwiązań sieciowych, jakie zostały zastosowane w tym systemie operacyjnym. Opisuje sposoby, w jakie jądro Linuksa realizuje zadania przydzielane mu przez protokoły IP. Czytając ją, można poznać współczesną łączność sieciową na wziętych z życia przykładach. Pozycja ta jest doskonałym przewodnikiem po kodzie źródłowym funkcji sieciowych jądra systemu Linux. Przedstawia kod w języku C z obszernymi komentarzami i wyjaśnieniami zastosowanych mechanizmów.
* Struktury danych
* Rejestracja i inicjalizowanie urządzeń sieciowych
* Powiadamianie jądra o odbiorze ramki
* Obsługa protokołów
* Implementacja mostkowania
* Obsługa IPv4
* Podsystem sąsiedztwa
* Routing
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...Paweł MałachowskiSlajdy prezentacji z 2004 r. dot. FreeBSD dummynet, wygłoszonej w ramach lubelskiej Grupy Użytkowników Różnych Uniksów.
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...PROIDEAChmury obliczeniowe zapewniają powszechny, wygodny dostęp do teoretycznie „nieograniczonych” zasobów obliczeniowych umożliwiających oferowanie nowych usług wykorzystujących nowe modele biznesowe bazujące na zasadzie „płać za użycie”. Jednakże, konieczność przesyłania danych pomiędzy użytkownikiem a centrum danych często zlokalizowanym w znacznej odległości, stanowi barierę dla rozwoju usług wymagających przetwarzania danych w czasie zbliżonym do czasu rzeczywistego, np. AR/VR, gier interaktywnych, czy 360 wideo. Nowym rozwiązaniem jest wykorzystanie zasobów obliczeniowych dostępnych poza chmurami obliczeniowymi, zgodnie z koncepcją tzw. „mgły obliczeniowej” (Fog computing), obejmującą zarówno zasoby obliczeniowe na brzegu sieci oferowane w ramach systemów MEC (Multi-Access Edge Computing) jak i zasoby urządzeń zlokalizowanych w otoczeniu użytkownika (mist computing). W ramach prezentacji zostaną przedstawione: i) założenia, koncepcja oraz różnice pomiędzy systemami Fog/Edge/MEC Computing, ii) architektura tych systemów, iii) przykłady nowych aplikacji i usług, które wykorzystują nowe możliwości oferowane przez systemy Fog/Edge/MEC, iv) stan rozwoju techniki przetwarzania na brzegu sieci, obejmujący zarówno stan standaryzacji (np. ETSI MEC), jak i kierunki prac badawczych. W szczególności, pokrótce zostaną omówione obecnie realizowane prace w ramach projektów międzynarodowych tworzących otwarte oprogramowanie oraz rozwiązanie obecnie opracowywane w kraju dla Systemu MEC oferującego usługi przetwarzania danych na brzegu sieci.
PLNOG16: Praktyczne zastosowania technologii SDN w  6 4 2 0 Kolumna 1 Kolumn...PROIDEAPLNOG16: Praktyczne zastosowania technologii SDN w  6 4 2 0 Kolumna 1 Kolumna 2 Kolumna 3 środowisku akademickim na przykładzie Cisco ACI, Jacek Kosiński, Remigiusz Górecki
PLNOG 17 - Piotr Jabłoński - Sieci nakładkowe w Data Center - uproszczenie, c...PROIDEARozważanie na temat tego, czy sieci nakładkowe (ang. overlay) upraszczają, czy komplikują architekturę Data Center.
PLNOG 3: Tadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa ...PROIDEATadeusz Knapik - E = (DC)2 czyli jak można pracować w oparciu o dwa lub więcej centra danych
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym SemihalfPrezentacja z Meetupu grupy Software Meets Hardware in Wrocław.
Na spotkaniu opisywaliśmy co dzieje się w komputerze zanim wystartuje system operacyjny, czyli tuż po włączeniu komputera lub wciśnięciu przycisku reset oraz co to jest firmware i jakie są jego rodzaje.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.SemihalfPrezentacja barcampu firmy Semihalf.
Opowiadamy jak działa system ARM CoreSight. Przedstawiamy jego komponenty oraz zasady współdziałania i konfigurowania. Pokazujemy sposób integracji systemu CoreSight z Linuxowym narzędziem Perf oraz przykłady jego użycia podczas profilowania kodu.
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01SemihalfThe document discusses the GDB debugger tool. It provides an overview of basic GDB commands like break, watch, step and next. It also covers setting breakpoints, watching variables, and using convenience variables and functions. The document discusses automating GDB using user-defined commands and functions. It describes debugging multi-threaded applications and features like reverse execution.
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018SemihalfThe document discusses the use of TTCN-3 for testing air purifiers, detailing its protocols, JSON formats for requests and responses, and encryption methods. It covers various aspects of TTCN-3, including its features, integration capabilities, testing tools, and device detection and configuration processes. The structure includes implementation components, ports, and testing cases necessary for device communication and management.
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018SemihalfPrezentacja z barcampu firmy semihalf. Spotkanie miało formę interaktywnego quizu. Zaprezentowaliśmy kilkanaście nietypowych bugów, z którymi mieliśmy do czynienia. Uczestnicy wskazywali właściwe rozwiązania.
Skazani na firmware. ARM Trusted Firmware. S07E02SemihalfCzy zastanawiałeś się kiedyś, jakie funkcjonalności realizuje nowoczesne oprogramowanie układowe?
Zapraszamy na prezentację poświęconą technologii ARM Trusted Firmware, na którym opowiemy w jaki sposób nowoczesne systemy radzą sobie z kwestiami bezpieczeństwa na przykładzie ARM Trusted Firmware. Zaprezentujemy także różnice między światem zaufanym a światem normalnym, czy i jak te dwa światy są w stanie istnieć w jednym systemie oraz co je łączy.
Skazani na firmware. Świat komputera przed systemem operacyjnym.SemihalfCzy zastanawiałeś się kiedyś co dzieje się po włączeniu komputera lub wciśnięciu przycisku RESET?
Zanim uruchomi się Twój system operacyjny mija kilka sekund - przyjrzymy się im z bliska. Odpowiemy na pytania co to jest firmware i jakie są jego rodzaje.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.SemihalfThe document discusses software-defined networking (SDN) and its implementation using OpenContrail in data center architectures, highlighting challenges and solutions for managing virtual networks. It details the architecture involving orchestration with OpenStack, central configuration, and the role of OpenFlow in enabling SDN. OpenContrail is presented as a scalable, fault-tolerant solution that integrates well with existing infrastructure and supports various networking standards.
Hierarchia pamięci w systemach komputerowych.SemihalfPamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Z prezentacji dowiesz się:
Jaki wpływ na wydajność programów ma pamięć operacyjna?
Jak przyspieszyć działanie programów?
Kiedy korzystać z pamięci RAM lub Cache?
Architektura mikrokontrolera pisana słowem.SemihalfJak wygląda mikrokontroler od środka? W jaki sposób do niego mówić? Jak tłumaczy się kod C na wykonanie w sprzęcie? Skąd bierze się instrukcja? Gdzie szukać wyników operacji?
Dowiecie się, co to jest język opisu sprzętu i jak się go używa oraz jak zaprojektować własną architekturę mikrokontrolera z użyciem jednego z nich – języka Verilog.
Jak napisać własny RTOS!SemihalfJak realizowana jest wielozadaniowość na pojedynczym CPU oraz jakie są jej konsekwencje? Czy “mutex to taki binarny semafor”? Dlaczego Windows nie jest używany do sterowania rakietami oraz jaki popularny błąd omal nie spowodował utraty jednej z misji NASA?
Czym są heterogeniczne systemy mikroprocesorowe?SemihalfWyjaśnimy Ci co to jest system heterogoniczny, jak wygląda Linuxowy sterownik do "misc. character device" oraz w jaki sposób Linux może dogadać się z FreeRTOSem.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SemihalfDzięki prezentacji poznasz wyzwania jakie stawia rynek infrastrukturze sieciowej, dowiesz się jakie są główne potrzeby w tym obszarze, zapoznasz się z ewolucją kart sieciowych.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.SemihalfW prezentacji wyjaśniamy:
- Czym są programowalne sieci komputerowe (SDN - Software Defined Networks)?
- Jakie korzyści daje nam wirtualizacja funkcji sieciowych (NFV - Network Functions Virtualization)?
- Jak zrobić szybki routing pomiędzy maszynami wirtualnymi?
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
Secure Coding w praktyce.SemihalfWiele już powiedziano i napisano o bezpiecznym kodowaniu.
My skupiamy się w prezentacji na bezpiecznym kodowaniu w języku C na podstawie realnych podatności znalezionych w znanych programach i bibliotekach oraz kernelu Linuxa.
FreeBSD on Cavium ThunderX System on a ChipSemihalfThe document discusses FreeBSD's implementation on Cavium ThunderX SoCs, highlighting its hardware platform and the advantages of the ARMv8 architecture, including increased address space and performance improvements. It covers the initial state of FreeBSD on this platform, along with the challenges faced such as bugs and support for various peripherals. Additionally, it outlines current developments, future goals, and performance measurements compared to Intel systems.
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
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
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
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.)