Indication des segments coalesciés

Une seule unité coalesced (SCU) est une séquence de segments TCP qui sont fusionnés en un seul segment TCP selon les règles définies dans Règles pour les segments TCP/IP de coalescing. Cette section décrit comment indiquer les segments coalescés résultants.

Une SCU doit :

  • Être indiqué en appelant NdisMIndicateReceiveNetBufferLists.

  • Ressemblez à un segment TCP normal qui est reçu sur le câble.

  • Ne pas dépasser la longueur maximale du datagramme IP légal, comme défini à la section 3.1 de la RFC 791.

    Note Étant donné que les segments avec des en-têtes d’extension IPv6 ne peuvent pas être coalescés (voir Conditions d’exception qui mettent fin au coalescing), la taille de la SCU pour les datagrammes IPv6 est également limitée par la longueur maximale des datagrammes légaux.

Le pilote NIC ou miniport doit recompiler les sommes de contrôle TCP et IPv4, le cas échéant, avant d’indiquer le segment fusionné. Si la carte réseau ou le pilote miniport valide les sommes de contrôle TCP et IPv4, mais ne les calcule pas pour le segment fusionné, il doit définir les indicateurs TcpChecksumValueInvalid et IpChecksumValueInvalid dans la structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO . En outre, dans ce cas, la carte réseau ou le pilote miniport peut éventuellement zéro des valeurs de somme de contrôle d’en-tête TCP et IPv4 dans le segment.

La carte réseau et le pilote miniport doivent toujours définir les indicateurs IpChecksumSucceed etTcpChecksumSucceed dans la structure NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO avant d’indiquer le segment fusionné.

Pour plus d’informations sur les règles de fusion, consultez Règles pour les segments TCP/IP de coalescing.

Pour plus d’informations sur les exceptions, consultez Conditions d’exception qui mettent fin à la fusion.

On s’attend à ce que la fusion soit effectuée selon les meilleurs efforts. Le matériel peut ne pas être en mesure de fusionner dans certains cas, par exemple en raison d’un manque de ressources. Les exigences énoncées ici visent principalement à spécifier quand ne pas fusionner et comment fusionner.

À un niveau élevé, la carte réseau et le pilote miniport doivent gérer la réception d’un segment TCP sur le câble comme suit :

  • Recherchez une exception dans le segment entrant comme suit :

    1. Si aucune exception n’a été rencontrée, case activée si le segment peut être coalisé avec le dernier segment reçu pour la même connexion TCP selon les règles.

    2. Si le segment a déclenché une exception ou s’il n’est pas possible de le fusionner avec le segment précédemment reçu, indiquez le segment individuellement.

  • La carte réseau et le pilote miniport ne doivent pas indiquer les segments fusionnés tant que le pilote de protocole n’active pas RSC comme décrit dans Interrogation et modification de l’état RSC.

  • Pour une connexion TCP donnée, une indication de données de l’adaptateur miniport vers la pile TCP/IP hôte peut se composer d’un ou plusieurs segments coalesciés, séparés par un ou plusieurs segments individuels qui n’ont pas pu être regroupés.

  • La carte réseau et le pilote miniport ne doivent pas retarder l’indication des segments TCP, qu’ils soient fusionnés ou non. Plus précisément, la carte réseau et le pilote miniport ne doivent pas retarder l’indication des segments d’un appel de procédure différée (DPC) à l’autre afin de tenter de fusionner les segments.

  • La carte réseau et le pilote miniport peuvent utiliser des minuteurs pour déterminer la fin de la fusion. Toutefois, la gestion des charges de travail sensibles à la latence doit être aussi efficace que l’exigence de limite DPC.