Visão geral da união de pacotes
Determinados protocolos de rede ip versão 4 (IPv4) e IP versão 6 (IPv6) envolvem a transmissão de pacotes para endereços de difusão ou multicast. Esses pacotes são recebidos por vários hosts na sub-rede IPv4/IPv6. Na maioria dos casos, o host que recebe esses pacotes não faz nada com esses pacotes. Portanto, a recepção desses pacotes de transmissão ou multicast indesejados faz com que o processamento desnecessário e o consumo de energia ocorram dentro do host receptor.
Por exemplo, o host A envia uma solicitação LLMNR (Resolução de Nomes multicast) local de link multicast em uma sub-rede IPv6 para resolve nome do host B. Exceto para o host A, essa solicitação LLMNR é recebida por todos os hosts na sub-rede. Com exceção do host B, a pilha de protocolos TCP/IP que é executada nos outros hosts inspeciona o pacote e determina que o pacote não se destina a ele. Portanto, a pilha de protocolo rejeita o pacote e chama NdisReturnNetBufferLists para retornar o pacote para o driver de miniport.
A partir do NDIS 6.30, os adaptadores de rede podem dar suporte à união de pacotes NDIS. Ao reduzir o número de interrupções de recebimento por meio da união de pacotes de transmissão aleatória ou multicast, a sobrecarga de processamento e o consumo de energia são significativamente reduzidos no sistema.
A união de pacotes envolve as seguintes etapas:
Drivers sobrepostos, como a pilha de protocolos TCP/IP, definem filtros de recebimento de NDIS que são usados para difusão de tela e pacotes multicast. Os drivers subjacentes baixam esses filtros para o driver de miniporta subjacente que dá suporte à união de pacotes. Depois de baixado, o driver de miniporta configura o adaptador de rede com os filtros de recebimento de união de pacotes.
Para obter mais informações sobre esses filtros, consulte Filtros de recebimento de união de pacotes.
Os pacotes recebidos que correspondem aos filtros de recebimento são armazenados em cache ou agrupados no adaptador de rede. O adaptador não gera uma interrupção de recebimento para pacotes unidos. Em vez disso, o adaptador interrompe o host quando outro evento de hardware ocorre.
Quando essa interrupção é gerada, o adaptador deve indicar um evento de recebimento com a interrupção. Isso permite que o adaptador de rede processe pacotes unidos que foram recebidos pelo adaptador de rede.
Por exemplo, o adaptador de rede que dá suporte à união de pacotes pode gerar uma interrupção de recebimento quando ocorre um dos seguintes eventos:
A expiração de um temporizador de hardware cujo tempo de expiração é definido como um valor de atraso de união máximo do filtro de recebimento correspondente.
O espaço disponível dentro do buffer de união de hardware atinge uma marca de baixa água especificada pelo adaptador.
Um pacote é recebido que não corresponde a um filtro de união.
Outro evento de interrupção, como um evento de conclusão de envio, ocorreu.
Para obter mais informações sobre esse processo, consulte Manipulando filtros de recebimento de união de pacotes.
Os seguintes pontos se aplicam ao suporte à união de pacotes pelo NDIS:
O NDIS dá suporte à união de pacotes para pacotes recebidos na porta NDIS padrão (porta 0) atribuída ao adaptador de rede física. O NDIS não dá suporte à união de pacotes em portas NDIS atribuídas a adaptadores de rede virtual. Para obter mais informações, consulte Portas NDIS.
O NDIS dá suporte à união de pacotes para pacotes recebidos na fila de recebimento padrão do adaptador de rede. Essa fila de recebimento tem um identificador de NDIS_DEFAULT_RECEIVE_QUEUE_ID.