Inteligentne karty sieciowe
- NetWorld,
- 01.01.2002
Podwajanie wydajności procesorów co 18 miesięcy blednie w porównaniu z dziesięciokrotnym wzrostem szybkości sieci notowanym co trzy lata. Jak więc powinna wyglądać architektura interfejsu, jeśli weźmie się pod uwagę dominujące obecnie protokoły TCP/IP?
Podwajanie wydajności procesorów co 18 miesięcy blednie w porównaniu z dziesięciokrotnym wzrostem szybkości sieci notowanym co trzy lata. Jak więc powinna wyglądać architektura interfejsu, jeśli weźmie się pod uwagę dominujące obecnie protokoły TCP/IP?
Kluczem do rozwiązania problemu jest uwolnienie jednostki CPU od operacji związanych z przetwarzaniem protokołu TCP.
W przeszłości próbowano odciążyć CPU, lokalizując przetwarzanie stosu protokołu TCP w karcie sieciowej wyposażonej w procesor. Umieszczony na karcie uniwersalny procesor przetwarzał stos protokołów TCP. Podejście takie stwarzało problemy koordynacji, które zwiększały się, gdy tylko w tym samym systemie instalowano drugi adapter.
Jak to działa
Aby uwolnić jednostki CPU systemu od przetwarzania nagłówków pakietów, zadania te muszą wykonywać adaptery. Kod typowego programu obsługującego stos protokołów TCP/IP ma około 20 000 linii. Jest to znacznie więcej, niż mogą sprawnie obsłużyć konkurencyjne pod względem ceny karty sieciowe. Ponadto przy szybkościach gigabitowych obsługa stosu TCP/IP jest w takim stopniu złożona, że pochłania całą moc obecnie dostępnych najszybszych procesorów Pentium. Aby wykonać przetwarzanie nagłówków pakietu na niedrogich kartach, potrzebny jest raczej specjalizowany, przetwarzający sprzęt sieciowy, nie zaś uniwersalna jednostka CPU.
W celu uproszczenia ścieżki przetwarzania TCP/IP stos protokołu hosta zajmuje się tylko:
W metodzie tej adapter jest obciążany tylko przetwarzaniem niesfragmentowanych połączeń TCP, ścieżka przez stos TCP jest określana jako szybka. Ponieważ obsługa tak wielu ścieżek kodowych TCP jest wyeliminowana ze stosu sprzętowego, korzyści mogą być kwestionowane.
Badania wykazały, że adaptery serwerowe mogą być kilkaset razy sprawniejsze od tradycyjnych kart sieciowych.
Główną barierą efektywnego rozdzielenia przetwarzania protokołu TCP pomiędzy adapter a stos hosta stanowi koordynacja zarządzania stanem TCP dla każdego aktywnego połączenia. Do jej pokonania konieczna jest precyzyjna metoda przenoszenia kontekstu informacji, zapewniająca transfer pomiędzy stosem hosta a stosem sprzętowym na karcie.
Z adapterem wykonującym przetwarzanie szybkiej ścieżki (fast path), interfejs hosta zarządza danymi w warstwie sesji. Host, zamiast formować segmenty TCP i umieszczać te segmenty w ramkach Ethernetu, zarządza ruchem danych w większych blokach na poziomie interfejsu sesji, niezależnie od rozmiaru okna TCP i niewiadomego rozmiaru medium. Po stronie odbiorcy dane sesji (a nie pakiety) są bezpośrednio przesyłane z adaptera do określonego miejsca przeznaczenia w pamięci, zajmując jednorazowo systemową szynę dostępu do pamięci.
Nagłówki nie są przetwarzane, CPU systemu nie wylicza sum kontrolnych, jedynie kopiuje niewielkie ilości danych. Nigdy nie przekazuje się pojedynczych pakietów sieciowych do pamięci podręcznej CPU, co pozwala systemowi przechowywać w niej ważne dane i polecenia. W modelu przesyłania danych sesji i przetwarzaniu potwierdzeń adaptera występuje kilka operacji PCI. Liczba przerwań zmniejsza się do zaledwie dwu dla 64 kb sesji czytającej i jednego dla 64 kb sesji piszącej.
Nowa generacja mechanizmów odciążających TCP rozdziela przetwarzanie protokołów TCP/IP pomiędzy obsługę wyjątków przez host a obsługę danych realizowaną sprzętowo przez adapter. Kluczem do tej technologii jest zarządzanie przejściem kontekstu połączenia TCP pomiędzy adapter a host. Technologia ta jest znacznie efektywniejsza od tradycyjnych interfejsów sieciowych, ponieważ host zarządza tylko danymi w warstwie sesji, zamiast zarządzać sesją i danymi na poziomie pakietów.