It’s back to school season, and for me that meant helping my eldest daughter move into her first apartment with roommates and … cable internet. Few industries garner as much universal hatred as residential Internet service providers (ISPs). The previous residents, in their well-earned distrust of the local provider, told her that it would be much cheaper to purchase her own modem and router than to lease. And so, she bought reasonably-priced (translation: the cheapest) models from Amazon.
To her credit, she was able to configure the modem itself before calling me in distress. It was working and delivering internet when connected through a cabled Windows 10 laptop. Attaching the $25 wireless router which touted “60 second setup,” however, produced an image of a dog-eared piece of paper with a frowny-face, and the message “no internet access.”
My new friend. [Source: Google Chrome]
This cheap router didn’t have much in the way of settings, and what I could change didn’t seem to have any effect. Since the modem was only reporting an IPv6 address, my first assumption was that the router also required IPv6 capabilities. I returned with a modern monstrosity of the highest home-networking order: full IPv6 compatibility and support for wireless standards nobody has yet. But this modernity comes at a price, as it was to be configured through a mobile app. This mobile app consisted of helpful workflows to try to get the device to automatically configure the correct network settings. After answering questions such as whether or not the ISP had provided a static IP address (it hadn’t) and the hardware address of the attached computer (derived from a console command)… it still couldn’t connect.
I’m an experienced professional that has been setting up home and business networks spanning three decades. It’s 2018: why is this still so difficult?
Life was simpler then. [Source: me.me]
The answer is, networking is hard. There are tons of pitfalls and even the most basic concepts of routing and subnets are arcane to anyone who isn’t fluent. You can engineer and automate around all kinds of basic scenarios, but inevitably the people who end up using the network will want to do something non-standard.
When working with new engineers on Amazon Web Services I find that my #1 piece of go-to advice is: check the networking. Ping the machines from each other. Try logging the connections. Make sure the subnets are routable and the VPCs are peered. Are the correct ports configured on the firewalls security groups? What about NAT and internet gateways? Is the DNS resolving correctly?
As we move more of our data infrastructure into containers, Kubernetes clusters, and virtual network adapters on software defined networks, it only gets messier. As engineers it should be our priority to streamline communications protocols, to provide security and isolation where necessary and ease of access elsewhere, and above all, to keep it simple.
Do you have questions about Cloud or DevOps? Comment below and join the conversation!