Udostępnij przez


Wykluczanie dostarczania pakietów do rozszerzalnych portów docelowych przełącznika

W tym temacie opisano, jak rozszerzenia przełącznika rozszerzalnego Hyper-V mogą wykluczać przekazywanie pakietów do rozszerzalnych portów przełącznika. Porty docelowe pakietu są określone w kontekście przekazywania poza pasmem (OOB) w strukturze NET_BUFFER_LIST pakietu. Aby uzyskać więcej informacji na temat tego kontekstu, zobacz Hyper-V Extensible Switch Forwarding Context.

Uwaga Ta strona zakłada, że znasz informacje i diagramy w Omówienie przełącznika rozszerzalnego Hyper-V oraz Przekazywanie hybrydowe.

Uwaga W interfejsie rozszerzalnego przełącznika sterowniki filtrów NDIS są znane jako rozszerzenia przełącznika rozszerzalnego , a stos sterowników jest znany jako rozszerzalny stos sterowników przełącznika. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Hyper-V Rozszerzalne rozszerzenia przełącznika.

Rozszerzenia filtrowania i przesyłania dalej mogą wykluczać dostarczanie pakietów uzyskanych na ścieżkach danych wewnątrz lub na zewnątrz przełącznika rozszerzalnego. Wykluczanie dostarczania pakietów można wykonać w następujący sposób:

  • Rozszerzenie może odrzucić pakiet, poprzez wypełnienie żądania pakietu lub jego wskazania. Wyklucza to dostarczanie pakietu do dowolnego rozszerzalnego portu przełącznika. Ta metoda może być używana w pakietach, które mają co najmniej jeden port docelowy.

    W przypadku pakietów uzyskanych na ścieżce danych wejściowych przełącznika rozszerzalnego, rozszerzenie kończy żądanie wysyłania pakietów przez wywołanie NdisFSendNetBufferListsComplete.

    W przypadku pakietów uzyskanych na ścieżce wyjściowej danych przełącznika rozszerzalnego, rozszerzenie kończy wskazanie odbioru pakietów przez wywołanie NdisFReturnNetBufferLists.

  • W przypadku pakietów uzyskanych na ścieżce danych ruchu wychodzącego z wieloma portami docelowymi rozszerzenie może wykluczyć dostarczanie pakietów, modyfikując dane dla co najmniej jednego portu docelowego. Przedłużenie robi to poprzez ustawienie elementu członkowskiego IsExcluded struktury NDIS_SWITCH_PORT_DESTINATION portu docelowego na wartość jeden. Ta metoda umożliwia dostarczenie pakietu do tych portów, których wartość IsExcluded jest ustawiona na zero.

    Uwaga Pakiety uzyskane na ścieżce danych ruchu przychodzącego nie zawierają portów docelowych. Te dane są dostępne tylko po tym, jak rozszerzalny przełącznik przekazuje pakiet w górę ścieżki danych wychodzących.

Po tym jak rozszerzenie zmodyfikowało wartość IsExcluded portu docelowego, musi przekazać pakiet w ścieżce danych wychodzącej do nadrzędnych rozszerzeń. Jeśli jednak dane IsExcluded dla wszystkich portów docelowych pakietu są ustawione na jeden, rozszerzenie powinno odrzucić pakiet, kończąc wskazanie odbioru pakietu zamiast przekazywać go dalej.

Uwaga Gdy rozszerzenie ustawiło wartość IsExcluded portu docelowego na jedną, nadmierne rozszerzenia na ścieżce danych ruchu wychodzącego nie mogą zmienić tej wartości na zero.

Uwaga rozszerzenia przechwytywania nie mogą uniemożliwić dostarczania pakietów do portów przełącznika rozszerzalnego.

Rozszerzenia filtrowania i przekazywania muszą być zgodne z tymi wytycznymi dotyczącymi wykluczania dostarczania pakietów do rozszerzalnych portów przełączników:

  • Na ścieżce danych wejściowych rozciągalnego przełącznika, rozszerzenia filtrowania i przekazywania mogą wykluczać dostarczanie pakietów na podstawie kryteriów polityki dotyczących portu źródłowego lub danych pakietu.

    Informacje o porcie źródłowym są przechowywane w unii NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO w danych OOB struktury NET_BUFFER_LIST pakietu. Rozszerzenie uzyskuje dane przy użyciu makra NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL.

    Jeśli rozszerzenie wyklucza dostarczanie pakietu uzyskanego ze ścieżki danych ruchu przychodzącego, musi odrzucić pakiet, wypełniając żądanie wysłania pakietu.

  • Na rozszerzalnej ścieżce danych wejściowych przełącznika, na którym działają rozszerzenia, rozszerzenia odpowiedzialne za przekazywanie określają porty docelowe pakietu i dodają te informacje do danych OOB pakietu. Na podstawie kryteriów zasad wymuszanych przez rozszerzenie może wykluczyć dostarczanie pakietów do portu, nie dodając informacji o porcie docelowym do danych OOB.

    Aby uzyskać więcej informacji na temat tej procedury, zobacz Dodawanie rozszerzalnych danych portów docelowych przełącznika do pakietu.

  • Na rozszerzonej ścieżce danych wychodzących przełącznika filtrowanie i rozszerzenia przekazywania danych mogą wykluczyć dostarczanie pakietu na podstawie kryteriów polityki. Na przykład filtrowanie rozszerzeń może wykluczać dostarczanie pakietów na podstawie kryteriów zasad dla portu źródłowego lub portów docelowych pakietu.

    Rozszerzenia wykluczają dostarczanie pakietu do portów docelowych, wykonując następujące kroki:

    1. Rozszerzenie uzyskuje porty docelowe pakietu, wywołując GetNetBufferListDestinations. Jeśli wywołanie zwróci NDIS_STATUS_SUCCESS, parametr Destinations zawiera wskaźnik do struktury NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY. Ta struktura określa porty docelowe rozciągliwego przełącznika pakietów. Każdy port docelowy jest sformatowany jako struktura NDIS_SWITCH_PORT_DESTINATION.

      Uwaga Jeśli NumDestinations członek struktury NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY ma wartość zero, pakiet nie ma danych dla portów docelowych.

  1. Rozszerzenie wyklucza dostarczanie pakietów do portu rozszerzalnego przełącznika, ustawiając element IsExcluded w strukturze portu docelowego NDIS_SWITCH_PORT_DESTINATION na wartość jeden.

    Uwaga Jeśli rozszerzenie wyklucza dostarczanie pakietu do wszystkich portów docelowych, rozszerzenie musi usunąć pakiet, wypełniając wskazanie odbioru pakietu.

  2. Jeśli rozszerzenie wyklucza dostarczanie do jednego lub wszystkich portów docelowych w pakiecie, musi wykonać następujące czynności:

    • Rozszerzenie musi wywołać UpdateNetBufferListDestinations, aby zatwierdzić te zmiany w danych OOB pakietu.

    • Rozszerzenie musi wywoływać ReportFilteredNetBufferLists. Po wywołaniu tej funkcji rozszerzalny interfejs przełącznika zwiększa liczniki i rejestruje zdarzenia dla wykluczonego pakietu. Rozszerzenie musi wykonać to wywołanie, zanim przekaże pakiet do rozszerzonej ścieżki danych przełącznika, z której uzyskał pakiet.

    Podobnie, jeśli rozszerzenie zakończy żądanie wysłania pakietu lub wskazanie wykluczenia dostarczania pakietu do wszystkich portów, musi również wywołać ReportFilteredNetBufferLists.

    Uwaga Rozszerzenie może utworzyć połączoną listę struktur NET_BUFFER_LIST dla pakietów wykluczających rozszerzenie. Gdy rozszerzenie wywołuje ReportFilteredNetBufferLists, ustawia parametr NetBufferLists na wskaźnik wskazujący na połączoną listę.

Aby uzyskać więcej informacji na temat ścieżek danych przychodzących i wychodzących rozszerzalnego przełącznika, zobacz Hyper-V Ścieżki Danych Rozszerzalnego Przełącznika.