Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BIER 转发

概述

BIER 转发基于 BIER 标头中的比特字符串。位字符串中设置的每个位代表一个 BFER(BIER 转发出口路由器),它应该接收组播数据包。该位由分配给每个 BFER 或 BFIR 的唯一 BFR-ID 映射而成。请注意,既不是 BFIR 也不是 BFER 的中转 BIER 转发路由器 (BFR) 不会分配 BFR-ID。

BFR 使用传入 BIER 数据包的位串中集合位的索引来查找 BIER 转发表 (BIFT)。由于位串中设置的每个位都对应一个特定的 BFR,因此转发 BFR 能够确定数据包应转发到的邻接方。

BIFT 是通过计算如何在 IGP 路由底层(例如拓扑)中到达每个 BFER 来创建的。一个拓扑可以有多个 BIER 子域,但一个子域只与一个拓扑相关联。BFR 可能属于多个子域,并且对不同的子域具有不同的 BFR-ID。

当 BFER 数量大于 BSL 时,将发送多个副本,每组 BFER 一个副本。每个副本(对于不同的 BFER 集)使用不同的 BIFT 进行转发,因为不同副本中的相同位用于不同的 BFER(例如,考虑到 BitStringLength 为 256 位,copy-1 中的 bit-1 用于 BFER 1,但 copy-2 中的 bit-1 用于 BFER 257)。

在 MPLS 数据平面内 BIER 报头的开头插入一个 MPLS 标签,以指示 BIER 报头即将紧随其后。

BIER header format in networking with fields: BIER Label, Traffic Class, Bottom of Stack, Time to Live, Entropy, Nibble, Version, BitString Length, Operations Administration and Maintenance, Reserved, Differentiated Services Code Point, Protocol, Bit Forwarding Ingress Router ID, BitString.

此 BIER 标签还标明了用于转发数据包的 BIFT。

路由协议扩展用于发出封装信息(如 BIER 标签)的信号,并计算 BFR 支持的所有<子域、BitStringLength、集>元组的 BIFT。BIER 信息附加到 BFR 前缀(即环路地址)的路由播发。

当为<子域 BitStringLength>元组计算到 BFER 前缀的路由时,将向相应的 BIFT 添加一个条目,其键为 (BFR-ID % BitStringLength),下一跃点信息为 <下一跳邻居,<子域的邻居的 BIER 标签,BitStringLength,set>,邻居的 F-BM>。邻接方的 F-BM 是该邻接方到达的此集中所有 BFER 位的逻辑 OR。

让我们以一个由六个 BFR(A、B、C、D、E 和 F)组成的简单网络拓扑为例来说明这个概念。

图1:位转发机制 Network diagram of Bit Index Explicit Replication BIER forwarding process with BFR B's Bit Index Forwarding Table BIFT and routers A-F.

其中,路由器 A、D、E 和 F 充当边缘路由器,即 BFER 或 BFIR。每个都分配了一个唯一的 BFR-ID:1 表示 D,2 表示 F,3 表示 E,4 表示 A。BSL(bitstringlength)设置为 4 位,SI(Set-ID)当前为 0。所有 BFRS 都属于子域 32。

这些 BFR-ID 中的每一个都映射到 4 位字符串中的位。这转化为以下任务:

路由器 D:0:0001

路由器 F:0:0010

路由器 E:0:0100

路由器 A:0:1000

其余 BFR(B 和 C)是过境 BFR,未分配 BFR-ID。

当 BFR A 使用位串 0111 向 BFR B 发送 BIER 数据包时,BFR B 确定该数据包是为 BFR E、F 和 D 发送的。BFR B 随后将同一数据包的两个副本发送,一个发送到 BFR E,另一个发送到 BFR C。发送到 BFR C 的副本将带有更新的位字符串 0011,该字符串对应于 BFR D 和 F。当数据包到达 BFR C 时,它决定将数据包的一个副本发送到 BFR D,另一个副本发送到 BFR F。

此转发决策基于 BFR B 的 BIFT。

请注意,BIFT 列出了可以访问 BFR A、D、E 和 F 的 BFR 邻接方。F-BM 是 BFR 邻接方的属性,它表示可通过该邻接方访问的所有 BFER。例如,BFR 邻居 C 的 F-BM 为 0011,这意味着 BFR C 可以覆盖 BFER D 和 F。路由器 D 的 F-BM 为 0001,BFR F 的 F-BM 为 0010。BFR C 的 F-BM 是该邻接方 0011 到达的此集中所有 BFER 位的逻辑“OR”。

BIFT 路由查找

使用上面的相同示例,当 BFR A 使用位串 0111 向 BFR B 发送 BIER 数据包时,BFR B 使用在传入位串(最右侧位)中设置的最低位的索引来查找 BIFT。路由表中的第一个条目(索引 1)与查找匹配,这意味着应将 BIER 数据包转发到 F-BM 为 0011 的 BFR 邻接方 C。BFR B 将副本连同更新的位字符串 0011 一起发送到 BFR C,这是传入位字符串和 BFR C 的 F-BM 的逻辑“AND”。

接下来,BFR B 使用 BFR C 的 F-BM 清除传入位串中的一些位,并使用生成的位串中最低设置位的索引来查找 BIFT。表查找结果为具有 F-BM 0100 的 BFR 邻接方 E。BFR B 使用更新的位字符串 0100 向 BFR E 发送副本,这是传入位字符串和 BFR 邻居 E 的 F-BM 的逻辑“AND”作。

此过程一直持续到传入位字符串全部为零为止。

MVPN 中的 BIER 转发

让我们举一个示例来说明通过 MVPN 隧道的数据包流。

Network topology diagram with source, customer edge CE1-CE5, provider edge PE1-PE4, provider core P, and receiver nodes interconnected.

在 PE1(入口)上:

发出 show mvpn instance vrf1 命令以显示提供程序隧道 vrf1 信息。

注意:

发出 show multicast route extensive instance vrf1 display-tunnel-nameshow mvpn instance vrf1 display-tunnel-name 以查看 BIER 隧道的名称。

包容性隧道有两个 MVPN 邻接方,10.2.2.2 的 BFR-ID 为 2,10.3.3.3 的 BFR-ID 为 3。因此,设置了位 2 和 3。邻居 10.4.4.4 未通告任何隧道,因此不予考虑。

通过发出set routing-instances routing-instance-name vrf-table-label static label语句对标签990001进行静态配置。

在 FBM 中,对于 256 字节的位字符串长度存在 8 个值,用 “:” 分隔,每个值表示 32 个 BFIR/BFER。

发出命令以 show multicast route instance vrf1 extensive 查看组播路由信息。

到达 VRF 的数据包(172.11.21.21、232.252.1.1)与上述路由匹配。首先施加标签990001,以便出口 PE 在移除 BIER 标头时可以找到对应的 VRF。然后,使用位字符串 0:0:0:0:0:0:0:0:0:00000006 和 BIER 标签 16 强加 BIER 报头,此 BFIR 为提供商隧道的子域播发该标签。然后将结果视为从另一个 BFR 接收的 BIER 数据包。

在本地 mpls.0 表中查找标签 16。发出 show route table mpls.0 protocol bier label 16 extensive 命令以查看所查找的 BIFT。

在 BIFT :bier-10-0.bier.0 及其对应的推送标签中查找 BFR-ID 2 和 BFR-ID 3,并确定下一跃点。发出 show route table :bier-10-0.bier.0 命令以查看此下一跃点信息。

要查看 F-BM 及其 BIER 邻居,请发出 show route table :bier-10-0.bier.0 extensive 命令。

也可以通过发出 show bier neighbor 命令来查看 F-BM。

输出还会显示数据包 (pps)。在下面的示例输出中,下一跳为 10.1.2.2 的 BIER 邻接方 10.2.2.2 的数据包计数器显示 141753 ,而其他邻接方显示 null。这表示组播流量的当前转发路径。使用其 F-BM 屏蔽位字符串后,它会使用推送标签 16 转发到其相邻方。

在 PE2 上:

在本地 mpls.0 表中查找传入标签,并确定相应的 BIFT。发出 show route table mpls.0 protocol bier label 16 extensive 命令以查看标签 16 的表信息。

位 2 和 3 在 BIFT :bier-10-0.bier.0中查找。对于位 2,下一跃点是本地 mpls.0 表,对于位 3,下一跃点是推送标签 16 的 PE3。发出 show route table :bier-10-0.bier.0 命令以验证此信息。

对于位 2,将在 mpls.0 表中查找 vrf 标签 990001 以查找其对应的 vrf。

发出 show multicast route instance vrf1 extensive 命令以查看路由。

在 PE3 上:

与 PE2 类似,将在本地 mpls.0 表中查找传入标签并确定相应的 BIFT。发出 show route table mpls.0 protocol bier label 16 extensive 命令以查看标签 16 的表信息。

发出 show route table :bier-10-0.bier.0 命令以查看下一跃点信息。在 BIFT 中查找位 3,下一跃点是本地 mpls.0 表。

在 mpls.0 表中查找 vrf 标签 990001 ,以查找位 3 的 vrf。

发出 show multicast route instance vrf1 extensive 命令以在 vrf 中查看路由。