发明内容
本发明提供选择MPLS TE Bypass隧道的方法及PLR、头节点,以实现主隧道可以根据时延、可靠性、CT、需要经过的节点之一或者任意组合来选择Bypass隧道。
本发明的技术方案是这样实现的:
一种选择多协议标签交换MPLS流量工程TE旁路Bypass隧道的方法,该方法包括:
本地修复节点PLR接收TE主隧道的头节点发来的路径Path消息,根据该消息携带的选择Bypass隧道的策略,在已有的快速重路由FRR备份隧道中选择满足该策略的Bypass隧道,或者创建满足该策略的Bypass隧道,所述策略指示对Bypass隧道的时延、可靠性、带宽服务类型CT、需要经过的节点四者之一或任意组合有要求。
当所述选择Bypass隧道的策略指示对Bypass隧道的时延有要求时,
所述PLR在已有的FRR备份隧道中选择满足该策略的Bypass隧道包括:
针对以本节点作为PLR的任一条FRR备份隧道,PLR按照预设时间间隔检测该条隧道的时延,当检测次数达到预设次数时,对检测到的该条隧道的时延求平均值,将该平均值作为该条隧道的最终时延;PLR根据每条隧道的最终时延,选择满足所述策略的隧道作为Bypass隧道,
所述对Bypass隧道的时延有要求为:
要求具有最小时延的FRR备份隧道作为Bypass隧道,或者要求Bypass隧道的时延小于或等于预设阈值。
当所述选择Bypass隧道的策略指示对Bypass隧道的可靠性有要求时,
所述PLR在已有的FRR备份隧道中选择满足该策略的Bypass隧道包括:
针对以本节点作为PLR的任一条FRR备份隧道,PLR按照预设时间间隔检测该条隧道的连通性,当检测次数达到预设次数时,计算该条隧道的连通次数;PLR根据每条隧道的连通次数,确定各隧道的可靠性,选择满足所述策略的隧道作为Bypass隧道,
其中,隧道的连通次数越高表示隧道的可靠性越高。
当所述选择Bypass隧道的策略指示对Bypass隧道需要经过的节点有要求时,
所述Path消息携带Bypass隧道需要经过的各节点的IP地址;
所述PLR在已有的FRR备份隧道中选择满足该策略的Bypass隧道包括:
步骤A1、PLR从Path消息中顺序读取Bypass隧道需要经过的一个FRR域的第一个节点的IP地址,在本地记录的已创建的各FRR备份隧道的路径信息中查找该节点的IP地址,判断是否查找到,若是,执行步骤B1;否则,执行步骤C1;
步骤B1、PLR确定自身属于当前FRR域,将当前FRR域的所有节点信息从Path消息中剥离出来,将本PLR与当前FRR域的所有节点形成一条路径片段,若该路径片段位于本地记录的已创建的一条FRR备份隧道上,则将该隧道作为Bypass隧道,继续向下游传送该Path消息;否则,根据流量工程数据库TEDB中记录的MPLS网络信息,计算出一条通过该路径片段的路径,创建通过该路径的FRR备份隧道,并将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息;
步骤C1、PLR根据TEDB中记录的MPLS网络信息,计算一条通过当前FRR域的第一个节点的路径,若计算出,则确定本PLR属于当前FRR域,将当前FRR域的所有节点信息从Path消息中剥离出来,将本PLR与当前FRR域的所有节点形成一条路径片段,计算出一条通过该路径片段的路径,创建通过该路径的FRR备份隧道,并将该隧道作为Bypass隧道,继续向下游传送该Path消息;若未计算出,则确定本PLR不属于当前FRR域,返回步骤A1。
所述选择Bypass隧道的策略指示对Bypass隧道需要经过的节点有要求的同时,进一步包括:所述选择Bypass隧道的策略指示对Bypass隧道的时延和/或可靠性有要求,
步骤B1所述若该路径片段位于本地记录的已创建的一条FRR备份隧道上之后、将该隧道作为Bypass隧道之前进一步包括:
检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,不将该隧道作为Bypass隧道,继续向下游传送该Path消息;
步骤B1所述创建通过该路径的FRR备份隧道之后、将该隧道作为Bypass隧道之前进一步包括:
检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,删除该隧道,继续向下游传送该Path消息;
步骤C1所述创建通过该路径的FRR备份隧道之后、将该隧道作为Bypass隧道之前进一步包括:
检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,删除该隧道,继续向下游传送该Path消息。
一种MPLS TE隧道的PLR,包括:
Bypass隧道选择模块:接收TE主隧道的头节点发来的Path消息,根据该消息携带的选择Bypass隧道的策略,在已有的FRR备份隧道中选择满足该策略的Bypass隧道,所述策略指示对Bypass隧道的时延、可靠性、带宽服务类型CT、需要经过的节点四者之一或任意组合有要求。
当所述选择Bypass隧道的策略指示对Bypass隧道的时延有要求时,
所述Bypass隧道选择模块进一步用于,针对以本节点作为PLR的任一条FRR备份隧道,PLR按照预设时间间隔检测该条隧道的时延,当检测次数达到预设次数时,对检测到的该条条隧道的时延求平均值,将该平均值作为该条隧道的最终时延;PLR根据每条隧道的最终时延,选择满足所述策略的隧道作为Bypass隧道,
所述对Bypass隧道的时延有要求为:
要求具有最小时延的FRR备份隧道作为Bypass隧道,或者要求Bypass隧道的时延小于或等于预设阈值。
当所述选择Bypass隧道的策略指示对Bypass隧道的连通性有要求时,
所述Bypass隧道选择模块进一步用于,针对以本节点作为PLR的任一条FRR备份隧道,PLR按照预设时间间隔检测该条隧道的连通性,当检测次数达到预设次数时,计算该条隧道的连通次数;PLR根据每条隧道的连通次数,确定各隧道的可靠性,选择满足所述策略的隧道作为Bypass隧道,
其中,隧道的连通次数越高表示隧道的可靠性越高。
当所述选择Bypass隧道的策略指示对Bypass隧道需要经过的节点有要求时,
所述Bypass隧道选择模块进一步用于,发现接收到的Path消息携带Bypass隧道需要经过的各节点的IP地址,则执行如下步骤:
步骤A1、PLR从Path消息中顺序读取Bypass隧道需要经过的一个FRR域的第一个节点的IP地址,在本地记录的已创建的各FRR备份隧道的路径信息中查找该节点的IP地址,判断是否查找到,若是,执行步骤B1;否则,执行步骤C1;
步骤B1、PLR确定自身属于当前FRR域,将当前FRR域的所有节点信息从Path消息中剥离出来,将本PLR与当前FRR域的所有节点形成一条路径片段,若该路径片段位于本地记录的已创建的一条FRR备份隧道上,则将该隧道作为Bypass隧道,继续向下游传送该Path消息;否则,根据TEDB中记录的MPLS网络信息,计算出一条通过该路径片段的路径,创建通过该路径的FRR备份隧道,将该隧道作为Bypass隧道,继续向下游传送该Path消息;
步骤C1、PLR根据TEDB中记录的MPLS网络信息,计算一条通过当前FRR域的第一个节点的路径,若计算出,则确定本PLR属于当前FRR域,将当前FRR域的所有节点信息从Path消息中剥离出来,将本PLR与当前FRR域的所有节点形成一条路径片段,计算出一条通过该路径片段的路径,创建通过该路径的FRR备份隧道,将该隧道作为Bypass隧道,继续向下游传送该Path消息;若未计算出,则确定本PLR不属于当前FRR域,返回步骤A1。
当所述选择Bypass隧道的策略指示对Bypass隧道的时延和/或可靠性有要求时,
所述Bypass隧道选择模块进一步用于,步骤B1所述若该路径片段位于本地记录的已创建的一条FRR备份隧道上之后、将该隧道作为Bypass隧道之前进一步检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,不将该隧道作为Bypass隧道,继续向下游传送该Path消息;
步骤B1所述创建通过该路径的FRR备份隧道之后、将该隧道作为Bypass隧道之前进一步检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,删除该隧道,继续向下游传送该Path消息;
步骤C1所述创建通过该路径的FRR备份隧道之后、将该隧道作为Bypass隧道之前进一步检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,删除该隧道,继续向下游传送该Path消息。
一种MPLS TE主隧道的头节点,包括:
Bypass隧道选择策略配置模块:确定选择Bypass隧道的策略,该策略指示对Bypass隧道的时延、可靠性、CT、需要经过的节点四者之一或任意组合有要求,则在Path消息中携带该策略,将该Path消息发送出去,以便:PLR根据该Path消息携带的选择Bypass隧道的策略,在已有的FRR备份隧道中选择满足该策略的Bypass隧道,或者创建满足该策略的Bypass隧道。
与现有技术相比,本发明可以根据时延、可靠性、CT、需要经过的节点之一或者任意组合来选择Bypass隧道。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图5为本发明实施例一提供的选择MPLS TE Bypass隧道的方法流程图,如图5所示,其具体步骤如下:
步骤501:TE主隧道的头节点确定创建或选择Bypass隧道的策略,该策略指示对Bypass隧道的时延、可靠性、CT、需要经过的节点四者之一或任意组合有要求,则在Path消息中增加灵活备份控制(FACILITY_BACKUP_CONTROL)对象,该对象包含创建或优选Bypass隧道的策略,具体包括:时延要求、可靠性要求、CT要求、需要经过的节点要求之一或任意组合,将该Path消息发送出去。
图6为本发明实施例提供的Path消息中新增的FACILITY_BACKUP_CONTROL对象的结构示例图,如图6所示,各字段及其含义如下:
1)Class-Num:对象类型号。
由于FACILITY_BACKUP_CONTROL对象是新创建的对象,因此,其Class-Num的值要与已有对象的Class-Num值不同,本发明实施例中,Class-Num值可为206。若中间节点收到的Path消息中包含无法识别的对象且该对象值的二进制形式符合11bbbbbb格式,则中间节点需要将该对象原封不动地向下游传送。这样即使PLR无法识别该对象,也不会对TE主隧道造成任何影响。
2)C-Type:C类型。
由于FACILITY_BACKUP_CONTROL对象是新创建的对象,目前只有一种类型,因此,本发明实施例中,C-Type的值可为1。
3)Flags:FRR备份隧道的创建方式标志。
当前存在的创建FRR备份隧道的方式有两种:一对一备份(One-to-OneBackup)和Facility Backup,目前大多数厂商支持且较为流行的方式为灵活备份(Facility Backup)。Flags值为1表示TE主隧道期望的FRR备份隧道的方式为One-to-One Backup;Flags值为2表示TE主隧道期望的FRR备份隧道的方式为Facility Backup;Flags值为0则表示PLR将依据自己的策略创建FRR备份隧道。
4)TOS:服务类型(Type of Service)
该字段包括3比特(bit)的优先级子字段、4bit的TOS子字段和1bit的未用位但必须置0。其中3bit的优先级子字段预留给服务质量(QOS,Qualityof Service),TOS子字段分别代表:时延、最大吞吐量、高可靠性、最小费用。在本发明实施例中仅使用时延、高可靠性这两个bit位。
5)Interval:对于每条FRR备份隧道,PLR每隔Interval时长获取一组该隧道的数据。
本发明实施例中,Interval取值范围可为0~65535,单位为秒。0则表示不获取FRR备份隧道数据。
6)Delay:Bypass隧道的时延要求。
本发明实施例中,Delay的取值范围可为0~65535,单位为毫秒。0则表示主隧道要求具有最小时延的FRR备份隧道作为Bypass隧道;若为其他值,则表示主隧道要求Bypass隧道的时延要小于或等于该值。
7)Number:对于每条FRR备份隧道,PLR获取一组该隧道的数据时的检测次数。
本发明实施例中,Number的取值范围为1~255。为了保证获取到的数据的准确性,对于每组数据,PLR会在获取数据前检测多次,然后对获取到的各数据值求平均值或求和值,将该平均值或该和值作为该数据的最终值。
8)Multiple:对于每条FRR备份隧道,PLR获取Multiple组该隧道的数据。
对于每条FRR备份隧道,PLR获取Multiple组数据,然后进行Bypass隧道的计算和优选,取值范围为0~255。由于网络状况的变化性,若PLR在获取每组备份隧道数据后都进行Bypass隧道的计算和优选,一旦主隧道或者备份隧道较多,则会对PLR造成一定的负担。若Multiple为0,表示主隧道在获取备份隧道的数据后立即进行Bypass隧道的计算和优选;若为其它值,表示主隧道优选Bypass隧道的时间间隔为Multiple×Interval,这里的interval即5)中的interval。
9)CT:服务类型。
本发明实施例中,CT占4个bit位,若第一个bit位被设置,则表示TE主隧道对备份隧道的CT类型有要求,后三个bit位的值则表示主隧道对备份隧道的CT要求为该值。
10)Subobjects:子对象。
表示Bypass隧道需要经过的节点,内容是路径上的节点IP地址。一个FACILITY_BACKUP_CONTROL对象中可能包含多个子对象,子对象的个数可由FACILITY_BACKUP_CONTROL对象的Length字段、一个子对象的标准长度算出。
图7为FACILITY_BACKUP_CONTROL对象中的Subobjects的结构示意图,如图7所示,各字段及其含义如下:
101)L:子对象节点的类型。
子对象节点的类型有两种:严格或者松散。本发明实施例中,若L位被设置,则为松散节点,表示当前处理该对象的节点(即收到包含Subobjects的Path消息的节点,可能是PLR或者备份隧道路径上的节点)与下一跳节点(即该Path消息中的该子对象节点)不一定直连,但路由可达;若L位被清除,则为严格节点,表示当前处理该对象的节点与下一跳节点直连,而且路由可达。
102)Type:Bypass隧道需要经过的节点类型。
Bypass隧道需要经过的节点类型有3种,具体如下:
本发明实施例中,Type值为1表示IPv4节点;Type值为2表示IPv6节点;Type值为3表示自治系统号。其中,若为自治系统号,则表示Bypass隧道需要经过的节点为一个域,即Bypass隧道需要跨域。
103)Length:子对象的长度。
单位为字节。若子对象类型为IPv4则Length值为8字节,若子对象类型为IPv6则为20字节,若子对象类型为自治系统号则为4字节。
104)FRR Field:FRR域。
从PLR到MP,称为一个FRR域。若子对象列表中多个节点的FRR域值相同,则表示Bypass隧道需要经过这些节点。主隧道上可能会有多个FRR域,这取决于整个网络的部署情况。
105)Subobject contents:子对象内容。
其长度可根据节点类型确定。例如:当节点为IPv4节点时,Subobjectcontents值为4个字节的IP地址、1个字节的前缀长度(即子网掩码)、1个字节的预留字段。
步骤502:当PLR收到携带FACILITY_BACKUP_CONTROL对象的Path消息时,根据该对象指示的创建或优选Bypass隧道的策略,来选择或创建满足该策略的Bypass隧道。
FACILITY_BACKUP_CONTROL对象中可能包含时延要求、可靠性要求、CT要求、需要经过的节点要求中的一个或任意组合,以下给出具体实施例:
图8为本发明实施例二提供的当主隧道的头节点对Bypass隧道的时延、可靠性和CT有要求时,选择Bypass隧道的方法流程图,如图8所示,其具体步骤如下:
步骤801:TE主隧道的头节点确定选择Bypass隧道的策略,该策略指示对Bypass隧道的时延、可靠性和CT有要求,则在Path消息中增加FACILITY_BACKUP_CONTROL对象,并根据时延要求填充该对象的TOS字段和Delay字段,根据可靠性要求填充该对象的TOS字段,根据CT要求填充该对象的CT字段,同时填充该对象的Interval、Number、Multiple字段值,将该Path消息发送出去。
步骤802:PLR接收Path消息,从该消息中读取FACILITY_BACKUP_CONTROL对象的TOS、Delay、CT、Interval、Number、Multiple字段的值,得知:主隧道的头节点对Bypass隧道的时延、可靠性和CT要求,则建立MPLS Ping数据库。
若PLR之前已经建立了MPLS Ping数据库,则本步骤无需再建立。MPLSPing数据库初始建立时内容为空。
步骤803:该PLR根据Interval和Multiple字段值,针对以本节点作为PLR的每条FRR备份隧道,每隔Interval时长获取一组该隧道的时延值、连通次数值,直至获取到Multiple组该隧道的时延值、连通次数值为止。其中,在获取每组该隧道的时延值、连通次数值时,连续进行Number次获取,对获取到的Number个时延值求平均,得到本组数据中该隧道的时延值,计算该Number次获取过程中该隧道的总连通次数,将该总连通次数作为本组数据中该隧道的连通次数值。
具体地,对于每条FRR备份隧道,PLR可通过在该条隧道上传送MPLSECHO报文来得知该隧道的时延。
图9给出了本发明实施例中计算FRR备份隧道的时延和连通次数的示例图,在图9中,存在一条FRR备份隧道:B->C->D,则该备份隧道的时延和连通次数可通过如下步骤得到:
步骤01:PLR B向MP D发送MPLS ECHO报文,其中,报文的发送时间戳(TimeStamp Sent)字段值为节点B发出MPLS ECHO报文的时刻。
图10给出了MPLS ECHO报文的格式示意图,其中,TimeStamp Sent字段由发送端填写,即发送端发送MPLS ECHO报文的时刻;接收时间戳(TimeStamp Received)字段由接收端填写,即接收端接收到该MPLS ECHO报文的时刻,这样,发送端接收到接收端返回的MPLS ECHO报文后,就可得到FRR备份隧道的时延值=TimeStamp Received-TimeStamp Sent。
步骤02:节点D接收到MPLS ECHO报文,将报文的接收时刻填充到该报文的TimeStamp Received字段,将该报文返回给节点B。
步骤03:节点B接收该MPLS ECHO报文,读取报文的TimeStamp Sent和TimeStamp Received字段值,得到FRR备份隧道的时延值=TimeStampReceived-TimeStamp Sent。
对于每条FRR备份隧道,PLR可通过在该条隧道上发出MPLS Request报文、并通过是否接收到MP返回的MPLS Reply报文来确定该隧道的连通性。
步骤804:针对以本节点作为PLR的每条FRR备份隧道,PLR对该隧道的Multiple个时延值求平均,得到该隧道的最终时延值,对该隧道的Multiple个连通次数值求和,得到该隧道的最终连通次数值,将各条隧道的隧道标识、时延值、连通次数值写入MPLS Ping数据库。
步骤805:PLR根据计算得到的各隧道的最终时延值和连通次数值,以及FACILITY_BACKUP_CONTROL对象指示的时延、可靠性要求,判断是否有隧道满足该要求,若是,执行步骤806;否则,执行步骤807。
隧道的可靠性由隧道的连通次数值来衡量。一条隧道的连通次数值越高,表明该隧道的可靠性越高。
步骤806:PLR将满足要求的隧道作为Bypass隧道,继续向下游传送该Path消息,本流程结束。
步骤807:PLR保持当前状态不变,继续向下游传送该Path消息。
对于本步骤807,若PLR自身已经绑定了一条Bypass隧道,则仍然保持该Bypass隧道不变;若PLR未绑定Bypass隧道,也仍然保持该状态不变。
图11为本发明实施例三提供的当主隧道的头节点对Bypass隧道经过的节点有要求时,创建或选择Bypass隧道的方法流程图,如图11所示,其具体步骤如下:
步骤1101:TE主隧道的头节点确定创建或选择Bypass隧道的策略,该策略指示了Bypass隧道需要经过的节点,则在Path消息中增加FACILITY_BACKUP_CONTROL对象,并将Bypass隧道需要经过的各节点的类型L、类型Type、FRR域标识、IP地址等填充到该对象的Subobjects字段,将该Path消息发送出去。
例如:如果一个节点具备流量统计功能,且TE主隧道期望Bypass隧道经过该节点,从而能够进行流量统计等相关操作,这样就会将该节点作为Bypass隧道需要经过的节点。
步骤1102:PLR接收该Path消息,发现该消息中的FACILITY_BACKUP_CONTROL对象的Subobjects字段不为空,则建立LSP数据库(LSPDB)。
若PLR之前已经建立了LSPDB,则本步骤无需再建立。LSPDB数据库初始建立时内容为空。
LSPDB记录了每条备份隧道的路径信息,例如Tunnel1:R1->R2->R3。通过RSVP-TE报文中的record对象(该对象会记录报文沿途经过的节点IP地址),LSPDB能够知道TE隧道经过的节点的IP地址,从而知道隧道的具体路径。
步骤1103:该PLR从Path消息的Subobjects字段顺序读取一个FRR域的第一个子对象节点的IP地址,在本地LSPDB中查找当前FRR域的第一个子对象节点的IP地址,判断是否查找到,若是,执行步骤1104;否则,执行步骤1109。
步骤1104:该PLR确定自身属于当前FRR域,将当前FRR域的所有子对象节点信息从Path消息的Subobjects字段剥离出来,将本PLR与当前FRR域的所有子对象节点形成一条路径片段,在本地LSPDB中查找是否存在经过该路径片段的FRR备份隧道,若是,执行步骤1105;否则,执行步骤1106。
例如:设PLR从Path消息的Subobjects字段读取的是FRR域a的第一个子对象节点的IP地址,且发现该子对象节点位于本地LSPDB中的一条FRR备份隧道上,则可确定本PLR属于FRR域a。
PLR的本地LSPDB中记录的每条备份隧道的路径上的节点都属于同一FRR域,该FRR域即PLR所在FRR域,因此若一个子对象节点的IP地址在该LSPDB中,则说明PLR与该子对象节点位于同一FRR域。
步骤1105:该PLR将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息,本流程结束。
步骤1106:该PLR根据TEDB中记录的MPLS网络信息,计算一条通过该路径片段的路径,判断是否计算成功,若是,执行步骤1107;否则,执行步骤1108。
TEDB保存了整个MPLS网络中的节点、链路带宽、链路权值、着色等信息。当TE主隧道或者备份隧道需要满足某些条件(如带宽)来创建时,则PLR会依据TEDB计算符合条件的TE隧道,所以在本发明中,不会对TEDB进行修改,仅仅只是利用该数据库中的信息计算路径。
步骤1107:该PLR创建通过该路径的FRR备份隧道,将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息,本流程结束。
本步骤中,PLR在新建FRR备份隧道时,需要根据FACILITY_BACKUP_CONTROL对象中的Flags、CT字段值等来创建。
PLR需要将新建的FRR备份隧道的路径信息写入LSPDB。
步骤1108:该PLR继续向下游传送该Path消息,本流程结束。
步骤1109:该PLR根据TEDB中记录的MPLS网络信息,计算一条通过当前FRR域的第一个子对象节点的路径,判断是否计算成功,若是,执行步骤1110;否则,执行步骤1113。
步骤1110:该PLR确定自身属于当前FRR域,将当前FRR域的所有子对象节点信息从Subobjects字段剥离出来,将本PLR与当前FRR域的所有子对象节点形成一条路径片段,根据TEDB中记录的MPLS网络信息,计算一条通过该路径片段的路径,判断是否计算成功,若是,执行步骤1111;否则,执行步骤1112。
步骤1111:该PLR创建通过该路径的FRR备份隧道,将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息,本流程结束。
PLR需要将新建的FRR备份隧道的路径信息写入LSPDB。
步骤1112:该PLR继续向下游传送该Path消息,本流程结束。
步骤1113:该PLR确定自身不属于当前FRR域,转至Subobjects字段的下一个FRR域,返回步骤1103。
对于步骤1113,若当前FRR域已经是Subobjects字段的最后一个FRR域,则直接结束本流程即可。
需要说明的是,若Subobjects字段中的所有子对象节点的IP地址都被剥离出来,则PLR会将Subobjects字段剥离出来。若Path消息中的FACILITY_BACKUP_CONTROL对象的所有字段都已被处理完毕,如:TE隧道头节点只对Bypass隧道需要经过的节点有要求,且Subobjects字段中的所有子对象节点都已被处理完毕,则PLR会将FACILITY_BACKUP_CONTROL对象从Path消息中剥离,此时的Path消息与现有的Path消息相同。
图12为本发明实施例四提供的当主隧道的头节点对Bypass隧道的时延、需要经过的节点都有要求时,创建或选择Bypass隧道的方法流程图,如图12所示,其具体步骤如下:
步骤1201:TE主隧道的头节点确定创建或选择Bypass隧道的策略,该策略指示了对Bypass隧道的时延、需要经过的节点有要求,则根据时延要求填充该对象的TOS字段和Delay字段,同时填充该对象的Interval、Number、Multiple字段值,将Bypass隧道需要经过的各节点的类型L、类型Type、FRR域标识、IP地址等填充到该对象的Subobjects字段,将该Path消息发送出去。
步骤1202:PLR接收Path消息,从该消息中读取FACILITY_BACKUP_CONTROL对象的TOS、Delay、Interval、Number、Multiple字段的值,得到:对Bypass隧道的时延要求,建立MPLS Ping数据库,发现FACILITY_BACKUP_CONTROL对象的Subobject字段内容不为空,则建立LSPDB。
若PLR已建立MPLS Ping数据库,则无需再建立;同样,若已建立LSPDB,也无需再建立。MPLS Ping数据库和LSPDB数据库初始建立时,内容都为空。
步骤1203:该PLR从Path消息的Subobjects字段顺序读取一个FRR域的第一个子对象节点的IP地址,在本地LSPDB中查找当前FRR域的第一个子对象节点的IP地址,判断是否查找到,若是,执行步骤1204;否则,执行步骤1209。
步骤1204:该PLR确定自身属于当前FRR域,将当前FRR域的所有子对象节点信息从Path消息的Subobjects字段剥离出来,将本PLR与当前FRR域的所有子对象节点形成一条路径片段,在本地LSPDB中查找是否存在经过该路径片段的FRR备份隧道,若是,执行步骤1205;否则,执行步骤1206。
步骤1205:该PLR根据Interval、Number和Multiple字段值,检测该FRR备份隧道的时延值,若该时延值满足Path消息的FACILITY_BACKUP_CONTROL对象指示的时延要求,则将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息,本流程结束;否则,继续向下游传送该Path消息,本流程结束。
步骤1206:该PLR根据TEDB中记录的MPLS网络信息,计算一条通过该路径片段的路径,判断是否计算成功,若是,执行步骤1207;否则,执行步骤1208。
步骤1207:该PLR创建通过该路径的FRR备份隧道,根据Interval、Number和Multiple字段值,检测该FRR备份隧道的时延值,若该时延值满足Path消息的FACILITY_BACKUP_CONTROL对象指示的时延要求,则将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息,本流程结束;否则,删除该FRR备份隧道,继续向下游传送该Path消息,本流程结束。
若新建的FRR备份隧道被保留,即被作为Bypass隧道,则PLR需要将该隧道的路径信息写入LSPDB。
步骤1208:该PLR继续向下游传送该Path消息,本流程结束。
步骤1209:该PLR根据TEDB中记录的MPLS网络信息,计算一条通过当前FRR域的第一个子对象节点的路径,判断是否计算成功,若是,执行步骤1210;否则,执行步骤1213。
步骤1210:该PLR确定自身属于当前FRR域,将当前FRR域的所有子对象节点信息从Subobjects字段剥离出来,将本PLR与当前FRR域的所有子对象节点形成一条路径片段,根据TEDB中记录的MPLS网络信息,计算一条通过该路径片段的路径,判断是否计算成功,若是,执行步骤1211;否则,执行步骤1212。
步骤1211:该PLR创建通过该路径的FRR备份隧道,根据Interval、Number和Multiple字段值,检测该FRR备份隧道的时延值,若该时延值满足Path消息的FACILITY_BACKUP_CONTROL对象指示的时延要求,则将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息,本流程结束;否则,删除该FRR备份隧道,继续向下游传送该Path消息,本流程结束。
若新建的FRR备份隧道被保留,即被作为Bypass隧道,则PLR需要将该隧道的路径信息写入LSPDB。
步骤1212:该PLR继续向下游传送该Path消息,本流程结束。
步骤1213:该PLR转至Subobjects字段的下一个FRR域,返回步骤1203。
对于步骤1213,若当前FRR域已经是Subobjects字段的最后一个FRR域,则直接结束本流程即可。
以下给出本发明应用示例一:
如图13所示,其中TE主隧道为Tunnel1,路径为H->A->B->C。一条FRR备份隧道为Tunnel2,路径为A->E->C;另外一条FRR备份隧道为Tunnel3,路径为A->D->C。当前TE主隧道Tunnel1的Bypass隧道为Tunnel2。
若配置主隧道选择Bypass隧道的策略为:Bypass隧道的时延不能超过150ms、高可靠性。这时Tunnel1隧道的头节点H会发出携带FACILITY_BACKUP_CONTROL对象的Path消息,该对象内容如图14所示。各字段解析如下:
TOS:0xa,创建或优选Bypass隧道的策略为时延和高可靠性。
Delay:0x96,Bypass隧道的时延要小于150ms。
Number:PLR在获取每条FRR备份隧道的每组数据时需要检测三次。
Interval:PLR获取每条FRR备份隧道的每相邻两组数据的间隔时间为30s。
Multiple:对于每条FRR备份隧道,PLR需要获取三组数据来得到最终的数据。
PLRA在收到携带FACILITY_BACKUP_CONTROL对象的Path消息后,进行如下处理:
步骤01:在本地创建一个MPLS Ping数据库,该数据库记录每条FRR备份隧道的时延及连通次数,初始值都为0。
步骤02:由于FACILITY_BACKUP_CONTROL对象的Interval字段为30s且Number字段为3,则节点A在等待30s后对Tunnel2、Tunnel3获取第一组数据。在获取数据前会连续MPLS Ping三次,然后将这三次检测到的时延求平均值,连通次数累加。这样,得到的第一组数据(隧道标识,时延,连通次数)为:(Tunnel2,160ms,3)和(Tunnel3,152ms,3)。
步骤03:由于FACILITY_BACKUP_CONTROL对象的Multiple字段为3,则节点A需要获取三组备份隧道数据,即重复步骤02三次,这样,节点A获取到的第二组数据为(Tunnel2,149ms,3)和(Tunnel3,137ms,3),第三组数据为(Tunnel2,157ms,3)和(Tunnel3,144ms,3)。
步骤04:对获取到的三组数据进行计算,得到的最终结果为(Tunnel2,155ms,9)和(Tunnel3,144ms,9),该最终结果将会被写到MPLS Ping数据库中并维护。节点A根据此结果,优选Tunnel3作为主隧道Tunnel1的Bypass隧道。
以下给出本发明应用示例二:
如图15所示,被保护的LSP(Protected LSP)为:R1–>R2–>R3–>R4–>R5–>R10,主隧道存在三条FRR备份隧道,若配置主隧道创建或选择Bypass隧道的策略为:Bypass隧道需要经过R9、R11节点,这样,头节点R1将节点R9、R11的FRR域标识及IP地址放入Path消息的FACILITY_BACKUP_CONTROL对象的Subobjects字段中,将Path消息发送出去。
Subobjects字段如图16所示。
当PLR R2收到Path消息后,进行如下处理:
步骤01:R2从Path消息的FACILITY_BACKUP_CONTROL对象的Subobject字段中读取第一个子对象节点R9的IP地址,然后到本地LSPDB中查找R9节点,发现R9节点与自身在同一FRR域内,则PLR R2将属于该FRR域的所有子对象节点的IP地址从Path消息的Subobjects字段中剥离出来形成显示路径,并继续向下游传送Path消息。
该显示路径中,R9节点为松散节点,与R2节点路由可达,则Tunnel 1的路径将变为R2–>R8–>R9–>R4。由于R9所在FRR域的子对象节点的IP地址被全部剥离,则Path消息中的第一个子对象节点的IP地址变为了R11的IP地址。
步骤02:当PLR R4收到Path消息后,从FACILITY_BACKUP_CONTROL对象的Subobjects字段中读取第一个子对象节点R11的IP地址,然后到本地LSPDB中查找R11节点,未查找到,则再到TEDB中查找R11节点,发现R11节点与自身不在同一FRR域内,则不作进一步处理,继续向下游传送该Path消息。
步骤03:当PLR R5收到Path消息后,从FACILITY_BACKUP_CONTROL对象的Subobjects字段中读取第一个子对象节点R11的IP地址,然后到本地LSPDB中查找R11节点,发现R11节点与自身在同一FRR域内,则将属于该FRR域的所有子对象节点的IP地址从FACILITY_BACKUP_CONTROL对象的Subobjects字段中剥离出来形成显示路径,并继续向下游传送Path消息。
该显示路径中,R11节点为严格节点,与R5节点直连,则Tunnel3的路径将变为R5–>R11–>R10。同时,由于FACILITY_BACKUP_CONTROL对象的Subobjects字段中的子对象节点的IP地址被全部剥离了,Subobjects字段会被从FACILITY_BACKUP_CONTROL对象中剥离。
图17为本发明实施例提供的MPLS TE隧道的PLR,如图17所示,其主要包括:Bypass隧道选择模块171、MPLS Ping数据库172、LSPDB173,其中:
Bypass隧道选择模块171:接收TE主隧道的头节点发来的Path消息,读取该消息携带的选择Bypass隧道的策略,该策略指示对Bypass隧道的时延、可靠性、带宽CT、需要经过的节点四者之一或任意组合有要求。若发现该消息指示对Bypass隧道的时延和/或可靠性有要求,则检测各FRR备份隧道的时延和/或连通次数,将各隧道的标识及时延和/或连通次数写入MPLSPing数据库172,并在各隧道中选择满足该策略指示的时延和/或连通次数要求的隧道;若发现该消息指示对Bypass隧道需要经过的节点有要求,则在LSPDB173中查找满足该要求的隧道,若查找到,将该隧道作为Bypass隧道,否则,根据TEDB建立满足该要求的隧道,若建立成功,将该隧道标识及路径信息写入LSPDB173中,并将该隧道作为Bypass隧道;若发现该策略指示对Bypass隧道的CT有要求,则在建立FRR备份隧道时根据该CT值建立,并将建立的隧道的标识及路径信息写入LSPDB173。
MPLS Ping数据库172:保存各FRR备份隧道的时延和/或连通次数。
LSPDB173:保存各FRR备份隧道的路径信息。
其中,对于Bypass隧道选择模块171,当发现选择Bypass隧道的策略指示对Bypass隧道需要经过的节点有要求时,具体执行如下步骤:
A1、从Path消息中顺序读取Bypass隧道需要经过的一个FRR域的第一个子对象节点的IP地址,在LSPDB173记录的已创建的各FRR备份隧道的路径信息中查找该节点的IP地址,判断是否查找到,若是,执行步骤B1;否则,执行步骤C1;
B1、确定本PLR属于当前FRR域,将当前FRR域的所有子对象节点信息从Path消息中剥离出来,将本PLR与当前FRR域的所有子对象节点形成一条路径片段,若该路径片段位于LSPDB173记录的已创建的一条FRR备份隧道上,则将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息;否则,根据TEDB中记录的MPLS网络信息,计算出一条通过该路径片段的路径,创建通过该路径的FRR备份隧道,将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息;
C1、根据TEDB中记录的MPLS网络信息,计算一条通过当前FRR域的第一个子对象节点的路径,若计算出,则确定本PLR属于当前FRR域,将当前FRR域的所有子对象节点信息从Path消息中剥离出来,将本PLR与当前FRR域的所有子对象节点形成一条路径片段,根据TEDB中记录的MPLS网络信息,计算出一条通过该路径片段的路径,创建通过该路径的FRR备份隧道,将该FRR备份隧道作为Bypass隧道,继续向下游传送该Path消息;若未计算出,则确定本PLR不属于当前FRR域,返回步骤A1开始处理Path消息中Bypass隧道需要经过的下一个FRR域的第一个子对象节点的IP地址。
当选择Bypass隧道的策略指示同时对Bypass隧道的时延和/或可靠性、需要经过的节点有要求时,Bypass隧道选择模块171进一步用于,
步骤B1所述若该路径片段位于LSPDB173记录的已创建的一条FRR备份隧道上之后、将该FRR备份隧道作为Bypass隧道之前进一步检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,不将该隧道作为Bypass隧道,继续向下游传送该Path消息;
步骤B1所述创建通过该路径的FRR备份隧道之后、将该FRR备份隧道作为Bypass隧道之前进一步检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,删除该隧道,继续向下游传送该Path消息;
步骤C1所述创建通过该路径的FRR备份隧道之后、将该FRR备份隧道作为Bypass隧道之前进一步检测该隧道的时延和/或连通性,若该隧道的时延和/或连通性满足所述策略指示的时延和/或可靠性要求,则确定将该隧道作为Bypass隧道;否则,删除该隧道,继续向下游传送该Path消息。
以下给出本发明实施例提供的MPLS TE主隧道的头节点的组成,其主要包括:Bypass隧道选择策略配置模块,用于确定选择Bypass隧道的策略,该策略指示对Bypass隧道的时延、可靠性、CT、需要经过的节点四者之一或任意组合有要求,在Path消息中携带该策略,将该Path消息发送出去。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。