Condividi tramite


Indicazione dei segmenti coalesci

Una singola unità di unione (SCU) è una sequenza di segmenti TCP uniti in un singolo segmento TCP in base alle regole definite in Regole per il coalescing di segmenti TCP/IP. Questa sezione descrive come indicare i segmenti uniti risultanti.

Un SCU deve:

  • Essere indicato chiamando NdisMIndicateReceiveNetBufferLists.

  • Sembra un normale segmento TCP ricevuto in rete.

  • Non superare la lunghezza massima del datagramma IP legale, come definito nella sezione 3.1 di RFC 791.

    Nota Poiché i segmenti con intestazioni di estensione IPv6 non possono essere uniti (vedere Condizioni di eccezione che terminano il coalescing), le dimensioni di SCU per i datagrammi IPv6 sono limitate anche dalla lunghezza massima del datagramma legale.

Il driver NIC o miniport deve ricompilare i checksum TCP e IPv4, se applicabile, prima di indicare il segmento unito. Se il driver NIC o miniport convalida i checksum TCP e IPv4 ma non li ricompila per il segmento coalesced, deve impostare i flag TcpChecksumValueInvalid e IpChecksumValueInvalid nella struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO . In questo caso, inoltre, il driver NIC o miniport può facoltativamente zero i valori di checksum dell'intestazione TCP e IPv4 nel segmento.

Il driver NIC e miniport devono sempre impostare i flag IpChecksumSucceeded e TcpChecksumSucceededed nella struttura NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO prima di indicare il segmento unito.

Per altre informazioni sulle regole di unione, vedere Regole per l'unione di segmenti TCP/IP.

Per altre informazioni sulle eccezioni, vedere Condizioni di eccezione che terminano l'unione.

È prevista l'esecuzione del coalescing su base ottimale. L'hardware potrebbe non essere in grado di unire in alcuni casi, ad esempio a causa della mancanza di risorse. I requisiti indicati in questo articolo sono principalmente di specificare quando non unire e come unire.

A livello generale, la scheda di interfaccia di rete e il driver miniport devono gestire la ricezione di un segmento TCP in rete come indicato di seguito:

  • Controllare la presenza di un'eccezione nel segmento in ingresso come indicato di seguito:

    1. Se non è stata rilevata alcuna eccezione, verificare se il segmento può essere unito all'ultimo segmento ricevuto per la stessa connessione TCP in base alle regole.

    2. Se il segmento ha attivato un'eccezione o se l'unione con il segmento ricevuto in precedenza non è possibile, indicare singolarmente il segmento.

  • Il driver NIC e miniport non deve indicare segmenti uniti finché il driver di protocollo non abilita RSC come descritto in Esecuzione di query e modifica dello stato RSC.

  • Per una determinata connessione TCP, un'indicazione dei dati dalla scheda miniport allo stack TCP/IP host può essere costituita da uno o più segmenti uniti, separati da uno o più singoli segmenti che non possono essere uniti.

  • La scheda di interfaccia di rete e il driver miniport non devono ritardare l'indicazione dei segmenti TCP, se uniti o meno. In particolare, il driver NIC e miniport non deve ritardare l'indicazione dei segmenti da una chiamata di procedura posticipata (DPC) alla successiva per tentare di unire i segmenti.

  • Il driver NIC e miniport possono utilizzare timer per determinare la fine dell'unione. Tuttavia, la gestione dei carichi di lavoro sensibili alla latenza deve essere efficace come il requisito di limite DPC.