美文网首页
MPLS VPN之LDP(2)

MPLS VPN之LDP(2)

作者: 虽然逆风依然不羁 | 来源:发表于2020-09-29 23:23 被阅读0次

    建立LSP有静态和动态两种方法,动态建立LSP需要路由器运行标签分发协议,LDP协议就是最重要的一个标签分发协议;

    在MPLS网络中,路由器通过运行LDP协议为每条内部路由映射一个标签,然后再将标签信息通告给所有邻居,路由器之间通过这种方式来建立标签转发表,最终形成LSP,当网络拓扑发生变化时,LDP还会实时地响应这种变化;

    一、LDP的基本概念


    1、标签空间

    LDP分配的标签空间有两种:

    (1)基于接口的标签空间

    每个接口通告的标签范围是唯一的,同一条FEC在不同接口通告的标签是不同的;

    (2)基于平台的标签空间,缺省采用此方式

    标签分配时并不是在每个接口下唯一,而是从整台LSR中来分配标签的,同一条FEC在不同接口通告的标签相同;

    2、上/下游LSR

    上游和下游是根据数据报文的流向来定义的,数据流总是由上游发往下游;

    3、PHP倒数第二跳弹出

    在MPLS网络的egress节点,首先需要对接收的报文查找标签转发表进行标签移除,然后查找FIB表进行转发,由于进行了两次查表操作,所以过程比较耗时,如果到达egress节点的流量较大,会对设备性能造成一定影响;

    为减轻egress节点的负担,标签在到达出站LER之前就被弹出,这样在报文到达egress节点时已经是IP报文了,只需要查找IP转发表就转发出去,提高了egress节点的工作效率;

    为使标签在到达egress节点之前就被弹出,使用了一个特殊的标签3,也叫隐式空标签,代表一种弹出操作而不是实际需要携带的标签;

    二、LDP报文


    LDP报文(除Hello报文外)是基于TCP的,端口号646,报文格式基于TLV的方式来封装,LDP报文分为头部和报文内容两部分;

    1、LDP报头及报文格式

    (1)Version:2字节,表示LDP协议版本号,目前LDP协议版本号为0x01;

    (2)PDU Length:2字节,表示PDU长度,不包括版本号和PDU长度字段;

    (3)LDP Identifier:6字节,前4字节表示LSR-ID地址,后2字节表示特定的标签空间;

    (1)U:1bit,未知TLV比特为0返回通知,为1忽略报文;

    (2)Message Type:14bit,表示报文所属的类型;

    (3)Message Length:2字节,表示报文长度,包括报文标识符、必选参数、可选参数;

    (4)Message ID:4字节,报文标识符,用于标识报文;

    (5)Mandatory Parameters:必选参数集;

    (6)Option Parameters:可选参数集;

    2、Hello报文

    LDP的Hello报文基于UDP来发送,发送目标地址224.0.0.2;

    用于发现邻居并用作后期邻居关系的维护;

    启用LDP的接口会周期性5s的发送,连续3次没有收到hello报文,认为邻居故障;

    hello报文携带保持时间等通用参数和发送方的传输地址,传输地址用于建立TCP连接;

    默认传输地址与LSR-ID相同,所以需要保证各自的LSR-ID一定要路由可达;

    3、Initialization报文

    Initialization报文用来协商LDP邻居会话参数,如标签的分发方式、防环机制和标签空间;

    4、Address报文

    用来向LDP邻居通告本端所有接口的IP地址,邻居可以通告IP转发表的下一跳地址来决定出站标签;

    5、标签通告报文

    用来向LDP邻居发布FEC和标签的绑定内容;

    一个标签通告可以发布多个标签消息;

    标签通告报文包括标签请求、标签撤销和标签释放报文;

    6、KeepAalive报文

    用来检测TCP会话的连通性,默认检测周期为15s,超时时间为45s;

    7、Notification报文

    用于向邻居报文具体的差错类型;

    三、LDP会话的建立过程


    LDP会话是基于TCP连接的,所以建立TCP连接之前必须知道邻居的IP地址,根据获知邻居IP地址的方式将LDP会话分成两类:

    (1)本地LDP会话        组播hello报文自动发现,建立会话的两个LSR之间是直连的;

    (2)远端LDP会话        手工指定邻居地址,单播发送hello,可以直连,也可以非直连;

    LDP状态机和邻居建立过程

    1、non-existent    周期性发送Hello报文,地址大的一方发起TCP连接,建立成功进入Initialized;

    2、initialized        发送Initial报文,进入Opensent;

    3、opensent          收到对方Initial报文,进入Openrec;

    4、openrec            发送KeepAlive报文,收到KeepAlive进入Operational;

    5、Operational        可以交换标签通告报文了;

    在会话建立后,双方会周期(5s)发送Hello报文以检测邻居状态,也会周期(15s)发送KeepAlive报文来检测TCP连接状态;

    四、LDP标签的发布和管理

    LDP会话建立后,LDP协议开始交换标签映射等报文,用于建立LSP;

    1、标签发布方式

    标签发布方式指下游LSR发布标签映射通告时,是否需要上游LSR先发送请求;

    标签发布方式分为DU下游自主和DoD下游按需两种方式;

    (1)DU下游自主    Downstream Unsolicited    缺省此方式

    在DU下游自主模式下,建立LDP会话后,下游主动向上游发布标签映射通告报文,不需要上游先发送标签请求;

    DU下游自主模式下,下游主动发送标签,因此会建立大量的LSP,这些LSP中有可能是不需要的,会有更多的LDP报文和占用更多的存储空间;

    华为默认情况下只对路由表中的32为掩码路由进行标签映射并通告,可以使用命令lsp-trigger修改触发标签的策略;

    (2)DoD下游按需    Downstream On Demand

    在DoD下游按需模式下,下游LSR必须收到上游LSR的标签请求报文后,才会发送上游LSR所请求FEC对应的标签映射信息;

    DoD下游按需模式需要进行标签请求,所以会带来额外的资源开销;

    2、标签分配的控制方式        可以保证LSP是否连续

    标签分配的控制指下游给上游发布标签时的条件,是否要求下游LSR在向上游LSR发布标签时一定要收到自己下游LSR的标签;

    标签控制方式有两种:独立控制方式和有序控制方式;

    (1)独立控制方式

    在独立控制方式下,LSR在没有收到自己下游LSR标签的情况下,就能向上游通告标签映射消息;

    因为LSR没有收到自己下游LSR标签就能向上游通告标签,所以可能出现到目地网络的LSP不连续问题;

    (2)有序控制方式    缺省此方式

    有序控制方式下,LSR必须收到下游LSR的标签,才可以向上游通告标签映射信息;

    建立LSP的效率会受影响,但是可以确保整条LSP是连续的;

    3、标签的保持方式        可以提高收敛速度

    标签保持方式指当一台LSR收到来自多个LDP邻居的标签映射通告时,是否将这些标签信息都保存到数据库中;

    标签的保持方式有两种:保守保存和自由保存;

    (1)保守方式

    对于特定一条FEC,即使从多个LDP邻居都收到了标签映射,该LSR只会将最优的标签保留下来;

    拥有IP转发表中下一跳地址的LDP邻居通告的标签为最优标签,也是最终保留的标签;

    (2)自由方式    缺省此方式

    保存下所有的标签,这样做的好处是当网络发生故障时,可以立刻使用新的标签计算出新的LSP,收敛比较快,缺点是占用更多的数据库空间;

    五、LDP的环路检测

    在三层网络中使用的每种动态路由技术都有各自的防环机制,LDP协议也有防环机制;

    因为三层路由技术已经避免了路由环路,LDP协议又是基于路由来分配标签和建立LSP的,所以这时报文通过LSP进行转发是不会出现环路的,华为VRP系统默认也不开启LDP防环功能;

    1、规定最大跳数

    LDP报文没经过一个LSR,LSR都在跳数TLV中增加一跳,当跳数达到最大值后,环路就被检测到,从而终止LSP的建立;

    2、路径矢量法

    当一台LSR收到LDP报文后,就会将自己的LSR-ID添加到报文中,如果收到的LDP报文已经有了本地的LSR-ID,则认为出现了环路,终止建立LSP;

    3、TTL

    MPLS报文每经过一台LSR,标签中的TTL减1,当TTL减少到0的时候,报文最终被丢弃,通过这种方法防止数据包无限循环转发;

    六、LDP和IGP同步

    存在主备链路组网的环境中,当主链路出现故障又从故障中恢复后,业务流量会从备用链路切换到主链路,在这个过程中,IGP协议收敛速度要快于LDP协议,这就会导致旧的LSP已经删除,而新的LSP还没建立好,这期间MPLS业务将会中断数秒的问题;

    LDP和IGP同步就是为解决主链路故障恢复后流量回切的问题,为使LDP和IGP同步,在新的LSP建立好之前,继续保留旧的LSP,流量继续在旧的LSP上转发,只有在新的LSP建立好之后流量才完全切换过来;

    LDP和IGP同步过程需要使用以下三个定时器:

    1、hold-down

    2、hold-max-cost

    3、delay

    在主链路故障恢复后,

    (1)启动hold-down定时器,IGP不收发hello报文,抑制邻居关系的建立;

    (2)hold-down定时器超时后,启动hold-max-cost定时器,IGP建立邻居并在主链路通告接口的最大metric值;

    (3)故障链路LDP会话建立后,启动delay定时器等待LSP的建立,delay定时器超时后,LDP通知IGP同步流程结束;

    配置命令:

    int gi0/0/0

    ospf ldp-sync

    相关文章

      网友评论

          本文标题:MPLS VPN之LDP(2)

          本文链接:https://www.haomeiwen.com/subject/vuajuktx.html