IPB199: Developing IPv6-Friendly Code
Network engineer and security developer Chris Cummings joins IPv6 Buzz to discuss the practical benefits of IPv6 for software developers, focusing on how eliminating NAT reduces complexity, improves logging, and lowers costs. The conversation also covers common pitfalls developers encounter when writing IPv6-compatible code and best practices for building address-family-agnostic applications.
Summary
In this episode of IPv6 Buzz, host Tom Coffeen and Nick Baraglio are joined by guest Chris Cummings, a network engineer turned security developer who works in an IPv6-first environment. The discussion centers on the often-overlooked perspective of software developers when it comes to IPv6 adoption.
Chris argues that IPv6 is not merely a compliance burden but offers genuine practical benefits to developers. The core argument is that IPv4 with NAT breaks end-to-end connectivity, forcing developers to implement complex workarounds — particularly in environments like Docker and Kubernetes where multiple layers of NAT compound the problem. Chris references a Tailscale article that catalogued six or seven distinct NAT traversal types as evidence of how deeply this complexity has penetrated networking software.
The conversation pivots to security and logging benefits. Chris explains that from a security standpoint, IPv6 simplifies log analysis by exposing actual host addresses rather than shared NAT addresses. Nick extends this point to highlight the massive storage overhead that CGN NAT translation logging imposes on service providers — potentially a 10x increase in storage requirements compared to native IPv6 logging — and notes that law enforcement inquiries almost always involve IPv4 addresses, creating accountability gaps.
The group also discusses the financial case for IPv6 adoption in enterprise environments: reduced log storage costs, elimination of IPv4 surcharges from cloud providers, and reduced engineering time spent troubleshooting NAT-related failures.
The NAT-equals-security debate is addressed at length. Chris acknowledges that some enterprises still conflate NAT with firewall protection, citing a research article demonstrating NAT bypass via state table entry reuse as a turning point in public awareness. The group also discusses the nuanced tension around NPTv6 as a workaround for multi-homing without provider-independent address space, with the general consensus that while PI space is preferable, dogmatic positions are counterproductive.
Chris then outlines specific 'rakes to step on' for developers new to IPv6: containerization tools may not work out of the box in IPv6-only environments, GitHub tooling still has gaps, source address selection in dual-stack environments can create unpredictable routing, and the concept of multiple addresses per interface is counterintuitive for developers accustomed to using IP as an identity layer. She also warns against naively enumerating a /64 subnet in scripts — a mistake that would result in CPU exhaustion and near-infinite runtime.
Finally, Chris advises developers to avoid hardcoding address family assumptions into their software. She recommends using DNS names and higher-level abstractions rather than raw socket calls, ensuring input validation supports both address families, and replacing hardcoded '0.0.0.0' bind addresses with '::' to enable dual-stack listening. She recounts submitting a one-line pull request that changed '0.0.0.0' to '::' in an open-source project, immediately adding IPv6 support.
About this episode
Tom Coffeen and Nick Buraglio welcome Chris Cummings to talk about developing code for IPv6. Chris argues that moving to IPv6 restores end-to-end connectivity, which reduces complexity for developers without the need for “ridiculous hacks” caused by IPv4 NAT. The discussion offers practical advice on avoiding common developer traps, and covers financial benefits such as<a class="excerpt-read-more" href="https://packetpushers.net/podcasts/ipv6-buzz/ipb199-developing-ipv6-friendly-code/" title="ReadIPB199: Developing IPv6-Friendly Code">... Read more »</a>
Key Insights
- Chris Cummings argues that NAT traversal forces developers to build complex workarounds into protocols, and that this complexity multiplies in containerized environments like Docker and Kubernetes where multiple NAT layers stack on top of each other.
- Nick Baraglio notes that service providers maintaining CGN NAT translation logs face approximately a 10x increase in storage requirements, and that law enforcement inquiries about subscriber identity almost always involve IPv4 addresses — making IPv6 a practical solution to both cost and accountability problems.
- Chris contends that one of the most common IPv6 developer errors is a naive regex that only accepts dotted-decimal IPv4 addresses, causing software to silently reject valid IPv6 inputs rather than being address-family agnostic.
- Chris warns that attempting to enumerate a /64 subnet in a script — as one might enumerate a /24 in IPv4 — will cause the script to run indefinitely at 100% CPU, illustrating how IPv4-centric assumptions break down at IPv6 scale.
- Chris argues that developers should almost never make raw socket calls specifying a specific address family, and that changing a bind address from '0.0.0.0' to '::' is often sufficient to enable full dual-stack support — a change she demonstrated with a single-line pull request accepted by an open-source project.
Topics
Transcript
Welcome to the IPv6 Buzz, where we dare to dive into the 128-bit address-based wormhole. I'm Ed Horley. And I'm Nick Baraglio. We discuss everything IPv6 on the show from strategy, design, deployment, operations, and even internet standards. And I'm Tom Coffeen. We've spent 20-plus years working with the IPv6 protocol. We work on getting IPv6 working. And we're here to share some lessons learned on how to avoid common mistakes. All right. Hey, welcome back, everyone. Another episode of IPv6 Buzz. And today we've got a guest, Chris Cummings. She's here to help us talk about some programming around IPv6, which I don't think we get a chance to talk about too often on the Buzz. But looking forward…
Full transcript available for MurmurCast members
Sign Up to AccessMore from The Everything Feed - All Packet Pushers Pods
HW083: Inside the WLAN Pros Toolbox – A Free, Multipurpose App
Keith Parsons introduces the WLAN Pros Toolbox, a free cross-platform app containing over 100 Wi-Fi tools, calculators, and references available on iPhone, iPad, Mac, Android, and web browsers. Built using Flutter and AI-assisted development, the app is intentionally free with no ads, subscriptions, or data collection because Parsons believes essential professional tools should be accessible to all engineers worldwide.
NB582: Infoblox Adds Network Observability with Kentik Buy; Satellite Data Centers vs. the Environment
Network Break covers major tech news including Infoblox's acquisition of Kentik for network observability, alarming electricity consumption by data centers (especially in Ireland), security advances in AI agent detection, and developments in space infrastructure including Rocket Lab's acquisition of Iridium and environmental concerns about orbital data centers.
TCG079: Why Your State File is Actually a Distributed Systems Problem
Malcolm Matalka argues that Terraform's value lies not in its HCL syntax but in its state management, which is fundamentally a distributed systems problem inadequately solved by file-based locking. He discusses how StateGraph reimagines infrastructure state as a database rather than a JSON file, enabling concurrent operations, better queryability, and solving the scalability issues that plague teams as they grow.
NAN126: Fine-Tuning Open Source LLMs for Network Engineering
Edward Tuharu, founder of VXpert AI, discusses his career pivot from pursuing CCIE certification to building AI-powered NOC/SOC systems after recognizing the transformative potential of transformer architecture in 2022. He outlines the progression of AI technologies from prompting to RAG to fine-tuning to agentic systems, drawing parallels with networking protocol evolution and emphasizing the importance of domain-specific knowledge and fundamentals.
D2DO306: Platform Engineering in the Agentic Era (Sponsored)
Jad Elzane and Miles Gray from VMware by Broadcom discuss how platform engineering evolved from DevOps to address developer cognitive overload, and how Platform Engineering 2.0 must now accommodate AI agents as consumers alongside human developers, requiring new security guardrails and observability controls.