Compartir a través de


Introducción a los puertos de conmutador extensible de Hyper-V

Cada conexión de red al conmutador extensible de Hyper-V se representa mediante un puerto. La interfaz de conmutador extensible crea y configura un puerto antes de que se realice una conexión de red. Después de que se descomponga la conexión de red, la interfaz puede eliminar el puerto o reutilizarla para otra conexión de red.

A cada partición secundaria de Hyper-V configurada con una interfaz de red se le asigna un puerto en el conmutador extensible. Cuando se inicia una partición secundaria de Hyper-V, la interfaz de conmutador extensible crea un puerto antes de que el adaptador de red de la máquina virtual (VM) se exponga en el sistema operativo invitado. Después de exponer e inicializar el adaptador de red de la máquina virtual, la interfaz de conmutador extensible crea una conexión de red entre el adaptador de red de la máquina virtual y el puerto de conmutador extensible. Si se detiene la partición secundaria, la interfaz de conmutador extensible elimina primero la conexión de red y, a continuación, elimina el puerto de conmutador extensible.

Cuando se crea un puerto de conmutador extensible, se configura con un identificador y un nombre únicos. Una vez creado, el puerto de conmutador extensible se puede aprovisionar con directivas que definen varios atributos para la administración del tráfico de paquetes a través del puerto. Por ejemplo, las directivas de puerto estándar se pueden definir para atributos de LAN virtual (VLAN) y restricciones de acceso para el tráfico de puertos. Además, los proveedores de software independientes (ISV) pueden definir directivas personalizadas con las que se pueden aprovisionar puertos individuales. Para obtener más información, consulte Directivas de puerto.

Los puertos de conmutador extensible constan de los siguientes tipos:

Puertos de validación
Los puertos de validación se usan para validar y comprobar la configuración del puerto. Estos puertos son temporales y se crean en determinadas condiciones.

Por ejemplo, cuando se crea o se vuelve a configurar una partición secundaria de Hyper-V para el acceso a la red, la interfaz de conmutador extensible crea un puerto de validación. La interfaz usa este puerto para comprobar la configuración de la conexión de red al adaptador de red de la máquina virtual (VM) de la partición. Una vez completada la comprobación, se elimina el puerto de validación y se crea un puerto operativo.

Para obtener más información, consulte Puertos de validación.

Puertos operativos
Los puertos operativos se crean para hospedar una conexión de adaptador de red de conmutador extensible. Cuando se crea un puerto operativo, se le asigna un tipo de puerto. Este tipo de puerto está en vigor después de crear el puerto y antes de que se descomponga. En el caso de los puertos asignados a las particiones secundarias de Hyper-V, el tipo de puerto operativo permanece en vigor mientras la partición se ejecuta y está operativa.

Para obtener más información, consulte Puertos operativos.

Las extensiones de conmutador extensible reciben una notificación de creación, actualización y eliminación de puertos a través de las siguientes solicitudes de identificador de objeto de conmutador extensible (OID):

OID_SWITCH_PORT_CREATE
El borde del protocolo del conmutador extensible emite una solicitud de conjunto de OID de OID_SWITCH_PORT_CREATE para notificar a las extensiones de conmutador extensible sobre la creación de un puerto de conmutador extensible.

La extensión puede vetar la notificación de creación devolviendo STATUS_DATA_NOT_ACCEPTED para la solicitud OID. Por ejemplo, si una extensión no puede asignar recursos para aplicar sus directivas configuradas en el puerto, la extensión veta la notificación de creación.

Si la extensión acepta la notificación de creación, debe reenviar la solicitud OID a la pila de controladores de conmutador extensible. La extensión supervisa el estado de finalización de esta solicitud de OID para determinar si las extensiones subyacentes han vetado la notificación de creación del puerto.

Las extensiones no pueden reenviar paquetes al puerto recién creado hasta que se cree una conexión de red. Para obtener más información sobre este proceso, consulte Adaptadores de red de conmutador extensible de Hyper-V.

OID_SWITCH_PORT_UPDATED
El borde del protocolo del conmutador extensible emite una solicitud de conjunto de OID de OID_SWITCH_PORT_UPDATED para notificar a las extensiones de conmutador extensible que se están actualizando los parámetros de un puerto de conmutador extensible. El OID solo se emitirá para los puertos que ya se han creado y aún no han iniciado el proceso de desmontaje o eliminación. Actualmente, solo el campo PortFriendlyName está sujeto a actualización después de la creación.

El borde del protocolo del conmutador extensible emite esta solicitud de OID cuando se ha destruido la conexión de red anterior al puerto y se han completado todas las solicitudes de OID al puerto.

Nota Esta solicitud de OID se podría emitir si no se realizó anteriormente una conexión de adaptador de red al puerto.

La extensión siempre debe reenviar esta solicitud de conjunto de OID a la pila extensible del controlador del conmutador. La extensión no debe producir un error en la solicitud.

OID_SWITCH_PORT_TEARDOWN
El borde del protocolo del conmutador extensible emite una solicitud de conjunto de OID de OID_SWITCH_PORT_TEARDOWN para notificar a las extensiones de conmutador extensible que se está eliminando un puerto de conmutador extensible. El borde del protocolo del conmutador extensible emite esta solicitud de OID cuando se ha destruido la conexión de red anterior al puerto y se han completado todas las solicitudes de OID al puerto.

Nota Esta solicitud de OID se podría emitir si no se realizó anteriormente una conexión de adaptador de red al puerto.

La extensión siempre debe reenviar esta solicitud de conjunto de OID a la pila extensible del controlador del conmutador. La extensión no debe producir un error en la solicitud.

Una vez que la extensión reenvía esta solicitud de OID, ya no puede emitir solicitudes de OID para el puerto que se va a eliminar.

OID_SWITCH_PORT_DELETE
El borde del protocolo del conmutador extensible emite una solicitud de conjunto de OID de OID_SWITCH_PORT_DELETE para notificar a las extensiones de conmutador extensible que se ha eliminado un puerto de conmutador extensible. El borde del protocolo del conmutador extensible emite esta solicitud de OID después de que emite la solicitud de OID_SWITCH_PORT_TEARDOWN y las solicitudes OID que tienen como destino el puerto se han completado.

La extensión siempre debe reenviar esta solicitud de conjunto de OID a la pila extensible del controlador del conmutador. La extensión no debe producir un error en la solicitud.

A todos los puertos de conmutador extensibles que se crean para las conexiones de red se les asigna un identificador mayor que NDIS_SWITCH_DEFAULT_PORT_ID. El identificador de NDIS_SWITCH_DEFAULT_PORT_ID se reserva y se usa de las siguientes maneras:

  • El identificador de puerto de origen de un paquete se almacena en el contexto de reenvío fuera de banda (OOB) del paquete asociado a su estructura de NET_BUFFER_LIST . Un identificador de puerto de origen de NDIS_SWITCH_DEFAULT_PORT_ID especifica que el paquete se originó en la extensión de conmutador extensible y no desde un puerto de conmutador extensible. Un paquete con un identificador de puerto de origen de NDIS_SWITCH_DEFAULT_PORT_ID es de confianza y omite las directivas de puerto de conmutador extensible, como listas de control de acceso (ACL) y calidad de servicio (QoS).

    Es posible que la extensión quiera que el paquete se trate como si se origina en un puerto determinado. Esto permite aplicar las directivas para ese puerto al paquete. La extensión llama a SetNetBufferListSource para cambiar el puerto de origen del paquete.

    Sin embargo, puede haber situaciones en las que la extensión quiera asignar el identificador de puerto de origen del paquete a NDIS_SWITCH_DEFAULT_PORT_ID. Por ejemplo, la extensión puede querer establecer el identificador de puerto de origen en NDIS_SWITCH_DEFAULT_PORT_ID para paquetes de control propietarios que se envían a un dispositivo en la red externa.

    Para obtener más información sobre el contexto de reenvío, consulte Contexto de reenvío extensible de conmutador de Hyper-V.

  • Las solicitudes de identificador de objeto (OID) de OID_SWITCH_NIC_REQUEST son emitidas por la interfaz de conmutador extensible para encapsular las solicitudes de OID que se emiten al adaptador de red externo del conmutador extensible. Por ejemplo, la interfaz encapsula las solicitudes OID de descarga de hardware antes de emitirlas en la pila de controladores de conmutador extensible.

    Una extensión también puede emitir solicitudes OID encapsuladas para reenviar solicitudes hacia abajo en la ruta de acceso de control de conmutador extensible. Esto permite que las extensiones consulten o configuren las funcionalidades de un adaptador de red físico subyacente.

    El miembro InformationBuffer de la estructura NDIS_OID_REQUEST para esta solicitud de OID contiene un puntero a una estructura de NDIS_SWITCH_NIC_OID_REQUEST . Si el miembro SourcePortId se establece en NDIS_SWITCH_DEFAULT_PORT_ID, especifica que la solicitud OID se originó en la interfaz de conmutador extensible. Si DestinationPortId se establece en NDIS_SWITCH_DEFAULT_PORT_ID, especifica que la solicitud OID se dirige al procesamiento mediante una extensión en la pila de controladores de conmutador extensible.

    Para obtener más información sobre la ruta de acceso de control para las solicitudes de OID, consulte Ruta de acceso de control de conmutador extensible de Hyper-V para solicitudes OID.

  • Las indicaciones de estado NDIS de NDIS_STATUS_SWITCH_NIC_STATUS son emitidas por el borde miniporte del conmutador extensible para encapsular una indicación de estado del adaptador de red externo de conmutador extensible.

    Una extensión también puede emitir indicaciones de estado NDIS encapsuladas para reenviar indicaciones hacia arriba en la ruta de acceso de control extensible del conmutador. Esto permite que las extensiones cambien las funcionalidades notificadas de un adaptador de red físico subyacente.

    El miembro StatusBuffer de la estructura NDIS_STATUS_INDICATION para esta indicación contiene un puntero a una estructura de NDIS_SWITCH_NIC_STATUS_INDICATION . Si el miembro SourcePortId se establece en NDIS_SWITCH_DEFAULT_PORT_ID, especifica que la interfaz de conmutador extensible originó la indicación de estado. Si DestinationPortId se establece en NDIS_SWITCH_DEFAULT_PORT_ID, especifica que la solicitud OID se dirige al procesamiento mediante una extensión en la pila de controladores de conmutador extensible.

    Para obtener más información sobre la ruta de acceso de control para las indicaciones de estado de NDIS, consulte Ruta de acceso de control de conmutador extensible de Hyper-V para las indicaciones de estado de NDIS.

La interfaz de conmutador extensible mantiene un contador de referencia para cada puerto que se ha creado. Un puerto no se eliminará si su contador de referencia tiene un valor distinto de cero. La interfaz proporciona las siguientes funciones de controlador para incrementar o disminuir los contadores de referencia de un puerto de conmutador extensible:

ReferenceSwitchPort
La extensión de conmutador extensible llama a esta función para incrementar el contador de referencia de un puerto. Aunque el contador de referencia tiene un valor distinto de cero, el borde del protocolo del conmutador extensible no emitirá una solicitud de conjunto de identificador de objeto (OID) de OID_SWITCH_PORT_DELETE para eliminar el puerto de conmutador extensible.

La extensión debe llamar a ReferenceSwitchPort antes de realizar cualquier operación que requiera que el puerto esté en un estado activo. Por ejemplo, la extensión debe llamar a ReferenceSwitchPort antes de que emite una solicitud de método OID de OID_SWITCH_PORT_PROPERTY_ENUM.

Nota La extensión no debe llamar a ReferenceSwitchPort para un puerto después de recibir una solicitud de conjunto de OID de OID_SWITCH_PORT_TEARDOWN para ese puerto.

DereferenceSwitchPort
La extensión de conmutador extensible llama a esta función para disminuir el contador de referencia de un puerto.

La extensión debe llamar a DereferenceSwitchPort una vez completada la operación realizada en el puerto. Por ejemplo, si la extensión llamada ReferenceSwitchPort antes de emitir una solicitud de OID_SWITCH_PORT_PROPERTY_ENUM , la extensión debe llamar a DereferenceSwitchPort una vez completada la solicitud OID.

Nota Los puertos NDIS y los puertos de conmutador extensible son objetos diferentes. Los paquetes que se mueven a través de la ruta de acceso de datos del conmutador extensible siempre se asignan al número de puerto NDIS de NDIS_DEFAULT_PORT_NUMBER. Sin embargo, el número de puerto de conmutador extensible de origen y destino del paquete puede ser un valor de NDIS_SWITCH_DEFAULT_PORT_ID o superior. Para obtener más información, consulte Ruta de acceso de datos de conmutador extensible de Hyper-V.