Schlachtfeld: Untersuchen Sie den Paketverlust und die Paketrücklaufzeit eines Multiplayer-Spiels

733
halirutan

Ich bin mir bewusst, dass dies eine ungewöhnliche Frage ist, aber es scheint, dass die Leute hier sehr wahrscheinlich diejenigen sind, die helfen können. Ich versuche mit meinem ISP zu debuggen, warum ich während des Spielens extreme Verzögerungen habe.

Frage: Wie kann ich die Laufzeit und den Paketverlust von Paketen analysieren, um genauere Informationen darüber zu erhalten, wo der Engpass in der Verbindung liegt? Gibt es eine einfache Möglichkeit, den Verkehr bis zu einem gewissen Grad künstlich zu reproduzieren, ohne das Spiel tatsächlich zu spielen?

Hier ist meine Situation:

  • Mein ISP stellt meine Verbindung über ein großes drahtloses Netzwerk mit mehreren Zugangspunkten über eine Entfernung von etwa 10 km zur Verfügung, bevor er das Hauptkabel erreicht. Das war schon immer so und in der Vergangenheit erwies es sich als äußerst zuverlässig. Aufgrund von Hardware-Änderungen oder anderen Setup-Änderungen meines ISP sank die Gameplay-Qualität vor einigen Monaten. Mein ISP ist sehr hilfreich und versucht, die Ursache der Probleme zu finden und zu beheben.
  • Ich habe im Allgemeinen einen sehr guten Ping und wenn ich spiele, zeigen die Informationen im Spiel immer einen guten Ping von 20-30ms.
  • Eine Funktion von Battlefield ist, dass Warnsymbole angezeigt werden, wenn die Framerate sinkt, die Verbindungswendezeit schlecht ist oder Pakete verloren gegangen sind. Die Situation, die sich wiederholt, ist, dass ich ungefähr 10 bis 60 Sekunden ohne Warnsymbol spielen kann. Dann erlebe ich einen schweren Paketverlust, bei dem ich Verzögerungen habe und BF mir alle Arten von Verbindungswarnungen anzeigt. Danach kann ich noch einige Sekunden spielen, bevor ich dieses Verhalten wieder sehe.

Ich arbeite ausschließlich auf Linux und ich bin ein wenig komfortabel mit ping, traceroute, nmapund andere Netzwerk - Tools. Ich kenne die hohen Ports, die BF verwendet, ich kann die verwendeten Paketgrößen herausfinden und natürlich kann ich IPs von Spieleservern extrahieren. Was ist ein guter Weg, um dieses Problem zu ermitteln, damit ich den Paketverlust hoffentlich künstlich provozieren kann, während mein ISP das Problem in seinem Netzwerk behebt?

Analyse

Ich habe WireShark installiert, wie von moonpoint vorgeschlagen, und ein paar Minuten langes Gameplay eingefangen. In einer ersten Analyse konzentrierte ich mich auf die Pakete, die vom Game-Server kommen. Ich habe alle UDP-Pakete gefiltert, die vom Server zu meiner IP kommen, und die Zeit angepasst, um die relative Zeit zwischen diesen Paketen zu sehen. Nach dem Sortieren gab es etwa 20 Pakete, die zwischen 650 ms und 1300 ms dauerten, was ich vermute, bei denen ich die Hälfte der Karte überspringe. Dazwischen haben die meisten anderen Pakete fast genau die Laufzeit, die ich als "Ping" im Spiel von etwa 30 ms sehe.

Nachdem ich alle kritischen Pakete markiert hatte, löschte ich den Filter und schaute auf den gesamten Datenverkehr, um zu sehen, ob ich ein Muster finden kann, bei dem alle Pakete um die kritischen Pakete herum sind. Ich habe festgestellt, dass es zwei Situationen gibt. Beachten Sie, dass 94.250.208.153 der Spieleserver ist und das blaue Highlight das wichtige UDP-Spielepaket ist:

Zunächst etwa 10-15 Pakete vor dem kritischen gibt es ein mystisches SSDP-M-Search-Paket, das von einer MAC-Adresse kommt:

img

Die zweite Situation ist, dass dem kritischen Paket eine TCP-erneute Übertragung (meistens an einen Google-Server) vorangestellt wird (oder manchmal umgeben ist):

Schlachtfeld: Untersuchen Sie den Paketverlust und die Paketrücklaufzeit eines Multiplayer-Spiels

Gibt es weitere Schritte, die ich von meiner Seite aus machen könnte? Kann mir jemand sagen, wie ich das mystische SSDP-Paket untersuchen kann?

1
Als erstes würde ich prüfen, ob Ihre Up- und Downstream-Daten nicht überlastet sind. Ein Download wird angehalten, wenn der Upload erfolgt und umgekehrt. Ein Download ist normalerweise schnell genug, aber der Upload könnte ein Problem sein. Ping erkennt keine Upload-Probleme, es sei denn, es wird ein Fehler festgestellt, jedoch nicht die Ursache. Websites wie speedtest.net geben eine Grafik an, während sie den Test durchführen. Ist der Upload stabil? Haben Sie andere Programme, die den Upload verwenden könnten? LPChip vor 7 Jahren 0
@LPChip Danke für den Vorschlag, aber das ist eine Sache, die ich bereits getestet habe. Ich habe ziemlich stabile Up- und Downstreams. halirutan vor 7 Jahren 0
Zum Zeitpunkt des Schreibens dieses Kommentars, der vor der Bearbeitung Ihres Posts war, wurde er nicht in Ihre Frage geschrieben, sonst hätte ich ihn nicht vorgeschlagen. Faustregel: Um zu vermeiden, dass Leute Sie bitten, Dinge zu tun, die Sie bereits getan haben, erwähnen Sie sie in Ihrer Frage. :) LPChip vor 7 Jahren 0
@LPChip Keine Sorgen. Meine Bearbeitung war nur wegen der Antwort von moonpoint möglich :) halirutan vor 7 Jahren 0

1 Antwort auf die Frage

1
moonpoint

Die MTR, die die in Ping und Traceroute gefundenen Funktionen kombiniert, kann auch ein nützliches Werkzeug sein, um den Punkt oder die Punkte entlang eines Netzwerkpfads zu bestimmen, an denen Paketverlust auftritt oder wo Jitter hoch ist ( Beispiel ).

Sie können auch das kostenlose und Open Source- Paketanalysegerät Wireshark verwenden, um das Problem zu beheben. Um jedoch die Informationen zu verstehen, die es bereitstellt, ist es erforderlich, sich mit der Funktionsweise der zugrunde liegenden Internetprotokolle, z. B. TCP / IP, vertraut zu machen . Es gibt Kurse und Tutorials zur Online-Nutzung. Wenn Sie lernen, wie Sie es effektiv nutzen können, kann dies ziemlich viel Zeit in Anspruch nehmen. Sobald Sie sich mit der Verwendung eines Tools wie Wireshark vertraut gemacht haben, können Sie alle Arten von Problemen, die mit der Netzwerkverbindung zusammenhängen, leichter beheben.

Wenn Sie Wireshark nicht kennen, gibt es auf YouTube ein WireShark-Tutorial für Anfänger und Wireshark 101: How to Wireshark, Haktip 115 ; viele andere können durch Suche nach den Begriffen "Wireshark-Tutorial" gefunden werden. Zu den Websites mit Tutorials gehören das Schnelle und schmutzige Wireshark-Tutorial, Wie man Wireshark zum Erfassen, Filtern und Überprüfen von Paketen verwendet, und das Wireshark Tutorial, eine PDF-Datei, die von Professor Angelos Stavrou im Computer Science Department der George Mason University erstellt wurde. Es gibt auch Online-Kurse zur Verwendung von Wireshark

Mit Wireshark oder tcpdump, einem Befehlszeilen-Paketerfassungs-Tool für Linux, OS X und Microsoft Windows ( WinDump ), können Sie die vom und zum System fließenden Pakete erfassen, wenn das Problem auftritt, damit Sie die Daten später selbst analysieren können oder in Echtzeit oder, da beide Tools die erfassten Daten als PCAP- Datei speichern können, können Sie die Daten Ihrem ISP- Supportmitarbeiter zur Verfügung stellen, da deren Mitarbeiter möglicherweise mit der Interpretation solcher Daten vertraut sind, wie dies bei PCAP-Dateien der Fall ist Eine gängige Methode zum Austausch von Daten zu einem Netzwerkproblem zwischen Netzwerkingenieuren beim Debuggen eines Problems.

Wireshark erfasst alle Daten einer Netzwerkschnittstelle. Da Sie jedoch die Netzwerk-Port-Nummern und IP-Adressen kennen, die den Battlefield-Spieleservern zugeordnet sind, können Sie einen Wireshark-Filter verwenden, um nach Port-Nummer (n) und / oder IP-Adresse zu filtern .

Aktualisieren:

Die hexadezimalen Ziffern, die Sie gesehen haben, die mit "SSDP M-Search-Paket" verknüpft sind, sind keine MAC- Adresse (Media Access Control) . MAC-Adressen ähneln 50-c5-8d-26-c2-06, dh Ethernet- und Wi-Fi-MAC-Adressen werden normalerweise mit Bindestrichen oder Doppelpunkten zwischen jeweils zwei hexadezimalen Ziffern mit insgesamt 12 Ziffern angezeigt, dh 48 -bit-adressen. Was Sie sehen, ist stattdessen eine IPv6- Adresse. Heute werden im Internet zwei Versionen des Internetprotokolls verwendet, die lange verwendete Internetprotokollversion 4 (IPv4) und die neuere Internetprotokollversion 6 (IPv6).

SSDP steht für Simple Service Discovery Protocol, ein Protokoll, das für Universal Plug and Play (UPnP) verwendet wird . Ein System in Ihrem lokalen Netzwerk, das mit der IPv6-Adresse fe80 :: 50e7: d4f0: db: c4dc, sendet ein Paket an eine IP-Multicast- Adresse, ff02 :: c. Für IPv4 lautet die Multicast-Adresse 239.255.255.250, während SSDP über IPv6 den Adressensatz ff0X :: c für alle durch X angegebenen Gültigkeitsbereiche verwendet ("X" in dem Paket, das Sie gesehen haben, ist "2").

Ich weiß nicht, warum Ihr System die IP-Adresse von Amazon Web Services (AWS) oder die Google-Adresse kontaktiert .

C:\>nslookup 52.203.205.255 8.8.8.8 Server: google-public-dns-a.google.com Address: 8.8.8.8  Name: ec2-52-203-205-255.compute-1.amazonaws.com Address: 52.203.205.255   C:\>nslookup 216.58.212.78 8.8.8.8 Server: google-public-dns-a.google.com Address: 8.8.8.8  Name: lhr35s05-in-f78.1e100.net Address: 216.58.212.78  

Ich sehe die Verbindung zu Port 443, dem bekannten Port für HTTPS-Verkehr, aber als ich einen 52.203.205.255 Reverse-IP-Lookup mit DomainTools Reverse-IP-Lookup- Funktion durchführte, meldete es "Wir haben keine Ergebnisse für Ihren Lookup gefunden." Wenn Sie eine IP-Adresse in dieses Suchwerkzeug eingeben, werden Ihnen häufig die vollständig qualifizierten Domänennamen (FQDNs) für Websites angezeigt, die unter der IP-Adresse gehostet werden (mehrere Websites können auf derselben IP-Adresse gehostet werden), in diesem Fall jedoch nicht.

Ein Reverse-IP-Lookup 216.58.212.78 hat dieselbe Nachricht zurückgegeben. Wenn Sie 1e100.net sehen, handelt es sich um ein Google-System. Google verwendet "1e100" im Namen, da dies eine "1" mit einhundert Nullen darstellt, was ein Googol ist .

Beide Pakete sind möglicherweise nicht mit der Kommunikation mit dem Battlefield-Server verbunden. Die Tatsache, dass es sich um erneute Übertragungen handelt, die gesendet werden, wenn ein System ein Paket gesendet hat, jedoch kein Bestätigungspaket von der anderen Seite erhalten hat, das darauf hinweist, dass es empfangen wurde, kann jedoch darauf hinweisen, dass der Datenverkehr zu anderen Standorten auch einen Paketverlust erleidet Gleichzeitig treten Probleme mit dem Battlefield-Server auf. Sie können nach diesen beiden IP-Adressen filtern, um andere Pakete von / zu ihnen anzuzeigen, um eine bessere Vorstellung davon zu erhalten, warum sie bei der Paketerfassung angezeigt werden, wenn Sie daran interessiert sind, warum Ihr System mit diesen beiden IP-Adressen kommuniziert.

+1 Gute Antwort. Ich habe eine kleine Analyse gemacht und meiner Frage Details hinzugefügt. Vielleicht haben Sie eine Idee, ob ich mehr von meiner Seite tun kann, außer die pcap-Datei an meinen ISP zu übergeben. Vielleicht gibt es eine Möglichkeit, es noch schlimmer zu machen, damit wir wissen, worauf wir achten müssen. halirutan vor 7 Jahren 0
@halirutan, ich fügte meiner Antwort zusätzliche Informationen bezüglich des SSDP-Pakets hinzu. moonpoint vor 7 Jahren 0
Danke für das Update. Die Pakete für Google und Amazon stammen höchstwahrscheinlich von einem Hintergrund-Aktualisierungs-Daemon. Letzte Nacht habe ich alles abgeschaltet und jeden Update-Dienst beendet, den ich finden konnte. In der Tat gab es selten andere Pakete. Es scheint, dass das Netzwerk ein massives Jitter-Problem hat. IMO sollte der Datenverkehr im besten Fall zwischen Paketen vom und zum Spieleserver wechseln. Dies ist häufig der Fall, wie man [hier] (http://imgur.com/LWPfw6H) sehen kann. An den kritischen Verzögerungen sieht es jedoch so aus (http://imgur.com/VMeRKWp), wo die Pakete vom Server zu spät ankommen. halirutan vor 7 Jahren 0