Re: [v6ops] Last Call: <draft-ietf-v6ops-ra-guard-implementation-04.txt> (Implementation Advice for IPv6 Router Advertisement Guard (RA-Guard)) to Best Current Practice

RJ Atkinson <rja.lists@gmail.com> Thu, 31 May 2012 17:51 UTC

Return-Path: <rja.lists@gmail.com>
X-Original-To: v6ops@ietfa.amsl.com
Delivered-To: v6ops@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 436AF21F861C for <v6ops@ietfa.amsl.com>; Thu, 31 May 2012 10:51:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.453
X-Spam-Level:
X-Spam-Status: No, score=-3.453 tagged_above=-999 required=5 tests=[AWL=0.134, BAYES_00=-2.599, GUARANTEED_100_PERCENT=0.012, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PF6aqbeztib6 for <v6ops@ietfa.amsl.com>; Thu, 31 May 2012 10:51:18 -0700 (PDT)
Received: from mail-vb0-f44.google.com (mail-vb0-f44.google.com [209.85.212.44]) by ietfa.amsl.com (Postfix) with ESMTP id 8A6C621F861A for <v6ops@ietf.org>; Thu, 31 May 2012 10:51:18 -0700 (PDT)
Received: by vbbez10 with SMTP id ez10so861771vbb.31 for <v6ops@ietf.org>; Thu, 31 May 2012 10:51:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date :content-transfer-encoding:message-id:references:to:x-mailer; bh=uMkEMkEFKeoItA00gqKMK+PL+Y1alH8g7tdBmZE26RA=; b=WykYiKUhXPcVaSvu9TVY+QgTo2fFwASnjr6hKVJnqxYjQHiHyjUVtV9Wjs/VfcHo7b dBpAGndQXSf1SGEn9hJUVHANQLKqEnagVg6TvYKeIFvAjvNCR0KysfsGybVq29aPz6eB zy+/weHJz/mjRea5u2ViuOy5cJotWvBLVjyYQnrh/2LHT8xCrEJjUD29VbK7uRfIqaty 5iQhWVKG8qS5PMI0MXpVMCQU6zMqkCRAWuqleVfZeD8H44/VRgf87xIbqpWu4ROragsS P2HKXB/3XZ4HNhLaIzzkuOcfzfS86VAD3QhR6S9K8R1IIc3iEwlr2vCk5OsSRtF922ck BWOA==
Received: by 10.220.151.80 with SMTP id b16mr3152412vcw.4.1338486678075; Thu, 31 May 2012 10:51:18 -0700 (PDT)
Received: from [10.30.20.11] (pool-96-225-134-175.nrflva.fios.verizon.net. [96.225.134.175]) by mx.google.com with ESMTPS id m14sm5928903vdh.4.2012.05.31.10.51.16 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 31 May 2012 10:51:17 -0700 (PDT)
Content-Type: text/plain; charset="iso-8859-1"
Mime-Version: 1.0 (Apple Message framework v1278)
From: RJ Atkinson <rja.lists@gmail.com>
In-Reply-To: <4FC78DD7.3080901@globis.net>
Date: Thu, 31 May 2012 13:51:17 -0400
Content-Transfer-Encoding: 7bit
Message-Id: <B1D5FADA-E8F8-4D46-902E-8F5EF1E55E2E@gmail.com>
References: <1F73F9FE-9BA5-4506-A5FB-AE09C1C18626@gmail.com> <4FC78DD7.3080901@globis.net>
To: v6ops@ietf.org
X-Mailer: Apple Mail (2.1278)
Subject: Re: [v6ops] Last Call: <draft-ietf-v6ops-ra-guard-implementation-04.txt> (Implementation Advice for IPv6 Router Advertisement Guard (RA-Guard)) to Best Current Practice
X-BeenThere: v6ops@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: v6ops discussion list <v6ops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/v6ops>, <mailto:v6ops-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/v6ops>
List-Post: <mailto:v6ops@ietf.org>
List-Help: <mailto:v6ops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/v6ops>, <mailto:v6ops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 31 May 2012 17:51:19 -0000

On 31  May 2012, at 11:27 , Ray Hunter wrote:
> May I humbly suggest that fragmentation headers are merely one
> (recently discovered) way of bypassing a parser (in RA Guard)
> that relies on positive identification of (RA) messages. 

Unlike some protocols, IPv6 extension headers (fragmentation 
or otherwise) can be parsed even if the particular IPv6 option
is not recognised.    

Further, several deployed IPv6 routers have silicon with the ability 
to parse past an optional IPv6 header (e.g. Dest Opts header) 
at wire-speed, for example in order to be able to read the TCP/UDP 
ports to apply a user-configured per-interface ACL to IPv6 packets.

The difficult property of the Fragmentation Header is unique to
the function of fragmentation; a device can't parse past the 
Fragmentation Header of the 1st packet to discover whether a 
2nd (or Nth) fragment contains an RA, unless the device sees
all fragments and reassembles the packet before parsing.

> IMHO Until the RA message or other control messages themselves
> are 100% guaranteed parse-able by all entities on the network ...

That is true already -- provided only that the RA is not hidden 
behind a Fragment Header.  

By mandating that hosts receiving an RA from a fragmented packet 
drop that packet without processing the RA, the only fully 
comprehensive solution is provided, without dropping any
valid IPv6 packets.  Further, hosts ought to do that check anyway, 
as not all IPv6 deployments will include an RA Guard device,
and a host can't know a priori whether its deployment does or
does not include an RA Guard.

Since hosts are the devices at risk from a rogue RA, host stack 
implementers have incentive to implement and deploy such an IPv6 
specification update quickly -- probably more quickly than RA Guard 
implementations compliant with this draft could be widely implemented 
and widely deployed.

> I suspect, going down this path might require quite a culture change
> in 6man, removing a lot of flexibility for the future in the interests
> of allowing effective on-the-wire filtering today.

IPv6 already went down the path of being much simpler to parse. 
That is a done deal long since.  

Further, the 6MAN WG recently reinforced this with RFC-6564, 
which codifies strict rules about all future potential IPv6 
Extension Headers.  Those rules are specifically designed to
ensure that silicon designed now will be able to parse/parse-past
all future IPv6 Extension headers at wire speed without
modification.

So the culture you seek already exists in 6MAN, and as I recall
even existed in the IPv6 WG in the 1990s.

A previous employer of mine shipped silicon circa 2003 that could
parse through an IPv6 packet -- including parsing past IPv6 Extension
Headers and unrecognised options -- and apply TCP/UDP port based ACLs 
that had IPv6 optional headers before the TCP/UDP header -- all 
at (very fast) wire speed (N Gbps).  The only header that silicon
couldn't do much with was a Fragment Header, because it has the
one unique property of splitting a packet in two (as noted earlier).

ASIDE: That Verilog enhancement was not a lot of gates, did not 
       increase the die size, and did not increase manufacturing cost.  

       As with software, it helps to have good engineers designing 
       one's silicon, but it isn't rocket science, in large part 
       because IPv6 was designed to be readily parseable at speed.

Yours,

Ran Atkinson