Re: Mirja Kühlewind's Discuss on draft-ietf-6man-rfc2460bis-09: (with DISCUSS and COMMENT)

otroan@employees.org Thu, 13 April 2017 09:40 UTC

Return-Path: <otroan@employees.org>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 50F4412FC17; Thu, 13 Apr 2017 02:40:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=employees.org; domainkeys=pass (1024-bit key) header.from=otroan@employees.org header.d=employees.org
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wb7LfIM1rKPI; Thu, 13 Apr 2017 02:40:56 -0700 (PDT)
Received: from esa01.kjsl.com (esa01.kjsl.com [IPv6:2607:7c80:54:3::87]) by ietfa.amsl.com (Postfix) with ESMTP id 696851300BC; Thu, 13 Apr 2017 02:40:56 -0700 (PDT)
Received: from cowbell.employees.org ([198.137.202.74]) by esa01.kjsl.com with ESMTP; 13 Apr 2017 09:40:56 +0000
Received: from cowbell.employees.org (localhost [127.0.0.1]) by cowbell.employees.org (Postfix) with ESMTP id F04D8D788E; Thu, 13 Apr 2017 02:40:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=employees.org; h=from :message-id:content-type:mime-version:subject:date:in-reply-to :cc:to:references; s=selector1; bh=D4bgej+Gd2rm66lRxo6Nzm/QZiY=; b= KmESvukQtOcCs8JcAGFPEHRKLVdG1zPNH+sJWXhMFEzPlAbhzUWWWbiYCjzRImoe HAXiq9rkr22xT46WyWi/AVk9tqNTYNi5H9pWI8SvG3cT/meBtTlqr3C5HHfQsdvf OhHyQaNqnw+dO3eatrSJfhwYEjuvhnQiInE9efSWKnw=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=employees.org; h=from :message-id:content-type:mime-version:subject:date:in-reply-to :cc:to:references; q=dns; s=selector1; b=S/51G2XoilgVoQHtvClfKMr aTz2lBAgeMMXTXKbuU0a/AZgvhBetGmfB/NmkfbEokfmCCtzYRNiO1DVHS+UvWNe ECA9em72KTZ30klujU750m7ULTKFlHDEVLHX764l71veDFfN1RWr1AD/++W28/zp oQTSoDEJSHDDszPDZzZQ=
Received: from h.hanazo.no (77.16.76.254.tmi.telenormobil.no [77.16.76.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: otroan) by cowbell.employees.org (Postfix) with ESMTPSA id 7C2EDD788D; Thu, 13 Apr 2017 02:40:55 -0700 (PDT)
Received: from [IPv6:::1] (localhost [IPv6:::1]) by h.hanazo.no (Postfix) with ESMTP id 93319A9A6968; Thu, 13 Apr 2017 11:40:51 +0200 (CEST)
From: otroan@employees.org
Message-Id: <05482791-E24E-4C4F-AE39-D111C005AB0B@employees.org>
Content-Type: multipart/signed; boundary="Apple-Mail=_D5086B14-A8C8-47EE-B87B-300E3ADCC8C7"; protocol="application/pgp-signature"; micalg="pgp-sha512"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Subject: Re: Mirja Kühlewind's Discuss on draft-ietf-6man-rfc2460bis-09: (with DISCUSS and COMMENT)
Date: Thu, 13 Apr 2017 11:40:50 +0200
In-Reply-To: <3C06A5F9-19B9-48E1-BB67-57D540E5E38D@kuehlewind.net>
Cc: draft-ietf-6man-rfc2460bis@ietf.org, 6man WG <ipv6@ietf.org>, The IESG <iesg@ietf.org>, 6man-chairs@ietf.org
To: "Mirja Kuehlewind (IETF)" <ietf@kuehlewind.net>
References: <149201127005.15808.3277140025315157500.idtracker@ietfa.amsl.com> <248F8BA5-48D6-4933-B45F-7F1B20477C2C@employees.org> <3C06A5F9-19B9-48E1-BB67-57D540E5E38D@kuehlewind.net>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/kvcVjIm21w_4km2gUtb_M1lGLc4>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 13 Apr 2017 09:40:58 -0000

Hi Mirja,

>> The Hop-by-Hop header (HBH) is a container option. It has the protocol value 0, and has to be first in the header chain, so to make it efficient for routers to check for it's presence.
> 
> Sorry, I meant hop-by-hop option in this case.

Ack, and you can define new hop by hop options, as long as you are aware that with the new behaviour only nodes configured to process them will. And it is in general though to make expectations of these options being processed across administrative boundaries.

>> RFC2460 has:
>> The Hop-by-Hop Options header is used to carry optional information
>>  that must be examined by every node along a packet's delivery path.
>> 
>> The problem with this was that implementations ended up punting packets with the HBH to software, essentially opening up for a DOS attack, which again led operators to filtering out packets with the HBH == 0.
>> (While at the same time there were no HBH options with cross Internet significance).
>> 
>> How the HBH option could be saved has been discussed for quite some time in the 6MAN working group.
>> Including a draft: https://tools.ietf.org/html/draft-ietf-6man-hbh-header-handling-03
>> Which conclusion got included into 2460bis.
>> 
>> The working group thought it premature to deprecate the HBH option header.
>> As a way to "rescue" the HBH option we have made one significant change:
>> 
>> NOTE: While [RFC2460] required that all nodes must examine and
>> process the Hop-by-Hop Options header, it is now expected that nodes
>> along a packet's delivery path only examine and process the Hop-by-
>> Hop Options header if explicitly configured to do so.
>> 
>> Which means by default routers unless they have been configured to process a particular option contained in an HBH option, shall forward the packet as normal. Thereby rectifying the attack vector.
> 
> I’ve see this change and it’s a step in the right direction but it doesn’t solve the problem given there are already deployment that still put packets with an hop-by-hop header on the slow path which still renders the hop-by-hop header as currently defined unusable.

It has a somewhat higher drop probability but it is not unusable. When implementations are updated with the new behaviour then the hope is that it will become more usable.

>> What we lose by this approach is that one cannot use mandatory options anymore. I.e. options that MUST be processed by every router along the packet's path. RFC2675 for example is a mechanism depending on that. In our view this is not a problem, since routers with links with MTU larger than 64K would have to be configured and would be within a controlled domain anyhow.
> 
> Yes, I also don’t see that as a problem. It’s anyway always hard to ensure that something is process by every hop. Not sure that would have been achievable in reality every.
> 

Exactly.

>>> This related to this comment from Martin's review, also proposing a
>>> potential way forward:
>>> "- Section 4.8. "Defining New Extension Headers and Options":
>>> It says new hop-by-hop headers must never ever defined. This is
>>> problematic, as this closing the door forever, even if future instances
>>> of the IETF do would like to wish to define new hop-by-hop headers. A
>>> better way would have to say "that new hop-by-hop headers must have IETF
>>> consensus".
>> 
>> Yes, the door for a new HBH option header container is closed.
>> Given that this is the signal that every router has to check.
>> Given that this is a container option one can put whatever one likes into the existing HBH options header, so it would be hard to see the use case for a new one.
>> 
>>> - Section 4.8. "Defining New Extension Headers and Options":
>>> Also the „not recommended“ to define new extension headers looks strange,
>>> especially with the phrase "There has to be a very clear justification".
>>> The term "clear justification" is not an exact engineering specification.
>>> Why not using "technical protocol specification and real word use case
>>> required, plus IETF consensus"?"
>> 
>>  Defining new IPv6 extension headers is not recommended.  There has to
>>  be a very clear justification why any new extension header is needed
>>  before it is standardized.
>> 
>> The text does state "standardized" though.
>> 
>> Just to remind you that the Destination options header, the HBH options header and the Routing header are all container options, which allows for arbitrary number of TLVs inside. Since extension headers share the numbering space with upper layer protocols, defining new ones would require all implementations parsing header chains (e.g. to do packet filtering on transport headers) would have to be updated. This is the reason for the strict restriction on adding new ones.
> 
> See my response to Mike’s reply to Martin’s review: I think what you better should say is that it is recommended to use a destination option, if suitable, rather than a new header. I don’t think you need to anything else than this about new headers.

A destination option would be the wrong thing to use. That violates the premise for how this option is used.
If you only want a certain set of nodes along a path to process the header, that is the behaviour you will now get with HBH.
An alternative is to use source routing with the routing header combined with a destination options header.

Just using the destination header for this is inefficient and is really a "give up" choice, where you end up requiring all routers to go and hunt for "interesting" options.

>>> 
>>> As a side note, there is at least one experimental RFC that defines a
>>> destination option to be inspected by a network device, given the know
>>> problems of hop-by-hop option which renders them unusable.
>> 
>> Right, that's a much more costly way of doing it, given that routers would now have to go and hunt for the particular sub option. This also violates RFC2460. And this would obviously neither achieve hop by hop behaviour.
> 
> It’s very costly but unfortunately currently the only way to achieve that at all. Given that this experimental option is intended to be inspected by only a few nodes on the path (not all) and usually these nodes are close the edge, it’s probably still doable.

HBH or RH also lets you do that. Note that destination options also has a higher drop probability than packets with extension headers.

>>> ----------------------------------------------------------------------
>>> COMMENT:
>>> ----------------------------------------------------------------------
>>> 
>>> One question because I'm not sure if I interpret this correct to make it
>>> part of my discuss:
>>> Section 4.5: "The number and content of the headers preceding the
>>> Fragment
>>>    header of different fragments of the same original packet may
>>>    differ.  Whatever headers are present, preceding the Fragment
>>>    header in each fragment packet, are processed when the packets
>>>    arrive, prior to queueing the fragments for reassembly.  Only
>>>    those headers in the Offset zero fragment packet are retained in
>>>    the reassembled packet."
>>> Does this mean the ECN codepoint (part of the Traffic Class field) is
>>> copied from the first fragment? This doesn't seem to be correct, however,
>>> also not sure what the correct answer is. I know this was not changed in
>>> this revision but maybe we can still get this right.
>> 
>> When fragments are created most of the fields are copied from the IPv6 headers (e.g., Source Address, Destination address, flow label, traffic class, hop limit).  Some like payload length, next header, and hop limit are modified.
>> 
>> If I understand your question, the answer is yes, the ECN code point is copied from the first fragment, but should be the same from all of the fragments.
> 
> My concern is that the ECN code point could be changed on one of the fragmented packets to signal congestion of a intermediate node and then when you reassemble this information gets lost. That seems wrong.

I do see your point. Is this behaviour described somewhere else?

Best regards,
Ole