Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
NDIS podporuje snižování zátěže úloh kontrolního součtu protokolu TCP/IP za běhu.
Poznámka:
Kontrolní součet offload out-of-band (OOB) data jsou uložena v NET_BUFFER_LIST informačním poli. Další informace o datech OOB najdete v tématu Přístup k informacím o odlehčení NET_BUFFER_LIST protokolu TCP/IP.
Předtím, než je ovladači miniportu předána struktura NET_BUFFER_LIST pro paket, na kterém miniport provede úkoly související s kontrolním součtem, přenos TCP/IP specifikuje informace o kontrolním součtu, které jsou přidruženy k této struktuře NET_BUFFER_LIST. Tyto informace jsou určeny NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO strukturou, která je součástí NET_BUFFER_LIST informací (mimo pásmová data), která je přidružená ke struktuře NET_BUFFER_LIST.
Před přenesením výpočtu kontrolního součtu pro paket TCP vypočítá přenos TCP/IP součet jedničkového doplňku pro pseudoheader TCP. Přenos TCP/IP vypočítá součet doplňku pro všechna pole v pseudoheaderu, včetně zdrojové IP adresy, cílové IP adresy, protokolu a délky protokolu TCP pro pakety TCP. Přenos TCP/IP zadá jedničkový doplněk pro pseudoheader do pole Kontrolní součet v hlavičce TCP.
Součet doplňku pro pseudoheader poskytovaný přenosem TCP/IP poskytuje síťové kartě náskok při výpočtu skutečného kontrolního součtu TCP pro odesílací paket. Pro výpočet skutečného kontrolního součtu TCP síťová karta vypočítá proměnnou část kontrolního součtu TCP (pro hlavičku TCP a datovou část), přičte tento kontrolní součet k jedničkovému doplňku pseudoheaderu vypočítanému přenosem TCP/IP a vypočítá 16bitový jedničkový doplněk kontrolního součtu. Další informace o výpočtu těchto kontrolních součtů naleznete v dokumentu RFC 793 a RFC 1122.
Poznámka:
Přenos TCP/IP vypočítá součet jedničkového doplňku pro pseudoheader paketu UDP stejným způsobem jako u paketu TCP a uloží tuto hodnotu do pole Kontrolní součet v hlavičce UDP.
Mějte na paměti, že přenos TCP/IP vždy zajišťuje, že pole kontrolního součtu v hlavičce PROTOKOLU IP paketu je nastaveno na nulu před předáním paketu podkladovému ovladači miniportu. Ovladač miniportu by měl ignorovat pole kontrolního součtu v hlavičce PROTOKOLU IP. Ovladač miniportu nemusí ověřit, zda je pole kontrolního součtu nastaveno na nulu a nemusí toto pole nastavit na nulu.
Jakmile obdrží strukturu NET_BUFFER_LIST ve své MiniportSendNetBufferLists nebo MiniportCoSendNetBufferLists funkci, ovladač miniportu obvykle provádí následující zpracování kontrolního součtu:
Ovladač miniportu volá makro NET_BUFFER_LIST_INFO s _IdTcpIpChecksumNetBufferListInfo k získání NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO struktury.
Ovladač miniportu testuje příznaky IsIPv4 a IsIPv6 ve struktuře NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO. Pokud nejsou nastavené příznaky IsIPv4 i IsIPv6 , síťové rozhraní by nemělo provádět žádné kontrolní součty u paketu.
Pokud je nastaven příznak IsIPv4 nebo IsIPv6, ovladač miniportu testuje příznaky TcpChecksum, UdpChecksum a IpHeaderChecksum, aby určil, které kontrolní součty má síťový adaptér vypočítat.
Ovladač miniportu předává paket síťovému adaptéru, který vypočítá odpovídající kontrolní součty paketu. Pokud má paket hlavičku IP tunelu i transportní IP hlavičku, síťová karta, která podporuje odkládání kontrolního součtu IP, provádí úlohy kontrolního součtu IP pouze na hlavičce tunelu. Přenos TCP/IP provádí úlohy kontrolního součtu IP v transportní IP hlavičce.
Před uvedením struktury NET_BUFFER_LIST pro přijímací paket, na kterém provádí úlohy související s kontrolním součtem, ovladač miniportu ověří příslušné kontrolní součty a nastaví příslušné příznaky XxxChecksumFailed nebo XxxChecksumSucceeded ve struktuře NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO.
Vypnutí adresního kontrolního součtu, pokud je povolená funkce LSO (Large Send Offload), nezabrání ovladači miniportu ve výpočtu a vkládání kontrolních součtů do paketů generovaných funkcí LSO. Chcete-li v tomto případě zakázat snižování zátěže kontrolního součtu adresy, musí uživatel také zakázat LSO.