IPv6 Christmas Display Uses 75 Internet’s Worth Of Addresses

We’ve seen internet-enabled holiday displays before, and we know IPv6 offers much more space than the older IPv4 addressing scheme that most of us still use today, but the two have never been more spectacularly demonstrated than at jinglepings.com. The live video stream shows an Internet-connected Christmas tree and an LED display wall that you can control by sending IPv6 ICMP echo request messages, more commonly known as pings.

Reading the page, you quickly parse the fact that there are three ways to control the tree. First, you can type a message in the box and press send – this message gets displayed on the crawl at the bottom of the LED screen.  Second, you can light up the tree by sending a ping to the IPv6 address 2001:4c08:2028:2019::RR:GG:BB, where RR, GG, and BB are 8-bit hex values for red, green, and blue. This is a neat abuse of the IPv6 address space, in that the tree has 224 (around 16.8 million) IPv6 addresses, one for each color you can set. We were impressed by this brute-force use of address space, at least until we read on a little further.

You can also make your own drawings on the LED wall, again by sending pings. In this case, the address to set a pixel to a particular color is: 2001:4c08:2028:X:Y:RR:GG:BB, where X and Y are the pixel coordinates. This seems easy enough: to set pixel (10, 11) to magenta, the RGB value (0xFF, 0x00, 0xFF), you’d simply ping the IPv6 address 2001:4c08:2028:10:11:FF:00:FF. Having  an array of addressable LEDs is commonplace in hacker circles today, although each of them having their own live IPv6 address on the Internet seems a little excessive at first. Then it hits you – each LED has an IPv6 address for every possible color, just like the tree: 16.8 million addresses for each LED. The LED display is 160×120 pixels in size, so the total number of IPv6 addresses used is 160x120x224, which is 75 times larger than all possible IPv4 addresses!  This is a hack of monstrous proportions, and we love it.

In case you’re not running IPv6 yet, we’ve got you covered. To send individual pings using your browser, you can use a site like Ipv6now. If you want to send pixels to the display wall, you’re better off using a 6in4 tunnel that lets you access IPv6 sites using your current IPv4 connectivity.  Hurricane Electric offers a free 6in4 tunnel service that we’ve found useful. Then it’s just a matter of writing some code to send pixel values as pings.  The python scapy module is perfect for this sort of thing. But, first you’ll have to fill out the form on jinglepings.com and wait to get your IPv6 address whitelisted before you can draw on the display; evidently the usual bad actors have found the site and started drawing inappropriate things.

If you think this use of addresses seems wasteful, you needn’t worry. There are around 3.4×1038 IPv6 addresses, enough for 1027 such displays. We’re going to go out on a limb here and say it: nobody will ever need more than 2128 IP addresses.

If you’re looking to build an LED holiday display on a smaller budget, check out this one that re-purposes normal LED strings.

Thanks to [Ward] for the tip!

32 thoughts on “IPv6 Christmas Display Uses 75 Internet’s Worth Of Addresses

    1. I’ve heard from a dev who worked on MMOs that there’s an industry term for any internet-connected service like this: MTTP or “mean time ’till penis.” Fairly sure he made it up himself, but it’s certainly a real thing!

  1. “We’re going to go out on a limb here and say it: nobody will ever need more than 2128 IP addresses.”

    That is a long, skinny, partly rotted limb already, as this hack shows. Address space abuse, and address space squatting, will eat it up sooner than you think.

          1. Give it time. Software behaves like a gas: it always expands to match the shape and volume of its container. Nobody ever thought we’d need this much RAM, bandwidth, disk space, etc–but here’s fucking Chrome taking it all and my computer takes longer to boot than my Quadra from the nineties.

    1. In 1977 Digital Equipment Corp. founder Ken Olsen’s stated: “There is no reason for any individual to have a computer in his home.”, although the statement was taken a little out of context.
      In 1981, Bill Gates supposedly uttered this statement, in defense of the just-introduced IBM PC’s 640KB usable RAM limit: “640K ought to be enough for anybody.”
      Now, when IPv 4 was devised, everybody was convinced that it would be sufficient for a long time, and it was.

      This build is a great example of coming shortage; 4k screens with 24 bit for each color (72 bit, each pixel), and everyone on the planet carrying two smartwatches with a 4k screen, at least two camera’s at the same resolution, at least 8 screen in each household (8k or 16k). Then add two 16k screens at each street corner, two in all cars and four smaller 4k screens for the kids.
      And do not forget about all IOT devices that will be scattered around the planet.

      IPv6 would still suffice.

        1. Given that we’ve exhausted IPv4, and people are now getting given unroutable CGNAT addresses that prevent them hosting services (like for example, a video game shared session), I’m going to flat out say it.

          You are wrong.

          And adding NAT to IPv6 is a ridiculous idea. We *have* the addresses to spare. Why the hell would we not use them!?

        2. NAT only provides any security if you don’t have things like upnp, nat hole punching and other forwarding systems. Practically none. Given that, why wouldn’t you prefer to have the ease of direct connecting to devices rather than having to bring some untrustworthy cloud provider onto your network?

          1. For your average joe blow home user who just goes to walmart picks up a $20 router and plugs up their network, NAT does provide a reasonable level of security against script kiddies port knocking against every single device on their home network. No NAT is not the end all be all for security, but for joe blow it does help save their ass against their stupidity.

            God I do not look forward to the day that IPv6 is common and every single device including every sketchy crap made in china IoT device on joe blow’s home network who knows zilich about security has a publicly routable IPv6 address assigned. I will be a field day for script kiddies that even the late 90’s couldn’t live up to. It will be like the late 90’s/early 2000’s when people would just plug their home PC straight into their new broadband connection and people started to realize that their entire neighborhood was now a LAN and you could browse everyone’s windows file shares and print obscene content on their shared printers.

            The only way to protect all the home network devices is an actual proper firewall between the modem and home network. I can’t wait to see how people handle configuring this, so many will probably just leave it wide open to resolve “problems” or some bastardized extension to UPnP will be developed that is even worse than todays existence of UPnP

        3. Please remember that you can get the same sort of security (and better) with a simple firewall…blocking inbound connections. Easy enough, and if you *want* to host something, it’s a lot easier on IPv6 than IPv4+NAT (or *shudder* CGNAT).

  2. Err… aren’t they using 2^80 addresses, as all of X:Y:R:G:B are potentially 16-bit numbers? That’s 2^48 IPv4 universes’ worth, rather than 75? (Perhaps X is limited to 11 bits – so 2^75 addresses in use in all, 2^43 IPv4 universes’ worth – but the rest aren’t.)

  3. Yeah, seems overkill. They could have easily just added a byte to the existing IPv4 scheme and had more than enough addresses. It also would have made the 4-to-6 transition easier (if the first byte is one, it’s an IPv4 address.) IPv6 is unnecessarily complicated.

    1. Then do the whole thing again in ten years time. And the big challenges with IPv6 would have been exactly the same with IPv4.1 as you describe it. New equipment needed, lazy, cheap ISP’s, slow uptake.

      This way, it’s hopefully a once-in-several-generations step change and we don’t have to go through this all again in the 2040’s.

  4. Well, I don’t think that it was a neat abuse of the IPv6 address space and a sort of brute-force use of address space. Adding NAT to IPv6 is not good idea and unnecessarily complicated.

  5. It’s cool and easy to see why IPv6 was chosen for the straightforward coding design it afforded; but I agree with others too, to some degree, on the overkill. At least it seems like you would only ever have one active session to the board at a time, leaving the opportunity to use a combination of ports and ICMP payload to dictate the pixel and RGB settings.

Leave a Reply to A Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.