Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Paketförlust uppstår när ett nätverkspaket inte når sitt avsedda mål. Vissa paketförluster är normala och orsakar inte alltid nätverksproblem på högre nivå. Vid andra tillfällen kan paketförlust minska prestandan och orsaka att programprogrammeringsgränssnitt (API:er) eller program misslyckas.
Samla in och diagnostisera paketförlust
Det första steget när du utför en undersökning av paketförlust är att samla in Pktmon-spårningar (Packet Monitor), vanligtvis med hjälp av kommandoradsarbetsflödet pktmon. Pktmon kan samla in paketspårningar, tillskriva lokala paketförluster till specifika orsaker och kodplatser och samla in statistik över paketförluster. I kombination med Wireshark-analys av beteende på protokollnivå räcker det med pktmonspårningar för att identifiera de bakomliggande orsakerna till många fall av paketförlust.
Om pktmondiagnostiken är ofullständig kan mer omfattande spårningar på komponentnivå samlas in med hjälp av netsh.exe trace start scenario=InternetClient kommandot eller netsh.exe trace start scenario=InternetServer för klient- respektive serverscenarier. När händelserna har registrerats stoppar du spårningen med hjälp netsh.exe trace stop av kommandot . Dessa spårningar på komponentnivå är bullriga och är inte tydliga, men innehåller ofta ytterligare kontext före eller efter att ett lokalt paket tas bort. För fjärrförlust kan de tyda på att det lokala systemet härleder förekomsten av paketförlust. Spårningarna kan konverteras till text med hjälp av netsh.exe trace convert nettrace.etl, öppnas i Windows Performance Analyzer eller används med andra ETW-verktyg (Event Tracing for Windows).
Om nätverkskort (NIC) misstänks vara en orsak till paketförlusten kan du övervaka dess ignorerande räknare via ett gränssnitt för prestandaräknare eller cmdleten Get-NetAdapterStatistics .
Vanliga orsaker till förlust av lokala paket
Lokal paketförlust är fullt observerbar och kan orsakas av olika interna och externa faktorer.
Lokal policy
Kontrollprogramvaran kan orsaka att paket från fjärrdatorer tas bort som standard, till exempel när Windows-brandväggen avvisar inkommande anslutningsförsök. Cybersäkerhet eller programvara mot skadlig kod i systemet kan också orsaka dessa problem.
Låga resurser
Om systemet eller socketen får slut på resurser för att hantera paketet tas paketet bort. Exempel på resursgränser är fysiskt minne i systemet och socket-buffertar för att skicka eller ta emot. Beroende på resursgränsen kan dessa händelser bara vara mikrosekunder, till exempel när systemets PROCESSOR inte kan reagera tillräckligt snabbt på en fullständig mottagningsbuffert.
ARP- eller ND-fel
Om nästa hopp för ett utgående paket inte svarar på begäranden om adressmatchningsprotokoll (ARP) eller grannidentifiering (ND) släpps paket som skickas till nästa hopp i det lokala systemet. Paket kan också tas bort under ARP- eller ND-processer om gränsen för ARP- eller ND-paketkö överskrids. Själva ARP- eller ND-paketen tas vanligtvis inte bort lokalt och tillhör kategorin för fjärrpaketförlust.
Ingen väg
Om nätverksskiktet inte kan hitta en giltig väg till målet kan paketen tas bort.
Ogiltigt paket
Om paketrubrikerna är ogiltiga kan paketet tas bort. Paketrubrikerna innehåller till exempel ett ogiltigt kontrollsumma- eller fältvärde.
Vanliga orsaker till fjärrpaketförlust
Fjärrpaketförlust kan inte observeras direkt på den lokala datorn när paketet tas bort. Internetprotokoll (IP) och de flesta lager under IP är "bästa möjliga" och inte tillförlitliga. Principen från slutpunkt till slutpunkt kräver slutpunkter för att implementera tillförlitlighet i sina protokoll om motståndskraft mot paketförlust krävs. I vissa fall skickar nätverket eller fjärrslutpunkten ett protokollspecifikt felmeddelande som anger orsaken till förlusten. I många fall är dock den enda indikationen på paketförlust en brist på svar.
Trafikstockning
Algoritmer för förlustbaserad överbelastningskontroll skickar snabbare och snabbare tills ett paket går förlorat. Om algoritmen drar slutsatsen att förlusten orsakas av överbelastning minskar den tillfälligt sändningshastigheten som svar. Dessa algoritmer kräver en liten förlust för att ge en feedbacksignal.
Fjärrpolicy
Nätverket eller fjärrdatorn kan släppa paket enligt sin egen princip.
Målet kan inte nås
Detta kan inträffa om fjärrdatorn inte har en socket som är bunden till fjärrporten, fjärrdatorn är offline eller om nätverket inte kan hitta en sökväg till fjärrdatorn.
Sessionsförlust
Om nätverket (inklusive tillståndskänslig NAT (Network Address Translation), brandväggar och lastbalanserare) eller fjärrdatorn återställs eller inte tar emot ett paket nyligen kan sessionskontexten upphöra och efterföljande paket tas bort.
Maximal minskning av överföringsenhet (MTU)
Om storleken på paketet överskrider den maximala överföringsstorleken för en nätverkslänk längs sökvägen till fjärrdatorn, kan MTU-droppar ge ett fel: Fragmentering av Internet Control Message Protocol (ICMP) krävs eller paketet är för stort.
Exempel på spårningar av paketövervakare
Kör följande kommandon:
pktmon.exe start -c
pktmon.exe stop
pktmon.exe etl2txt PktMon.etl
Den resulterande PktMon.txt filen innehåller rader som liknar följande:
[30]0000.0000::<DateTime> [Microsoft-Windows-PktMon] Drop: PktGroupId 8444249301423149, PktNumber 1, Appearance 0, Direction Rx , Type IP , Component 49, Filter 1, DropReason INET: transport endpoint was not found , DropLocation 0xE000460A, OriginalSize 402, LoggedSize 148
Drop: ip: 192.168.5.88.50005 > 192.168.5.68.50005: UDP, length 374
Den här informationen anger att det inkommande UDP-paketet som är avsett för port 50005 tas bort eftersom ingen lokal socket är bunden till porten.
Exempel på Network Shell-spårningar
Kör följande kommandon:
netsh.exe trace start scenario=InternetClient
netsh.exe trace stop
netsh.exe trace convert NetTrace.etl
Den resulterande NetTrace.txt filen innehåller rader som liknar följande:
[30]0000.0000::<DateTime> [Microsoft-Windows-TCPIP]TCPIP: Network layer (Protocol 1(ICMP), AddressFamily = 2(IPV4)) dropped 1 packet(s) on interface 13. SourceAddress = 192.168.5.68. DestAddress = 192.168.5.88. Reason = 9(Inspection drop). Direction = 0(Send). NBL = 0xFFFFE189BEAF3AC0.
Den här informationen anger att det utgående ICMP-paketet tas bort på grund av WFP-inspektion (Windows Filtering Platform). Nästa steg för WFP är att följa WFP:s felsökningssteg för liveöverföringar.
I ett annat scenario bekräftas inte ett tidigare skickat TCP-segment av fjärrslutpunkten, och så småningom utlöses en lokal återöverföringstimer, vilket gör att TCP skickar om några av de potentiellt förlorade data:
[31]0000.0000::<DateTime> [Microsoft-Windows-TCPIP]TCP: Connection 0xFFFFE189BD811AA0 0(RetransmitTimer) timer has expired.
[31]0000.0000::<DateTime> [Microsoft-Windows-TCPIP]TCP: Tail Loss Probe Event Connection = 0xFFFFE189BD811AA0, Event = 2(TimerFired).
[31]0000.0000::<DateTime> [Microsoft-Windows-TCPIP]TCP: Tail Loss Probe Send Connection = 0xFFFFE189BD811AA0 SndUna = 2526318360, SndMax = 2526321759, SendAvailable = 3399, TailProbeSeq = 2526320299, TailProbeLast = 2526321759, ControlsToSend = 0, ThFlags = 16.
[31]0000.0000::<DateTime> [Microsoft-Windows-TCPIP]TCP: connection 0xFFFFE189BD811AA0 (local=192.168.5.68:55330 remote=6.6.0.27:443): TCP send event, SeqNo = 2526320299, BytesSent = 1460, CWnd = 18538, SndWnd = 197632, SRtt = 17631, RttVar = 4947, RTO = 300, RcvWnd = 65535, PacingRate = 0, State = 4(EstablishedState), CongestionState = 0, SndUna = 2526318360, SndMax = 2526321759, RecoveryMax = 0, RcvBufSet = 0(FALSE), MaxRcvBuf = 65535.
[31]0000.0000::<DateTime> [Microsoft-Windows-TCPIP]TCP: connection = 0xFFFFE189BD811AA0 send tracker marked a transmit as rexmit. Start = 2526320299, End = 2526321759, Timestamp = 467744252, InFlightCount = 2, SackedBytes = 0, BytesInFlight = 4859.
[31]0000.0000::<DateTime> [Microsoft-Windows-TCPIP]TCP: Connection 0xFFFFE189BD811AA0 0(RetransmitTimer) timer started. Scheduled to expire in 300 ms. Processor 31: LastInterruptTime 305324952689 100-ns ticks; LastMicrosecondCount 30532515324 msec