标签本身是一个聚合标签,即标签没有附加重写信息,因此它不知道出口接口,也不知道出口MAC地址。例如,聚合标签用于连接的网络。
Aggregate label 意味着您不知道 MPLS 查找后的出口信息,因此您必须进行正常的 IP 查找才能确定出口信息。
普通标签附有出口重写信息,即查找标签将返回出口接口(包含所有必要信息,如 MAC 地址、VLAN 等)
让我们假设所有链路都是 IGP 度量 1,除了 BC 是度量 2。
将 A 发送到 E 的环回 (192.0.2.5) 将发生以下情况
- E 将为 192.0.2.5/32 分配显式 (0) 或隐式 (默认)
- E 将使用 LDP 将前缀+标签 (FEC) 分发给 C 和 D
- C 将为此分配本地标签,比如 100(可以是任何东西)
- C 将编程 FIB 条目,以便标签 100 指向 E 的接口,如果显式为空,则 MPLS 标签操作为“SWAP 0”,如果为隐式为空,则为“POP”
- C 将编程 FIB 条目,因此前缀 192.0.2.5/32 指向 E 的接口,如果显式为空,则 MPLS 标签操作“PUSH 0”
- D 将为此分配本地标签,比如 200(可以是任何东西,甚至 100、300、400)
- D 将编程 FIB 条目,以便标签 200 指向 E 的接口,如果显式为空,则 MPLS 标签操作为“SWAP 0”,如果为隐式为空,则为“POP”
- D 将编程 FIB 条目,以便前缀 192.0.2.5/32 指向 E 的接口,如果显式为空,则 MPLS 标签操作“PUSH 0”
- D 和 C 将使用 LDP 将前缀+标签分发给 B
- B 将为此分配本地标签,比如说 300(可以是任何东西)
- B 将编程 FIB 条目,以便标签 300 指向 D 的接口(因为 IGP 度量!),以及 MPLS 标签操作“SWAP 200”
- B 将编程 FIB 条目,以便前缀 192.0.2.5/32 指向 D 的接口,并且 MPLS 标签操作“PUSH 200”
- B 将使用 LDP 将前缀+标签分发给 A
- A 将为此分配本地标签,比如 400(可以是任何东西)
- A 将编程 FIB 条目,以便标签 400 指向 B 的接口,并且 MPLS 标签操作“SWAP 300”
- A 将编程 FIB 条目,以便前缀 192.0.2.5/32 指向 B 的接口,并且 MPLS 标签操作“PUSH 300”
现在当 A 发送到 192.0.2.5/32 时转发平面会发生什么
- A 将 PUSH(强加)标签 300 并发送给 B
- B会咨询FIB 300,也就是Interface D和SWAP 200
- D会咨询FIB为200,即Interface E和POP(或SWAP 0)
- E 将接收帧