1.概述
1.1 前提说明
本小节将对per-platform label space、UD、LLR模式下的MPLS LSP建立过程进行讨论
1.2 LSP的建立过程
1.3 Reserved Labels
(1)Implicit NULL Label
①概述
a.其label value为3
b.implicit指的是在进行数据转发时(data plane),该label不会出现在label stack中
c.引入implicit NULLlabel的目的是提高转发效率
②为何引入implicit Null label――两次查找的低效性
如图所示,LSR 2是egress LSR,它为1.1.1.0/24分配的label为20,并且通告给其LSRneighbor LSR 1。LSR 1上将该remote binding形成关联
当LSR 1将带有label 20的packets转发给LSR 2时,LSR 2首先需要检查其labelvalue
由于LSR 2是该FEC的egress LSR,因此LSR 2根据value确定需要的操作是移除该label
LSR 2在移除label后,对该IP packet再次进行查找,确定其IP转发的下一跳,并将其转发
这里egress LSR必须进行两次查找,一次查找LFIB,一次查找CEF,而前一次查找是可以避免的
③PHP
PHP(Penultimate Hop Popping,倒数第二跳弹出)
此时作为FEC 1.1.1.0/24的egress LSR,LSR 2为其分配一个implicit NULL label,并通告给LSR neighbors
LSR 1本地若与label value为3的implicit NULL label形成关联,LSR 1收到去往1.1.1.0/24的labeled packets时操作为POP
由于在倒数第二跳LSR 1上进行了POP操作,此时LSR 2收到的将是IP packets,转发时减少了一次查找
(2)Explicit NULL Label
①Implicit NULL Label的缺陷
提前将label弹出,造成egress LSR只能收到IPpackets,label的缺失可能会导致QoS方面的问题
②概述
①其value为0
②explicit指的是,进行数据转发时,explicit NULL label会被携带在label stack中发送,LSR读取到该label时进行pop操作
③工作过程
作为1.1.1.0/24的egress LSR,LSR 2在启用explicit NULL label时,为本地直连、汇总前缀依然分配implicit NULL label
但是LSR 2在向其LSR neighbors通告label时,将通告explicit NULL label
LSR 1收到LSR 2通告的label,并形成关联项
当LSR 1收到去往1.1.1.0/24的labeledpackets,进行swap操作,替换top label为value为0的explicit NULL label
LSR 2收到该packets时,执行pop操作
④相关配置
由于Cisco及HUAWEI默认情况下都使用implicitNULL label,因此需要额外配置支持explicitNULL label
a.Cisco
Router(config)#mpls ldpexplicit-null [for <acl-1>] [to <acl-2>]
如果不添加for、to关键字,则向所有LSRneighbors发送explicit NULL label
可以使用for指定特定的FEC
使用to指定特定的LDP neighbor
注意:
这里的LDP neighbor指的是邻居LSR的Router-ID,而不是LDPtransport-address
b.HUAWEI
[Huawei-mpls]labeladvertise explicit-null
2.Label的分配
2.1 何时分配
(1)Cisco实现
一旦IP RIB中出现了新的非BGP前缀,LSR便侦测到了新的FEC产生,并为该FEC分配local label
(2)HUAWEI实现
由于华为设备默认工作在Ordered LSP Control模式下,除非当前设备是 egress LSR,否则必须收到LDP对等体的Label Mapping message之后,才能为新发现的FEC分配label
2.2 Label分配对象
― |
直连主机IP |
直连非主机IP |
聚合路由 |
静态路由只跟出口 |
学习到的路由前缀 |
Cisco |
Implicit Null |
Implicit Null |
Implicit Null |
Implicit Null |
Normal label range |
HUAWEI |
Implicit Null |
默认不分配label 配置后分配Implicit Null |
默认不分配label IP RIB中默认无聚合路由 |
默认不分配label 配置后分配常规范围label |
收到label mapping后分配 |
(1)Cisco实现
Cisco的MPLS实现,默认对直连前缀、聚合路由、只跟出口的静态路由分配implicit Null label
由于工作在Independent LSP Control mode下,Cisco LSR默认会对学习到的FEC直接分配常规范围的label
上图中,Cisco的MPLS实现
LSR 1会为本地直连IP31.31.12.0/24分配implicit Nulllabel;为各个学习到的OSPF前缀分配常规范围的labels
LSR 2为直连IP31.31.12.0/24、31.31.23.0/24分配implicit Null label;为各个学习到的OSPF前缀分配常规范围labels
LSR 3上,为直连IP31.31.23.0/24、31.31.34.0/24以及OSPF聚合路由4.4.0.0/16分配implicitNull labels;为学习到的31.31.12.0/24以及4.4.4.4/32分配常规范围labels
LSR 4为直连IP31.31.34.0/24、4.4.4.4/32分配implicit Null labels;为各个学习到的OSPF前缀分配常规范围labels
(2)HUAWEI实现
华为设备为了节省label资源,默认只对直连主机IP分配labels。因此在如上网络环境中,只有4.4.4.4/32具有MPLS转发项
由于工作在Ordered LSP Control mode下,对于通过路由协议学习到的更新,只有在收到label mappings时,LSP上游设备才会为FEC分配local labels
在进行相关配置后,对于直连非主机前缀,LSR会为其分配implicit Null labels
对于静态路由只跟出口的情况,LSR也会为其分配labels,但是分配的是常规范围的labels
对于聚合路由,华为设备本地IP RIB中并不会产生指向Null 0的路由,因此不会分配labels
上图中,HUAWEI的MPLS实现
LSR 1默认不对31.31.12.0/24分配labels,进行相关配置后,为31.31.12.0/24分配implicitNull label;对于OSPF学习到的路由,收到remote bindings后才为其分配常规范围的labels
LSR 2同理
LSR 3上做了路由聚合,但是其IPRIB中只有4.4.4.4/32的路由,而不会像Cisco实现那样,产生4.4.0.0/16的路由。因此即便进行了相关配置,LSR 3也只会为31.31.23.0/24以及31.31.34.0/24分配implicit labels。在收到4.4.4.4/32的label mapping信息后,为其分配local label
LSR 4上由于4.4.4.4/32是主机路由,因此默认便会为其分配implicit label;而31.31.34.0/24在进行相关配置后才会为其分配
(3)HUAWEI设备所需的额外配置
[Huawei-mpls]lsp-trigger all //egress LSR上对所有静态路由及IGP获得的路由分配labels
[Huawei-mpls]lsp-trigger ip-prefix <id> //对前缀列表匹配的前缀触发分配labels
注意:
由于工作在Ordered LSP Control mode下,若egress LSR不分配labels,则LSP无法建立
3.Label的分发
3.1 何时分发
当LSR发现FEC,并且触发为其分配locallabels后,就将local binding分发给LDP对等体
3.2 Cisco与HUAWEI实现的区别
(1)Cisco
由于Cisco设备默认工作在Independent LSP Control mode下,因此Cisco LSR发现FEC后便能立即分配labels,并且直接通告给当前LSR的所有LDP peers
(2)HUAWEI
HUAWEI设备由于工作在OrderedLSP Control mode下,只有当前设备的直连IP会被分配labels,egress LSR分配完labels后,通告给所有LDP peers
LDP peers收到labelmappings后,才允许为发现的相关FEC分配local labels
Local labels分配完毕后,该LSP上游LSR向其所有LDP peers(包括通告mapping信息的设备)发送label mappings
4.Label的关联
4.1 LIB
(1)全称
Label Information Base
(2)作用
用于存放由邻居LSR通告的remote bindings
(3)查看命令
①Cisco
Router#show mpls ldp bindings //查看通过LDP获得的label信息
示例:
Router#show mpls ip binding //查看LIB
示例:
②HUAWEI
<Huawei>displaympls ldp lsp
示例:
4.2 关联实现原理
(1)Address message
①作用
辅助实现label关联
②何时发送
当LSRs之间的LDP对等体关系建立完毕后,LSR发送Address message
其中包含了该LSR设备的所有直连接口IP地址
(2)关联项的形成
LSR通过IP RIB或CEF FIB获取FEC,并为其分配local label,确定该FEC对应的IGP下一跳
当收到多个LSRs的mapping信息时,当前LSR通过IGP下一跳与LDP peer的boundaddress对比选取最佳LDP peer
当前LSR使用该FEC对应的local binding与最佳LDP peer通告的remote binding形成关联项
4.3 关联结果
(1)Cisco实现
序号 |
In |
Out |
Operation |
意义 |
① |
imp-null |
― |
无法形成关联项 |
egress LSR不会为对应的FEC形成关联项 |
② |
label |
imp-null |
Pop |
倒数第二跳设备提前弹出label |
③ |
label |
label |
Swap/Push |
ingress LSR将labels压栈 intermediate LSR对label进行交换 |
④ |
label |
NULL |
Untagged/no label |
LSP出现中断,应将label移除 |
⑤ |
NULL |
imp-null/label |
无法形成关联 |
当前设备无相关FEC |
注释:
imp-null――ImplicitNull label
label――常规范围的label
NULL――未收到该FEC相关的mapping信息
―――表示imp-null、label、none中任意一个
注意:
Untagged与no label是一样的,不同的IOS版本对其称谓有所不同
(2)HUAWEI实现
序号 |
In |
Out |
LIB |
LFIB |
① |
3 |
label |
3/NULL *Liberal/label |
只有关联项3/NULL,无转发作用 |
② |
3 |
NULL |
3/NULL |
只有关联项3/NULL,无转发作用 |
③ |
3 |
3 |
3/NULL *Liberal/3 |
只有关联项3/NULL,无转发作用 |
④ |
label |
3 |
label/3 NULL/3 |
label/3――实现Pop操作 NULL/3――转发IP packets用 |
⑤ |
label |
label |
label/label NULL/label |
label/label――实现swap操作 NULL/label――转发IP packets用 |
⑥ |
label |
NULL |
不存在该情况 |
不存在该情况 |
⑦ |
NULL |
label |
*Liberal/label |
无转发项 |
⑧ |
NULL |
3 |
*Liberal/3 |
无转发项 |
(3)小节
①HUAWEI设备由于工作在Ordered LSP Control mode下,不存在当前设备为FEC分配常规范围label但是未收到remote bindings的情况――Cisco的Untagged(No Label)不会在HUAWEI实现中发生
Cisco对于某个FEC的LSP建立会出现中断
HUAWEI对于某个FEC的LSP建立始终是连续的
②虽然HUAWEI与Cisco在label本地保存及关联上有许多差别,但是最后的效果是一致的
egress LSR不会为本地起源的FEC建立具有转发效应的关联项
当前设备如果没有发现某个FEC,不会为其建立转发项
默认都支持PHP
4.4 负载均衡的实现
当相关FEC在IP RIB或CEF FIB中存在多条出站路径时,来自这些路径的labels都将作为outgoing label与local binding形成关联项,加入到LFIB中
此时,一个FEC便可能对应多条LSP,具体转发与厂商的数据转发机制有关。如Cisco的MPLS实现中,此时的下一跳选择与CEF负载均衡转发机制有关
4.5 查看LFIB
(1)Cisco
Router#show mplsforwarding-table
示例:
(2)HUAWEI
<Huawei>displaympls lsp
示例: