Giter Site home page Giter Site logo

bp2008 / pingtracer Goto Github PK

View Code? Open in Web Editor NEW
263.0 12.0 29.0 219 KB

Graphical pinging and traceroute application. Ping Tracer continuously pings each network host between your computer and a given destination, helping identify the source of connectivity problems.

License: MIT License

C# 100.00%

pingtracer's Introduction

Ping Tracer

Ping Tracer continuously pings each network host between your computer and a given destination, helping identify the source of connectivity problems.

image

This program helps to visually determine the origin of connection problems. The latency over time is shown on graphs, and each instance of packet loss is marked in red.

A common use for such a tool is to monitor your connection to a multiplayer game server so you know who to blame when you experience lag. For example, if you experience a terrible moment of lag and you see that every node beyond your router is showing elevated latency or packet loss, then the lag was on your end. Typically, a poorly performing node will affect your connection to every node after it.

I built this program for personal use, and decided to share it for free as an open source project. As such, it is light on features and polish.

Notes about PingTracer's "Trace Route" implementation:

  • The trace route operation is not optimized for speed, and will take many seconds to complete if any hosts are unresponsive.
  • The trace route operation attempts to contact each host (a.k.a. network node) only once. Any host that fails to respond during the trace route operation will not be monitored.
  • The trace route operation is ended if 5 consecutive hosts fail to respond. This usually indicates that the destination host was already passed by and did not respond to the trace ping.
  • Some hosts respond to the traceroute but do not respond to direct pings. Such hosts are removed from monitoring after several seconds.
  • You can increase the ping rate as high as 10 pings per second (per host!) which can add up to dozens or even hundreds of pings per second. Please use responsibly.
  • Some routers implement ICMP rate limiting in such a way that penalizes rapid pinging. Therefore, with higher ping rates you may see increased packet loss which is not representative of actual network performance.

Installation

Just download the latest release from the releases tab and extract it wherever you like.

Keyboard shortcuts for the graphs

Key Alternate Key action
Home 9 jump to beginning (first ping)
End 0 jump to end (last ping)
Page Up/Down -/+ move one page width to the left/right

Command-Line arguments

Arguments:
    -h <value>
        Load a saved configuration with Display Name or Host field matching <value>.
        If a matching configuration is not found, one will be created.
    -4
        (Use with -h) This indicates the "Prefer IPv4" checkbox must be checked.
    -6
        (Use with -h) This indicates the "Prefer IPv4" checkbox must be unchecked.
    -t0
        (Use with -h) This indicates the "Trace Route" checkbox must be unchecked.
    -t1
        (Use with -h) This indicates the "Trace Route" checkbox must be checked.
    -l x,y,w,h
        The window will be moved to the specified location and size.
        "w" and "h" parameters are optional.
    -s
        Pinging will begin automatically.
    -m
        The ping graphs will be maximized.

See the latest command line arguments in-app with a usage example via Ping Tracer's Tools > Command Line Arguments.

Building from source

PingTracer (as of version 1.17) is a relatively simple C# and Windows Forms app with no third-party dependencies except .NET Framework 4.6.2. You should have no trouble building it in a standard installation of Visual Studio Community Edition.

pingtracer's People

Contributors

bp2008 avatar xnumad avatar xuerian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pingtracer's Issues

route change detection

can you implement the feature to detect route changes during monitoring?
I tried your program an i have done the following

  1. i pinged a webserver -everything is fine
  2. i connected to a vpn - now pingtracer doesn't recognize the new route

It would be nice if pingtracer can to that

Clearing Successful and Failed counters

I'm not sure if this was by design or not, but should stopping and starting clear the counters?

I could see how some might want to keep the stats from the last polling session, but usually when I restart polling I'd prefer the successful and failed counters to clear, as the graphs also clear.

Thanks!

Is there a mac os version planed?

First thanks for your great work. I really enjoy the ping tracer - it works perfect to diagnostic problems in home network. Fritz Mesh makes a lot of troubles πŸ˜•.

But I also need to use the tracer on the Mac of gf. Is a mac version planed? Or could you provide a mac build. Since the traces is build in C# chances are low, aren't they?

Thanks for your answer!

log time format

if a windows version with 24h time format is used - the log doesn't show 24 timestamps - even am or pm is missing
the log just shows 09:59:04:547
or similar

Kind regards

Is there a Portable Mode?

Hi there,
is there a "Portable Mode"? -> meaning do not write any file in Appdata folder but instead read config from Program Folder?

Feature Requests

Very happy to have found this software, it's quite useful! Like MTR but graphical for Windows.

If I may humbly suggest some features that I would find useful:

  • Ability to manually input IPs to be pinged rather than using output of a traceroute.
    ---Sometimes it's handy to choose what you want to monitor - i.e. check latency to the switch that's in between you and a router that won't show up as a hop on a traceroute.
    ---Sometimes you may want to check pings to multiple ISPs or targets in different countries
  • Ability to choose less than 1 ping/sec. i.e. 1 ping / 5 sec.
    Sometimes I need to monitor network latency over a few days, and having 1 ping/sec means I can't see enough history.

Thank you so much for developing this!

Feature Request: Adjust Latency Resolution?

I am using ping tracer to monitor the ping between myself and my ISP to help diagnose issues.

generally for the single hop from my home to my isp latency is less than 20ms. I am wondering if there is a way to resize the graph to shower greater vertical resolution basically I only need to see a graph that shows between 0ms and 60ms.

good 0-30
bad 30-40
worse 40-60

image

After running the program, enter the IP address in Host and click the "Click to Start" button, the following error occurs.

After running the program, enter the IP address in Host and click the "Click to Start" button, the following error occurs.


System.Net.NetworkInformation.PingException: Ping μš”μ²­ 쀑에 μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. ---> System.ComponentModel.Win32Exception: Unknown error (0x2b2a)
μœ„μΉ˜: System.Net.NetworkInformation.Ping.InternalSend(IPAddress address, Byte[] buffer, Int32 timeout, PingOptions options, Boolean async)
μœ„μΉ˜: System.Net.NetworkInformation.Ping.Send(IPAddress address, Int32 timeout, Byte[] buffer, PingOptions options)
--- λ‚΄λΆ€ μ˜ˆμ™Έ μŠ€νƒ μΆ”μ μ˜ 끝 ---
μœ„μΉ˜: System.Net.NetworkInformation.Ping.Send(IPAddress address, Int32 timeout, Byte[] buffer, PingOptions options)
μœ„μΉ˜: PingTracer.Tracert.d__0.MoveNext()
μœ„μΉ˜: PingTracer.MainForm.controllerLoop(Object arg)

Timeline is not continuous

In pingtracer 1.12.1.0 is unfortunately still the bug in that the time list in the graphical overview is not properly scrollable back. For example, if you run a ping overnight and then scroll the graphic completely to see ping failures graphically, then at certain points the wrong time is displayed.
I.e. the timeline is not continuous and logical.
For example the timeline jumps from 9 am to 6 am
timeline1

Kind regards Sokatra

Feature request: Ability to add a related IP to watch

The specific situation that makes me think about this is watching a Comcast-connected endpoint with a static IP. In configurations like that there's both a Comcast cable modem with its own IP address and the assigned static IP address that the end equipment/router gets, but the cable modem IP doesn't show up on a traceroute. By watching both the final IP and the "related" IP of the invisible upstream device you can see whether issues are with the endpoint or with connectivity one hop out from it.

If you're watching from inside a network connected like this you'd typically be watching connections to the router, to the cable modem on 10.1.10.1 (may vary), and to something else external.

Edit: Another useful option could be watching connectivity across a VPN connection and to the external IP of the same destination.

Feature Request [Simple]: Add Digits to Interval Field

It seems that you support <1 sec per ping, yet it would be nice to have a way to see this :-)

For example, I would like to set 0.2 seconds per ping. It seems that this is an valid value yet only shows 0.

Also would be cool as a bonus to set the size of the ping (assuming you are using 32 bytes?).

last 60 minutes -last 24 h last day

hy, it would be nice if you can add the feature to display only the last 60 minutes - or the day, because if i see a outage in the log from yesterday it takes ages to sidescroll to the time where it happens.

Perhaps you can implement a "zoom" feature

kind regards

Display name for multiple targets?

You can (apparently) put multiple IPs in separated by commas to ping multiple targets. I attempted to put in display names, also separated by commas, but the graphs still show the IP address.

Is this a bug or am I misunderstanding the display name field?

Accidental looping of daily data?

First and foremost, thanks for making a great piece of software and sharing it with the world! It's been very useful in debugging home network reliability issues.

One thing I noticed and thought I should report: It seems like, if you increase the circular buffer to span multiple days, the data starts looping improperly in the graph. That is, todays data shows up as yesterdays data and data for the day before (in addition to today's data). Any idea why that might be so?

Thanks,
Chris

feature request

would it be possible to ping 30 different hosts at once?
I used smokeping in the past. this app likes nice. I would like to monitor more then 1 site at a time.
thanks

Feature Request: Use Display Name in graphs

This is a really good tool. But to compare to alternatives like MultiPing (my current favorite), I would need to be able to track pings by name. I typically will run 5-10 at the same time. I would prefer to have SERVER1, FIREWALL, etc for monitoring and troubleshooting as opposed to a bunch of IPs.

image

Settings/state reset

I tweaked settings in both the main UI and in Options. I wanted to reset them all, but there doesn't appear to be a way.

I tried deleting %USERPROFILE%\AppData\Roaming\PingTracer, but then Ping Tracer gives:

System.IndexOutOfRangeException: Index was outside the bounds of the array.
at PingTracer.MainForm.controllerLoop(Object arg)

Suggest adding a way to reset the program state to default. It would be nice if Ping Tracer just created a delete-able settings file next to the .exe, since it's otherwise a portable app already. Thanks.

Feature Request: usage in the shell

It would be incredibly useful to be able to run Pingtracer headless in a shell, specify test parameters, and have the results saved to a file.
The file could be a PNG of the graphs, or a CSV of the pings that could be loaded into a Pingtracer GUI at a later time (or on a different machine) for visual review.

I'd like to be able to run a script on remote machines that does a pingtracer test for a specified period of time, and then review the results on my machine once they are complete. All without interrupting the user.

Thanks for making a great piece of software!

jitter messaurement

Hy, it would be nice if you can add the feature to measure the jitter

Thanks for this nice program

Command Line Args / -h <value> doesn't work

Info:

  • Windows 11 23H2 (version 22631.3235)
  • Ping Tracer 1.16.0.0

Code:

.\PingTracer.exe -h 1.1.1.1 -s

Error:

System.IndexOutOfRangeException: Index was outside the bounds of the array.
PingTracer.MainForm.ControllerWorker_DoWork(Object sender, DoWorkEventArgs e)

Log Ping Response and Timing

It would be really nice if we cold log the ping response, time in ms, and system time to the log file so one could go back to the and see in the log when things dropped etc.
One line per ping

Feature request: display % loss on given sliding window

At this moment, it seems Ping Tracer shows loss percentage on pings visible on the graph. I'd like to be able to configure the time taken into account when showing loss percentage, for example, % loss in last minute, last 10 minutes, last hour, etc. This will be more informative, i think.

Feature request: Graph keyboard shortcuts

Thank you guys, this is awesome! If you get bored it would be great to have a way to jump back to current, even better, a way to use the arrow keys to scan back and forth one screen width at a time.

Also if there is any way I can donate coffee, beer, or tacos let me know and I'll gladly send some fun tickets your way for the need of your choice, I use this tool almost every day but don't have any way to contribute from a code perspective.

Originally posted by @carlanwray in #25 (comment)

mutiple destinations

it would be fine if i can ping mutiple destinations in tabs

Is that possible ?

24h time format

Great tool. Please add a option to change to 24h time display, like 14:15 instead of 2:15 (pm). At the moment it seems only 12h (AM/PM) is supported. Thanks
pt
Example shows its 2:38 2:39 2:40 instead 14:38 14:39 14:40 in european time
Date is in correct notation.
Thanks in advance.

GUI multilanguge

@bp2008

Could be possible to modify the source code to add option to have a multilanguage GUI?

I can help translating in italian.

Pls add tabs and fix datatime line

Thank you very much for your program.
Excellent replacement WinMTR.
There is a request to add tabs, I sometimes need to check several hosts.
Also there is a small visual bug, below in the screenshot.
Maybe it's just me having such a problem on Windows 10 1803 with DPI 125%
image

Add the ability to clean the IP / HOST list
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.