Administración del contexto de reenvío de conmutador extensible de Hyper-V
Nota En esta página se supone que está familiarizado con la información y los diagramas de Información general del conmutador extensible de Hyper-V y elreenvío híbrido.
La estructura de NET_BUFFER_LIST para cada paquete que atraviesa la ruta de acceso de datos extensible del conmutador de Hyper-V contiene datos fuera de banda (OOB). Estos datos especifican el puerto de origen desde donde se originó el paquete, así como uno o varios puertos de destino para la entrega de paquetes. Estos datos de OOB se conocen como contexto de reenvío de conmutador extensible.
Nota El contexto de reenvío de conmutadores extensible es diferente de la estructura de NET_BUFFER_LIST_CONTEXT . Esto permite que las extensiones asignen sus propias estructuras de contexto sin afectar al contexto de reenvío.
El contexto de reenvío de conmutador extensible se asigna y libera de la siguiente manera:
Cuando un paquete llega al conmutador extensible desde un adaptador de red, la interfaz de conmutador extensible asigna el contexto de reenvío y lo asocia a la estructura NET_BUFFER_LIST del paquete.
Cuando el paquete se entrega a sus puertos de destino, la interfaz libera el contexto de reenvío de la estructura NET_BUFFER_LIST del paquete.
Si una extensión de conmutador extensible inserta un paquete nuevo o clonado en la ruta de acceso de datos de conmutador extensible, debe asignar el contexto de reenvío antes de llamar a NdisFSendNetBufferLists.
Una vez que la extensión asigna una estructura de NET_BUFFER_LIST para un paquete nuevo o clonado, debe llamar a la función AllocateNetBufferListForwardingContext para asignar el contexto de reenvío para el paquete. Una vez completada la solicitud de paquete de envío, la extensión debe llamar a FreeNetBufferListForwardingContext antes de liberar o reutilizar la estructura NET_BUFFER_LIST .
Nota Cuando la extensión llama a AllocateNetBufferListForwardingContext, el puerto de origen del paquete se establece en NDIS_SWITCH_DEFAULT_PORT_ID. Esto especifica que el paquete se originó en una extensión en lugar de llegar a un puerto de conmutador extensible. En determinadas condiciones, es posible que la extensión quiera cambiar el puerto de origen del paquete. Para obtener más información, vea Modificar los datos de puerto de origen de conmutador extensible de un paquete.
Para obtener más información, vea Operaciones de envío y recepción de conmutador extensible de Hyper-V.
Todas las extensiones de conmutador extensible pueden llamar a las siguientes funciones de controlador de conmutador extensible para acceder a los datos dentro del contexto de reenvío del paquete:
AllocateNetBufferListForwardingContext
Asigna el contexto de reenvío de conmutadores extensible y prepara una estructura de NET_BUFFER_LIST para las operaciones de envío o recepción dentro del conmutador extensible.
CopyNetBufferListInfo
Copia el contexto de reenvío de la estructura de NET_BUFFER_LIST de un paquete de origen a la estructura de NET_BUFFER_LIST de un paquete de destino. Estos datos incluyen el puerto de origen del conmutador extensible y la información del adaptador de red. La información del puerto de destino de conmutador extensible también se puede copiar en el paquete de destino.
FreeNetBufferListForwardingContext
Libera los recursos en el contexto de reenvío extensible de un NET_BUFFER_LIST estructura. Estos datos se usaron para las operaciones de envío o recepción en un conmutador extensible de Hyper-V y se asignaron anteriormente mediante una llamada a la función AllocateNetBufferListForwardingContext .
GetNetBufferListDestinations
Devuelve los puertos de destino del contexto de reenvío de la estructura NET_BUFFER_LIST de un paquete.
Una extensión de reenvío es responsable de agregar puertos de destino para un paquete, a menos que el paquete sea un paquete NVGRE. (Para obtener más información, consulte Reenvío híbrido). La extensión llama a las siguientes funciones de controlador de conmutador extensible para agregar o actualizar los puertos de destino dentro del contexto de reenvío del paquete:
AddNetBufferListDestination
Agrega un único destino al área de contexto de reenvío de conmutador extensible para un paquete especificado por una estructura de NET_BUFFER_LIST .
Nota Esta llamada confirma el cambio en el área de contexto de reenvío. En este caso, la extensión de reenvío no necesita llamar a UpdateNetBufferListDestinations.
GrowNetBufferListDestinations
Aumenta el tamaño de la matriz de puertos de destino en el área de contexto de reenvío de la estructura NET_BUFFER_LIST de un paquete.
UpdateNetBufferListDestinations
Confirma las modificaciones realizadas por la extensión en uno o varios puertos de destino de conmutador extensible de un paquete. Esta función actualiza el contexto de reenvío de la estructura NET_BUFFER_LIST de un paquete con estos cambios.
Nota Una vez que la extensión de reenvío confirma los cambios de los puertos de destino en el contexto de reenvío, no se pueden quitar los puertos de destino y solo se puede cambiar el miembro IsExcluded de la estructura NDIS_SWITCH_PORT_DESTINATION de un puerto de destino. Para obtener más información, vea Excluir la entrega de paquetes a puertos de destino de conmutador extensible.
Temas relacionados
Contexto de reenvío de conmutador extensible de Hyper-V
Tipos de datos de contexto de reenvío de conmutador extensible de Hyper-V