用测试分组操作网络的方法

文档序号:7948035阅读:223来源:国知局
专利名称:用测试分组操作网络的方法
技术领域
本发明涉及一种操作网络的方法。具体地说,本发明涉及一种操作数据网络或互联网络(即,链接在一起的不同网络的集合,最广为人知的示例为因特网)的方法、以及根据这种方法进行操作的网络或互连网络、和这种网络内的可以进行操作以执行这种方法的单个装置。
背景技术
因特网是链接在一起以形成互连网络的不同分组交换网络的集合。为了从因特网上的一个节点将数据成功地发送到另一个节点,使用被称为网际协议(IP)的协议。这使得能够通过因特网将IP数据报从发送(即始发)源节点路由到接收(即终止)目的地节点。如数据网络领域的技术人员所公知的,与数据网络的ISO七层参考模型相比,IP是层3或网络层协议。这实质上意味着其负责在网络或互连网络上通过多跳来传送数据。由此在各跳处,读取最终的IP地址并选择向前路由,除非数据碰巧到达了目的地节点,在这种情况下其将拒绝层堆栈。
由此,IP是由源节点、目的地节点和中间节点(它们例如可以分别是网络服务器、网络客户端和多个路由器)用来在分组交换网络(或者更通常的是,互连网络)上传送数据的面向数据的协议。此外,IP具有如下特性无论源节点和目的地节点先前是否预先与另一节点进行了通信,并且无论要传输的数据类型如何,在源节点试图将数据传输到目的地节点之前都无需特殊的开始处理。
为了实现这一特性,IP规定以IP数据报来传输数据,各个IP数据报包括头部和有效载荷部。要传输的数据(或其一部分)承载在IP数据报的有效载荷部,而头部包含使得中间路由器能够按照适当方式整体地处理数据报以试图将其递送到目的地节点的信息。
如上所述,IP仅代表互连网络提供的多层中的一层,用于使得能够在互连网络上成功地传输数据,与七层OSI参考模型相比,IP大致对应于层3,即网络层。网络层“之下”是数据链路层和物理层,因此可能将各个IP数据报封装在一个或更多个下层(即,链路层)数据分组中以从网络上的一个节点传输到同一网络中的另一节点。然而,各个节点将从接收到的分组中“剥出”IP数据报,并将其传递到各个中间节点内以及目的地节点处的IP功能。各个中间节点内的IP功能然后读取IP头部以确定其是否为目的地节点。如果它是目的地节点,则将IP数据报的有效载荷部的内容传递给在IP数据报的头部中标识的下一层功能(例如传递给传输控制协议(TCP)功能或者传递给用户数据报协议(UDP)功能),如果它不是目的地节点,则试图朝向目的地节点继续转发IP数据报——下面将更详细地描述其机制。连接到多个不同网络并因此是通常具有很多与其他节点的直接连接的重要互连节点的中间节点典型地公知为路由器或网关,并且作为它们的唯一或主要目的通常执行数据传输。
互连网络一般可以被认为是可以按不同等级观察的分级实体。在高等级处,可以认为是所谓的自治系统(AS)。这些自治系统通常连接在一起以形成AS的互连网络。各个AS通常包括网络本身或者甚至包括互连网络,该互连网络本身是由多个较小型网络或子网络形成的。将不同AS连接在一起的路由器通常被称为边界网关。为了在由多个AS形成的互连网络上路由通信,各个AS保持有说明相邻AS通信应该发送到哪以到达任一给定IP目的地地址的路由表。在一些互连网络中,可以使用公知为边界网关协议(BGP)(在提交本申请时的最新版本为BGP版本4)的域内路由协议(域即为AS)之一按照自治方式来保持这些路由表。通过BGP传输控制协议(TCP),在AS之间建立连接,以在边界网关路由器之间传送路由信息。
在自治系统内,使用类似的机制来通过网络将IP数据报从一个点路由到另一个点,在另一个点处路由器再次保持路由表。然而,代替使用BGP,相反使用内部网关协议(IGP)。目前使用了多个IGP。用于相对小型网络的一个普遍使用的IGP是路由信息协议(RIP),RIP使用用户数据报协议(UDP)来在协作的路由器之间传送路由信息,而不是形成TCP连接。使用RIP,网关主机(其带有路由器)每30秒将其整个路由表(该路由表列出了其所知道的全部其他主机)发送到其最近的相邻主机。该相邻主机进而将该信息传递到它的下一相邻主机,依此类推,直到网络内的所有主机都同样了解了路由路径,这一状态公知为网络趋同(network convergence)。RIP使用跳计数作为确定网络距离的方法。(其他协议使用例如可能还包括定时的更复杂算法。)另一普遍使用的IGP是开放最短路径优先(OSPF)协议。这一协议类似于RIP,只是该协议具有更少的开销,因为该协议仅在路由器的路由表中发生变化时才发送消息。此外,该协议发送比RIP中发送的信息更多的信息。
然而,所有这些路由表更新机制都具有安全性方面的问题。具体来说,存在如下危险路由器可能被“黑”并随后处于恶意第三方的控制下,该恶意第三方随后可能发送虚假的路由更新消息到相邻的路由器,并将系统进入混乱状态,这造成大量的分组丢失或严重的分组延迟(例如,通过向所有的相邻路由器通知其表示到所有目的地的最佳下一跳,然后简单地扔掉所有接收到的分组而不是转发它们)。此外,通过分析控制和数据通信量,通信中带有的机密信息可能经由被黑的路由器而暴露给未授权的第三方。
处理涉及路由器安全问题的大部分努力集中在对路由器之间的通信进行认证以防止所谓的“中间人”和相似类型的攻击(或者至少使其更困难)。然而,这种方法在处理周期方面存在大量开销(用来执行加密和解密)、并且在广播额外信息(数字签名、散列函数等)方面也存在大量开销。此外,这些方法对于“被黑的”合法路由器的风险统统无效。

发明内容
根据本发明,提供了一种操作数据网络的方法,该数据网络的类型为其中多个相互连接的路由器装置根据与各个路由器相关联的路由表将接收到的数据分组朝向目的地节点转发,所述方法包括以下步骤在所述多个路由器之一接收路由信息,确定所述信息是否是这样的信息,即如果该信息是正确的则其使得该路由器更新其路由表中的一个或更多个条目,并且,如果确定所述信息是这样的信息,则发送两个测试分组,所述两个测试分组中的一个测试分组是根据路由表中包含的现有信息发送的,而另一个测试分组是根据若依照接收到的信息更新了路由表则路由表中将包括的信息而发送的;比较两个测试发送的结果;并且,如果比较表示接收到的信息是正确的,则更新路由表以反映接收到的信息,否则忽略所述信息并保持路由表不变。
该方法与现有技术方法相比具有如下优点“开销”很小——两个测试发送可以包括两个小测试分组,无需进行加密或解密,并且仅当接收到的信息是使得路由器存储的路由表可能发生变化的信息时才需要发送测试分组;对于包括被黑的路由器攻击在内的大量不同攻击很有效——因为该方法有利地检查可能在路由器的路由表中造成改变的所有信息,而与该信息来自哪里(或声称的来源)无关,所以该方法在处理包括中间人类型的攻击以及“被黑的”路由器型攻击在内的所有种类的攻击方面很有效;引入当前路由器非常简单——在现有路由器中实现该方法无需大量的附加硬件,全部所需要的是一些相对简单的附加软件;不排他——该方法不排除附加地使用的其他类型的安全措施。
优选的是,路由表是用于路由IP数据报和数据报片段的IP路由表。测试分组优选地为因特网控制消息协议(ICMP)消息。这种消息可以是回应请求消息,或者更优选地在目的地支持时间戳请求消息的情况下为时间戳请求消息。请求消息的序号优选地是通过以下步骤来确定的随机生成一个号码,随后根据所述随机生成的号码设置另一测试消息的序号(例如,nRANDOM和nRANDOM+1)。测试消息优选地包括用于使得更难以使用“分组窃听者(packet-sniffer)”来将消息检测为ICMP消息的数据填充。
根据本发明的第二方面,提供了一种操作数据网络或互连网络内的路由器的方法,在所述数据网络或互连网络中,数据分组可以通过相邻路由器之间的多跳从所述网络或互连网络内的源节点发送到目的地节点,其中,所述路由器保持有路由表并通过查询该路由表来确定如何转发接收到的要求向前传输的数据分组,所述方法包括以下步骤接收网络配置信息,确定该信息是否表示路由器应修改其路由表中的一个或更多个条目,并且如果确定是这样,则执行测试以确定实际上是否应按照所接收到的信息指示的方式修改路由表,并且如果确定是这样则相应地更新路由表,否则就保持路由表不变。
根据本发明的第三方面,提供了一种用在数据网络中的路由器,该路由器包括存储装置,用来存储路由表;多个通信端口,当所述路由器用作相互连接的网络或者节点或网络的互连网络的一部分时,所述多个通信端口将数据发送到相互连接的节点并且从相互连接的节点接收数据;以及处理器或处理器组,用来处理在一个或更多个通信端口接收到的关于网络配置的信息,并根据所接收到的网络配置信息更新路由表,该路由器的特征在于,所述处理器或处理器组在接收到新的网络配置信息时可以附加地进行如下操作确定所述信息是否表示所述路由器应修改其路由表中的一个或更多个条目,并且如果确定是这样,则执行测试以确定实际上是否应按照所接收到的信息指示的方式修改路由表,并且如果确定是这样则相应地更新路由表,否则就保持路由表不变。
优选的是,所述测试包括如下操作对于路由器鉴于所接收到的网络配置信息而确定为应该改变的各个条目发送一对测试分组,其中,各个测试分组对中的一个测试分组是根据路由表中包含的现有信息发送的,而其中另一个测试分组是根据若依照接收到的信息更新了路由表则路由表中将包括的信息而发送的。
当然,代替仅在测试结果已确认这种修改是适当的之后才修改路由表,路由器相反可以立即修改路由表、但是在测试表示实际上终究不应进行修改的情况下将该表还原其先前状态。
根据本发明的第四方面,提供了一种包括多个根据本发明第三方面的路由器的网络或互连网络。
根据本发明的第五方面,提供了一种计算机程序或计算机程序组以及/或者带有这种程序或程序组的载体介质,所述计算机程序或计算机程序组用于在执行期间执行本发明第一方面或第二方面的方法。


为了可以更好地理解本发明,下面将参照附图仅通过示例方式来描述本发明的实施例,在附图中图1是适合于实现本发明实施例的数据互连网络的示意图;图2是实现本发明实施例的网络的程式化图;图3是例示了根据本发明实施例的操作路由器的方法的流程图;以及图4是图3中的测试子程序的子步骤的流程图。
具体实施例方式
首先参照图1,描述根据本发明的数据互连网络的典型结构。
数据互连网络的结构图1示出了互连网络100,该互连网络100包括经由主干ATM网络148(其包括多个主干路由器141至145)连接在一起的多个自治系统(AS)110、120、130。在该示例中,AS 110包括经由令牌环局域网(LAN)118连接在一起的五个工作站112a至112e。AS 10还包括打印机114和三个内部路由器115、116及117,所有这三个内部路由器还通过令牌环形LAN118连接在一起。AS 12包括全部经由光纤分布式数据接口(FDDI)LAN128连接在一起的工作站122、服务器121以及两个路由器123和124。AS 130包括服务器131、两个有线路由器132和133、以及两个无线路由器134和135(它们分别提供到膝上型计算机136和台式计算机137的无线连接)。图1中未明确示出使用哪种LAN技术来将AS 130的部件连接在一起,但是其例如可以是简单的以太网LAN。
为了介绍本发明,下面将概括地描述将数据分组从互连网络100上的第一装置112a(下文中称作节点112a)传输到第二装置136(下文中称作节点136)所采取的步骤。当节点112a内的IP功能接收到要传输的数据分组时,它首先检查目的地节点对其来说是否为本地的(即,目的地节点是否是节点112b或114)。因为在这种情况下,目的地节点(节点136)对于节点112a来说不是本地的,所以其将数据分组传输到其本地路由器117。路由器117检查目的地地址并确定目的地地址在AS 110之外、由此确定需要将其发送到可以访问外部网络的网关路由器。在这种情况下,路由器117是这种网关路由器,因而它能够将分组转发到外部路由器142。外部或主干路由器142查询其路由表来确定对于通信来说到节点136所在的网络的当前优选下一跳;出于本示例的目的,我们可以假设AS 3与其自身的唯一网络相关联。因此路由器142在查询其路由表时可以发现路由器144是当前优选的下一跳目的地,路由器144进而可以发现路由器143是让通信到达与AS 130相关联的网络的其当前优选下一跳目的地。在路由器143处,确定它具有到AS 130内的网关路由器132的直接链路,因此将分组发送到路由器132。路由器132然后查询其路由表来查找节点136(或者更精确地说,查找节点136的IP地址)。因为在这种情况下节点136是移动装置(膝上型计算机),所以节点136当前很可能具有由无线调制解调器135(它可以具有有限数量的IP地址,它可以将这些IP地址动态地分配给与之相连接的装置,AS 130内的路由器知道所有这些IP地址都是可以从节点135访问的)分配给其的动态分配的临时IP地址;因此路由器132根据其路由表确定装置131是从路由器132到节点135的通信的下一跳。在服务器131处,再次根据其路由器表确定目的地IP地址与节点135相关联,因此将分组直接传输到无线调制解调器135,无线调制解调器135最后通过无线链路将分组传输到膝上型计算机136。
根据以上讨论可见,为了通过互连网络在分立的网络上的两个装置之间传输数据,在大量节点之间传输各个分组,所有这些节点都用作路由器(除了始发节点和目的地节点),其中一些节点是内部路由器,而一些节点是主干路由器,网关路由器跨接这两个不同的域。在各个路由器处,查询内部路由表来确定分组的下一跳。内部路由器详细了解其网络内的装置的位置的结构种类、以及用于处理去往外部目的地和外部路由器的通信的单个或很少几个缺省类型选项不了解属于自治系统的不同网络的内部结构,但是如何到达与主干网络(其包含外部路由器)相连接的不同网络的入口点的详细内容是共同的。这种结构还是可以缩放的,使得诸如图1中所示的互连网络实际上可能形成通过甚至更大的主干网络等链接在一起的较大的子网络(或子互连网络)集合的子网络(或子互连网络)。
本发明涉及路由器更新其路由表的方式。本发明可以同样地应用到所有这种方法。具体来说,本发明可以应用于用来更新内部路由器的路由表的算法以及用来更新外部路由器的算法。因此下面的讨论描述了本发明如何应用到用于更新内部路由器的典型算法(即,路由信息协议(RIP))和用于更新外部或网关路由器内的路由表的典型算法(即,边界网关协议(BGP))。当然,如上所述,本发明可以按照与下面示出的将其应用于RIP和BGP的方式相对应的方式同样地应用于其他路由协议。
简言之,在RIP中,分组通常经由被记录为具有最低代价的路由器而转发到目的地。路由表仅包含与各个目的地的最低代价路由相对应的记录(基本上按照目的地和从该路由器到达它们的“代价”(例如,基于跳数)的列表的形式)。在BGP中,各个路由器的更新消息包括到所有可达目的地的最新路由路径。定期地广播该消息。在路由器将该更新消息中继到其相邻路由器之前,路由器添加上其自身的AS标识符(AS号)。此外,BGP还便于基于预定路由策略集对多个另选路线进行排序。
RIP在RIP中,各个路由器保持按子网中的各个路由器编制索引、并对子网中的各个路由器都包含一个条目的路由表。条目包含两个部分用于目的地的优选呼出链路和到该目的地的代价估计。对代价的衡量标准可以是跳数、毫秒级的时间延迟、沿路径排队的分组总数或类似内容。如果使用延迟作为衡量标准,则路由器可以用特殊的ECHO分组(接收方仅对其加以时间戳并尽可能快地将其发回)来直接测量延迟(注意,这是由在属于因特网控制消息协议(ICMP)的RFC 792和1122中的因特网工程任务组(IETF)规定的功能,并且实现IP的“每个主机”都必须提供该功能)。
作为示例,假设路由器了解到其各个相邻路由器的延迟。每个路由器每T毫秒一次地向各个相邻路由器发送其到子网中(例如,自治系统内)的各个路由器的估计延迟的列表。路由器还从各个其相邻路由器接收类似的列表。设想这些表之一恰来自相邻路由器X,Xi是X的到达节点i所花时间的估计值。如果该路由器知道到其相邻路由器X的延迟为m毫秒,则该路由器还知道它可以经由X在经由X的(Xi+m)毫秒内到达节点i。通过对各个相邻路由器执行该计算,路由器可以找出哪个估计值看起来是最好的,并在其新路由表中使用该估计值和相应的链路。需要注意的是,在计算中不使用旧的路由表。
BGP在BGP中,BGP路由器对通过建立TCP连接而彼此通信。按照这种方式运行提供了可靠的通信并隐藏了所通过的网络的全部细节。BGP从根本上是距离矢量协议,但与RIP颇为不同。代替仅保持到各个目的地的代价,各个BGP路由器记录所使用的确切路径。同样,代替定期地向各个相邻路由器给出其到各个可能目的地的估计代价,各个BGP路由器告诉其相邻路由器它正在使用的确切路径。
此外,RIP/BGP路由表建立在二手信息上,在常规的广泛使用的RIP和BGP协议中实际上从来不对该信息进行验证。例如,如果路由器R宣称具有到给定网络的最佳路线,则其他路由器不会验证这一信息。事实上,它们甚至不验证该信息是从路由器R发送来的或者甚至不验证路由器R的存在!无需强调,这种验证的缺失可能是敞开的安全漏洞。传播假的路由信息并使整个网络陷入灾难根本不困难。这是一个精明但恶意的用户可以中断整个IP网络的通信的清晰示例。尽管增强版RIP 2和BGP4包括简单的认证机制,但仍有很多改进之处。
在下面的部分中,描述了本发明的两个实施例。实质上,这些实施例分别是RIP和BGP协议的改进,其中在使用由相邻路由器发送的路由信息来更新路由表之前对该信息进行验证。用作例示本发明的示例的改进RIP和BGP协议下面被称为验证RIP(V-RIP)和验证BGP(V-BGP)。
V-RIP在该方法中,并不是一从任何相邻路由器接收到新的更新消息就轻信地更新其路由表,在该方法中路由器首先验证该信息是否相当有可能是正确的。下面列出在本实施例中执行的用于实现该验证的确切步骤。将参照图2以及图3和图4来进行以下描述,图2示出了包括多个节点A到L(注意,在描述V-RIP时假设这些节点都是内部路由器,而在我们描述V-BGP时假设这些节点都是外部路由器)的大大简化的网络结构,图3和图4通过流程图例示了所包含的步骤。
1.当路由器从其相邻路由器接收到更新消息时,它并不立即更新其路由表,相反,它通过将新消息与其RIP的当前路由表进行比较来分析该新消息(S10)。
2.作为使用延迟作为衡量标准的示例,在图2中,路由器J常规地从其相邻路由器A、I、H和K接收路由信息更新。在路由器J中,存储来自所有相邻路由器的两个连续(上一个和当前的)路由更新消息。
3.每当路由器J接收到更新时,它检查(S20)对其当前路由表的更新来确定该更新是否表示应对路由表进行改变(例如,如果通过将路由表(所述路由表通常是根据从相邻路由器发送的最新路由更新消息集而形成的)与路由器A发送的当前更新进行比较而确定了该更新表示到路由器D的延迟的显著减少。)(注意实际上,例如,如果A通告具有较大延迟的假路由信息,那么,由于路由器很少经由路由器A传输通信,所以A将与网络自动隔离。)4.如果(在图3中的确定步骤S30)更新表示不可能对路由器确定有任何影响(例如,因为更新不表示经由A到达任何目的地将比先前通过另一第一跳路由器到达得更快),则路由器J不采取任何行动(并且,该方法结束)。
5.然而,如果(在判定步骤S30)更新确实表示可能对路由器确定造成影响(例如,因为更新表示现在经由路由器A到达路由器D比经由路由器H快得多),则路由器J加以时间戳并经由两个不同的路线将带有不同序号和随机量的填充的两个诊断分组发送(在子程序S40)到受影响的路由器(例如,路由器D)。一个路线是经由“新”路由器(例如,路由器A),另一个路线是经由路由器J的当前路由表中的用于受影响目的地节点(例如,路由器D)的当前下一路由器。在接收到诊断分组时,目的地路由器(例如,路由器D)尽可能快地(根据诊断分组的确切特性,有可能如果恰当的话就在按照某种方式对分组加以时间戳之后)仅仅发回两个应答分组。通过注意与两个诊断分组相对应的这两个应答分组的接收时间,并将这些接收时间与原诊断分组的发送时间相比较,路由器J根据两个路由器之间的分组传输时间来计算哪个路线最短。
6.如果(在步骤S50)确定了由路由器A通告的新路线的分组传输时间少于路由表当前建议的路线的分组输出时间,则有理由假设最近接收到的更新(例如,来自路由器A的更新)中所包含的信息是正确的,因此路由器J正常地更新其路由表(在步骤S60),并更新由所有相邻路由器发送的路由消息集(即,删除当前的“前一更新”,并将当前的“当前更新”(即新接收到的更新)移到“前一更新”)。
7.然而,如果(在步骤S50)确定由路由器A通告的新路线的分组传输时间不少于路由表当前建议的路线的分组传输时间,则有理由怀疑来自路由器A的新路由信息,因此路由器J不使用来自路由器A的路由信息来更新路由表。此外,简单地丢弃新接收到的更新,并且不对存储在“前一更新”字段中的值进行改变。如果(在步骤S70)确定持续发生异常(例如,如果接收到的连续怀疑超过预定数量、由此被丢弃的更新超过预定数量),则路由器J(在步骤S80)在结束该方法之前向其系统发出告警。
按照上述方式,使用该简单的验证,通过诚实的相邻路由器可以滤除并终止来自错误配置或恶意的路由器的假路由信息。
下面将通过参照图2以及表1和2的以下示例来例示上述处理。
表1示出了从路由器J到其4个相邻路由器的测量时间、在时间T记录在路由器J中的来自A、I、H、K的路由消息、以及路由器J根据这两个信息集生成的路由表。通常,如在表1中所做的,如果所有路由信息都是正常的,则路由器J每当接收到来自其相邻节点的新的更新集时计算新的路由表(如表1中的最右边的3列所显示的)。
表1

为了进行说明,考虑J如何计算其到路由器D的新路线。路由器J知道它可以在8毫秒内到达其相邻路由器A,并且A宣称能够在40毫秒内到达D,因此J假设它可以经由A到达D的延迟为(8+40)48毫秒。同样,J假设它可以经由I到达D的延迟为(10+27)37毫秒,经由H到达D的延迟为(12+8)20毫秒,经由K到达D的延迟为(6+24)30毫秒。因此最小的延迟为20毫秒(经由相邻路由器H)。因此,在J的路由表中,到D的路由指定20毫秒的延迟,并且指定第一跳目的地为H。
表2


表2示出了在时间T+1在路由器J中记录的来自A、I、H、K的路由消息、以及在常规情况下马上或者根据本实施例一旦新接收到的更新的相关一个或多个方面经过了验证就根据新的更新而得到的新路由表。显然,路由器A声称到路由器D的延迟显著降低,从其先前通告的40毫秒延迟降低到10毫秒。当路由器J例行地计算经由A到D的延迟时,由此其确定经由A的新延迟仅为(8+10=)18毫秒。显然,18毫秒的新延迟小于J的当前最小延迟值20毫秒,因此,现在根据在时间T+1从所有相邻路由器接收到的当前更新到D的最快路线是经由A(下一最快路线是经由H的20毫秒)。
因此,根据本实施例,J现在试图验证来自A的路由信息(而同时保持在时间T接收到的更新消息的副本——事实上,在本发明中,实际上在完成测试之前根本不生成表2,从而在根据需要验证了新更新之前根据表1的路由表转发在此期间接收到的所有分组)。为了执行验证,路由器J对两个诊断分组P和Q(它们是相似的,只是序号不同)加以时间戳,并经由两个不同的路线将它们发送到路由器D。分组P经由路由器A传输到D,而分组Q经由H(路由器J的当前路由表中(即,根据表1)的目的地D的当前下一路由器)传输到D。在接收到诊断分组时,路由器D优选地尽可能快地用两个响应分组进行回应。此外,如果路由器D支持这种特征,则它可以对分组加以时间戳以精确地显示路由器D何时接收到测试分组,并且还可以显示应答分组何时离开路由器D。
如果在出现超时之前收回了两个响应分组,则路由器J确定哪个诊断分组首先到达目的地路由器D(或者至少哪个诊断分组首先返回)。根据本实施例,如果确定了经由新路线的分组为具有最小延迟(即,如果路由器J发现诊断分组P的返回时间短于诊断分组Q的返回时间),则假设来自相邻路由器A的最新更新是正确的,并且根据表2更新其表(即,路由器J将经由A的18毫秒作为其到D的最新估计延迟而设置在其路由表中)。
另一方面,如果路由器J确定经由新路线发送的诊断分组并不是首先到达目的地(即,路由器J发现诊断分组P的返回时间长于Q的返回时间),则认为来自路由器A的新路由更新消息(即,在时间T+1的路由更新消息)是可疑的,并且路由器J将这一事件记录在其系统日志文件中。J随后不采取任何行动来更新其来自A的路由消息或其路由表(并不对于来自A的可疑信息进行更新)。
然而,需要注意,在本实施例中仍使用来自任何其他受信任的相邻路由器的任何非可疑信息来更新路由表;然而,仍将来自路由器A的不重要因此未经验证的信息认为是可疑的——尽管它并未积极地不通过验证——并且因此删除A的最新更新消息中的所有消息。因此将生成如下的新表其中来自路由器A的条目实际上对应于在时间T从A接收到的更新消息,而其余来自相邻路由器I、H和K的更新是在时间T+1接收到的更新。在本示例中(因为在时间T+1的来自相邻路由器I、H和K的更新与在时间T接收到的更新相同),新表(没有单独示出)的实际效果实际上一致地等同于表1。
如果路由器A持续发送可疑的路由消息(即,如果系统日志检测到在预定量的时间内(或者在预定量的更新消息内)从特定的相邻路由器接收到多于规定数量的可疑更新),则路由器J向系统管理员发送告警。
此外,在本实施例中,如果在发生超时之前没有接收到诊断分组中的一个或全部两个,则路由器J重试测试直到规定次数(例如,3次);这是本发明的另一重要特征——容错性有助于提高本方法的可靠性。如果持续地不能在发生超时前接收到诊断分组中的一个或全部两个,则路由器根据以下内容进行操作如果经由新路线的分组持续地超时,但经由旧路线的分组不是这样,则认为更新消息可疑,并且路由器按照以上描述的处理可疑更新的方式操作;如果经由旧路线的分组持续地超时,但经由新路线的分组不是这样,则认为更新有效,并且路由器按照以上描述的处理可信更新的方式操作;并且如果两个分组都持续地超时,则认为可能存在某一普遍问题,因此出于谨慎起见,不信任新更新,但是在系统日志中并不将其记录为可疑,因此它对于用于向系统管理员发送警告的对可疑更新的计数不起作用。
两个诊断分组的成功发送和返回对于该方案的成功是至为关键的。因此,在本实施例中,将一个分组的序号随机生成为Y,有效位长度为16(或者更多,如果诊断分组的特性允许的话);在本实施例中,将另一分组的序号设置为(Y+1)。该随机生成的序号有助于防止序号预测攻击,这是因为即使一个或两个诊断分组被窃听或发觉,也不会对以后的任何诊断分组造成任何影响。其次,向诊断分组应用数据填充,由此将随机选择量的表面上无用的信息位(所谓的填充)加入到分组,这使得网络窃听者更难以分析通信,并将重要的诊断分组与其他承载IP分组的普通数据区分开来。
图4中例示了在本发明中执行的上述测试或验证子程序,其包括以下子步骤的序列。首先,在步骤S410,生成随机数(Y)来形成第一诊断分组(P)中的序列ID。接着,在步骤S420,生成第一诊断分组(P)(其具有随机生成的序号Y和随机量的数据填充)。然后,在步骤S420,经由新路线(例如,经由路由器A)传输第一分组(P)。然后,在步骤S430,生成第二测试分组(Q)(其具有序列ID Y+1和随机量的数据填充)。在步骤S450,经由旧的路线(例如,经由路由器H)传输第二测试分组(Q)。在步骤S460,路由器等待接收对两个诊断分组的回应,然后在步骤S470,路由器报告结果,即其在可以获得实际往返时间或者到达目的地的单程时间的情况下报告实际往返时间或者到达目的地的单程时间,或者,另选的是,路由器仅返回哪个诊断分组的延迟更少。如果在接收到响应之前一个或两个诊断分组超时,则如上所述地采取行动。
在本实施例中,诊断分组在目的地路由器(例如,以上给出的示例中的路由器D)支持时间戳因特网控制消息协议(ICMP)消息的情况下采取时间戳因特网控制消息协议(ICMP)消息的形式,如果目的地路由器不支持时间戳消息则采取简单的Echo请求和应答ICMP消息的形式。然而毫无疑问,在另选实施例中,可以设计并采用任意数量的不同诊断分组结构来执行测量到特定目的地路由器的延迟的功能;具体来说,可以使用指定确切路线并确保在回程中遵循同一路线的诊断分组等。
V-BGP1.当一个路由器接收到来自其相邻路由器的更新消息时,它并不立即更新其路由表;相反,它通过将该更新消息与其BGP当前路由路径相比较来分析新消息。
2.作为示例,在图1中,路由器J定期地接收来自其相邻路由器A、I、H和K的路由信息更新。在路由器J中,记录了来自所有相邻路由器的两个连续(上一个和当前)路由消息。
3.在时间T,路由器A向路由器J发送其到D的路由路径A-B-C-D,在时间T+1,该消息变为A-G-D。因此,路由器J识别出到路由器D的跳数的显著减少。路由器J如在普通BGP中一样使用其自身的“距离”函数来评估是否应改变其到路由器D的路由路径(注意实际上,如果A通告路径更长的假路由信息,则将自动地把A与网络隔离开。或者,如果A出于其策略而通告路径更长的路由信息,则J可以安全地将其忽略)。
4.如果不改变,则路由器J不采取动作。
5.如果改变,则路由器J对序号不同的两个类似诊断分组P和Q加以时间戳并经由两个不同的路线将它们发送到路由器D。分组P经由路由器A到达D。分组Q经由其当前路由路径到达D。路由器D仅对这两个诊断分组加以时间戳(如果可能的话),并尽可能快地发回两个响应分组。通过接收与两个诊断分组相对应的这两个响应分组,路由器J然后可以基于两个路线间的传输时间而容易地计算哪条路线最短。
6.如果经由路由器A通告的新路线传输的诊断分组的分组传输时间较少,则路由器J将路由器A的更新分类为值得信任,因此如常地更新其路由表,并更新其由所有相邻路由器发送的两个连续路由消息。否则,将来自路由器A的路由信息分类为可疑,并且路由器J不使用来自路由器A的路由信息更新路由表。如果持续出现异常,则路由器J向其系统管理员发送告警。
7.在该简单的验证之后,可通过其诚实的相邻路由器滤除并终止来自错误配置或恶意的路由器的假路由信息。
变型例对于读者来说,显然可以在不脱离本发明概念的情况下对上述实施例进行很多修改。例如,诊断分组发送过程可以要求来自计划目的地路由器的某种认证,以确认诊断分组没有被拦截并且没有伪造假的应答分组(例如,所谓的中间人类型攻击)。
代替仅仅依赖于哪个是最快返回的诊断分组,诊断分组发送和接收过程可以监视所采取的路由,并可以执行一系列测试来测量沿着该路由到达各个点所用的时间(例如,采用类似于公知的“tracert”应用的功能)。此外,代替如果所通告的路由快于旧路由就简单地接受新通告的信息,还可以采取对所通告时间的精度的某种验证(例如,如果通告了2毫秒的时间,但实际上更接近20毫秒,则即使仍快于旧路由,也认为该更新可疑)。
对于本领域技术人员来说,毫无疑问可以进行很多其他类似的这种变化。
权利要求
1.一种操作数据网络的方法,该数据网络的类型为其中多个相互连接的路由器装置根据与各个路由器相关联的路由表将接收到的数据分组朝向目的地节点转发,所述方法包括以下步骤在所述多个路由器之一接收路由信息,确定所述信息是否是如果其为正确的则其将使得该路由器更新其路由表中的一个或更多个条目的信息,如果确定所述信息是这样的信息,则发送两个测试分组,所述两个测试分组中的一个测试分组是根据路由表中包含的现有信息发送的,而另一个测试分组是根据若依照接收到的信息更新路由表则路由表中将包括的信息而发送的;比较两个测试发送的结果;并且,如果所述比较表示接收到的信息是正确的,则更新路由表以反映接收到的信息,否则忽略所述信息并保持路由表不变。
2.根据权利要求1所述的方法,其中,所述数据分组是使用网际协议通过网络传输的。
3.根据权利要求1或2所述的方法,其中,生成的所述测试分组具有随机序列ID号。
4.根据前述权利要求中的任一项所述的方法,其中,发送的所述测试分组具有随机量的数据填充。
5.使用数据网络或互连网络内的路由器来将接收到的数据分组朝向目的地节点传输的方法,在所述数据网络或互连网络中,可以经由相邻路由器之间的多跳将数据分组从所述网络或互连网络内的源节点发送到目的地节点,其中,所述路由器保持有路由表并通过查询该路由表来确定如何转发接收到的要求向前传输的数据分组,所述方法包括以下步骤接收网络配置信息,确定该信息是否表示路由器应该修改其路由表中的一个或更多个条目,如果确定是这样,则执行测试以确定实际上是否应该按照所接收到的信息指示的方式来修改路由表,如果确定是这样,则相应地更新路由表,否则就保持路由表不变。
6.根据权利要求5所述的使用路由器的方法,其中,所述测试包括以下步骤向在测试结果为肯定的情况下可能要在路由表中改变其路由的目的地节点分别经由当前路由和可能的新路由传输两个诊断分组,并且确定哪个路由带来最短的延迟。
7.根据权利要求5或6所述的使用路由器的方法,其中,使用网际协议通过网络来传输要转发的数据分组。
8.根据权利要求6所述的使用路由器的方法,其中,生成的所述测试分组具有随机序列ID号。
9.根据权利要求6或8所述的使用路由器的方法,其中,发送的所述测试分组具有随机量的数据填充。
10.一种用在数据网络中的路由器,该路由器包括存储装置,用来存储路由表;多个通信端口,当所述路由器用作相互连接的网络或者节点或网络的互连网络的一部分时,所述多个通信端口将数据发送到相互连接的节点并且从相互连接的节点接收数据;以及处理器或处理器组,用于处理在一个或更多个通信端口接收到的关于网络配置的信息,并根据所接收到的网络配置信息更新路由表,该路由器的特征在于,所述处理器或处理器组在接收到新的网络配置信息时可以附加地进行如下操作确定所述信息是否表示所述路由器应该修改其路由表中的一个或更多个条目,如果确定是这样,则执行测试以确定实际上是否应该按照所接收到的信息指示的方式修改路由表,并且如果确定是这样,则相应地更新路由表,否则就保持路由表不变。
11.根据权利要求10所述的路由器,其中,所述测试包括以下步骤对于路由器鉴于所接收到的网络配置信息而确定为应该改变的各个条目发送一对测试分组,其中,各个测试分组对中的一个测试分组是根据路由表中包含的现有信息发送的,而其中另一个测试分组是根据若依照接收到的信息更新路由表则路由表中将包括的信息而发送的。
12.根据权利要求10或11所述的路由器,其中,所述路由器根据网际协议进行操作。
13.根据权利要求11或12所述的路由器,其中,生成的所述测试分组具有随机序列ID号。
14.根据权利要求11、12或13所述的路由器,其中,发送的所述测试分组具有随机量的数据填充。
15.一种数据网络或互连网络,该数据网络或互连网络包括多个根据权利要求10至14中的任一项所述的路由器。
16.一种计算机程序或程序组,所述计算机程序或程序组在其执行期间可以进行操作以执行权利要求1至9中的任一项所述的方法。
17.一种载有权利要求16所述的计算机程序或程序组的载体介质。
全文摘要
本发明提供用测试分组操作网络的方法。数据网络的类型为多个相互连接的路由器装置根据与各个路由器相关联的路由表将接收到的数据分组朝向目的地节点转发。所述方法包括以下步骤在所述多个路由器之一接收路由信息,确定所述信息是否是如果其为正确的则其将使得该路由器更新其路由表中的一个或更多个条目的信息,如果确定了所述信息是这样的信息则发送两个测试分组,其中一个测试分组是根据在路由表中包含的现有信息发送的,另一个测试分组是根据若依照接收到的信息更新路由表则路由表中将包括的信息而发送的;比较两个测试发送的结果;如果比较表示接收的信息是正确的,则更新路由表以反映接收到信息,否则忽略所述信息并保持路由表不变。
文档编号H04L29/06GK1989745SQ200580024602
公开日2007年6月27日 申请日期2005年7月15日 优先权日2004年7月20日
发明者何利文 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1