Re: [6tisch] Proposed improvement in RH3-6LoRH

"Pascal Thubert (pthubert)" <> Tue, 19 January 2016 19:17 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 5ECF41B34AA; Tue, 19 Jan 2016 11:17:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.5
X-Spam-Status: No, score=-14.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, 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 YwrguRxKVdmt; Tue, 19 Jan 2016 11:17: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 808481B34A5; Tue, 19 Jan 2016 11:17:36 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=212945; q=dns/txt; s=iport; t=1453231056; x=1454440656; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=s5lgWce4iOKYxGnNYtEiH0M6Il/ghflHQxPmBacgv1Y=; b=Y1JiGWaqjGMJ5uWO/g5xfOgCg34rQflcd7LH7Vy+nGbDBkftOvV42CKH D/kvprYpeWMhXblQjoTg4IAEkhNQU3kIUaiTXRUFZnAn1USqQXQnB7q5s B8AnmSmsJS9UP+xS+sM4qwMFaM76Mj9c4pPAtVHDlkYC1hTGNavOpvAXP E=;
X-Files: image001.png : 123762
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos;i="5.22,318,1449532800"; d="png'150?scan'150,208,217,150";a="227757035"
Received: from ([]) by with ESMTP/TLS/DHE-RSA-AES256-SHA; 19 Jan 2016 19:17:35 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id u0JJHYfD023382 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Tue, 19 Jan 2016 19:17:35 GMT
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1104.5; Tue, 19 Jan 2016 13:17:34 -0600
Received: from ([]) by ([]) with mapi id 15.00.1104.009; Tue, 19 Jan 2016 13:17:34 -0600
From: "Pascal Thubert (pthubert)" <>
To: Tengfei Chang <>
Thread-Topic: [6tisch] Proposed improvement in RH3-6LoRH
Thread-Index: AdFSGKgSUfjCV02CR1+kaxeIZh+TPAArPBeAAAuVU6D//+9CAP//+/4Q
Date: Tue, 19 Jan 2016 19:17:31 +0000
Deferred-Delivery: Tue, 19 Jan 2016 19:17:15 +0000
Message-ID: <>
References: <> <> <> <>
In-Reply-To: <>
Accept-Language: fr-FR, en-US
Content-Language: en-US
X-MS-Has-Attach: yes
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: []
Content-Type: multipart/related; boundary="_004_92a35a2884af4b9082970f4c1740f3bdXCHRCD001ciscocom_"; type="multipart/alternative"
MIME-Version: 1.0
Archived-At: <>
Cc: "" <>, Routing Over Low power and Lossy networks <>, "" <>
Subject: Re: [6tisch] Proposed improvement in RH3-6LoRH
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: Tue, 19 Jan 2016 19:17:40 -0000


I’ll add some text about that.

The other thing that is missing is the text that describe the operation that I drew, which is implicit at best in the current draft.

What about:
Upon reception, the router checks whether the address in the first entry of the
first RH3-6LoRH one of its own addresses. In that case, router MUST consume that
entry before forwarding, which is an action of popping from a stack, where the
stack is effectively the sequence of entries in consecutive RH3-6LoRH headers.

Popping an entry of an RH3-6LoRH header is a recursive action performed as
> If the Size of the RH3-6LoRH header is 1 or more, indicating that there
  are at least 2 entries in the header, the router removes the first entry and
  decrements the Size (by 1).

> Else (meaning that this is the last entry in the RH3-6LoRH header),
  if there is no next RH3-6LoRH header after this then the RH3-6LoRH is removed.

> Else, if there is a next RH3-6LoRH of a Type with a larger or equal value,
  meaning a same or lesser compression yielding same or larger compressed forms,
  then the RH3-6LoRH is removed.

> Else, the first entry of the next RH3-6LoRH is popped from the next RH3-6LoRH
  and coalesced with the first entry of this RH3-6LoRH.

At the end of the process, if there is no more RH3-6LoRH in the packet, then
the processing node is the last router along the source route path.



From: Tengfei Chang []
Sent: mardi 19 janvier 2016 14:00
To: Pascal Thubert (pthubert) <>
Cc:;; Routing Over Low power and Lossy networks <>
Subject: Re: [6tisch] Proposed improvement in RH3-6LoRH

Hello Pascal,

Thanks a lot for the detailed answer! I think it solves all my concern. I will vote for it!


On Tue, Jan 19, 2016 at 11:00 AM, Pascal Thubert (pthubert) <<>> wrote:
Hello Tengfei:

Basically the change proposal accounts for the assumption that the last segment may be different, which comes with the idea of supporting non RPL leaves. If you look at it the original RH4 (RFC 6554) makes a difference for the last hop.

Also, the root is the one computing the 6LoRH so it is easier for it to take its own address as reference.

Finally the text is unclear about which bits from the destination are to be used.

All in all, using the root as reference makes more sense than using the final destination as I had initially proposed. So the new proposal is not a merge but an instead, with clarifying text about the process I showed in the picture.

More answers  inline:
Dear all

The picture below illustrates how the RH3 6LoRH works with draft 03 in a case like Root -> A -> B -> C -> leaf


The first 6LoRH is expected to be a full address (128 bits) to set up a reference and the next 6LoRH are expected to be smaller and just override the rightmost bits which form the delta from the reference.

What if the B and C address can be compressed to one byte(RH3-6LoRH type 0)?
When leaving the root the format would like:
RH3-6LoRH type 4    IPv6 Prefix (64bits)   A's suffix (64bits)    RH3-6LoRH type 0      B's suffix (8bits)    C's suffix (8bits)

>  Pascal If A’s address is the same as B and C for the first 120 bits then this format is correct : )> Pascal

should node A need to extend the address of B address when the packet leaving A? Like:
RH3-6LoRH type 4    IPv6 Prefix (64bits)   B's suffix (64bits)    RH3-6LoRH type 0      C's suffix (8bits)

>  Pascal: That is correct. Note that there is no separation between prefix in suffix in the type 4. So the drawing applies for all types if you consider that the prefix length is 64, 96, 112 or 120 depending on the type of the next RH. With the proposal, if the root has the same /120 prefix as A, B and C then we have a single type 0 with A, B and C in it.
Proposal: we could consider that the 128bits source of the IP header before the RH3 is the reference to start with.
I have no comments with the proposal. Just want to mention in the currently version of draft (version 3) , it says : (in section 5)

   If some bits of the first address in the RH3-6LoRH header can be

   derived from the final destination in the LoWPAN_IPHC, then that

   address may be compressed; otherwise it is expressed as a full IPv6

   address of 128 bits.  Next addresses only need to express the delta

   from the previous address.
How to understand this combining with the proposal? (Or this is the point we are going to replace by the proposal? Let me know)

>  Pascal: proposal is to replace. That text was unclear and more complex to implement.  And fails to optimize for leaves that are not configured like the mesh.
With that even the first hop could be compressed the same way as the other hops. With RPL, the root is the encapsulator if IP in IP in used. Good thing, in that case the root is totally elided with the IP-in-IP 6LoRH.
That's great! Could I confirm when the packet is inside a RPL domain where IP in IP is elided, the source destination in IPHC is the reference?

>  Pascal: Yes. The only case where IP in IP is elided is when the source is the root. The root would still be the reference. The text I proposed says the Source of the header that is placed before the RH3, and I meant in the non-compressed form. With RPL as it stands today this is always the root.
So this simple proposal saves up to 16 octets (that’s in the case with a single subnet and all addresses differ only by the last 2 bytes). I’m willing to add it in the next revision.
I don't know how to calculate the saved bytes. For this case, will the format looks like this?
RH3-6LoRH type 1    A's suffix (16bits)     B's suffix (16bits)   C's suffix (16bits)

>  Pascal: Yes. In that case you save 14 bytes in A’s address plus the RH3-6LoRH type 4 which is 2 additional bytes, 16 total.
Any opposition?


Thanks for the proposal!

>  Pascal: Do you vote for it? I’m asking because the plugtest is coming.

6tisch mailing list<>