PsPing – pingowanie, pomiar opóźnień i przepustowości

Jednym z pierwszych narzędzi jakie opisałem na łamach tego bloga był windowsowy ping, to proste narzędzie jest często wykorzystywane przez użytkowników komputerów. Jego podstawowe funkcje wystarczą do przeprowadzenia prostych testów, jednak na nic więcej nie możemy liczyć. Niedawno Łukasz poprosił mnie o napisanie co nieco o jednym z programów jego ulubionego pakietu PStools – PsPing.

W skład pakietu wszedł on stosunkowo niedawno, bo w październiku zeszłego roku. Trzyma poziom pozostałych narzędzi PsTools – jest dobrze przemyślany i zaimplementowany. Muszę przyznać, że to po prostu „ping na sterydach” :). Oprócz najprostszej funkcji, czyli sprawdzania dostępności urządzeń poprzez protokół ICMP (to co potrafi tradycyjny ping) może również wykonywać wysyłać testowe pakiety na dowolny port TCP oraz badać opóźnienie obiegu pakietów TCP pomiędzy systemami. Mamy również możliwość badania przepustowości łącza. Pomiary wykonywane są z dokładnością do 0,01 ms. Ponadto możemy zażyczyć sobie przedstawienia wyników w formie przyjaznej dla arkuszy kalkulacyjnych. Przejdźmy zatem do konkretów. Nie chciałbym po prostu przepisywać/kopiować wszystkich przełączników, więc zajmę się tymi najważniejszymi. Jeżeli chcecie kompletną listę to użyjcie polecenia

c:\>psping -?

lub zajrzyjcie na strona z oficjalna instrukcją.

Pingowanie

Zacznijmy od zwykłego pinga ICMP. Sprawa wygląda niemal identycznie jak w przypadku domyślnego narzędzia.

C:\>psping 192.168.1.10
Pinging 192.168.1.10 with 32 bytes of data:
5 iterations (warmup 1) ping test:
Reply from 192.168.1.10: 2.53ms
Reply from 192.168.1.10: 2.89ms
Reply from 192.168.1.10: 4.14ms
Reply from 192.168.1.10: 2.94ms
Reply from 192.168.1.10: 3.61msPing statistics for 192.168.1.10:
Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 2.89ms, Maxiumum = 4.14ms, Average = 3.39ms

działa znany dobrze przełącznik -t, dzięki któremy pingi będą wysyłane do czasu kiedy przerwiemy kombinacją CTRL+C

C:\>psping -t 192.168.1.10

Jeżeli chcemy wykonać naprawdę szybki test to interwał ustawić możemy na 0 i każemy nie wyświetlać wyników, dodatkowo określiłem ilość pakietów do wysłania.

C:\>psping -i 0 -q -n 1000 192.168.1.10
Pinging 192.168.1.10 with 32 bytes of data:
1001 iterations (warmup 1) ping test: 100%

Ping statistics for 192.168.1.10:
Sent = 1000, Received = 1000, Lost = 0 (0% loss),
Minimum = 1.84ms, Maxiumum = 14.08ms, Average = 2.82ms

Jeżeli chcemy użyć wyników to przygotowania histogramu używamy przełącznika -h

C:\>psping -i 0 -q -n 1000 -h 10 192.168.1.10Pinging 192.168.1.10 with 32 bytes of data:
1001 iterations (warmup 1) ping test: 100%

Ping statistics for 192.168.1.10:
Sent = 1000, Received = 1000, Lost = 0 (0% loss),
Minimum = 1.16ms, Maxiumum = 2.56ms, Average = 1.54ms

Latency Count
1.16 10
1.32 379
1.47 310
1.63 285
1.78 7
1.94 2
2.10 3
2.25 3
2.41 1
2.56 0

Twórca zadbał nawet o taki szczegół jak możliwość wyboru ilości wysłanych pakietów na rozgrzewkę, domyślnie jeden. Zapobiega to uwzględnianiu w statystykach timeout’ów w przypadku gdy pierwszy pakiet musi „odnaleźć” drogę do celu i zapisać adres w tablicy ARP.

„Pingowanie” TCP

Dzięki PsPing nie musimy ograniczać się do ICMP, możemy skorzystać z któregokolwiek portu TCP. Protokół TCP nie został stworzony do celów diagnostyki (w przeciwieństwie do ICMP), ale jak to zazwyczaj bywa w informatyce, można . Pingowanie TCP wykorzystuje mechanizm działania TCP i polega na wysyłaniu pakietu TCP SYN na zadany port maszyny docelowej. Gdy odpowie ona pakietem RST, oznacza to, że port jest zamknięty. Jeżeli pakietem ACK – port jest otwarty, a PsPing może określić jakie jest opóźnienie pomiędzy pakietami, czyli to czego oczekujemy od pinga. Uważajcie jednak, żeby nikt nie posądził was o skanowanie portów :). Jest to bardzo przydatne w przypadku gdy protokół ICMP jest zablokowany lub chcemy przetestować konkretny port. Jeżeli chcemy pingować z wykorzystaniem TCP to wystarczy wybrać port.

C:\>psping -t 192.168.1.10:80
TCP connect to 192.168.1.10:80:
5 iterations (warmup 1) connecting test:
Connecting to 192.168.1.10:80 (warmup): 1.38ms
Connecting to 192.168.1.10:80: 1.20ms
Connecting to 192.168.1.10:80: 1.18ms
Connecting to 192.168.1.10:80: 1.27ms
Connecting to 192.168.1.10:80: 1.15msTCP connect statistics for 192.168.1.10:80:
Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 1.15ms, Maxiumum = 1.27ms, Average = 1.20ms

Pomiar opóźnienia

Do wykonania pomiaru opóźnień będą już nam potrzebne dwa urządzenia. Na jednym uruchomić trzeba PsPing w trybie serwera, podajemy wtedy adres IP lokalnego interfejsu oraz port poprzez który serwer będzie komunikował się z klientem. Na drugiej maszynie inicjujemy test.

serwer

C:\>psping -s 192.168.1.10:7070
Type Control-C to exit.Waiting for connection on 192.168.1.10:7070:

client

C:\>psping -l 8192 -n 1000 192.168.1.10:7070
TCP latency test connecting to 192.168.1.10:7070: Connected
1005 iterations (warmup 5) sending 8192 bytes latency test: 100%

TCP roundtrip latency statistics (post warmup):
Sent = 1000, Size = 8192, Total Bytes: 8192000,
Minimum = 0.94ms, Maxiumum = 3.89ms, Average = 1.16ms

serwer

Waiting for connection on 192.168.1.10:7070: Connected
1005 iterations (warmup 5) receiving 8192 bytes latency test: 100%

TCP roundtrip latency statistics (post warmup):
Received = 1000, Size = 8192, Total Bytes: 8192000,
Minimum = 0.76ms, Maxiumum = 3.88ms, Average = 1.16ms

Przepustowość

Podobnie w przypadku pomiaru przepustowości pomiędzy maszynami. Tym razem pominąłem widok serwera. Podczas testów warto zwiększyć wielkość wysyłanych pakietów, co realizuje przełącznik -l

C:\>psping -b -l 8192 -n 10000 192.168.1.10:7070
TCP bandwidth test connecting to 192.168.1.10:7070: Connected
10008 iterations (8 warmup) sending 8192 bytes bandwidth test: 99%

TCP bandwidth statistics:
Sent = 10000, Size = 8192, Total Bytes: 81969152,
Minimum = 11.12 MB/s, Maximum = 11.25 MB/s, Average = 11.20 MB/s

Przeczytaj także...

5 komentarzy

  1. Dominik pisze:

    Co zrobić z niestabilnymi pingami? Mam problem z internetem toya w Piotrkowie Trybunalskim. Otóż „fachowcy” totalnie olewają problem. Testuje ping przez TCP m.in za pomocą PSPing oraz http-ping.exe. Oba programy pokazują mniej więcej coś takiego 15ms 50ms 21ms 100ms 65ms 30ms i tak w kółko. Lagi są niemiłośierne (mówię o grach). Monitowałem ich kilkukrotnie jednak bez skutku. Nie mam siły użerać się z tą firmą. Jak mogę ich przyprzeć do muru?

  2. maczet pisze:

    Ten sam problem w grze online planetside 2, dzial techniczny Toya totalnie olewa od roku moje monity wsprawie lagow w tej grze.Podejrzewam ze pomiedzy serwerami toya a planetside2 sa jakies problemy ktore powoduja lagi.Wziolem kompa do kolegi zeby sprawdzic gre palnetside 2 online po podlaczeniu od innego providera netu i lagow nie bylo. ta toya cos sciemnia

    • Dariusz Góra pisze:

      Udowodnienie dostawcy, że problem jest po jego stronie to dość karkołomne wyzwanie. Ping nie jest idealnym narzędziem do przedstawiania swoich racji, ale czasem pozwala zaobserwować pewne zależności. Jeżeli chciałbyś sprawdzić jakie opoźnienia występują w części infrastruktury należącej do dostawcy to polecam PingPlotter. Już niedługo wpis poświęcony temu programowi, więc zajrzyj niedługo na stronkę.

  3. maczet pisze:

    Sporo postow jest o tym problemie na forum planetside 2 w ktorej to mam te lagi a oto jeden o nazwie strange lag issue.Identyczny problem mam ja .Niektorzy ludzie opisali tam ze uzywaja programu vpn .I moje pytanie czy to by pomoglo?.Pingplootera zamieszcze jutro bo pisze tego maila z pracy. Dzieki za pomoc.

Dodaj komentarz