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

用于网络设备中的高速缓存管理的方法和系统与流程

2022-05-08 10:09:13 来源:中国专利 TAG:

用于网络设备中的高速缓存管理的方法和系统
1.相关申请的交叉引用
2.本技术要求2019年9月20日提交的美国临时申请第62/903,329号的权益,其通过引用合并于此。
技术领域
3.本发明的实施例涉及联网领域;并且更具体地,涉及网络设备中的高速缓存管理。


背景技术:

4.网络设备将业务流的分组转发到分组在网络中的相应目的地。网络设备可以使用各种数据库来执行这种转发。例如,用于分组转发的数据库可以包含转发表,该转发表包括转发表条目,与转发表条目相匹配使得基于由映射条目所指示的动作来转发分组。为了支持大量业务流,数据库需要包括数千甚至数百万个转发表条目。数据库通常被托管在存储设备中,并且网络设备遍历数据库以查找匹配的转发表条目很耗时。
5.为了便于数据库遍历,网络设备可以实现包括多个高速缓存级别的高速缓存层次结构,每个高速缓存级别存储与数据库内的流表条目(通常被存储在诸如存储器之类的存储装置中)相对应的多个流表条目。网络设备在确定如何转发业务流的分组时,首先在高速缓存中搜索匹配的流表条目。网络设备首先搜索最低级别高速缓存(最靠近处理器/处理器核的高速缓存);并且如果未找到匹配,则网络设备转到下一个更高级别高速缓存。当在高速缓存层次结构中未找到匹配时,网络设备遍历数据库。当在更高级别高速缓存(或数据库)中找到匹配的条目时,该匹配使得更低级别处的高速缓存插入对应的匹配条目,以使得当同一个业务流的分组到达时,网络设备可以在更低级别高速缓存处找到匹配的条目,而无需继续搜索到更高级别高速缓存。
6.在高速缓存层次结构中,更低级别高速缓存通常包含更少数量的转发表条目。由在更高级别高速缓存(或数据库)中找到的匹配条目所触发的高速缓存插入可能使得更低级别高速缓存驱逐高速缓存中的一个或多个现有转发表条目,以便为新插入的匹配转发表条目腾出空间。然而,被驱逐的转发表条目已更早被插入高速缓存中以有助于来自其他流的分组;当来自其他流的分组在驱逐之后到达时,网络设备将需要再次插入最近被驱逐的转发表条目,这可能使得另一个最近插入的转发表条目被驱逐。频繁的插入-驱逐-插入循环使得高速缓存性能下降,并且这降低了网络设备的分组转发能力。


技术实现要素:

7.实施例包括用于管理网络设备中的高速缓存的方法。在一个实施例中,一种方法由网络设备执行,所述方法包括:确定所述网络设备的第一高速缓存过载,其中,所述第一高速缓存在包括多个高速缓存的高速缓存层次结构之内,每个高速缓存包括一组转发表条目以用于所述网络设备转发业务流的分组,并且其中,与在所述高速缓存层次结构中较高的高速缓存相比,在所述高速缓存层次结构中较低的高速缓存在流查找中将被更早检查。
所述方法还包括:在确定所述第一高速缓存过载后,禁止所述第一高速缓存用于所述流查找,其中,所述流查找跳过所述第一高速缓存并且在所述高速缓存层次结构中较高的第二高速缓存处被执行,以及当在所述多个高速缓存中的一个或多个高速缓存中执行转发表条目插入时,禁止所述第一高速缓存用于所述转发表条目插入。
8.实施例包括管理高速缓存禁用/启用的网络设备。在一个实施例中,一种网络设备包括处理器和提供指令的非暂时性计算机可读存储介质,所述指令在由所述处理器执行时使得所述网络设备执行以下操作:确定所述网络设备的第一高速缓存过载,其中,所述第一高速缓存在包括多个高速缓存的高速缓存层次结构之内,每个高速缓存包括一组转发表条目以用于所述网络设备转发业务流的分组,并且其中,与在所述高速缓存层次结构中较高的高速缓存相比,在所述高速缓存层次结构中较低的高速缓存在流查找中将被更早检查;在确定所述第一高速缓存过载后,禁止所述第一高速缓存用于所述流查找,其中,所述流查找跳过所述第一高速缓存并且在所述高速缓存层次结构中较高的第二高速缓存处被执行,以及当在所述多个高速缓存中的一个或多个高速缓存中执行转发表条目插入时,禁止所述第一高速缓存用于所述转发表条目插入。
9.实施例包括用于高速缓存管理的非暂时性计算机可读存储介质。在一个实施例中,提供了一种提供指令的非暂时性计算机可读存储介质(618,648),所述指令在由网络设备的处理器执行时能够使得所述网络设备执行以下操作:确定所述网络设备的第一高速缓存过载,其中,所述第一高速缓存在包括多个高速缓存的高速缓存层次结构之内,每个高速缓存包括一组转发表条目以用于所述网络设备转发业务流的分组,并且其中,与在所述高速缓存层次结构中较高的高速缓存相比,在所述高速缓存层次结构中较低的高速缓存在流查找中将被更早检查;在确定所述第一高速缓存过载后,禁止所述第一高速缓存用于所述流查找,其中,所述流查找跳过所述第一高速缓存并且在所述高速缓存层次结构中较高的第二高速缓存处被执行,以及当在所述多个高速缓存中的一个或多个高速缓存中执行转发表条目插入时,禁止所述第一高速缓存用于所述转发表条目插入。
10.这些实施例减少了高速缓存抖动(cache thrashing),在高速缓存抖动中,高速缓存不断地遇到全满的情况,高速缓存中的多个条目不断地以高速率被驱逐和插入。这种减少增强了流查找性能并提高了高速缓存性能。
附图说明
11.通过参考以下说明书和用于例示本发明实施例的附图,可以最好地理解本发明。在附图中:
12.图1示出了根据一个实施例的网络设备的高速缓存层次结构;
13.图2示出了根据一个实施例的高速缓存的状态机;
14.图3是示出根据一个实施例的网络设备的高速缓存管理的操作的流程图;
15.图4是示出根据一个实施例的禁用网络设备的高速缓存的操作的流程图;
16.图5a是示出根据一个实施例的启用网络设备的高速缓存的操作的流程图;
17.图5b是示出根据另一个实施例的启用网络设备的高速缓存的操作的流程图;
18.图6a示出了根据一些实施例的在示例性网络内的网络设备(nd)之间的连接性以及nd的三个示例性实现;
vswitch(通常称为ovs)是分布式虚拟交换机的开源实现。虚拟交换机既可以用作在虚拟机(vm)系统管理程序内运行的基于软件的网络交换机,也可以用作专用交换硬件的控制栈。因此,虚拟交换机已在多个虚拟化平台、交换芯片组和网络硬件加速器中实现。
31.交换机可以在实现各种管理接口和协议中的一种或多种的网络中操作,这些管理接口和协议例如是软件定义网络(sdn)、netflow、sflow(采样流的缩写)、span(交换端口分析器)、rspan(远程交换端口分析器)、cli(命令行接口)、lacp(链路聚合控制协议)和802.1ag。
32.高速缓存层次结构
33.图1示出了根据一个实施例的网络设备的高速缓存层次结构。网络设备120可以实现一个或多个虚拟或物理交换机(也称为硬件交换机)。针对下文图6中的网络设备602、604或606讨论网络设备实现的细节。网络设备120包括一个或多个处理器122以处理和转发各种流的分组。
34.处理器122使用流数据库132来转发分组,流数据库132包括多个转发表,例如流表和组表。可以基于来自网络设备和/或网络控制器(例如sdn控制器)的指令来生成这些转发表。每个表包括一个或多个表条目。图1示出了根据一个实施例的示例性流表条目101和示例性组表条目111。
35.流表条目101包括:
36.·
匹配字段102:用于与分组相匹配。这些匹配字段匹配包括入口端口和分组标头,并且可选地包括由先前表指定的元数据。
37.·
优先级103:流表条目的匹配优先级。
38.·
计数器104:当分组匹配时更新。
39.·
指令106:用于修改动作集或分组流水线处理。
40.·
超时107:网络设备使流期满之前的最大时间量或空闲时间。
41.·
cookie 108:由网络控制器选择的不透明数据值。可以由网络控制器用于过滤流统计、流修改和流删除。
42.流表条目可以由它的匹配字段和优先级来标识;匹配字段和优先级一起标识流表中的唯一流表条目。流表条目通常允许匹配流的分组被丢弃或被转发到一个端口。也就是说,流表条目通常允许网络设备将分组放置到一个端口。
43.相比之下,组表条目可以允许网络设备将分组放置到一个端口、多个端口之一或多个端口。组表条目111包括:
44.·
组标识符112:唯一地标识组的数字编号(例如32位无符号整数)。
45.·
组类型114:用于确定组语义。
46.·
计数器116:在分组被组处理时更新。
47.·
动作桶(bucket)118:动作桶的有序列表,其中每个动作桶包括一组要执行的动作和关联的参数。
48.组表条目可以由组标识符来标识。组表条目通常允许匹配流的分组被转发到以下项:一组端口上的随机端口(用于负载平衡)、一组端口上的第一个活动端口(用于故障转移)、以及一组端口上的所有端口(用于多播)。因此,组表条目允许网络设备将分组放置到多个端口。
49.流数据库132可以存储数千甚至数百万个流表条目和组表条目,例如流表条目101和组表条目111。因此,流数据库132可以占用网络设备120的存储器130的较大存储空间。实际上,尽管图1示出了网络设备120的存储器130内的流数据库132,但是一部分或整个流数据库132可以被存储在单独的物理存储空间(例如另一个电子设备)中。注意,流表条目和组表条目被称为转发表条目(或简称条目),而要被插入高速缓存和/或从高速缓存中被驱逐的转发表条目(或简称条目)可以是流表条目或组表条目。
50.处理器122搜索匹配的转发表条目(例如匹配的流/组表条目)的操作被称为流查找,流查找遍历数千/数百万个流表条目和组表条目很耗时。因此,网络设备可以实现包括多个高速缓存级别的高速缓存层次结构。图1示出了三个级别的高速缓存的示例,即,在参考124至128处的级别1至3,但是可以实现更多或更少级别的高速缓存。
51.与更高级别的高速缓存(例如更远离处理器122的高速缓存)相比,更低级别的高速缓存(例如更靠近处理器122的高速缓存)通常具有更小的存储空间并且包含更少的转发表条目。附加地,更低级别的高速缓存中的转发表条目通常在它们的匹配标准方面更具体。例如,匹配字段可以包括更少的通配符字段。匹配字段可以是通配符字段(与任何值匹配),以及在某些情况下是位掩码字段(与位的子集匹配)以使匹配字段更通用。对于同一个流,更低级别的高速缓存中的匹配的转发表条目可以比更高级别的高速缓存中的对应的转发表条目更具体。因此,两个不同的流可以与更高级别的高速缓存(例如l2高速缓存)中的一个转发表条目相匹配,但是它们与更低级别的高速缓存(例如l1高速缓存)中的两个转发表条目相匹配。因为更低级别的高速缓存包括更少的转发表条目和/或更具体的匹配标准,所以与更高级别的高速缓存相比,更低级别的高速缓存处的流查找通常更有效(占用更少的时间/带宽/硬件资源)。
52.当在网络设备120处接收流的分组时,网络设备120首先在l1高速缓存124处执行流查找。当找到匹配的转发表条目(高速缓存命中)时,该条目被提供给处理器122以进一步处理。如果未找到匹配的转发表条目(高速缓存未命中),则网络设备120继续到下一级别的高速缓存(l2高速缓存126)执行流查找以查看是否存在高速缓存命中,如果是,则该条目被提供给处理器122。否则(高速缓存未命中),网络设备120继续到下一级别的高速缓存(l3高速缓存128)。如果在该处未找到匹配的转发表条目,则网络设备120确定流查找已穷尽高速缓存层次结构(因为在完整高速缓存层次结构中返回高速缓存未命中),然后网络设备120在存储器130中的流数据库132处执行流查找。如果在高速缓存层次结构和存储流数据库132的存储器130中未找到匹配的转发表条目,则在一些实施例中,网络设备120将与网络控制器一起工作以确定如何转发分组并且生成转发表条目以转发分组。
53.当在更高级别的高速缓存(高速缓存命中)或流数据库处找到匹配的转发表条目(或由网络设备/网络控制器生成转发表条目)时,转发表条目被插入所有高速缓存中以确保将在高速缓存中找到属于同一个流的后续分组,并且无需再次在流数据库中进行流查找。当高速缓存已满时,插入高速缓存可能导致驱逐一个或多个现有转发表条目。当高速缓存占用所有分配的空间时,高速缓存已满,并且用于插入另一个条目的请求导致驱逐一个或多个现有条目。基于不同高速缓存级别处的不同标准,高速缓存可以被认为已满。例如,更低级别的高速缓存可以是基于散列表的高速缓存,以使得对于给定散列,两个条目被存储在高速缓存的转发表中。当条目需要被插入到高速缓存中并且两个条目都已被填充时,
对于该条目而言高速缓存已满。网络设备将驱逐这些条目之一以插入新条目。
54.因为在高速缓存中插入转发表条目可能使得在高速缓存已满的情况下驱逐现有转发表条目,所以对于一些业务模式,高速缓存可能保持恒定的已满状态并且因此导致重复驱逐。当不同流的数量远大于高速缓存大小时,在更低级别的高速缓存中遇到高速缓存已满场景(导致高速缓存条目驱逐)的可能性要高得多。
55.当高速缓存不断地遇到已满场景时,高速缓存中的多个条目不断地以高速率被驱逐和插入。这通常被称为高速缓存抖动(cache thrashing)。当高速缓存发生这种情况时,高速缓存可能不针对抖动流提供预期的性能提升,而是使得流查找性能下降。
56.实施例旨在通过以下方式减少高速缓存抖动:当检测到高速缓存抖动状况时禁用高速缓存,部分地启用高速缓存并且监视高速缓存的性能,以及当性能令人满意时启用高速缓存。可以由高速缓存管理器150来协调各种级别的高速缓存的禁用和启用,这使得在高速缓存被禁用时,流查找和转发表条目插入跳过高速缓存,使得在高速缓存处于部分启用状态时,流查找跳过高速缓存但允许高速缓存处的转发表条目插入,以及使得一旦高速缓存性能满足如本文所讨论的标准,高速缓存就被启用。
57.禁用/启用高速缓存
58.图2示出了根据一个实施例的高速缓存的状态机。高速缓存可以是图1中的高速缓存l1至l3中的任何一个(或不同实施例中的任何其他级别的高速缓存)。可以由高速缓存管理器(例如,高速缓存管理器150)协调高速缓存的不同状态之间的转变。
59.在参考标号202处,高速缓存以高速缓存启用状态开始。在高速缓存启用状态,网络设备可以在高速缓存处执行流查找,并且由于在另一个级别的高速缓存或流数据库处的匹配(或由于由网络设备/网络控制器生成新的匹配转发表条目),可以在高速缓存处插入转发表条目。
60.在参考标号212处,处于高速缓存启用状态的高速缓存监视过载指示。高速缓存可以选择采样时段t并且监视高速缓存的过载指示。在一个实施例中,可以使用在采样时段t期间的测量(包括对高速缓存驱逐、条目插入、以及高速缓存命中的计数)来计算过载指示。例如,采样时段期间的过载指示可以被计算如下:
[0061][0062]
过载指示可以被与阈值进行比较,该阈值是用户可配置的,并且对于不同级别的高速缓存以及在不同的运行时段和/或网络条件期间可以不同。在一个实施例中,当过载指示在采样时段t内超过阈值时,高速缓存被认为过载。替代地,仅当过载指示在多个时段内(连续地或在大部分定义的连续采样时段内)超过阈值(或专门用于多个采样时段的另一个阈值)之后,高速缓存才被认为过载。一旦高速缓存被认为过载,便在参考标号222处指示过载状况,并且高速缓存的状态转变为高速缓存禁用状态204。当高速缓存被认为正常工作而没有过载时,对高速缓存驱逐、条目插入和高速缓存命中的计数可以被重置(即,重置为0或其他定义的值),并且在参考标号212处,高速缓存管理器继续在下一个采样时段内监视过载指示。
[0063]
在高速缓存禁用状态204,网络设备不再在高速缓存处执行流查找,并且由于转发表条目在另一个级别的高速缓存或流数据库处匹配,转发表条目不被插入到高速缓存中。
网络设备将跳过高速缓存并且在其他高速缓存和流数据库处执行流查找和条目插入。一旦高速缓存进入高速缓存禁用状态204,在参考标号214处,触发禁用计时器以确定何时尝试启用高速缓存,该计时器可以被设置为t
dry
,这是高速缓存在直到沉浸(soak)时段开始为止要等待的时段。该计时器也是可配置的,并且对于不同级别的高速缓存以及在不同的运行时段和/或网络状况期间可以不同。
[0064]
在参考标号224处,一旦禁用计时器期满,状态机便移动到高速缓存试用状态206。在高速缓存试用状态206期间,高速缓存被部分地启用,以使得当未在高速缓存处执行流查找时,由于在另一个级别的高速缓存或流数据库处的匹配,转发表条目可以被插入到高速缓存中。因此,当高速缓存处于高速缓存试用状态206时,网络设备将跳过高速缓存并且在其他高速缓存和流数据库处执行流查找,然而由于在另一个级别的高速缓存或流数据库处的转发表条目匹配,网络设备将转发表条目插入到高速缓存中。
[0065]
在高速缓存试用状态206,高速缓存管理器监视高速缓存启用指示以在参考标号216处确定是否完全启用高速缓存。高速缓存启用指示可以基于对一个或多个沉浸时段(t
soak
)内的高速缓存驱逐计数和条目插入计数的测量。沉浸时段期间的高速缓存启用指示可以被计算如下:
[0066][0067]
高速缓存启用指示可以被与另一个阈值进行比较,该阈值也是用户可配置的,并且对于不同级别的高速缓存以及在不同的运行时段和/或网络状况期间可以不同。在一个实施例中,当高速缓存启用指示在沉浸时段内低于阈值时,认为高速缓存启用指示被设置(即,高速缓存启用被指示)。替代地,仅在高速缓存启用指示在多个时段内(连续地或在大部分定义的连续时段内)低于阈值(或专门用于多个沉浸时段的另一个阈值)之后,认为高速缓存启用指示被设置。在参考标号226处,一旦指示了高速缓存启用,状态机便返回到高速缓存启用状态202。
[0068]
如果高速缓存启用指示在一个或多个沉浸时段内超过阈值,则认为在参考标号228处启用指示未被设置,并且状态机返回到高速缓存禁用状态204。在一些实施例中,高速缓存管理器添加退避时间(t
backoff
),以使得高速缓存在它返回到高速缓存试用状态206之前更长时间地停留在高速缓存禁用状态204(新禁用计时器=t
dry
t
backoff
)。退避时间可以在范围内被随机选择或者按照公式来确定。
[0069]
注意,尽管公式(1)和(2)给出了计算过载指示和高速缓存启用指示的示例,但是它们仅用于说明。实施例包括使用其他测量来确定过载指示和高速缓存启用指示的其他方式。例如,其他测量可以使用其他算术关系(例如加法、减法、乘法、以及除法),以便(1)使用高速缓存驱逐数量、条目插入数量、以及高速缓存命中数量中的两个或更多个来计算过载指示,和/或(2)使用高速缓存驱逐数量、条目插入数量、以及其他测量来计算启用指示。当使用另一个测量时,也可以更新阈值超过标准。例如,当按照反转的公式(2)来定义高速缓存启用指示以使得高速缓存驱逐数量为分母并且条目插入数量为分子时,在高速缓存启用指示超过阈值时,将认为高速缓存启用指示被设置。
[0070]
一些实施例
[0071]
图3是示出根据一个实施例的网络设备的高速缓存管理的操作的流程图。网络设
备可以是在上文讨论的网络设备120。可以由高速缓存管理器(例如,高速缓存管理器150)执行这些操作。
[0072]
在参考标号302处,确定网络设备的第一高速缓存过载。第一高速缓存在包括多个高速缓存的高速缓存层次结构之内,每个高速缓存包括一组转发表条目以用于网络设备转发业务流的分组。与在高速缓存层次结构中更高的高速缓存相比,在高速缓存层次结构中更低的高速缓存(更靠近网络设备的一个或多个处理器)在流查找中将被更早检查。基于第一测量,第一高速缓存被确定为过载,如在下文针对图4的参考标号402详细描述的那样。
[0073]
在参考标号304处,在确定第一高速缓存过载后,禁止第一高速缓存用于流查找,其中,流查找跳过第一高速缓存并且在高速缓存层次结构中较高的第二高速缓存处被执行;以及当在多个高速缓存中的一个或多个高速缓存中执行转发表条目插入时,禁止第一高速缓存用于转发表条目插入。
[0074]
可选地,在参考标号306处,在一个时段(例如t
dry
,即,高速缓存在沉浸时段开始之前要等待的时段)之后,当在多个高速缓存的一个或多个其他高速缓存中执行转发表条目插入时,第一高速缓存被允许执行转发表条目插入。然而,第一高速缓存仍然被禁止用于流查找。也就是说,高速缓存处于高速缓存试用状态206。
[0075]
在参考标号308处,在转发表条目插入被允许之后,当第一高速缓存被认为已满并且转发表条目需要被插入第一高速缓存中时,可以驱逐第一高速缓存内的一个或多个转发表条目,以使得该转发表条目将被插入第一高速缓存中。
[0076]
在参考标号310处,当对高速缓存驱逐的第一计数和转发表条目插入的第二计数的第二测量在第二时段内低于第二阈值时,启用第一高速缓存以执行流查找。在一个实施例中,对高速缓存驱逐的第一计数和转发表条目插入的第二计数的第二测量是高速缓存启用指示。第二时段在一些实施例中是一个沉浸时段(t
soak
),而在替代实施例中是多个沉浸时段,如本文讨论的那样。在参考标号310处,高速缓存可以执行流查找和转发表条目插入两者,因此高速缓存被完全启用。
[0077]
另一方面,在参考标号312处,当对高速缓存驱逐的第一计数和转发表条目插入的第二计数的第二测量在所配置的时段内超过第二阈值时,第一高速缓存被禁止用于转发表条目插入。所配置的时段在一些实施例中可以是一个沉浸时段(t
soak
),而在替代实施例中是多个沉浸时段,如本文讨论的那样。一旦转发表条目插入被禁用,该流程便转到参考标号314,其中可以调整时段(t
dry
),然后在参考标号306处,第一高速缓存被再次允许启用转发表条目插入。在一个实施例中,该时段被调整为包括如在上文讨论的退避时间。
[0078]
图4是示出根据一个实施例的禁用网络设备的高速缓存的操作的流程图。图4中的操作是参考标号302的实施例。在参考标号402处,在采样时段内,确定高速缓存是否过载。在一个实施例中,可以基于评估高速缓存驱逐的第一计数、转发表条目插入的第二计数、以及高速缓存命中的第三计数中的一个或多个来确定过载状况。在一个实施例中,使用公式(1)来计算测量,并且当对第一计数、第二计数、以及第三计数的第一测量超过第一阈值时,高速缓存被确定为过载,如在上文讨论的那样。
[0079]
当高速缓存未过载时,该流程转到参考标号404,其中测量被重置。测量重置可以包括重置用于与公式(1)相关的测量的测量计数器。仅当高速缓存在多个连续采样时段内过载时高速缓存才被认为过载的情况下,过载计数器也将被重置(例如重置为零)。当高速
缓存在大部分连续采样时段内过载时高速缓存被认为过载的情况下,过载计数器将不被重置,但是高速缓存管理器可能删除由于更早的采样时段而导致的计数(例如,多少个最近采样时段被认为过载的滑动窗口计数)。在重置之后,高速缓存经历另一个采样时段来确定高速缓存是否过载。注意,在执行下一次采样之前可以添加某个退避时间,以使得高速缓存过载监视不占用网络设备的过多资源。
[0080]
当高速缓存被确定为在采样时段内过载时,该流程转到参考标号406,其中过载计数器增大(例如增大1)。然后该流程转到参考标号408,其中确定过载计数器是否达到其阈值。如果未达到,则该流程可以转到重置404,其中用于与公式(1)相关的测量的测量计数器被重置,但是过载计数器不被重置,以使得更早的过载时段保留在计算中,直到在参考标号408处过载计数器最终达到其阈值。一旦达到阈值,该流程便转到参考标号409,其中高速缓存被认为过载并且然后被禁用。因此,在一些实施例中,当对第一计数、第二计数、以及第三计数的第一测量在多个连续间隔或大部分连续间隔内超过第一阈值时,第一高速缓存被确定为过载,因此被禁用。
[0081]
图5a是示出根据一个实施例的启用网络设备的高速缓存的操作的流程图。当高速缓存已经处于禁用状态(如处于高速缓存禁用状态204)时,操作开始。高速缓存管理器可以使得高速缓存在某个时段(例如在上文讨论的t
dry
时长)内保持处于禁用状态。
[0082]
在参考标号502处,转发表条目插入被启用,而流查找保持被禁用。然后在参考标号504处,在沉浸时段内,确定高速缓存是否正常工作并且准备好被启用。该确定可以基于评估高速缓存驱逐的第一计数和转发表条目插入的第二计数中的一个或多个。在一个实施例中,使用公式(2)来计算测量,当对第一计数和第二计数的第二测量(高速缓存启用指示)低于第二阈值时,高速缓存被确定为处于正常操作状态,如在上文讨论的那样。
[0083]
当高速缓存没有正常工作时,该流程转到参考标号506,其中测量被重置。测量重置可以包括重置用于与公式(2)相关的测量的测量计数器。仅当高速缓存在多个连续采样时段内正常工作时高速缓存才被认为正常工作的情况下,启用计数器也将被重置(例如重置为零)。当高速缓存在大部分连续采样时段内正常工作时高速缓存被认为正常工作的情况下,启用计数器将不被重置,类似于在上文讨论的过载计数器。
[0084]
在参考标号512处,针对下一次试用向计时器添加退避时间(例如新禁用计时器=t
dry
t
backoff
,如本文讨论的那样)。然后在参考吧514处,转发表条目插入被再次禁用,并且在等待计时器到达下一次试用期满之后,该流程再次返回到参考标号502。
[0085]
当高速缓存正常工作时,该流程转到参考标号508,其中启用计数器增大(例如增大1)。然后该流程转到参考标号510,其中确定启用计数器是否达到其阈值。如果未达到,则该流程转到参考标号514,然后在等待计时器到达下一次试用期满之后,该流程再次返回到参考标号502。
[0086]
当确定启用计数器达到其阈值时,该流程转到参考标号520,其中高速缓存被启用,并且它可以作为正常工作的高速缓存而执行流查找和转发表条目插入。
[0087]
图5b是示出根据另一个实施例的启用网络设备的高速缓存的操作的流程图。图5b类似于图5a,并且类似编号的参考标号框的操作类似。一个不同之处在于,尽管图5a中的操作在多个沉浸时段内进行高速缓存启用确定,但是图5b中的操作在单个沉浸时段内的多个监视时段内进行高速缓存启用确定。
[0088]
在图5b中,在参考标号552处部分地启用高速缓存之后,该流程转到参考标号553,其等待沉浸时段的开始。沉浸时段包括多个监视时段,这些监视时段可以是连续时间间隔,其间具有或没有时间间隙。当包括时间间隙时,可以基于一个或多个分布函数来均匀地或不均匀地分布时间间隙。
[0089]
在参考554标号处,现在在监视时段内确定高速缓存是否正常工作。
[0090]
如果高速缓存未能正常工作,则该流程转到参考标号556、562和564,它们包括分别与图5a的参考标号506、512和514中的操作相类似的操作。
[0091]
如果高速缓存正常工作,则该流程转到参考标号558,并且然后转到560,它们包括分别与参考标号508和510中的操作相类似的操作。当确定启用计数器尚未达到其阈值时,在监视时段之间设置了时间间隙的情况下,该流程转到参考标号563以等待沉浸时段内的下一个监视时段。否则,该流程直接转到参考标号554,其中再次执行高速缓存是否正常工作的确定。
[0092]
实施例确定系统何时持续地使高速缓存过载并且使用该信息来动态地禁用高速缓存,从而减少或消除高速缓存抖动并高分组交换性能。例如,本发明的实施例能够导致更快的流查找和针对流查找的更少资源消耗,因为能够通过减少高速缓存抖动来产生更多的高速缓存命中和更少的高速缓存驱逐。本发明的实施例创建了一种自学习系统,如果高速缓存不提供性能优势而是导致降级,则该系统自动禁用高速缓存。一旦高速缓存可以正常工作,则高速缓存被启用以提高流查找效率。因此,实施例通过对业务模式随时间的变化做出反应来提供高速缓存层次结构的最佳利用。
[0093]
本发明的实施例可以在其下操作的网络环境
[0094]
图6a示出了根据一些实施例的示例性网络内的网络设备(nd)之间的连接性以及nd的三个示例性实现。图6a示出了nd 600a-h及其在600a-600b、600b-600c、600c-600d、600d-600e、600e-600f、600f-600g和600a-600g之间以及在600h与600a、600c、600d和600g中的每一个之间的线路连接。这些nd是物理设备,并且这些nd之间的连接可以是无线的也可以是有线的(通常称为链路)。从nd 600a、600e和600f延伸的附加线路例示了这些nd充当网络的入口点和出口点(并且因此,这些nd有时称为边缘nd;而其他nd可以称为核心nd)。
[0095]
图6a中的两个示例性nd实现是:1)使用定制的专用集成电路(asic)和专用操作系统(os)的专用网络设备602;以及2)使用通用现成(cots)处理器和标准os的通用网络设备604。
[0096]
专用网络设备602包括联网硬件610,联网硬件610包括一组一个或多个处理器612、转发资源614(其通常包括一个或多个asic和/或网络处理器)和物理网络接口(ni)616(通过其进行网络连接,例如nd 600a-h之间的连接所示)、以及在其中存储网络软件620的非暂时性机器可读存储介质618。在运行期间,联网软件620可以由联网硬件610执行以实例化一组一个或多个网络软件实例622。每个联网软件实例622以及联网硬件610中执行该网络软件实例的部分(是专用于该联网软件实例的硬件和/或该联网软件实例与其他联网软件实例622在时间上共享的硬件的时间片)形成单独的虚拟网元630a-r。每个虚拟网元(vne)630a-r均包括控制通信和配置模块632a-r(有时称为本地控制模块或控制通信模块)和转发表634a-r,使得给定的虚拟网元(例如630a)包括该控制通信和配置模块(例如632a)、一组一个或多个转发表(例如634a)以及联网硬件610的执行虚拟网元(例如630a)的
部分。在一个实施例中,联网软件620包含高速缓存管理器150。高速缓存管理器150可以执行参考之前附图描述的操作。高速缓存管理器150可以生成一个或多个高速缓存管理器实例(cmi)653,每个cmi用于虚拟网元(例如虚拟交换机),并且cmi 653管理虚拟网元的高速缓存的高速缓存禁用/启用。
[0097]
专用网络设备602通常在物理和/或逻辑上被认为包括:1)nd控制平面624(有时称为控制平面),其包括执行控制通信和配置模块632a-r的处理器612;以及2)nd转发平面626(有时称为转发平面、数据平面或媒体平面),其包括利用转发表634a-r和物理ni 616的转发资源614。举例来说,在nd是路由器(或正在实现路由功能)的情况下,nd控制平面624(执行控制通信和配置模块632a-r的处理器612)通常负责参与控制如何路由数据(例如分组)(例如数据的下一跳和该数据的出站(outgoing)物理ni)并将该路由信息存储在转发表634a-r中,nd转发平面626负责在物理ni 616上接收该数据并基于转发表634a-r来将该数据转发出适当的物理ni 616。
[0098]
图6b示出了根据一些实施例的实现专用网络设备602的示例性方式。图6b示出了包括卡638(通常是可热插拔的)的专用网络设备。尽管在一些实施例中,卡638具有两种类型(一种或多种用作nd转发平面626(有时称为线卡),一种或多种用来实现nd控制平面624(有时称为控制卡)),但是替代实施例可以将功能组合到单个卡上和/或包括附加卡类型(例如一种附加类型的卡称为服务卡、资源卡或多应用卡)。服务卡可以提供专门的处理(例如第4层到第7层服务(例如防火墙、互联网协议安全性(ipsec)、安全套接字层(ssl)/传输层安全性(tls)、入侵检测系统(ids)、点对点(p2p)、ip语音(voip)会话边界控制器、移动无线网关(网关通用分组无线电服务(gprs)支持节点(ggsn)、演进分组核心(epc)网关)。通过示例,可以使用服务卡来终止ipsec隧道并执行伴随的认证和加密算法。这些卡通过一个或多个互连机制(如背板636所示)耦接在一起(例如耦接线卡的第一全网状、耦接所有卡的第二全网状)。
[0099]
返回图6a,通用网络设备604包括硬件640,硬件640包括一组一个或多个处理器642(通常是cots处理器)和物理ni 646、以及在其中存储有软件650的非暂时性机器可读存储介质648。在运行期间,处理器642执行软件650以实例化一组或多组一个或多个应用664a-r。尽管一个实施例不实现虚拟化,但是替代实施例可以使用不同形式的虚拟化。例如,在一个这样的替代实施例中,虚拟化层654表示操作系统的内核(或在基本操作系统上执行的填充程序(shim)),其允许创建称为软件容器的多个实例662a-r,每个实例可用于执行一组(或多组)应用664a-r;其中多个软件容器(也称为虚拟化引擎、虚拟专用服务器或jail)是用户空间(通常是虚拟内存空间),这些用户空间彼此分离并与运行操作系统的内核空间分离;并且其中,除非明确允许,否则在给定用户空间中运行的一组应用无法访问其他进程的内存。在另一个这样的替代实施例中,虚拟化层654表示系统管理程序(hypervisor)(有时称为虚拟机监视器(vmm))或在主机操作系统之上执行的系统管理程序,并且多组应用664a-r中的每一者在称为在管理程序之上运行的虚拟机(其在某些情况下可被视为软件容器的紧密隔离的形式)的实例662a-r内的来宾操作系统(guest operating system)之上运行,来宾操作系统和应用可能不知道它们正在虚拟机上运行而不是在“裸机”主机电子设备上运行,或者通过半虚拟化,操作系统和/或应用可能出于优化目的而意识到存在虚拟化。在其他替代实施例中,一个、一些或所有应用被实现为一个或多
个单内核,单内核可以通过用应用仅直接编译一组有限的库(例如来自包括os服务的驱动程序/库的库操作系统(libos))来生成,该组有限的库提供该应用所需的特定os服务。由于可以将单内核实现为直接在硬件640上运行、直接在系统管理程序上运行(在这种情况下,有时将单内核描述为在libos虚拟机中运行)、或者在软件容器中运行,所以实施例可以完全通过在由虚拟化层654表示的系统管理程序上直接运行的单内核、通过在实例662a-r表示的软件容器内运行的单内核来实现,或实现为单内核和上述技术的组合(例如都直接在系统管理程序上运行的单内核和虚拟机,在不同软件容器中运行的单内核和多组应用)。注意,联网软件650包括高速缓存管理器150,本文讨论了其操作。在一些实施例中,高速缓存管理器150可以在虚拟化层654和/或应用664中被实例化。
[0100]
一组或多组一个或多个应用664a-r的实例化以及虚拟化(如果实现的话)统称为软件实例652。每组应用664a-r、对应的虚拟化构造(例如实例662a-r)(如果实现的话)、以及硬件640的执行它们的那部分(假设是专用于该执行的硬件和/或时间上共享的硬件的时间片)形成单独的虚拟网元660a

r。
[0101]
虚拟网元660a-r执行与虚拟网元630a-r类似的功能,例如,类似于控制通信和配置模块632a以及转发表634a(硬件640的这种虚拟化有时被称为网络功能虚拟化(nfv))。因此,nfv可用于将许多网络设备类型整合到行业标准的大容量服务器硬件、物理交换机和物理存储设备上,大容量服务器硬件、物理交换机和物理存储设备可以位于数据中心、nd和客户驻地设备(cpe)中。尽管通过与一个vne 660a-r对应的每个实例662a-r例示了实施例,但是替代实施例可以以更精细级别的粒度实现此对应关系(例如线卡虚拟机虚拟化线卡,控制卡虚拟机虚拟化控制卡等);应当理解,本文中参考实例662a-r到vne的对应关系所描述的技术也适用于使用这种更精细级别的粒度和/或单内核的实施例。
[0102]
在特定实施例中,虚拟化层654包括提供与物理以太网交换机类似的转发服务的虚拟交换机。具体地,该虚拟交换机在实例662a-r与物理ni 646之间以及可选地在实例662a-r之间转发业务。另外,该虚拟交换机可以在按照策略不被允许彼此通信(例如通过遵守虚拟局域网(vlan))的vne 660a-r之间实施网络隔离。
[0103]
图6a中的第三示例性nd实现是混合网络设备606,其在单个nd或nd中的单个卡中包括定制asic/专用os和cots处理器/标准os两者。在这样的混合网络设备的特定实施例中,平台vm(即,实现专用网络设备602的功能的vm)可以为混合网络设备606中存在的联网硬件提供半虚拟化。
[0104]
不管nd的上述示例性实现如何,当考虑由nd实现的多个vne中的单个vne(例如vne中仅一个vne是给定虚拟网络的一部分)时,或者仅单个vne当前由nd实现,简称网元(ne)有时用于指代该vne。同样在所有上述示例性实现中,每个vne(例如vne 630a-r、vne 660a-r和混合网络设备606中的那些vne)在物理ni(例如616、646)上接收数据,然后将该数据转发出适当的物理ni(例如616、646)。例如,实现ip路由器功能的vne基于ip分组中的某些ip头信息来转发ip分组;其中ip头信息包括源ip地址、目的地ip地址、源端口、目的地端口(其中“源端口”和“目的地端口”在本文中是指协议端口,与nd的物理端口相对)、传输协议(例如用户数据报协议(udp)、传输控制协议(tcp)和差分服务代码点(dscp)值)。
[0105]
图6c示出了根据一些实施例的在其中可以耦接vne的各种示例性方式。图6c示出了在nd 600a中实现的vne 670a.1-670a.p(以及可选地vne 670a.q-670a.r)和在nd 600h
中实现的vne 670h.1。在图6c中,vne 670a.1-p彼此分离,因为它们可以接收来自nd 600a外部的分组并将分组转发到nd 600a外部;vne 670a.1与vne 670h.1耦接,并且因此它们在各自的nd之间传送分组;vne 670a.2-670a.3可以可选地在它们自身之间转发分组,而无需将分组转发到nd 600a之外;以及vne 670a.p可以可选地是包括vne 670a.q(后跟vne 670a.r)的vne链中的第一个(这有时称为动态服务链,其中,vne系列中的每个vne都提供不同的服务,例如一个或多个第4-7层网络服务)。尽管图6c示出了vne之间的各种示例性关系,但是替代实施例可以支持其他关系(例如更多/更少的vne、更多/更少的动态服务链、具有一些公共vne和一些不同vne的多个不同的动态服务链)。
[0106]
例如,图6a的nd可以形成互联网或专用网络的一部分;其他电子设备(未示出;例如最终用户设备,包括工作站、笔记本电脑、上网本、平板电脑、掌上电脑、手机、智能电话、平板手机、多媒体电话、互联网协议语音(voip)电话、终端、便携式媒体播放器、gps单元、可穿戴设备、游戏系统、机顶盒、支持互联网的家用电器)可以耦接到网络(直接或通过诸如接入网络的其他网络)以在网络(例如,互联网或覆盖(例如通过隧道化)互联网的虚拟专用网络(vpn))上彼此通信(直接或通过服务器)和/或访问内容和/或服务。这样的内容和/或服务通常由属于服务/内容提供商的一个或多个服务器(未示出)或参与点到点(p2p)服务的一个或多个最终用户设备(未示出)提供,并且可以包括例如公共网页(例如免费内容、店面、搜索服务)、私有网页(例如提供电子邮件服务的用户名/密码访问的网页)和/或vpn上的公司网络。例如,最终用户设备可以被耦接(例如通过耦接到接入网络(有线或无线地)的客户驻地设备)到边缘nd,边缘nd被耦接(例如通过一个或多个核心nd)到其他边缘nd,其他边缘nd被耦接到充当服务器的电子设备。但是,通过计算和存储虚拟化,在图6a中作为nd运行的一个或多个电子设备也可以托管一个或多个这样的服务器(例如在通用网络设备604的情况下,一个或多个软件实例662a-r可以充当服务器;混合网络设备606也是如此;在专用网络设备602的情况下,一个或多个这样的服务器也可以在由处理器612执行的虚拟化层上运行);在这种情况下,认为服务器与该nd的vne共址(co-located)。
[0107]
虚拟网络是提供网络服务(例如l2和/或l3服务)的物理网络(例如图6a中的物理网络)的逻辑抽象。虚拟网络可以被实现为覆盖网络(有时称为网络虚拟化覆盖),该覆盖网络在底层网络(例如l3网络,诸如使用隧道(例如通用路由封装(gre)、第2层隧道协议(l2tp)、ipsec)创建覆盖网络的互联网协议(ip)网络)上提供网络服务(例如第2层(l2,数据链路层)和/或第3层(l3,网络层)服务)。
[0108]
网络虚拟化边缘(nve)位于底层网络的边缘,并参与实现网络虚拟化;nve的面向网络侧使用底层网络在其他nve之间来回隧道传输帧;nve的朝外的一侧与网络外部的系统之间来回收发数据。虚拟网络实例(vni)是nve上虚拟网络的特定实例(例如nd上的ne/vne、nd上ne/vne的一部分,其中,ne/vne通过仿真被分为多个vne);可以在nve上实例化一个或多个vni(例如作为nd上的不同vne)。虚拟接入点(vap)是nve上用于将外部系统连接到虚拟网络的逻辑连接点;vap可以是通过逻辑接口标识符(例如vlan id)标识的物理或虚拟端口。
[0109]
网络服务的示例包括:1)以太网lan仿真服务(类似于互联网工程任务组(ietf)多协议标签交换(mpls)或以太网vpn(evpn)服务的基于以太网的多点服务),其中,外部系统通过lan环境在底层网络上跨网络互连(例如nve为不同的此类虚拟网络提供单独的l2 vni
(虚拟交换实例),并跨底层网络提供l3(例如ip/mpls)隧道封装);以及2)虚拟化ip转发服务(从服务定义的角度来看类似于ietf ip vpn(例如边界网关协议(bgp)/mpls ipvpn)),其中,外部系统在底层网络上通过l3环境跨网络互连(例如nve为不同的此类虚拟网络提供单独的l3 vni(转发和路由实例),并跨底层网络提供l3(例如ip/mpls)隧道封装)。网络服务还可以包括服务质量功能(例如流量分类标记、流量调节和调度)、安全功能(例如用于保护客户驻地免受网络发起的攻击以避免格式错误的路由公告的过滤器)以及管理功能(例如完整的检测和处理)。
[0110]
图6d示出了根据一些实施例在图6a的每个nd上具有单个网元的网络,并且在该直接转发方法内,将传统的分布式方法(通常由传统路由器使用)与用于维护可达性和转发信息(也称为网络控制)的集中式方法进行了对比。具体地,图6d示出了具有与图6a的nd 600a-h相同的连接性的网元(ne)670a-h。
[0111]
图6d示出了分布式方法672跨ne 670a-h分布用于生成可达性和转发信息的责任;换句话说,邻居发现和拓扑发现的过程是分布式的。
[0112]
例如,如果使用专用网络设备602,nd控制平面624的控制通信和配置模块632a-r通常包括可达性和转发信息模块以实现与其他ne通信以交换路由的一个或多个路由协议(例如外部网关协议(诸如边界网关协议(bgp))、内部网关协议(igp)(例如开放式最短路径优先(ospf)、中间系统到中间系统(is-is)、路由信息协议(rip)、标签分发协议(ldp)、资源保留协议(rsvp)(包括rsvp流量工程(te):用于lsp隧道的rsvp扩展和通用多协议标签交换(gmpls)信令rsvp-te)),然后基于一个或多个路由度量选择这些路由。因此,ne 670a-h(例如执行控制通信和配置模块632a-r的处理器612)通过分布式地确定网络内的可达性并计算其各自的转发信息来完成它们参与控制如何路由数据(例如分组)(例如数据的下一跳和该数据的传出物理ni)的责任。路由和邻接被存储在nd控制平面624上的一个或多个路由结构(例如路由信息库(rib)、标签信息库(lib)、一个或多个邻接结构)中。nd控制平面624基于路由结构来使用信息(例如邻接和路由信息)对nd转发平面626进行编程。例如,nd控制平面624将邻接和路由信息编程到nd转发平面626上的一个或多个转发表634a-r(例如转发信息库(fib)、标签转发信息库(lfib)和一个或多个邻接结构)中。对于第2层转发,nd可以存储一个或多个桥接表,桥接表用于基于数据中的第2层信息来转发该数据。尽管上面的示例使用了专用网络设备602,但是可以在通用网络设备604和混合网络设备606上实现相同的分布式方法672。
[0113]
图6d示出了一种使系统解偶的集中式方法674(也称为软件定义网络(sdn)),该系统对从将流量转发到所选目的地的底层系统发送流量的位置进行决策。所示的集中式方法674负责在集中式控制平面676(有时称为sdn控制模块、控制器、网络控制器、openflow控制器、sdn控制器、控制平面节点、网络虚拟化机构或管理控制实体)中生成可达性和转发信息,并且因此邻居发现和拓扑发现的过程是集中式的。集中式控制平面676具有与包括ne 670a-h(有时称为交换机、转发单元、数据平面单元或节点)的数据平面680(有时称为基础设施层、网络转发平面或转发平面(其不应与nd转发平面混淆))的南向接口682。集中式控制平面676包括网络控制器678,网络控制器678包括集中式可达性和转发信息模块679,集中式可达性和转发信息模块679确定网络内的可达性并将转发信息在南向接口682(其可以使用openflow协议)上分发给数据平面680的ne 670a-h。因此,网络智能被集中在通常与nd
分离的电子设备上执行的集中式控制平面676中。在一个实施例中,集中式可达性和转发信息模块679包括加密协调器675,其可以协调保护在中间网络设备与端点(客户端或服务器)网络设备之间的通信所必需的密钥材料(例如密钥和密码算法)的获得,如上文所述。
[0114]
例如,在数据平面680中使用专用网络设备602的情况下,nd控制平面624的每个控制通信和配置模块632a-r通常包括提供南向接口682的vne侧的控制代理。在这种情况下,nd控制平面624(执行控制通信和配置模块632a-r的处理器612)通过与集中式控制平面676通信以从集中式可达性和转发信息模块679接收转发信息(以及在某些情况下,可达性信息)的控制代理来执行其参与控制如何路由数据(例如分组)(例如数据的下一跳和该数据的出站物理ni)的责任(应当理解,在一些实施例中,除了与集中式控制平面676通信之外,控制通信和配置模块632a-r还可以在确定可达性和/或计算转发信息方面起某些作用,尽管比分布式方法的情况下的作用要少;这样的实施例通常被认为属于集中式方法674,但是也可以被认为是混合方法)。
[0115]
尽管以上示例使用专用网络设备602,但是可以用通用网络设备604和混合网络设备606实现相同的集中式方法674(例如,每个vne 660a-r通过与集中式控制平面676进行通信以从集中式可达性和转发信息模块679接收转发信息(以及在某些情况下可达性信息)来完成其控制如何路由数据(例如分组)(例如数据的下一跳和该数据的出站物理ni)的责任);应当理解,在一些实施例中,除了与集中式控制平面676通信外,vne 660a-r还可以在确定可达性和/或计算转发信息中起一定作用,尽管比分布式方法的情况下的作用要少)。实际上,sdn技术的使用能够增强通常在通用网络设备604或混合网络设备606实现中使用的nfv技术,因为nfv能够通过提供可在其上运行sdn软件的基础设施来支持sdn,并且nfv和sdn都旨在利用商品服务器硬件和物理交换机。
[0116]
图6d还示出了集中式控制平面676具有到其中驻留有应用688的应用层686的北向接口684。集中式控制平面676具有形成用于应用688的虚拟网络692(有时被称为逻辑转发平面、网络服务或覆盖网络(具有作为底层网络的数据平面680的ne 670a-h)的能力。因此,集中式控制平面676维护所有nd和所配置的ne/vne的全局视图,并有效地将虚拟网络映射到底层nd(包括在物理网络通过硬件(nd、链路或nd组件)故障、添加或删除而变化时维护这些映射)。
[0117]
尽管图6d示出了与集中式方法674分离的分布式方法672,但是在某些实施例中,网络控制的工作可以不同地分布,或将两者结合。例如:1)实施例通常可以使用集中式方法(sdn)674,但是具有委托给ne的特定功能(例如分布式方法可以用于实现故障监视、性能监视、保护切换和用于邻居和/或拓扑发现的原语(primitives)中的一者或多者);或2)实施例可以经由集中式控制平面和分布式协议二者执行邻居发现和拓扑发现,并且比较结果以在它们不一致时引发异常。这样的实施例通常被认为属于集中式方法674,但是也可以被认为是混合方法。
[0118]
尽管图6d示出了每个nd 600a-h实现单个ne 670a-h的简单情况,但是应当理解,参考图6d所描述的网络控制方法也适用于其中一个或多个nd 600a-h实现多个vne(例如vne 630a-r、vne 660a-r、混合网络设备606中的那些vne)的网络。替代地或附加地,网络控制器678也可以在单个nd中仿真多个vne的实现。具体地,代替(或除了)在单个nd中实现多个vne之外,网络控制器678还可以将单个nd中的vne/ne的实现呈现为虚拟网络692中的多
个vne(全部在同一虚拟网络692中、每个都在不同的虚拟网络692中、或某种组合)。例如,网络控制器678可以使nd在底层网络中实现单个vne(ne),然后在集中式控制平面676内在逻辑上划分该ne的资源以在虚拟网络692中呈现不同的vne(其中覆盖网络中的这些不同的vne正在共享底层网络中的nd上的单vne/ne实现的资源)。
[0119]
另一方面,图6e和6f分别示出了网络控制器678可以作为不同虚拟网络692的一部分而呈现的ne和vne的示例性抽象。图6e示出了根据一些实施例的其中每个nd 600a-h实现单个ne 670a-h(参见图6d)但是集中式控制平面676已将不同nd中的多个ne(ne 670a-c和g-h)抽象成(表示为)图6d的虚拟网络692之一中的单个ne 670i的简单情况。图6e示出了在该虚拟网络中,ne 670i耦接至ne 670d和670f,ne 670d和670f两者仍然耦接至ne 670e。
[0120]
图6f示出了根据一些实施例的其中多个vne(vne 670a.1和vne 670h.1)在不同的nd(nd 600a和nd 600h)上实现并且彼此耦接并且其中集中式控制平面676已经抽象这多个vne以使得它们在图6d的虚拟网络692之一中表现为单个vne 670t的情况。因此,ne或vne的抽象可以跨越多个nd。
[0121]
尽管一些实施例将集中式控制平面676实现为单个实体(例如在单个电子设备上运行的软件的单个实例),但是替代实施例可以将功能分散在多个实体上以实现冗余和/或可伸缩性目的(例如在不同电子设备上运行的软件的多个实例)。
[0122]
类似于网络设备实现,运行集中式控制平面676的电子设备以及因此包括集中式可达性和转发信息模块679的网络控制器678可以通过多种方式(例如专用设备、通用(例如cots)设备或混合设备)实现。这些电子设备将类似地包括处理器、一组一个或多个物理ni以及在其上存储了集中式控制平面软件的非暂时性机器可读存储介质。
[0123]
诸如openflow之类的标准定义了用于消息的协议以及用于处理分组的模型。用于处理分组的模型包括报头解析、分组分类和做出转发决策。报头解析描述了如何基于一组众所周知的协议来解释分组。一些协议字段用于构建将在分组分类中使用的匹配结构(或键)(例如第一键字段可以是源媒体访问控制(mac)地址,第二键字段可以是目的地mac地址)。
[0124]
分组分类涉及通过基于转发表条目的匹配结构或键来确定转发表中的哪个条目(也称为转发表条目或流条目)与分组最匹配,从而在存储器中执行查找以对分组进行分类。转发表条目中表示的许多流可能与一个分组相对应/匹配;在这种情况下,系统通常被配置为根据定义的方案(例如选择匹配的第一转发表条目)从多个转发表条目中确定一个转发表条目。转发表条目包括一组特定匹配标准(一组值或通配符、或应该将分组的哪些部分与特定值/多个值/通配符进行比较的指示,如由匹配功能所定义的,针对分组报头中的特定字段,或用于某些其他分组内容)以及供数据平面在接收到匹配的分组时采取的一组一个或多个动作。例如,对于使用特定端口的分组,动作可以是将报头推送到该分组上、对该分组进行洪泛或简单地丢弃该分组。因此,用于具有特定传输控制协议(tcp)目的地端口的ipv4/ipv6分组的转发表条目可以包含指定应丢弃这些分组的动作。
[0125]
基于分组分类期间标识的转发表条目,通过执行在分组上的匹配的转发表条目中标识的一组动作,来做出转发决策并执行动作。
[0126]
然而,当未知分组(例如在openflow用语中使用的“未命中分组”或“匹配未命中”)到达数据平面680时,该分组(或分组报头和内容的子集)通常被转发到集中式控制平面
676。集中式控制平面676然后将转发表条目编程到数据平面680中,以容纳属于未知分组的流的分组。一旦特定的转发表条目已经由集中式控制平面676编程到数据平面680中,则具有匹配证书的下一个分组将匹配该转发表条目并采取与该匹配条目相关联的一组动作。
[0127]
网络接口(ni)可以是物理的或虚拟的;在ip的上下文中,接口地址是分配给ni(无论是物理ni还是虚拟ni)的ip地址。虚拟ni可以与物理ni相关联,与另一个虚拟接口相关联,或者可以独立存在(例如环回接口、点对点协议接口)。ni(物理或虚拟)可以被编号(带有ip地址的ni)或不编号(没有ip地址的ni)。环回接口(及其环回地址)是经常用于管理目的的ne/vne(物理或虚拟)的特定类型的虚拟ni(和ip地址);其中这样的ip地址称为节点环回地址。分配给nd的ni的ip地址称为该nd的ip地址;在更细粒度的级别上,分配给ni(其被分配给在nd上实现的ne/vne)的ip地址可以称为该ne/vne的ip地址。
[0128]
路由系统针对给定目的地的下一跳选择可以解析到一个路径(即,路由协议可以生成在最短路径上的下一跳);但是,如果路由系统确定存在多个可行的下一跳(即,路由协议生成的转发解决方案提供在最短路径上的多个下一跳,即,多个等价下一跳),则使用一些附加标准,例如在无连接网络中,可以使用等价多路径(ecmp)(也称为等价多路径控制、多路径转发和ip多路径)(例如,典型的实现使用特定报头字段作为标准,以确保特定分组流的分组始终在同一个下一跳上被转发以保持分组流排序)。出于多路径转发的目的,分组流被定义为共享排序约束的一组分组。作为一个示例,特定tcp传输序列中的一组分组需要按顺序到达,否则tcp逻辑将无序传送解释为拥塞并且减慢tcp传输速率。
[0129]
第3层(l3)链路聚合(lag)链路是直接连接具有多个ip寻址链路路径(每个链路路径被分配不同的ip地址)的两个nd的链路,并且在nd转发平面处执行跨越这些不同链路路径的负载分配决策;在这种情况下,将在链路路径之间做出负载分配决策。
[0130]
一些nd包括用于认证、授权和计费(aaa)协议(例如radius(远程认证拨入用户服务)、diameter和/或tacacs (终端访问控制器访问控制系统加强版))的功能。可以通过客户端/服务器模型来提供aaa,其中aaa客户端在nd上实现,而aaa服务器可以在nd本地实现或者在与nd耦接的远程电子设备上实现。认证是识别和验证订户的过程。例如,可能通过用户名和密码的组合或者通过唯一密钥来识别订户。授权确定订户在被认证之后可以做什么,例如获得对某些电子设备信息资源的访问(例如通过使用访问控制策略)。计费是记录用户活动。借助摘要示例(summary example),最终用户设备可以通过边缘nd(支持aaa处理)耦接(例如通过接入网络),边缘nd耦接到核心nd,核心nd耦接到实现服务/内容提供商的服务器的电子设备。执行aaa处理以针对订户标识存储在该订户的aaa服务器中的订户记录。订户记录包括在处理该订户的业务期间使用的一组属性(例如,订户名称、密码、认证信息、访问控制信息、速率限制信息、监管信息)。
[0131]
特定nd(例如特定边缘nd)在内部表示使用订户电路的最终用户设备(或有时表示客户驻地设备(cpe),如住宅网关(例如路由器、调制解调器))。订户电路在nd内唯一地标识订户会话,并且通常在会话的生命期内存在。因此,nd通常在订户连接到该nd时分配订户电路,以及在该订户断开连接时相应地解除分配该订户电路。每个订户会话表示使用协议在nd与最终用户设备(或有时为cpe,例如住宅网关或调制解调器)之间传送的可区分的分组流,该协议例如是基于另一个协议的点对点协议(pppox)(例如,其中x是以太网或异步传输模式(atm))、以太网、802.1q虚拟lan(vlan)、互联网协议或atm。可以使用各种机制(例如,
手动提供动态主机配置协议(dhcp)、dhcp/无客户端互联网协议服务(clips)或媒体访问控制(mac)地址跟踪)来发起订户会话。例如,点对点协议(ppp)通常用于数字订户线路(dsl)服务,并且需要安装使订户能够输入用户名和密码的ppp客户端,用户名和密码转而可以被用于选择订户记录。当使用dhcp时(例如用于电缆调制解调器服务),通常不提供用户名;但是在这种情况下,提供其他信息(例如包括最终用户设备(或cpe)中的硬件的mac地址的信息)。在nd上使用dhcp和clips捕获了mac地址,并且使用这些地址来区分订户并访问他们的订户记录。
[0132]
与虚拟连接和虚拟信道同义的虚拟电路(vc)是借助于分组模式通信来传送的面向连接的通信服务。虚拟电路通信类似于电路交换,因为两者都是面向连接的,这意味着在这两种情况下,以正确的顺序来传送数据,并且在连接建立阶段需要信令开销。虚拟电路可以存在于不同的层。例如,在第4层,面向连接的传输层数据链路协议(例如传输控制协议(tcp))可以依赖于无连接分组交换网络层协议(例如ip),其中不同的分组可以在不同的路径上被路由,并且因此被无序传送。在底层不可靠和无连接ip协议之上使用tcp来建立可靠虚拟电路的情况下,通过源和目的地网络套接字地址对(即,发送方和接收方ip地址和端口号)来标识虚拟电路。但是,虚拟电路是可能的,因为tcp在接收方侧包括段编号和重新排序以防止无序传送。虚拟电路也可能在第3层(网络层)和第2层(数据链路层);这样的虚拟电路协议基于面向连接的分组交换,这意味着数据始终沿着相同的网络路径(即,通过相同的ne/vne)被传送。在这样的协议中,分组不被单独地路由,并且在每个数据分组的报头中不提供完整的寻址信息;在每个分组中仅需要小的虚拟信道标识符(vci);以及在连接建立阶段将路由信息传输到ne/vne;交换仅涉及在表中查找虚拟信道标识符,而不是分析完整的地址。网络层和数据链路层虚拟电路协议的示例(其中,数据始终在同一个路径上被传送)如下:x.25,其中通过虚拟信道标识符(vci)来标识vc;帧中继,其中通过vci来标识vc;异步传输模式(atm),其中通过虚拟路径标识符(vpi)和虚拟信道标识符(vci)对来标识电路;通用分组无线电服务(gprs);以及多协议标签交换(mpls),其可以用于虚拟电路上的ip(通过标签来标识每个电路)。
[0133]
某些nd(例如某些边缘nd)使用电路层次结构。电路层次结构的叶节点是订户电路。订户电路在层次结构中具有父电路,父电路通常表示多个订户电路的聚合,并且因此表示用于向nd提供这些最终用户设备的接入网络连接的网段和网元。这些父电路可以表示订户电路的物理或逻辑聚合(例如,虚拟局域网(vlan)、永久虚拟电路(pvc)(例如用于异步传输模式(atm))、电路组、信道、伪线、nd的物理ni、以及链路聚合组)。电路组是虚拟构造,其允许将各种电路组分组在一起以实现配置目的;例如,聚合速率控制。伪线是第2层点对点面向连接的服务的仿真。链路聚合组是虚拟构造,其合并多个物理ni以实现带宽聚合和冗余。因此,父电路在物理上或逻辑上封装了订户电路。
[0134]
每个vne(例如虚拟路由器、虚拟网桥(其可以充当虚拟专用lan服务(vpls)中的虚拟交换机实例)通常可独立管理。例如,在多个虚拟路由器的情况下,每个虚拟路由器可以共享系统资源,但在它的管理域、aaa(认证、授权和计费)名称空间、ip地址和路由数据库方面与其他虚拟路由器是分隔开的。可以在边缘nd中采用多个vne以针对服务和/或内容提供商的订户提供直接网络访问和/或不同类别的服务。
[0135]
在某些nd内,独立于物理ni的“接口”可以被配置为vne的一部分,以提供更高层协
议和服务信息(例如第3层寻址)。除了其他订户配置要求之外,aaa服务器中的订户记录还标识对应订户应当在nd内绑定到哪个上下文(例如,哪个vne/ne)。如本文所使用的,绑定形成物理实体(例如,物理ni、信道)或逻辑实体(例如,电路,如订户电路或逻辑电路(一组一个或多个订户电路))与上下文接口之间的关联,通过该接口针对该上下文配置网络协议(例如,路由协议、桥接协议)。当一些高层协议接口被配置并与物理实体相关联时,订户数据在该物理实体上流动。
[0136]
注意,电子设备使用诸如机器可读存储介质(例如磁盘、光盘、固态驱动器、只读存储器(rom)、闪存设备、相变存储器)和机器可读传输介质(也称为载波)(例如电、光、无线电、声音或其他形式的传播信号,例如载波、红外信号)之类的机器可读介质(也称为计算机可读介质)来存储和传输(在内部和/或通过网络与其他电子设备传输)代码(其包括软件指令并且有时被称为计算机程序代码或计算机程序)和/或数据。因此,电子设备(例如计算机)包括硬件和软件,例如一组一个或多个处理器(例如,其中,处理器是微处理器、控制器、微控制器、中央处理单元、数字信号处理器、专用集成电路(asci)、现场可编程门阵列(fpga)、其他电子电路、一个或多个以上项的组合),处理器耦接到一个或多个机器可读存储介质以存储用于在该组处理器上执行的代码和/或存储数据。例如,电子设备可以包括包含代码的非易失性存储器,因为即使当电子设备被关闭(当电力被移除)时,该非易失性存储器也可以保持代码/数据。当电子设备被开启时,该电子设备的处理器要执行的那部分代码通常从较慢的非易失性存储器被复制到该电子设备的易失性存储器(例如,动态随机存取存储器(dram)、静态随机存取存储器(sram))中。典型的电子设备还包括一组一个或多个物理网络接口(ni)以建立与其他电子设备的网络连接(以使用传播信号来发送和/或接收代码和/或数据)。例如,该组物理ni(或该组物理ni与执行代码的该组处理器相结合)可以执行任何格式化、编码或转换,以允许电子设备在有线和/或无线连接上发送和接收数据。在一些实施例中,物理ni可以包括能够(1)在无线连接上从其他电子设备接收数据和/或(2)通过无线连接向其他设备发送数据的无线电电路。该无线电电路可以包括适合于射频通信的发射机、接收机和/或收发机。该无线电电路可以将数字数据转换成具有适当参数(例如频率、定时、信道、带宽等)的无线电信号。然后可以通过天线向适当的接收者发送无线电信号。在一些实施例中,该组物理ni可以包括网络接口控制器(nic)(也称为网络接口卡、网络适配器或局域网(lan)适配器)。nic可以有助于将电子设备连接到其他电子设备,从而允许它们通过将电缆插入被连接到nic的物理端口来使用电线进行通信。可以使用软件、固件和/或硬件的不同组合来实现实施例的一个或多个部分。
[0137]
网络节点/设备是电子设备。一些网络设备是“多服务网络设备”,其提供对多种联网功能(例如路由、桥接、交换、第2层聚合、会话边界控制、服务质量和/或订户管理)的支持,和/或提供对多种应用服务(例如数据、语音和视频)的支持。网络节点的示例还包括nodeb、基站(bs)、多标准无线电(msr)无线电节点(例如msr bs、enodeb、gnodeb、menb、senb)、集成接入回程(iab)节点、网络控制器、无线电网络控制器(rnc)、基站控制器(bsc)、中继器、施主节点控制中继器、基站收发台(bts)、中央单元(例如在gnb中)、分布式单元(例如在gnb中)、基带单元、集中式基带、c-ran、接入点(ap)、传输点、传输节点、rru、rrh、分布式天线系统(das)中的节点、核心网络节点(例如msc、mme等)、o&m、oss、son、定位节点(例如e-smlc)等。
[0138]
无线网络(也称为蜂窝网络)是使用无线电波(30khz-300 ghz频率内的电磁波)进行通信的设备网络。无线通信可以遵循无线通信标准,例如新无线电(nr)、lte(长期演进)、高级lte(lte-a)、宽带码分多址(wcdma)、高速分组接入(hspa)、wifi(无线保真)、以及蓝牙。此外,可以根据任何合适世代的通信协议来执行设备(例如无线通信网络中的网络设备和移动设备)之间的通信,这些通信协议包括但不限于第一代(1g)、第二代(2g)、2.5g、2.75g、第三代(3g)、第四代(4g)、4.5g、第五代(5g)通信协议和/或当前已知或未来将开发的任何其他协议。
[0139]
通信网络包括一个或多个无线和/或有线网络,并且它包括诸如以下项的网络:广域网(wan)、城域网(man)、局域网(lan)、互联网区域网络(ian)、校园区域网络(can)、以及虚拟专用网络(vpn)。通信网络可以实现如本文讨论的各种管理接口和协议。
[0140]
替代实施例
[0141]
尽管已根据多个实施例描述了本发明,但是本领域技术人员将认识到本发明不限于所描述的实施例,并且可以在所附权利要求的精神和范围内通过修改和变更来实践。因此,该描述被认为是说明性的而不是限制性的。
[0142]
实施例
[0143]
本发明的实施例包括:
[0144]
1.一种由网络设备执行的方法,该方法包括:
[0145]
确定(302)网络设备的第一高速缓存过载,其中,第一高速缓存在包括多个高速缓存的高速缓存层次结构之内,每个高速缓存包括一组转发表条目以用于网络设备转发业务流的分组,并且其中,与在高速缓存层次结构中较高的高速缓存相比,在高速缓存层次结构中较低的高速缓存在流查找中将被更早检查;以及
[0146]
在确定(304)第一高速缓存过载后,
[0147]
禁止第一高速缓存用于流查找,其中,流查找跳过第一高速缓存并且在高速缓存层次结构中较高的第二高速缓存处被执行,以及
[0148]
当在多个高速缓存中的一个或多个高速缓存中执行转发表条目插入时,禁止第一高速缓存用于转发表条目插入。
[0149]
2.根据实施例1所述的方法,其中,基于评估高速缓存驱逐的第一计数、转发表条目插入的第二计数、以及高速缓存命中的第三计数中的一个或多个,第一高速缓存被确定为过载。
[0150]
3.根据实施例2所述的方法,其中,当对第一计数、第二计数、以及第三计数的第一测量超过第一阈值时,第一高速缓存被确定为过载。
[0151]
4.根据实施例2所述的方法,其中,当对第一计数、第二计数、以及第三计数的第一测量在多个连续间隔内超过第一阈值时,第一高速缓存被确定为过载。
[0152]
5.根据实施例1所述的方法,还包括:
[0153]
在第一时段之后,当在多个高速缓存中的一个或多个其他高速缓存中执行转发表条目插入时,允许(306)第一高速缓存执行转发表条目插入;以及
[0154]
当第一高速缓存被认为已满并且转发表条目将被插入第一高速缓存时,驱逐(308)第一高速缓存内的一个或多个转发表条目。
[0155]
6.根据实施例5所述的方法,还包括:
[0156]
当对高速缓存驱逐的第一计数和转发表条目插入的第二计数的第二测量在第二时段内低于第二阈值时,启用(310)第一高速缓存以执行流查找。
[0157]
7.根据实施例5所述的方法,还包括:
[0158]
当对高速缓存驱逐的第一计数和转发表条目插入的第二计数的第二测量在多个连续间隔内低于第二阈值时,启用(310)第一高速缓存以执行流查找。
[0159]
8.根据实施例5所述的方法,还包括:
[0160]
当对高速缓存驱逐的第一计数和转发表条目插入的第二计数的第二测量在所配置的时段内超过第二阈值时,禁止(312)第一高速缓存用于转发表条目插入;以及
[0161]
当在多个高速缓存中的一个或多个高速缓存中执行转发表条目插入时,在允许第一高速缓存执行转发表条目插入之前等待(314)第三时段。
[0162]
9.一种网络设备(602,604),包括:
[0163]
处理器(612,642)和提供指令的非暂时性计算机可读存储介质(618,648),这些指令当由处理器执行时使得网络设备执行方法1至8。
[0164]
10.一种提供指令的非暂时性计算机可读存储介质(618,648),这些指令当被执行时使得网络设备执行方法1至8。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献