Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano, jak rozszerzenia Hyper-V generują nowe pakiety i wstrzykują je do ścieżki danych przełącznika rozszerzalnego.
Uwaga Ta strona zakłada, że znasz informacje i diagramy w Omówienie rozszerzalnego przełącznika Hyper-V i funkcji przekazywania hybrydowego.
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.
Rozszerzalne rozszerzenia przełącznika mogą wprowadzać tylko nowe pakiety do rozszerzonej ścieżki danych wejścia przełącznika. Gwarantuje to, że rozszerzalny interfejs przełącznika może poprawnie filtrować i przekazywać te pakiety. Rozszerzenia muszą postępować zgodnie z tymi wytycznymi dotyczącymi wstrzykiwania nowych pakietów do ścieżki danych przychodzących:
Rozszerzenie musi najpierw przydzielić strukturę NET_BUFFER_LIST dla nowego pakietu.
Po tym, jak rozszerzenie przydzieli strukturę NET_BUFFER_LIST dla nowego pakietu, musi wywołać funkcję obsługującą AllocateNetBufferListForwardingContext, aby przydzielić rozszerzalny kontekst przekazywania przełącznika dla pakietu.
Kontekst przekazywania znajduje się w danych poza pasmem (OOB) pakietu. Zawiera informacje o przekazywaniu dla pakietu, takie jak port źródłowy i lista jednego lub więcej portów docelowych.
Aby uzyskać więcej informacji na temat kontekstu przekazywania, zobacz Hyper-V Extensible Switch Forwarding Context.
Po wywołaniu rozszerzenia AllocateNetBufferListForwardingContextport źródłowy pakietu zostanie ustawiony na NDIS_SWITCH_DEFAULT_PORT_ID. Pakiet z identyfikatorem portu źródłowego NDIS_SWITCH_DEFAULT_PORT_ID jest zaufany i pomija rozszerzalne zasady portów przełącznika, takie jak listy kontroli dostępu (ACL) i jakość usług (QoS).
Rozszerzenie może chcieć, aby pakiet był traktowany tak, jakby pochodził z określonego portu. Dzięki temu zasady dla tego portu mogą być stosowane do pakietu. Rozszerzenie wywołuje SetNetBufferListSource, aby zmienić port źródłowy pakietu.
Mogą jednak wystąpić sytuacje, w których rozszerzenie może chcieć przypisać identyfikator portu źródłowego pakietu do NDIS_SWITCH_DEFAULT_PORT_ID. Na przykład rozszerzenie może chcieć ustawić identyfikator portu źródłowego na NDIS_SWITCH_DEFAULT_PORT_ID dla zastrzeżonych pakietów kontrolnych wysyłanych do urządzenia w sieci zewnętrznej.
Jeśli rozszerzenie przekazujące wysyła nowy pakiet na ścieżce danych przychodzących, musi określić porty docelowe dla pakietu. Aby uzyskać więcej informacji na temat tej procedury, zobacz Dodawanie rozszerzalnych danych portów docelowych przełącznika do pakietu.
Uwaga Rozszerzenie przechwytywania lub filtrowania nie może dodać nowych portów docelowych do nowego pakietu.
Gdy rozszerzenie tworzy nowy pakiet, dane pakietu znajdują się w pamięci lokalnej lub zaufanejpamięci w nadrzędnym systemie operacyjnym partycji Hyper-V nadrzędnej. Ta pamięć nie jest dostępna dla partycji dziecięcej. W związku z tym jest uważany za "bezpieczny" od niezsynchronizowanych aktualizacji przez system operacyjny gościa, który działa w tej partycji.
Rozszerzenie musi uzyskać NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO związek dla nowego pakietu przy użyciu makra NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL. Rozszerzenie musi ustawić członka IsPacketDataSafe na wartość TRUE. Określa to, że wszystkie dane pakietów znajdują się w zaufanej pamięci.
Gdy rozszerzenie wywołuje NdisFSendNetBufferLists, aby wstrzyknąć pakiet do ścieżki danych ruchu przychodzącego, musi ustawić parametr Flags z odpowiednimi ustawieniami rozszerzalnej flagi przełącznika. Aby uzyskać więcej informacji na temat tych ustawień flag, zobacz Hyper-V Rozszerzalne flagi przełączania wysyłania i odbierania.
Gdy NDIS wywołuje funkcję FilterSendNetBufferListsComplete w rozszerzeniu, aby zakończyć żądanie wysłania nowego pakietu, rozszerzenie musi wywołać FreeNetBufferListForwardingContext, aby zwolnić przydzielony kontekst przekazywania. Rozszerzenie musi to zrobić przed zwolnieniem lub ponownym użyciem struktury NET_BUFFER_LIST dla tego pakietu.
Aby uzyskać więcej informacji na temat rozszerzalnych ścieżek danych przychodzących i wychodzących przełącznika, zobacz Hyper-V rozszerzalne ścieżki danych przełącznika.