Udostępnij przez


Hyper-V rozszerzalne flagi wysyłania i odbierania przełącznika

Uwaga Ta strona zakłada, że znasz informacje i diagramy zawarte w Przegląd rozszerzalnego przełącznika Hyper-V oraz przekazywanie hybrydowe.

Ruch pakietów przechodzący przez ścieżkę danych przełącznika rozszerzalnego Hyper-V jest pozyskiwany przez rozszerzenia w następujący sposób:

  • Rozszerzenie uzyskuje pakiet ze ścieżki danych ruchu przychodzącego, gdy jest wywoływana funkcja FilterSendNetBufferLists. Rozszerzenie przekazuje pakiet do podstawowych rozszerzeń na przychodzącej ścieżce danych, wywołując NdisFSendNetBufferLists. Rozszerzenia filtrowania i przesyłania dalej mogą również usuwać pakiet z wejściowej ścieżki danych, wywołując NdisFSendNetBufferListsComplete.

  • Rozszerzenie uzyskuje pakiet ze ścieżki danych wychodzących, gdy wywoływana jest jego funkcja FilterReceiveNetBufferLists. Rozszerzenie przekazuje pakiet do nadrzędnych rozszerzeń na ścieżce wychodzących danych, wywołując NdisFIndicateReceiveNetBufferLists. Rozszerzenia filtrowania i przesyłania dalej mogą również usuwać pakiet ze ścieżki danych wychodzących, wywołując NdisFReturnNetBufferLists.

Następujące flagi można ustawić w SendFlags parametrze FilterSendNetBufferLists lub NdisFSendNetBufferLists:

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
Jeśli ta flaga jest ustawiona, wszystkie pakiety na połączonej liście struktur NET_BUFFER_LIST pochodzą z tego samego portu źródłowego przełącznika rozszerzalnego Hyper-V.

Gdy NDIS wywołuje FilterSendNetBufferLists, ustawi tę flagę, jeśli rozszerzalny interfejs przełącznika rozszerzalnego zgrupował wiele pakietów z tego samego portu źródłowego. Aby uzyskać najlepszą wydajność, rozszerzenia powinny zachować to grupowanie i ustawić tę flagę, gdy wywołuje NdisFSendNetBufferLists. Rozszerzenie może również dodać wszystkie pakiety pochodzące lub sklonowane do połączonej listy struktur NET_BUFFER_LIST, jeśli rozszerzenie używa tego samego portu źródłowego co inne pakiety na liście.

Uwaga Jeśli każdy pakiet na połączonej liście struktur NET_BUFFER_LIST używa tego samego portu źródłowego, rozszerzenie powinno ustawić flagę NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE w SendCompleteFlags parametru NdisFSendNetBufferListsComplete po zakończeniu żądania wysyłania.

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
Jeśli ta flaga jest ustawiona, wszystkie pakiety na połączonej liście struktur NET_BUFFER_LIST mają być przekazywane do tego samego rozszerzalnego portu docelowego przełącznika.

Rozszerzenie przekazujące może używać tej flagi dla połączonej listy struktur NET_BUFFER_LIST, które przekazuje na ścieżce danych przychodzących po określeniu portów docelowych każdego pakietu. Flaga ta jest wykorzystywana i usuwana przez wewnętrzny miniport przełącznika rozszerzalnego, zanim przekaże pakiety w górę ścieżki danych wyjściowych.

Przechwytywanie i filtrowanie rozszerzeń nie może używać tej flagi.

Uwaga Rozszerzenie przekazywania określa tylko porty docelowe pakietu dla pakietów innych niż NVGRE. Jeśli pakiet jest pakietem NVGRE, składnik Hyper-V Network Virtualization (HNV) określa porty docelowe pakietu i przekazuje pakiet. Aby uzyskać więcej informacji, zobacz Hybrydowe Przekazywanie.

Aby uzyskać najlepszą wydajność, rozszerzenia przekazujące powinny ustawić tę flagę, jeśli wszystkie pakiety na liście połączonej mają być przekazywane do tego samego portu docelowego. Ustawiając tę flagę, rozszerzenie potwierdza, że wszystkie pakiety na liście połączonej mają te same elementy portów docelowych w rozszerzalnym kontekście przekazywania przełącznika.

Uwaga Rozszerzenie przekazywania nie może ustawić tej flagi dla połączonej listy pakietów, które mają wiele portów docelowych.

Następujące flagi mogą być ustawione w parametrze ReceiveFlags dla FilterReceiveNetBufferLists lub NdisFIndicateReceiveNetBufferLists:

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
Jeśli ta flaga jest ustawiona, wszystkie pakiety na połączonej liście struktur NET_BUFFER_LIST pochodzą z tego samego portu źródłowego przełącznika rozszerzalnego Hyper-V.

Gdy NDIS wywołuje FilterReceiveNetBufferLists, ustawi tę flagę, jeśli przełącznik rozszerzalny zgrupował wiele pakietów z tego samego portu źródłowego. Aby uzyskać najlepszą wydajność, rozszerzenia powinny zachować to grupowanie i ustawić tę flagę podczas wywoływania funkcji NdisMIndicateReceiveNetBufferLists. Rozszerzenia powinny również dodać wszystkie pakiety pochodzące lub sklonowane do połączonej listy struktur NET_BUFFER_LIST, jeśli pakiet ma ten sam port źródłowy co inne pakiety na liście.

Uwaga Jeśli każdy pakiet na połączonej liście struktur NET_BUFFER_LIST używa tego samego portu źródłowego, rozszerzenie powinno ustawić flagę NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE w parametrze ReturnFlags w FilterReturnNetBufferLists, gdy żądanie odbioru zostanie zakończone. Rozszerzenie musi ustawić tę flagę w parametrze ReturnFlags, jeśli wywołuje NdisFReturnNetBufferLists, aby zwrócić pakiety, które nie zostały przez to rozszerzenie utworzone ani sklonowane.

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
Jeśli ta flaga jest ustawiona, wszystkie pakiety na połączonej liście struktur NET_BUFFER_LIST mają być przekazywane do tego samego rozszerzalnego portu docelowego przełącznika.

Gdy NDIS wywołuje FilterReceiveNetBufferLists, ustawi tę flagę, jeśli przełącznik rozszerzalny zgrupował wiele pakietów, które mają te same porty docelowe. Aby uzyskać najlepszą wydajność, rozszerzenia powinny zachować to grupowanie i ustawić tę flagę podczas wywoływania funkcji NdisMIndicateReceiveNetBufferLists. Rozszerzenia powinny również dodać wszystkie pakiety pochodzące lub sklonowane do połączonej listy struktur NET_BUFFER_LIST, jeśli pakiet ma te same porty docelowe co inne pakiety na liście.

Uwaga Gdy rozszerzenie wywołuje NdisFIndicateReceiveNetBufferLists, nie może ustawić flagi NDIS_RECEIVE_FLAGS_RESOURCES w parametrze ReceiveFlags. Rozszerzalny interfejs przełącznika ignoruje tę flagę i zakończy proces odbioru, wywołując FilterReturnNetBufferLists.