Flujo de paquetes a través de la ruta de acceso de datos de conmutador extensible
En este tema se describe cómo los paquetes se mueven hacia o desde puertos de conmutador extensibles a través de la ruta de acceso de datos de conmutador extensible de Hyper-V.
Nota En la interfaz de conmutador extensible, los controladores de filtro NDIS se conocen como extensiones de conmutador extensible y la pila de controladores se conoce como pila de controladores de conmutador extensible. Para obtener más información sobre las extensiones, consulte Extensiones de conmutador extensible de Hyper-V.
Nota En esta página se supone que está familiarizado con la información de Información general del conmutador extensible de Hyper-V y el reenvío híbrido.
Todo el tráfico de paquetes que llega al conmutador extensible desde sus puertos sigue la misma ruta de acceso a través de la pila de controladores de conmutador extensible. Por ejemplo, el tráfico de paquetes recibido de la conexión del adaptador de red externo o enviado desde una conexión de adaptador de red de máquina virtual (VM) se mueve a través de la misma ruta de acceso de datos.
En la ilustración siguiente se muestra la ruta de acceso de datos de conmutador extensible para NDIS 6.40 (Windows Server 2012 R2) y versiones posteriores.
En la ilustración siguiente se muestra la ruta de acceso de datos de conmutador extensible para NDIS 6.30 (Windows Server 2012).
Para obtener más información sobre los componentes de la interfaz de conmutador extensible, consulte Arquitectura de conmutador extensible de Hyper-V.
La ruta de acceso de datos de conmutador extensible tiene las siguientes partes, enumeradas en el orden en que los paquetes fluyen a través de ellos:
- Borde de protocolo excesivo
- Ruta de acceso de datos de entrada
- Borde de minipuerto subyacente
- Ruta de acceso de datos de salida
Borde de protocolo excesivo
Los paquetes llegan al conmutador extensible desde adaptadores de red que están conectados a los puertos del conmutador. Estos paquetes se emiten por primera vez como solicitudes de envío desde el borde del protocolo del conmutador extensible hacia abajo la ruta de acceso de datos de entrada del conmutador extensible.
El borde del protocolo del conmutador extensible prepara los paquetes para la ruta de acceso de datos de entrada. El borde del protocolo asigna un área de contexto para estos paquetes que contiene el contexto de reenvío extensible de conmutadores fuera de banda (OOB). Rellena los datos de OOB con información sobre el puerto de origen y la conexión de adaptador de red desde la que se entregó el paquete al conmutador extensible.
Para obtener más información sobre el contexto de reenvío, consulte Contexto de reenvío extensible de conmutador de Hyper-V.
En NDIS 6.40 (Windows Server 2012 R2) y versiones posteriores, si el paquete es un paquete NVGRE de un adaptador de red externo, el conmutador extensible establece la marca NativeForwardingRequired en la información fuera de banda (OOB) del paquete. Para más información, consulte Reenvío híbrido.
Si el paquete llegó a un puerto donde el tráfico tiene una subred virtual, el conmutador extensible establece el miembro VirtualSubnetId de la estructura de NDIS_NET_BUFFER_LIST_VIRTUAL_SUBNET_INFO para el paquete.
Nota La subred virtual podría ser una subred HNV o una subred virtual de terceros.
Ruta de acceso de datos de entrada
Una extensión obtiene un paquete de la ruta de acceso de datos de entrada cuando se llama a su función FilterSendNetBufferLists . La extensión reenvía el paquete a las extensiones subyacentes en la ruta de acceso de datos de entrada llamando a NdisFSendNetBufferLists. Las extensiones de filtrado y reenvío también pueden quitar el paquete de la ruta de acceso de datos de entrada llamando a NdisFSendNetBufferListsComplete.
Al capturar extensiones, obtienen paquetes en la ruta de acceso de datos de entrada, pueden inspeccionar los datos del paquete. Sin embargo, la captura de extensiones no debe completar las solicitudes de envío de paquetes en la ruta de acceso de datos de entrada. Estas extensiones siempre deben reenviar los paquetes a extensiones subyacentes en la pila de controladores de conmutador extensible.
Una extensión de captura también puede originar paquetes en la ruta de acceso de datos de entrada. Por ejemplo, la extensión puede originar paquetes para notificar las condiciones de tráfico a una aplicación de supervisión remota.
Para obtener más información sobre cómo originar paquetes por una extensión, consulte Tráfico de paquetes de origen.
Al filtrar extensiones, las extensiones obtienen paquetes en la ruta de acceso de datos de entrada, pueden hacer lo siguiente:
Quite paquetes basados en directivas de puerto o conmutador extensible personalizados.
Para obtener más información sobre estas directivas, consulte Directivas de conmutador extensible de Hyper-V.
Nota Los paquetes obtenidos en la ruta de acceso de datos de entrada no tienen puertos de destino definidos en los datos de OOB del paquete. Como resultado, las extensiones de filtrado solo deben aplicar directivas personalizadas basadas en los datos del paquete o en el puerto de origen o la conexión del adaptador de red del paquete.
Clone o modifique los paquetes obtenidos de la ruta de acceso de datos de entrada.
Inserte nuevos paquetes en la ruta de acceso de datos de entrada.
En NDIS 6.40 y versiones posteriores, después de las extensiones de captura y filtrado, pero antes de la extensión de reenvío en la ruta de acceso de datos de entrada, el conmutador extensible hace lo siguiente:
Si el paquete es un paquete NVGRE de un adaptador de red externo, la dirección del encabezado del paquete es una dirección de espacio de dirección del proveedor (PA). El conmutador extensible indica esto estableciendo la marca NativeForwardingRequired en la información fuera de banda (OOB) del paquete. Para más información, consulte Reenvío híbrido.
El conmutador extensible aplica las directivas de entrada integradas al paquete. Estas directivas pueden incluir listas de control de acceso de entrada (ACL), Protección DHCP y Protección del enrutador.
Si una extensión de reenvío no está habilitada en la pila de controladores de conmutador extensible, la matriz de puertos de destino de un paquete viene determinada por el conmutador extensible.
Si se habilita una extensión de reenvío, debe hacer lo siguiente cuando obtenga paquetes en la ruta de acceso de datos de entrada:
En NDIS 6.40 y versiones posteriores, si el paquete es un paquete NVGRE (consulte Reenvío híbrido), la extensión de reenvío no puede modificar la matriz de puertos de destino en los datos OOB del paquete en la ruta de acceso de datos de entrada. Sin embargo, puede quitar el paquete.
Si el paquete no es un paquete NVGRE, la extensión de reenvío debe agregar puertos de destino a la matriz de puertos de destino en los datos OOB del paquete.
La extensión de reenvío debe quitar paquetes basados en directivas de puerto o conmutador extensible estándar o personalizado. Las directivas de puerto o conmutador estándar incluyen propiedades de seguridad y LAN virtual (VLAN). Si una extensión de reenvío no está habilitada en la pila de controladores de conmutador extensible, el conmutador extensible aplica estas directivas.
Nota Cuando la extensión de reenvío filtra los paquetes en la ruta de acceso de datos de entrada, aplica reglas de filtrado basadas en el puerto de origen, así como los puertos de destino que la extensión asigna al paquete.
Además, la extensión de reenvío puede hacer lo siguiente:
Clone o modifique los paquetes obtenidos de la ruta de acceso de datos de entrada.
Inserte nuevos paquetes en la ruta de acceso de datos de entrada.
Borde de minipuerto subyacente
Cuando el paquete llega al borde de miniporte subyacente del conmutador extensible, el conmutador extensible aplica sus directivas integradas al paquete. Estas directivas incluyen listas de control de acceso (ACL) y propiedades de calidad de servicio (QoS). Si el paquete no se quita debido a estas directivas, el conmutador extensible origina una indicación de recepción para el paquete y reenvía el paquete hacia arriba la ruta de acceso de datos de salida.
Nota Si la creación de reflejo del puerto está habilitada en un puerto al que se va a entregar el paquete, el perímetro de minipuerto agrega un puerto de destino a los datos de OOB del paquete para el puerto reflejado. El borde de minipuerto hace esto independientemente de si se instala y habilita una extensión de reenvío en la pila de controladores de conmutador extensible. El borde de minipuerto solo agrega el puerto reflejado si aún no se especifica en la matriz de puertos de destino para el paquete.
Si no se habilita una extensión de reenvío, el conmutador extensible determina los puertos de destino del paquete y agrega estos puertos de destino a los datos OOB del paquete antes de reenviar el paquete hacia arriba la ruta de acceso de datos de salida.
En NDIS 6.40 y versiones posteriores, el componente HNV realiza cualquier encapsulación o descapsulación NVGRE necesaria después de la entrada y antes de la salida, para que la extensión de reenvío pueda ver el paquete en formato encapsulado y desencapsulado. Por ejemplo, si el paquete llegó de un adaptador de red externo y está destinado a una máquina virtual interna, la extensión de reenvío obtiene el paquete encapsulado en entrada y el paquete desencapsulado en la salida.
Nota En el paquete encapsulado, la dirección del encabezado del paquete es una dirección de espacio de dirección del proveedor (PA). En el paquete descapsulado, es una dirección de espacio de dirección de cliente (CA).
Si el paquete es un paquete NVGRE que llegó de un adaptador de red externo, el componente Virtualización de red de Hyper-V (HNV) del conmutador extensible realiza la decapsulación NVGRE en el paquete. El componente HNV determina los destinos del paquete según las directivas de HNV y, a continuación, el conmutador extensible reenvía el paquete hacia arriba la ruta de acceso de datos de salida.
Si el paquete llegó desde una máquina virtual interna, el componente HNV realizará la encapsulación NVGRE en el paquete si las directivas de HNV están establecidas para el paquete. El componente HNV determina los destinos del paquete según las directivas de HNV y, a continuación, el conmutador extensible reenvía el paquete hacia arriba la ruta de acceso de datos de salida.
De lo contrario, la extensión de reenvío reenvía el paquete hacia arriba la ruta de acceso de datos de salida.
En NDIS 6.30, si está habilitada una extensión de reenvío, debe reenviar el paquete hacia arriba la ruta de acceso de datos de salida.
Ruta de acceso de datos de salida
Una extensión obtiene un paquete de la ruta de acceso de datos de salida cuando se llama a su función FilterReceiveNetBufferLists . La extensión reenvía el paquete a extensiones excesivas en la ruta de acceso de datos de salida llamando a NdisFIndicateReceiveNetBufferLists. Las extensiones de filtrado y reenvío también pueden quitar el paquete de la ruta de acceso de datos de salida llamando a NdisFReturnNetBufferLists.
Cuando la extensión de reenvío obtiene un paquete en la ruta de acceso de datos de salida, puede inspeccionar la información del puerto de destino del paquete en los datos de OOB.
Nota La extensión obtiene esta información de los datos de OOB llamando a GetNetBufferListDestinations.
En función de las directivas de puerto o conmutador estándar o personalizado, la extensión puede excluir la entrega del paquete a uno o varios puertos de destino contenidos en los datos de OOB.
En NDIS 6.40 (Windows Server 2012 R2) y versiones posteriores, después de la extensión de reenvío, pero antes de filtrar y capturar extensiones en la ruta de acceso de datos de salida, el conmutador extensible aplica las directivas de salida integradas al paquete. Estas directivas pueden incluir el modo de tronco, el modo de supervisión, las ACL de salida y las propiedades de calidad de servicio (QoS).
Cuando las extensiones de filtrado obtienen un paquete en la ruta de acceso de datos de salida, pueden inspeccionar la información del puerto de destino del paquete en los datos de OOB. En función de las directivas personalizadas de conmutador o puerto, la extensión puede excluir la entrega del paquete a uno o varios puertos de destino contenidos en los datos de OOB.
Si la extensión de filtrado necesita modificar los datos de un paquete, primero debe clonar el paquete sin conservar los destinos de puerto. A continuación, la extensión debe insertar el paquete modificado en la ruta de acceso de datos de entrada. Esto permite que las extensiones subyacentes apliquen directivas en el paquete modificado y la extensión de reenvío puede agregar destinos de puerto.
Para obtener más información, consulte Clonación o tráfico de paquetes.
Al capturar extensiones, obtienen paquetes en la ruta de acceso de datos de salida, pueden inspeccionar los datos del paquete. Sin embargo, si la extensión de captura necesita originar paquetes para notificar las condiciones de tráfico a una aplicación de supervisión remota, debe originar este tráfico de paquetes llamando a NdisFSendNetBufferLists para iniciar una operación de envío en la ruta de acceso de datos de entrada.
Cuando el paquete llega al borde del protocolo sobrestable del conmutador extensible, la interfaz de conmutador extensible reenvía el paquete a todos los puertos de destino especificados.
Una vez que se ha reenviado el paquete, la interfaz completa el paquete a través de la misma ruta de acceso a la inversa. En primer lugar, la interfaz llama a la función FilterReturnNetBufferLists de la extensión para completar los paquetes reenviados en la ruta de acceso de datos de salida. A continuación, la interfaz llama a la función FilterSendNetBufferListsComplete de la extensión para completar los paquetes reenviados en la ruta de acceso de datos de entrada.
Cuando el paquete se completa en la ruta de acceso de datos de salida y entrada, la extensión realiza cualquier limpieza de paquetes necesaria y posterior procesamiento que pueda ser necesario.