Udostępnij za pośrednictwem


Omówienie łączenia pakietów

Niektóre protokoły sieciowe IP w wersji 4 (IPv4) i IP w wersji 6 (IPv6) obejmują transmisję pakietów do adresów emisji lub multiemisji. Te pakiety są odbierane przez wiele hostów w podsieci IPv4/IPv6. W większości przypadków host, który odbiera te pakiety, nie wykonuje żadnych czynności z tymi pakietami. W związku z tym odbiór tych niechcianych pakietów multicast lub broadcast powoduje niepotrzebne przetwarzanie i zużycie energii w hoście odbierającym.

Na przykład host A wysyła żądanie rozpoznawania nazw multiemisji (LLMNR) link-local w podsieci IPv6 w celu rozpoznania nazwy hosta B. Z wyjątkiem hosta A to żądanie LLMNR jest odbierane przez wszystkie hosty w podsieci. Z wyjątkiem hosta B, stos protokołu TCP/IP uruchamiany na innych hostach sprawdza pakiet i określa, że pakiet nie jest przeznaczony dla niego. W związku z tym stos protokołu odrzuca pakiet i wywołuje NdisReturnNetBufferLists, aby zwrócić pakiet do sterownika miniportu.

Począwszy od NDIS 6.30, karty sieciowe mogą obsługiwać łączenie pakietów NDIS. Dzięki zmniejszeniu liczby przerwań odbierania przez łączenie losowych pakietów emisji lub multiemisji obciążenie przetwarzania i zużycie energii jest znacznie zmniejszone w systemie.

Łączenie pakietów obejmuje następujące kroki:

  1. Sterowniki wyższego poziomu, takie jak stos protokołu TCP/IP, definiują filtry odbioru NDIS, które są używane do filtrowania pakietów rozgłoszeniowych i multicastowych. Nadrzędne sterowniki pobierają te filtry do bazowego sterownika miniportu, obsługującego łączenie pakietów. Po pobraniu sterownik miniportu konfiguruje kartę sieciową z filtrami odbierania łączenia pakietów.

    Aby uzyskać więcej informacji na temat tych filtrów, zobacz Filtry odbiorcze łączenia pakietów.

  2. Odebrane pakiety zgodne z filtrami odbierania są buforowane lub łączonena karcie sieciowej. Adapter nie generuje przerwania odbioru dla skleconych pakietów. Zamiast tego adapter przerywa pracę hosta w przypadku wystąpienia innego zdarzenia sprzętowego.

    Po wygenerowaniu tego przerwania, adapter musi wskazywać zdarzenie odbioru z tym przerwaniem. Dzięki temu karta sieciowa przetwarza pakiety, które zostały odebrane przez kartę sieciową.

    Na przykład karta sieciowa obsługująca łączenie pakietów może wygenerować przerwanie odbierania, gdy wystąpi jedno z następujących zdarzeń:

    • Wygaśnięcie timera sprzętowego, którego czas wygaśnięcia jest ustawiony na maksymalną wartość opóźnienia koalescencji pasującego filtru odbierania.

    • Dostępne miejsce w buforze sprzętowego scalenia osiąga niski próg określony przez adapter.

    • Otrzymano pakiet, który nie jest zgodny z filtrem scalania.

    • Wystąpiło inne zdarzenie przerwania, takie jak zdarzenie zakończenia wysyłki.

    Aby uzyskać więcej informacji na temat tego procesu, zobacz Obsługa filtrowania odbioru pakietów.

Następujące kwestie mają zastosowanie do obsługi łączenia pakietów przez NDIS:

  • Usługa NDIS umożliwia scalanie pakietów dla pakietów odebranych na domyślnym porcie NDIS (port 0) przypisanym do fizycznej karty sieciowej. Usługa NDIS nie obsługuje koalescencji pakietów na portach NDIS przypisanych do wirtualnych kart sieciowych. Aby uzyskać więcej informacji, zobacz Omówienie portów NDIS.

  • Usługa NDIS obsługuje łączenie pakietów dla pakietów odebranych w domyślnej kolejce odbierającej karty sieciowej. Ta kolejka odbierania ma identyfikator NDIS_DEFAULT_RECEIVE_QUEUE_ID.