CN102497309B - 一种ldp远程邻居配置方法及设备 - Google Patents

一种ldp远程邻居配置方法及设备 Download PDF

Info

Publication number
CN102497309B
CN102497309B CN201110394628.0A CN201110394628A CN102497309B CN 102497309 B CN102497309 B CN 102497309B CN 201110394628 A CN201110394628 A CN 201110394628A CN 102497309 B CN102497309 B CN 102497309B
Authority
CN
China
Prior art keywords
abr
jumping
root node
router
forwarding jumping
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110394628.0A
Other languages
English (en)
Other versions
CN102497309A (zh
Inventor
赵昌峰
马臻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201110394628.0A priority Critical patent/CN102497309B/zh
Publication of CN102497309A publication Critical patent/CN102497309A/zh
Application granted granted Critical
Publication of CN102497309B publication Critical patent/CN102497309B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开LDP远程邻居配置方法及设备,应用于多区域网络,各区域中设置有代理设备;该方法包括:路由器接收到对端的LDP报文后或向对端发起LDP报文时,计算到对端的转发跳数,若该转发跳数在指定范围内,则与对端建立LDP邻居;其中,所述路由器计算到对端的转发跳数包括:以对端地址作为目的地址进行路由匹配,并在匹配到路由后判断该路由的类型;如果是区域内路由,则根据所述目的地址确定计算转发跳数的根节点,并计算所述根节点到所述路由器的转发跳数;如果是区域间路由,则通过代理设备获得根节点到所述路由器的转发跳数;其中,所述根节点是根据所述目的地址确定出来的。采用本发明可提高配置LDP远程邻居的安全性。

Description

一种LDP远程邻居配置方法及设备
技术领域
本发明涉及通信技术领域,尤其涉及一种LDP远程邻居配置方法及设备。
背景技术
LDP(LabelDistributionProtocol,标记分发协议)作为MPLS(MultiprotocolLabelSwitching,多协议标签交换)基础协议,在运营商等领域得到广泛应用。
LDP对等体发现机制分为两种:
基本发现机制:用于发现本地的LDP对等体,即通过链路层直接相连的LSR(LabelSwitchRouter,标签交换路由器)。这种方式下,LSR周期性地向“子网内所有路由器”的组播地址224.0.0.2发送LDP链路Hello消息,以便链路层直接相连的LSR发现此LDP对等体。
扩展发现机制:用于发现远端的LDP对等体,即不通过链路层直接相连的LSR。这种方式下,LSR周期性地向指定的IP地址发送LDP目标Hello消息,以便指定IP地址对应的LSR发现此LDP对等体。
其中,扩展发现机制在L2VPN(VirtualPrivateNetwork,虚拟专用网)等组网中的到大量应用,通过这一机制实现远程PE(ProviderEdge,运营商边缘)设备之间信息互通,例如承载L2VPN信息。但是这一机制也为LDP带来一些风险。例如,攻击者可以伪造LDP协议报文,向LSR发送大量伪造报文,造成LDP邻居信息或其他协议协商错误,LSRCPU繁忙等。
发明内容
本发明提供一种LDP远程邻居配置方法及设备,用以提高LDP远程邻居配置的安全性。
本发明提供的LDP远程邻居配置方法,应用于多区域网络,各区域中设置有代理设备,该方法包括:
路由器接收到对端发送的LDP报文后计算到对端的转发跳数,若该转发跳数在指定范围内,则与对端建立LDP邻居;或者,路由器向对端发送LDP报文后计算到对端的转发跳数,若该转发跳数在指定范围内,则在接收到对端响应的LDP报文后与对端建立LDP邻居;
其中,所述路由器计算到对端的转发跳数包括:
所述路由器以对端地址作为目的地址进行路由匹配,并在匹配到路由后判断该路由的类型;
如果是区域内路由,则所述路由器根据所述目的地址确定计算转发跳数的根节点,并计算所述根节点到所述路由器的转发跳数;
如果是区域间路由,则所述路由器通过代理设备获得计算转发跳数的根节点到所述路由器所在区域的入口ABR的转发跳数,并在所述转发跳数基础上加上所述入口ARB到所述路由器的转发跳数,得到所述根节点到所述路由器的转发跳数;其中,所述根节点是根据所述目的地址确定出来的。
本发明提供的路由器,应用于多区域网络,各区域中设置有代理设备,该路由器包括收发模块、LDP模块和OSPF模块,所述OSPF模块包括控制单元、路由匹配单元、计算单元,其中:
所述LDP模块,用于在所述收发模块接收到对端发送的LDP报文后,请求所述OSPF模块计算本路由器到对端的转发跳数,当OSPF模块返回的转发跳数在指定范围内时与对端建立LDP邻居,或者,在所述收发模块向对端发送LDP报文后请求所述OSPF模块计算本路由器到对端的转发跳数,当所述收发模块接收对端回应的LDP报文,且所述OSPF模块返回的转发跳数在指定范围内时与对端建立LDP邻居;以及,在接收到所述OSPF模块发送的代理请求时,指示所述收发模块向代理设备发送代理请求,并在所述收发模块接收到所述代理设备返回的代理响应后发送给所述OSPF模块,所述代理响应中携带有计算转发跳数的根节点到本路由器所在区域的入口ABR的转发跳数,其中,所述根节点是根据所述目的地址确定出来的;
所述控制单元,用于根据所述LDP模块发送的计算转发跳数的请求,指示所述路由匹配单元进行路由匹配,并在匹配到区域内路由时向所述计算单元发送第一指示;在匹配到区域间路由时向所述LDP模块发送代理请求,接收所述LDP代理设备返回的代理响应,并向所述计算单元发送第二指示;
所述路由匹配单元,用于所述控制单元的指示,以对端地址作为目的地址进行路由匹配;
所述计算单元,用于接收到所述控制单元的第一指示后,根据所述目的地址确定计算转发跳数的根节点,计算所述根节点到本路由器的转发跳数,并将其返回给所述LDP模块;根据所述控制单元的第二指示,在所述代理响应中携带的转发跳数基础上加上所述入口ARB到所述路由器的转发跳数,得到所述根节点到本路由器的转发跳数,并将其返回给所述LDP模块。
与现有技术相比,本发明的有益技术效果包括:
本发明通过路由器在接收到对端发送的LDP报文后计算到对端的转发跳数,或者,在向对端发送LDP报文后计算到对端的转发跳数,并在该转发跳数在指定范围内时,与对端建立LDP邻居,从而提高了LDP远程邻居配置的安全性。
附图说明
图1为本发明实施例适用的网络架构示意图;
图2为本发明实施例一提供的远程LDP邻居建立流程示意图;
图3为图2所示流程中根据目的地址确定技术转发跳数的根节点的流程示意图;
图4A、图4B或图4C分别为图2流程中的区域间代理反向TTL计算流程示意图;
图5为本发明实施例提供的LDP代理设备的处理流程示意图;
图6为本发明实施例二提供的代理表更新流程示意图;
图7为本发明实施例提供的具体应用场景的示意图;
图8为本发明实施例提供的路由器的结构示意图。
具体实施方式
在LDP远程邻居配置过程中,当网络设备接收到LDP协议报文后,通常是基于TTL是否合理来验证该LDP协议报文是否合法。而TTL是否合理,关键是要通过判断对端设备到本端设备的距离来确定,这里的距离是指转发跳数。为此,本发明实施例提供了一种在LDP远程邻居配置过程中,通过精确确定对端设备到本端设备的距离,从而验证LDP协议报文合法性,进而根据LDP协议报文的合法性进行LDP远程邻居配置的机制。该机制可应用于网络设备需要对接收到的LDP协议报文的合法性进行验证的业务流程中。如在扩展发现机制中,本端LSR接收到对端发送的LDPTargetHello报文(LDP目的发现报文)后需要验证该报文的合法性,即判断本端LSR与对端之间的距离是否合理,并在验证通过后与对端建立LDP邻居。
本发明实施例可适用于IGP(InteriorGatewayProtocol,内部路由协议)为OSPF(OpenShortestPathFirst,开放最短路径优先)协议的情况,通过对LDP协议和OSPF协议进行扩展,以达到上述目的。
下面结合附图对本发明实施例进行详细描述。
参见图1,为本发明实施例适用的网络架构示意图。如图所示,Area0为主干区域,Area1~4分别为分支区域。
通过扩展LDP协议和OSPF协议,分支区域内的路由器可通过反向TTL计算得到对端路由器到自身的距离。为了支持区域间反向TTL计算,需要在各区域中部署LDP代理设备。LDP代理设备之间像普通的远程LDP邻居一样通过TCP(TransmissionControlProtocol,传输控制协议)建立邻居关系;如果两台路由器之间只有代理能力没有普通远程邻居,则在此邻居建立后,邻居之间不会传输其他信息,而只传输反向TTL计算相关的代理请求或响应等信息。
其中,分支区域中部署的LDP代理设备称为区域LDP代理设备(以下简称区域代理),主干区域中部署的LDP代理设备称为主干区LDP代理设备(以下简称主干区代理)。一个分支区域内可以有1个或多个区域代理,若部署多个区域代理则可在各区域代理间进行负载均衡。区域代理主要用于在接收到本区域内的路由器发起的反向TTL计算代理请求后,向主干区代理发起请求,以请求主干区代理进行跳数计算;主干区代理主要用于基于区域代理的请求确定执行反向ABRTTL计算的目标区域代理,主干区代理还可在确定目标区域为自己所在的主干区域时,进行反向TTL计算。
在主干区代理与各区域代理建立邻居关系后,还要配置区域代理接口地址对应的ABR(AreaBorderRouter,区域边界路由器)。具体的,可按最长匹配算法查找区域代理对应的路由,该路由对应的ABR则为该区域代理的ABR。
上述组网中的路由器(包括具备LDP代理功能或不具备LDP代理功能的路由器)中,涉及LDP协议报文处理以及发起反向TTL计算代理请求和接收响应的操作,由路由器中的LDP应用模块或LDP进程(以下简称LDP模块)进行;反向TTL计算或反向ABRTTL计算操作,由路由器中的OSPF应用模块或OSPF进程(以下简称OSPF模块)进行。
下面以远程LDP邻居建立过程为例,通过具体实施例对本发明实施例提供的LDP协议报文的合法性验证流程进行描述。
实施例一
基于图1所示的网络架构,图2示出了远程LDP邻居建立流程示意图,该流程描述了LSR1向LSR2发送LDPTargetHello报文后,LSR2验证该报文的合法性以及根据验证结果进行相应处理的过程。如图所示,该流程可包括:
步骤201,LSR2接收到LSR1发送的LDPTargetHello报文后,LSR2的LDP模块向OSPF模块发送转发跳数获取请求,其中携带有源地址和目的地址,其中,本发明实施例中在不特别说明的情况下,源地址是指LSR2的地址,目的地址是指LDPTargetHello报文的源地址(即LSR1的地址)。
步骤202,OSPF模块根据目的地址查询OSPF路由表,根据最长匹配原则,查找是否有匹配的路由。若未查找到匹配的路由,则转入步骤203;若查找到匹配的路由,则转入步骤204。
步骤203,OSPF模块向LDP模块返回失败响应,以表明目的地址不可达,该失败响应中具体可包括源地址(即LSR2的地址)、目的地址(即LSR1的地址)、可达标志、距离等。在这里可达标志置为不可达,然后转入步骤211。
步骤204,OSPF模块判断查找到的路由的类型,若为区域内路由,则转入步骤205;若为区域间路由,则转入步骤206;若为外部路由,则转入步骤207。
步骤205,OSPF模块在区域内路由对应的区域内,根据目的地址确定出计算转发跳数的根节点,计算该根节点到LSR2的转发跳数(本发明实施例将该计算过程称为反向TTL计算过程),并在得到计算结果后转入步骤208。其中,计算结果可包括该根节点到LSR2的转发跳数或转发跳数范围(包括跳数下限和上限),还可包括可信标志等信息。
具体的,本步骤中LSR2根据目的地址确定计算转发跳数的根节点的具体实现过程,可参照图3及其说明。本步骤中的反向TTL计算过程可包括:
以确定出的根节点为起点进行SPF计算,直到本端路由器(即LSR2)进入到SPF树后停止SPF计算,从而计算出从根节点到本端路由器(即LSR2)的跳数H。此过程中,根节点不计算在内,从根节点以后,每经过一个节点就加1,直到本端路由器(本端路由器也作为一个节点,计算在内)时终止计算。若SPF树上有多条到本端路由器的路径,则跳数下限H1取这些路径的转发跳数中的最小值,跳数上限H2取这些路径的转发跳数中的最大值。进一步的,可将在跳数上限H2的基础上加1,得到最终的跳数上限值。
步骤206,OSPF模块通过LDP模块向本设备所在区域的LDP代理发起代理请求,并接收该LDP代理返回的代理响应,该代理响应中包括根节点(该根节点是根据目的地址确定出的)到LSR2所在区域的出口ABR的转发跳数;然后,LSR2计算该出口ABR到自身的转发跳数,并将从LDP代理获得的转发跳数和自己计算出的转发跳数进行累加,得到该根节点到LSR2的转发跳数。
具体的,本步骤中LDP代理根据目的地址确定计算转发跳数的根节点的具体实现过程,可参照图3及其说明。
步骤207,OSPF模块向LDP模块发送失败响应,以表明到该目的地址的TTL无效,然后转入步骤211。
步骤208,OSPF模块向LDP模块返回转发跳数获取响应,其中携带有OSPF模块获得的根节点到LSR2的转发跳数。该响应中还可进一步包括以下信息之一或任意组合:源地址(即LSR2的地址)、目的地址(即LDPTargetHello报文的源地址,也即LSR1的地址),以及可信标志位、可达标志位等。
步骤209,LDP模块根据OSPF模块返回的转发跳数获取响应,判断接收到的LDPTargetHello报文是否合法,若合法则转入步骤210,否则转入步骤211。
具体的,LDP模块可根据根节点到LSR2的转发跳数上限和下限确定转发跳数范围,如果该转发跳数范围在合理范围之内,则判断LDPTargetHello报文合法。例如,若TTL计算结果中的转发跳数范围不在[255-跳数上限,255-跳数下限]范围内,则判断本端设备接收到的LDP报文为非法报文。
进一步的,若所述转发跳数获取响应中允许携带可信标志位,则当该可信标志位表示该响应中携带的转发跳数可信时,LDP模块根据该转发跳数判断LDPTargetHello报文的合法性;当该可信标志位表示该响应中携带的转发跳数不可信时,LDP模块不使用该转发跳数判断LDPTargetHello报文的合法性。其中,可信标识可计算转发跳数的过程中根据具体情况进行设置。
步骤210,LSR2通过LDP模块与LSR1建立远程邻居。
步骤211,LSR2通过LDP模块根据用户设置的针对非法报文的处理策略进行相应处理,如放弃接收到的LDPTargetHello报文。
上述流程的步骤205或步骤206中,相应路由器通过以下方式确定计算转发跳数的根节点:根据目的地址匹配到路由后(为描述方便,以下称该路由为路由A),针对匹配到的路由A,查找对应的LSA,以及发布该LSA的路由器(为方便描述,此处将发布该LSA的路由器称为路由器RA),然后根据路由器RA及其OSPF邻居确定作为反向TTL计算的根节点。具体的:
(1)若匹配到的路由是32位路由,则将路由器RA作为进行反向SPF计算的根节点。这是因为32位的路由是一个具体的地址,是唯一的,如果是32为路由,则表明就是这个路由器发布的路由,因此将其作为根节点。
(2)若目的地址是路由器RA的一个接口地址,则将路由器RA作为根节点;
(3)若匹配到的路由不是32位路由,并且目的地址不是路由器RA的一个接口地址,则查找路由器RA中的路由A对应接口的OSPF邻居,若有OSPF邻居的接口地址为该目的地址,则将该邻居路由器作为根节点;
(4)在以上条件都不满足的情况下,将路由器RA作为根节点。
进一步的,还可设置可信标志位,即根据不同的情况将可信标识位设置为0(表示可信)或设置为1(表示不可信)。如,针对上述4种情况,由于情况1~3下,都可以找到接口地址为目的地址的路由器,即可根据目的地址找到对应的路由器,因而可将可信标志位设置为0(可信);而情况4下,并没有真正找到接口地址为目的地址的路由器,因而可将可信标志位设置为1(不可信)。
以上流程可有路由器上的OSPF模块执行。其具体实现流程可如图3A所示,包括:
步骤301,根据目的地址匹配到路由A,查找路由A对应的LSA,并找到发布该LSA的路由器RA;
步骤302,若路由A为32位路由或者目的地址是路由器RA的一个接口地址,则转入步骤303,否则转入步骤304;
步骤303,将路由器RA作为根节点;
步骤304,查找路由器RA中路由A对应接口的OSPF邻居;
步骤305,若有OSPF邻居接口地址为目的地址,则转入步骤306,否则转入步骤307;
步骤306,将该邻居作为根节点;
步骤307,将路由器RA作为根节点。
需要说明的是,以上流程仅以LDP邻居建立过程为例,对LDP协议报文合法性验证方法进行描述,本领域技术人员应该能够理解,在其他需要进行对LDP协议报文进行合法性验证的场景中,也可使用本发明实施例。
图2所示流程的步骤206中,根据代理请求发起端的不同,其处理流程可分别如图4A、图4B和图4C所示,其中,图4A描述了代理请求发起端为不具有LDP代理功能的路由器的处理流程,图4B描述了代理请求发起端为区域代理的处理流程,图4C描述了代理请求发起端为主干区代理的处理流程。
如图4A所示,若LSR2不具有LDP代理功能,则通过代理方式最终得到根节点到LSR2的转发跳数的过程包括:
步骤401,LSR2在确定自己不具有LDP代理功能后,向所在区域的区域代理(为描述方便,以下称该区域代理为区域代理P1)发送反向TTL计算的代理请求,其中携带有源地址(即LSR2的地址)、目的地址(即LSR1的地址)。
步骤402,区域代理P1接收到代理请求后,向主干区代理发送代理请求,其中携带有源地址(LSR2地址)、目的地址(LSR1地址)和代理类型标识。其中,代理类型标识所标识的代理请求类型为汇总请求,表示请求主干区代理匹配查找到路由后判断路由类型,并根据不同的路由类型进行不同的处理。
步骤403,主干区代理接收到汇总类型的代理请求后,根据其中携带的目的地址,以最长匹配方式查找OSPF路由中是否有匹配的路由,并在查找到匹配的路由后判断该路由的类型。若查找到的路由是区域内路由或直连路由,则转入步骤404;若是区域间路由则进行区域代理计算,转入步骤405。
步骤404,主干区代理以目的地址确定出根节点,计算该根节点到主干区域的各出口ABR(所述出口ABR是指主干区域的各ABR中到发起代理请求的区域代理P1的ABR)的转发跳数,(本发明实施例将该转发跳数计算过程称为反向ABTTTL计算过程),并向区域代理P1返回响应消息,其中携带有计算出的转发跳数(可包括跳数上限和下限),以及主干区域的各出口ABR的标识,还可包括所述各出口ABR对应的可信标志,以及进一步还可包括代理请求中的所有信息(如源地址,目的地址,请求类型标识)。然后,转入步骤408。
步骤405,主干区代理根据目的地址确定能够处理该代理请求的目标区域代理,并向该目标区域代理发送代理请求,其中携带有源地址(LSR2的地址)、目的地址(LSR1的地址)和代理类型标识。其中,代理类型标识所标识的代理请求类型为确认请求,表示请求目标区域代理进行反向ABRTTL计算。为描述方便,以下将主干区代理确定出的目标区域代理称为区域代理P2。
具体的,主干区代理在确定目标区域代理时,首先根据目的地址的路由,查找路由对应的ABR(此处将其称为A1),查找区域代理接口地址对应路由的ABR(此处将其称为A2),然后根据查找的情况,主干区代理选择的目标区域代理的策略可包括:
(1)若查找到A1和A2,且A1与A2相同,此种情况下选择A2对应的区域代理作为目标区域代理;
(2)若未查找到A2,则查找A1产生的3类LSA(type3LSA,即networksummaryLSA,由ABR产生,用于告知区域内路由器区域外的路由条目)中,有前缀和某区域代理对应的路由,则选择该区域代理为目标区域代理;
(3)若根据上述(2)的处理还是未找到目标区域代理,则遍历区域代理对应的ABR产生的3类LSA,若某区域代理对应的ABR产生的3类LSA中有前缀与目的地址的路由匹配,则选择该区域代理为目标区域代理。
另一种确定目标区域代理的方法可以包括:确定第一ABR集合,该集合中的ABR是目的地址匹配的路由所对应的ABR;判断第一ABR集合中的ABR产生的3类LSA中,是否有前缀与该目的地址相匹配,若有,则将该ABR放入第二ABR集合;然后通过第二ABR集合中的ABR向其对应的区域代理发送请求,并将响应该请求的区域代理设备的其中之一确定为目标分支区域代理设备,优选的,将响应该请求的第一个区域代理设备确定为目标分支区域代理设备。
步骤406,区域代理P2接收到确认类型的代理请求后,根据其中携带的目的地址,以最长匹配方式查找OSPF路由中是否有匹配的路由,在查找到匹配的路由且该路由是区域内路由时,进行反向ABRTTL计算,得到反向ABRTTL计算结果,其中包括以目的地址确定出的根节点到该根节点所在区域的各出口ABR(所述出口ABR是指所述根节点所在区域各ABR中到发起代理请求的主干区代理的ABR)的转发跳数,并将得到的反向ABRTTL计算结果通过响应消息返回给主干区代理。响应消息中可包括转发跳数(包括跳数下限和跳数上限),以及各出口ABR的标识,还可包括各出口ABR对应的可信标志,以及进一步还可包括代理请求中所有信息(如源地址,目的地址,请求类型标识)。
步骤407,主干区代理收到区域代理P2返回的响应消息后,分别以其中携带的各ABR为根节点、以主干区代理所在网段地址作为SPF(ShortestPathFirst,最短路径优先)树的终结点地址进行反向ABRTTL计算,得到入口ABR(即响应消息中所指示的ABR,该ABR为目标区域的出口ABR,从主干区域的角度来说就是主干区域的入口ABR)到主干区域的出口ABR(所述出口ABR是指主干区的ABR中到发起代理请求的区域代理P1的ABR)的转发跳数,然后在接收到的反向TTL计算结果的基础上加上该转发跳数后,将携带有累加后的转发跳数的反向TTL计算结果通过响应消息返回给区域代理P1。例如,将计算出的跳数下限加上响应信息中的跳数下限,将计算出的跳数上限加上响应信息中的跳数上限,取所有跳数下限中最小的做为跳数下限,取所有跳数上限中最大的为跳数上限,然后作为代理请求的响应返回给发起代理请求的区域代理P1。
步骤408,区域代理P1收到主干区代理返回的包含有反向ABRTTL计算结果的响应消息后,将其返回给LRS2。
步骤409,LSR2收到区域代理P1返回的响应消息后,分别以响应消息中的各ABR(该ABR相对于主干区域来说是出口ABR,相对于LSR2所在区域来说是入口ABR)为根节点、以本端的源地址网段为目的地址,计算得到该ABR到LSR2的转发跳数(本发明实施例中将该计算过程称为反向TTL计算过程);然后将计算出的跳数加上响应消息中的跳数,如,将计算出的跳数下限加上响应信息中的跳数下限,将计算出的跳数上限加上响应信息中的跳数上限,取所有跳数下限中最小的做为跳数下限,取所有跳数上限中最大的为跳数上限,得到以目的地址确定出的根节点到本LSR(LSR2)的转发跳数。其中,若LSR2计算出的跳数大于或等于1,则可将跳数减1后加到其所接收到的代理请求响应信息中的相应跳数上。
具体的,本步骤中LSR2进行的反向TTL计算过程可包括:以响应消息中的各ABR为起点进行SPF计算,直到本端路由器(即LSR2)进入到SPF树后停止SPF计算,从而计算出从相应ABR到本端路由器(即LSR2)的跳数H。此过程中,相应ABR不计算在内,从相应ABR以后,每经过一个节点就加1,直到本端路由器(本端路由器也作为一个节点,计算在内)时终止计算。若SPF树上有多条到本端路由器的路径,则跳数下限H1取这些路径的转发跳数中的最小值,跳数上限H2取这些路径的转发跳数中的最大值。进一步的,可将在跳数上限H2的基础上加1,得到最终的跳数上限值。
上述图4A所示流程中的步骤404、406或407的反向ABRTTL计算过程包括以下步骤A-C(步骤A和步骤B之间没有严格时序要求):
步骤A,接收到代理请求的LDP代理根据该代理请求中携带的“本端的源地址”查找对应的路由(为描述方便,此处称为路由R);
步骤B,该LDP代理以确定出的根节点进行SPF计算,计算到所有ABR后停止SPF计算。然后进行以路由R为路由的区域间路由计算,具体的:将各ABR产生的3类LSA中的Metric分别与根节点到各ABR的路径的cost相加,取数值最小cost所对应的ABR作为该根节点所在区域的出口ABR,未产生路由R对应LSA的ABR不参与取最小值计算;若存在多个数值最小的ABR,则都作为出口ABR。通过该过程所确定出的出口ABR即为到该代理请求的发起端路由器的ABR。
具体的,对于步骤404和步骤406,所述根节点为LDP代理根据目的地址确定出来的(具体确定方法可如图3B所示);对于步骤407,所述根节点是指主干区代理接收到的代理响应中的ABR标识所指示的ABR。
步骤C,对于各出口ABR,该LDP代理根据步骤B的SPF计算结果分别计算从根节点到各出口ABR的跳数H(即根节点不计算在内,从根节点以后,每经过一个节点就加1,直到出口ABR,出口ABR作为一个节点,计算在内);若有多条到出口ABR的路径,则跳数下限Ha取这些路径的转发跳数中的最小值,跳数上限Hb取这些路径的转发跳数中的最大值,然后将Ha和Hb分别加1。
如图4B所示,若LSR2具有区域代理功能,则代理反向TTL计算过程包括:
步骤410,LSR2在确定自己具有区域LDP代理功能后,向主干区代理发送代理请求,其中携带有源地址(LSR2的地址)、目的地址(LSR1的地址)和代理类型标识。其中,代理类型标识所标识的代理请求类型为汇总请求。
步骤411,主干区代理接收到汇总类型的代理请求后,根据其中携带的目的地址,以最长匹配方式查找OSPF路由中是否有匹配的路由,并在查找到匹配的路由后判断该路由的类型。若查找到的路由是区域内路由或直连路由,则转入步骤412;若是区域间路由则进行区域代理计算,转入步骤413。
步骤412,主干区代理根据源地址和目的地址进行反向ABRTTL计算,并将计算结果通过响应消息返回给LSR2,然后转入步骤416。其具体实现与图4A中的步骤404类似,在此不再赘述。
步骤413,主干区代理根据目的地址确定能够处理该代理请求的目标区域代理(以下称区域代理P2),并向该目标区域代理发送代理请求。其具体实现与图4A中的步骤405类似。
步骤414,区域代理P2接收到确认类型的代理请求后,根据其中携带的源地址和目的地址进行反向ABRTTL计算,并通过响应消息向主干区代理返回反向ABRTTL计算结果。其具体实现与图4A中的步骤406类似。
步骤415,主干区代理收到区域代理P2返回的反向ABRTTL计算结果后,分别以其中携带的各ABR为根节点、以主干区代理所在网段地址作为SPF树的终结点地址进行反向ABRTTL计算,并将计算出的转发跳数累加到其所接收到的转发跳数上,并通过响应消息向LSR2返回反向ABRTTL计算结果。其具体实现与图4A中的步骤407类似。
步骤416,LSR2收到区域代理P1返回的响应消息后,分别以响应消息中的各ABR为根节点、以本端的源地址网段为目的地址,进行反向TTL计算,并将计算出的转发跳数累加到其所接收到的转发跳数上。其具体实现与图4A中的步骤409类似。
如图4C所示,若LSR2具有主干区代理功能,则代理反向TTL计算过程包括:
步骤420~421,LSR2在确定自己具有主干LDP代理功能后,将LDPtargetHello报文的源地址作为目的地址,以最长匹配方式查找OSPF路由中是否有匹配的路由,并在查找到匹配的路由后判断该路由的类型,若是区域间路由则进行区域代理计算,即转入步骤422。
该步骤中,若查找到的路由是区域内路由或直连路由,则不用启动代理反向TTL计算过程,而是由LSR2进行反向TTL计算以得到LSR2和LSR1之间的转发跳数。
步骤422,LSR2根据目的地址确定能够处理该代理请求的目标区域代理,并向该目标区域代理(此处为区域代理P2)发送代理请求。其具体实现与图4A中的步骤405类似。
步骤423,区域代理P2接收到确认类型的代理请求后,根据其中携带的源地址和目的地址进行反向ABRTTL计算,并通过响应消息向LSR2(也即主干区代理)返回反向ABRTTL计算结果。其具体实现与图4A中的步骤406类似。
步骤424,LSR2收到区域代理P2返回的响应消息后,分别以其中携带的各ABR为根节点、以LSR2自身的地址作为SPF树的终结点地址进行反向TTL计算,并将计算出的转发跳数累加到区域代理P2返回的转发跳数上,得到以目的地址确定出的根节点到LSR2的转发跳数或转发跳数范围。其具体实现与图4A中的步骤407类似。
需要说明的是,上述图4A、图4B或图4C所示流程中,通过在代理请求中添加代理类型标识来使接收到代理请求的代理设备进行相应处理,本领域技术人员应该能够理解,还可以采用其它方式以使接收到代理请求的代理设备进行相应处理,如代理请求接收端根据该代理请求发起端的不同(即该代理请求来自于主干区代理还是来自区域代理),来进行相应处理。
根据以上图4A、图4B和图4C所示的流程,从代理设备的角度来说,其接收到代理请求后的处理流程可如图5所示,包括以下情况:
(1)若本代理设备为代理请求的发起端,则判断本设备是否是主干区代理;若不是,则向主干区代理发送代理请求,请求消息中包括本端的源地址、目的地址、请求类型,此处的请求类型为汇总请求;若是,则进行区域代理计算,确定目标区域代理设备并向该目标区域代理设备发送代理请求,请求消息中包括本代理设备的源地址、目的地址、请求类型,此处的请求类型为确认请求。
(2)若本代理设备为代理请求的接收端,若收到的代理请求为汇总请求,且本代理设备为主干区代理,则以最长匹配方式查找OSPF路由中是否有匹配的路由,若未查找到,则向代理请求发起端返回失败响应消息,其中可包括代理请求中所有信息(本端的源地址,目的地址,请求类型)和代理计算失败信息;若查找,则:
A:若查找到的路由是区域内路由或直连路由,则进行反向ABRTTL计算,然后向代理请求发起端返回响应消息,其中包括代理请求中所有信息(本端的源地址,目的地址,请求类型),各出口ABR标识及其对应的可信标志和跳数信息(包括跳数下限和跳数上限);
B:若是区域间路由则进行区域代理计算,确定目标区域代理设备并向该区域代理设备发送代理请求,请求消息中包括接收到的源地址,目的地址,请求类型,此处的请求类型为确认请求。
(3)若本代理设备收到的代理请求为确认请求,且本代理设备为区域代理,则以最长匹配方式查找OSPF路由中是否有匹配的路由,若未查找到,则向代理请求发起端返回失败响应消息,其中可包括代理请求中所有信息(本端的源地址,目的地址,请求类型)和代理计算失败信息;若查找到,则:
A:若查找到的路由是区域内路由,则进行反向ABRTTL计算处理,然后向代理请求发起端返回响应消息,其中包括代理请求中所有信息(本端的源地址,目的地址,请求类型),各出口ABR标识及其对应的可信标志和跳数信息(包括跳数下限和跳数上限);
B:若查找到的路由不是区域内路由,则向代理请求发起端返回失败响应消息,其中可包括代理请求中所有信息(本端的源地址,目的地址,请求类型)和代理计算失败信息。
(4)若本代理设备收到的代理请求和本代理设备的代理类型组合为其他情况,则向代理请求发起端返回失败响应消息,其中可包括代理请求中所有信息(本端的源地址,目的地址,请求类型)和代理计算失败信息。
实施例二
为了减少路由器的反向ABRTTL计算开销,本发明实施例二对上述实施例一进行了改进。即,在LDP代理设备(包括区域代理或/和主干区代理)进行反向ABRTTL计算之后,将计算结果保存或更新到本地;或者,LDP代理设备在接收到其他LDP代理设备返回的代理响应之后,将该响应中携带的反向ABRTTL计算结果保存或更新到本地。如以代理表的形式保存反向ABR计算结果的相关信息,每个表项可包含如下信息:起始邻居、源地址、目的地址、代理下一跳、转发跳数(如包括跳数下限、跳数上限),还可进一步包括路由信息、SPF信息等。其中:
起始邻居:从邻居设备收到代理请求消息时,此邻居的地址就是起始邻居。如实施例一中的主干区代理接收到区域代理P1发起的代理请求时,该起始邻居即为区域代理P1。若是本地发起的代理,起始邻居为空;
源地址:代理请求消息中携带的“源地址”。若是本地发起的代理请求,则为本端的源地址。如实施例一中,当LSR2向区域代理P1发起代理请求时,该消息中携带有“源地址”,该源地址即为LSR2所接收到的LDP消息的目的地址,此处为LSR2的地址。
目的地址:代理请求消息中携带的“目的地址”,如实施例一中LSR2所接收到的LDP报文的源地址,此处为LSR1的地址。若是本地发起的代理请求,则为目的地址;
代理下一跳:发送代理请求消息的对象,若本代理设备接收到代理请求后,无需再向其他代理设备发送代理请求,则项为空。如实施例一中,主干区代理在收到区域代理P1发送的代理请求后,确定出需要向区域代理P2发送代理请求,则区域代理P2即为相应的代理下一跳。
跳数下限:本代理设备计算出的或从其他代理设备返回的代理响应中得到的跳数的下限;
跳数上限:本代理设备计算出的或从其他代理设备返回的代理响应中得到的跳数的上限;
路由信息:目的地址匹配到的路由;
SPF信息:源路由器是产生目的地址匹配到的路由的对应LSA的路由器(也即实施例一中所述的根据目的地址确定出的进行转发跳数计算的根节点),而从源路由器(即根节点)计算出的,到本地的SPF树,即为监控的SPF信息。
基于LDP代理设备记录的以上代理表,本实施例所提供的远程LDP邻居建立流程中,当LDP代理设备需要进行反向ABRTTL计算时,首先查询本地代理表,判断是否有匹配的表项,若有匹配的表项,则将该表项中的相关信息作为反向ABRTTL计算结果;若未找到匹配的表项,则按照实施例一所述的方法进行反向ABRTTL计算,并在得到根节点到该代理设备所在区域的出口ABR的转发跳数后,创建对应的代理表项。
例如,区域代理P1接收到LSR2的代理请求后,根据LSR2的地址和代理请求中携带的目的地址和源地址查找其所记录和维护的代理表,如果找到匹配的表项,则将该表项或该表项中的转发跳数作为反向ABRTTL计算结果返回;如果未找到匹配的表项,则按照前述流程启动反向ABRTTL计算过程。
具体的,如果从代理表中能够查找到“起始邻居”为该发起代理请求的设备、目的地址为该代理请求中携带的目的地址、源地址为该代理请求中携带的源地址的代理表项,则可将该代理表项中的起始邻居、源地址、目的地址、跳数下限、跳数上限等信息作为代理请求的响应返回给该代理请求的发起端。
进一步的,上述代理表还需要根据网络拓扑的变化进行动态更新,以保证该代理表中的数据的实时性和准确性。如当上述“路由信息”或“SPF信息”发生变化时,需要触发反向ABRTTL计算,重新获得相应表项的“源地址”到“目的地址”的转发跳数,更新本代理设备以及相关代理设备上的相应表项。
例如,以主区代理为例,其更新代理表的过程可如图6所示,包括:
步骤601,主干区代理发现有路由变化时,判断该路由是否存在于代理表中,如果判断为是,则执行步骤602,否则结束本流程。
步骤602,主干区代理查询该路由信息发生变化的表项,若“代理下一跳”为区域代理的地址(本流程以区域代理P2为例),则转入步骤603;若“代理下一跳”为空,则转入步骤605。
步骤603,主干区代理向区域代理P2发送代理请求,其中携带有“目的地址”,并接收区域代理P2返回的代理响应,其中携带有区域代理P2根据该“目的地址”并通过反向ABRTTL计算得到的根节点到其所在区域的出口ABR的转发跳数。区域代理P2在计算出该转发跳数后,更新其本地的相应代理表项。
步骤604,主干区代理接收到区域代理P2返回的代理响应后,通过反向ABRTTL计算过程得到该代理响应中所指示的出口ABR到主干区域的出口ABR的转发跳数,然后将计算出的转发跳数累加到代理响应中携带的转发跳数上,并以此更新该代理表项中的转发跳数。然后转入步骤606。
步骤605,主干区代理根据该表项中的“目的地址”确定进行反向ABRTTL计算的根节点,以该根节点为起点进行反向ABRTTL计算,并根据计算结果更新相应代理表项中的转发跳数。然后转入步骤606。
步骤606,主干区代理查询该表项中的“起始邻居”,若“起始邻居”为区域代理的地址(本流程以区域代理P1为例),则转入步骤607;若“起始邻居”为空,则结束本流程。
步骤607,主干区代理向区域代理P1发送通知消息,其中携带有相应代理表项中的相关内容,如源地址、目的地址、转发跳数等,以通知区域代理P1更新相应代理表项。
其它代理设备上的代理表项的更新流程与上述流程类似,例如,如果更新流程由区域代理P2发起,则区域代理P2在更新完相应代理表项后通知主干区代理更新相应代理表项(在该代理表项中的代理请求发起端为主干区代理时);主干区代理接收到该通知后,如果判断相应表项中记录的代理请求发起端为其它分支区域代理,则需要进行反向ABRTTL计算,得到区域代理P2所在区域的出口ABR到主干区出口ABR的转发跳数,然后进行相应代理表项的更新,并通知该表项中的代理请求发起端(即分支区域代理设备)更新相应代理表项;否则,无需进行反向ABRTTL计算,只要根据通知更新相应代理表项即可。
进一步的,如果LDP代理变更,则需要触发“代理下一跳”的重新选择(即重新确定本设备发送代理请求消息的对象),具体如何选择,需要根据网络拓扑的变化而定,如,对于区域代理设备来说,若主干区代理设备发生变化,则需要将“代理下一跳”更新为新的主干区代理设备的地址,对于主干区代理设备来说,需要重新确定目的区域代理设备,并将“代理下一跳”更新为新的目的区域代理设备的地址。然后再根据情况进行转发跳数的更新。
进一步的,当建立有LDP邻居关系的LDP邻居关系取消时,存在邻居关系的设备(如实施例一中的LSR1或LSR2)可向代理设备发送代理回收消息,该代理回收消息中可包括本端的源地址、目的地址、本端OSPF进程的RouterID。作为代理设备的邻居在收到该代理回收消息后,根据源地址和目的地址查找代理表,将对应的表项删除。
为更加清楚的说明本发明实施例的具体实现,下面以一具体应用场景为例进行描述。
参见图7,RTA与RTB之间配置LDP远程邻居,RTA为所在区域Area1的区域代理。在RTA上需要计算RTB到RTA的跳数。其中,RTCore-1为主干区代理。RTA,RTB和RTD分别与RTCore-1建立代理邻居关系。各链路的Cost都为1。
在RTA上LDP进程向OSPF进程发送计算请求信息,源地址为1.1.1.1,目的地址为2.0.0.2。OSPF进程收到后,查找OSPF路由表,以2.0.0.2/32为目的地址进行最长匹配。在本例中,查找到的路由为区域间路由。RTAOSPF进程向LDP进程通告代理请求信息,包括本端的源地址(1.1.1.1),目的地址(2.0.0.2),本端OSPF进程的RouterID(1.1.1.1)和请求类型(汇总请求),LDP进程将这些信息发送给主干区代理RTCore-1。
RTCore-1收到信息后,查找本地OSPF路由表,找到路由2.0.0.2/32,为区域间路由。则RTCore-1进行区域代理计算。具体的:RTCore-1上,确定第一ABR集合,该集合中的ABR是2.0.0.2/32匹配的路由所对应的ABR;RTCore-1判断第一ABR集合中的ABR产生的3类LSA中,ABR2的路由前缀与2.0.0.2/32相匹配,则将ABR2放入第二ABR集合;然后通过第二ABR集合中的ABR2向其对应的区域代理RTB和RTD发送请求,并将响应该请求的区域代理的其中之一确定为目标分支区域代理,此处由于RTB首先响应ABR2的请求,因此选取RTB作为目标分支区域代理。RTCore-1向RTB发送确认请求,包括收到的源地址(1.1.1.1),目的地址(2.0.0.2)和请求类型(确认请求)。
RTB收到确认请求后,查找本地OSPF路由,发现为本地直连的路由,则进行反向ABRTTL计算,具体包括以下步骤(1)~(5):
(1)由于目的地址2.0.0.2为RTB的直连接口地址,所以源路由器为RTB;
(2)接收到的源地址为1.1.1.1,查找1.1.1.1最长匹配的路由为1.1.1.1/32;
(3)以RTB为根节点进行SPF计算,在计算到所有ABR后停止,此处只有一个ABR:ABR2。计算以ABR2为ABR到1.1.1.1/32的cost为依据:RTB到ABR2的cost为1,ABR2产生的3类LSA中的Metric为4,则cost为:1+4=5。由于只有一个ABR,则此值即为最小值。
(4)根据SPF树,计算RTB到ASBR2的跳数,为1。
(5)自增标志为0,所以跳数还是,1。
RTB向RTCore-1发送响应消息,包含请求中的“本端的源地址”(1.1.1.1),目的地址(2.0.0.2),请求类型(确认请求),出口ABR(1.0.2.1即ABR2),可信标志(可信)和跳数信息(跳数下限是1,跳数上限是1)。
RTCore-1收到响应消息后,以消息中的出口ABR(1.0.2.1)为源节点进行反向ABRTTL计算,得到出口ABR为ABR1,跳数3;加上消息中的跳数1,得到跳数为4。向LDP邻居RTA发送响应信息,包含请求中的“本端的源地址”(1.1.1.1),目的地址(2.0.0.2),请求类型(汇总请求),出口ABR(1.0.0.1即ABR1),可信标志(可信)和跳数信息(下限是4,跳数上限是4)。
RTA收到回应消息后,以消息中的出口ABR(1.0.0.1)为源节点进行反向TTL计算,得到的跳数为1。将此跳数加上回应信息中的跳数(4),得到跳数为5。因为5>1,所以最终的跳数为5-1=4。
本发明的以上实施例,描述了LSR在接收到对端发起的LDP报文后,通过反向TTL或/和反向ABRTTL计算,得到对端到本LSR的转发跳数,并根据该转发跳数验证该LDP报文的合法性,进而决定是否与对端建立LDP邻居的过程。基于以上构思和原理,另一种代替方案是:LSR在发起LDP报文以请求与对端建立LDP邻居时,由该LSR以对端地址为目的地址,进行反向TTL或/和反向ABRTTL计算,得到对端到本LSR的转发跳数,并判断该转发跳数是否在合理范围内,如果在合理范围内,则在接收到对端应答的LDP报文后,建立与对端的LDP邻居。该替代方案的具体实现过程基本与前述实施例类似,在此不再赘述。
基于相同的技术构思,本发明实施例还提供了可应用于上述流程的网络设备。
参见图8,为本发明实施例提供的一种路由器的结构示意图,该路由器可应用于上述实施例一或实施例二。如图所示,该路由器可包括:收发模块81、LDP模块82和OSPF模块83,OSPF模块83包括控制单元831、路由匹配单元832、计算单元833,其中:
LDP模块82,用于在收发模块81接收到对端发送的LDP报文后,请求OSPF模块83计算本路由器到对端的转发跳数,当OSPF模块83返回的转发跳数在指定范围内时与对端建立LDP邻居,或者,在收发模块81向对端发送LDP报文后请求OSPF模块83计算本路由器到对端的转发跳数,当收发模块81接收对端回应的LDP报文,且OSPF模块83返回的转发跳数在指定范围内时与对端建立LDP邻居;以及,在接收到OSPF模块83发送的代理请求时,指示收发模块81向代理设备发送代理请求,并在收发模块81接收到所述代理设备返回的代理响应后发送给OSPF模块83,所述代理响应中携带有计算转发跳数的根节点到本路由器所在区域的入口ABR的转发跳数,其中,所述根节点是根据所述目的地址确定出来的;
控制单元831,用于根据LDP模块82发送的计算转发跳数的请求,指示路由匹配单元832进行路由匹配,并在匹配到区域内路由时向计算单元833发送第一指示;在匹配到区域间路由时向LDP模块82发送代理请求,接收LDP代理设备返回的代理响应,并向计算单元833发送第二指示;
路由匹配单元832,用于控制单元831的指示,以对端地址作为目的地址进行路由匹配;
计算单元833,用于接收到控制单元831的第一指示后,根据所述目的地址确定计算转发跳数的根节点,计算所述根节点到本路由器的转发跳数,并将其返回给LDP模块82;根据控制单元831的第二指示,在所述代理响应中携带的转发跳数基础上加上所述入口ARB到所述路由器的转发跳数,得到所述根节点到本路由器的转发跳数,并将其返回给LDP模块82。
进一步的,在所述路由器被指定为分支区域代理设备时:
LDP模块82还用于,在收发模块81接收到所在区域的路由器发送的代理请求后,指示收发模块81向主干区域代理设备发送代理请求,在收发模块81接收主干区域代理设备返回的代理响应后,指示收发模块81将该代理响应返回给发送所述代理请求的路由器;在接收到主干区域代理设备发送的用于指示计算转发跳数的代理请求后,请求OSPF模块83计算根节点到所在区域出口ABR的转发跳数,并指示收发模块81将计算出的转发跳数返回给主干区域代理设备;
控制单元831还用于,根据LDP模块82发送的计算根节点到所在区域出口ABR的转发跳数的请求,向计算单元833发送第三指示;
计算单元833还用于,接收到控制单元831发送的第三指示后,根据所述目的地址确定计算转发跳数的根节点,计算所述根节点到所在区域出口ABR的转发跳数,并将其返回给LDP模块82。
进一步的,在所述路由器被指定为主干区域代理设备时:
OSPF模块82还包括目标分支区域代理设备确定单元834;
LDP模块82还用于,当收发模块81接收到分支区域代理设备发送的代理请求时,请求OSPF模块83进行路由匹配,若匹配到的路由为区域内路由,则指示OSPF模块83计算根节点到主干区域出口ABR的转发跳数,并指示收发模块81将该转发跳数返回给所述分支区域代理设备,若匹配到的路由为区域间路由,则请求OSPF模块83确定目标区域代理设备,指示收发模块81向所述目标区域代理设备发送代理请求;当收发模块81接收到所述目标分支区域的代理设备返回的代理响应后,请求OSPF模块83计算根节点到主干区域的出口ABR的转发跳数;
控制单元831还用于,根据LDP模块82发送的路由匹配请求,指示路由匹配模块832进行路由匹配;根据LDP模块82发送的计算根节点到所在区域出口ABR的转发跳数的请求,向计算模块833发送第三指示;根据LDP模块82发送的计算根节点到主干区域的出口ABR的转发跳数的请求,向计算模块833发送第四指示;根据LDP模块82发送的确定目标区域代理设备的请求,指示目标分支区域代理设备确定单元834确定目标分支区域代理设备;
计算单元833还用于,接收到控制单元831发送的第三指示后,根据所述目的地址确定计算转发跳数的根节点,计算所述根节点到所在区域出口ABR的转发跳数,并将其返回给LDP模块82;根据控制单元831发送到的第四指示,在所述代理响应中携带的转发跳数基础上加上目标分支区域出口ARB到主干区域出口ABR的转发跳数,并将该转发跳数返回给LDP模块82;
目标分支区域代理设备确定单元834,用于根据控制单元831的指示,确定目标分支区域代理设备。
具体的,目标分支区域代理设备确定单元834具体用于,确定第一ABR集合,该集合中的ABR是所述目的地址匹配的路由所对应的ABR;判断第一ABR集合中的ABR产生的3类LSA中,是否有前缀与所述目的地址相匹配,若有,则将该ABR放入第二ABR集合;通过第二ABR集合中的ABR向其对应的区域代理发送请求,并将响应该请求的区域代理设备的其中之一确定为目标分支区域代理设备。
进一步的,所述路由器上还维护有代理表,其中记录有代理请求发起端的地址、源地址、目的地址、转发跳数;
LDP模块82具体用于,在收发模块81接收到代理请求后,首先根据该代理请求中携带的所述目的地址和代理请求发起端的地址查找代理表中是否有匹配的表项,如果有匹配的表项,则指示收发模块81根据该匹配的表项返回代理响应;否则在OSPF模块83计算出根节点到本代理设备所在区域出口ABR的转发跳数之后,还创建该转发跳数对应的代理表项。其中,若有代理表项中的目的地址与所述代理请求中的所述目的地址相同、所述代理请求的发起端地址与该代理表项中的代理请求发起端的地址相同,则该代理表项为匹配的表项。
进一步的,代理表项中还包括与该表项中的目的地址匹配的路由信息,以及在存在下一跳代理设备时还包括下一跳代理设备地址。相应的:
控制单元831还用于,当存在于代理表项中的路由信息发生变化时,在该代理表项中存在下一跳代理设备地址的情况下,通过LDP模块82向所述下一跳代理设备发送代理请求,其中携带有该表项中的目的地址;接收LDP模块82转发的该下一跳代理设备返回的代理响应,其中携带有根据所述目的地址确定出的根节点到其所在区域的出口ABR的转发跳数;在该代理表项中的代理请求发起端地址为其它代理设备的地址时,指示计算单元833计算所述出口ABR到该代理设备所在区域的出口ABR的转发跳数,并将其累加到所述代理响应中携带的转发跳数上,根据得到的转发跳数更新相应代理表项,通过LDP模块82通知该其它代理设备根据更新后的转发跳数更新相应代理表项;在该代理表项中的代理请求发起端地址不是代理设备的地址时,用所述下一跳代理设备返回的代理响应中携带的转发跳数更新相应代理表项中的转发跳数;
在该代理表项中不存在下一跳代理设备地址的情况下,指示计算单元833根据该代理表项中的目的地址确定根节点,计算该根节点到所在区域的出口ABR的转发跳数,根据得到的转发跳数更新相应代理表项;并在该代理表项中的代理请求发起端地址为其它代理设备地址时,通过LDP模块82通知该其它代理设备根据更新后的转发跳数更新相应代理表项。
进一步的,当建立有LDP邻居关系的路由器取消邻居关系时,存在该LDP邻居关系的路由器向区域代理设备发送代理回收消息,其中携带有源地址和目的地址,所述源地址为该路由器自身的地址,所述目的地址为该路由器的LDP邻居的地址。相应的,控制单元831还用于,根据源地址和目的地址查找代理表,并在查找到匹配的表项后将该表项删除。
具体的,计算单元833可在根据所述目的地址确定计算转发跳数的根节点时,根据匹配到的区域内路由查找对应的LSA,查找发布该LSA的源路由器,根据该源路由器及其OSPF邻居确定计算转发跳数的根节点。
具体的,计算单元833确定计算转发跳数的根节点时:
(1)若匹配到的路由是32位路由,则将所述源路由器作为计算转发跳数的根节点;
(2)若所述目的地址是所述源路由器的一个接口地址,则将所述源路由器作为计算转发跳数的根节点;
(3)若所述目的地址不是所述源路由器的一个接口地址,则查找所述源路由器中的特定路由所对应接口的OSPF邻居,若有OSPF邻居的接口地址为所述目的地址,则将该邻居路由器作为计算转发跳数的根节点;其中,所述特定路由为与所述目的地址对应的路由;
(4)若(1)、(2)和(3)的条件都不满足,则将所述源路由器作为计算转发跳数的根节点。
进一步的,计算单元833还用于,在所述(1)、(2)或(3)的情况下,对应于以所述根节点为起点计算出的转发跳数设置可信标识的值为可信;在所述(4)的情况下,对应于以所述根节点为起点计算出的转发跳数设置可信标识的值为不可信。
具体的,计算单元833在计算所述根节点到所述路由器的转发跳数时,以所述根节点为起点进行SPF计算,直到所述路由器进入到SPF树后停止SPF计算,得到从该根节点到所述路由器的转发跳数;其中,从根节点以后每经过一个节点时转发跳数递增,直到将所述路由器作为最后一个节点计算在内时停止转发跳数递增。
具体的,计算单元833在计算所述根节点到所述路由器所在区域的入口ABR的转发跳数时,以所述根节点为起点进行SPF计算,直到该根节点所在主干区域的ABR进入SPF树后停止SPF计算;从各ABR中选取出生成特定LSA的ABR,所述特定LSA为与所述目的地址匹配的路由所对应的LSA,将选取出的各ABR产生的3类LSA中的Metric分别与该根节点到各ABR的路径的cost相加,取数值最小的cost所对应的ABR作为所述主干区域的出口ABR;将所述主干区域的出口ABR作为所述路由器所在区域的入口ABR,根据所述SPF计算得到的路径,计算所述根节点到该入口ABR的转发跳数;其中,从根节点以后每经过一个节点时转发跳数递增,直到将所述主干区域的出口ABR作为最后一个节点计算在内时停止转发跳数递增。
具体的,计算单元833具体用于,在计算目标分支区域出口ABR到主干区域出口ABR的转发跳数时,将目标分支区域的出口ABR为起点进行SPF计算,直到主干区域的ABR进入SPF树后停止SPF计算;从主干区域的各ABR中选取出生成特定LSA的ABR,所述特定LSA为与所述目的地址匹配的路由所对应的LSA,将选取出的各ABR产生的3类LSA中的Metric分别与该根节点到各ABR的路径的cost相加,取数值最小的cost所对应的ABR作为主干区域的出口ABR;根据所述SPF计算得到的路径,计算得到目标分支区域出口ABR到所述主干区域出口ABR的转发跳数,其中,从目标分支区域的出口ABR以后每经过一个节点时转发跳数递增,直到所述主干区域的出口ABR作为最后一个节点计算在内时停止转发跳数递增。
具体的,在有多条转发路径的情况下,所述转发跳数包括上限和下限;转发跳数上限为所述多条转发路径的转发跳数中的最大值,转发跳数下限为所述多条转发路径的转发跳数中的最小值。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (28)

1.一种标记分发协议LDP远程邻居配置方法,应用于多区域网络,其特征在于,各区域中设置有代理设备;该方法包括:
路由器接收到对端发送的LDP报文后计算到对端的转发跳数,若该转发跳数在指定范围内,则与对端建立LDP邻居;或者,路由器向对端发送LDP报文后计算到对端的转发跳数,若该转发跳数在指定范围内,则在接收到对端响应的LDP报文后与对端建立LDP邻居;
其中,所述路由器计算到对端的转发跳数包括:
所述路由器以对端地址作为目的地址进行路由匹配,并在匹配到路由后判断该路由的类型;
如果是区域内路由,则所述路由器根据所述目的地址确定计算转发跳数的根节点,并计算所述根节点到所述路由器的转发跳数;
如果是区域间路由,则所述路由器通过代理设备获得计算转发跳数的根节点到所述路由器所在区域的入口区域边界路由器ABR的转发跳数,并在所述转发跳数基础上加上所述入口ABR到所述路由器的转发跳数,得到所述根节点到所述路由器的转发跳数;其中,所述根节点是根据所述目的地址确定出来的。
2.如权利要求1所述的方法,其特征在于,所述路由器通过代理设备获得转发跳数,包括:
如果所述路由器不是所在区域的代理设备,则所述路由器向所在分支区域或所在主干区域的代理设备发送代理请求并接收返回的代理响应;如果所述路由器为所在分支区域的代理设备,则所述路由器向主干区域的代理设备发送代理请求并接收返回的代理响应;如果所述路由器为主干区域的代理设备,则所述路由器根据所述目的地址确定出目标分支区域代理设备后,向该目标分支区域代理设备发送代理请求并接收返回的代理响应;其中,所述代理请求中携带有所述目的地址,所述代理响应中携带有以所述目的地址确定出的根节点为起点计算得到的该根节点到所述路由器所在区域的入口ABR的转发跳数;
其中,主干区域代理设备接收到代理请求后,若该代理请求来自于分支区域代理设备,则根据其中携带的所述目的地址进行路由匹配,如果匹配到区域内路由,则根据所述目的地址确定根节点,计算该根节点到主干区域出口ABR的转发跳数,并向相应分支区域代理设备返回携带有所述出口ABR标识和转发跳数的代理响应;如果匹配到区域间路由,则根据该代理请求中携带的所述目的地址确定目标分支区域,向该目标分支区域代理设备发送代理请求,并在接收到该目标分支区域代理设备返回的代理响应后,根据该代理响应中携带的ABR标识计算相应ABR到主干区域出口ABR的转发跳数,并将该转发跳数累加到该代理响应中的转发跳数上,携带于代理响应返回给相应的分支区域代理设备;如果主干区域的代理设备接收到的代理请求来自于本区域的路由器,则根据该代理请求中携带的所述目的地址确定目标分支区域,并向该目标分支区域代理设备发送代理请求,并在接收到该目标分支区域代理设备返回的代理响应后,将其转发给所述本区域的路由器;
其中,分支区域的代理设备在接收到代理请求后,若该代理请求来自于主干区域的代理设备,则根据该代理请求中携带的所述目的地址确定根节点,计算该根节点到该分支区域的出口ABR的转发跳数,并向主干区域代理设备返回携带有该出口ABR标识和转发跳数的代理响应;分支区域的代理设备在接收到主干区域代理设备返回的代理响应后,将其返回给发起代理请求的路由器。
3.如权利要求2所述的方法,其特征在于,所述路由器根据所述目的地址确定目标分支区域代理设备,包括:
确定第一ABR集合,该集合中的ABR是所述目的地址匹配的路由所对应的ABR;
判断第一ABR集合中的ABR产生的3类链路状态广播LSA中,是否有前缀与所述目的地址相匹配,若有,则将该ABR放入第二ABR集合;
通过第二ABR集合中的ABR向其对应的区域代理发送请求,并将响应该请求的区域代理设备的其中之一确定为目标分支区域代理设备。
4.如权利要求2所述的方法,其特征在于,各区域代理设备上还维护有代理表,其中记录有代理请求发起端的地址、源地址、目的地址、转发跳数;
主干区域代理设备或分支区域代理设备在接收到代理请求后,首先根据该代理请求中携带的所述目的地址和代理请求发起端的地址查找代理表中是否有匹配的表项,如果有匹配的表项,则根据该匹配的表项返回代理响应;否则在获得到所述根节点到主干区域出口ABR的转发跳数之后,创建该转发跳数对应的代理表项;
其中,若有代理表项中的目的地址与所述代理请求中的所述目的地址相同、所述代理请求的发起端地址与该代理表项中的代理请求发起端的地址相同,则该代理表项为匹配的表项。
5.如权利要求4所述的方法,其特征在于,代理表项中还包括与该表项中的目的地址匹配的路由信息,以及在存在下一跳代理设备时还包括下一跳代理设备地址;
当存在于代理表项中的路由信息发生变化时,该方法还包括:
在该代理表项中存在下一跳代理设备地址的情况下,存储该代理表项的代理设备向所述下一跳代理设备发送代理请求,其中携带有该表项中的目的地址;接收该下一跳代理设备返回的代理响应,其中携带有根据所述目的地址确定出的根节点到其所在区域的出口ABR的转发跳数;在该代理表项中的代理请求发起端地址为其它代理设备的地址时,计算所述出口ABR到该代理设备所在区域的出口ABR的转发跳数,并将其累加到所述代理响应中携带的转发跳数上,根据得到的转发跳数更新相应代理表项,通知该其它代理设备根据更新后的转发跳数更新相应代理表项;在该代理表项中的代理请求发起端地址不是代理设备的地址时,用所述下一跳代理设备返回的代理响应中携带的转发跳数更新相应代理表项中的转发跳数;
在该代理表项中不存在下一跳代理设备地址的情况下,存储该代理表项的代理设备根据该代理表项中的目的地址确定根节点,计算该根节点到所在区域的出口ABR的转发跳数,根据得到的转发跳数更新相应代理表项;并在该代理表项中的代理请求发起端地址为其它代理设备地址时,通知该其它代理设备根据更新后的转发跳数更新相应代理表项。
6.如权利要求4所述的方法,其特征在于,该方法还包括:
当有建立有LDP邻居关系的路由器取消邻居关系时,存在该LDP邻居关系的路由器向区域代理设备发送代理回收消息,其中携带有源地址和目的地址,所述源地址为该路由器自身的地址,所述目的地址为该路由器的LDP邻居的地址;
区域代理设备根据源地址和目的地址查找代理表,并在查找到匹配的表项后将该表项删除。
7.如权利要求2所述的方法,其特征在于,确定所述根节点并以所述根节点为起点计算转发跳数的路由器,还对应于计算出的转发跳数设置可信标识;
在确定所述根节点并以所述根节点为起点计算转发跳数的路由器为所述路由器的情况下,所述路由器在可信标识表明转发跳数可信时,判断该转发跳数是否在指定范围内,并在判断为是时与对端建立LDP邻居;
在确定所述根节点并以所述根节点为起点计算转发跳数的路由器不是所述路由器的情况下,所述代理响应中还携带有可信标识,所述路由器在接收到的代理响应中携带的可信标识表明转发跳数可信时,在该转发跳数基础上加上所述入口ABR到所述路由器的转发跳数,判断该转发跳数是否在指定范围内,并在判断为是时与对端建立LDP邻居。
8.如权利要求1-7之一所述的方法,其特征在于,根据所述目的地址确定计算转发跳数的根节点,包括:
根据匹配到的区域内路由查找对应的LSA,查找发布该LSA的源路由器,根据该源路由器及其开放最短路径优先OSPF邻居确定计算转发跳数的根节点。
9.如权利要求8所述的方法,其特征在于,所述根据源路由器及其OSPF邻居确定计算转发跳数的根节点,包括以下(1)至(4)之一:
(1)若匹配到的路由是32位路由,则将所述源路由器作为计算转发跳数的根节点;
(2)若所述目的地址是所述源路由器的一个接口地址,则将所述源路由器作为计算转发跳数的根节点;
(3)若所述目的地址不是所述源路由器的一个接口地址,则查找所述源路由器中的特定路由所对应接口的OSPF邻居路由器,若有OSPF邻居路由器的接口地址为所述目的地址,则将该邻居路由器作为计算转发跳数的根节点;其中,所述特定路由为与所述目的地址对应的路由;
(4)若(1)、(2)和(3)的条件都不满足,则将所述源路由器作为计算转发跳数的根节点。
10.如权利要求9所述的方法,其特征在于,该方法还包括:在所述(1)、(2)或(3)的情况下,对应于以所述根节点为起点计算出的转发跳数设置可信标识的值为可信;在所述(4)的情况下,对应于以所述根节点为起点计算出的转发跳数设置可信标识的值为不可信。
11.如权利要求1-7之一所述的方法,其特征在于,所述路由器根据所述目的地址匹配到的路由为区域内路由的情况下,所述路由器以所述根节点为起点计算所述根节点到所述路由器的转发跳数,包括:
所述路由器以所述根节点为起点进行最短路径优先SPF计算,直到所述路由器进入到SPF树后停止SPF计算,得到从该根节点到所述路由器的转发跳数;其中,从根节点以后每经过一个节点时转发跳数递增,直到将所述路由器作为最后一个节点计算在内时停止转发跳数递增。
12.如权利要求1-7之一所述的方法,其特征在于,所述路由器根据所述目的地址匹配到的路由为区域间路由,并且所述根节点所在区域为主干区域的情况下,以所述根节点为起点计算所述根节点到所述路由器所在区域的入口ABR的转发跳数,包括:
以所述根节点为起点进行SPF计算,直到该根节点所在主干区域的ABR进入SPF树后停止SPF计算;
从各ABR中选取出生成特定LSA的ABR,所述特定LSA为与所述目的地址匹配的路由所对应的LSA,将选取出的各ABR产生的3类LSA中的Metric分别与该根节点到各ABR的路径的cost相加,取数值最小的cost所对应的ABR作为所述主干区域的出口ABR;
将所述主干区域的出口ABR作为所述路由器所在区域的入口ABR,根据所述SPF计算得到的路径,计算所述根节点到该入口ABR的转发跳数;其中,从根节点以后每经过一个节点时转发跳数递增,直到将所述主干区域的出口ABR作为最后一个节点计算在内时停止转发跳数递增。
13.如权利要求1-7之一所述的方法,其特征在于,所述路由器根据所述目的地址匹配到的路由为区域间路由,并且所述计算转发跳数的根节点所在区域为其它分支区域的情况下,以所述根节点为起点计算所述根节点到所述路由器所在区域的入口ABR的转发跳数,包括:
以所述根节点为起点进行SPF计算,直到该根节点所在分支区域的ABR进入SPF树后停止SPF计算;从该分支区域的各ABR中选取出生成特定LSA的ABR,所述特定LSA为与所目的地址匹配的路由所对应的LSA,将选取出的各ABR产生的3类LSA中的Metric分别与该根节点到各ABR的路径的cost相加,取数值最小的cost所对应的ABR作为所述根节点所在区域的出口ABR;根据所述SPF计算得到的路径,计算得到所述根节点到该出口ABR的转发跳数,其中,从根节点以后每经过一个节点时转发跳数递增,直到将所述根节点所在区域的出口ABR作为最后一个节点计算在内时停止转发跳数递增;
将所述分支区域的出口ABR作为主干区域的入口ABR,以该入口ABR为起点进行SPF计算,直到主干区域的ABR进入SPF树后停止SPF计算;从主干区域的各ABR中选取出生成特定LSA的ABR,所述特定LSA为与所述目的地址匹配的路由所对应的LSA,将选取出的各ABR产生的3类LSA中的Metric分别与该根节点到各ABR的路径的cost相加,取数值最小的cost所对应的ABR作为主干区域的出口ABR;根据所述SPF计算得到的路径,计算得到所述根节点所在分支区域的出口ABR到所述主干区域的出口ABR的转发跳数,其中,从所述根节点所在分支区域的出口ABR以后每经过一个节点时转发跳数递增,直到所述主干区域的出口ABR作为最后一个节点计算在内时停止转发跳数递增;
将所述主干区域的出口ABR作为所述路由器所在区域的入口ABR,将所述根据节点到其所在区域的出口ABR的转发跳数加上该出口ABR到所述主干区域的出口ABR的转发跳数,得到所述根节点到所述路由器所在区域的入口ABR的转发跳数。
14.如权利要求1-7之一所述的方法,其特征在于,在有多条转发路径的情况下,所述转发跳数包括上限和下限;
转发跳数上限为所述多条转发路径的转发跳数中的最大值,转发跳数下限为所述多条转发路径的转发跳数中的最小值。
15.一种路由器,应用于多区域网络,各区域中设置有代理设备,其特征在于,包括收发模块、标记分发协议LDP模块和开放最短路径优先OSPF模块,所述OSPF模块包括控制单元、路由匹配单元、计算单元,其中:
所述LDP模块,用于在所述收发模块接收到对端发送的LDP报文后,请求所述OSPF模块计算本路由器到对端的转发跳数,当OSPF模块返回的转发跳数在指定范围内时与对端建立LDP邻居,或者,在所述收发模块向对端发送LDP报文后请求所述OSPF模块计算本路由器到对端的转发跳数,当所述收发模块接收对端回应的LDP报文,且所述OSPF模块返回的转发跳数在指定范围内时与对端建立LDP邻居;
所述控制单元,用于根据所述LDP模块发送的计算转发跳数的请求,指示所述路由匹配单元进行路由匹配,并在匹配到区域内路由时向所述计算单元发送第一指示;在匹配到区域间路由时向所述LDP模块发送代理请求,接收所述LDP代理设备返回的代理响应,并向所述计算单元发送第二指示;
所述路由匹配单元,用于所述控制单元的指示,以对端地址作为目的地址进行路由匹配;
所述计算单元,用于接收到所述控制单元的第一指示后,根据所述目的地址确定计算转发跳数的根节点,计算所述根节点到本路由器的转发跳数,并将其返回给所述LDP模块;根据所述控制单元的第二指示,在所述代理响应中携带的转发跳数基础上加上入口区域边界路由器ABR到所述路由器的转发跳数,得到所述根节点到本路由器的转发跳数,并将其返回给所述LDP模块;
其中,所述LDP模块还用于在接收到所述OSPF模块发送的代理请求时,指示所述收发模块向代理设备发送代理请求,并在所述收发模块接收到所述代理设备返回的代理响应后发送给所述OSPF模块,所述代理响应中携带有计算转发跳数的根节点到本路由器所在区域的入口ABR的转发跳数,其中,所述根节点是根据所述目的地址确定出来的。
16.如权利要求15所述的路由器,其特征在于,在所述路由器被指定为分支区域代理设备时:
所述LDP模块还用于,在所述收发模块接收到所在区域的路由器发送的代理请求后,指示所述收发模块向主干区域代理设备发送代理请求,在所述收发模块接收主干区域代理设备返回的代理响应后,指示所述收发模块将该代理响应返回给发送所述代理请求的路由器;在接收到主干区域代理设备发送的用于指示计算转发跳数的代理请求后,请求所述OSPF模块计算根节点到所在区域出口ABR的转发跳数,并指示所述收发模块将计算出的转发跳数返回给主干区域代理设备;
所述控制单元还用于,根据所述LDP模块发送的计算根节点到所在区域出口ABR的转发跳数的请求,向所述计算单元发送第三指示;
所述计算单元还用于,接收到所述控制单元发送的第三指示后,根据所述目的地址确定计算转发跳数的根节点,计算所述根节点到所在区域出口ABR的转发跳数,并将其返回给所述LDP模块。
17.如权利要求15所述的路由器,其特征在于,在所述路由器被指定为主干区域代理设备时,所述OSPF模块还包括目标分支区域代理设备确定单元;
所述LDP模块还用于,当所述收发模块接收到分支区域代理设备发送的代理请求时,请求所述OSPF模块进行路由匹配,若匹配到的路由为区域内路由,则指示所述OSPF模块计算根节点到主干区域出口ABR的转发跳数,并指示所述收发模块将该转发跳数返回给所述分支区域代理设备,若匹配到的路由为区域间路由,则请求所述OSPF模块确定目标区域代理设备,指示所述收发模块向所述目标区域代理设备发送代理请求;当所述收发模块接收到所述目标分支区域的代理设备返回的代理响应后,请求所述OSPF模块计算根节点到主干区域的出口ABR的转发跳数;
所述控制单元还用于,根据所述LDP模块发送的路由匹配请求,指示所述路由匹配模块进行路由匹配;根据所述LDP模块发送的计算根节点到所在区域出口ABR的转发跳数的请求,向所述计算单元发送第三指示;根据所述LDP模块发送的计算根节点到主干区域的出口ABR的转发跳数的请求,向所述计算单元发送第四指示;根据所述LDP模块发送的确定目标区域代理设备的请求,指示所述目标分支区域代理设备确定单元确定目标分支区域代理设备;
所述计算单元还用于,接收到所述控制单元发送的第三指示后,根据所述目的地址确定计算转发跳数的根节点,计算所述根节点到所在区域出口ABR的转发跳数,并将其返回给所述LDP模块;根据所述控制单元发送到的第四指示,在所述代理响应中携带的转发跳数基础上加上目标分支区域出口ABR到主干区域出口ABR的转发跳数,并将该转发跳数返回给所述LDP模块;
所述目标分支区域代理设备确定单元,用于根据所述控制单元的指示,确定目标分支区域代理设备。
18.如权利要求17所述的路由器,其特征在于,所述目标分支区域代理设备确定单元具体用于,确定第一ABR集合,该集合中的ABR是所述目的地址匹配的路由所对应的ABR;判断第一ABR集合中的ABR产生的3类LSA中,是否有前缀与所述目的地址相匹配,若有,则将该ABR放入第二ABR集合;通过第二ABR集合中的ABR向其对应的区域代理发送请求,并将响应该请求的区域代理设备的其中之一确定为目标分支区域代理设备。
19.如权利要求16或17所述的路由器,其特征在于,所述路由器上还维护有代理表,其中记录有代理请求发起端的地址、源地址、目的地址、转发跳数;
所述LDP模块具体用于,在所述收发模块接收到代理请求后,首先根据该代理请求中携带的所述目的地址和代理请求发起端的地址查找代理表中是否有匹配的表项,如果有匹配的表项,则指示所述收发模块根据该匹配的表项返回代理响应;否则在所述OSPF模块计算出根节点到本代理设备所在区域出口ABR的转发跳数之后,还创建该转发跳数对应的代理表项;
其中,若有代理表项中的目的地址与所述代理请求中的所述目的地址相同、所述代理请求的发起端地址与该代理表项中的代理请求发起端的地址相同,则该代理表项为匹配的表项。
20.如权利要求19所述的路由器,其特征在于,代理表项中还包括与该表项中的目的地址匹配的路由信息,以及在存在下一跳代理设备时还包括下一跳代理设备地址;
所述控制单元还用于,当存在于代理表项中的路由信息发生变化时,在该代理表项中存在下一跳代理设备地址的情况下,通过所述LDP模块向所述下一跳代理设备发送代理请求,其中携带有该表项中的目的地址;接收所述LDP模块转发的该下一跳代理设备返回的代理响应,其中携带有根据所述目的地址确定出的根节点到其所在区域的出口ABR的转发跳数;在该代理表项中的代理请求发起端地址为其它代理设备的地址时,指示所述计算单元计算所述出口ABR到该代理设备所在区域的出口ABR的转发跳数,并将其累加到所述代理响应中携带的转发跳数上,根据得到的转发跳数更新相应代理表项,通过所述LDP模块通知该其它代理设备根据更新后的转发跳数更新相应代理表项;在该代理表项中的代理请求发起端地址不是代理设备的地址时,用所述下一跳代理设备返回的代理响应中携带的转发跳数更新相应代理表项中的转发跳数;
在该代理表项中不存在下一跳代理设备地址的情况下,指示所述计算单元根据该代理表项中的目的地址确定根节点,计算该根节点到所在区域的出口ABR的转发跳数,根据得到的转发跳数更新相应代理表项;并在该代理表项中的代理请求发起端地址为其它代理设备地址时,通过所述LDP模块通知该其它代理设备根据更新后的转发跳数更新相应代理表项。
21.如权利要求19所述的路由器,其特征在于,当建立有LDP邻居关系的路由器取消邻居关系时,存在该LDP邻居关系的路由器向区域代理设备发送代理回收消息,其中携带有源地址和目的地址,所述源地址为该路由器自身的地址,所述目的地址为该路由器的LDP邻居的地址;
所述控制单元还用于,根据源地址和目的地址查找代理表,并在查找到匹配的表项后将该表项删除。
22.如权利要求15-18之一所述的路由器,其特征在于,所述计算单元具体用于,在根据所述目的地址确定计算转发跳数的根节点时,根据匹配到的区域内路由查找对应的LSA,查找发布该LSA的源路由器,根据该源路由器及其OSPF邻居确定计算转发跳数的根节点。
23.如权利要求22所述的路由器,其特征在于,所述计算单元具体用于:
(1)若匹配到的路由是32位路由,则将所述源路由器作为计算转发跳数的根节点;
(2)若所述目的地址是所述源路由器的一个接口地址,则将所述源路由器作为计算转发跳数的根节点;
(3)若所述目的地址不是所述源路由器的一个接口地址,则查找所述源路由器中的特定路由所对应接口的OSPF邻居路由器,若有OSPF邻居路由器的接口地址为所述目的地址,则将该邻居路由器作为计算转发跳数的根节点;其中,所述特定路由为与所述目的地址对应的路由;
(4)若(1)、(2)和(3)的条件都不满足,则将所述源路由器作为计算转发跳数的根节点。
24.如权利要求23所述的路由器,其特征在于,所述计算单元还用于,在所述(1)、(2)或(3)的情况下,对应于以所述根节点为起点计算出的转发跳数设置可信标识的值为可信;在所述(4)的情况下,对应于以所述根节点为起点计算出的转发跳数设置可信标识的值为不可信。
25.如权利要求15-18之一所述的路由器,其特征在于,所述计算单元具体用于,在计算所述根节点到所述路由器的转发跳数时,以所述根节点为起点进行SPF计算,直到所述路由器进入到SPF树后停止SPF计算,得到从该根节点到所述路由器的转发跳数;其中,从根节点以后每经过一个节点时转发跳数递增,直到将所述路由器作为最后一个节点计算在内时停止转发跳数递增。
26.如权利要求15-18之一所述的路由器,其特征在于,所述计算单元具体用于,在计算所述根节点到所述路由器所在区域的入口ABR的转发跳数时,以所述根节点为起点进行SPF计算,直到该根节点所在主干区域的ABR进入SPF树后停止SPF计算;
从各ABR中选取出生成特定LSA的ABR,所述特定LSA为与所述目的地址匹配的路由所对应的LSA,将选取出的各ABR产生的3类LSA中的Metric分别与该根节点到各ABR的路径的cost相加,取数值最小的cost所对应的ABR作为所述主干区域的出口ABR;
将所述主干区域的出口ABR作为所述路由器所在区域的入口ABR,根据所述SPF计算得到的路径,计算所述根节点到该入口ABR的转发跳数;其中,从根节点以后每经过一个节点时转发跳数递增,直到将所述主干区域的出口ABR作为最后一个节点计算在内时停止转发跳数递增。
27.如权利要求15-18之一所述的路由器,其特征在于,所述计算单元具体用于,在计算目标分支区域出口ABR到主干区域出口ABR的转发跳数时,将目标分支区域的出口ABR为起点进行SPF计算,直到主干区域的ABR进入SPF树后停止SPF计算;从主干区域的各ABR中选取出生成特定LSA的ABR,所述特定LSA为与所述目的地址匹配的路由所对应的LSA,将选取出的各ABR产生的3类LSA中的Metric分别与该根节点到各ABR的路径的cost相加,取数值最小的cost所对应的ABR作为主干区域的出口ABR;根据所述SPF计算得到的路径,计算得到目标分支区域出口ABR到所述主干区域出口ABR的转发跳数,其中,从目标分支区域的出口ABR以后每经过一个节点时转发跳数递增,直到所述主干区域的出口ABR作为最后一个节点计算在内时停止转发跳数递增。
28.如权利要求15所述的路由器,其特征在于,在有多条转发路径的情况下,所述转发跳数包括上限和下限;
转发跳数上限为所述多条转发路径的转发跳数中的最大值,转发跳数下限为所述多条转发路径的转发跳数中的最小值。
CN201110394628.0A 2011-12-02 2011-12-02 一种ldp远程邻居配置方法及设备 Active CN102497309B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110394628.0A CN102497309B (zh) 2011-12-02 2011-12-02 一种ldp远程邻居配置方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110394628.0A CN102497309B (zh) 2011-12-02 2011-12-02 一种ldp远程邻居配置方法及设备

Publications (2)

Publication Number Publication Date
CN102497309A CN102497309A (zh) 2012-06-13
CN102497309B true CN102497309B (zh) 2016-01-20

Family

ID=46189097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110394628.0A Active CN102497309B (zh) 2011-12-02 2011-12-02 一种ldp远程邻居配置方法及设备

Country Status (1)

Country Link
CN (1) CN102497309B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102427425B (zh) * 2011-12-02 2014-06-25 杭州华三通信技术有限公司 一种ldp远程邻居配置方法及设备
CN104767688B (zh) * 2015-04-15 2018-02-09 新华三技术有限公司 通用存活时间安全机制检查方法及装置
CN112055083B (zh) * 2020-09-08 2022-06-10 中国工商银行股份有限公司 请求处理方法、装置、电子设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1878125A (zh) * 2005-06-06 2006-12-13 华为技术有限公司 提高骨干网络安全性的实现方法
WO2010132061A1 (en) * 2009-05-15 2010-11-18 Hewlett-Packard Development Company, L. P. A method and apparatus for policy enforcement using a tag
CN102123097A (zh) * 2011-03-14 2011-07-13 杭州华三通信技术有限公司 一种路由保护方法和设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1878125A (zh) * 2005-06-06 2006-12-13 华为技术有限公司 提高骨干网络安全性的实现方法
WO2010132061A1 (en) * 2009-05-15 2010-11-18 Hewlett-Packard Development Company, L. P. A method and apparatus for policy enforcement using a tag
CN102123097A (zh) * 2011-03-14 2011-07-13 杭州华三通信技术有限公司 一种路由保护方法和设备

Also Published As

Publication number Publication date
CN102497309A (zh) 2012-06-13

Similar Documents

Publication Publication Date Title
CN102571557B (zh) 动态产生应用层流量优化协议图
CN102427425B (zh) 一种ldp远程邻居配置方法及设备
CN107070798B (zh) 网络区域划分方法、网络设备和系统
CN101455030B (zh) 动态共享风险节点组(srng)成员发现
US11431633B2 (en) Label forwarding entry generation method and apparatus, packet sending method and apparatus, and device
US6496510B1 (en) Scalable cluster-type router device and configuring method thereof
US8065434B2 (en) Method and device for maintaining routes
CN102907072B (zh) 利用NAT64启用IPv6移动性
EP2093963B1 (en) A method, system and path computation element for obtaining path information
US20100254401A1 (en) Methods and Apparatus for Separating Home Agent Functionality
CN103236971B (zh) 一种内容互联网的路由转发方法
CN104283789B (zh) 路由收敛方法和系统
EP2198571B1 (en) Method and apparatus for network routing between a tactical network and a satellite network
CN105634956A (zh) 一种报文转发方法、装置和系统
CN105162900A (zh) 一种多节点协作的域名解析和缓存方法及系统
CN104081749B (zh) 用于dos攻击保护的dad-ns触发的地址解析
CN111598564B (zh) 区块链节点连接建立方法、装置及设备
US20120124238A1 (en) Prioritization of routing information updates
CN101155119B (zh) 一种确定自治系统边界节点的方法、装置及路径计算方法
CN102497309B (zh) 一种ldp远程邻居配置方法及设备
CN101141376A (zh) 建立te路径的方法、路径计算设备和系统
CN102546419B (zh) 一种路由方法和装置、分组转发方法和系统
US8423668B2 (en) Link state protocol routing message containment
CN101527683B (zh) 一种路径计算的方法、装置及系统
CN101626341B (zh) 链路状态协议下的信息同步方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CP03 Change of name, title or address