Partilhar via


Indicação de segmentos coalescidos;

Uma única unidade coalescida (SCU) é uma sequência de segmentos TCP que são aglutinados em um único segmento TCP de acordo com as regras definidas em Rules for Coalescing TCP/IP Segments. Esta seção descreve como indicar os segmentos coalescentes resultantes.

Uma SCU deve:

  • Seja indicado chamando NdisMIndicateReceiveNetBufferLists.

  • Parece um segmento TCP normal que é recebido através do fio.

  • Não ser maior do que o comprimento máximo legal do datagrama IP, conforme definido na seção 3.1 do RFC 791.

    Observação Como os segmentos com cabeçalhos de extensão IPv6 não podem ser agrupados (consulte Condições de exceção que encerram a coalescência), o tamanho da SCU para datagramas IPv6 também é limitado pelo comprimento máximo legal do datagrama.

O driver da NIC ou da miniporta deve recalcular as somas de verificação TCP e IPv4, se aplicável, antes de indicar o segmento coalescido. Se o driver da NIC ou miniporta validar as somas de verificação TCP e IPv4, mas não recalcular para o segmento coalescido, ele deverá definir os sinalizadores TcpChecksumValueInvalid e IpChecksumValueInvalid na estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO. Além disso, nesse caso, o controlador de NIC ou miniporta pode, opcionalmente, definir os valores de verificação do cabeçalho TCP e do IPv4 como zero no segmento.

A NIC e o driver de miniporta devem sempre definir os sinalizadores IpChecksumSucceeded e TcpChecksumSucceeded na estrutura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO antes de indicar o segmento coalescido.

Para obter mais informações sobre regras de coalescência, consulte Regras para coalescência de segmentos TCP/IP.

Para obter mais informações sobre exceções, consulte Condições de exceção que encerram o agrupamento.

Espera-se que a coalescência seja realizada da melhor forma possível. O hardware pode não ser capaz de se aglutinar em alguns casos, por exemplo, devido à falta de recursos. Os requisitos aqui indicados são principalmente para especificar quando não coalescer e como coalescer.

Em um alto nível, a NIC e o driver de miniporta devem lidar com o recebimento de um segmento TCP através do fio da seguinte maneira:

  • Verifique o segmento de entrada para uma exceção da seguinte maneira:

    1. Se nenhuma exceção foi encontrada, verifique se o segmento pode ser aglutinado com o último segmento que foi recebido para a mesma conexão TCP de acordo com as regras.

    2. Se o segmento acionou uma exceção, ou se não for possível coalescê-lo com o segmento recebido anteriormente, indique o segmento individualmente.

  • A NIC e o driver de miniporta não devem indicar segmentos agregados até que o driver de protocolo habilite o RSC, conforme descrito em Consultar e alterar o estado do RSC.

  • Para uma determinada conexão TCP, uma indicação de dados do adaptador de miniporta para a pilha TCP/IP do host pode consistir em um ou mais segmentos coalescidos, separados por um ou mais segmentos individuais que não puderam ser coalescidos.

  • A NIC e o driver de miniporta não devem atrasar a indicação de segmentos TCP, aglutinados ou não. Especificamente, a NIC e o driver de miniporta não devem atrasar a indicação de segmentos de uma chamada de procedimento diferido (DPC) para a próxima, a fim de tentar aglutinar os segmentos.

  • A NIC e o driver de miniporta podem usar temporizadores para determinar o fim da coalescência. No entanto, o tratamento de cargas de trabalho sensíveis à latência deve ser tão eficaz quanto o requisito de limite do DPC.