Re: The renumbering problem [Re: [BEHAVE] Comments on the NAT66 draft]

james woodyatt <jhw@apple.com> Tue, 18 November 2008 05:28 UTC

Return-Path: <owner-v6ops@ops.ietf.org>
X-Original-To: ietfarch-v6ops-archive@core3.amsl.com
Delivered-To: ietfarch-v6ops-archive@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 70EC83A6851 for <ietfarch-v6ops-archive@core3.amsl.com>; Mon, 17 Nov 2008 21:28:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -104.347
X-Spam-Level:
X-Spam-Status: No, score=-104.347 tagged_above=-999 required=5 tests=[AWL=-1.052, BAYES_00=-2.599, FH_RELAY_NODNS=1.451, HELO_MISMATCH_COM=0.553, J_CHICKENPOX_13=0.6, J_CHICKENPOX_22=0.6, RCVD_IN_DNSWL_MED=-4, RDNS_NONE=0.1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id r8IOKO3MADvh for <ietfarch-v6ops-archive@core3.amsl.com>; Mon, 17 Nov 2008 21:28:51 -0800 (PST)
Received: from psg.com (psg.com [IPv6:2001:418:1::62]) by core3.amsl.com (Postfix) with ESMTP id 04C673A67E1 for <v6ops-archive@lists.ietf.org>; Mon, 17 Nov 2008 21:28:51 -0800 (PST)
Received: from majordom by psg.com with local (Exim 4.69 (FreeBSD)) (envelope-from <owner-v6ops@ops.ietf.org>) id 1L2J2j-000JIy-0q for v6ops-data@psg.com; Tue, 18 Nov 2008 05:22:29 +0000
Received: from [17.254.13.23] (helo=mail-out4.apple.com) by psg.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.69 (FreeBSD)) (envelope-from <jhw@apple.com>) id 1L2J2X-000JI4-Lp for v6ops@ops.ietf.org; Tue, 18 Nov 2008 05:22:25 +0000
Received: from relay12.apple.com (relay12.apple.com [17.128.113.53]) by mail-out4.apple.com (Postfix) with ESMTP id 956FB4745B0B; Mon, 17 Nov 2008 21:22:16 -0800 (PST)
Received: from relay12.apple.com (unknown [127.0.0.1]) by relay12.apple.com (Symantec Brightmail Gateway) with ESMTP id 79C21464002; Mon, 17 Nov 2008 21:22:16 -0800 (PST)
X-AuditID: 11807135-a5378bb000000d45-b2-49225107e1b2
Received: from [17.151.125.17] (unknown [17.151.125.17]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by relay12.apple.com (Apple SCV relay) with ESMTP id A2C66420003; Mon, 17 Nov 2008 21:22:15 -0800 (PST)
Cc: Eric Klein <EricLKlein@softhome.net>, IPv6 Operations <v6ops@ops.ietf.org>, Behave WG <behave@ietf.org>
Message-Id: <60FD682C-1436-493F-995D-4B2A7241D398@apple.com>
From: james woodyatt <jhw@apple.com>
To: Brian E Carpenter <brian.e.carpenter@gmail.com>
In-Reply-To: <4920E51C.7070007@gmail.com>
Content-Type: text/plain; charset="WINDOWS-1252"; format="flowed"; delsp="yes"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Apple Message framework v929.2)
Subject: Re: The renumbering problem [Re: [BEHAVE] Comments on the NAT66 draft]
Date: Mon, 17 Nov 2008 23:22:14 -0600
References: <4911B9E7.8090108@free.fr> <BB56240F3A190F469C52A57138047A03014762B5@xmb-rtp-211.amer.cisco.com> <courier.4912CE09.00003CB8@softhome.net> <BB56240F3A190F469C52A57138047A03014765AF@xmb-rtp-211.amer.cisco.com> <6BB0BB30-7AA4-4821-B9EB-4703794F3C87@muada.com> <courier.4914868B.00003F53@softhome.net> <9937716B-A667-4FB6-8337-9596AD356901@muada.com> <courier.4917F518.00002B4D@softhome.net> <20081110143243.GI89033@Space.Net> <courier.491852A1.000070E6@softhome.net> <1568D893-1DC9-48CF-A04A-F2B55F31E416@apple.com> <4920E51C.7070007@gmail.com>
X-Mailer: Apple Mail (2.929.2)
X-Brightmail-Tracker: AAAAAA==
Sender: owner-v6ops@ops.ietf.org
Precedence: bulk
List-ID: <v6ops.ops.ietf.org>

On Nov 16, 2008, at 21:29, Brian E Carpenter wrote:
> On 2008-11-11 11:24, james woodyatt wrote:
> ...
>> That said, I'm not impressed by the arguments put forward by the
>> opponents of RFC 4864 local network protection who, in my view, are
>> greatly exaggerating the seriousness of the network renumbering
>> problem.
>
> James, and anyone else who is still able to focus on this thread:
>
> Please read draft-carpenter-renum-needs-work-00.txt and send
> comments and suggestions to its authors.

I'm delighted to read this draft.  I remain unconvinced by arguments  
that the network renumbering problem is a compelling argument for the  
need to insert thirty gazillion PI routes into the DFZ.

----

Some thoughts on section 2.2, Existing Host-related Mechanisms => PPP...

For IPv4, PPP endpoints acquire (during IPCP negotiation) both their  
own address and the address of their peer, which may be assumed to be  
the default router if no routing protocol is operating.  Renumbering  
events arise when IPCP negotiation is restarted on an existing link,  
when LCP is terminated and restarted, or when the point-to-point  
medium is reconnected.  (I can't remember right now whether NCP must  
be renegotiated if an authentication protocol is restarted while NCP  
is up.)  Peers may propose either the local or remote address or  
require the other peer to do so.  Negotiation is complete when both  
peers are in agreement.  In practice, if no routing protocol is used,  
then the provider proposes both addresses and requires the subscriber  
either to accept the connection or abort.

For IPv6, PPP endpoints acquire both local and remote addresses during  
IP6CP negotiation in much the same way as for IPv4, but the addresses  
are link-local scope only.  In practice, each side can propose its own  
address and renegotiation is only necessary when there is a  
collision.  Once link-local addresses are assigned and IP6CP is  
complete, automatic assignment of global scope addresses is performed  
by the same methods as with multipoint links, i.e. either SLAAC or  
DHCP6, which are described in the subsequent sections of the draft.

----

Also: section 2.5 about DNS... this section really, really, really  
ought to at least think about mentioning DNS-SD (for which the  
relevant Internet Drafts-- for reasons that continue to plague the  
twilight of my waking dreams-- are categorized as Informational, and  
not Standards Track).

If you've never heard of DNS-SD before, then please look at...

	<http://www.dns-sd.org/>

...and follow the links from there.  The executive summary is that not  
only can we dynamically update the DNS with host address records, we  
can even do it with *service* instances too, which are pointers to  
service records that reference host records.  It works pretty well.   
Really.  I renumber some of my networks *dozens* *of* *times* *per*  
*DAY*.  Some of these are *virtual* networks.  It's not even remotely  
painful until I start trying to do it a few dozen times per *hour*.   
That's pretty good!

Yes, DNS-SD and DNSSEC are quite compatible.  Really.  Come join us in  
the Future™.  It's nice here.  Stuff just works.

-----

The M&O bits.  I'm one of those who thinks that ICMP6 is the protocol  
that ought to be used for control and management of the Internet.  I  
think that DHCP (with DHCP6, it's 2nd-system-effect offspring) is a  
monster that slipped its leash a long time, and we're all poorer for  
it now.  So, it should not be a surprise that I favor resolving the so- 
called "M&O ambiguity" by clarifying the specification to say that  
starting the DHCP6 client is *always* OPTIONAL and that nodes *always*  
MAY self-assign a global scope address after receiving any RA  
containing a PIO with A=1.

I recognize that my preferred approach poses some problems (many of  
which are the subject of ongoing work in the SAVI and V6OPS working  
groups), but I contend that we will all be better off if *those* are  
the problems we choose to make for ourselves and we proceed now to set  
our minds to solving them.  The other problems we invite for ourselves  
resolving the M&O ambiguity by different means are more troubling, I  
say.  We might as well just get rid of SLAAC altogether and require  
DHCP6 everywhere.  I know that would make some people happy, but not  
me.  I rather like zero configuration networking.

-----

On section 4.1.2, Transport Layer Issues... let me just say that SCTP  
is made of the purest elegance and beauty.  We should deprecate TCP  
over IPv6 in favor of SCTP, it's so good.  Oh wait... worse is  
better.  I keep forgetting.

So, if we *can't* migrate to SCTP, and we MUST find a way to live with  
TCP and UDP, then we're just going to have to lump it when renumbering  
causes failurage on TCP/UDP flows.  But that shouldn't be so bad,  
really.  You want SCTP-style multihoming with your TCP transports?   
Then you can implement it in your session^H^H^H^H^H^H^H application  
layer.  (If I wanted to be especially curmudgeonly, I'd suggest a BEEP  
tuning profile for the TCP transport mapping, but I'll go easy on that  
for now.)

-----

On section 4.1.4, Application Layer Issues... the following quote is  
the understatement literally of the decade:
> The sensitivity depends on whether the implementation stores IP  
> addresses in such a way that it may refer back to them later,  
> without allowing for the fact that they may no longer be valid.
                             
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This, in my view, is the main reason why IPv6 renumbering should be  
regarded as "still needs some work" instead of "why are we worrying  
about this?"  But the work in question isn't IETF work, I contend.   
It's just mundane code-wrangling work.

I've highlighted what I regard as the crucial phrase.  We're talking  
about software bugs.  We're talking about software bugs of a general  
class, i.e. cache coherency failures, that cannot really be mitigated  
by sacrificing fundamental principles of the Internet architecture to  
make the renumbering events that expose them less frequent.  There are  
so many other ways, which have nothing to do with network renumbering  
events, that bugs of this class can make expensive software failures  
happen.  I'd prefer we find ways to build better coders, than we were  
to expend any effort trying to take Internet address renumbering off  
the long list of interesting ways that incoherent caches can break  
software.

My employers have a developer technote on their website that speaks to  
this general class of software problem in networked applications.  The  
tenth anniversary [!] of its original composition came and went a few  
days ago.  The document is here:

	<http://developer.apple.com/technotes/tn/tn1145.html>

Seriously.  Check it out.  Application layer issues with renumbering  
events would not be expensive if the platform-independent lessons of  
that technical note were more widely applied.

I am so *so* tired of making excuses for bad code.  Just once, I'd  
like to be able to say, "I see your coders thought it would be a good  
idea to store IP addresses in a persistent store without any cache  
coherency protocol, and now you can't renumber your network without  
eating the time and expense of qualifying a radical new implementation  
of your hugely business-critical software application.  You know  
what?  That's your own fault.  Not ours.  p.s. I bet you'll read that  
tech-note next time, right?"


--
james woodyatt <jhw@apple.com>
member of technical staff, communications engineering