Visão geral dos Adaptadores de Rede de Comutador Extensível do Hyper-V
O comutador extensível do Hyper-V dá suporte a conexões de vários tipos de adaptadores de rede virtual ou física. A conexão com esses tipos de adaptadores de rede é feita por meio de uma porta de comutador extensível. As portas são criadas antes de uma conexão de adaptador de rede virtual ser feita e excluídas depois que a conexão do adaptador de rede é interrompida.
Por exemplo, quando uma partição filho do Hyper-V é iniciada, a interface do comutador extensível cria uma porta antes que o adaptador de rede da VM (máquina virtual) seja exposto dentro do sistema operacional convidado. Depois que o adaptador de rede da VM é exposto e enumerado, o adaptador de comutador extensível cria uma conexão de rede entre o adaptador de rede da VM e a porta de comutador extensível. Se a partição filho for interrompida, a interface de comutador extensível primeiro excluirá a conexão de rede e, em seguida, excluirá a porta de comutador extensível.
O comutador extensível do Hyper-V dá suporte a conexões dos seguintes tipos de adaptadores de rede virtual:
Adaptadores de rede externa
Esse é um adaptador de rede de comutador extensível exposto no sistema operacional de gerenciamento executado na partição pai do Hyper-V. Cada comutador extensível dá suporte a apenas uma conexão de adaptador de rede externa.
O adaptador de rede externo fornece uma conexão com o adaptador de rede físico que está disponível no host. O adaptador de rede externo pode ser acessado pela partição pai do Hyper-V e por todas as partições filho.
Para obter mais informações sobre esse tipo de adaptador de rede, consulte Adaptadores de rede externos.
Adaptadores de rede internos
Esse é um adaptador de rede de comutador extensível exposto no sistema operacional de gerenciamento executado na partição pai do Hyper-V. Cada comutador extensível dá suporte a apenas uma conexão interna do adaptador de rede.
O adaptador de rede interno fornece acesso a um comutador extensível para processos executados no sistema operacional de gerenciamento. Isso permite que esses processos enviem ou recebam pacotes pela opção extensível.
Para obter mais informações sobre esse tipo de adaptador de rede, consulte Adaptadores de rede internos.
Adaptadores de rede de VM (máquina virtual)
Esse é um adaptador de rede de comutador extensível exposto no sistema operacional convidado que é executado na partição filho do Hyper-V.
Nota No Hyper-V, uma partição filho também é conhecida como uma VM.
O adaptador de rede da VM dá suporte aos seguintes tipos de virtualização:
O adaptador de rede da VM pode ser uma virtualização sintética de um adaptador de rede (adaptador de rede sintética). Nesse caso, o NetVSC (cliente de serviço virtual de rede) executado na VM expõe esse adaptador de rede virtual. O NetVSC encaminha pacotes de e para a porta de comutador extensível sobre o VMBus (barramento de VM).
O adaptador de rede da VM pode ser uma virtualização emulada de um adaptador de rede físico (adaptador de rede emulado). Nesse caso, o adaptador de rede da VM imita um adaptador de rede Intel e usa a emulação de hardware para encaminhar pacotes de e para a porta de comutador extensível.
Para obter mais informações sobre esse tipo de adaptador de rede, consulte Adaptadores de rede de máquina virtual.
As conexões extensíveis do adaptador de rede de comutador extensível são criadas, atualizadas e excluídas por meio das seguintes solicitações OID de comutador extensível:
OID_SWITCH_NIC_CREATE
A borda de protocolo do comutador extensível emite uma solicitação de conjunto de OID de OID_SWITCH_NIC_CREATE para notificar extensíveis sobre a criação de uma conexão de adaptador de rede para uma porta de comutador extensível. A porta deve ter sido criada anteriormente por meio de uma solicitação de conjunto de OID de OID_SWITCH_PORT_CREATE.
A solicitação OID_SWITCH_NIC_CREATE apenas notifica a extensão de que uma nova conexão extensível do adaptador de rede de comutador está sendo acionada e que o tráfego de pacotes pode começar a ocorrer em breve na porta especificada.
A extensão pode vetar a notificação de criação retornando STATUS_DATA_NOT_ACCEPTED para a solicitação OID. Por exemplo, se uma extensão não puder atender às políticas configuradas na porta usada para a conexão do adaptador de rede, a extensão deverá vetar a notificação de criação.
Se a extensão aceitar a notificação de criação, ela deverá encaminhar a solicitação OID para baixo na pilha do driver de comutador extensível. A extensão monitora o status de conclusão dessa solicitação OID para determinar se as extensões subjacentes vetaram a notificação de criação.
Quando a conexão do adaptador de rede é criada, ela recebe um valor NDIS_SWITCH_NIC_INDEX. Esse valor de índice identifica a conexão do adaptador de rede em uma porta de comutador extensível. As conexões com os adaptadores de rede externos, internos e de VM recebem um valor NDIS_SWITCH_NIC_INDEX de NDIS_SWITCH_DEFAULT_NIC_INDEX. Cada adaptador de rede física ou virtual associado ao adaptador de rede externo recebe um valor NDIS_SWITCH_NIC_INDEX da seguinte maneira:
Se o adaptador de rede física ou virtual estiver diretamente associado ao adaptador de rede externo, ele recebe um valor NDIS_SWITCH_NIC_INDEX de um.
Se o adaptador de rede física fizer parte de uma equipe de comutador extensível, ele recebe um valor NDIS_SWITCH_NIC_INDEX maior ou igual a um. Uma equipe de comutador extensível é uma configuração na qual uma equipe de um ou mais adaptadores de rede física está associada ao adaptador de rede externo comutador extensível.
Para obter mais informações sobre as diferentes configurações nas quais os adaptadores de rede física podem ser associados ao adaptador de rede externo, consulte Tipos de Configurações do Adaptador de Rede Física.
Para obter mais informações sobre valores de NDIS_SWITCH_NIC_INDEX, consulte Valores de índice do adaptador de rede.
Nota A extensão não pode gerar ou encaminhar pacotes pela conexão do adaptador de rede até que a borda do protocolo do comutador extensível emita uma solicitação de conjunto de OID de OID_SWITCH_NIC_CONNECT.
OID_SWITCH_NIC_CONNECT
A borda de protocolo do comutador extensível emite uma solicitação de conjunto de OID de OID_SWITCH_NIC_CONNECT para notificar extensíveis de que uma conexão extensível do adaptador de rede de comutador está totalmente operacional.
A extensão deve sempre encaminhar essa solicitação de conjunto de OID para baixo na pilha do driver de comutador extensível. A extensão não deve falhar na solicitação.
Depois que a solicitação OID for concluída com NDIS_STATUS_SUCCESS, a conexão do adaptador de rede e a porta de comutador extensível estarão totalmente operacionais. Quando a conexão do adaptador de rede está nesse estado, a extensão pode fazer o seguinte:
Gere ou encaminhe o tráfego de pacotes para a conexão do adaptador de rede da porta.
Emita OIDs de comutador extensível ou indicações de status que usam a porta como a porta de origem.
Chame ReferenceSwitchNic para incrementar um contador de referência para a conexão do adaptador de rede. A interface de comutador extensível não destruirá uma conexão de adaptador de rede enquanto o contador de referência tiver um valor diferente de zero.
OID_SWITCH_NIC_UPDATED
A borda do protocolo do comutador extensível emite uma solicitação de conjunto de OID de OID_SWITCH_NIC_UPDATED para notificar extensíveis de que os parâmetros de um adaptador de rede de comutador extensível foram atualizados. O OID só será emitido para NICs que já foram conectadas e ainda não iniciou o processo de desconexão. Essas alterações de configuração em tempo de execução podem incluir NicFriendlyName, MTU, NetCfgInstanceId, PermanentMacAddress, VMMacAddress, CurrentMacAddress e VFAssigned.
A extensão deve sempre encaminhar essa solicitação de conjunto de OID para baixo na pilha do driver de comutador extensível. A extensão não deve falhar na solicitação.
OID_SWITCH_NIC_DISCONNECT
A borda de protocolo do comutador extensível emite uma solicitação de conjunto de OID de OID_SWITCH_NIC_DISCONNECT para notificar extensíveis que uma conexão extensível do adaptador de rede de comutador está sendo interrompida. Depois que a conexão tiver sido completamente interrompida, a borda do protocolo do comutador extensível emitirá uma solicitação de conjunto de OID de OID_SWITCH_NIC_DELETE.
A extensão deve sempre encaminhar essa solicitação de conjunto de OID para baixo na pilha do driver de comutador extensível. A extensão não deve falhar na solicitação.
Depois que a extensão encaminha essa solicitação OID, ela não pode mais gerar ou encaminhar pacotes para a porta na qual a conexão do adaptador de rede está sendo interrompida. Além disso, a extensão não pode mais chamar ReferenceSwitchNic para a conexão do adaptador de rede.
OID_SWITCH_NIC_DELETE
A borda do protocolo do comutador extensível emite uma solicitação de conjunto de OID de OID_SWITCH_NIC_DELETE para notificar extensíveis que uma conexão extensível do adaptador de rede de comutador foi interrompida e excluída. Essa solicitação OID só é emitida para conexões de rede para as quais uma solicitação de conjunto de OID de OID_SWITCH_NIC_DISCONNECT foi emitida anteriormente.
Nota A extensão deve sempre encaminhar essa solicitação de conjunto de OID para baixo na pilha do driver de comutador extensível. A extensão não deve falhar na solicitação.
Depois que essa solicitação OID é concluída, a borda do protocolo do comutador extensível emite uma solicitação de conjunto de OID de OID_SWITCH_PORT_TEARDOWN para iniciar o processo de exclusão para a porta que foi usada para a conexão do adaptador de rede.
A extensão deve sempre encaminhar essa solicitação de conjunto de OID para baixo na pilha do driver de comutador extensível. A extensão não deve falhar na solicitação.
A interface de comutador extensível mantém um contador de referência para cada conexão de adaptador de rede que foi criada. Uma conexão de adaptador de rede não será excluída se o contador de referência tiver um valor diferente de zero. A interface fornece as seguintes funções de manipulador para incrementar ou diminuir o contador de referência de uma conexão extensível do adaptador de rede de comutador:
ReferenceSwitchNic
A extensão de comutador extensível chama essa função para incrementar o contador de referência de uma conexão de adaptador de rede. Embora o contador de referência tenha um valor diferente de zero, a interface de comutador extensível não exclui a conexão do adaptador de rede.
A extensão deve chamar ReferenceSwitchNic antes de executar as seguintes operações:
Encaminha uma solicitação OID_SWITCH_NIC_REQUEST para baixo da pilha de driver de comutador extensível para um adaptador externo subjacente.
Encaminha um NDIS_STATUS_SWITCH_NIC_STATUS status indicação da pilha de driver de comutador extensível de um adaptador externo subjacente.
Nota A extensão não deve chamar ReferenceSwitchNic para uma conexão de adaptador de rede depois de receber uma solicitação de conjunto de OID de OID_SWITCH_NIC_DISCONNECT para essa conexão.
DereferenceSwitchNic
A extensão de comutador extensível chama essa função para diminuir o contador de referência de uma porta.
Se a extensão chamar ReferenceSwitchNic, ela deverá chamar DereferenceSwitchNic após a conclusão da indicação de OID_SWITCH_NIC_REQUEST ou NDIS_STATUS_SWITCH_NIC_STATUS .