Re: [sfc] TTL field within the NSH base header

Greg Mirsky <gregimirsky@gmail.com> Mon, 01 May 2017 17:04 UTC

Return-Path: <gregimirsky@gmail.com>
X-Original-To: sfc@ietfa.amsl.com
Delivered-To: sfc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5B98012954C for <sfc@ietfa.amsl.com>; Mon, 1 May 2017 10:04:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.698
X-Spam-Level:
X-Spam-Status: No, score=-2.698 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 YCeGJXEg-7OW for <sfc@ietfa.amsl.com>; Mon, 1 May 2017 10:04:55 -0700 (PDT)
Received: from mail-io0-x234.google.com (mail-io0-x234.google.com [IPv6:2607:f8b0:4001:c06::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E086D129477 for <sfc@ietf.org>; Mon, 1 May 2017 10:02:04 -0700 (PDT)
Received: by mail-io0-x234.google.com with SMTP id a103so122750638ioj.1 for <sfc@ietf.org>; Mon, 01 May 2017 10:02:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=M1yzCKd70Akvodle6SkyyDYNJ/sIME7IVTf3Cvx9mrE=; b=WdrD+VEUinF9hZGCZqj5W4Llie2/c1RCPUA54UWFe94o0lId/Get1LHF678yTvO3lB 63HAt5H4r9TAzdqEkAJyDVoLmeDate5l7rD8rvtuM//M54fYECLk3eFR3GlSPsGrNS0B KLlbbP3zLCXs7Ne4w0UBnhY3Uk0NvMxRcLIR877+er6BssloiHUHOCJuwjA1C5pWM7vE dFOfhT84lYzO5JChMbEshzDNVCf0vC2A4h2tc51MiAzqZp9BX1apmeklOGphX8R7TEfg hJOiRWpvqqcsAfNRYJr7ku4kru6l3LJQ9oW6V11CAhKJajM87ZBXlFIygz4qKHqVYN6A c1rA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=M1yzCKd70Akvodle6SkyyDYNJ/sIME7IVTf3Cvx9mrE=; b=a+Qhvi27m2QVYWdYHSX2IP2wO1lRAnxXgWwAzfP+qjCPLuPhOvUup636KwmbWyiPik 55iZUJABq25Nz9F3j7IxrLgvHcnk8WGXuhEspL+hwg3rs7W4Oi3U9AnHWAbl6pMP0RUT x31PfpRP0DNkPd/paQG9hpAC0alHGQKPOLZgZnlIxldWCDM6LDzSEMhgD6ubSauS87Uc AAS2W2k6zy25Qrye5CCc4hk59EhKphOwqe47/1u7Ih8UslkfaQWYQZasONxO3uLbjQ8W T1Ygjm4T6pQnmppzWvnUihv1Ue4sjDxZGSIF6WyZphRh5dvarfRHpJi51LNQBacr6Mbw ZsJw==
X-Gm-Message-State: AN3rC/4WrhpWk6MujUoUlJzClFr7Gcezhq/SES8iM95TRw7suNGCXxYl 8/WKixACjtV9Mgh/cz0fECPZ581Qvw==
X-Received: by 10.157.19.60 with SMTP id f57mr10066059ote.163.1493658122708; Mon, 01 May 2017 10:02:02 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.157.52.118 with HTTP; Mon, 1 May 2017 10:02:01 -0700 (PDT)
Received: by 10.157.52.118 with HTTP; Mon, 1 May 2017 10:02:01 -0700 (PDT)
In-Reply-To: <CA+RyBmWXWRxuKP-dDirYHXxJnnduyriTuN5kmCfQkC=z0JdiCQ@mail.gmail.com>
References: <BF1BE6D99B52F84AB9B48B7CF6F17DA3DD5F8E@SJCEML701-CHM.china.huawei.com> <787AE7BB302AE849A7480A190F8B933009E5E3B9@OPEXCNORMAD.corporate.adroot.infra.ftgroup> <E8355113905631478EFF04F5AA706E98705BD0A0@wtl-exchp-1.sandvine.com> <787AE7BB302AE849A7480A190F8B933009E5E4BD@OPEXCNORMAD.corporate.adroot.infra.ftgroup> <BF1BE6D99B52F84AB9B48B7CF6F17DA3DD6993@SJCEML701-CHM.china.huawei.com> <CDF2F015F4429F458815ED2A6C2B6B0B8399F104@MBX021-W3-CA-2.exch021.domain.local> <BF1BE6D99B52F84AB9B48B7CF6F17DA3DD69C4@SJCEML701-CHM.china.huawei.com> <CDF2F015F4429F458815ED2A6C2B6B0B8399F193@MBX021-W3-CA-2.exch021.domain.local> <E8355113905631478EFF04F5AA706E98705BFE87@wtl-exchp-1.sandvine.com> <CDF2F015F4429F458815ED2A6C2B6B0B839A023E@MBX021-W3-CA-2.exch021.domain.local> <E8355113905631478EFF04F5AA706E98705BFFB9@wtl-exchp-1.sandvine.com> <CDF2F015F4429F458815ED2A6C2B6B0B839A0285@MBX021-W3-CA-2.exch021.domain.local> <E8355113905631478EFF04F5AA706E98705C00B4@wtl-exchp-1.sandvine.com> <CA+RyBmVjp2qRoO_NF-sWrQ4gMPhuRZOw7syz0Y6yaAjOtgD_xg@mail.gmail.com> <CA+RyBmWXWRxuKP-dDirYHXxJnnduyriTuN5kmCfQkC=z0JdiCQ@mail.gmail.com>
From: Greg Mirsky <gregimirsky@gmail.com>
Date: Mon, 01 May 2017 10:02:01 -0700
Message-ID: <CA+RyBmXHf_b48yvhZgbdB6q3Tr9=0oHTsnnRPM1jeMjCcCfiiQ@mail.gmail.com>
To: Dave Dolson <ddolson@sandvine.com>
Cc: sfc@ietf.org, mohamed.boucadair@orange.com, James N Guichard <james.n.guichard@huawei.com>, Ron Parker <Ron_Parker@affirmednetworks.com>
Content-Type: multipart/alternative; boundary="001a1140fce8d1eca4054e796179"
Archived-At: <https://mailarchive.ietf.org/arch/msg/sfc/n96wjUb_WJSef7_L3O5cUSB3IfU>
Subject: Re: [sfc] TTL field within the NSH base header
X-BeenThere: sfc@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Network Service Chaining <sfc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sfc>, <mailto:sfc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sfc/>
List-Post: <mailto:sfc@ietf.org>
List-Help: <mailto:sfc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sfc>, <mailto:sfc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 01 May 2017 17:04:59 -0000

"Be liberal what you accept. Be conservative what you send."
I think this sums what we have discussed - accept TTL 0, don't forward TTL
0.

Regards, Greg

On May 1, 2017 8:58 AM, "Dave Dolson" <ddolson@sandvine.com> wrote:

Ron,

I too would like simple, but your table looks pretty complicated. And I
think it adds configuration for an SFF to know whether there are others
before it.

My version of simple:

  TTL field of 0 means 64.

  Every SFF decrements TTL each time it forwards the NSH packet. If
decrementing from 1 would result in under-flow to 64, discard.









*From:* Ron Parker [mailto:Ron_Parker@affirmednetworks.com]
*Sent:* Monday, May 1, 2017 11:41 AM

*To:* Dave Dolson; James N Guichard; mohamed.boucadair@orange.com;
sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



Agree that I’d opt for precision over simplicity.   Which is what I tried
to convey a ways back on this thread regarding differentiated behavior at
the last SFF in the SFP vs. the non-last SFF in the SFP.    Subsequent
comments didn’t seem to embrace that way of describing things.    Also, if
there were consensus to supporting that approach, backward compatibility
for classifiers that emit TTL=0 could be addressed by also describing
behavior at the first SFF vs. non-first.





TTL=1

TTL=0

Only SFF (First and last)

Valid – service local SF’s

Valid for backward compatibility – service local SF’s

First SFF and not Last

Invalid – drop (since propagation to subsequent SFF with TTL=0 is illegal)

Valid for backward compatibility – service local SF’s and propagate to
subsequent SFF with TTL=63

Last SFF when >1 SFF’s for SFP

Valid – service local SF’s

Invalid –drop (due to bad behavior of previous SFF)



*From:* Dave Dolson [mailto:ddolson@sandvine.com <ddolson@sandvine.com>]
*Sent:* Monday, May 1, 2017 11:25 AM
*To:* Ron Parker <Ron_Parker@affirmednetworks.com>; James N Guichard <
james.n.guichard@huawei.com>; mohamed.boucadair@orange.com; sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



I think precision in the definition is important for when expects certain
behavior for small values of TTL. E.g., by using trace-route type of tools.

We can’t just wave our hands and say drop packets with TTL near 0 or 1 or 2.



If one has a chain of 3 items, a TTL of 6 should work. (SFFs receive
packets 6 times in the system diagram that is usually drawn).



(Simplified: I realize in some systems more SFF interactions are required.)









*From:* Ron Parker [mailto:Ron_Parker@affirmednetworks.com
<Ron_Parker@affirmednetworks.com>]
*Sent:* Monday, May 1, 2017 11:14 AM
*To:* Dave Dolson; James N Guichard; mohamed.boucadair@orange.com;
sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



Agree that differentiating “forwarding” to attached SF instances vs
subsequent SFF’s is logical and intuitive (to me) and I prefer to
acknowledge that there is a difference.   But, I was addressing a
suggestion to simplify.     In practice, 61 or 62 or 63 decrements of TTL
all probably mean the same thing J.



   Ron





*From:* Dave Dolson [mailto:ddolson@sandvine.com <ddolson@sandvine.com>]
*Sent:* Monday, May 1, 2017 11:11 AM
*To:* Ron Parker <Ron_Parker@affirmednetworks.com>; James N Guichard <
james.n.guichard@huawei.com>; mohamed.boucadair@orange.com; sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



There is a difference between dropping the packet at receive vs. transmit.

A **terminating** SFF may accept a packet with TTL=1.  I.e., where the NSH
header is removed.

What matters is that it is not decremented to zero and forwarded as NSH.



Otherwise we’d say, “huh, no point in sending a packet if TTL=1. And huh,
if received with TTL=2 then we might as well drop it…” Recurse ad absurdum.



Hence, the correct language needs to convey that a device decrementing TTL
(in order to forward NSH) must check if it would result in zero.



This conveys that, I think:

The packet MUST NOT be forwarded to a next hop if SHL is decremented to
zero.





-Dave





*From:* Ron Parker [mailto:Ron_Parker@affirmednetworks.com
<Ron_Parker@affirmednetworks.com>]
*Sent:* Monday, May 1, 2017 10:50 AM
*To:* James N Guichard; mohamed.boucadair@orange.com; Dave Dolson;
sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



We could simplify this by saying that an SFF that receives an NSH packet
with TTL=1 shall drop the packet.   That doesn’t require any distinction of
the type of forwarding.    You could argue that perhaps 1 means take care
of local SF’s, only, but then we are back to having to make that
distinction.    Given that we are starting at 63 by default, finessing what
happens when receiving 1 doesn’t seem worthwhile to me.



*From:* James N Guichard [mailto:james.n.guichard@huawei.com
<james.n.guichard@huawei.com>]
*Sent:* Monday, May 1, 2017 10:45 AM
*To:* Ron Parker <Ron_Parker@affirmednetworks.com>;
mohamed.boucadair@orange.com; Dave Dolson <ddolson@sandvine.com>;
sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



Yes but my point was if the SFF is **terminating** the service chain there
are no service functions left to be forwarded to so the sentence does not
make any sense. If however the SFF is terminating the service chain and at
termination the SHL reaches 0 then it should still forward the packet
(after removal of NSH).



Jim



*From:* Ron Parker [mailto:Ron_Parker@affirmednetworks.com
<Ron_Parker@affirmednetworks.com>]
*Sent:* Monday, May 01, 2017 10:28 AM
*To:* James N Guichard <james.n.guichard@huawei.com>;
mohamed.boucadair@orange.com; Dave Dolson <ddolson@sandvine.com>;
sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



I’d like to disambiguate the word “forwarding”.   From SFF perspective,
there is forwarding to attached SF instances and there is forwarding to
other SFFs.



“SFFs that terminate a service chain MUST forward the packet to attached
service functions, even if SHL is decremented to 0”



   Ron







*From:* sfc [mailto:sfc-bounces@ietf.org <sfc-bounces@ietf.org>] *On Behalf
Of *James N Guichard
*Sent:* Monday, May 1, 2017 10:22 AM
*To:* mohamed.boucadair@orange.com; Dave Dolson <ddolson@sandvine.com>;
sfc@ietf.org
*Subject:* Re: [sfc] TTL field within the NSH base header



I don’t understand this sentence as if an SFF is terminating a service
chain then it **wont** be forwarding the packets to attached SFs; Shouldn’t
this sentence read “SFFs that terminate a service chain MUST forward the
packet even if SHL is decremented to 0” ?



Jim



*From:* mohamed.boucadair@orange.com [mailto:mohamed.boucadair@orange.com
<mohamed.boucadair@orange.com>]
*Sent:* Friday, April 28, 2017 10:38 AM
*To:* Dave Dolson <ddolson@sandvine.com>; James N Guichard <
james.n.guichard@huawei.com>; sfc@ietf.org
*Subject:* RE: TTL field within the NSH base header



Re-,



I see SHL as a means to prevent SFF loops. There is no value in deleting a
packet after an SFF decrement the SHL to 0, but that packet is to be passed
to SFs that are attached to this SFF. The packet will be forwarded after
stripping the NSH header; no risk for SFF loops out there. No?



Cheers,

Med



*De :* Dave Dolson [mailto:ddolson@sandvine.com <ddolson@sandvine.com>]
*Envoyé :* vendredi 28 avril 2017 16:29
*À :* BOUCADAIR Mohamed IMT/OLN; James N Guichard; sfc@ietf.org
*Objet :* RE: TTL field within the NSH base header



Med,



“SFFs that terminate a service chain MUST forward the packet to attached
SFs even if SHL is decremented to 0.”

I don’t think this is right.

If TTL/SHL is decremented to 0, this must not be forwarded as NSH.

I see that **receiving** a packet with SHL=1 can result in chain
termination, i.e., NSH decapsulation. But not forwarding as NSH with SHL=0.



-Dave





*From:* sfc [mailto:sfc-bounces@ietf.org <sfc-bounces@ietf.org>] *On Behalf
Of *mohamed.boucadair@orange.com
*Sent:* Friday, April 28, 2017 9:36 AM
*To:* James N Guichard; sfc@ietf.org
*Subject:* Re: [sfc] TTL field within the NSH base header



Hi Jim, all,



I have the following comments :

·        Change “TTL” to “SFF Hop Limit (SHL)” because this field is not
about a time to live but about a limit of SFF hops to be crossed.

·        I don’t understand what is meant by “testing”.

·        I suggest to make this change to cover the following points:

o   SHL should be configurable by the control plane.

o   Packets can be forwarded to SFs even if SHL is decremented to 0 for the
terminating SFF.

o   I don’t think it is a good idea to include “Decrementing by a value of
1 from 0 shall result in a TTL value of 63” because this will lead to a
broken mechanism.



OLD:

TTL: Service plane time-to-live. An SFF MUST decrement the TTL by a value
of 1 for all NSH packets it receives. Decrementing by a value of 1 from 0
shall result in a TTL value of 63. The default for originating an NSH
packet is a TTL value of 63. The decrement SHALL occur before testing for
0. After decrement, if the TTL is 0, the NSH packet MUST NOT be forwarded.



NEW:

SHL (SFF Hop Limit): Indicates the maximum SFF hops for a service chain.
The initial SHL value SHOULD be configurable via the control plane; the
configured initial value can be specific to a chain or all chains. If no
initial value is explicitly provided, the default initial SHL value 63 MUST
be used. Each SFF involved in forwarding an NSH packet MUST decrement SHL
value by 1. The packet MUST NOT be forwarded to a next hop SFF if SHL is
decremented to zero. SFFs that terminate a service chain MUST forward the
packet to attached SFs even if SHL is decremented to 0.



Thank you.



Cheers,

Med



*De :* sfc [mailto:sfc-bounces@ietf.org <sfc-bounces@ietf.org>] *De la part
de* James N Guichard
*Envoyé :* jeudi 27 avril 2017 20:54
*À :* sfc@ietf.org
*Objet :* [sfc] TTL field within the NSH base header



Dear WG:



Having reviewed all of the email discussion on the mailing list it appears
to the chairs that we have consensus to add a TTL field to the NSH base
header. We would like to propose the following changes:



Section 3.2:

Update figure 2 as follows:



     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    |Ver|O|R|    TTL    |   Length  |R|R|R|R|MD Type| Next Protocol |

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



Add the following text after figure 2:



TTL: Service plane time-to-live. An SFF MUST decrement the TTL by a value
of 1 for all NSH packets it receives. Decrementing by a value of 1 from 0
shall result in a TTL value of 63. The default for originating an NSH
packet is a TTL value of 63. The decrement SHALL occur before testing for
0. After decrement, if the TTL is 0, the NSH packet MUST NOT be forwarded.



Section 3.4:

Update figure 4 to reflect the new base header format as per section 3.2
base header.



Section 3.5:

Update figure 5 to reflect the new base header format as per section 3.2
base header.



Section 12.2.1:

Current text is as follows:



   There are ten bits at the beginning of the NSH Base Header.  New bits

   are assigned via Standards Action [RFC5226].



   Bits 0-1 - Version

   Bit 2 - OAM (O bit)

   Bit 3 - Critical TLV (C bit)

   Bits 4-9 - Reserved



Replace entire text as follows:



   There are eight reserved bits in the NSH Base Header. New bits

   are assigned via Standards Action [RFC5226].



   Bits 0-1 - Version

   Bit 2 - OAM (O bit)

   Bit 3 - Reserved

   Bits 16-19 - Reserved



Section 12.2.3:

Current text has the MD-type as 8-bit values.



Update text for this section and table 1 to reflect 4-bit values *not*
8-bit values.



*Please review carefully and indicate support for these changes (or any
changes to the suggested text).*



Thanks,



Jim & Joel











_______________________________________________
sfc mailing list
sfc@ietf.org
https://www.ietf.org/mailman/listinfo/sfc