用于快速且大规模的最长前缀匹配的方法和系统的制作方法

文档序号:7791974阅读:196来源:国知局
用于快速且大规模的最长前缀匹配的方法和系统的制作方法
【专利摘要】各种示例性实施方式涉及包括以下中的一者或多者的方法和相关的网络节点:在第一网络设备处接收要被转发的消息;确定所述消息的目的地地址;确定所述目的地地址是否被指派给所述第一网络设备;如果所述目的地地址未被指派给所述第一网络设备,则查询第二网络设备以得到所述目的地地址的下一跳;响应于所述查询,接收对所述目的地地址的所述下一跳的指示;以及由所述第一网络设备响应于对所述下一跳的所述指示,将所述消息转发至所述下一跳。
【专利说明】用于快速且大规模的最长前缀匹配的方法和系统

【技术领域】
[0001]这里公开的各种示例性实施方式通常涉及电信网络。

【背景技术】
[0002]互联网已经从用于机器互连的介质演进到用于将机器与内容(例如,视频和照片)连接的介质。尽管互联网已在各种机制(例如,经由IP地址路由信息)的基础上发展,鉴于互联网的当前状态,未来的架构可以使用替换的机制。在多种提案之中的一个公共原则是这些未来的架构可以被集中在提供的内容上,而不是机器自身上。
[0003]以内容为中心的连网是较新的范例,其中,内容由名称而不是位置来请求。该范例可以使用基于名称的路由,其中,路由器可以基于“内容名称”将业务移至目的地服务器。如此,互联网路由器可以被提供有关于内容正被移动的显式的信息。
[0004]基于名称的路由的一个结果是,尽管IP地址在变化的数量方面受限制,并且在地理上被群集,但内容名称实质上可以具有任意值,并且可以指向位于任何位置处的服务器,而不管拥有具有类似名称的内容的服务器的位置。如此,在基于名称的路由表中项的数量可以具有大于IPv4或IPv6路由表的数量级。这对有效存储该表和使用该表快速转发业务提出了新的挑战。


【发明内容】

[0005]各种示例性实施方式的简要概述在下面被提出。在以下概述中做出了一些简化和省略,该概述意图强调和引入各种示例性实施方式的一些方面,但不意图限制本发明的范围。对适于允许本领域的普通技术人员做出和使用本发明的概念的优选的示例性实施方式的具体描述将在随后的章节进行。
[0006]各种示例性实施方式涉及一种由第一网络设备执行的用于转发消息的方法,该方法包括以下中的一者或多者:在所述第一网络设备处接收要被转发的消息;确定该消息的目的地地址;确定该目的地地址是否被指派给所述第一网络设备;如果所述目的地地址未被指派给所述第一网络设备,则查询第二网络设备以得到所述目的地地址的下一跳;响应于所述查询,接收对所述目的地地址的所述下一跳的指示;以及由所述第一网络设备响应于对所述下一跳的所述指示来将所述消息转发至所述下一跳。
[0007]各种示例性实施方式涉及一种由第一网络设备执行的用于辅助第二网络设备转发消息的方法,该方法包括以下中的一者或多者:在所述第一网络设备处从所述第二网络设备接收查询,其中,该查询包括设备标识符(ID)和目的地地址;响应于接收到所述查询,至少基于所述设备ID和所述目的地地址来识别所述消息的下一跳,其中,所述下一跳是关于所述第二网络设备的下一跳;向所述第二网络设备传送指示所述下一跳的响应。
[0008]各种示例性实施方式涉及一种网络设备,该网络设备包括以下中的一者或多者:网络接口,被配置成接收消息;以及授权管理器:确定与所述消息相关联的目的地地址,确定该目的地地址是否被指派给所述网络设备,如果该目的地地址未被指派给所述网络设备,则经由所述网络接口查询第二网络设备,以得到所述目的地地址的下一跳,响应于所述查询并且经由所述网络接口,接收对所述目的地地址的所述下一跳的指示,以及响应于对所述下一跳的所述指示,经由所述网络接口将所述消息转发至所述下一跳。
[0009]描述了各种实施方式,其中,确定所述目的地地址是否被指派给所述第一网络设备的步骤包括:对所述目的地地址执行散列(hash)函数以产生散列密钥;识别多个网络设备标识(ID)中与所述散列密钥最接近的网络设备ID ;以及确定所识别出的网络设备ID是否与所述第一网络设备相关联。
[0010]描述了各种实施方式,其中,所识别出的网络设备ID与所述第二网络设备相关联。
[0011]描述了各种实施方式,其中,执行散列函数的步骤包括:识别所述目的地地址的第一分量和第二分量;对所述第一分量进行散列;独立于对所述第一分量进行散列的步骤,对所述第二分量进行散列;以及将至少散列后的第一分量和散列后的第二分量合并以产生所述散列密钥。
[0012]各种实施方式还可以包括:确定所述第一网络设备是否存储与所述目的地地址相关联的缓存项;以及在所述第一网络设备处,响应于对所述下一跳的所述指示,添加与所述目的地地址相关联的且基于对所述下一跳的所述指示的新的缓存项,其中,确定所述目的地地址是否被指派给所述第一网络设备的步骤是在所述第一网络设备未存储与所述目的地地址相关联的缓存项时被执行的。
[0013]描述了各种实施方式,其中,所述目的地地址是内容名称。
[0014]各种实施方式还包括:将所述消息添加至未决的(pending)路由表;以及响应于接收到对所述目的地地址的所述下一跳的所述指示,从所述未决的路由表中检索(retrieve)该消息。
[0015]各种实施方式还包括:在所述第一网络设备处接收路由更新消息,其中,该路由更新消息包括所述目的地地址;识别与所述路由更新消息相关联的针对所述第一网络设备的下一跳;响应于接收到所述路由更新消息,确定所述目的地地址是否被指派给所述第一网络设备;并且如果所述目的地地址未被指派给所述第一网络设备,则向所述第二网络设备传送所述下一跳和目的地地址。
[0016]各种实施方式还包括:在所述第一网络设备处接收来自所述第二网络设备的路由更新,其中,该路由更新指示所述目的地地址和所述下一跳中的至少一部分;以及在所述第一网络设备处,存储与所述第二网络设备相关联的所述目的地地址和所述下一跳中的所述至少一部分。
[0017]描述了各种实施方式,其中,所述第一网络设备是路由器。
[0018]描述了各种实施方式,其中,至少基于所述设备ID和所述目的地地址来识别所述消息的下一跳的步骤包括:基于所述目的地地址执行最长前缀匹配,以识别匹配的路由记录;以及识别与所述设备ID相关联的所述匹配的路由记录的字段;使用所识别出的字段的值作为所述下一跳。

【专利附图】

【附图说明】
[0019]为了更好地理解各种示例性实施方式,对附图进行参考,其中:
[0020]图1示出了用于路由消息的示例性网络;
[0021]图2示出了用于路由消息的示例性网络设备;
[0022]图3示出了用于存储路由缓存数据的示例性数据配置;
[0023]图4示出了用于存储未决的路由表的示例性数据配置;
[0024]图5示出了用于存储过滤器的示例性数据配置;
[0025]图6示出了用于存储路由表的示例性数据配置;
[0026]图7示出了用于转发消息的示例性方法;
[0027]图8示出了用于辅助另一设备转发消息的示例性方法;
[0028]图9示出了用于处理路由更新的示例性方法;以及
[0029]图10示出了用于授权路由操作的示例性方法。
[0030]为了便于理解,相同的参考数字已经被用于指代具有基本上相同或相似的结构和/或基本上相同或相似的功能的元件。

【具体实施方式】
[0031]如上所述,各种新兴的路由范例提议扩展在因特网和其他网络上路由业务中使用的路由表。尽管较大的表可以由较大且更快的存储器和更快的处理器来适应,但这种方法会是成本昂贵的。因此,期望实施一种路由解析(resolut1n)的方法,该方法可以将路由表和/或各种路由操作分布在多个路由器和/或其他网络设备上。各种附加的目标和益处基于以下描述将是显而易见的。本领域的技术人员显而易见的是,虽然这里描述的各种示例参考基于名称的路由来描述,但描述的方法和系统可以在其他环境中使用,例如,根据IPv4或IPv6协议的路由。
[0032]现在参考附图,其中,相似的数据指代相似的组件或步骤,公开了各种示例性实施方式的广泛的方面。
[0033]图1示出了用于路由消息的示例性网络100。在各种实施方式中,示例性网络100可以是因特网或其一部分。本领域的技术人员显而易见的是,示例性网络100的构成可以在一些方面被简化。例如,示例性网络100可以包括许多个附加的客户端、服务器、路由器、交换机、和/或其他网络设备。如所示,示例性网络100可以包括多个网络设备:客户端设备110、两个服务器120、130、以及五个路由器140a-e。如在这里使用的,术语“路由器”可以被理解成指代能够接收数据消息和朝向这些数据消息的最终目的地转发数据消息的任何网络设备。因此,术语“路由器”可以包括在网络的OSI模型的任意层上运行的网络设备,例如,交换机(层2)或真路由器(层3)。此外,术语“消息”将被理解成包括被从一个设备转移至另一设备的任意数据组块(chunk),例如,帧或分组。
[0034]如所示,路由器140a_e可以将客户端设备110、服务器120和服务器130互连,以使在这些设备之间可以交换消息。如指出的,示例性网络100的构成可以被简化,并且如此,可以存在在示出的那些网络设备之间提供通信的多个中间路由器和/或其他网络设备(未示出)。例如,路由器140C可以通过一个或多个中间网络设备(未示出)与服务器120连接。
[0035]客户端设备110可以是能够经由网络请求和接收内容的任何设备。例如,客户端设备110可以包括个人计算机、膝上型计算机、移动电话、平板电脑或其他设备。服务器120、130中的每个可以是能够接收请求和供应(serve)内容的任何设备。例如,服务器120、130中的每个可以包括个人计算机、独立服务器、刀片服务器或其他设备。服务器120、130中的每个可以拥有多个内容项目,每个项目由至少一个内容名称来标识。如示出的,例如,服务器 120 可以拥有被标识为 “TUX/notes.txt”、“ JDOE/notes.txt” 和 “/JDOE/VIDEOS/JD2012/vid.avi”的三个内容项目。如另一示例,服务器130也可以拥有被标识为“/JD0E/PAPERS/PaperA.pdf”、“/JDOE/PAPERS/PaperB.pdf” 和“/JDOE/VIDEOS/abc.mpg” 的三个内容项目。客户端设备110可以通过发送请求消息来请求这些项目中的任意项目的分发,该请求消息随后可以由路由器140a-e路由到合适的服务器120、130。该路由可以基于所请求的内容的名称来被执行。因此,内容名称可以被当作请求消息的目的地地址。之后,服务器可以使用该请求来定位合适的内容,并且经由路由器150a_e将该内容传送回至客户端设备 110。
[0036]例如,图1示出了客户端设备110向路由器140a传送请求消息150。请求消息150可以包括“/JDOE/VIDEOS/abc.mpg”的目的地地址。因此,消息150可以请求由服务器130存储的内容。一旦接收到请求消息150,路由器140a就可以执行各种路由操作,以确定该请求消息150应当被转发至哪个路由器或“下一跳”,从而将该请求消息150推进到其最终目的地。为了提供这种能力,路由器140a_e可以实施分布式路由表。如此,每个路由器140a_e可以包括与该路由器140a_e集相关联的路由表的一部分,但不是全部。例如,每个路由器140a_e可以被指派地址范围,该地址范围被指派以用于该路由器140a_e可以存储可用的路由记录。在各种替换的实施方式中,网络100可以包括不是路由器并且包括所述分布式路由表的一部分的一个或多个网络设备。例如,网络100可以包括专用服务器(未示出),该专用服务器存储所述分布式路由表的一部分,并且以与路由器140a_e如何可以在转发消息方面提供对其他路由器140a_e的辅助的方式相似的方式来辅助路由器140a_e转发消息。
[0037]在各种替换的实施方式中,请求消息150可以对请求的特定内容“组块”进行定址。例如,请求消息150可以请求“/JDOE/VIDEOS/abc.mpg/chunk2”。在各种这种实施方式中,其中,用于特定内容项目的所有组块被存储在相同的位置,在处理消息中使用的目的地地址可以省略组块标识符,因此,基于“/JDOE/VIDEOS/abc.mpg”进行路由。在各种替换的实施方式中,例如,其中内容可以被分布在多个服务器之中的实施方式,路由器也可以基于组块标识符进行路由,因此,在该示例中,基于“/JDOE/VIDEOS/abc.mpg/chunk2”进行路由。
[0038]一旦接收到请求消息150,路由器140a可以确定目的地地址“/JDOE/VIDEOS/abc.mpg”被指派给哪个路由器140a-e。在识别出所指派的路由器之后,路由器140a可以查询该路由器以得到请求消息150的合适的下一跳。例如,路由器140a可以确定地址“/JD0E/VIDEOS/abc.mpg”被指派给路由器140e,并且作为响应,查询路由器140e以得到所述合适的下一跳。
[0039]一旦接收到对下一跳的查询,路由器140a_e可以查阅本地存储的路由表,以确定关于发送该查询的网络设备的合适的下一跳。下一跳的选择可以包括本设备的接口的选择,其中,消息将通过该接口被转发。在各种替换的实施方式中,下一跳的选择可以包括用于从本设备接收转发的消息的下一路由器或其他设备的选择。因此,一个路由器的下一跳可以不是不同的路由器的下一跳。继续上面的示例,关于路由器140a的消息150的合适的下一跳将是路由器140d。然而,如果消息150被路由器140e转发,则关于该路由器的下一跳将是路由器140a。在确定消息的合适的下一跳之后,所查询的路由器可以向查询路由器返回包括对下一跳的指示的消息。例如,路由器140e可以向路由器140a发送指示路由器140d是消息150a的下一跳的消息。路由器140a之后可以继续向路由器140d传送消息150,其中,该过程可以自身重复,这次是关于路由器140d而不是路由器140a。
[0040]前面的描述被呈现作为网络100的示例性操作的综述,并且其构成在一些方面可以被简化和/或抽象。示例性网络100和路由器140a-e中的一者或多者的更具体的操作现在将参考图2-图10来呈现。
[0041]图2示出了用于路由消息的示例性网络设备200。示例性网络设备200可以对应于示例性网络100的路由器140a-e中的一者或多者。对于本领域的技术人员显而易见的是,网络设备200可以在一些方面被抽象,并且网络设备200可以包括各种硬件组件(例如,各种存储器)和一个或多个处理器(例如,微处理器、现场可编程门阵列(FPGA)、和/或专用集成电路(ASIC))。如所示,网络设备200可以包括网络接口 210、路由缓存220、授权管理器230、未决的路由表240、最长前缀匹配(LPM)块250、和/或路由管理器260。
[0042]网络接口 210可以是包括硬件和/或在机器可读存储介质上编码的可执行指令的接口,被配置成与至少一个其他网络设备(例如,客户端设备、服务器和/或路由器)通信。网络接口可以包括用于使能与多个设备的通信的多个物理端口。在各种实施方式中,网络接口 210可以包括根据例如以太网、帧中继、ATM和/或PPP之类的协议进行通信的一个或多个接口。在操作方面,网络接口可以接收和传送各种消息,例如,请求消息、内容消息、路由更新消息、查询消息、和/或响应消息。在各种实施方式中,网络接口 210可以包括多个物理接口。此外,在一些这种实施方式中,不同的接口可以与不同类型的消息相关联。例如,节点可以包括用于发送和接收查询和响应消息的专用接口,该专用接口与那些用于发送和接收内容消息的接口分离。
[0043]路由缓存220可以包括硬件和/或在机器可读存储介质上的可执行指令,被配置成存储和使用缓存的路由。例如,路由缓存可以包括相对快速的存储器(例如,SRAM),其存储与各种目的地地址相关联的缓存项。每个缓存项可以针对缓存的目的地地址中的每个,规定关于网络设备200的合适的下一跳。在各种替换的实施方式中,缓存项还可以规定关于除网络设备200以外的网络设备的下一跳。路由缓存220可以使用各种缓存技术来选择和维护该缓存中的项。路由缓存220的示例性内容将在下面参考图3被更详细地描述。
[0044]路由缓存220可以经由网络接口 210接收各种要被转发至其他网络设备的消息。例如,路由缓存220可以经由网络接口 210接收请求消息和内容消息。一旦接收到这种消息,路由缓存220可以从该消息中提取出目的地地址,并确定路由缓存220是否存储与所提取的地址相关联的缓存项。如果是,路由缓存可以简单地经由网络接口 210将接收到的消息转发至合适的下一跳,如由匹配的缓存项所标识的。例如,匹配的缓存项可以标识多个发送端口中消息应当通过哪个被传送的一个发送端口。如果没有针对目的地地址的命中的(hit)缓存,路由缓存220可以将接收到的消息传递至授权管理器230,以进行进一步处理。
[0045]授权管理器230可以包括硬件和/或在机器可读存储介质上的可执行指令,被配置成确定所述目的地地址是被“指派”给网络设备200还是被“指派”给另一网络设备。如在这里所使用的,目的地地址可以在网络设备负责管理路由更新、并代表其他节点执行关于该目的地地址的最长前缀匹配操作时,被指派给该网络设备。例如,如在下面将参考图10更为详细地描述的,授权管理器230可以对目的地地址执行散列函数,以生成散列密钥。之后,授权管理器230可以比较该散列密钥和在网络设备200和各种其他网络设备中指派的各种网络设备标识符(ID)。在各种实施方式中,出于这一目的,每个设备可以被指派单个设备标识符。基于该比较,授权管理器可以确定与所述散列密钥最接近匹配的网络设备ID指向目的地地址要被指派给的网络设备。如果该网络设备ID指向网络设备200,授权管理器230可以将该目的地地址转发给LPM块250,以在本地确定合适的下一跳。否则,授权管理器230可以生成并传送包括所述目的地地址的查询消息,以从匹配的网络设备ID所指向的网络设备请求合适的下一跳。授权管理器230之后可以将消息存储在未决的路由表240中,并继续处理其他消息,同时其等待接收合适的下一跳。一旦从LPM块250或经由网络接口 210从远程网络设备接收到合适的下一跳,授权管理器可以从未决的路由表240中检索该消息,并将该消息经由网络接口 210转发至所述下一跳。
[0046]授权管理器230还可以被配置成辅助其他网络设备转发消息。例如,授权管理器230可以经由网络接口 210从其他网络设备接收查询消息。作为响应,授权管理器可以提取目的地地址和查询网络设备的网络设备ID,并将该信息传递至LPM块250,以进行进一步处理,如将在下面描述的。一旦接收到关于查询网络设备的下一跳,授权管理器可以生成并传送包括所确定的下一跳的响应消息。在各种替换的实施方式中,在询问LPM块250之前,路由缓存220可以确定指示关于查询网路设备的合适的下一跳的缓存的项是否存在。此外,在各种替换的实施方式中,授权管理器230可以执行与上面描述的确定查询消息是否应当被在本地处理的过程相类似的过程,以确定查询消息是否已经错误地到达了网络设备200。授权管理器230之后可以根据本领域的技术人员公知的各种方法来处理这种错误的查询消息。
[0047]未决的路由表240可以是存储与未决的路由操作有关的信息的设备。因此,未决的路由表240可以包括机器可读存储介质,例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒介、光存储媒介、闪存设备、和/或类似的存储媒介。例如,未决的路由表240可以包括存储消息的SRAM,同时授权管理器230等待下一跳的确定。未决的路由表230的示例性内容将在下面参考图4来被更具体地描述。
[0048]最长前缀匹配(LPM)块250可以包括硬件和/或在机器可读存储介质上的可执行指令,被配置成确定给定的目的地地址的合适的下一跳和网络设备ID。例如,LPM块250可以对分布式路由表的存储的部分执行最长前缀匹配。对于本领域的技术人员显而易见的是,从路由表或路由表的一部分中识别下一跳的任意方法可以由LPM块250使用。例如,在各种替换的实施方式中,LPM块可以基于全地址匹配而不是简单的最长前缀匹配来识别下一跳。如所示,LPM块250可以包括过滤器252、路由检索器254和/或路由表256。
[0049]过滤器252可以包括硬件和/或在机器可读存储介质上的可执行指令,该可执行指令被配置成执行初步处理,以缩减路由表256中可能的结果的字段。在各种实施方式中,过滤器252可以被配置成估计针对给定的目的地地址的最长匹配前缀的长度。例如,过滤器252可以存储多个布隆(Bloom)过滤器,每个Bloom过滤器由存储在路由表中的公共长度的前缀来构建。因此,一个Bloom过滤器可以由所有存储的长度为“I”的前缀来构建,第二 Bloom过滤器可以由所有存储的长度为“2”的前缀来构建,等等。与最长前缀相关联的Bloom过滤器(其还与目的地地址匹配)可以指示最长匹配前缀的估计长度。过滤器252之后可以将该估计长度传递至路由检索器,以进行最长前缀匹配的进一步解析。本领域的技术人员将理解的是,过滤器252的各种实施是可能的。因此,过滤器252可以在软件中(例如,在Bloom过滤器中)被实施,和/或在硬件中(例如,在三态内容寻址存储器(TCAM)中)被实施。过滤器252的示例性内容将在下面参考图5被更详细地描述。
[0050]路由检索器254可以包括硬件和/或在机器可读存储介质上的可执行指令,被配置成基于最长匹配前缀识别与目的地地址匹配的路由记录。在各种实施方式中,路由检索器254可以循环访问存储在路由表中的多个路由记录,以那些存储最长前缀的路由记录开始,直到定位出针对目的地地址的最长匹配前缀。在过滤器252将最长匹配前缀的估计长度传递至路由检索器254时,路由检索器254可以代替地开始循环访问那些具有相同长度的前缀的记录,跳过那些具有较长前缀的记录。因此,当过滤器252估计出最长匹配前缀的长度时,路由检索器可以通过跳过任何具有较长前缀的记录来缩减要搜索的记录的范围。在定位出匹配的路由记录之后,路由检索器可以提取与网络设备ID有关的合适的下一跳,并且将该下一跳返回至授权管理器230,以进行进一步处理。
[0051]路由表256可以是存储对于被指派给网络设备200的前缀已知的路由路径的设备。因此,路由表256可以包括机器可读存储介质,例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒介、光存储媒介、闪存设备、和/或类似的存储媒介。例如,路由表256可以包括存储各种路由记录的DRAM,该路由记录包括如缀和相关联的下一跳。路由表256的示例性内容将在下面参考图6被更详细地描述。
[0052]路由管理器260可以包括硬件和/或在机器可读存储介质上的可执行指令,被配置成接收和处理路由更新消息。根据各种实施方式,网络设备组(例如,路由器140a_e)可以实施路由学习协议,以生成分布式路由表。例如,这种网络设备组可以实施BGP、OSPF、RIP和/或其他路由协议。根据这些协议,网络设备可以传送路由更新消息,以通告可以通过该网络设备到达的目的地地址。例如,返回图1,路由器140d可以向路由器140a和/或路由器140b传送路由更新消息,该路由更新消息指示目的地“/JDOE/PAPERS/PaperA.pdf ”、“/JDOE/PAPERS/PaperB.pdf”和 / 或“JDOE/VIDEOS/abc.mpg”可以经由路由器 140d 到达。一旦接收到路由更新消息,路由管理器260可以提取目的地地址,并将内容名称传递至授权管理器230,以确定该路由更新消息是应当在本地处理还是在远程设备处理。授权管理器230可以根据与确定目的地地址被指派给的网络设备的方法(如上所述)相类似的方法来做出该确定。在接收到响应之后,路由管理器260可以首先确定该授权管理器是否已经确定了路由更新消息应当在本地处理。如果是,路由管理器可以由于该路由更新消息、根据本领域的技术人员公知的任何方法来更新路由表256。例如,路由管理器可以在路由表256中创建新的路由记录,包括针对通告的目的地地址的合适的前缀,以及作为下一跳,对更新消息从其而来的设备的指示,或更新消息经由其到达的本地接口的指示。
[0053]另一方面,如果授权管理器230确定路由更新消息应当在不同的网络设备处理,路由管理器可以构建并传送授权更新消息(包括目的地和下一跳)至该不同的网络设备。路由管理器260还可以被配置成处理从其他网络设备接收的类似的授权更新消息。例如,当路由管理器260经由网络接口 210接收到授权更新消息时,路由管理器260可以从该消息中提取目的地地址和下一跳,并且查询路由表256以得到要更新的合适的路由记录。在定位出这种路由记录或创建出新记录之后,路由管理器260可以存储合适的匹配前缀,和/或指示的与网络设备的网络设备ID相关联的关于其他网络设备的下一跳。之后,网络设备200能够辅助其他网络设备路由消息,该消息去往与存储的前缀匹配的地址。
[0054]图3示出了用于存储路由缓存数据的示例性数据配置300。数据配置300可以使用多种数据结构来被实施,例如,对象、阵列、链路列表、树、和/或散列表。数据配置300可以例如被存储在示例性网络设备200的路由缓存220中。数据配置300可以包括多个字段,例如,内容名称字段310和/或下一跳字段320。
[0055]内容名称字段310可以存储内容名称或其他目的地地址。在各种实施方式中,内容名称字段310可以存储内容名称的多个分量。例如,如果内容名称包括总数为B的分量,内容名称字段310可以包括B-1个分量。在一些实施方式中,这可能需要在存储在内容名称字段310之前,简单地跳开来自内容名称的任何组块标识符。在各种实施方式中,存储在内容名称字段310中的值可以纯文本形式被存储,或者可以被存储为散列值。在其中内容名称字段310存储散列值的各种实施方式中,网络设备200的路由缓存220可以被配置成执行接收到的消息的目的地地址的散列操作,并查询数据配置300以得到匹配的散列值,从而确定是否存在命中的缓存。其他修改对于本领域的技术人员而言将是显而易见的。下一跳字段320可以存储将作为与存储在内容名称字段310中的关联值匹配的消息的下一跳的发送接口或网络设备的标识。
[0056]例如,数据配置300可以指示用于示例性网络100的路由器140a的路由缓存的内容。缓存项330可以指示包括目的地地址“/JDOE/PAPERS/PaperA.pdf ”的消息应当被转发至下一跳“d”,该下一跳“d”可以对应于路由器140d。缓存项340可以指示包括目的地地址“/JDOE/notes.txt”的消息应当被转发至下一跳“b”,该下一跳“b”可以对应于路由器140b。数据配置300可以包括多个附加的缓存项300。
[0057]图4示出了用于存储未决的路由表的示例性数据配置400。数据配置400可以使用多种数据结构来被实施,例如,对象、阵列、链路列表、树、和/或散列表。数据配置400可以例如被存储在示例性网络设备200的未决的路由表240中。数据配置400可以包括多个字段,例如,内容名称字段410、分组字段420、授权字段430和/或时间戳字段440。
[0058]内容名称字段410可以存储内容名称或其他目的地地址。在各种实施方式中,内容名称字段310可以存储内容名称的多个分量。例如,如果内容名称包括总数为B的分量,内容名称字段310可以包括B-1个分量。在一些实施方式中,这可能需要在存储在内容名称字段310之前,简单地跳开来自内容名称的任何组块标识符。在各种实施方式中,存储在内容名称字段410中的值可以纯文本形式被存储,或者可以被存储为散列值。在其中内容名称字段410存储散列值的各种实施方式中,网络设备200的授权管理器230可以被配置成执行接收到的消息的目的地地址的散列操作,并查询数据配置400以得到匹配的散列值,从而确定是否存在匹配的未决的路由。其他修改对于本领域的技术人员而言将是显而易见的。
[0059]分组字段420可以存储使得路由操作悬而未决的消息。例如,在授权管理器230接收到(从LPM块250或从另一网络设备)对合适的下一跳的指示时,授权管理器可以定位合适的未决的路由,并将存储在分组字段420中的消息转发至下一跳。授权字段430可以存储关于最长前缀匹配是在本地执行还是在远程网络设备执行的指示。时间戳字段440可以存储时间戳,该时间戳指示项何时被添加至数据配置400,和/或何时在本地设备接收到关联消息。对于这些值的各种使用对于本领域的技术人员而言将是显而易见的。
[0060]如一个示例,未决的路由记录450可以指示在时间“ 1330774815 ”接收到分组“〈分组149>?Packetl49>) ”,并且包括目的地地址“/TUX/notes.txt”。该分组当前正等待关于合适的下一跳的本地决策。如另一示例,未决的路由记录460可以指示在时间“1330774818”接收到分组“〈分组150> (<Packetl50>) ”,并且包括目的地地址“/JD0E/VIDEOS/abc.mpg”。该分组当前正等待由远程设备做出的关于合适的下一跳的决策。在各种实施方式中,未决的路由记录460可以对应于示例性系统100的消息150。数据配置400可以包括多个附加的未决的路由记录470。
[0061]图5示出了用于存储过滤器的示例性数据配置500。数据配置500可以使用多种数据结构来被实施,例如,对象、阵列、链路列表、树、和/或散列表。数据配置500可以例如被存储在示例性网络设备200的过滤器252中。数据配置500可以包括多个字段,例如,前缀长度字段510和/或过滤器字段520。
[0062]前缀长度字段510可以指示在构建相关联的过滤器中使用的前缀的长度,而过滤器字段520可以自身存储过滤器。如一个示例,过滤器记录530可以指示过滤器“ 0x91B206 ”可以用于确定长度为“I”的前缀是否可以匹配当前正被估计的目的地地址。如另一示例,过滤器记录540可以指示过滤器“0xC4E231”可以用于确定长度为“2”的前缀是否可以匹配当前正被估计的目的地地址。数据配置500可以包括多个附加的过滤器记录550。
[0063]在各种实施方式中,存储在过滤器字段520中的过滤器可以是Bloom过滤器。因此,每个过滤器可以通过对每个存储的关联长度的前缀执行一次或多次散列函数来被构建。例如,“0x91B206”可以通过对本地存储的长度为“I”的前缀执行多次散列函数来被生成。这些过滤器之后能够被与根据目的地地址产生的散列后的值进行比较,以确定本地设备是否可能存储具有与目的地地址匹配的关联长度的前缀的路由记录。之后,与最长前缀长度相关联的匹配的Bloom过滤器可以指示关于与目的地地址匹配的最长的本地存储的前缀的估计。在执行进一步的最长前缀匹配中,网络设备可以跳过任何比估计的长度更长的前缀。
[0064]图6示出了用于存储路由表的示例性数据配置600。数据配置600可以使用多种数据结构来被实施,例如,对象、阵列、链路列表、树、和/或散列表。数据配置600可以例如被存储在示例性网络设备200的路由表256中。数据配置600可以包括多个字段,例如,内容前缀字段610和多个下一跳字段620、630、640。
[0065]内容前缀字段610可以存储内容名称或其他目的地地址,和/或其一部分。在各种实施方式中,存储在内容前缀字段610中的值可以以纯文本的形式被存储,或者可以被存储为散列值。在其中内容前缀字段610存储散列值的各种实施方式中,网络设备200的路由检索器254可以被配置成执行接收到的消息的目的地地址的散列操作,并查询数据配置600以得到匹配的散列值,从而确定是否存储匹配的路由。其他修改对于本领域的技术人员而言将是显而易见的。
[0066]下一跳字段620可以存储关于特定的网络设备的下一跳。例如,如所示,下一跳字段620可以存储关于与网络设备ID “0xA2”相关联的网络设备的下一跳。下一跳字段630可以存储关于不同网络设备的下一跳。例如,如所示,下一跳字段630可以存储关于与网络设备ID “0x35”相关联的网络设备的下一跳。数据配置600可以包括多个附加的下一跳字段640,以适应附加的网络设备。
[0067]如一个示例,路由记录650可以指示其前缀“/JD0E”是最长匹配的前缀的消息应当被转发至下一跳“a” (在网络设备转发与网络设备ID “0xA2”相关联的消息的情况下),或者被转发至下一跳“b”(在网络设备转发与网络设备ID “0x35”相关联的消息的情况下)。如另一示例,路由记录660可以指示其前缀“/JD0E/VIDE0S”是最长匹配的前缀的消息应当被转发至下一跳“a”(在网络设备转发与网络设备ID “0xA2”相关联的消息的情况下),或者被转发至下一跳“b” (在网络设备转发与网络设备ID “0x35”相关联的消息的情况下)。数据配置600可以包括多个附加的路由记录670。
[0068]图7示出了用于转发消息的示例性方法700。方法700可以由路由器或其他网络设备(例如,网络设备200)的组件来执行。方法700可以在路由缓存220、授权管理器230和/或LPM块250之中被执行。
[0069]方法700可以在步骤705中开始,并进行到步骤710,其中,网络设备可以接收应当被转发至下一跳的消息。在步骤715中,网络设备可以从消息中提取内容名称或内容名称的一部分,并且之后在步骤720中,确定内容名称是否与任何缓存项匹配。在各种实施方式中,所提取出的内容名称部分可以包括第一 B-1个分量,其中,内容名称为B个分量长。如果存在命中的(hit)缓存,在步骤725中,网络设备可以从匹配的缓存项中读取合适的下一跳,并进行到步骤775。否则,方法700可以从步骤720进行到步骤730,其中,网络设备可以执行授权功能,以确定是网络设备被指派给内容名称还是远程网络设备被指派给内容名称。执行这种授权过程的示例性方法将在下面参考图10来被更详细地描述。
[0070]接下来,在步骤735中,网络设备可以将消息添加至未决的路由表中,以进行进一步转发。之后,在步骤740中,网络设备可以确定授权过程的结果是否指示对于内容名称可适用的路由记录将被在本地存储,或该内容名称被指派给本地设备。如果是,网络设备可以进行以通过在步骤745中对本地存储的路由表执行最长前缀匹配来执行合适的本地处理。在找到匹配的路由记录之后,方法700可以进行到步骤750,其中,网络设备可以使用匹配的路由记录来确定合适的下一跳。在步骤755中,网络设备可以对匹配的项进行缓存,以便于未来的访问。对匹配的项进行缓存可以包括将整个路由记录存储在路由缓存中,或者基于存储在路由记录中的值中的至少一些来生成新的缓存项。之后,方法700可以进行到步骤 775。
[0071]另一方面,如果在步骤740中,网络设备确定内容名称被存储至远程网络设备,方法700可以进行到步骤760。在步骤760中,网络设备可以查询授权的路由器,以得到合适的下一跳。例如,网络设备可以构建包括内容名称的查询消息,传送该查询消息,并且等待响应。在各种实施方式中,网络设备可以继续处理其他消息,同时等待这一响应。在接收到响应之后,网络设备可以基于该响应确定合适的下一跳。接下来,在步骤770中,网络设备可以对该响应进行缓存以便于未来的访问。对匹配的项进行缓存可以包括将整个响应存储在路由缓存中,或者基于存储在响应中的值中的至少一些来生成新的缓存项。之后,方法700可以进行到步骤775。
[0072]在步骤775中,网络设备可以将消息转发至在步骤725、步骤750和/或步骤765中确定出的下一跳。之后,方法700可以进行以在步骤780中结束。
[0073]图8示出了用于辅助另一设备转发消息的示例性方法800。方法800可以由路由器或其他网络设备(例如,网络设备200)的组件来执行。方法800可以在授权管理器230和/或LPM块250之中被执行。
[0074]方法800可以在步骤805中开始,并进行到步骤810,其中,网络设备可以从另一网络设备接收对合适的下一跳的查询。之后,在步骤815中,网络设备可以从内容消息和/或与查询消息的接收有关的其他信息中提取内容名称和查询设备ID。接下来,在步骤820中,网络设备可以执行最长前缀匹配,以定位存储在路由表中的匹配的记录。该步骤可以与方法700中的步骤745类似。在定位匹配的路由记录之后,网络设备可以基于与查询设备的设备ID匹配的路由记录的项来确定下一跳。之后,网络设备可以构建并发送响应消息至查询设备。该响应可以包括在步骤825中确定的下一跳和所请求的目的地地址。之后,方法800可以进行以在步骤835中结束。
[0075]图9示出了用于处理路由更新的示例性方法900。方法900可以由路由器或其他网络设备(例如,网络设备200)的组件来执行。方法900可以在授权管理器230和/或路由管理器260之中被执行。
[0076]方法900可以在步骤905中开始,并进行到步骤910,其中,网络设备可以接收路由更新消息。接下来,在步骤915中,网络设备可以计算与更新消息相关联的前缀和/或下一跳。例如,网络设备可以从消息中提取目的地地址或前缀,并记录在其上接收到更新消息的接口。在各种替换的实施方式中,网络设备可以不在步骤915计算前缀,而是相反,可以简单地提取目的地地址。在这种实施方式中,可以在步骤930和935计算前缀,并且该前缀可以由将存储路由记录的远程网络设备计算。
[0077]在步骤920中,网络设备可以执行授权功能以确定是网络设备被指派给内容名称还是远程网络设备被指派给内容名称。执行这种授权过程的示例性方法将在下面参考图10来被更详细地描述。在各种实施方式中,步骤920可以对应于方法700中的步骤730。
[0078]在步骤925中,网络设备可以确定授权功能的结果是否指示路由更新消息中的信息应当被存储在本地。如果是,方法900可以进行到步骤930,其中,网络设备可以生成新的路由记录,或者更新现有的路由记录以包括地址前缀、下一跳和网络设备的设备ID。否则,方法900可以进行到步骤935,其中,网络设备可以将所述地址前缀、下一跳、以及所述网络设备的设备ID存储在合适的远程网络设备上。这可以包括构建并传送授权的更新消息至远程网络设备。之后,方法900可以进行以在步骤940中结束。
[0079]图10示出了用于授权路由操作的示例性方法1000。方法1000可以由路由器或其他网络设备(例如,网络设备200)的组件来执行。方法1000可以由授权管理器230执行。
[0080]方法1000可以在步骤1005中开始,并且进行到步骤1010,其中,网络设备可以对内容名称中的每个分量进行散列。在各种实施方式中,步骤1010,网络设备可以将内容名称分解成多个分量,对每个分量独立地进行散列,并且之后,合并分量以形成散列密钥。在各种实施方式中,该合并可以包括根据内容名称中分量的顺序连接散列后的分量中的每个。例如,网络设备可以将内容名称“/JDOE/VIDEOS/abc.mpg”分解成三个分量:“JD0E”、“VIDEOS”和“abc.mpg”。之后,网络设备可以单独对每个分量进行散列,以产生值“0xA2”、“0x21”和“0x8E”。最后,网络设备可以连接这些值以产生散列密钥“0xA2218E”。
[0081]接下来,在步骤1015中,网络设备可以通过将“最近距离”变量设置成空、无限、或一些其他高值来对过程进行初始化。之后,在步骤1020中,网络设备可以检索要估计的路由器ID。在步骤1025中,网络设备可以确定当前的路由器ID与散列密钥之间有多接近。例如,网络设备可以首先将多个零填补至网络ID的右侧,以使其与散列密钥等长度。网络设备可以通过在散列密钥与网络设备ID之间执行异或(XOR)函数来确定“距离”。例如,如果散列密钥是“0xA22180”并且路由器ID是“0x35”,该距离可以是“0x972180”。如另一示例,如果散列密钥是“0xA2”,该距离可以是“0x002180”。
[0082]在确定针对当前网络设备ID的距离之后,在步骤1030中,网络设备可以通过比较该值与“最近距离”变量,来确定当前距离是否是新的最短距离。如果是,网络设备可以更新“最近距离”变量,并作出当前设备ID是当前“最近设备ID”的注释。接下来,在步骤1040中,网络设备可以确定是否不再有设备ID要处理。如果附加的设备ID存留,方法1000可以返回到步骤1020。否则,方法1000可以进行到步骤1045,其中,网络设备可以返回存储在“最近设备ID”变量中的设备ID,以供调用方法1000的元件使用。因此,所返回的设备ID可以指示对于方法700和/或方法900,特定的目的地地址被指派给的设备。之后,方法1000可以进行以在步骤1050中结束。
[0083]在各种替换的实施方式中,方法1000可以确定设备地址被指派给的一个或多个“备份”设备,这些“备份”设备在一个或多个网络设备无响应或不能使用时被使用。根据各种这样的实施方式,方法1000可以标识N个最近网络设备ID,其中,N是大于I的数。用于实施这种功能的各种其他修改对于本领域的技术人员将是显而易见的。例如,网络设备还可以被配置成将授权的更新消息转发至每个备份设备。此外,网络设备可以被配置成当地址被指派给的最初设备不能被查询时查询所述备份设备中的一者。
[0084]根据前述内容,应当理解的是,各种实施方式使得大路由表能够有效用于路由消息。例如,通过将路由表分布在多个网络设备之中,下一跳查找的任务可以被分布在这些设备中,因此提供对支持大路由表的有效手段。此外,通过将目的地地址的子集指派给多个网络设备中的每个,下一跳查找能够以有效且可靠的方式被授权。
[0085]从前述描述中应当理解的是,本发明的各种示例性实施方式可以在硬件和/或固件中实施。此外,各种示例性实施方式可以被实施为存储在机器可读存储介质上的指令,该指令可以被至少一个处理器读取和运行,以执行这里详细描述的操作。机器可读存储介质可以包括任何用于以由机器可读的形式存储信息的机制,该机器例如个人计算机或膝上型计算机、服务器、或其他计算设备。因此,有形且非暂时的机器可读存储介质可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒介、光存储媒介、闪存设备以及类似的存储媒介。
[0086]本领域的技术人员应当理解的是,这里的任何框图表示体现本发明的原理的例证性电路的概念视图。类似地,应当理解的是,任何流程表、流程图、状态转移图、伪代码等表示各种过程,这些过程可以实质上被表示在机器可读媒介中,并因此供计算机或处理器运行,不管这种计算机或处理器是否被显式地示出。
[0087]尽管已经特定参考了各种示例性实施方式的某些示例性方面来详细描述了这些示例性实施方式,但应当理解的是,本发明能够具有其他实施方式,并且这些其他实施方式的细节能够在各种显著的方面被修改。如对本领域的技术人员很容易显而易见的,变形和修改能够被产生,同时保留在本发明的精神和范围之内。因此,前述公开内容、描述和附图仅用于例证目的,并且不以任何方式限制本发明,本发明仅通过权利要求书来定义。
【权利要求】
1.一种由第一网络设备执行的用于转发消息的方法,该方法包括: 在所述第一网络设备处接收(710)要被转发的消息; 确定(715)所述消息的目的地地址; 确定(730、740)所述目的地地址是否被指派给所述第一网络设备; 如果所述目的地地址未被指派给所述第一网络设备,则查询(760)第二网络设备以得到所述目的地地址的下一跳; 响应于所述查询,接收(765)对所述目的地地址的所述下一跳的指示;以及由所述第一网络设备响应于对所述下一跳的所述指示,将所述消息转发(775)至所述下一跳。
2.根据权利要求1所述的方法,其中,确定(730、740)所述目的地地址是否被指派给所述第一网络设备的步骤包括: 对所述目的地地址执行(1010)散列函数,以产生散列密钥; 识别(1045)多个网络设备标识(ID)中与所述散列密钥最接近的网络设备ID;以及 确定(740)所识别出的网络设备ID是否与所述第一网络设备相关联。
3.根据权利要求2所述的方法,其中,所识别出的网络设备ID与所述第二网络设备相关联。
4.根据权利要求2-3中任一权利要求所述的方法,其中,执行散列函数的步骤(1010)包括: 识别所述目的地地址的第一分量和第二分量; 对所述第一分量进行散列; 独立于对所述第一分量进行散列的步骤,对所述第二分量进行散列;以及 合并至少散列后的第一分量和散列后的第二分量,以产生所述散列密钥。
5.根据权利要求1-4中任一权利要求所述的方法,该方法还包括: 确定(720)所述第一网络设备是否存储与所述目的地地址相关联的缓存项;以及在所述第一网络设备处,响应于对所述下一跳的指示,添加(770)与所述目的地地址相关联且基于对所述下一跳的指示的新的缓存项, 其中,确定(740)所述目的地地址是否被指派给所述第一网络设备的步骤是在该第一网络设备未存储与所述目的地地址相关联的缓存项时被执行的。
6.根据权利要求1-5中任一权利要求所述的方法,其中,所述目的地地址是内容名称。
7.根据权利要求1-6中任一权利要求所述的方法,该方法还包括: 将所述消息添加(735)至未决的路由表;以及 响应于接收到对所述目的地地址的下一跳的指示,从所述未决的路由表中检索所述消肩、O
8.根据权利要求1-7中任一权利要求所述的方法,该方法还包括: 在所述第一网络设备处接收(910)路由更新消息,其中,该路由更新消息包括所述目的地地址; 识别(915)与所述路由更新消息相关联的针对所述第一网络设备的下一跳; 响应于接收到所述路由更新消息,确定(920、925)所述目的地地址是否被指派给所述第一网络设备;以及 如果所述目的地地址未被指派给所述第一网络设备,则将所述下一跳和目的地地址传送(935)至所述第二网络设备。
9.一种网络设备,该网络设备包括: 网络接口(210),被配置成接收消息;以及 授权管理器(230),被配置成: 确定与所述消息相关联的目的地地址; 确定所述目的地地址是否被指派给所述网络设备; 如果所述目的地地址未被指派给所述网络设备,则经由所述网络接口查询第二网络设备,以得到所述目的地地址的下一跳; 响应于所述查询,并且经由所述网络接口,接收对所述目的地地址的所述下一跳的指示;以及 响应于对所述下一跳的所述指示,经由所述网络接口将所述消息转发至所述下一跳。
10.根据权利要求9所述的网络设备,其中,在确定所述目的地地址是否被指派给所述网络设备的过程中,所述授权管理器(230)被配置成: 对所述目的地地址执行散列函数,以产生散列密钥; 识别多个网络设备标识(ID)中与所述散列密钥最接近的网络设备ID;以及 确定所识别出的网络设备ID是否与所述网络设备相关联。
11.根据权利要求10所述的网络设备,其中,所识别出的网络设备ID与所述第二网络设备相关联。
12.根据权利要求10-11中任一权利要求所述的网络设备,其中,在执行散列函数中,所述授权管理器(230)被配置成: 识别所述目的地地址的第一分量和第二分量; 对所述第一分量进行散列; 独立于对所述第一分量进行散列的步骤,对所述第二分量进行散列;以及 合并至少散列后的第一分量和散列后的第二分量,以产生所述散列密钥。
13.根据权利要求9-12中任一权利要求所述的网络设备,该网络设备还包括: 路由缓存(220),被配置成: 确定该路由缓存是否存储与所述目的地地址相关联的缓存项;以及响应于对所述下一跳的指示,添加与所述目的地地址相关联且基于对所述下一跳的指示的新的缓存项; 其中,所述授权管理器被配置成:响应于所述路由缓存确定该路由缓存未存储与所述目的地地址相关联的缓存项,确定所述目的地地址是否被指派给所述网络设备。
14.根据权利要求9-13中任一权利要求所述的网络设备,其中,所述目的地地址是内容名称。
15.根据权利要求9-14中任一权利要求所述的网络设备,该网络设备还包括: 未决的路由表(240),该未决的路由表(240)在所述授权管理器等待对所述目的地地址的下一跳的指示的同时存储所述消息。
【文档编号】H04L12/725GK104170333SQ201380014232
【公开日】2014年11月26日 申请日期:2013年3月11日 优先权日:2012年3月15日
【发明者】M·瓦尔韦罗, D·派里诺, J·埃斯特班 申请人:阿尔卡特朗讯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1