Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
NDIS biedt ondersteuning voor offloading van TCP/IP-controlesomtaken tijdens runtime.
Notitie
Checksum-outload-out-of-band-gegevens (OOB) worden opgeslagen in de NET_BUFFER_LIST informatiematrix. Voor meer informatie over OOB-gegevens kunt u Toegang tot TCP/IP Offload NET_BUFFER_LIST-informatieraadplegen.
Voordat u een NET_BUFFER_LIST structuur doorgeeft aan het minipoortstuurprogramma voor een pakket waarop het minipoortstuurprogramma controlesomtaken uitvoert, geeft het TCP/IP-transport de controlesomgegevens op die zijn gekoppeld aan de NET_BUFFER_LIST structuur. Deze informatie wordt opgegeven door een NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO structuur, die deel uitmaakt van de NET_BUFFER_LIST informatie (out-of-band-gegevens) die is gekoppeld aan de NET_BUFFER_LIST structuur.
Voordat u de berekening van de controlesom voor een TCP-pakket offloadt, berekent het TCP/IP-transport de complementsom van de TCP pseudoheader. Het TCP/IP-transport berekent de som van de aanvulling op alle velden in de pseudoheader, inclusief bron-IP-adres, doel-IP-adres, protocol en de TCP-lengte voor TCP-pakketten. Het TCP/IP-transport plaatst de eentallige complement som voor de pseudoheader in het veld checksum van de TCP-header.
De één-aanvullingssom van de pseudoheader die door het TCP/IP-transport wordt geleverd, geeft de NIC een voorsprong bij het berekenen van de echte TCP-controlesom voor het verzendpakket. Als de werkelijke TCP-controlesom berekend moet worden, berekent de NIC het variabele deel van de TCP-controlesom (voor de TCP-header en belading), wordt deze controlesom toegevoegd aan de eens-complimentsom voor de pseudoheader berekend door het TCP/IP-transport en wordt de 16-bits eens-complement voor de controlesom berekend. Zie RFC 793 en RFC 1122 voor meer informatie over het berekenen van dergelijke controlesommen.
Notitie
Het TCP/IP-transport berekent de complementsom van de pseudoheader van een UDP-pakket met dezelfde stappen als voor een TCP-pakket en slaat de waarde op in het veld Controlesom van de UDP-header.
Houd er rekening mee dat het TCP/IP-transport er altijd voor zorgt dat het controlesomveld in de IP-header van een pakket is ingesteld op nul voordat het pakket wordt doorgegeven aan een onderliggend minipoortstuurprogramma. Het minipoortstuurprogramma moet het controlesomveld in een IP-header negeren. Het minipoortstuurprogramma hoeft niet te controleren of het veld controlesom is ingesteld op nul en hoeft dit veld niet in te stellen op nul.
Nadat de NET_BUFFER_LIST structuur is ontvangen in de MiniportSendNetBufferLists of MiniportCoSendNetBufferLists functie, voert een minipoortstuurprogramma doorgaans de volgende controlesomverwerking uit:
Het miniport stuurprogramma roept de NET_BUFFER_LIST_INFO macro aan met een _Id van TcpIpChecksumNetBufferListInfo om een structuur van NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO te verkrijgen.
Het minipoortstuurprogramma test de IsIPv4- en IsIPv6-vlaggen in de NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO structuur. Als zowel de IsIPv4- als IsIPv6-vlaggen niet zijn ingesteld, mag de NIC geen controlesombewerkingen uitvoeren op het pakket.
Als de vlag IsIPv4 of IsIPv6 is ingesteld, test het minipoortstuurprogramma de TcpChecksum-, UdpChecksumen IpHeaderChecksum vlaggen om te bepalen welke controlesommen de NIC moet berekenen voor het pakket.
Het minipoortstuurprogramma geeft het pakket door aan de NIC, waarmee de juiste controlesommen voor het pakket worden berekend. Als een pakket zowel een tunnel-IP-header als een transport-IP-header heeft, voert een NIC die IP-controlesommen kan afhandelen alleen controlesomtaken uit op de tunnelheader. Het TCP/IP-transport voert IP-controlesomtaken uit op de transport-IP-header.
Voordat u een NET_BUFFER_LIST structuur aangeeft voor een ontvangstpakket waarop controlesomtaken worden uitgevoerd, valideert het minipoortstuurprogramma de juiste controlesommen en stelt u de juiste XxxChecksumFailed of XxxChecksumSucceeded vlaggen in de NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO structuur in.
Het uitschakelen van adrescontrole offloads wanneer Large Send Offload (LSO) is ingeschakeld, voorkomt niet dat het minipoortstuurprogramma controlesommen berekent en toevoegt aan de door de LSO-functie gegenereerde pakketten. Om adrescontrole-offloads in dit geval uit te schakelen, moet de gebruiker ook LSO uitschakelen.