IPv6 woes - RFC

Matt Palmer mpalmer at hezmatt.org
Mon Sep 6 22:55:19 UTC 2021


On Mon, Sep 06, 2021 at 08:38:44AM +0200, Xavier Beaudouin via NANOG wrote:
> Hello,
> 
> 
> > I absolutely HATE testing, developing and supporting IPv4+IPv6, more
> > than doubling my time, adding 3rd stack would actually not increase
> > cost that much, it's the 1=>2 which is fantastically expensive. And
> > costs are transferred to customers.
> 
> Dual stack is doubling dev time ? Ok... this is quite strange...

Nope, entirely normal and expected.  Coding for one case is very
straightforward:

Do thing
Do other thing
Do this as well

Coding for two cases involves identifying each step which needs to be done
differently for the two cases and coding up the things to be done
differently:

if case1:
  Do thing this way
elif case2:
  Do same thing this other way
Do other thing the same way regardless
if case1:
  Do this as well
elif case2:
  Don't do anything

Adding a third case is *usually* not as hard, as you've identified at least
most of the places that need to be done differently for different cases, and
if you're lucky then some of the doings can be the same both ways:

if case1:
  Do thing this way
elif case2:
  Do same thing this other way
elif case3:
  Do same thing in *yet another* way
Do other thing the same way for everyone
if case1 or case3:
  Do this as well
elif case2:
  Don't do anything

It's not just program control flow either; there's also data structures and
data storage to think of.  That can end up being even *more* complicated
than the control flow, especially if you're interoperating with other
systems that need to consume the same data.

For example, in the IPAM software world, imagine you named a field
"ip_address", that contains an IPv4 address, and now you want to add IPv6. 
But that database is also used by some other software (that you might not
even control), so you can't just rename it to "ipv4_address" and change all
the references in your code.  Do you add "ipv6_address" and hope that
everyone figures out that "ip_address" *means* "ipv4_address"?  What about
in the future, when you have the first device that is IPv6-only...  what
goes into that "ip_address" field?

- Matt



More information about the NANOG mailing list