Re: [6tisch] 6LoRH: compression of the inner destination

"Pascal Thubert (pthubert)" <> Thu, 04 February 2016 12:12 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 81F7C1B2D4F; Thu, 4 Feb 2016 04:12:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.501
X-Spam-Status: No, score=-14.501 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ividjPcLvMb6; Thu, 4 Feb 2016 04:12:37 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 449091B2D3D; Thu, 4 Feb 2016 04:12:37 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=49598; q=dns/txt; s=iport; t=1454587957; x=1455797557; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=wqF/wAaxGJgp2BSCgc7exCmCKRO62sxwqhBRsdMUm+I=; b=lSB9YB5Ds7acyGE4syAgS84VbpI64LGaYyCvlwCcQOEyFa0m4MUYkIdA eKvoAG6uqtMwAkKxDGoaTBKMYI8M5jZIYB2tkuyZpSBgAqb9iQEuQc7zH OK92AOQfEfgTfRHkGhG6N4L7M8JoFxmR+iEsSKQ6bQk9VAquncSDbUsnQ M=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos; i="5.22,395,1449532800"; d="scan'208,217"; a="72898249"
Received: from ([]) by with ESMTP/TLS/DHE-RSA-AES256-SHA; 04 Feb 2016 12:12:35 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id u14CCalO006794 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Thu, 4 Feb 2016 12:12:36 GMT
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1104.5; Thu, 4 Feb 2016 06:12:35 -0600
Received: from ([]) by ([]) with mapi id 15.00.1104.009; Thu, 4 Feb 2016 06:12:35 -0600
From: "Pascal Thubert (pthubert)" <>
To: Xavier Vilajosana <>, "" <>
Thread-Topic: [6tisch] 6LoRH: compression of the inner destination
Thread-Index: AQHRXnCR+Lpgqlj7MkGnhe4nmHRA1p8aLKsAgAGc1qA=
Date: Thu, 04 Feb 2016 12:12:06 +0000
Deferred-Delivery: Thu, 4 Feb 2016 12:11:41 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: fr-FR, en-US
Content-Language: en-US
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_d830d6043c0846cabad7ef26b9018f4dXCHRCD001ciscocom_"
MIME-Version: 1.0
Archived-At: <>
Cc: "" <>
Subject: Re: [6tisch] 6LoRH: compression of the inner destination
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Discuss link layer model for Deterministic IPv6 over the TSCH mode of IEEE 802.15.4e, and impacts on RPL and 6LoWPAN such as resource allocation" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 04 Feb 2016 12:12:40 -0000

Hello Xavi:

Let me propose the following update to the draft to clarify this:


Inner LOWPAN_IPHC Compression

6LoWPAN ND {{RFC6282}} is designed to support more than one IPv6 address
per node and per Interface Identifier (IID), an IID being typically derived
from a MAC address to optimize the LOWPAN-IPHC compression.

Link local addresses are compressed with stateless address compression (S/DAC=0).
The other addresses are derived from different prefixes and they can be compressed
with stateful address compression based on a context (S/DAC=1).

But stateless compression is only defined for the specific link-local prefix as
opposed to the prefix in an encapsulating header. And with stateful compression,
the compression reference is found in a context, as opposed to an encapsulating

It results that in the case of an IP-in-IP encapsulation, it is possible to
compress an inner source (respectively destination) IP address in a LOWPAN_IPHC
based on the encapsulating IP header only if stateful (context-based) compression
is used. The compression will operate only if the IID in the source (respectively
the destination) IP address in the outer and inner headers match, which usually
means that they refer to the same node . This is encoded as S/DAC = 1 and S/AM=11.
It must be noted that the outer destination address that is used to compress the
inner destination address is the last entry in the last RH3-6LoRH header.


Is that any clearer now?

Take care,


From: 6lo [] On Behalf Of Pascal Thubert (pthubert)
Sent: jeudi 4 février 2016 11:10
To: Xavier Vilajosana <>;
Subject: Re: [6lo] [6tisch] 6LoRH: compression of the inner destination

Hello Xavi:

Yes, this deserves more clarification, thanks for pointing it out.

Your question applies so source and destination, and is really whether we can compress the address in the IPHC based on what is found in a 6LoRH header.

The short answer

a)      you cannot do that statelessly (damn sad, need to fix), and

b)      you can do a little something statefully if
1) you have a *context* and
2) the source (and / or destination) in the inner IP header and that in the outer header refer to *the same node*,  in which case the source (and / or destination) in the inner header can be fully compressed.

I can add text if that helps.

The long answer:

RFC6282 is geared to support more than one IPv6 addresses, one that is link local (S/DAD=0) for use within radio range, and then several ones derived from different prefixes using context information (S/DAC=1). All these address are expected to have with a same IID, derived from the MAC address (twice that if you have a short and a long MAC address). This compression allows for a node to be the destination of an outer IP encapsulation with one prefix, and the destination of an inner  IP header with another prefix, both addresses based on the same IID. This can make sense for a LLN border router, for instance.

Sadly RFC6282 does not allow stateless compression based the encapsulating IP header. IOW, stateless only works with the link-local prefix as opposed to the prefix in the encapsulating header. Since encapsulating a link-local address is useless, we could have specified stateless a bit differently, e.g. that the implicit prefix is the FE80:: if and only if IPHC is used for an outermost IP header, and that it is the prefix from the encapsulation otherwise. But that is another discussion, since it involves an update of RFC6282 which would have to be a separate document. If we want to pursue that other discussion we’ll have to follow up as a different thread / draft at 6lo. Let me know if you think there is interest there (I do).

So: with the current specs, you can compress an inner (source/destination) IP address in the LOWPAN_IPHC *based on the encapsulating IP header* in a 6LoRH-encoded header if and only if the address is:

-        an exact match with a context entry for the prefix length associated with that context,

-        and then the remainder from the corresponding (source/destination) IP address in the encapsulating header matches that of the encapsulated header, which in 6LoWPAN networks can be interpreted as “same node” though in the IPv6 theory it does not have to be.

So for now the only thing you can do is have a context. One context would be for the root.

An example: If all the addresses in the LLN derive from the prefix of the root with a /112 and the short MAC address. If there is a context where that prefix/length is encoded, and that is signaled implicitly or explicitly in the LOWPAN_IPHC.  If there is an IP-in-IP encapsulation encoded with IP-in-IP-6LoRH, and the final destination in the IPHC is the same as the last entry in the last RH3-6LoRH, then the destination address in the IPHC can be fully elided by using DAC=1 and DAM=11. The packet will reach the destination in the encapsulated form, and then the packet will be decapsulated before going up the stack.

I hope this helps : )


PS This discussion leverages RFC 6282 says this:

SAM: Source Address Mode:

If SAC=1:


         11:  0 bits.  The address is fully elided and is derived using

            context information and the encapsulating header (e.g.,

            802.15.4 or IPv6 source address).  Bits covered by context

            information are always used.  Any IID bits not covered by

            context information are computed from the encapsulating

            header as specified in Section 3.2.2<>.  Any remaining bits

            are zero.


DAM: Destination Address Mode:


If M=0 and DAC=1:

         11:  0 bits.  The address is fully elided and is derived using

            context information and the encapsulating header (e.g.

            802.15.4 or IPv6 destination address).  Bits covered by

            context information are always used.  Any IID bits not

            covered by context information are computed from the

            encapsulating header as specified in Section 3.2.2<>.  Any

            remaining bits are zero.



From: 6tisch [] On Behalf Of Xavier Vilajosana
Sent: mercredi 3 février 2016 11:49
To: Pascal Thubert (pthubert) <<>>;<>
Subject: [6tisch] 6LoRH: compression of the inner destination

Dear Pascal,

There is something it is not clear to me.
How do we compress the inner header destination address assuming we have 6LoRH RH3.

could you please clarify that?