Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp wordt beschreven hoe Hyper-V-extensies nieuwe pakketten genereren en deze in het uitbreidbare switch-gegevenspad injecteren.
Opmerking Op deze pagina wordt ervan uitgegaan dat u bekend bent met de informatie en diagrammen in Overzicht van de Hyper-V Uitbreidbare switch en Hybrid Forwarding-.
Opmerking In de uitbreidbare switchinterface staan NDIS-filterstuurprogramma's bekend als uitbreidbare switchuitbreidingen en wordt de stuurprogrammastack de uitbreidbare stuurprogrammastackgenoemd. Zie Hyper-V Extensible Switch Extensionsvoor meer informatie over de extensies.
Uitbreidingen voor een uitbreidbare switch kunnen alleen nieuwe pakketten injecteren in het gegevenspad van de uitbreidbare switch. Dit zorgt ervoor dat de uitbreidbare switchinterface deze pakketten correct kan filteren en doorsturen. Extensies moeten voldoen aan deze richtlijnen voor het injecteren van nieuwe pakketten in het gegevenspad voor inkomend verkeer:
De extensie moet eerst een NET_BUFFER_LIST structuur toewijzen voor een nieuw pakket.
Nadat de extensie een NET_BUFFER_LIST structuur voor een nieuw pakket heeft toegewezen, moet deze de AllocateNetBufferListForwardingContext-functie handler aanroepen om de uitbreidbare context voor het doorsturen van switches voor het pakket toe te wijzen.
De doorstuurcontext bevindt zich in de out-of-band-gegevens (OOB) van het pakket. Het bevat doorstuurgegevens voor het pakket, zoals de bronpoort en een matrix van een of meer doelpoorten.
Zie Hyper-V Extensible Switch Forwarding Contextvoor meer informatie over de doorstuurcontext.
Nadat de extensie AllocateNetBufferListForwardingContextaanroept, wordt de bronpoort voor het pakket ingesteld op NDIS_SWITCH_DEFAULT_PORT_ID. Een pakket met een bronpoort-id van NDIS_SWITCH_DEFAULT_PORT_ID wordt vertrouwd en omzeilt het uitbreidbare switchpoortbeleid, zoals toegangsbeheerlijsten (ACL's) en quality of service (QoS).
De extensie kan ervoor zorgen dat het pakket wordt behandeld alsof het afkomstig is van een bepaalde poort. Hierdoor kan het beleid voor die poort worden toegepast op het pakket. De extensie roept SetNetBufferListSource aan om de bronpoort voor het pakket te wijzigen.
Er kunnen echter situaties zijn waarin de extensie mogelijk de bronpoort-id van het pakket aan NDIS_SWITCH_DEFAULT_PORT_IDwilt toewijzen. De extensie kan bijvoorbeeld de bronpoort-id instellen op NDIS_SWITCH_DEFAULT_PORT_ID voor eigen beheerpakketten die naar een apparaat in het externe netwerk worden verzonden.
Als de doorstuurextensie een nieuw pakket verzendt op het gegevenspad voor inkomend verkeer, moet deze de doelpoorten voor het pakket bepalen. Voor meer informatie over deze procedure, zie Extensible Switch Destination Port Data toevoegen aan een pakket.
Opmerking Een opname- of filterextensie kan geen nieuwe doelpoorten toevoegen aan het nieuwe pakket.
Wanneer de extensie een nieuw pakket maakt, bevinden de pakketgegevens zich in lokaal of vertrouwdegeheugen, in het bovenliggende besturingssysteem van de Hyper-V bovenliggende partitie. Dit geheugen is niet toegankelijk voor de kindpartitie. Daarom wordt het beschouwd als 'veilig' van niet-gesynchroniseerde updates door het gastbesturingssysteem dat in die partitie wordt uitgevoerd.
De extensie moet de NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO-samenvoeging voor het nieuwe pakket verkrijgen met behulp van de NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL macro. De extensie moet de IsPacketDataSafe lid instellen op TRUE. Hiermee geeft u op dat alle pakketgegevens zich in het vertrouwde geheugen bevinden.
Wanneer de extensie NdisFSendNetBufferLists aanroept om het pakket in het gegevenspad voor inkomend verkeer te injecteren, moet het de parameter Flags instellen met de juiste uitbreidbare switchvlaginstellingen. Zie Hyper-V Extensible Switch Send and Receive Flagsvoor meer informatie over deze vlaginstellingen.
Wanneer NDIS de functie FilterSendNetBufferListsComplete van de extensie aanroept om de verzendaanvraag van het nieuwe pakket te voltooien, moet de extensie FreeNetBufferListForwardingContext aanroepen om de toegewezen context voor doorsturen vrij te maken. De extensie moet dit doen voordat deze de NET_BUFFER_LIST structuur voor het pakket vrijgeeft of opnieuw gebruikt.
Zie Hyper-V Extensible Switch Data Pathvoor meer informatie over de inkomende en uitgaande gegevenspaden van de uitbreidbare switch.