by archmaster on 12/5/23, 2:56 PM with 137 comments
by archmaster on 12/5/23, 3:10 PM
A few months ago I published https://cpu.land (discussion: https://news.ycombinator.com/item?id=37062422). After cpu.land, I felt a lot of pressure to make another Big Giant Thing but didn't really have anything compelling. So I just hacked away on personal projects and, through some coincidental learning on how the Internet works, ended up hacking together a traceroute program that could live stream to a website from scratch!
I realized I had never seen this sort of thing on the web before, and it was actually a kind of cool and novel way of visualizing the structure of the Internet, so I polished it up and built a pretty site around it. In the process, I learned some really interesting things about how BGP and the structure of The Internet, so I melted the traceroute tool with an article sharing that knowledge.
I'm still hacking on this and I'm sure my code will manage to break somehow, so please let me know if you have any suggestions! :)
(Side note: why Rust? I don’t think programming language choice matters that much, but I wanted to quickly write a very dependable low-level program, and I really like Rust’s error handling primitives. Why do you care about this?)
by quantum5 on 12/5/23, 8:40 PM
It's actually surprisingly easy to get an ASN for yourself and speak BGP. If you find building something like this tool interesting, you should give it a try. I wrote an introduction of sorts earlier (https://qt.ax/asn) if that interests you.
by supermatt on 12/5/23, 4:19 PM
by nullindividual on 12/5/23, 4:21 PM
https://archive.nanog.org/sites/default/files/traceroute-201...
by denton-scratch on 12/5/23, 8:24 PM
It's actually impossible. Responses are essentially free-form (if the server responds at all). I tried my hand at this; you can make an ad-hoc "parser" that works for 90% of addresses/domains (or you could, ten years ago when I tried). But the remainder are intractable.
Nowadays it's much worse; nearly everything is hidden behind privacy shields, which purport to protect PII. But WHOIS records aren't supposed to contain personal information; they're supposed to contain contact information for network operators.
This is ICANN's doing, I'm afraid. ICANN had a rule that networks should provide public WHOIS servers. They never enforced the rule, and now they've scrapped it.
by magnat on 12/5/23, 5:34 PM
by ibejoeb on 12/5/23, 4:05 PM
https://research.cs.washington.edu/networking/astronomy/reve...
paper: http://www.cs.washington.edu/homes/ethan/papers/reverse_trac...
by c0pium on 12/5/23, 4:14 PM
If you think about how IP works, you’ll see that this doesn’t particularly matter but that it can make understanding the routing more difficult.
by monkeyjoe on 12/5/23, 3:21 PM
by Hasz on 12/5/23, 5:16 PM
This article from APNIC explains more about mtr and how to read it (plus some interesting details about how MPLS can obscure true paths)
https://blog.apnic.net/2022/03/28/how-to-properly-interpret-....
Also worth noting: It's also sometimes useful to trace with UDP, and many routers will drop ICMP selectively under strain.
Nice article, and excellent presentation!
by at0mic22 on 12/5/23, 8:53 PM
by jcrawfordor on 12/6/23, 1:25 AM
by averageRoyalty on 12/6/23, 12:09 PM
I was wondering if we'd address this. That was my first thought - how can you do this without initiating ICMP from my side?
> Does running a “reverse traceroute” sacrifice accuracy? A little, actually.
> As I said when describing Internet routing, each device a packet traverses makes a decision about where to send the packet next until it reaches its final destination. If you send a packet in the other direction, the devices might make different routing decisions… and if one device makes one different decision, the rest of the path will certainly be different.
> This reverse traceroute is still helpful. The paths will be roughly the same, likely differing only in terms of which specific routers see your packet.
Sure... But it's pretty common for multi pathed AS' to traverse in all sorts of different ways. My experience (non residential) is that more often than not, the trace and reverse trace were different. Your upstreams and my upstreams have very different commercial agreements, and both peer and transit in multiple places.
Still cool though, well done!
by mikewarot on 12/5/23, 6:11 PM
How did you manage to tilt the section header text? I've not seen that done before.
by collsni on 12/6/23, 4:34 AM
9 a23-203-147-39.deploy.static.akamaitechnologies.com (23.203.147.39) 36.707 ms 36.783 ms 40.110 ms 10 * * * 11 * * * 12 * * * 13 * * * 14 * * * 15 * * * 16 * * * 17 * * * 18 * * * 19 * * * 20 * * * 21 * * * 22 * * * 23 * * * 24 * * * 25 * * * 26 * * * 27 * * * 28 * * * 29 * * *
by sgjohnson on 12/6/23, 1:19 PM
I announce only IPv6, because I don't currently have access to any v4 blocks, they are expensive and I have little need for one.
by kazinator on 12/5/23, 7:23 PM
Then one packet will get all the echoes in one go instead of having to send a tirade of packets with increasing TTL values.
by zharknado on 12/6/23, 2:09 AM
Makes me imagine an online programming textbook that could to walk you through what your own custom code is doing. Very cool!
by noort on 12/5/23, 3:34 PM
I guess it's supposed to do something like this: https://dnschecker.org/online-traceroute.php
by netfortius on 12/5/23, 7:33 PM
by keep_reading on 12/7/23, 1:46 PM
A Practical Guide to (Correctly) Troubleshooting with Traceroute by Richard A Steenbergen explains it well
by luckman212 on 12/5/23, 11:57 PM
Holy shit. This girl's going places. I just skimmed https://kognise.dev and saw that in addition to the deep understanding of TCP/IP and all 7 layers of the OSI model she appears to posses, she also does front- and back-end development, embedded hardware, mobile apps, and compilers. She also rock climbs, can pilot a Cessna (all by herself), build robots, plays (and composes music for) the cello (since she was 5 years old apparently).
Do I need to keep going? This is nothing short of incredible. If I did 1/10 of the things this kid's already done by the time I kick the bucket I would have lived a full life.
by Kinrany on 12/5/23, 8:15 PM
by senectus1 on 12/5/23, 11:24 PM
by aizyuval on 12/6/23, 8:11 AM
Can I trace the location of an AS?
by deadbabe on 12/6/23, 1:41 AM
by spondylosaurus on 12/6/23, 7:02 AM
by elwebmaster on 12/5/23, 11:47 PM