7 ms·
Trippy – A Network Diagnostic Tool
- FujiApple 3y agoAuthor here, thanks for posting this (i’d meant to do a show HN post at some point). Trippy is a modern, cross platform, feature rich alternative to MTR with a fancy TUI. And yes, it’s written in Rust. https://github.com/fujiapple852/trippy https://github.com/fujiapple852/trippy
- spacecadet 3y agoSuper cool, inspiring me to finish my rust book...
- booboofixer 3y agoWondering if you took a look at or took some inspiration from the packet structures for TWAMP/TWAMP-LITE/SDLM RFCs for round trip times/packet loss measurements or if you sort of winged it and came up with your own. I've been meaning to learn rust by implementing those protocols.
- FujiApple 3y agoFor the RTT and loss% measurements Trippy just does the obvious thing (i.e. RTT = recv time - send time and loss% = lost / total_sent). There is a plan [0] to add custom columns to Trippy and then to add various jitter measurements [1]. Thanks for pointing out the above RFCs, I'll take a look at those and see if they make sense to add to Trippy. [0] https://github.com/fujiapple852/trippy/issues/757 https://github.com/fujiapple852/trippy/issues/757 [1] https://github.com/fujiapple852/trippy/issues/39 https://github.com/fujiapple852/trippy/issues/39
- bastard_op 3y agoAs a network engineer, it's a neat tool, I installed it on arch, and had the mmdb to point at for geo, so that was cool, but mostly unrealistic. My customer in nyc from phoenix says goes via switzerland, but at least I know better. I sent out to my current customers slack channel to check out, it's at least prettier than mtr.
- FujiApple 3y agoYes, in my experience GeoIp is _highly_ unreliable, alas Trippy can do no more than report the location from the provided mmdb file. I'm aware of some interesting techniques which use timing measurements from multiple locations to try and triangulate a more accurate location. In fact somebody raised a request for supporting JA4L [0] to me just this morning. [0] https://github.com/fujiapple852/trippy/issues/856 https://github.com/fujiapple852/trippy/issues/856
- tecleandor 3y agoFree geoip database is very so-so, at least for residential addresses. For example, my ISP is of Romanian ownership (Digi), and although I'm Spanish, located in Spain, and using a Spanish contract (not roaming at all) for years (not a recently arrived ISP), I'm still very frequently shown Romanian versions of ecommerce sites I visit from my phone or home connection. But I wonder: shouldn't at least intermediate router/exchanges locations be better pinpointed through their who is information? Isn't that database updated? I wonder how reliable is JA4L once you start adding hops in the middle of the trace, I guess it takes in account the timing of the intermediate points. A little time ago (1 month? 2? I'm so bad with dates) somebody showed their IP location service that was built using a similar technique, but measuring from multiple different locations, and I think they had a free version of the database. I'll try to find it later.
- tecleandor 3y agoI think I might've mixed a bunch of different stuff in my comment, but the provider I was talking about was IPInfo. They do distributed JA4L-like location guessing and have a free IP-to-country DB: https://ipinfo.io/blog/verifying-ip-address-accuracy/ https://ipinfo.io/blog/verifying-ip-address-accuracy/
- FujiApple 3y agoThat looks great, seems like they've raised the bar for GeoIp accuracy, kudos to them. It looks like they provide mmdb files (for a fee) which should be compatible with Trippy. I'd love to be able to test it out, the sample [0] they provide is rather limited but I guess enough to test compatibility. [0] https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended/ip_geolocation_extended_ipv4_sample.mmdb https://github.com/ipinfo/sample-database/blob/main/IP%20Geo...
- deleted 3y ago[deleted]
- logbiscuitswave 3y agoAs soon as I saw the screenshots of it running in a terminal window, I was in love.
- FujiApple 3y agoThe TUI is built with the awesome Ratatui [0] library (formerly tui-rs [1]). UX is certainly not my area of expertise and I would not have been able to create Trippy without this library. [0] https://github.com/ratatui-org/ratatui https://github.com/ratatui-org/ratatui [1] https://github.com/fdehau/tui-rs https://github.com/fdehau/tui-rs
- commandersaki 3y agoCopying the per-hop loss indicator from mtr is a bad decision in my opinion. It's always been a source of incorrect diagnosis of network issues. The only loss that matters is end to end.
- FujiApple 3y agoYou are right that showing packet loss for intermediate hops is a frequent source of confusion. Rather than leave it out, I added a status column which shows different statuses for intermediate hops (blue if the hop responds to less than 100% of probes and brown if it responds to 0%) vs the target hop (which show amber and red respectively). Where this breaks down is when dealing with ECMP for UDP & TCP tracing, as a given hop (ttl) may represent the target for a given round of tracing but not for the next. The mistake, imho, is to associate _any_ data with a hop (ttl) rather than the hop in the context of a tracing flow. That is why Trippy had a number of features aimed at helping with ECMP, such as Paris and Dublin tracing, and the ability to filter tracing by unique flow id. I've covered these quite a bit in the 0.8.0 [0] and 0.9.0 [1] release notes if you want to know more. [0] https://github.com/fujiapple852/trippy/releases/tag/0.8.0 https://github.com/fujiapple852/trippy/releases/tag/0.8.0 [1] https://github.com/fujiapple852/trippy/releases/tag/0.9.0 https://github.com/fujiapple852/trippy/releases/tag/0.9.0
- geraldhh 3y ago> Rather than leave it out, I added a status column but why?
- deleted 3y ago[deleted]
- lathiat 3y agoThat is not entirely true. Sure it’s not a 100% reliable signal as routing is asymmetric but it also often isn’t and also gives you an idea of which point to ask first at least. If the packet loss starts at your wifi router, or your ISPs router. Or the next hop after you ISP. That all gives you a bit of an idea where the problem likely is. I solve problems like that all the time.
- jph 3y agoNice app! I'm curious, how did you accomplish all the package managers? I added Trippy to my list of Rust favorites: https://github.com/sixarm/cargo-install-favorites https://github.com/sixarm/cargo-install-favorites
- FujiApple 3y agoThank you for adding Trippy to your list. > how did you accomplish all the package managers? In most cases I didn't do anything! I've discovered that there are many kind souls out there who are willing to give up their free time to package and maintain 3rd party applications for a variety of systems they wish to support. It's tedious and, I suspect, usually thankless work. I am very grateful to all of those who have helped with this for Trippy.
- jay-barronville 3y agoOpen-source FTW! Great work, by the way! I’m playing with Trippy right now.