W jaki sposób procesor może obsłużyć szybkość transmisji danych 10 Gigabit na sekundę lub więcej?


11

Nie wiem, czy jest to właściwe miejsce, aby zapytać. To może być bardzo głupie pytanie. Zakładam, że niektóre procesory muszą przetwarzać ramki danych do przełączania / routingu. Nowoczesne procesory mają prędkość kilku GHz. Jak radzą sobie z danymi przychodzącymi szybciej niż operują?

Odpowiedzi:


16

Masz całkowitą rację, jeśli musimy użyć cyklu instrukcji na bit, to 10 Gb / s byłoby nieosiągalne. Pierwszą rzeczą do zapamiętania jest to, że obsługujemy słowo na instrukcję procesora - 64 bity.

Nawet wtedy najgorsze, co możemy zrobić dla wydajności, to mieć dostęp CPU do wszystkich słów pakietu. Dlatego skupiono się na obsłudze pakietów „bez kopiowania”. Niektóre z tych sztuczek dotyczą samych interfejsów: mają DMA („Bezpośredni dostęp do pamięci”), dzięki czemu układ kontrolera Ethernet kopiuje dane do pamięci RAM; obliczają sumy kontrolne, aby procesor nie musiał uzyskać dostępu do wszystkich słów w pakiecie, aby to zrobić. Część z nich dotyczy projektowania struktury danych: staramy się wyrównywać bufory pakietów, abyśmy mogli je przenosić, zmieniając własność pozycji tabeli stron. Niektóre z nich to po prostu staranne programowanie, aby zapewnić, że dostęp do danych pakietowych będzie uzyskiwany najmniejszą liczbę razy, a najlepiej, aby nie był uzyskiwany wcale do czasu otrzymania aplikacji.

Po wykonaniu tego wszystkiego następnym ograniczeniem jest narzut związany z obsługą pakietów pojedynczo. Tak więc istnieje mnóstwo funkcji „odciążenia segmentacji” zarówno w kontrolerze ethernetowym, jak i w jądrze, dzięki czemu obsługujemy grupy pakietów. Opóźniamy nawet pobieranie danych z kontrolera Ethernet, aby te grupy były większe.

Wreszcie mamy specjalne skróty, takie jak wywołanie sendfile () jądra, które jest ekspresową ścieżką z dysku do sieci przy minimalnym nakładzie pracy.

Możemy nawet routować w specjalnych przypadkach (przekazywanie pakietów z jednego interfejsu do drugiego), używając funkcji sprzętowych kart interfejsu sieciowego i traktując magistralę PCI jako magistralę między kartami, zamiast angażować procesor. Tego nie da się zrobić w systemach operacyjnych ogólnego przeznaczenia, ale dostawcy tacy jak Intel zapewniają biblioteki oprogramowania do implementacji takich funkcji na swoich kontrolerach Ethernet.

Odchodząc od procesorów, możemy nawet budować routery specjalnego przeznaczenia, w których wszystkie zadania przesyłania odbywają się sprzętowo. Ponieważ szyna PCI byłaby wówczas ograniczeniem, obsługują wiele równoległych magistral; lub nawet wiele równoległych magistrali do wielu równoległych zespołów przełączników poprzecznych. Na jednym końcu rynku jednym przykładem byłby mały przełącznik ethernetowy oparty na TCAM; na drugim końcu rynku Juniper M40 byłby kanonicznym projektem.

Typowy przełącznik zacznie odbierać pakiet, odszukać adres docelowy w TCAM, dołączyć tag z portem wyjściowym do pakietu, a następnie DMA wciąż przychodzący pakiet do kontrolera portu wyjściowego. Zauważ, że jeśli port wyjściowy jest zatłoczony, to wszystko, co można zrobić na tym prostym przełączniku, to wyrzucić pakiet wejściowy. Zatem proste przełączniki nie są dobrym wyborem, gdy łącza zmieniają prędkość i pożądane jest pewne kolejkowanie. Oczywiście istnieją bardziej wyrafinowane przełączniki, za które płacisz więcej.

Typowy router odbierze pakiet i zatrzyma go w krótkiej kolejce. Docelowy adres IP zostanie wyszukany w statycznej pamięci RAM, pakiet zostanie następnie rozbity na komórki w celu zmniejszenia opóźnień, a każda komórka zostanie wysłana do przełącznika poprzecznego na kartę wyjściową. Ta karta ponownie złoży komórki w pakiet i ustawi pakiet w kolejce przez interfejs wyjściowy. Kolejkowanie w interfejsie wyjściowym może być skomplikowane.


Świetna odpowiedź. Czy możesz opracować dalej the packet will then be exploded into cells to reduce latency?
Eddie

W konstrukcji routera można po prostu wysłać pakiet z jednej karty linii do drugiej za pomocą przełączania poprzecznego (lub innej magistrali między kartami). Ale wtedy opóźnienie jest związane z długością pakietu - miałbyś inne pełne opóźnienie transmisji pakietu, gdy pakiet jest wysyłany przez przełączanie poprzeczki. Aby tego uniknąć, możemy mieć wiele równoległych łączy w przełączaniu poprzeczki i podzielić pakiet na te łącza. Następnie opóźnienie dla dużych pakietów jest znacznie zmniejszone. Część pakietu podzielonego nazywa się „komórką”.
vk5tu

Wiem, że odpowiedź brzmi dwa lata temu, ale DZIĘKUJĘ TAK DUŻO. Miałem to samo pytanie co oryginalny plakat i znalazłem odpowiedź w moich poszukiwaniach. Jest bardzo dobrze napisany i dokładny. Dzięki!
Loneboat

0

Obecnie prawie całe przełączanie i duża część routingu odbywa się sprzętowo, więc wyjątek stanowi szybkość procesora. Na przykład w przypadku serwerów możliwe jest, że procesor nie jest wystarczająco szybki. Tak było w przeszłości. Kiedy po raz pierwszy pojawiła się sieć Ethernet 1 Gb / s, magistrala używana w komputerach i serwerach mogła obsłużyć tylko 400 Mb / s.

Gdy procesor nie jest wystarczająco szybki, ruch spada. Zresztą duży ruch może zostać zlikwidowany, ponieważ w ten sposób obsługiwane jest zatłoczenie, jeśli jest wykonane poprawnie. RED (Random Early Detection) to metoda używana do losowego upuszczania pakietów w kolejkach, aby zapobiec ich zapełnianiu i odrzucaniu pakietów. Pomoże to zapobiec synchronizacji TCP. Wiele spadków występuje na przełącznikach, gdzie wiele portów o prędkości może wymagać wysłania do innego pojedynczego portu o tej samej prędkości.


1
Powoduje to pomylenie odrzutów wejściowych z kroplami wyjściowymi. Odrzuty zwykle mają miejsce, gdy bufor pierścieniowy interfejsu Ethernet jest przepełniony - tak jak dzieje się, gdy procesor nie jest w stanie dotrzymać kroku prędkości odbierania danych. Ten bufor pierścieniowy jest zbyt mały, aby mógł zostać zaimplementowany RED.
vk5tu

@ vk5tu, nie zauważyłeś, że ruch cały czas spada, czy to na wejściu, czy na wyjściu. Jeśli jakakolwiek część systemu nie jest w stanie obsłużyć ruchu, niektóre zostaną usunięte, a inne celowo.
Ron Maupin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.