Zestaw rozwojowy płaszczyzny danych
Wersja stabilna | 22.11 / 27 listopada 2022
|
---|---|
Magazyn | |
Napisane w | C |
System operacyjny | Linuksa , FreeBSD , Windowsa |
Typ | Przetwarzanie pakietów |
Licencja | BSD |
Strona internetowa |
Data Plane Development Kit ( DPDK ) to projekt oprogramowania open source zarządzany przez Linux Foundation . Zapewnia zestaw płaszczyzny danych i sterowników trybu odpytywania kontrolera interfejsu sieciowego do odciążania przetwarzania pakietów TCP z jądra systemu operacyjnego do procesów działających w przestrzeni użytkownika . To odciążanie zapewnia wyższą wydajność obliczeniową i wyższą przepustowość pakietów niż jest to możliwe przy użyciu przetwarzania sterowanego przerwaniami w jądrze.
DPDK zapewnia platformę programistyczną dla procesorów x86 , ARM i PowerPC oraz umożliwia szybsze tworzenie aplikacji sieciowych do obsługi pakietów danych o dużej szybkości. Skaluje się od procesorów mobilnych, takich jak Intel Atom , do procesorów klasy serwerowej, takich jak Intel Xeon . Obsługuje architektury zestawów instrukcji , takie jak Intel, IBM POWER8 , EZchip i ARM . Jest dostarczany i obsługiwany na licencji open-source BSD .
DPDK został stworzony przez inżyniera Intela, Venky'ego Venkatesana, który jest pieszczotliwie nazywany „Ojcem DPDK”. Zmarł w 2018 roku po długiej walce z rakiem.
Przegląd
Struktura DPDK tworzy zestaw bibliotek dla określonych środowisk sprzętowych/programowych poprzez utworzenie warstwy abstrakcji środowiska (EAL). EAL ukrywa specyfikę środowiska i zapewnia standardowy interfejs programistyczny do bibliotek, dostępnych akceleratorów sprzętowych i innych elementów sprzętu i systemu operacyjnego (Linux, FreeBSD). Po utworzeniu EAL dla określonego środowiska programiści łączą się z biblioteką, aby tworzyć swoje aplikacje. Na przykład EAL zapewnia ramy do obsługi systemów Linux , FreeBSD , Intel IA- 32 lub 64-bit , IBM POWER9 i ARM 32- lub 64-bit.
EAL zapewnia również dodatkowe usługi, w tym odniesienia czasowe, ogólny dostęp do magistrali , funkcje śledzenia i debugowania oraz operacje alarmowe.
Korzystając z bibliotek DPDK, można całkowicie zaimplementować model run-to-completion , potokowy lub etapowy, sterowany zdarzeniami lub hybrydowy, całkowicie w przestrzeni użytkownika, eliminując jądro i kopiowanie jądra do użytkownika. Wspomaganie sprzętowe z NIC/Regex/Accelerators, biblioteki udoskonalone w celu wykorzystania Intelligence Storage Acceleration (ISA) do masowej wydajności i uzyskiwania dostępu do urządzeń poprzez odpytywanie , pomaga również wyeliminować obciążenie związane z wydajnością związane z przerwaniami . Hugepages są używane do alokacji dużej puli pamięci, aby zmniejszyć liczbę wyszukiwań i zarządzania stronami.
DPDK zawiera również przykłady oprogramowania, które przedstawiają najlepsze praktyki w zakresie architektury oprogramowania, wskazówki dotyczące projektowania i przechowywania struktur danych, narzędzia do profilowania aplikacji i dostrajania wydajności oraz wskazówki dotyczące typowych deficytów wydajności sieci.
Biblioteki
DPDK zawiera biblioteki warstwy danych i zoptymalizowane sterowniki kontrolera interfejsu sieciowego (NIC) dla następujących elementów:
- Menedżer kolejek implementuje kolejki bez blokad
- Menedżer buforów wstępnie przydziela bufory o stałym rozmiarze
- Menedżer pamięci przydziela pule obiektów w pamięci i używa pierścienia do przechowywania wolnych obiektów; zapewnia równe rozmieszczenie obiektów we wszystkich kanałach DRAM
- Sterowniki trybu sondowania (PMD) są zaprojektowane do pracy bez asynchronicznych powiadomień, co zmniejsza obciążenie
- Framework pakietów – zestaw bibliotek, które są pomocnikami w rozwoju przetwarzania pakietów
Wszystkie biblioteki są przechowywane w katalogach dpdk/lib/librte_*
Wtyczki
DPDK zawiera sterowniki dla wielu typów sprzętu. W przeszłości istniało kilka dodatkowych sterowników wtyczek spoza drzewa, które są obecnie uważane za przestarzałe.
- librte_pmd_vmxnet3.so – zapewnia warstwę PMD Ethernet obsługującą parawirtualizowaną kartę sieciową Vmxnet3; zastąpiony przez pełną obsługę VMXNET3 w natywnym DPDK.
- librte_pmd_memnic_copy.so – zapewnia warstwę Virtual PMD Ethernet poprzez pamięć współdzieloną w oparciu o 2 kopie pakietów w pamięci
Środowisko
DPDK został pierwotnie zaprojektowany do działania w trybie bez systemu, który jest obecnie przestarzały. W rzeczywistości EAL DPDK zapewnia obsługę aplikacji użytkownika dla systemu Linux lub FreeBSD . [ potrzebne źródło ]
EAL można rozszerzyć w celu obsługi dowolnych procesorów. [ potrzebne źródło ]
ekosystem
DPDK jest teraz projektem typu open source w ramach Linux Foundation , wspieranym przez wiele firm. DPDK jest zarządzany przez Radę Zarządzającą. Działania techniczne są nadzorowane przez Radę Techniczną. Oprócz firmy Intel , która jest współtwórcą DPDK, kilku innych dostawców również obsługuje DPDK w swoich produktach, a niektórzy oferują dodatkowe szkolenia, pomoc techniczną i profesjonalne usługi. Lista dostawców, którzy zapowiedzieli obsługę DPDK, obejmuje: 6WIND , ALTEN Calsoft Labs, Advantech, Brocade, Big Switch Networks, Mellanox Technologies , Radisys , Tieto, Wind River , Lanner . i NXP .
Projektowanie
projektu pfSense 25 lutego 2015 r. opublikowano mapę drogową, w której programista Jim Thompson ogłosił przepisanie rdzenia pfSense — w tym pf , przekazywanie i kształtowanie pakietów sieciowych , łączenie łączy , protokół IPsec — za pomocą DPDK: „Naszym celem jest umożliwienie do przesyłania dalej, z filtrowaniem pakietów z szybkością co najmniej 14,88 Mpps. To jest „szybkość liniowa” na interfejsie 10 Gbps. Po prostu nie ma sposobu, aby użyć dzisiejszych stosów jądra FreeBSD (lub Linuksa) do tego typu obciążenia.
Open vSwitch (OVS) ma ograniczony zestaw funkcji uruchamiających przestrzeń użytkownika, które można wykorzystać do ominięcia przetwarzania OVS jądra Linuksa. Ten przypadek użycia OVS z przestrzenią użytkownika DPDK nosi zwykle nazwę OVS-DPDK. Jest najczęściej wdrażany z OpenStack Neutron, ale zakłada, że wiele funkcji i możliwości sieci definiowanej programowo (SDN) Openstack jest wyłączonych. Na przykład, gdy używany jest OVS-DPDK, Neutron zapewnia niższy poziom bezpieczeństwa niż przy użyciu jądra OVS (brak stanowej zapory ogniowej, mniej grup bezpieczeństwa).
Platforma FD.IO VPP to rozszerzalna platforma, która zapewnia gotową do użycia funkcjonalność przełącznika/routera jakości produkcji. Jest to wersja open source technologii Cisco Vector Packet Processing (VPP): wysokowydajny stos przetwarzania pakietów, który może działać na zwykłych procesorach i może wykorzystywać sterowniki trybu sondowania zarówno dla kart sieciowych, jak i sprzętu i bibliotek akceleracji kryptograficznej. VPP obsługuje i używa biblioteki DPDK.
TRex to generator ruchu typu open source wykorzystujący DPDK. Generuje ruch L4-7 na podstawie wstępnego przetwarzania i inteligentnego odtwarzania rzeczywistych szablonów ruchu. TRex wzmacnia ruch zarówno po stronie klienta, jak i serwera i może skalować się do 200 Gbit/s za pomocą jednego UCS wykorzystującego Intel XL710. TRex obsługuje również wiele strumieni, możliwość zmiany dowolnego pola pakietu i zapewnia statystyki dla każdego strumienia, opóźnienia i jitter.
DTS (DPDK Test Suite) to oparta na języku Python platforma do testów funkcjonalnych i testów porównawczych. Jest to projekt typu open source, który rozpoczął się w 2014 roku i jest hostowany na stronie dpdk.org. Obsługuje zarówno programowe generatory ruchu, takie jak Scapy i dpdk-pktgen, jak i sprzętowy generator ruchu, taki jak Ixia .
DPDK obsługuje kilka sterowników sieciowych SRIOV , umożliwiając tworzenie PF (Physical Function) i VF, a także uruchamianie maszyn wirtualnych (takich jak QEMU VM) i przypisywanie im VF za pomocą PCI Passthrough
DDP (Dynamic Device Personalizacja) to jedna z nowych zaawansowanych funkcji zaimplementowanych w DPDK. Umożliwia dynamiczne ładowanie oprogramowania układowego urządzenia bez resetowania hosta.