Re: [v6ops] new draft: draft-taylor-v6ops-fragdrop

Warren Kumari <warren@kumari.net> Wed, 17 October 2012 14:03 UTC

Return-Path: <warren@kumari.net>
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 8E0E621F8794 for <v6ops@ietfa.amsl.com>; Wed, 17 Oct 2012 07:03:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.849
X-Spam-Level:
X-Spam-Status: No, score=-101.849 tagged_above=-999 required=5 tests=[AWL=-0.450, BAYES_00=-2.599, J_CHICKENPOX_13=0.6, J_CHICKENPOX_33=0.6, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m3hMeVYXAXl4 for <v6ops@ietfa.amsl.com>; Wed, 17 Oct 2012 07:03:18 -0700 (PDT)
Received: from vimes.kumari.net (smtp1.kumari.net [204.194.22.1]) by ietfa.amsl.com (Postfix) with ESMTP id D0CBA21F8751 for <v6ops@ietf.org>; Wed, 17 Oct 2012 07:03:17 -0700 (PDT)
Received: from [10.196.219.128] (1-195.icannmeeting.org [199.91.195.1]) by vimes.kumari.net (Postfix) with ESMTPSA id A27981B40122; Wed, 17 Oct 2012 10:03:16 -0400 (EDT)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\))
From: Warren Kumari <warren@kumari.net>
In-Reply-To: <E1829B60731D1740BB7A0626B4FAF0A65E0DEDF5AB@XCH-NW-01V.nw.nos.boeing.com>
Date: Wed, 17 Oct 2012 10:03:15 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <BB219517-B488-4777-AE9C-35C57BE91263@kumari.net>
References: <201210161245.q9GCj0i26478@ftpeng-update.cisco.com> <E1829B60731D1740BB7A0626B4FAF0A65E0DEDF3A2@XCH-NW-01V.nw.nos.boeing.com> <507DA6A3.20807@inex.ie> <E1829B60731D1740BB7A0626B4FAF0A65E0DEDF3C3@XCH-NW-01V.nw.nos.boeing.com> <507DAB13.2010704@inex.ie> <E1829B60731D1740BB7A0626B4FAF0A65E0DEDF3CE@XCH-NW-01V.nw.nos.boeing.com> <507DDF8A.9010607@inex.ie> <E1829B60731D1740BB7A0626B4FAF0A65E0DEDF5AB@XCH-NW-01V.nw.nos.boeing.com>
To: "Templin, Fred L" <Fred.L.Templin@boeing.com>
X-Mailer: Apple Mail (2.1499)
Cc: "v6ops@ietf.org" <v6ops@ietf.org>, "draft-taylor-v6ops-fragdrop@tools.ietf.org" <draft-taylor-v6ops-fragdrop@tools.ietf.org>
Subject: Re: [v6ops] new draft: draft-taylor-v6ops-fragdrop
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: Wed, 17 Oct 2012 14:03:18 -0000

On Oct 16, 2012, at 7:19 PM, "Templin, Fred L" <Fred.L.Templin@boeing.com> wrote:

>> -----Original Message-----
>> From: Nick Hilliard [mailto:nick@inex.ie]
>> Sent: Tuesday, October 16, 2012 3:28 PM
>> To: Templin, Fred L
>> Cc: v6ops@ietf.org; draft-taylor-v6ops-fragdrop@tools.ietf.org
>> Subject: Re: [v6ops] new draft: draft-taylor-v6ops-fragdrop
>> 
>>>>> Why not just let non-initial fragments through and then forward
>>>>> or don't forward the initial fragment depending on whether it
>>>>> contains enough information in tlv headers to permit a filtering
>>>>> decision?
>>>> 
>>>> i spot some DoSs there.
>>> 
>>> DoS'ing whom - the end systems? End systems know when to flush
>>> incomplete reassemblies.
>> 
>> The intermediate systems.  Well, maybe the end systems too, but that's a
>> different issue.
>> 
>> The problem with the intermediate systems is how you handle the packets.
>> Most fast/dumb boxes are able to process fixed-shape packets in hardware
>> because ASICs are pretty good at that sort of thing.  If you need to
>> process TLVs at line rate and make forwarding decisions on that basis,
>> then
>> you need much smarter hardware.  So the issue comes down to what happens
>> when you have a fast/dumb box forwarding ipv6 packets with interesting
>> headers, and the dumb box is expected to do some level of filtering.
> 
> Filtering near the edges is where we have stateful filters that
> are good at managing state. "Stateless" filtering near the middle
> has no choice but to pass the fragments always.
> 
>> For fragments, if your dedicated hardware doesn't handle them natively,
>> then you have a choice between:
>> 
>> - allowing them through always
>> - dropping them always
>> - dropping them after a certain rate limit
>> - punting them to a more intelligent part of the forwarding device
>> 
>> For punted packets, most vendors punt them to the management plane because
>> they don't have a dedicated path for handling packets which are difficult
>> to parse.  This creates a management plane DoS which can be mitigated by
>> rate limiting the punting process.  So you end up with either a management
>> plane DoS, or an initial fragment DoS, or both.
>> 
>> Now, you could argue that dumb fast boxes shouldn't attempt ipv6 acls in
>> the first place, but what do you do if you want to implement v6 iACLs to
>> protect your internal infrastructure from external attacks?  Do you allow
>> all fragments through and potentially compromise your network?  Or do you
>> drop all fragments because your routing iron only has the capability to
>> either accept all fragments or drop them all?
>> 
>>> For middleboxes that sit in front of
>>> "low-end" end systems, there is also still the option of
>>> Virtual Fragmentation Reassembly.
>> 
>> urgh, state.  As a general principal, the less state you have to deal with
>> in your intermediate systems, the better.
> 
> IPv6 nodes are required to reassemble at least 1500 bytes in
> any event. That is for packets explicitly addressed to the node,
> but also consider (temporary) fragment matching for packets
> passing through the node, e.g. as done by VRF. Plus, when the
> router gets a fragment, chances are very good that its brethren
> are hot on its heels and will arrive or not very quickly. So,
> its not a case of holding onto gobs of fragments indefinitely
> and can be managed by reasonably good hardware.
> At least, I
> have been informed by individuals working for major network
> equipment vendors that their implementations can handle router
> reassembly.

"can handle router reassembly" != "can handle router reassembly at line rate on multiple interfaces".

You really need this to be line rate on all interfaces, otherwise there is (obviously) a DoS vector here. Reassembly at 10G (or 100G) is distinctly non-trivial and requires A: large buffers, B: short timeouts, C: gets sad if not all bits go through the same device, D: state and E: hardware designed specifically for this. This is much more than packet comes in, packet goes out...

W
> 
>>> Plus, if we can't rely on ICMP PTB and we can't rely on IPv6
>>> fragmentation/reassembly, then all we are left with is 1280
>>> and IPv6 is the new ATM...
>> 
>> We had problems with this for years in the ipv4 world.  IPv6 has made it
>> much worse by implementing a difficult-to-parse IP Options style header
>> mechanism and expecting that this is an integral part of the protocol.  We
>> fixed it in IPv4 by universally dropping packets with options and by
>> creating an expectation that this was acceptable.
> 
> IPv6 fixes fragmentation and reassembly, whereas filtering routers
> dropping fragments breaks it. IPv6 fragmentation is a necessary
> part of the equation needed to support path MTU diversity. RFC4821
> is another part, but there is no way for the network to know when
> end systems are using it.  
> 
>> IOW, there are large parts of the internet for which there is no good
>> solution to this problem.  I.e. any part which doesn't forward packets
>> using a highly intelligent packet processing core.
> 
> Dropping fragments violates the end-to end principles, and negates
> path MTU diversity. 1280 is too small of a size for us to lock into
> "the matrix" once and for always.
> 
> Thanks - Fred
> fred.l.templin@boeing.com
> 
>> Nick
> 
> _______________________________________________
> v6ops mailing list
> v6ops@ietf.org
> https://www.ietf.org/mailman/listinfo/v6ops
> 

-- 
A. No
Q. Is it sensible to top-post?