Wprowadzenie do TCP/IP Offload Engine

0

Ethernet jest stosunkowo tani, a jego wdrożenie całkiem proste. Duża popularność tej technologii doprowadziła do opracowania kilku wersji tego standardu i osiągnięcia przepustowości 10 Gbit/s. Szybki wzrost przepustowości wyprzedził rozwój procesorów i, w efekcie, wąskim gardłem w sieci stały się właśnie procesory serwerów. Rozwiązaniem problemu jest TCP/IP Offload Engine.

Głównym powodem powstawania wąskich gardeł w szybkich sieciach Ethernet jest fakt, że procesor nie nadąża z przetwarzaniem stosu TCP/IP za przepustowością interfejsu sieciowego. TCP/IP Offload Engine (TOE) redukuje ilość operacji związanych z przetwarzaniem stosu TCP/IP przez procesor i podsystemy wejścia/wyjścia. Wdrożenie TOE z reguły ma miejsce w sieciach o wysokiej przepustowości, które muszą pracować z pełną wydajnością, żeby zapewnić prawidłowe działanie aplikacji. Przykładowo, do wdrażania sieci 10 GE przyczyniają się pamięci masowe komunikujące się z serwerami przez protokół iSCSI. Wtedy problemem jest wysoki narzut związany z przetwarzaniem stosu TCP/IP przez serwery.

Tradycyjnie stos TCP/IP w sieciach Ethernet jest obsługiwany przez oprogramowanie działające na centralnym procesorze serwera, np. stos TCP/IP zaimplementowany w systemie operacyjnym. Wraz ze wzrostem przepustowości sieci, procesor musi wykonywać coraz więcej operacji związanych z obsługą komunikacji sieciowej. W sieciach o dużej przepustowości więcej czasu procesora jest poświęcane na obsługę stosu TCP/IP niż właściwych aplikacji działających na serwerze. Z grubsza szacuje się, że od obsługi transmisji jednego bita na sekundę potrzeba jednego herca czasu procesora. Co oznacza, że do obsługi transmisji z pełną szybkością 10 GE potrzeba procesora pracującego z częstotliwością 20 GHz.

Implementacja TOE
TOE może być wbudowany w kartę sieciową lub kartę HBA. Producenci umieszczają TOE w procesorze sieciowym lub specjalizowanym układzie ASIC (ang. Application Specific Integrated Circuit). Rozwiązania wbudowane w procesor są bardziej elastyczne i umożliwiają dodawanie nowych funkcji, natomiast korzystanie z układów ASIC pozwala osiągnąć lepszą wydajność, ale z ograniczonymi możliwościami dodawania nowych funkcji.

Za przetwarzanie stosu protokołów w TOE odpowiada RTOS (Real-Time Operating System) działający na procesorze karty sieciowej lub HBA. Standardowe karty przetwarzają transmisję sieciową na poziomie warstwy fizycznej, natomiast TOE przejmuje jeszcze przetwarzanie warstwy sieciowej i transportowej. Poza tym, w zależności od implementacji, RTOS może również przetwarzać protokoły warstwy aplikacji. Takie podejście daje większą elastyczność, ale mogą pojawić się problemy z zapewnieniem wystarczającej wydajności w przypadku 10 GE. Natomiast układy ASIC to czysto sprzętowe rozwiązanie, zoptymalizowane pod kątem wydajności, ale kosztem elastyczności.

Implementacja TOE w systemie operacyjnym
TOE zadziała tylko w parze z przygotowanym do obsługi tej technologii systemem operacyjnym. Systemy Windows mają wbudowany mechanizm Chimney Offload, który pozwala na przetwarzanie stosu TCP/IP przez adapter sieciowy. W tej architekturze tworzone są bezpośrednie połączenia (kominy) między aplikacjami a adapterami sieciowymi. Specyfikacja Interfejsu Sterowników Sieciowych (ang. Network Driver Interface Specification, NDIS) od wersji 6.0 obsługuje pełne TOE.

Linux standardowo nie obsługuje TOE, ale można skorzystać z patchy przygotowanych przez producentów sprzętu, m.in. firmę Chelsio. W jądro Linuksa obsługa TOE nie jest wbudowana, ponieważ jego twórcy są przeciwni tej technologii. Argumentami przeciw są kwestie bezpieczeństwa i złożoność (np. TOE wymaga wprowadzenia wielu zmian w stosie).

Inne rozwiązanie zastosowano w kartach iSCSI HBA. Adapter jest widziany przez system operacyjny jako kontroler dysku i przejmuje nie tylko przetwarzanie stosu TCP/IP, ale również funkcje inicjatora iSCSI. To rozwiązanie może być używane tylko do komunikacji z urządzeniami iSCSI, nie nadaje się do obsługi innej komunikacji sieciowej.

  • Przetwarzanie stosu TCP/IP
  • Możemy wyróżnić kilka faz przetwarzania stosu TCP/IP:
  • nawiązywanie połączeń,
  • wysyłanie i odbieranie danych,
  • zamykanie połączeń,
  • obsługa błędów.

W przypadku pełnego TOE wszystkie fazy TCP są przetwarzane sprzętowo. TOE przejmuje nie tylko przetwarzanie danych, ale również zarządzanie połączeniami. W środowiskach, w których występuje wiele błędów i nawiązywanych jest wiele połączeń, pełne TOE przyniesie znaczne korzyści.

Jeśli w środowisku rzadko dochodzi do utraty pakietów, a połączenia są utrzymywane przez stosunkowo długi okres, najwięcej obliczeń wymaga przetwarzanie transmisji danych. W tym przypadku zadania TOE skupiają się na fazie wysyłania i odbierania danych, natomiast za przetwarzanie pozostałych faz może odpowiadać główny procesor. Jednak niezależnie od specyfiki środowiska, w sieciach 10 GE zastosowanie TOE przynosi duże korzyści.

Wydajność TOE
Wydajność TOE można oceniać pod kątem przepustowości, obciążenia procesora głównego oraz opóźnień. Przepustowość zawsze była podstawowym wskaźnikiem wydajności sieci i wykorzystuje się ją do porównywania wydajności adapterów z wbudowanym TOE oraz adapterów bez TOE.

Obciążenie procesora jest podstawowym wskaźnikiem w przypadku serwerów. Dwa podstawowe elementy wpływają na wykorzystanie procesora przez transmisję sieciową: ilość przesyłanych danych oraz liczba transakcji wymaganych do przesłania tych danych. Tradycyjnie karty sieciowe używają standardowych ramek o wielkości 1500 bajtów. W tej sytuacji przesłanie 3000 bajtów wymaga trzech transakcji: dwóch pakietów z przesyłanymi danymi oraz jednego pakietu potwierdzenia. TOE potrafi ograniczyć liczbę transakcji wymaganych do transmisji danych, wykorzystując fakt, że aplikacje z reguły odczytują i zapisują dane w dużych blokach (wiadomości z dużymi załącznikami, strony internetowe z elementami multimedialnymi to typowy ruch w sieci).

Jeśli aplikacja odczytuje i zapisuje dane w dużych blokach, znacznie zmniejsza się obciążenie serwera. Typowa operacja odczytu i zapisu 32 KB danych oznacza wykonanie ponad 30 transakcji (ponad 20 pakietów z danymi i 10 pakietów potwierdzeń) w konwencjonalnej technologii. TOE znacznie redukuje liczbę transakcji pomiędzy serwerem a adapterem sieciowym, ponieważ przetwarzanie wszystkich pakietów z danymi i potwierdzeń odbywa się na poziomie adaptera. Dane są przenoszone do bufora aplikacji przez sprzętowy silnik DMA.

Kolejnym miernikiem wydajności są opóźnienia, na które TOE również ma wpływ. Zmniejszenie liczby transakcji w obrębie pamięci operacyjnej i urządzeń wejścia/wyjścia pomaga skrócić czas oczekiwania na szynę systemową i zmniejszenie opóźnień. Dzięki TOE adapter sieci może szybciej odpowiadać na żądania, co przyspiesza komunikację między urządzeniami sieciowymi.

Zastosowania
Możliwość ograniczenia wymagań związanych z obsługą transmisji TCP/IP przez procesor umożliwia wkroczenie technologii Ethernet na nowe obszary, np. obsługę iSCSI czy dowolnego systemu pamięci masowej wykorzystującej protokół IP. TOE redukuje obciążenie procesora na obu urządzeniach końcowych: pamięci masowej zawierającej dane oraz urządzeniu korzystającemu z tych danych. Jednak TOE nie zawsze jest potrzebny do efektywnego działania aplikacji korzystających z sieciowych pamięci masowych.

W przypadku bramki NAS połączonej z serwerami siecią 1 GE, serwery mogą działać wydajnie, korzystając ze stosu TCP/IP wbudowanego w system operacyjny. Natomiast bramka NAS, agregująca ruch od wielu serwerów, powinna być podłączona do macierzy dyskowych interfejsem 10 GE. Dlatego w przypadku tego urządzenia zastosowanie TOE będzie jak najbardziej wskazane. Wraz ze wzrostem transmisji przechodzącej przez bramkę, zamiast dodawać kolejny procesor, wystarczy wyposażyć ją w kartę sieciową z TOE.

Analogiczna sytuacja występuje w przypadku serwerów podłączonych siecią 1 GE do kontrolera IP SAN. W TOE wystarczy wyposażyć tylko kontroler, który agreguje ruch z wielu serwerów.

PODZIEL SIĘ

BRAK KOMENTARZY

ZOSTAW ODPOWIEDŹ