Re: [Bier] Questions on draft-eckert-bier-te-arch-01

Toerless Eckert <eckert@cisco.com> Wed, 07 October 2015 22:10 UTC

Return-Path: <eckert@cisco.com>
X-Original-To: bier@ietfa.amsl.com
Delivered-To: bier@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id F35C31B29C3 for <bier@ietfa.amsl.com>; Wed, 7 Oct 2015 15:10:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -13.911
X-Spam-Level:
X-Spam-Status: No, score=-13.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, J_CHICKENPOX_66=0.6, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] 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 uDth2MxUatgM for <bier@ietfa.amsl.com>; Wed, 7 Oct 2015 15:10:37 -0700 (PDT)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 263B21B29C2 for <bier@ietf.org>; Wed, 7 Oct 2015 15:10:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=7670; q=dns/txt; s=iport; t=1444255837; x=1445465437; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=iYR+FJXw5yoVtTE7wp9hdvTs2WLluqzRx9kCzZHsKYQ=; b=TWxt3/L5lRn9ctT4kVe0UayQTd2TXaBOco++kQwL3SKtpaEf063yJjtH /pcv+ZoRvXf0zqZvNRB8XtLwj+SyGjdNDhx5OhijRupDlSv7dGDi4aTEp 5WH5yeoDzofnKXPAV8FnGSru8xwPWtbf4CtVGSG/0IPs/RIqPvgjeqB3E A=;
X-IronPort-AV: E=Sophos;i="5.17,651,1437436800"; d="scan'208";a="195386226"
Received: from alln-core-8.cisco.com ([173.36.13.141]) by alln-iport-5.cisco.com with ESMTP; 07 Oct 2015 22:10:36 +0000
Received: from mcast-linux1.cisco.com (mcast-linux1.cisco.com [172.27.244.121]) by alln-core-8.cisco.com (8.14.5/8.14.5) with ESMTP id t97MAaoX030175 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 7 Oct 2015 22:10:36 GMT
Received: from mcast-linux1.cisco.com (localhost.cisco.com [127.0.0.1]) by mcast-linux1.cisco.com (8.13.8/8.13.8) with ESMTP id t97MAZ6g001228; Wed, 7 Oct 2015 15:10:35 -0700
Received: (from eckert@localhost) by mcast-linux1.cisco.com (8.13.8/8.13.8/Submit) id t97MAZgP001227; Wed, 7 Oct 2015 15:10:35 -0700
Date: Wed, 07 Oct 2015 15:10:35 -0700
From: Toerless Eckert <eckert@cisco.com>
To: Eric C Rosen <erosen@juniper.net>, Neale Ranns <nranns@cisco.com>
Message-ID: <20151007221035.GA26709@cisco.com>
References: <55DF5BAD.9060003@juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <55DF5BAD.9060003@juniper.net>
User-Agent: Mutt/1.4.2.2i
Archived-At: <http://mailarchive.ietf.org/arch/msg/bier/hPr-sqCFvPNeX7JWWVeFwUnaUbc>
Cc: "BIER (bier@ietf.org)" <bier@ietf.org>
Subject: Re: [Bier] Questions on draft-eckert-bier-te-arch-01
X-BeenThere: bier@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "\"Bit Indexed Explicit Replication discussion list\"" <bier.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/bier>, <mailto:bier-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bier/>
List-Post: <mailto:bier@ietf.org>
List-Help: <mailto:bier-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bier>, <mailto:bier-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 07 Oct 2015 22:10:40 -0000

Hmm... no good explanation why this mail slipped by me answering until
Greg kicked my back. Sorry for that (only lame explanations *sigh*).

I think Neal alreay sent some responses to you..., adding to those.

On Thu, Aug 27, 2015 at 02:49:17PM -0400, Eric C Rosen wrote:
> According to the draft:
> 
>    Currently, BIER-TE does not support BIER-sub-domains and it does not
>    not use BFR-id.  BIER-TE headers use the same format as BIER headers
>    (BFR-id is set to 0)
> 
> If the BFIR-id field in the BIER header is set to 0, it is impossible 
> for the BIER payload to be an MPLS packet whose label stack begins with 
> an upstream-assigned label.  That's because the BFIR-id provides the 
> context in which the upstream-assigned label is interpreted.
> 
> Is that the intention?  That would seem to mean that BIER-TE cannot be 
> used to support MVPN.

No, this was definitely not the intention. The author who wrote this
(me) wanted to explain that the BFIR-ID is not required for BIER-TE forwarding
itself (it is required for BIER forwarding if i am not mistaken),
and incorrectly wrote "does not support".

And i did not come to think of the benefit/need of BFIR-ID for the
context of upstream assigned inner labels. Thats actually quite nice.
A lot easier than non-BIER MPLS solutions if i remember those correctly.

Neal mentioned also that not assigning a BFIR-ID can help to save bitspace,
which is true in BIER, but if we only use BIER-TE forwarding, it would
not even cost bits.

So, how about the following text suggestion:

| BIER-TE forwarding does not require/use the BFIR-ID. The BFIR-ID can
| still be useful though for coordinated BFIR/BFER functions, such as 
| the context for upstream assigned labels for MPLS payloads in MVPN
| over BIER-TE.
| 
| If the BIER-TE domain is also running BIER, then the BFIR-ID in
| BIER-TE packets can be set to the same BFIR-ID as used with BIER
| packets.
|
| If the BIER-TE domain is not running full BIER or does not
| want to reduce the need to allocate bits in BIER bierstrings for
| BFIR-ID values, then the allocation of BFIR-ID values in BIER-TE packets can
| be done through other mechanisms outside the scope of this document,
| as long as this is appropraitely agreed upon between all BFIR/BFER.

If you don't think there is sufficient benefit to keep the door open
to NOT leverage normal BIER assignment procedures for BFIR-ID, then
i could just drop the third paragraph.. ?

> From section 3.2.4:
> 
> A "local_decap" adjacency passes a copy of the payload of the BIER-TE
> packet to the packets NextProto within the BFR (IPv4/IPv6,
> Ethernet,...).
> 
> These local_decap adjacencies sound an awful lot like BFER-ids. Don't 
> you need one for each BFER?  So the BitString has to have a bit for each 
> BFER and a bit for each link that is along the path to any of the BFERs? 
>  Wouldn't this require that the number of BFERs be much less than the 
> number of bits in the BitString?

I could not find BFER-ID term being used anyplace other than
draft-ietf-bier-isis-extensions-00.xml, so i would not venture to
guess what its semantics is - any pointer i overlooked ?

How many bits do you need for TE ? Thats the key question. Obviously,
you can't get traffic-engineering for free, so you will require more
bits for the same network as with BIER. Which is why the BIER-TE draft
has already some optimizations where TE bits are used more efficiently,
and there are more possible.

Section 4.3 explain how Leaf BFER effectively require no bit
(sorry typo: 4.3:s/BFIR/BFER/, done for -02). Eg: just one bit per link
to leafs, and one shared (local decap) bit for all leafs in the network.

Likewise rings require also only one bit per node (local decap), and
a single shared bit for the ring (Section 4.6) (or even for multiple
rings).

So, maybe as a simple rule of thumb for this first round of bit
optimizations: One Bit per BFER, and one bit for every link without
a BFER on it. And those last-hop links are commonly > 50% of links
(could probably calculate from stats like average ingres:egress #interfaces,
 path-length and the like).

Any suggestion if/what should be added to the draft about this ?

> From section 4.9 of the draft:
> 
>    In a large network, multiple BIFT may be necessary, each one
>    identified by a different SI value in the BIER header.
> 
> Well, the only BIER encapsulation referenced by the draft is the MPLS 
> encapsulation, which does not have an SI value in the BIER header. 
> Probably you need to point out in section 3.3 that the MPLS label needs 
> to be associated with an SI, and modify section 4.9 to say that the SI 
> is inferred from the label.

Ack:

| To support larger networks, multiple bitstrings may be required/beneficial.
| This specification utilizes multiple SI (Set Identifiers) to support this. 
| A BIER-TE packets Set Identifier can either be derived from the context of the BIER-TE 
| packet encapsulation, or it can be part of a particular encapsulations BIER-TE header.
| MPLS BIER encapsulation does not include an SI field in the BIER header,
| so the SI needs to be associated with an MPLS label. Eg: for 10 SI in BIER-TE,
| 10 MPLS labels must be assigned to BIER-TE.</t>

> Even so, I don't really understand how this would work.  In ordinary 
> BIER, the bits identify the BFERs.  If for a particular packet you have 
> more BFERs than bits, you can always make two packets, and send each one 
> to (say) half of the BFERs.  In BFR-TE, the bits identify the links over 
> which the packet must flow.  If a particular packet has to flow over 
> more links than can fit into the BitString, you can't just make two 
> packets, and have each one traverse half the links.   I think this needs 
> a bit more explanation.

As in: How do i minimize the duplication of bit assignments for intermediate
links in the bitstrings of different SI ?

I think thats where a good controllers logic comes into play, or a good
operators ID/SI assignments - and certainly ideas from folks looking more
at this.

The most simple logic is to segment your network into non-overlapping areas, assign
an SI to each area, and effectively unicast a copy from the BFIR to the desired entry
 points in each of the areas. Unicasting eg: via Routed Adjacencies. If the
segments are non-overlapping, you could even get away without routed-adjacencies
at all: The ingres BFR directly maps from the non-BIER side lookup result
into a list of adjacencies, each of which has an IGP label to the segments
BFIR, followed by that segments BIER-TE label (SI 0), followed by the
appropriate BIER-header for that network segment.

> Perhaps it is sub-domains rather than SIs that are needed here.  One 
> could in theory have a sub-domain for each flow, and in that sub-domain 
> you'd only have to assign bit positions needed for that flow.  It seems 
> like it might be challenging though to figure out the least number of 
> sub-domains you actually need for a given set of flows.

I guess i don't really confused about the difference between sub-domain
and SI from the arch document and under which circumstances one is
better than another. Any suggestions welcome.

> BTW, the references need updating.

Am i missing references, or where the numbers of the drafts references
too old, even for the time when i ran the xml2rfc ?

Thanks a lot for the review!

Toerless
> _______________________________________________
> BIER mailing list
> BIER@ietf.org
> https://www.ietf.org/mailman/listinfo/bier