mLDP
mLDP(The multipoint extensions for Label Distribution Protocol)用来在IP/MPLS骨干网中承载组播业务,简化骨干网的部署复杂度。
产生原因
当前的核心网和骨干网通常使用IP/MPLS进行业务报文传输。对于单播报文而言,这种部署有很高的灵活性,并且提供了充分的可靠性和流量工程能力。
但是,随着网络应用的发展,出现了越来越多的组播的需求,这些需求包括IPTV、多媒体会议及实时网络游戏对战等。采用现有的点到点MPLS技术承载这些业务需要在数据发送方针对每个接收者都发送一份数据报文,这会极大的浪费网络带宽。
mLDP中的P2MP(point-to-multipoint)技术可以很好的解决上述问题,它对MPLS LDP协议进行扩展以满足建立点到多点传输路径的需求。
相关概念
如图3-21中所示,mLDP P2MP LSP的网络中包含如下一些概念。
名称 |
说明 |
相应对象 |
---|---|---|
根节点 |
Root节点,mLDP P2MP LSP的入口所在节点,为LSP路径计算及路径建立的发起者,组播报文将在此处被压入MPLS标签。 |
PE。 |
中间节点 |
Transit节点,mLDP P2MP LSP信令处理及报文转发的中继节点,MPLS报文在此处会进行标签的交换,同时此类节点有可能成为分叉节点。 |
|
叶子节点 |
Leaf节点,mLDP P2MP LSP的目的节点。 |
|
Bud节点 |
此类节点连接了客户侧设备,即是一条Sub-LSP的出节点也同时其他Sub-LSP的中间节点。 |
PE2。 |
分支节点 |
Branch节点,属于中间节点的一种,MPLS报文在此处将先进行复制,然后进行标签的交换操作。 |
P4。 |
实现过程
用户在设备上部署了mLDP后,mLDP会首先进行mLDP P2MP能力协商。LDP会话协商成功后,叶子节点及中间节点将向自己的上游发送标签映射消息,直到根节点收到下游节点发来的映射消息为止,即完成了mLDP P2MP LSP建立。
对于不同角色的节点而言,mLDP P2MP LSP删除将采取不同的规则,以保证删除的范围可控,对业务的影响最小。
当网络拓扑或网络的度量值变化时,mLDP P2MP LSP会根据变化的情况,采取一定的规则进行mLDP P2MP LSP更新,以保证更新的过程不影响业务。
mLDP P2MP能力协商
mLDP P2MP LSP建立
各节点角色的确定
- 叶子节点:通过用户配置进行指定,配置时需要指定叶子节点对应的根节点地址和Opaque Value。
- 中间节点:接收到P2MP标签映射消息的且LSR ID不等于根节点地址的任意节点。
- 根节点:节点的主机地址和LDP P2MP FEC中根节点地址相同的节点。
上游节点选择
mLDP P2MP LSP采用下游分配标签的方式,叶子节点和中间节点都需要向各自的上游节点发送Label mapping消息。叶子节点和中间节点选择到根节点的优选路由的下一跳作为自己的上游节点。
P2MP LSP的建立
如图3-25所示,当各节点的角色和各自的上下游关系确定后,会向各自的上游节点发送标签映射消息,并生成相应的转发表项。其中:- 叶子节点会直接向上游发送Label mapping消息,并生成相应转发表项。
- 中间节点接收到来自下游的Label mapping消息后,会查询是否给上游发送过标签映射消息。如果没有给上游发送过标签,则查询路由表,确定上游。如果上游和下游节点地址不重合,则发送Label mapping,如果重合,则不发送。如果已经发送过,则不需再次发送。最后生成对应的转发表项。
- 根节点收到下游发送的Label mapping消息后,会生成相应的转发表项。至此,一条P2MP LSP建立。
mLDP P2MP LSP删除
叶子节点
叶子节点向上游节点发送Label withdraw消息,上游节点会相应的回复Label release消息,拆除该叶子节点分支。如果此上游节点没有其它下游节点,则会继续向上游发送Label withdraw;如果上游节点有其它下游节点,则不再向上游发送Label withdraw消息。
中间节点
当中间节点故障或他的上游会话故障或者用户手动删除此节点时,中间节点的上游邻居会删除此中间节点的分支LSP。如果这个上游邻居还有其它下游分支,则不再向上游发送Label withdraw消息;如果没有其它下游节点,则会继续向上游发送Label release消息。
根节点
如果在根节点故障或者用户在其上执行了删除操作,将直接删除整条LSP。
mLDP P2MP LSP更新
叶子节点动态加入
当一条P2MP LSP建立之后,新增叶子节点的处理为:新增叶子节点和上游协商P2MP会话,会话建立后,新增叶子节点给上游发送标签,上游则直接添加该叶子节点分支,同时更新转发表项。
上游节点变更
如图3-26所示,如果一个节点Leaf2的上游节点从P4变为P2,为了避免产生LSP环路,Leaf2会先向P4发送Label withdraw消息撤销之前发送的标签,P4会删除Leaf2对应的下游分支及相应的转发表项;然后Leaf2会向P2发送Label mapping消息分配新的标签,P2上会创建到Leaf2的下游分支,生成转发表项。Make-before-break
一个LSR(非根节点)到根节点的最优路径因为链路恢复或者链路cost值改变(即该LSR到Root之间的老路径还是连通的)等原因发生变化时,这个LSR会选择新的上游,P2MP LSP也会随之更新。在更新过程中,流量会出现丢包。mLDP采用MBB(make-before-break)技术减少更新过程中的丢包。其处理过程如下:当节点给上游发送Mapping消息时,当且仅当收到上游回复的上游分支已完全建立的MBB Notification消息后,才认为新分支LSP建立成功,并开始删除老的分支。
其他功能
mLDP P2MP LSP支持作为NG MVPN和组播VPLS的公网隧道。这两种场景中,mLDP P2MP LSP由NGMVPN或者组播VPLS的信令触发建立,不需要用户进行叶子节点的手工配置触发。
适用场景
- 在IP/MPLS骨干网上承载IPTV业务。
- 承载组播VPN业务。
- 基于mLDP P2MP LSP的VPLS。
使用价值
- IP/MPLS骨干网的核心节点无需部署PIM(Protocol Independent Multicast)就可以承载组播业务,降低了网络部署的复杂度。
- 使IP/MPLS骨干网达到统一的MPLS信令和数据平面,同时也把单播和组播VPN的转发很好的统一起来。