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

Toerless Eckert <eckert@cisco.com> Tue, 13 October 2015 00:03 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 E612F1B2D0E for <bier@ietfa.amsl.com>; Mon, 12 Oct 2015 17:03:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Level:
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, 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 RdgEW1s5DnVC for <bier@ietfa.amsl.com>; Mon, 12 Oct 2015 17:02:59 -0700 (PDT)
Received: from alln-iport-4.cisco.com (alln-iport-4.cisco.com [173.37.142.91]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 85BE51B2D0A for <bier@ietf.org>; Mon, 12 Oct 2015 17:02:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=7335; q=dns/txt; s=iport; t=1444694580; x=1445904180; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=ZpW/V4be978fiAkrkSPvyiAucgOF/5CrfVwYSzcXnAE=; b=XE9OR/BB8RE4DPdJA/N//1obk+MJZnya9thbvzgTuiokJC0J084aMHYS ZjtcLsX8+9UT8hBoYXsg3NOnXhKk/IPqOL47l9GTKUcdpD3n7HHt/AaPG da1AI+916SipRobg50PrFDRyTp+wyfdTTy4lOPUYwDPLt8qFmQkULeGEg E=;
X-IronPort-AV: E=Sophos;i="5.17,675,1437436800"; d="scan'208";a="196715772"
Received: from alln-core-3.cisco.com ([173.36.13.136]) by alln-iport-4.cisco.com with ESMTP; 13 Oct 2015 00:02:59 +0000
Received: from mcast-linux1.cisco.com (mcast-linux1.cisco.com [172.27.244.121]) by alln-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id t9D02wIP014672 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 13 Oct 2015 00:02:58 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 t9D02vBx025273; Mon, 12 Oct 2015 17:02:57 -0700
Received: (from eckert@localhost) by mcast-linux1.cisco.com (8.13.8/8.13.8/Submit) id t9D02vgG025272; Mon, 12 Oct 2015 17:02:57 -0700
Date: Mon, 12 Oct 2015 17:02:57 -0700
From: Toerless Eckert <eckert@cisco.com>
To: Eric C Rosen <erosen@juniper.net>
Message-ID: <20151013000257.GA13911@cisco.com>
References: <55DF5BAD.9060003@juniper.net> <20151007221035.GA26709@cisco.com> <561BFD2C.8090708@juniper.net>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <561BFD2C.8090708@juniper.net>
User-Agent: Mutt/1.4.2.2i
Archived-At: <http://mailarchive.ietf.org/arch/msg/bier/zrga-ls1uAyuO7agJ-T-Wo9PF1M>
Cc: "BIER (bier@ietf.org)" <bier@ietf.org>, Neale Ranns <nranns@cisco.com>
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: Tue, 13 Oct 2015 00:03:02 -0000

On Mon, Oct 12, 2015 at 02:34:20PM -0400, Eric C Rosen wrote:
> I don't think the BFIR-id is needed for BIER forwarding, it's only
> needed if the multicast flow layer at the BFERs needs to do some sort of
> RPF check. I don't think BIER and BIER-TE are different in this respect.

Indeed.

> Right, in BIER-TE forwarding the BFIR-id doesn't require a bit in the
> BitString, so eliminating the BFIR-id doesn't really seem to provide
> much value.

16 bit header saved. 

> With regard to the issue of not having enough bits to represent the
> entire multicast distribution tree ...

Right...

> >[Toerless] 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.
> 
> I didn't really understand this.  How does a node know whether it is a 
> leaf (a BFER) for a particular packet?  Doesn't this mean that every BFR 
> through which a packet passes is going to have to figure out whether it 
> is supposed to be a BFER for that packet?  I'd like to see the details 
> of how that would work.

Conroller determine if BFR is BFER:
  Is there a service edge using BIER-TE and BFR could be receiver
  on some of these services ?  Ok, you're a BFER.

Controller determines what bits are needed to support BFER:
  Is it even feasible and if so, desirable to send packets
  into this BFR and have them transit towards another BFR ?
  No ? Ok, you're a leaf BFER. 

If BFR is leaf BFER, then controller only assigns bit to the
links leading up to the leaf BFER, not the BFER itself.

For all non-leaf BFER, controller assigns an individual bit.

If there are one or more leaf BFER in network, controller assigns
one "shared leaf BFER" bit. Thats set to have local decap entry
in all the leaf BFER. It can be shared, because it would only be
reset when it passes through some BFR that has it set, and given
how all BFR that have it set are leaf BFR, this will not happen. QED.

> BTW, however it works, it will probably require 
> knowing the BFIR-id, unless that can be inferred from the sub-domain 
> that is implicitly identified by the BIER-MPLS label.  (Consider, e.g., 
> a case where a given flow is traveling on two different TE trees, 
> perhaps from different BFIRs, but a given transit node is on both trees.)

I don't think BFIR-ID plays a role here. 

[...]
> Assuming we replace "SI" with "sub-domain", is this the same as Neale's
> suggestion:
> 
> >[Neale] perhaps one could consider one or more uni-directional
> >BIER-TE sub-domains rooted at each BFIR. Each individually signalled
> >sub-domain comprises a sub-set of the BFERs (and the links to
> >traverse to them) that the BFIR needs to address. Flows can then map
> >onto one or more of these sub-domains. This scheme keeps the number
> >of sub-domains scaling with network size (as with SPF-BIER sets),
> >rather than number of flows.

Possibly the same, yes. Neal doesn't belabor the unicast/MPLS part
"how to get a BIER packet from any BFIR to some remote subdomain" as i do.
Not sure if he envisions something different than i or just thinks
that piece is obvious.

> So each sub-domain would be a sub-tree of the tree from a given BFIR.
> You unicast-tunnel a packet to the root of a sub-domain, and then let 
> BIER distribute the packet down the sub-tree.
^^^^^^ BIER-TE

> The number of sub-domains 
> is then proportional to the number of BFIRs (which is still a lot of
> sub-domains), and each transit node would have to determine for each
> packet whether it needs to consume that packet or just pass it along.

No, not really.

Lets run a simple example: 5 country network. 1000 BFER, each country
200 BFER, 3 routers in each country connecting to core. Call them 
them sub-domain BFIR if you want. Controller allocates
one sub-domain per country. Fills up 256 bitstring with in-country
BFER and in-country links Aka: lets say all relevant links between
sub-domain BFIR and BFER are < 56.

Lets look at BFIR service lookup for some IPTV (S,G) on ANY BFIR
across the whole network: OIF list of 5 replications, each replication
has unicast/MPLS label of one sub-domain BFIR follows by that BFIRs
label for the subdomain of interest, followed by the BIER bitstring for
the "in-country bits".

Scales with number of BFER + number of relevant replication
transit hops.  In above example, maybe 20% of BFER ???

If you'd try to run this example with BIER instead of BIER-TE and
did randomn BFR-ID == SI allocation, you may end up sending more copies
across a lot of links. Eg: when you end up with BFR-ID with 2 different
SI in a country. So the logic of allocating BFR-ID or sub-domains
is really necessary/beneficial almost as much in BIER as in BIER-TE
in these type of examples.

> Part of the BFER processing would be to figure out for each packet (a)
> am I supposed to receive this packet and (b) did I receive it from the
> sub-domain over which I'm expecting it?

Hmmm... no, can't parse that. knowing which sub-domain a packet is
for is like BIER via the label when MPLS encap is done (otherwise it
wouldhave to be in the BIER header). Punting to higher layer is
just based on having a bit with local decap and as explained above,
the controller can intelligently assign this shared for leaf BFERs.

> It seems like there are a lot of details to be added, and some of them
> might be dependent upon the multicast flow layer.

Let me know specifically what piece of explanation you'd like to see.
If the above example, maybe with a picture would help, thats easy.

> >[Toerless] Am i missing references, or where the numbers of the
> >drafts references too old, even for the time when i ran the xml2rfc?
> 
> The references are to the old individual documents rather than to the WG
> documents.

Arghh... ok. stupid me. I was wondering what xml2rfc wouldn't
update automatically.

> >[Toerless] 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).
> 
> I don't quite understand from section 4.6 why a given packet will not
> revolve around the ring forever, as the "ring bit" only seems to get
> reset when the packet leaves the ring.  Also, if the "ring bit" gets 
> reset when a packet leaves the ring, how do you use one bit for multiple 
> rings?  Perhaps I've misunderstood something.

 "On BFR2, the adjacency also points to the
   clockwise neighbor BFR1, but without DNR set.  "

DNR bit is part of the adjacency in the BIFT, so only
the copies sent across the ring adjacencies will have it set, and then
we do not set DNR towards the end of the ring before it would loop. 

Multiple rings is just an example. DNR allows you to save bits
in bitstring whenever you are fine all BIER-TE traffic is flooded
across that sub-topology. Just set up in the BIFTs appropriate
adjacencies to flood (loop free) across the topology.

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