一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

改进冗余网络安全设备的可用性和性能的智能流状态同步的制作方法

2023-02-19 09:24:32 来源:中国专利 TAG:

改进冗余网络安全设备的可用性和性能的智能流状态同步
§
1.

背景技术:

§
1.1技术领域
1.本说明书涉及通信网络和安全。更具体地,本说明书涉及向通信网络提供安全。
2.§
1.2背景信息
3.当前网络安全设备通常通过处理接收到的互联网协议(ip)分组来提供各种状态性网络安全服务(例如层3至层7(l3至l7))。当前网络安全设备用于监测网络业务并且将其分类为合法的或可疑的。可疑业务可以被丢弃和/或阻止,和/或应用其他安全处理。在典型的l3网络拓扑中,安全设备经由动态路由协议(例如bgp)连接至邻居路由器。
4.为了增加网络安全服务的弹性、可用性以及性能,需要将多个安全设备分组在一起,使得一个或多个备份安全设备可以在主要安全设备因某些原因而出现故障或停机(例如重启)的情况下提供冗余。还可能需要多个安全设备通过并行操作来共享提供安全服务的工作负载。
5.图1图示了示例网络拓扑100,其中n个安全设备(sd)110的池或组为上游路由器120(例如连接至公共网络125或公共网络125的一部分的rl和r2)和下游路由器130(例如连接至内部网络135或内部网络135的一部分的r3和r4)提供安全。安全设备、上游路由器和/或下游路由器可以经由协议(诸如边界网关协议(bgp)130)共享控制信息。上游路由器120中的每个上游路由器可以使用等价多路径(ecmp)140来提供至安全设备110的池的转发。例如,路由器实现基于分组的转发。在选择ecmp下一跳时,路由器可以使用各种不同的算法。一个这种算法是哈希算法,其输入或密钥包括从ip分组的报头中提取的信息(例如源ip地址和/或目的地ip地址)。类似地,下游路由器130中的每个下游路由器可以使用ecmp 150来提供至安全设备110的池的转发。
6.从概念上讲,该提供安全设备的池的策略看起来很有前景。然而,遗憾地是,当冗余安全设备的数量变大时(假设将提供“状态性”安全),其具有缩放问题。如果这些安全设备将提供状态性安全,那么缩放问题源于在安全设备之间需要进行流状态同步。更具体地,路由器通常将冗余安全设备视为ecmp下一跳。也就是说,路由器通常使用ecmp路径选择算法(例如使用以分组的ip地址作为输入提供的哈希函数)将ip分组映射至安全设备。路由器使用映射结果来选择安全设备作为ip分组的下一跳,并且将其发送给所选择的安全设备。
7.实际上,安全设备可以停止服务(例如“停机”)并且稍后恢复(例如“联机”)。在安全设备停机时安全设备的潜在变化将使路由器更改ip分组流与其安全设备的下一跳之间的映射。在不知道上游路由器和/或下游路由器的这种映射变化的结果的情况下,组中的安全设备将假设映射将随机改变的最坏情况场景。因此,在该最坏情况假设下,每个安全设备将需要由其同级设备中的任何同级设备和所有同级设备进行备份。也就是说,在该最坏情况假设下,每个安全设备将使其流状态信息与组中的所有同级安全设备同步。流状态信息的该同步量将使安全设备花费过多的带宽来将状态发送给每个同级安全设备(和接收)状态并分派大量存储器以将所有同级安全设备接收到的状态的副本存储在组中,尤其是在n
变大的情况。该问题使得按比例增加冗余安全设备的数量在技术上和经济上是不切实际的。
8.鉴于前述内容,提供具有高弹性、可用性以及性能的安全服务将是有用的。在避免缩放问题的同时为此提供许多冗余安全设备将是有用的。
9.一些安全设备应用双向规则,且因此,在上游方向和下游方向两者上追踪关于数据业务的信息。因此,提供状态性的双向安全将是有用的。
§
2.

技术实现要素:

10.根据本说明书的示例实施例解决了提供许多冗余安全设备,同时避免缩放问题的挑战。根据本说明书的示例实施例可以通过基于一致性哈希环过程将双向流的分组转发给特定安全设备来实现。针对给定流,双向状态信息在一些但并非全部安全设备之间同步。这种双向流状态信息被共享的安全设备使用相同的一致性哈希环过程来确定。
11.在一个示例实施例中,提供了一种用于在至少一个上游路由器与至少一个下游路由器之间使用的安全系统。这种安全系统包括:第一多个(n个)安全设备,被布置在至少一个上游路由器与至少一个下游路由器之间,第一多个安全设备中的每个安全设备被配置成为至少一个上游路由器与至少一个下游路由器之间的多个双向流提供双向安全服务。针对多个双向流中的每个双向流,(1)使用用于生成一致性哈希环的一致性哈希环算法将第一多个安全设备中的一个安全设备作为主要安全设备分配给双向流,并且(2)使用一致性哈希环算法将第一多个安全设备中的一个或多个(m个,其中m至少为1)安全设备的集合作为(多个)备份安全设备分配给双向流,其中m 1小于n。第一多个安全设备中的每个安全设备被配置有状态同步过程,其中针对多个双向流中的每个双向流,被分配给双向流的主要安全设备和被分配给双向流的m个备份安全设备的集合使双向流状态信息彼此同步,但不使双向流状态信息与n个安全设备中的所有安全设备同步。
12.在一些此类安全系统中,针对多个流中的每个流,被分配给双向流的主要安全设备和被分配给双向流的m个备份安全设备的集合仅使双向流状态信息彼此同步,但不使双向流状态信息与n个安全设备中的任何其他安全设备同步。
13.在一些此类安全系统中,针对多个双向流中的每个双向流,被分配给双向流的m个备份安全设备是一致性哈希环上(例如按顺时针方向)的被分配给双向流的主要安全设备之后的m个下一个唯一安全设备。
14.在一些此类安全系统中,在被分配给给定双向流的主要安全设备出现故障时,至少一个上游路由器和至少一个下游路由器将属于给定双向流的任何分组转发给m个备份安全设备中的下一个可用(例如up)备份安全设备,该下一个可用备份安全设备被分配给一致性哈希环上的给定双向流。在一些此类安全系统中,在被分配给给定双向流的主要安全设备恢复时,响应于恢复,至少一个上游路由器和至少一个下游路由器将属于给定双向流的任何分组转发给被分配给给定双向流的主要安全设备。
15.在一些此类安全系统中,如果m大于1,那么在(1)被分配给给定双向流的主要安全设备和(2)被分配给给定双向流的一致性哈希环上的m个备份安全设备中的下一个备份安全设备两者出现故障时,至少一个上游路由器和至少一个下游路由器将属于给定双向流的任何分组转发给被分配给一致性哈希环上的给定双向流的m个备份安全设备中的下一个可
用备份安全设备。
§
3.附图说明
16.图1图示了安全设备的池或组为上游路由器和下游路由器提供安全的示例网络拓扑。
17.图2图示了一致性哈希环上的分组流和安全设备的分配。
18.图3图示了分组流与其一致性哈希环上的主要安全设备和n个备份安全设备的关联。
19.图4a和图4b是分别由上游路由器或下游路由器和安全设备执行的示例方法的流程图。
20.图5图示了两个数据转发系统,可以将该数据转发系统用作通信网络(诸如采用路由器和安全设备的通信网络)中的经由通信链路耦合的节点。
21.图6是可以用于通信网络(诸如采用路由器和安全设备的通信网络)的路由器的框图。
22.图7是asic可以分布在分组转发组件中以划分分组转发的责任的示例架构。
23.图8a和图8b是图7的示例架构的操作的示例。
24.图9是用于在示例路由器中提供分组转发的示例方法的流程图。
25.图10是可以执行所描述的过程中的一个或多个过程和/或存储由此类过程使用和/或生成的信息的示例性机器的框图。
26.图11图示了备份安全设备的流状态同步。
27.图12图示了所恢复的安全设备与其同级安全设备之间的关系。
28.图13图示了一致性哈希环上的虚拟安全设备(与物理安全设备相关联)的布置。
29.图14图示了在布置在一致性哈希环上的虚拟安全设备(与物理安全设备相关联)之间同步或共享流状态信息。
30.图15图示了由示例上游路由器和下游路由器相对于安全设备的池进行的操作。
31.§
4.详细描述
32.本公开可以涉及新颖方法、装置、消息格式和/或数据结构以高效地减少或最小化(例如许多)冗余安全设备的状态同步的开销。呈现以下描述是为了使得本领域的技术人员能够制作和使用所描述的实施例,并且是在特定应用及其要求的上下文中提供的。因此,对示例实施例的以下描述提供了说明和描述,但并不旨在作为详尽的或将本公开限制于所公开的精确形式。对所公开的实施例的各种修改对于本领域的技术人员而言将是明显的,并且可以将下文所阐述的一般原理应用于其他实施例和应用。例如,尽管可以参考流程图来描述一系列动作,但当一个动作的执行不依赖于另一个动作的完成时,动作的顺序在其他实现中可以不同。进一步地,可以并行执行非依赖动作。因而,除非明确描述,否则本说明书中所使用的任何元件、动作或指令都不应被解释为对本说明书为关键的或必要的。此外,如本文中所使用,冠词“一”旨在包括一个或多个项。在仅预期一个项的情况下,使用术语“一个”或类似语言。因此,本公开不旨在限制于所示出的实施例,并且发明人将其发明视为所描述的任何可取得专利的主题。
33.§
4.1定义
[0034]“一致性哈希环算法”是在多个设备之间共享的算法或过程,使得每个设备可以根据一个或多个给定输入独立地确定一致性哈希环或哈希环上的一致性位置。
[0035]“安全设备”是提供安全功能性(并且可能还提供路由功能性)的设备。安全设备旨在包括硬件和软件(也被称为“物理”或“真实”)安全设备以及虚拟安全设备的实例。例如,可以在公共提供方云上启动虚拟化安全设备。因此,安全设备可以包括硬件、软件或硬件与软件的某种组合。安全设备可以被称为“应用级网关”。
[0036]“可用”安全设备可以提供安全功能性,并且可能还提供路由功能性。“可用”的安全设备可能包括安全设备从故障中恢复的状态、安全设备已经完成了重启的状态等。“可用”安全设备可能处于“up”状态下或处于“cold”状态下。更具体地,当安全设备处于up状态下时,安全设备是可操作的,准备好提供状态性安全,并且具有所有需要的流状态信息。当安全设备正在接收一些需要的流状态信息(例如具有不完备的同步)时,可以将这种安全设备视为处于部分启动或“cold”状态下。例如,“恢复”安全可能没有分组流状态信息(cold)、不完备的分组流状态信息(cold)或完备的分组流状态信息(up)。因此,在恢复的安全设备没有分组流状态信息或不完备的分组流状态信息的情况下,恢复的安全设备可以据称是“cold”,但是随着安全设备接收到更多的分组流状态信息而“预热”。因此,恢复的sd可能还没有准备好提供安全功能,且可能会将cold状态视为down状态与up状态之间的过渡状态。不可用(例如非up且非cold)的安全设备据称为“不可用的”。
[0037]
§
4.2配置系统的概述
[0038]
在根据本说明书的示例系统中,分组的安全设备连接至下游路由器和上游路由器以经由路由协议交换控制信息。分组的安全设备还为ip分组提供(多个)网络安全服务,该ip分组将这些网络安全服务从上游路由器过渡到下游路由器或从下游路由器过渡到上游路由器。网络安全服务根据过渡安全设备的双向ip分组的流是“状态性的”。因此,安全设备创建、存储、更新和删除正在处理的双向ip分组的每个流的状态。在根据本说明书的一些示例实施例中,流由ip分组报头数据的元组(例如源ip地址、目的地ip地址等)定义。
[0039]
为了防止(多个)安全设备的潜在故障中断“状态性的”网络安全服务,需要每个流的状态信息的冗余副本。可以将状态信息的该冗余副本存储在另一设备上,诸如存储在另一安全设备上。如上文所提到的,路由器可以朝向多个安全设备针对每个分组流使用ecmp转发,以实现网络冗余。安全设备使每个流的状态信息与适合的同级设备同步,以确保状态性网络安全服务的冗余。从路由器的角度来看,通过主要ecmp路径将每个分组流发送给主要安全设备,或通过若干(或更一般而言,至少一条)备份ecmp路径中的一条备份ecmp路径将每个分组流发送给若干(或更一般而言,至少一个)备份安全设备中的一个备份安全设备。利用网络安全服务的1:m冗余模型,每个安全设备由m个设备进行备份;流的主要安全设备使其流状态同步到m个备份安全设备,其中m等于或大于1,但小于n。当安全设备的总数(用n表示)为大时,m远小于n,作为实际问题。因此,在m个安全设备之间共享每种流状态信息独立于池中的安全设备的总数n而按比例进行调整。
[0040]
通过在m个安全设备之间共享流状态信息,这些m个安全设备及其邻居路由器针对每个分组流具有主要安全设备和备份安全设备的相同(或几乎相同)的观点。在根据本说明书的示例实施例中,这是通过使这些路由器和安全设备共享并使用相同的一致性哈希算法来为每个分组流确定一组相同的主要安全设备和备份安全设备来实现的。利用该相同观
点,具有1:m冗余模型的安全设备仅将每个分组流的状态的同步范围限制于被分配给流的主要设备和m个备份设备之间,而非限制于所有的n个设备之间。因此,流状态同步的效率显著提高(尤其是在m《《n的情况下),并且每个安全设备的流状态同步的负载与安全设备的总数(n)无关。常规地,n个设备之间的状态同步是o(n
2-)问题。然而,在根据本说明书的示例实施例的情况下,每个安全设备的状态同步限制于m个设备,并且安全设备的总数(n)的状态同步是o(nm)问题,其中m《《n。由上可知,n:m比越大,流状态同步的效率提高得越多。
[0041]
应用一致性哈希算法准许路由器减少在故障(进入down状态;也就是说,变为不可用)和恢复(进入up状态;也就是说,变为可用)之后跨安全设备的分组混排流。一般而言,路由器仅重定向位于进入up和down的sd与其在一致性哈希环上的直接邻居sd之间的段上的流;而非重定向位于该段之外的流。因此,与常规哈希算法相比,使用一致性哈希算法来减少或限制重定向分组流的一部分。应用一致性哈希算法还准许安全设备容易地标识给定分组流的主要安全设备和(多个)备份设备。一致性哈希算法的输入是由分组的报头数据的元组(例如源ip地址、目的地ip地址等)定义的ip分组流。
[0042]
为了确保安全设备所需的对称路由,下游路由器和上游路由器将相同信息以及从ip分组的报头中提取的数据用作一致性哈希算法的输入。例如,在根据本说明书的一个示例实施例中,源ip地址和目的地ip地址被维持作为上游(或下游)路由器的一致性哈希算法的输入,但在上游(或下游)路由器的一致性哈希算法的输入之前被反转。因此,针对相同双向流的分组,下游路由器和上游路由器获得一致性哈希函数的相同结果(输出)。进一步地,安全设备从下游路由器和上游路由器两者接收分组,并且可以从分组的报头中提取不同数据以用作由安全设备应用的一致性哈希算法的输入。因此,当安全设备从下游路由器或上游路由器接收分组时,安全设备从分组的报头中提取与路由器相同的数据,并将从分组报头中提取的数据用作相同的一致性哈希算法的输入。因此,无论邻居路由器是在安全设备的上游还是下游,安全设备及其邻居路由器都针对从路由器发送给设备的分组获得一致性哈希函数的相同结果。
[0043]
一致性哈希算法的结果或输出是一致性哈希环上的位置。所有n个安全设备根据其(多个)唯一标识符(例如其ip地址(例如回路地址)、其设备id、安全设备配置信息、层2(例如mac)地址等)而被分配给(例如均匀地)分布在一致性哈希环上的位置。所有安全设备和邻居路由器共享该分配(由于这些安全设备和邻居路由器将相同信息作为输入应用于相同的一致性哈希算法)。图2图示了一致性哈希环上的分组流和安全设备的分配。在图2中,sdi表示n个安全设备中的第i个安全设备。pi和ki分别表示具有相同哈希密钥(k)的分组流(p)。
[0044]
首先假设没有安全设备出现故障的场景。在该场景中,针对每个分组流,给定分组流的主要安全设备是一致性哈希环上按给定方向(例如顺时针方向)的位于流的位置之后的安全设备(通过应用从流分组的报头中提取的数据作为一致性哈希算法的输入)。给定流的m个备份安全设备是在给定(例如顺时针)方向上位于一致性哈希环上的主要安全设备之后的接下来的m个安全设备。除非该主要安全设备出现故障且直到该主要安全设备出现故障为止,否则分组流据称由其主要安全设备“拥有”。
[0045]
现在假设安全设备出现故障(或以其他方式停机;也就是说,变为不可用)。响应于其故障,将安全设备视为从一致性哈希环中移除。因此,先前“由”故障安全设备“拥有”的分
组流将被位于(例如顺时针)方向上的一致性哈希环上的m个备份安全设备中的下一个可用备份安全设备(按顺序)“拥有”。(注意,如果“状态性”安全不是严格要求的,那么先前由故障安全设备拥有的分组流将被位于(例如顺时针)方向上的一致性哈希环上的n个安全设备中的下一个可用安全设备拥有。)
[0046]
现在假设故障安全设备恢复(或以其他方式进入up状态;也就是说,变为可用)。作为响应,将该安全设备视为添加回一致性哈希环。因此,先前已经从所恢复的安全设备迁移到备份安全设备的分组流的所有权将被返回到所恢复的主要安全设备。
[0047]
图3图示了分组流与其一致性哈希环上的主要安全设备和m个备份安全设备的关联。如所示出的,sd1被分配作为分组流p1的主要安全设备,并且设备sd2至sd
m 1
被分配作为分组流p1的m个备份安全设备。备份安全设备在其主要安全设备sd1处于down或以其他方式不可用时接收流p1的分组的顺序是基于其相对于(例如在顺时针方向上)一致性哈希环上的其他备份安全设备的位置的位置进行排序。也就是说,安全设备d2、d3以及d
m 1
是被分配给分组流p1的第一备份设备、第二备份设备以及第m备份设备。
[0048]
上游路由器和下游路由器应用一致性哈希算法来标识“拥有”给定分组流的主要安全设备。将标识的主要安全设备用作流的分组的(例如ecmp)下一跳。当分组流被分配给的主要安全设备正常工作(也就是说,处于up或以其他方式可用)时,路由器朝向其所分配的主要安全设备发送流的分组。否则,路由器朝向其拥有分组流的备份安全设备(也就是说,分组流的下一个可用(在一致性哈希环上)备份安全设备)重定向流的分组。
[0049]
§
4.3(多个)示例方法
[0050]
图4a和图4b是分别由上游路由器或下游路由器和安全设备执行的示例方法400和450的流程图。首先参看图4a,响应于不同事件的发生而执行示例方法400的不同分支。(事件分支点405)例如,响应于用于更新路由器的转发表的一个或多个条件被满足,示例方法400执行示例方法400的左侧分支。注意,各种条件可以用于触发和更新转发表。此类条件可能包括例如分组的接收、内部网关协议(igp)信息的接收、协议通告中的网络拓扑信息的接收等。参看左侧分支,示例方法400使用一致性哈希环算法499,针对每个双向流确定主要安全设备和m个(其中m至少为一)辅助安全设备。(框410)示例方法400然后针对每个双向流存储所确定的主要安全设备作为下一跳并且存储m个辅助安全设备作为(多个)备份下一跳。(框415)示例方法400然后经由节点a分支回到事件分支点405(448)。
[0051]
再次参看事件分支点405,响应于接收到分组(例如在运行方法400的路由器是上游路由器120的情况下从公共网络125,或在运行方法400的路由器是下游路由器130的情况下从内部网络135),执行示例方法400的右侧分支。更具体地,示例方法400确定分组所属的双向流并且确定(例如ecmp)下一跳。(框420)也就是说,实际上,示例方法400将所确定的双向流被分配给的多个n个安全设备中的一个安全设备确定为主要安全设备。接下来,确定主要安全设备(下一跳)是否可用。如果主要安全设备可用(决策425=是),那么方法400在该方法经由节点a分支回到事件分支点405(448)之前经由主要安全设备转发分组(框430)。另一方面,如果确定主要安全设备不可用(决策425=否),那么示例方法400确定一致性哈希环上的m个安全设备中的任何安全设备(也就是说,备份下一跳中的任何备份下一跳)是否可用。如果主要安全设备可用(决策435=是),那么示例方法400在示例方法400经由节点a分支回到事件分支点405之前将接收到的新分组转发给一致性哈希环上的多个m个安全设
备中的所确定的下一个可用安全设备(框440)。另一方面,如果确定一致性哈希环上没有一个m个安全设备(也就是说,备份下一跳中的任何备份下一跳)可用(决策445=否),那么示例方法400可以调用以下一项:(a)无安全选项,其中在不具有任何安全的情况下转发分组(例如通过绕过安全设备的池,这可能不是实际选项,这是因为其打开安全漏洞)、(b)非状态性安全选项,其中分组由除了主要设备或m个备份设备以外的安全设备转发(例如n个安全设备中的下一个可用安全设备),该安全设备针对分组所属的流将不具有状态信息或(c)极端安全选项,其中在示例方法400经由节点a(448)分支回到事件分支点405之前丢弃分组(框445)。
[0052]
接着参看图4b,响应于不同事件的发生而执行示例方法450的不同分支。(事件分支点452)例如,响应于用于配置安全设备的一个或多个条件被满足,示例方法450执行示例方法450的最左侧分支。更具体地,示例方法450使用用于生成一致性哈希环的一致性哈希环算法499(其与图4a的示例方法400所使用的499相同),将安全设备分配给一致性哈希环上的地点(框460)并且确定一致性哈希环上的接下来的m个安全设备(框462)。示例方法450然后经由节点b分支回到事件分支点452(495)。
[0053]
返回参看事件分支点452,响应于从(a)至少一个上游路由器中的一个上游路由器或(b)至少一个下游路由器中的一个下游路由器接收到分组,示例方法450执行左起第二分支。更具体地,示例方法450确定分组所属的双向流(框470),更新接收到的分组所属的给定双向流的状态(或在状态尚未存在的情况下创建新状态)(框472),并且将安全应用于接收到的分组(例如转发分组、丢弃分组、复制分组、重定向分组等)(框474)。示例方法450然后经由节点b分支回到事件分支点452(495)。
[0054]
返回参看事件分支点452,响应于用于共享/同步流状态信息的一个或多个条件被满足,执行示例方法450的从右起第二分支。更具体地,示例方法450使安全设备是主要安全设备(或安全设备是响应于主要安全设备处于down而接收分组的备份安全设备)的给定双向流的所存储的状态与被分配给给定双向流的处于up的m个备份安全设备的集合(也就是说,一致性哈希环上的主要安全设备的接下来的m个安全设备内的处于up状态下的安全设备(例如按顺时针方向)同步,但不使所存储的状态与n个安全设备中的所有安全设备同步。(框480)示例方法450然后经由节点b分支回到事件分支点452(495)。
[0055]
返回参看事件分支点452,响应于安全设备进入“up”状态,执行示例方法450的最右侧分支。更具体地,示例方法450使用一致性哈希环算法499寻找(1)一致性哈希环上的安全设备之前的m个可用安全设备的第一集合和(2)一致性哈希环上的安全设备之后的m个可用安全设备的第二集合两者。(框490),示例方法450然后使m个安全设备的第一集合中的每个安全设备作为主要安全设备而被分配给的多个双向流中的任何双向流的状态信息与up安全设备同步(框492),并且使执行方法450的up安全设备作为主要安全设备而被分配给的多个双向流中的任何双向流的状态信息与处于up状态下的m个安全设备的第二集合中的最近安全设备同步(框494)。示例方法450然后经由节点b分支回到事件分支点452(495)。
[0056]
返回参看框490,尽管可以执行该响应于安全设备进入“up”状态而使用一致性哈希环算法499寻找(1)一致性哈希环上的安全设备之前的m个安全设备的第一集合和(2)一致性哈希环上的安全设备之后的m个安全设备的第二集合两者的动作,但无论安全设备是否进入up状态,都可以执行该寻找动作。
[0057]
注意,当安全设备进入down状态时,示例方法450不需要做任何事,这是因为此将被上游路由器和下游路由器识别到。(回顾例如图4a的425和435)。
[0058]
§
4.4示例装置
[0059]
图5图示了经由通信链路530耦合的两个数据转发系统510和520。链路可以是物理链路或“无线”链路。例如,数据转发系统510和520可以分别是路由器和安全设备。注意,安全设备520也可以包括路由器的功能。数据转发系统510、520分别可以包括控制组件(例如路由引擎)514、524以及转发组件512、522。每个数据转发系统510、520包括终止一条或多条通信链路530的一个或多个接口516、526。
[0060]
仍然参看图5,路由器510的控制组件514可以用于与(多个)网络安全设备520共享路由器id、路由器的总数以及一致性哈希算法的特性。网络安全设备520的控制组件524可以用于与同级路由器共享设备id、安全设备的总数以及一致性哈希算法的特性。路由器510的转发组件512可以应用一致性哈希算法来选择ecmp路径以将(多个)流的分组转发给(多个)安全设备。最后,网络安全设备520的转发组件522可以(1)从路由器接收分组并且更新对应流的状态,(2)使流状态与给定流的工作备份安全设备同步,并且(3)检测同级安全设备的恢复并且使(多个)流的(多种)状态同步到所恢复的同级安全设备。根据本说明书的示例实施例可以集成在网络路由器和安全设备的控制面和数据面中,并且可以作为路由器和安全设备的高级特征而利用软件和/或硬件来实现。
[0061]
如上文刚才讨论的并且参看图6,一些示例数据转发设备(诸如安全设备和路由器600)包括控制组件(例如路由引擎)610和分组转发组件(例如分组转发引擎)690。
[0062]
控制组件610可以包括操作系统(os)内核620、(多个)路由协议过程630、(多个)基于标签的转发协议过程640、(多个)接口过程650、(多个)用户界面(例如命令行界面)过程660以及(多个)机架过程670,并且可以存储(多个)路由表639、标签转发信息645以及(多个)转发(例如基于路由的和/或基于标签的)表680。如所示出的,(多个)路由协议过程630可以支持路由协议,诸如路由信息协议(“rip”)631、中间系统到中间系统协议(“is-is”)632、开放式最短路径优先协议(“ospf”)633、增强型内部网关路由协议(“eigrp”)634以及边界网关协议(“bgp”)635,并且(多个)基于标签的转发协议过程640可以支持协议,诸如bgp 635、标签分布协议(“ldp”)636、资源预留协议(“rsvp”)637、evpn 638以及l2vpn639。一个或多个组件(未示出)可以准许用户665与(多个)用户界面过程660进行交互。类似地,一个或多个组件(未示出)可以准许外部设备经由snmp 685与(多个)路由器协议过程630、(多个)基于标签的转发协议过程640、(多个)接口过程650以及(多个)机架过程670中的一个或多个进行交互,并且此类过程可以经由snmp 685将信息发送给外部设备。
[0063]
分组转发组件690可以包括在硬件组件(例如asic、交换结构、光学器件等)691上方的微内核692、(多个)接口过程693、asic驱动器694、(多个)机架过程695以及(多个)转发(例如基于路由的和/或基于标签的)表696。
[0064]
在图6的示例路由器600中,控制组件610处理任务,诸如执行路由协议、执行基于标签的转发协议、控制分组处理等,这释放了分组转发组件690以快速转发接收到的分组。也就是说,接收到的控制分组(例如路由协议分组和/或基于标签的转发协议分组)并未在分组转发组件690本身上完全处理,而是被传递给控制组件610,从而减少了分组转发组件690必须进行的工作负载并且释放其以处理要高效转发的分组。因此,控制组件610主要负
责运行路由协议和/或基于标签的转发协议,维护路由表和/或标签转发信息,将转发表更新发送给分组转发组件690并且执行系统管理。示例控制组件610可以处理路由协议分组,提供管理接口、提供配置管理,执行记账并且提供警报。过程630、640、650、660以及670可以是模块化的,并且可以与os内核620进行交互。也就是说,过程中的几乎所有过程都直接与os内核620进行通信。使用将过程彼此干净地分离的模块化软件隔离给定过程的问题,使得此类问题不会影响可能正在运行的其他过程。附加地,使用模块化软件有助于更容易的缩放。
[0065]
仍然参看图6,示例os内核620可以包含用于外部程序调用和脚本编写能力的应用编程接口(“api”)系统。控制组件610可以是基于从闪速存储器运行os的intel pci平台,其中交替副本存储在路由器的硬盘上。os内核620分层于intel pci平台上,并且在intel pci平台与控制组件610的过程之间建立通信。os内核620还确保分组转发组件690使用的转发表696与控制组件610中的那些680同步。因此,除了提供底层基础设施来控制组件610软件过程之外,os内核620还提供控制组件610与分组转发组件690之间的链路。
[0066]
参看图6的(多个)路由协议过程630,该(多个)过程630在平台内提供路由和路由控制功能。在该示例中,提供了rip 631、isis 632、ospf 633以及eigrp 634(和bgp 635)协议。自然地,可以另外或备选地提供其他路由协议。类似地,(多个)基于标签的转发协议过程640提供标签转发和标签控制功能。在该示例中,提供了ldp 636、rsvp 637、evpn 638以及l2vpn 639(和bgp 635)协议。自然地,可以另外或备选地提供其他基于标签的转发协议(例如mpls、sr等)。在示例路由器600中,(多个)路由表639由(多个)路由协议过程630产生,而标签转发信息645由(多个)基于标签的转发协议过程640产生。
[0067]
仍然参看图6,(多个)接口过程650执行物理接口的配置和封装。
[0068]
示例控制组件610可以提供若干方式来管理路由器。例如,示例控制组件610可以提供允许系统操作员665通过配置、修改以及监测与系统进行交互的(多个)用户界面过程660。snmp 685允许具有snmp能力的系统与路由器平台进行通信。这也允许平台向外部代理提供必要的snmp信息。例如,snmp 685可以准许通过框架(诸如惠普的openview)从运行软件的网络管理站(诸如惠普的网络节点管理器(“hp-nnm”))管理系统。分组的记账(通常被称为业务统计)可以由控制组件610执行,从而避免分组转发组件690减慢业务转发。
[0069]
尽管未示出,但示例路由器600可以提供带外管理、用于串行控制台和远程管理访问的rs-232db9端口以及使用可移除pc卡的三级存储装置。进一步地,尽管未示出,但定位于机架前方的工艺接口提供了路由器的内部工作的外部视图。可以将其用作故障排除工具、监测工具或两者。工艺接口可以包括led指示器、警报指示器、控制组件端口和/或显示屏。最后,工艺接口可以经由控制台端口、辅助端口和/或管理以太网端口提供与命令行界面(“cli”)660的交互。
[0070]
分组转发组件690负责尽可能快地正确输出接收到的分组。如果在转发表中不存在针对给定目的地或给定标签的条目并且分组转发组件690无法自行执行转发,那么分组转发组件690可以将通往该未知目的地的分组发送给控制组件610以进行处理。示例分组转发组件690被设计成执行层2和层3交换、路由查找以及快速分组转发。
[0071]
如图6中所示出,示例分组转发组件690具有在硬件组件691上方的嵌入式微内核692、(多个)接口过程693、asic驱动器694以及(多个)机架过程695,并且存储(多个)转发
(例如基于路由的和/或基于标签的)表696。微内核692与(多个)接口过程693和(多个)机架过程695进行交互以监测和控制这些功能。(多个)接口过程692具有与控制组件610的os内核620的直接通信。该通信包括将异常分组和控制分组转发给控制组件610,接收要转发的分组,接收转发表更新,向控制组件610提供关于分组转发组件690的健康的信息并且准许来自控制组件610的(多个)用户界面(例如cli)过程660的接口的配置。所存储的(多个)转发表696是静态的,直到从控制组件610接收到新转发表为止。(多个)接口过程693使用(多个)转发表696来查找下一跳信息。(多个)接口过程693还具有与分布式asic的直接通信。最后,(多个)机架过程695可以直接与微内核692和asic驱动器694进行通信。
[0072]
返回参看图5,根据本说明书的路由器的某些功能可以由控制组件514执行,而其他功能由转发组件512执行。类似地,根据本说明书的网络安全设备的某些功能可以由控制组件524执行,而其他功能由转发组件522执行。
[0073]
图7是asic可以如何分布在分组转发组件690中以划分分组转发的责任的示例。如图7中所示出,分组转发组件690的asic可以分布在物理接口卡(“pic”)710、柔性pic集中器(“fpc”)720、中间面或背面730以及(多个)系统控制板740(用于交换和/或转发)上。交换结构也被示出为系统交换板(“ssb”)或交换和转发模块(“sfm”)750(其可以是如图8a和8b中所示出的交换结构750')。pic 710中的每个pic包括一个或多个pic i/o管理器715。fpc 720中的每个fpc包括分别具有相关联的存储器724(其可以是如图8a和图8b中所示出的rdram 724')的一个或多个i/o管理器722。中间面/背面730包括缓冲器管理器735a、735b。最后,系统控制板740包括互联网处理器742和转发表744的实例(回顾例如图6的696)。
[0074]
仍然参看图7,pic 710包含接口端口。可以将每个pic 710插入到fpc 720中。每个单独pic 710可以包含处理介质特定功能(诸如组帧或封装)的asic。一些示例pic 710提供sdh/sonet、atm、千兆以太网、快速以太网和/或ds3/e3接口端口。
[0075]
fpc 720可以包含一个或多个pic 710,并且可以将信号从如图7中所示出的pic 710传载到中间面/背面730。
[0076]
中间面/背面730保持线卡。当将线卡从前方插入到示例路由器的机架中时,线卡可以连接到中间面/背面730中。控制组件(例如路由引擎)610可以从机架的后方插入到中间面/背面730的后方。中间面/背面730可以将电(或光)信号和电力传载到每个线卡和控制组件610。
[0077]
系统控制板740可以执行转发查找。系统控制板740还可以将错误传送给路由引擎。进一步地,系统控制板740还可以基于其从传感器接收的信息来监测路由器的状况。如果检测到异常状况,系统控制板740可以立即通知控制组件610。
[0078]
参看图7、图8a以及图8b,在一些示例性路由器中,pic 710、710'中的每个pic包含负责介质特定任务(诸如封装)的至少一个i/o管理器asic 715。分组在进出路由器的过程中穿过这些i/o asic。pic710、710'上的i/o管理器asic 715负责管理与fpc 720、720'上的i/o管理器asic 722的连接,管理链路层组帧和创建比特流,执行循环冗余校验(crc),并且在适当时检测链路层错误并生成警报。fpc 720包括另一i/o管理器asic 722。该asic 722(示出为层2/层3分组处理组件710'/720')从pic 710获取分组并且将其分解成(例如74字节)存储器区块。该fpc i/o管理器asic 722(示出为层2/层3分组处理组件710'/720')将区块发送给第一分布式缓冲器管理器(dbm)935a(示出为交换接口组件735a'),对封装和协议
特定信息进行译码,对每个逻辑电路的分组和字节进行计数,验证分组完整性并且将服务类别(cos)规则应用于分组。此时,首先将分组写入存储器。更具体地,示例dbm asic 735/735a'跨所有fpc 720管理分组并将其写入共享存储器724。并行地,第一dbm asic 735/735a'还提取关于分组的目的地的信息并且将该转发相关信息传递给互联网处理器742/742'。互联网处理器742/742'使用转发表744执行路由查找并且将信息发送给第二dbm asic 735b'。互联网处理器asic 742/742'还收集异常分组(即,不具有转发表条目的异常分组)并且将其发送给控制组件610。第二dbm asic 725(示出为排队和存储器接口组件735b')然后获取该信息和74字节区块并且将其转发给出口fpc 720/720'(或多个出口fpc)的i/o管理器asic 722,在多播的情况下)以进行重组。(因此,dbm asic 735a/735a'和735b/735b'负责管理分布在所有fpc 720/720'上的分组存储器724/724',从分组中提取转发相关信息,并且指示要转发分组的fpc。)
[0079]
出口fpc 720/720'上的i/o管理器asic 722可以执行一些增值服务。除了对生存时间(“ttl”)值进行增量和重新封装分组以供pic 710处理之外,其还可以应用服务类别(cos)规则。为此,在将规则应用于分组之前,其可以在可用队列中的一个可用队列中将指针排队到分组,该可用队列分别具有对链路带宽的共享。排队可以是基于各种规则。因此,出口fpc 720/720'上的i/o管理器asic 722可以负责从第二dbm asic 735/735'接收区块、对ttl值进行增量、将指针排队到分组,若需要,在应用cos规则之前,重新封装区块并且将封装的分组发送给pic i/o管理器asic 715。
[0080]
图9是用于在示例路由器中提供分组转发的示例方法900的流程图。当在入口(传入)端口或接口上接收到分组时,触发方法900的主要动作。(事件910)执行其所服务的介质类型所需的校验和类型和帧校验,并且将分组输出为串行比特流。(框920)然后解封装分组并将其解析成(例如64字节)区块。(框930)将分组写入缓冲器存储器并且在互联网处理器上传递转发信息。(框940)然后使用所传递的转发信息在转发表中查找路由。(框950)注意,转发表通常可以处理不具有所设置的选项(例如记账)的单播分组以及其已经具有缓存条目的多播分组。因此,如果确定满足这些条件(决策960的“是”分支),那么分组转发组件寻找下一跳和出口接口,并且在离开方法900之前(节点990)经由出口接口将分组转发(或排队等待转发)给下一跳(框970)。否则,如果不满足这些条件(决策960的“否”分支),那么在离开方法900之前(节点990)将转发信息发送给控制组件610以用于高级转发解析(框980)。
[0081]
返回参看框970,可以将分组排队。实际上,如先前参考图7所陈述的,可以将指向分组的指针排队。分组本身可以保留在共享存储器中。因此,所有排队决策和cos规则都可以在不存在实际分组的情况下应用。当用于分组的指针到达线路的前端时,i/o管理器asic 722可以将对分组的请求发送给第二dbm asic 735b。dbm asic 735从共享存储器读取区块并且将其发送给fpc 720上的i/o管理器asic722,该i/o管理器asic 722然后将比特序列化并且将其发送给出口接口的介质特定asic。出口pic 710上的i/o管理器asic 715可以应用物理层组帧,执行crc,并且通过链路将比特流发送出去。
[0082]
返回参看图9的框980以及图7,关于控制和异常分组的传输,系统控制板740处理几乎所有的异常分组。例如,系统控制板740可以将异常分组传递给控制组件610。
[0083]
尽管根据本说明书的示例实施例可以在图5或图6的示例路由器和/或安全设备上实现,但根据本说明书的实施例的至少一些部分可以在通信网络节点(例如具有不同架构
的路由器(真实和/或虚拟化)、安全设备(真实和/或虚拟化)、交换机等)上实现。更一般而言,根据本说明书的实施例可以在如图10所图示的示例系统900上实现。
[0084]
图10是可以执行所描述的方法(回顾例如图4a和图4b)中的一种或多种方法和/或存储由此类过程使用和/或生成的信息的示例性机器1000的框图。示例性机器1000包括一个或多个处理器1010、一个或多个输入/输出接口单元1030、一个或多个存储设备1020以及一条或多条系统总线和/或网络1040,以用于支持信息在耦合元件之间的传送。一个或多个输入设备1032和一个或多个输出设备1034可以与一个或多个输入/输出接口1030耦合。一个或多个处理器1010可以执行机器可执行指令(例如在可从多个供应方广泛获得的linux操作系统上运行的c或c )以实现本说明书的一个或多个方面。机器可执行指令的至少一部分可以(暂时地或更永久地)存储在一个或多个存储设备1020上和/或可以经由一个或多个输入接口单元1030从外部源接收。可以将机器可执行指令存储为各种软件模块,每个模块执行一个或多个操作。功能软件模块是本说明书的组件的示例。
[0085]
在根据本说明书的一些实施例中,处理器1010可以是一个或多个真实的和/或虚拟化的微处理器和/或asic。总线1040可以包括系统总线。存储设备1020可以包括系统存储器,诸如只读存储器(rom)和/或随机存取存储器(ram)。存储设备1020还可以包括用于从硬盘读取和写入硬盘的硬盘驱动器、用于从(例如可移除)磁盘读取或写入(例如可移除)磁盘的磁盘驱动器、用于从可移除(磁)光盘(诸如压缩光盘或其他(磁)光学介质)读取或写入可移除(磁)光盘的光盘驱动器,或固态非易失性存储装置。
[0086]
根据本说明书的一些示例实施例也可以被提供为用于存储机器可执行指令的机器可读介质。机器可读介质可以是非瞬态的并且可以包括但不限于闪速存储器、光盘、cd-rom、dvd rom、ram、eprom、eeprom、磁卡或光卡或任何其他类型的适合用于存储电子指令的机器可读介质。例如,根据本说明书的示例实施例可以作为计算机程序进行下载,该计算机程序可以借助于通信链路(例如调制解调器或网络连接)从远程计算机(例如服务器)传输到请求的计算机(例如客户端)并存储在非瞬态存储介质上。机器可读介质也可以被称为处理器可读介质。
[0087]
根据本说明书的示例实施例中的一些或所有部分(或其组件或模块)可以在硬件(诸如一个或多个现场可编程门阵列(“fpga”)、一个或多个集成电路(诸如asic)、一个或多个网络处理器等)中实现。备选地或另外,根据本说明书的实施例(或其组件或模块)可以被实现为由处理器执行的所存储的程序指令。可以在寻址数据(例如分组、单元等)转发设备(例如交换机、路由器等)、膝上型计算机、桌上型计算机、平板计算机、移动电话或具有计算和网络能力的任何设备中提供这种硬件和/或软件。
[0088]
§
4.5改进、备选以及扩展
[0089]
§
4.5.1确定m个备份安全设备的示例方式
[0090]
在根据本说明书的一些示例实施例中,主要安全设备针对主要安全设备所“拥有”的(多个)任何分组流标识m个(其中m至少为一)备份安全设备如下。当确定其m个备份安全设备时,主要安全设备可以(在概念上)从一致性哈希环中移除其自身并且使用一致性哈希环算法来为其所“拥有”的(多个)分组流寻找备份设备。如果m大于一,那么主要设备可以(在概念上)从一致性哈希环中移除其自身和任何已经找到的(多个)备份安全设备,然后再次使用一致性哈希算法来标识下一个备份安全设备。这可以重复,直到针对主要安全设备
所“拥有”的(多个)分组流标识了所有m个备份安全设备为止。在已经标识了所有m个备份设备后,如果备份设备正常工作,那么主要安全设备仅使其分组流的状态同步到m个备份设备(回顾例如图4b的框480)。
[0091]
注意,安全设备中的每个安全设备的状态可以由一个或多个上游路由器和一个或多个下游路由器追踪。注意,安全设备的up/down/cold状态与流状态或双向流状态不同。
[0092]
在根据本说明书的示例实施例中,即使在移除或添加了安全设备(和/或链路)时也维持一致性哈希。
[0093]
注意,在根据本说明书的一些示例实施例中,安全设备能够运行路由协议,诸如ebgp、ospf、is-is等。
[0094]
§
4.5.1确定m备份的示例方式
[0095]
在多个虚拟安全设备与物理(或真实)安全设备相关联时的(多个)安全设备
[0096]
一致性哈希环上的安全设备的分布可以是均匀的或不均匀的。一致性哈希环上的安全设备的分布甚至可以用与每个真实(也就是说,物理)安全设备相关联的虚拟安全设备进行扩充,以增强一致性哈希算法的结果。例如,一个增强型示例实施例使用真实安全设备的虚拟安全设备来以一致性哈希机制更均匀地向所有安全设备分布流。另一增强型示例实施例使每个真实安全设备的虚拟安全设备的数量与对应真实安全设备的容量成比例,以更佳地平衡各种安全设备之间的流或工作负载(根据各种安全设备的单独容量)。
[0097]
为了以一致性哈希机制更均匀地分布流,在根据本说明书的一些示例实施例中,可以将物理网络安全设备映射至多个虚拟网络安全设备,并且将这些虚拟安全设备中的每个虚拟安全设备分派给一致性哈希环上的位置。图13图示了映射至每个物理网络安全设备的多个虚拟安全设备(在该说明性示例中为三个)。仍然参看图13,这些虚拟安全设备分派在一致性哈希环上。在图13中,sd
i.0
、sd
i.1
以及sd
i.2
是与物理安全设备sdi相关联的这些虚拟安全设备,其中i是从0到n的整数。
[0098]
使用如刚才描述的虚拟安全设备不需要改变使用一致性哈希机制来标识分组流的主要安全设备的方式。更具体地,当使用虚拟安全设备时,用于标识沿着一致性哈希环的主要sd的m个备份sd的方法忽略或跳过与主要sd及其先前标识的(多个)备份sd重叠(也就是说,与主要sd及其先前标识的(多个)备份sd相关联)的虚拟安全设备。因此,将标识备份主要sd的m个唯一物理或真实sd。例如,参看图13,分组流p
1 1305具有对应哈希密钥k1。分组流p1的主要sd是sd1(由其第一相关联的虚拟安全设备sd
1.0
标识)1310。进一步地,分组流p1的两个唯一备份sd是sd2(由虚拟安全设备sd
2,2
标识)1320,然后是sd3(由虚拟安全设备sd
3.2
标识)1330。在该示例中,在标识p1的备份sd时忽略或跳过虚拟安全设备sd
1.1
和sd
2.0
,因为sd
1.1
和sd
2.0
分别关联于与先前标识的备份sd
1.0
和sd
2.2
的物理或真实安全设备相同的物理或真实安全设备。
[0099]
图14图示了一致性哈希环的所有权如何被划分为六个物理或真实sd(sd1至sd6)(将这些物理或真实sd中的每个物理或真实sd映射至三个虚拟节点(sd
1.i
至sd
6.i
,其中i=0、1或2)),并且还图示了sd之间的状态同步。作为示例,三个虚线圆圈标记可以由物理安全设备sd2拥有的一致性哈希环的部分,将该部分映射至三个虚拟安全设备;即,sd
2.0
、sd
2.1
以及sd
2.2
。这些虚拟安全设备中的每个虚拟安全设备(1)使其流状态同步到其两个备份唯一sd并且(2)接收从两个唯一sd同步的流状态,这些唯一sd的虚拟sd由sd2的虚拟节点备份。
更具体地,虚拟安全设备sd
2.0
(其从物理安全设备sd2映射)使其流状态同步到虚拟安全设备sd
4.2
和sd
1.1 1410a,虚拟安全设备sd
2.1
(其从物理安全设备sd2映射)使其流状态同步到虚拟安全设备sd
4.0
和sd
6.2 1410b,并且虚拟安全设备sd
2.2
(其从物理安全设备sd2映射)使其流状态同步到虚拟安全设备sd
6.0
和sd
4.1 1410c。进一步地,虚拟安全设备sd
5.1
和sd
6.1
使其流状态同步到虚拟安全设备sd
2.0
1420a,虚拟安全设备sd
3.0
和sd
5.2
使其流状态同步到虚拟安全设备sd
2.1 1420b,并且虚拟安全设备sd
5.0
和sd
1.2
使其流状态同步到虚拟安全设备sd
2.2 1420c。
[0100]
§
4.5.2共享分组流状态信息的示例方式
[0101]
在根据本说明书的一些示例实施例中,适合的安全设备之间的流状态的同步可以经由已知的网络协议来完成,诸如(例如)背向光纤、bgp同级化、ip网络、tcp(层2)、udp等。在其他示例实施例中,专有协议可以用于在适合的安全设备之间共享这种流状态信息。在根据本说明书的一些示例实施例中,流状态信息可以被提供为从“生成器”递送到感兴趣的设备(或“生成器”的“同级”)的“数据对象”。例如,bgp可以用于寻找同级安全设备的路径,并且可以将udp用作传输层以承载链路状态数据对象。在根据本说明书的一些示例实施例中,同级化安全设备之间的通信信道可以由ipsec vpn隧道防护或保护,使得外部设备无法观察到链路状态数据对象。
[0102]
在根据本说明书的一些示例实施例中,当m大于一并且备份安全设备接收由路由器从出现故障的主要设备重定向的分组时,该备份安全设备使(多个)流的(多种)状态同步到其余的m个备份安全设备,这些流已经被分配给该m个备份安全设备。在这种情况下,备份安全设备可以在假设没有安全设备出现故障的情况下使用一致性哈希环算法来标识用于(多个)分组流的主要安全设备和m个备份安全设备。然后,针对每个给定流,备份安全设备然后仅使这些流的(多种)状态同步到正常工作的其余标识的m个备份设备。例如,如图11中所图示,分组流p
l
的主要安全设备sd
l
和第一备份安全设备sd2都不可用(例如都出现故障)。因此,p1的第二备份安全设备sd3现在“具有”或“拥有”分组流p1并且从路由器接收其分组。然后,安全设备sd3使p1的流状态s1同步到p1的其余备份设备sd4至sd
m 1

[0103]
§
4.5.1将主要安全设备和备份安全设备确定为下一跳的示例方式
[0104]
在根据本说明书的一些示例实施例中,哈希函数可以与在等价多路径(ecmp)转发中使用的哈希函数相同。ecmp是网络路由策略,该网络路由策略允许跨多条等价路径传输相同会话或流的业务(也就是说,具有相同源和目的地的业务)。其为允许人们通过更充分地利用通往相同目的地的链路上的以其他方式未经使用的带宽来负载平衡业务并且增加带宽的机制。
[0105]
当转发分组时,路由技术决定使用哪条下一跳路径。在做出该决策时,设备考虑了标识流的分组报头字段。当使用ecmp时,基于路由度量计算和哈希算法来标识等价的下一跳路径。也就是说,等价路由具有相同偏好和度量值以及相同网络成本。ecmp过程标识了路由集合,该路由集合中的每个路由都是朝向目的地的合法等价下一跳。被标识的路由被称为ecmp集合。因为其仅寻址下一跳目的地,所以ecmp可以与大多数路由协议一起使用。在路由表针对等价的相同目的地包含多个下一跳地址时形成等价多路径(ecmp)集合。(等价路由具有相同偏好和度量值)。如果针对活动路由存在ecmp集合,那么可以使用哈希算法来选择ecmp集合中的下一跳地址中的一个下一跳地址以安装在转发表中。一些路由器操作系统
(诸如来自加利福尼亚州,桑尼维尔的瞻博网络的junos)可以被配置成在转发表中的ecmp集合中安装多个下一跳条目。在此类瞻博网络设备上,可以执行(例如按流)负载平衡以跨路由设备之间的多条路径传播业务。在一些瞻博网络安全设备上,检查源ip地址和目的地ip地址以及协议以确定单独业务流。相同流的分组在相同接口上进行转发;当存在对ecmp集合的添加或改变时,接口不会改变。这对于诸如源网络地址转换(nat)的特征很重要,其中转换仅在idp、应用层网关(alg)以及基于路由的虚拟专用网络(vpn)隧道的会话建立的第一路径期间执行。如果分组到达ecmp集合中的给定接口,那么安全设备确保反向业务通过相同接口进行转发。
[0106]
进一步地,在来自瞻博网络的一些安全设备上,可以安装在转发表中的ecmp集合中的下一跳地址的最大数量为16。如果在ecmp集合中存在多于16个下一跳地址,那么仅使用前16个地址。在“机架集群”部署中,“本地”接口是与分组到达的接口在相同节点上的接口,而“远程”接口是在另一机架集群节点上的接口。如果ecmp路由在机架集群中具有本地接口和远程接口,那么本地接口对于下一跳是有利的。
[0107]
如果下一跳地址不再是ecmp集合的一部分,或如果由于路由改变而将该下一跳地址从路由表中移除,那么使用下一跳的流被重新路由并且会话不受影响。如果存在减去下一跳地址的配置改变或如果管理员减去下一跳接口而不删除该下一跳接口,那么也会出现流的重新路由。如果由于接口被删除或会话被有意清除而从路由表中移除下一跳地址,那么会话被终止而不被重新路由。
[0108]
为了在来自瞻博网络的一些安全设备上配置基于ecmp流的转发,首先通过在{编辑策略选项}层级结构级别下包括一个或多个策略语句配置语句来定义负载平衡路由策略,其中按分组对动作进行负载平衡。然后将路由策略应用于从路由表导出到转发表的路由。为此,在{编辑路由选项}层级结构级别下包括转发表和导出配置语句。
[0109]
来自瞻博网络的srx系列设备和vsrx实例的ecmp可以被配置为实现每流负载平衡,以在路由设备之间的多条路径上传播业务。等价路由具有相同偏好和度量值。这些设备检查源ip地址、目的地ip地址以及协议,以确定单独业务流。将安全策略所准许的具有相同源ip地址、目的地ip地址以及协议编号的业务转发给相同下一跳。这些瞻博网络设备上的junos os在其哈希逻辑中使用流信息。
[0110]
针对来自瞻博网络的junos os srx系列设备和vsrx实例,在路由表针对等价的相同目的地包含多个下一跳地址时形成ecmp集合。ecmp允许将ecmp集合中的多个下一跳条目安装在转发表中。相同流的分组在相同接口上进行转发;当存在对ecmp集合的添加或改变时,接口不会改变。
[0111]
如果针对活动路由存在ecmp集合,那么junos os使用哈希算法来选择ecmp集合中的下一跳地址中的一个下一跳地址以安装在转发表中。
[0112]
在来自瞻博网络的某些版本的junos os中,如果针对反向业务启用了ecmp支持,那么srx系列设备使用哈希算法来确定用于流中的反向业务的接口。该过程类似于非对称路由,其中分组在一条路径中从源遍历到目的地,并且在该分组返回到源时采用不同路径。如果未启用该特征,srx系列设备针对反向业务选择ecmp集中的通往传入接口的路由,这是默认行为。
[0113]
利用来自瞻博网络的一些路由器和安全设备,{编辑安全流}层级结构中的允许反
向ecmp配置语句可以用于配置基于ecmp流的转发,以在针对反向业务渡越选择ecmp集合中的路由时使用哈希算法。也就是说,在启用该功能的情况下,并非选择通往传入接口的路由,而是设备使用哈希算法针对反向业务选择ecmp集合中的路由。如果基于ecmp流的策略是基于区域的,那么ecmp反向查找支持确保了用于反向业务的出口接口与用于到达业务的入口接口位于相同区域中。
[0114]
§
4.6(多种)示例方法的示例操作
[0115]
当安全设备恢复时,在所恢复的设备准备好接收和处理来自其邻居路由器的分组之前,该安全设备从同级安全设备同步(多种)流状态并且将(多种)流状态安装在本地存储器中。(回顾例如图4b的最右侧分支)。参看图12,根据一致性哈希环算法,所恢复的安全设备sdk将是流由所恢复的安全设备“拥有”的分组的主要安全设备。(回顾例如图4b的框494,且相对于图12中的sdk,参看sd
k 1
至sd
k m
)。另一方面,所恢复的设备sdk将按顺时针方向在一致性哈希环上备份位于其本身之前的m个同级安全设备(sd
k-m
至sd
k-1
)。(回顾图4b的框492)。
[0116]
因此,所恢复的设备sdk同步并安装(1)来自位于所恢复的设备sdk之后的m个安全设备(sd
k 1
至sd
k m
)之间的最近工作设备的所有流状态以及(2)由一致性哈希环上的位于所恢复的安全设备sdk之前的m个安全设备(sd
k-m
至sd
k-1
)中的任何安全设备拥有的流的状态,该任何安全设备分别来自这m个安全设备(sd
k-m
至sd
k-1
)之间的最近工作安全设备。在所恢复的设备完成上述流状态同步之后,设备开始接收和处理来自上游路由器和/或下游路由器的分组。
[0117]
图15图示了由上游路由器1520和下游路由器1530进行的与图4a的左侧分支对应的操作。在图15中,网络部分1500包括布置在上游路由器1520与下游路由器1530之间的十二个安全设备(sd)1510的池或组。上游路由器1520布置在安全设备1510与第一网络1525(诸如(例如)图1的公共网络125)之间。下游路由器1530布置在安全设备1510与第二网络1535(诸如(例如)图1的内部网络155)之间。sd 1510的池或组包括十二个sd(sd1至sd
12
)。因此,n=12。针对该示例,假设m=2。
[0118]
假设上游路由器1520接收从流a到b(例如从ip源地址a到ip目的地地址b)(被称为流ab)的分组。提取来自(多个)分组(多个)报头的信息并且向配置有(多个)一致性哈希算法参数1599的哈希函数(例如ecmp)1522提供该信息。假设作为哈希的结果,上游路由器1520为流ab安装转发信息,其中主要下一跳设置为sd3,第一备份下一跳为sd4,且第二备份下一跳为sd5。这三个sd被围封在虚线椭圆中。
[0119]
进一步假设上游路由器1520接收从流c到d(例如从ip源地址c到ip目的地地址d)(被称为流cd)的分组。提取来自(多个)分组(多个)报头的信息并且向配置有(多个)一致性哈希算法参数1599的哈希函数1522提供该信息。假设作为哈希的结果,上游路由器1520为流cd安装转发信息,其中主要下一跳设置为sd7,第一备份下一跳为sd8,且第二备份下一跳为sd9。这三个sd被围封在实线椭圆中。
[0120]
最后,假设上游路由器接收从流a到d(例如从ip源地址a到ip目的地地址d)(被称为流ad)的分组。提取来自(多个)分组(多个)报头的信息并且向配置有(多个)一致性哈希算法参数1599的哈希函数1522提供该信息。假设作为哈希的结果,上游路由器1520为流ad安装转发信息,其中主要下一跳设置为sd5,第一备份下一跳为sd6,且第二备份下一跳为
sd7。这三个sd被围封在点划线椭圆中。
[0121]
注意,一些sd针对不同的流具有不同责任。例如,sd5是流ab的第二备份下一跳,但是其为流ad的主要下一跳。作为另一示例,sd7是流cd的主要下一跳,但是其为流ad的第二备份下一跳。
[0122]
期望具有由sd中的适合sd追踪的双向流状态信息。为此,参看下游路由器1530,在向配置有(多个)一致性哈希算法参数1599的哈希函数1532提供信息之前,交换函数1536用于交换从(多个)分组报头中提取的信息。假设下游路由器1530接收从流b到a(例如从ip源地址b到ip目的地地址a)(被称为流ba)的分组。提取来自(多个)分组(多个)报头的信息,交换该信息并且向配置有(多个)一致性哈希算法参数1599的哈希函数(例如ecmp)1532提供该信息。由于在交换之后的来自流ba的提取的报头信息将与来自流ab的报头信息相同,因此作为哈希的结果,下游路由器1530为流ba安装转发信息,其中主要下一跳设置为sd3,第一备份下一跳为sd4,且第二备份下一跳为sd5。这三个sd被围封在虚线椭圆中。正如该示例图示的,相同sd针对上游到下游流ab和下游到上游流ba具有相同责任。这将允许对应sd保持双向流状态信息。
[0123]
接下来,假设下游路由器1530接收从流d到c(例如从ip源地址d到ip目的地地址c)(被称为流dc)的分组。提取来自(多个)分组(多个)报头的信息,交换该信息并且向配置有(多个)一致性哈希算法参数1599的哈希函数1532提供该信息。由于在交换之后的来自流dc的提取的报头信息将与来自流cd的报头信息相同,因此作为哈希的结果,下游路由器1530为流dc安装转发信息,其中主要下一跳设置为sd7,第一备份下一跳为sd8,且第二备份下一跳为sd9。这三个sd被围封在实线椭圆中。正如该示例图示的,相同sd针对上游到下游流cd和下游到上游流dc具有相同责任。这将允许对应sd保持双向流状态信息。
[0124]
最后,假设下游路由器1530接收从流d到a(例如从ip源地址d到ip目的地地址a)(被称为流da)的分组。提取来自(多个)分组(多个)报头的信息,交换该信息并且向配置有(多个)一致性哈希算法参数1599的哈希函数1532提供该信息。由于在交换之后的来自流da的提取的报头信息将与来自流ad的报头信息相同,因此作为哈希的结果,下游路由器1530为流da安装转发信息,其中主要下一跳设置为sd5,第一备份下一跳为sd6,且第二备份下一跳为sd7。这三个sd被围封在虚线椭圆中。正如该示例图示的,相同sd针对上游到下游流ad和下游到上游流da具有相同责任。这将允许对应sd保持双向流状态信息。
[0125]
§
4.7结论
[0126]
利用根据本说明书的示例实施例,一大群安全设备可以在确定将从邻居路由器接收任何给定流的分组的所有安全设备的子集时通过共享的一致性哈希算法与邻居路由器高效地协作和对准。鉴于该确定,流的状态在该子集内的安全设备之间(并且优选地仅在该子集内的安全设备之间)而不是在安全设备中的所有安全设备之间同步。因此,此类示例实施例解决了背景中所讨论的未满足的需求中的一个或多个未满足的需求。此类示例实施例可以用于提供高效、实用且可扩展的途径以支持许多安全设备与邻居路由器协作以实现网络安全服务的高弹性、可用性以及性能。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献