Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Pingfs: Stores your data in ICMP ping packets (2020) (github.com/yarrick)
78 points by linkdd 21 hours ago | hide | past | favorite | 26 comments




It's humbling to know that the RAM of computers like ZX Spectrum and Commodore 64 would fit in a single IP packet. It took minutes to load that "paket" from cassette tape.

With IPv6 there is even an extension to go to 4 GB packets (extremely rare to actually be implemented though), which you can send in less than 100 ms with an 800G NIC!

> to 4 GB packets

Heh. Anyone remember the ping of death[0]? A lot (most?) of computers on the early internet didn't properly handle large packets, _especially_ from ICMP pings. Once upon a time, you could send a single ping w/ a packet size of 65536 and crash the remote.

[0] https://en.wikipedia.org/wiki/Ping_of_death


A software version of a mercury delay line! https://en.wikipedia.org/wiki/Delay-line_memory

Yep. ICMP delay line memory.

Okay, but could someone ELI5 how it works? Because I am heckin’ confused

The UK's National Musuem of Computing has a nice demonstration video https://www.youtube.com/watch?v=xGEAPVCuwvY . Apparently delay-line memory also went on to have wide use in colour TVs before the arrival of cheap semiconductor memory https://www.youtube.com/watch?v=EPQq7xd3WdA , which was quite appropriate as it had come from radar in the first place https://www.youtube.com/watch?v=JZLpbhsE72I&t=675s .

Imagine a continuously-moving loop that stores bits. When you want a certain bit you just wait for it to loop back to the position you want.

Good, but how does a ping hold data? AFAIK each ping is a single round trip and not a continuous loop. And where in the packet is the data stored?

ICMP packets pretty much always carry some data (even though it's not _strictly_ required). This data is what is padded when the user asks for a ping with a specific packet size (e.g., when debugging MTU issues).

In some applications, using an ICMP payload and getting a quote of the IP header + 8-bytes of the original packet back in ICMP error messages is part of the application. For example, traceroute utilises the fact that it gets part of the payload back in a ICMP TTL exceeded message to identify _which_ traceroute request was being responded to.


In everybody else's router as it travels back and forth.

Imagine mailing somebody a letter with data; once they receive the letter they send it back. The information is stored within the postal system.


you're right it's not continuous, you'd have to send another ping once the first one is finished. Your data is only "stored in the network" until the ping completes which would be a few hundred ms or so and then another ping has to be sent. If a single ping fails i wonder if the whole "fs" is corrupted or if there some kind of error handling built in.

Clearly you need to send multiple redundant PINGs. ICMP delay line memory RAID.

Obligatory Tom7 reference: [Harder Drive: Hard drives we didn't want or need](https://www.youtube.com/watch?v=JcJSW7Rprio)

He stores data in ICMP ping packets, but also Tetris board states, among others. If you are not familiar with Tom7, let this be an introduction to a heavyweight whimsical internet nerd


38:37 https://www.youtube.com/watch?v=JZLpbhsE72I&t=2317s in Jay Forrester's "The Design Environment and Innovations of Project Whirlwind" talk ( https://www.computerhistory.org/collections/catalog/10270308... ):

> There was a desperate search for better memory. We seriously considered. at one stage. renting a television microwave link from Boston to Buffalo and back so that one could store something like 3,000 bits in the 3 milliseconds of round-trip transit time.

Though I'm not sure why they wouldn't have just used a delay line for that task: that form of memory was already in use in computers, as discussed by Forrester himself from 11:15 https://www.youtube.com/watch?v=JZLpbhsE72I&t=675s .


Tom7 is a gem. Anything by Tom7 is worth your time. Always.

Came to comments only to mention/upvote this and add engagement so everyone knows about the GOAT that Tom7 is.

"Tetris is an inventory-management survival-horror game."

The concept is widely covered in the amazing book Silence on the Wire[1] by Michal Zalewski. I wish he or someone else would write modern equivalent (or at least a new, updated edition) of the book.

[1] https://nostarch.com/silence.htm


He's on HN, maybe he reads your post.

I believe he found new solace - woodwork[1][2]. Given the state of security and things in general in the IT, I definitely understand. Especially with the AI slop influx. His blog is quite interesting to read though, highly recommend.

[1] https://lcamtuf.substack.com/p/how-do-wood-finishes-hold-up

[2] https://lcamtuf.coredump.cx/woodworking/


Reminded me of GNU Terry Pratchett[1].

[1]: http://www.gnuterrypratchett.com/


Router designers hate him...

Srsly... the ram inside a core router is some of the most precious resources around... this is an ooold idea.. people were doing at least as far back as the 2000s.. i showed them how our router (Avici TSR) worked and said "please don't use the super fancy fabric temporary store for this."

This kills the router designer.


makes me wonder if a sufficiently large number of connected nodes can represent bits via their online/offline status, and their network graph representing "memory"


Every time someone does something like this, I recall this post from Xe:

https://xeiaso.net/blog/anything-message-queue/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: