Friday, December 23, 2016

Christmas Pi

I have come to the conclusion that you could replace "climate change" with "IPv6" and get rhetoric on both sides of the debate that would sound plausible. And maybe vice versa. As some of my friends and colleagues have remarked
Bah! I've been hearing the IP address doomsdayers complain for years but people are still hooking up their thermostats to the Internet. IPv6 is a lie. I'll only believe it exists when I see polar bear that can support a 128bit address.
Please supply the names of all staff involved in engineering IPv6 readiness.
and even
I for one do not believe that IPv6 is caused by humans. 
See what I mean? In any case, I decided it was time for me to see what IPv6 had to offer.

(The following was updated on 2017-01-19.)


Roundhouse is my IPv6 router than runs the open source OpenWrt on a Raspberry Pi 2, and manages an IPv6-through-IPv4 WAN tunnel via Hurricane Electric, an (among other things) IPv6 tunnel provider. The router exposes the IPv6 WAN over an Ethernet switch on the upper right.

You can find the Roundhouse project, which is mostly just a makefile and some configuration, here:

The other Raspberry Pi 2 and 3 systems shown here, scrounged from other projects, form the bulk of my IPv6 testbed.

Tin has as its only network connection an LTE cellular modem through which it uses IPv6. I use it for penetration testing of my IPv6 firewall and to demonstrate the global routing of IPv6 global unicast addresses.

Zinc is normally used for testing software that handles GPIO and serial ports, but here it accesses systems on the IPv6 testbed from my production IPv4 network.

Bronze is normally my 32-bit ARM reference platform, but here it demonstrates a dual stack capability by using IPv4 on the IPv6 LAN.

Copper accesses IPv6 devices using a variety of mechanisms including IPv6 global unicast addresses, v4-mapped IPv6 addresses, and IPv6 local unique addresses.

Lead acts as a server, accepting datagrams over UDP or connections over TCP, and echoing any data it receives back to the sender.

I've been expanding Diminuto, my open source C/Linux/GNU-based systems programming library, to support its socket API on IPv6. It wasn't difficult. This library includes the software I've been running on on the Raspberry Pis. Portions of Diminuto have found their way into several commercial products. You can find it here:

Finally I'm still collecting and testing hardware entropy generators, a project called Scattergun that my alter ego recently gave a talk about. I hope to one day write more about that.

Quantum Entropy Generator

You can find Scattergun here:

I hope this convinces you that I have not been slacking off during the holidays.

Best wishes to you and yours. Season's greetings!

(And an especially jolly Ho Ho Ho and Thank You to Alan, Doug, and Dale for their IPv6 comments.)

Wednesday, November 02, 2016


Like most technologists, my home is an informal museum of the history of computing. For many years I had been running Asterisk, an open source IP PBX, on an ancient Dell Dimension 3000 personal computer. Here is the PC after being decommissioned, along with its VGA monitor and its PS2 keyboard and mouse.


In an effort to clear out some of the older computer gear, I replaced the Dell with an Asterisk appliance: a Grandstream UCM6102, which is a purpose-built off-the-shelf IP PBX based around an embedded processor with an ARM core. It's about the size of a paperback book... or a Kindle, if you prefer.

Grandstream UCM6102 Asterisk Appliance

The new device supports my analog business line that I still insist on maintaining, and even an old Radio Shack analog phone that is an antique itself and which I use just for testing. It works just fine with the SIP phone in my home office. My dial plan changed a bit, as I accommodated the new system's way of doing things. Since I'm the only user, this was a minor issue.

I took the old PC to be recycled. Just before it was carted off, I used my iPhone to take a photograph of its company asset tag, and of the Dell service tag on the back. It was only when I got home that I realized it was Digital Aggregates Corporation asset #1 (although that probably has more to do with when I started using asset tags to keep track of company property than anything else.)

Asset Tag DIAG0001

I looked its service tag up on the Dell web site and was told that my system shipped in August 2005. This old Dell PC was at that time the fastest computer in the Palatial Overclock Estate. I was more than a little surprised to discover that, eleven years later, it was still the fastest computer in the house, on a per processor core basis.

Dell lists it as a singe-core Pentium 4 processor at 3 GHz. My second oldest Linux system is a four-core Q6600 processor at 2.4 GHz. My newest Linux system is an eight-core i7 processor at 2.8 GHz. My MacBook Pro runs at 2.8 GHz, and my MacMini desktop at 2.6 GHz.

I have written before at length about the transition from higher clock speeds to multiple cores, and the problems this entails with taking advantage in software of this perhaps hypothetical increase in performance. But I didn't expect to be faced with this evolution in such practical terms.

I'm having some second thoughts.

Tuesday, October 18, 2016

John Sloan and Hardware Entropy Generators

My good friends at Gogo Business Aviation have been following my interest in hardware entropy generators and asked my alter ego John Sloan to give a talk on it. They videotaped the talk and generously agreed to let me share it. Plus: they fed an entire class room of attendees! It doesn't get much better than that.

You'll hear Jaguar mentioned from time to time in the video. That's the code name for an upcoming Gogo BA product that will bring new meaning to the term cloud server.

Once I complete this little research project, you can expect one of my ginormous tl;dr blog articles on the topic.

Thanks again to my colleagues at Gogo Business Aviation.