Re: [Roll] [6lo] RPL artifact compression discussion

Michael Richardson <mcr+ietf@sandelman.ca> Mon, 23 March 2015 20:40 UTC

Return-Path: <mcr@sandelman.ca>
X-Original-To: roll@ietfa.amsl.com
Delivered-To: roll@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 52EA01B2A05; Mon, 23 Mar 2015 13:40:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 iiX-fi0o7R9U; Mon, 23 Mar 2015 13:40:19 -0700 (PDT)
Received: from tuna.sandelman.ca (tuna.sandelman.ca [209.87.249.19]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2F9BB1B29E7; Mon, 23 Mar 2015 13:40:19 -0700 (PDT)
Received: from sandelman.ca (obiwan.sandelman.ca [IPv6:2607:f0b0:f:2::247]) by tuna.sandelman.ca (Postfix) with ESMTP id 59809203BD; Mon, 23 Mar 2015 16:50:06 -0400 (EDT)
Received: by sandelman.ca (Postfix, from userid 179) id 260F663B76; Mon, 23 Mar 2015 16:40:18 -0400 (EDT)
Received: from sandelman.ca (localhost [127.0.0.1]) by sandelman.ca (Postfix) with ESMTP id 14479636A2; Mon, 23 Mar 2015 16:40:18 -0400 (EDT)
From: Michael Richardson <mcr+ietf@sandelman.ca>
To: "6lo@ietf.org" <6lo@ietf.org>
In-Reply-To: <BN1PR03MB0729E0B05811AA6C648B2DD950F0@BN1PR03MB072.namprd03.prod.outlook.com>
References: <BN1PR03MB0729E0B05811AA6C648B2DD950F0@BN1PR03MB072.namprd03.prod.outlook.com>
X-Mailer: MH-E 8.6; nmh 1.3-dev; GNU Emacs 24.4.2
X-Face: $\n1pF)h^`}$H>Hk{L"x@)JS7<%Az}5RyS@k9X%29-lHB$Ti.V>2bi.~ehC0; <'$9xN5Ub# z!G,p`nR&p7Fz@^UXIn156S8.~^@MJ*mMsD7=QFeq%AL4m<nPbLgmtKK-5dC@#:k
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-="; micalg="pgp-sha1"; protocol="application/pgp-signature"
Date: Mon, 23 Mar 2015 16:40:18 -0400
Message-ID: <22866.1427143218@sandelman.ca>
Sender: mcr@sandelman.ca
Archived-At: <http://mailarchive.ietf.org/arch/msg/roll/Yy1tfhdVMa93hcaOJWSNifMVib4>
Cc: roll@ietf.org
Subject: Re: [Roll] [6lo] RPL artifact compression discussion
X-BeenThere: roll@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Routing Over Low power and Lossy networks <roll@ietf.org>
List-Id: Routing Over Low power and Lossy networks <roll.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/roll>, <mailto:roll-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/roll/>
List-Post: <mailto:roll@ietf.org>
List-Help: <mailto:roll-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/roll>, <mailto:roll-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 23 Mar 2015 20:40:21 -0000

There are three important parts of this problem.
1) what headers ("artifacts") are actually required.  This is subject to a
   not-yet created ROLL document that the virtual interim meeting revealed
   was missing.  The summary is we need RPI (RFC6553) on the way up and down,
   in order to find loops, and carry the RPL InstanceID.  The InstanceID is
   an extra input to the routing process, and distinguishes one DAG from
   another.
   We need to have the RH3 on downward traffic in the non-storing case, as
   this header provides the source routes.
   As the RPI and RH3 are inserted, in order to do this an IPIP header is
   required. 

2) there are various proposals as to the method to compress the artifacts
   themselves, and this part is subject to various discussion.

3) the 6lo part is that we need a way to signal that the compression in part
   (2) is actually being used.
   
There are three options on how to introduce new compression mechanisms into
the 6lowPAN/ROLL data plane.

1) draft-thubert-6lo-rpl-nhc
   originally proposal to add a new 6282 Next Header Compression for just 6553.
   from that document:
      (Discuss: Is this really an update of RFC 6282 or a straightforward
       addition to it?)
   the answer is that RFC6282 has an IANA registry, and the allocation policy
   is IETF Review.

   In this document, I would suggest that the Greedy approach probably is
   more a simple allocation (it's an update!), as it uses so much.
   
   The conservative approach is a simple registration, it takes a single
   value from the 11111000 to 11111110 range for the 6554.
   (Note 6lo-rpl-nhc-02 says "Section 4.2 of [RFC6553] defines LOWPAN_NHC
   encodings", but actually it's defined in 6282)

   The efficient approach, I guess, optimizes some common cases at the cost
   of one or more bytes extra for the non-common cases.

   1b) NHC++ as noted below, there is no method defined to compress the IPv6
       inner header, and no method to compress the RH3 (RFC6554) header
       was defined.  The NHC++ proposal suggests to expand this proposal to
       do this.  It can perhaps be done in the greedy approach with
       some thought, but it seems unlikely to fit, and the conservative
       approach would be required.
       
       Note that there aren't enough EIDs to encode each of IPIP, RH3 and
       RPI, but as the IPIP is not seen unless there is also an RH3 and/or
       RPI, the IPIP pieces that would follow could perhaps be implied 

2) draft-thubert-6lo-routingdispatch

   The NHC method above adds additional nexthops, but does not change
   anything about the outer IPv6 header.  It would continue to be compressed
   with 6282's LOWPAN_IPHC, and unfortunately, as there is no Next
   Header=LOWPAN_IPHC,  the second (inner from the wild, likely more random),
   header can not be compressed.
   
   This method instead replaces the LOWPAN_IPHC with a new compression of
   the IPv6 header, plus 6553, plus 6554, plus inner IPv6.
   This occurs at the "dispatch" level, which also is where the 6LowPAN
   fragmentation occurs, which means that in theory with this method, one
   could route 6lo fragments individually, across the LLN rather than having
   to reassemble them hop-by-hop.

   To do this optimally, it takes the 10xxxxx encodings
   which are defined in rfc4944 Figure 2, and re-defines them.
   It does this with the knowledge from above that mesh-under and route-over
   networks will never occur on the same PANID.  Whether or not this is
   acceptable is THE significant question for the 6lo WG.

   Note that this is not entirely necessary: we can instead use the
   011 111111 "ESC" header, which lets us have another byte for dispatch
   headers.


Summary:
   1) NHC++ method using conservative approach costs the 1 or 2 code points
      from the NHC EID space (there are only 2 left).  Using 1 code point
      means adding adjusting the format to switch on next header
      being RPI, RH3 or (compressed) IPIP [LOWPAN_IPHC].  There are three
      reserved bits show in 6low-nhc-02, section 4.3.2.

   2) routingdispatch section is much more flexible, and at the cost of
      the additional byte, there is no conflict with existing users.
      But this is in some sense a forklift upgrade on RFC6282.

-- 
Michael Richardson <mcr+IETF@sandelman.ca>, Sandelman Software Works 
IETF ROLL WG co-chair.    http://datatracker.ietf.org/wg/roll/charter/