Re: [Isis-wg] [spring] Indication of presence or absence of subTLVs in Router Capability TLV and SR binding TLV

Imtiyaz Mohammad <technotaz2004@gmail.com> Fri, 14 August 2015 16:32 UTC

Return-Path: <technotaz2004@gmail.com>
X-Original-To: isis-wg@ietfa.amsl.com
Delivered-To: isis-wg@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BBF791A883A; Fri, 14 Aug 2015 09:32:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.748
X-Spam-Level:
X-Spam-Status: No, score=-1.748 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, NORMAL_HTTP_TO_IP=0.001, SPF_PASS=-0.001] autolearn=no
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 hdXi8m9aStVl; Fri, 14 Aug 2015 09:32:51 -0700 (PDT)
Received: from mail-qg0-x22a.google.com (mail-qg0-x22a.google.com [IPv6:2607:f8b0:400d:c04::22a]) (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 595C11A8835; Fri, 14 Aug 2015 09:32:51 -0700 (PDT)
Received: by qgeg42 with SMTP id g42so55266416qge.1; Fri, 14 Aug 2015 09:32:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=z6dm2ExVfIzGuYwfyfA1SeO2whMeqb+DCz5vYgjDaGs=; b=BabMh3LSDEF88Dz6fm7LlZ2K/A/OtbgeHaGnOtIeg5N4ALOB3T8j5zVaKUGVBy3KIU DAH2Ie9py2CCAwyChCxiLs0KrvlQda9DDn8D1LKKpMklWPW1MABrKcUCKfOaDGDJIAZT 1lSQYjuD9p3M/M2VppASz4ni5Ty1KJGk9gBstKMUiqdntMfcifIXTcqeGzhpI7Evbtoa H+OyL67IGY9flO3klg7P5Y2JU7yEJISATDP5pgmrw00UM2oFgL3TPkZhcJAiqu3ihdy+ HQuzabXgOPQuLuI8at/h/dMJiamPL9fHQYtsvdyPSYScpUMuxvdFkEy6C/OMFiSunlgE tQow==
MIME-Version: 1.0
X-Received: by 10.140.152.203 with SMTP id 194mr86024220qhy.19.1439569970516; Fri, 14 Aug 2015 09:32:50 -0700 (PDT)
Received: by 10.140.41.19 with HTTP; Fri, 14 Aug 2015 09:32:50 -0700 (PDT)
In-Reply-To: <F3ADE4747C9E124B89F0ED2180CC814F595583F6@xmb-aln-x02.cisco.com>
References: <CANk4F3Ofs+NT4TCMKecg8UEHGJ4j=H3q5L5V6ue=p7kL5NK2tw@mail.gmail.com> <F3ADE4747C9E124B89F0ED2180CC814F595583F6@xmb-aln-x02.cisco.com>
Date: Fri, 14 Aug 2015 22:02:50 +0530
Message-ID: <CANk4F3NiQywck=_MYRXktVP9JOzuCBpUQ7fcp8t8idHC6YKH7g@mail.gmail.com>
From: Imtiyaz Mohammad <technotaz2004@gmail.com>
To: "Les Ginsberg (ginsberg)" <ginsberg@cisco.com>
Content-Type: multipart/alternative; boundary="001a11358592b8d8ba051d480014"
Archived-At: <http://mailarchive.ietf.org/arch/msg/isis-wg/mnGfqXab1Sg4hmU5etF6jICSp4c>
Cc: "spring@ietf.org" <spring@ietf.org>, "isis-wg@ietf.org list" <isis-wg@ietf.org>
Subject: Re: [Isis-wg] [spring] Indication of presence or absence of subTLVs in Router Capability TLV and SR binding TLV
X-BeenThere: isis-wg@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: IETF IS-IS working group <isis-wg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/isis-wg>, <mailto:isis-wg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/isis-wg/>
List-Post: <mailto:isis-wg@ietf.org>
List-Help: <mailto:isis-wg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/isis-wg>, <mailto:isis-wg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 14 Aug 2015 16:32:54 -0000

Thanks Les. That clears.

On Fri, Aug 14, 2015 at 9:08 PM, Les Ginsberg (ginsberg) <ginsberg@cisco.com
> wrote:

> Imtiyaz –
>
>
>
> Let me try to answer your questions – though it involves a bit of
> “archaeology”.
>
>
>
> RFC 5305 introduced TLVs 22 and 135. They were modeled after the original
> “narrow metric” versions TLV 2 (ISO10589) and TLV 128 (RFC1195) – both of
> which support multiple neighbors/prefixes in the same TLV.
>
>
>
> In the case of TLV 22 there is no flags field, so there is no opportunity
> to introduce a flag indicating sub-TLVs are present. Introducing a flags
> field would have taken up the same amount of space as the current field
> which indicates total sub-TLV length. Doing so would have only made the
> encoding less efficient in the case where sub-TLVs are present (one extra
> octet would have been required).
>
>
>
> In the case of TLV 135 there is a flags field. This allows support for a
> flag indicating sub-TLVs are present. In the case where the flag is clear
> (no sub-TLVs present) this saves one octet by eliminating the need to have
> a sub-TLV length advertised.
>
>
>
> In the case of TLV 242 (Router Capability), the format consists of:
>
>
>
> Type
>
> Length
>
> Fixed Header
>
> Sub-TLVs
>
>
>
> The “objects” which are advertised in Router Capabilities are always
> advertised in sub-TLVs unique to the particular object being described.
> There is no analog to a “neighbor” or “prefix” which needs to be repeated.
>
> Consult
> http://www.iana.org/assignments/isis-tlv-codepoints/isis-tlv-codepoints.xhtml#isis-tlv-codepoints-242
> for the sub-TLV codepoints supported.
>
>
>
> In regards to the Binding TLV (149), it is conceivable that the authors
> could have defined a format that supported multiple FEC advertisements and
> their associated sub-TLVs in a single TLV – but they chose not to do so –
> presumably to make the encoding a bit simpler.
>
>
>
> HTH
>
>
>
>    Les
>
>
>
>
>
> *From:* spring [mailto:spring-bounces@ietf.org] *On Behalf Of *Imtiyaz
> Mohammad
> *Sent:* Thursday, August 13, 2015 3:59 AM
> *To:* spring@ietf.org; isis-wg@ietf.org list
> *Subject:* [spring] Indication of presence or absence of subTLVs in
> Router Capability TLV and SR binding TLV
>
>
>
> Hello experts !
>
>
>
> I am perplexed looking at the different ways present or nor present in a
> bunch of ISIS TLVs I have came across recently. Wish to get my questions
> clarified here.
>
>
>
> I have seen that implementations put multiple VALUES of the same TYPE
> within one single block. In other words, if we were to advertise Extended
> IPv4 reachability (type 135) for prefix 99.1.1.1/32 ( with prefix SID
> subTLV), 5.5.5.0/24 ( no subTLV ), 3.3.3.0/24 (no subTLV ), we would do
> so as follows ( fabricated tcpdump o/p ):
>
>
>
> TLV FORMAT:
>
> ===========
>
>    4 octets of metric information
>
>    1 octet of control information, consisting of
>
>       1 bit of up/down information
>
>       1 bit indicating the presence of sub-TLVs
>
>       6 bits of prefix length
>
>    0-4 octets of IPv4 prefix
>
>    0-250 optional octets of sub-TLVs, if present consisting of
>
>       1 octet of length of sub-TLVs
>
>       0-249 octets of sub-TLVs, where each sub-TLV consists of a
>
>       sequence of
>
>          1 octet of sub-type
>
>          1 octet of length of the Value field of the sub-TLV
>
>          0-247 octets of value
>
>
>
> EXAMPLE:
>
> ========
>
>             Extended IPv4 Reachability TLV #135, length: 34
>
>                   IPv4 prefix:        99.1.1.1/32, Distribution: up,
> Metric: 10, sub-TLVs present (8)
>
>                        Segment Routing Prefix Segment subTLV #3, length:
> 6, Flags: N Algorithm: SPF, Index: 1
>
>                     IPv4 prefix:        5.5.5.0/24, Distribution: up,
> Metric: 10
>
>           IPv4 prefix:        3.3.3.0/24, Distribution: up, Metric: 10
>
>
>
> As could be observed, We have encompassed the three prefixes and other
> associated information within one single block that could be represented as:
>
>
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value1(metric, control, prefix, subTLV)
>
> Value2(metric, control, prefix)
>
> Value3(metric, control, prefix)
>
> -----------------------------------------
>
>
>
> Instead of separate instances of the same TLV, as shown below:
>
>
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value1(metric, control, prefix, subTLV)
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value2(metric, control, prefix)
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value3(metric, control, prefix)
>
> -----------------------------------------
>
>
>
> When parsing the LSP buffer, when we are at value1, we know whether or not
> value1 contains subTLVs based on subTLV present bit in the control octet of
> extended IP reachability TLV. This way, we know that we have a Value1,
> subTLV, Value2 in the buffer instead of Value1\
>
> , Value2.
>
>
>
> Let's consider Extended IS Reachability ( type 22 ) now.
>
>
>
> FORMAT:
>
> ========
>
>       7 octets of system ID and pseudonode number
>
>       3 octets of default metric
>
>       1 octet of length of sub-TLVs
>
>       0-244 octets of sub-TLVs, where each sub-TLV consists of a
>
>       sequence of
>
>          1 octet of sub-type
>
>          1 octet of length of the Value field of the sub-TLV
>
>          0-242 octets of value
>
>
>
> EXAMPLE:
>
> ========
>
>             Extended IS Reachability TLV #22, length: 22
>
>                   IS Neighbor: 1111.1111.0003.00, Metric: 10, no sub-TLVs
> present
>
>                         IS Neighbor: 1111.1111.0002.0d, Metric: 10, no
> sub-TLVs present
>
>
>
> Again, we have Type, Length, Value1( data associated to 1111.1111.0003.00
> ) and Value2 ( data related to 1111.1111.0002.0d )
>
>
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value1
>
> Value2
>
> -----------------------------------------
>
>
>
> To summarize, the presence of subTLV present bit in Extended IP
> Reachability TLV subTLV length field in Extended IS reachability TLV helps
> us parse a representation where multiple VALUE blocks can be encompassed
> within one Type/Length block.
>
>
>
> For implementing Segment Routing using IS-IS as IGP one would need to
> support Router Capability TLV (Type #242) and SR Label Binding TLV (Type
> #149)
>
>
>
> We noticed that these two TLVs neither have a subTLV present bit in any
> flag in the VALUE part of the TLV nor do they have a subTLV field. Without
> knowing whether the VALUE block has a sub-TLV or not, we would not be able
> to support the following way of encoding.
>
>
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value1
>
> Value2
>
> -----------------------------------------
>
>
>
> When we are at Value1, we would not know if the information in the next
> byte is meant to represent another instance of VALUE (Value12) or subTLV of
> Value1. The only model that makes sense then is:
>
>
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value1
>
> -----------------------------------------
>
> Type
>
> Length
>
> Value2
>
> -----------------------------------------
>
>
>
> Summarizing my questions:
>
> =========================
>
> 1) Why do we have such an non-uniform way of denoting or not denoting
> whether sub-TLVs are present or not ? A bit and sub-TLV len field in type
> 135, just a subTLV len field in type 22 and no indicators in type 242 and
> type 149.
>
>
>
> 2) Is it agreed and understood by all implementations that type 242 and
> type 149 would be present in an LSP as multiple instances of T,L,V tuples
> instead of T,L,V,V,V blocks ?
>
>
>
> Thanks,
>
>
>
> Imtiyaz
>