Udostępnij przez


Konfiguracja RSS

Aby uzyskać informacje o konfiguracji RSS, nadrzędny sterownik może wysłać zapytanie dotyczące OID OID_GEN_RECEIVE_SCALE_CAPABILITIES do sterownika miniportu. NDIS udostępnia również informacje o konfiguracji RSS do nadrzędnych sterowników protokołu w strukturze NDIS_BIND_PARAMETERS podczas inicjowania.

Sterownik wierzchni wybiera funkcję haszującą, typ i tabelę pośrednią. Aby ustawić te opcje konfiguracji, sterownik wysyła żądanie ustawienia identyfikatorów OID OID_GEN_RECEIVE_SCALE_PARAMETERS sterownikowi miniportu. Nadmierne sterowniki mogą również wysyłać zapytania dotyczące tego identyfikatora OID, aby uzyskać bieżące ustawienia RSS. Bufor informacji identyfikatora OID OID_GEN_RECEIVE_SCALE_PARAMETERS zawiera wskaźnik do struktury NDIS_RECEIVE_SCALE_PARAMETERS.

Nadrzędny sterownik może wyłączyć funkcjonalność RSS na karcie sieciowej. W takim przypadku sterownik ustawia flagę NDIS_RSS_PARAM_FLAG_DISABLE_RSS w elemencie Flags struktury NDIS_RECEIVE_SCALE_PARAMETERS. Po ustawieniu tej flagi sterownik miniportu powinien ignorować wszystkie inne flagi i ustawienia i wyłączyć funkcję RSS na karcie NIC.

NDIS przetwarza parametry OID_GEN_RECEIVE_SCALE przed przekazaniem ich do sterownika miniportu i aktualizuje standardowy parametr RSS karty miniportu, jeśli jest to wymagane. Aby uzyskać więcej informacji na temat słowa kluczowego *RSS , zobacz Ustandaryzowane słowa kluczowe INF dla funkcji RSS.

Po otrzymaniu żądania ustawienia OID_GEN_RECEIVE_SCALE_PARAMETERS z ustawioną flagą NDIS_RSS_PARAM_FLAG_DISABLE_RSS, sterownik miniportu powinien przywrócić stan RSS karty sieciowej do stanu początkowego po jej zainicjowaniu. W związku z tym, jeśli sterownik miniportu otrzyma kolejne żądanie ustawienia OID_GEN_RECEIVE_SCALE_PARAMETERS, w którym flaga NDIS_RSS_PARAM_FLAG_DISABLE_RSS jest wyczyszczona, wszystkie parametry powinny mieć te same wartości, jakie zostały ustawione po otrzymaniu przez sterownik miniportu tego żądania po raz pierwszy po inicjalizacji adaptera miniportu.

Sterownik nadrzędny może używać OID OID_GEN_RECEIVE_HASH do włączania i konfigurowania obliczeń skrótów na odebranych ramkach bez włączania funkcji RSS. Sterowniki nadrzędne mogą również wysyłać zapytania dotyczące tego OID, aby uzyskać bieżące ustawienia skrótu odbierania.

Bufor informacji dla OID OID_GEN_RECEIVE_HASH zawiera odniesienie do struktury NDIS_RECEIVE_HASH_PARAMETERS. W przypadku ustawionego żądania OID określa parametry skrótu, których powinien używać adapter miniportu. W przypadku żądania zapytania identyfikator OID zwraca parametry skrótu używane przez adapter miniportu. Ten OID jest opcjonalny dla sterowników obsługujących funkcję RSS.

Uwaga Jeśli obliczanie skrótu odbioru jest włączone, NDIS wyłącza je, zanim włączy funkcję RSS. Jeśli funkcja RSS jest włączona, usługa NDIS wyłącza funkcję RSS, zanim włączy obliczanie skrótu odbierania.

Wszystkie karty miniportu obsługiwane przez sterownik miniportu muszą zapewnić te same ustawienia konfiguracji skrótu dla wszystkich dalszych połączeń protokołowych. Ten identyfikator OID również zawiera klucz tajny, który musi być używany przez sterownik miniportu lub kartę sieciową do obliczeń skrótu. Klucz ma długość 320 bitów (40 bajtów) i może zawierać dowolne dane wybrane przez sterownik nadrzędny, na przykład losowy strumień bajtów.

Aby ponownie zrównoważyć obciążenie przetwarzania, nadrzędny sterownik może ustawić parametry RSS i zmodyfikować tabelę pośrednią. Zwykle wszystkie parametry są niezmienione z wyjątkiem tabeli pośredniej. Jednak po zainicjowaniu funkcji RSS nakładający się sterownik może zmienić inne parametry inicjowania RSS. W razie potrzeby sterownik miniportu może zresetować sprzęt karty sieciowej, aby zmienić funkcję skrótu, klucz skrótu, typ skrótu, podstawowy numer procesora CPU lub liczbę bitów używanych do indeksowania tabeli pośredniej.

Uwaga Nadrzędny sterownik może ustawić te parametry w dowolnym momencie. Może to powodować nieuporządkowane sygnały odbioru. Sterowniki miniportów, które obsługują protokół TCP, nie muszą opróżniać swoich kolejek odbieranych w tym przypadku.

Na poniższej ilustracji przedstawiono przykładowe treści dla dwóch wystąpień tabeli pośredniej.

Diagram ilustrujący zawartość dwóch wystąpień tabeli pośredniej RSS z czterema konfiguracjami procesora i 64 wpisami.

W poprzedniej konfiguracji przyjęto założenie, że w użyciu jest konfiguracja z czterema procesorami, a liczba najmniej znaczących bitów wykorzystywanych z wartości skrótu wynosi 6 bitów. W związku z tym tabela pośrednia zawiera 64 wpisy.

Na rysunku tabela A zawiera listę wartości w tabeli pośredniej bezpośrednio po zainicjowaniu. Później, w miarę jak zmienia się normalne obciążenie ruchu, obciążenie procesora staje się niezrównoważone. Górny sterownik wykrywa stan niezrównoważenia i próbuje zrównoważyć obciążenie, definiując nową tabelę przekierowań. Tabela B zawiera listę nowych wartości tabeli pośredniej. W tabeli B niektóre obciążenia z procesora CPU 2 są przenoszone do procesorów CPU 1 i 3.

Uwaga Gdy tabela pośrednia zostanie zmieniona, przez krótki czas (podczas gdy są przetwarzane bieżące kolejki deskryptorów odbiorczych), pakiety mogą być przetwarzane na nieprawidłowym procesorze. Jest to normalny stan przejściowy.

Rozmiar tabeli pośredniej wynosi zazwyczaj od dwóch do ośmiu razy liczby procesorów w systemie.

Gdy sterownik miniportu dystrybuuje pakiety do CPU, jeśli jest zbyt wiele CPU, wysiłek włożony w dystrybucję obciążenia może stać się nadmierny. W takim przypadku nadbudowane sterowniki powinny wybrać podzbiór procesorów, na których odbywa się przetwarzanie danych sieciowych.

W niektórych przypadkach liczba dostępnych sprzętowych kolejek odbiorczych może być mniejsza niż liczba CPU w systemie. Sterownik miniportu musi zbadać tablicę pośrednią, aby określić numery CPU do skojarzenia z kolejkami sprzętowymi. Jeśli łączna liczba różnych numerów CPU wyświetlanych w tabeli przekierowań jest większa niż liczba kolejek sprzętowych obsługiwanych przez kartę sieciową, sterownik miniportu musi wybrać podzbiór numerów CPU z tabeli przekierowań. Liczebność podzbioru jest równa liczbie kolejek sprzętowych. Sterownik miniportu uzyskał parametr IndirectionTableSize z OID_GEN_RECEIVE_SCALE_PARAMETERS. Sterownik miniportu określił wartość NumberOfReceiveQueues w odpowiedzi na OID_GEN_RECEIVE_SCALE_CAPABILITIES.