用于网络设备流查找管理的技术的制作方法_3

文档序号:9931190阅读:来源:国知局
[0040] 现在参考图3,该图示出了包括多级散列表的网络设备122的布置300的说明性实 施例。新兴技术允许数据中心和载波网络在规模和容量上持续地增加,从而创建了越来越 大的网络基础设施并且因此带来了更多的网络流选项。另外,虚拟机(VM)的出现进一步增 加了网络基础设施120中可用的网络流的数量。在一些实施例中,当前的单级散列表可能变 得很大,使得整个散列表不能够装入网络设备122的管芯上高速缓存204。说明性的多级散 列表包括第一级散列表302和第二级散列表304。在一些实施例中,多级散列表还包括"第N" 级散列表306,其中"N"是正整数,并指定了除第二级散列表304以外的一个或多个其它层级 的散列表。说明性的第一级散列表302驻留在处理器202的管芯上高速缓存204中,而说明性 的第二级散列表304和"第N"级散列表306驻留在存储器208中。第一级散列表302和第二级 散列表304至"第N"级散列表306中的每个散列表包括散列条目,这些散列条目被基于网络 流的优先级和/或网络流的访问频率来映射到存储器208中所存储的网络流。另外,如下面 将进一步详细描述的,随着网络流的优先级和/或网络流的访问频率随时间改变,I/O子系 统206可以在管芯上高速缓存204和存储器208之间移动某些散列条目。
[0041] 可以基于从网络控制器112向网络设备122提供的网络流的优先级,将第一级散列 表302的散列条目锁定到管芯上高速缓存204中。例如,与不预期进行实时处理的网络分组 相比,可以给予用于实时网络分组的网络流更高的优先级。在另一个例子中,可以向与另一 个网络流相比将被更频繁地访问的网络流给予更高的优先级。另外地或替代地,可以基于 第一级散列表302的散列条目被访问的频率,将这些散列条目锁定到管芯上高速缓存204 中。例如,网络控制器112可以通知网络设备122:由被访问超过预定次数(即,访问频率门 限)的散列条目来取代某些优先级。在一些实施例中,可以存储对应于每个散列条目的访问 计数器以跟踪访问频率。每次散列条目被访问时,可以对与被访问的散列条目相对应的访 问计数器进行递增。在一些实施例中,访问计数器可以另外包括用于指示最近一次对访问 计数器进行递增的时间戳。在一些实施例中,网络控制器112可以另外通知网络设备122对 在预定的时间段内没有被访问的访问计数器进行重置,以避免访问频率变得陈旧以及导致 高速缓存污染。
[0042]驻留在有限大小(通常较小的大小)的管芯上高速缓存204上的第一级散列表302 通常小于其它层级的散列表。在使用中,如下面将进一步详细描述的,当网络设备122接收 到网络分组时,对报头的一部分进行解码以提取关键字段。然后对所提取的关键字段执行 散列函数,并且对管芯上高速缓存204中的第一级散列表302执行查找。如果查找成功,则发 生"命中(hit)"(即,该查找在管芯上高速缓存204的第一级散列表302中发现散列),并且通 常对与网络流表308中所存储的流相关联的数据进行更新。如果查找不成功,则发生"未命 中(miss)"(即,该查找在管芯上高速缓存204的第一级散列表302中没有发现散列)。"命中" 比"未命中"更快(即,更少的计算周期),这是由于网络设备122必须在每个剩余的层级处执 行查找,直到发生"命中"为止。
[0043]在说明性的布置300中,第二级散列表304完全地驻留在存储器208中,并且因此, 与如果查找已在管芯上高速缓存204的第一级散列表302中发现散列相比,存储器208中的 查找操作可能导致至少要长一个数量级的I/O延时。应当意识到,在一些实施例中,本文预 期了其它的布置。例如,图4示出了包括多级散列表的网络设备122的布置400的说明性实施 例,其中第二级散列表304的至少一部分驻留在处理器202的管芯上高速缓存204中。在一些 实施例中,某些流优先级可以另外包括与多级散列表的层级的排他性有关的信息。例如,网 络控制器112可以提供信息以指示网络设备122仅将与高优先级流相对应的散列条目包括 到第一级散列表302中,并且不包括到第二级散列表304中。在另一个例子中,网络控制器 112可以提供信息以指示网络设备122仅将与高优先级流相对应的散列条目包括在第一级 散列表302中,并且仅将被频繁访问的散列条目包括在第二级散列表304的、驻留在管芯上 高速缓存204中的部分中。在另一个例子中,网络控制器112可以提供信息以指示网络设备 122将与高优先级流相对应的散列条目和被频繁访问的散列条目包括在第一级散列表302 和第二级散列表304中。
[0044]再次参考图3,说明性的布置300包括网络流表308。如之前所提到的,网络流信息 通常包括被写入到网络流表308的流标识符和流元组。网络流表可以另外地或替代地包括 与特定的网络流相对应的任何其它类型的信息或者信息的组合。网络流表308通常存储在 网络设备122的存储器208(即,主存储器)中。应当意识到,在一些实施例中,第一级散列表 302在规模上可以大于第二级散列表304的部分,而在其它实施例中,第二级散列表304的部 分在规模上可以大于第一级散列表302。
[0045]现在参考图5,在使用中,网络设备122中的每个网络设备在操作期间建立环境 500。说明性的环境500包括网络流散列查找模块502、网络流散列表管理模块510和网络分 组处理模块520。网络流散列查找模块502包括流访问数据504,其中流访问数据504可以包 括表示与散列表中的散列条目相对应的访问计数的数据。例如,每次在散列表中访问散列, 不管层级,都可以对与该计数器相对应的计数器进行递增,以提供网络设备122针对该散列 的访问频率的历史参考。在一些实施例中,流访问数据中可以包括另外的信息,例如访问时 间和/或最近"命中"的散列表层级。网络流散列表管理模块510包括从网络控制器112接收 到的流优先级数据512。流优先级数据512包括用于向网络流散列表管理模块510指示要将 哪些网络流散列条目放置在多级散列表中的哪个层级的策略(即,指令)。在一些实施例中, 流优先级数据512可以包括与网络分组类型相对应的高速缓存驱逐策略。
[0046]环境500的各个模块可以体现为硬件、固件、软件或者其组合。例如,环境500的各 个模块、逻辑单元和其它组件可以形成网络设备122的处理器202或其它硬件组件的一部 分,或者另外由网络设备122的处理器202或其它硬件组件来建立。因此,在一些实施例中, 环境500的模块中的一个或多个模块可以体现为电子设备的电路或集合(例如,网络流查找 电路、网络流散列管理电路、网络分组处理电路等等)。应当意识到,每个网络设备122可以 包括通常在计算设备中发现的其它组件、子组件、模块和设备,为了描述清楚起见,在图5中 没有示出这些组件、子组件、模块和设备。另外,应当理解的是,虽然网络设备122中的每个 网络设备可以在操作期间建立说明性的环境500,但为了描述清楚起见,具体参考单个网络 设备122来描述下面对说明性的环境500的讨论。
[0047]网络流散列查找模块502被配置为基于在网络设备122处接收到的网络分组来执 行网络流散列查找。在一些实施例中,网络流散列查找模块502可以包括网络分组散列模块 506和/或散列查找模块508。网络分组散列模块506被配置为对网络设备122接收到的网络 分组的报头的一部分进行散列。散列查找模块508被配置为使用报头的经散列的部分来执 行查找操作。如之前所提到的,在第一级散列表302处执行查找操作,并且取决于该查找操 作是否成功,该查找操作返回网络流在网络流表308中的位置或者继续到第二级散列表 304,依此类推。在一些实施例中,每个散列条目可以具有访问计数器。当查找操作返回时, 可以对与网络流表308中所查找的网络流的散列条目相对应的访问计数器进行递增。在一 些实施例中,访问计数器可以另外包括与最近一次访问散列条目相对应的时间值。
[0048]网络流散列表管理模块510被配置为对网络流散列条目在多级散列表中的位置进 行管理。在一些实施例中,网络流散列表管理模块510可以包括网络流散列存储优先级确定 模块514和/或网络流散列存储位置实施模块516。网络流散列存储优先级确定模块514被配 置为:根据从控制器112接收到的流优先级数据512中所存储的流优先级,来确定应当将哪 个流优先级应用于与网络流表308中的网络流相对应的散列条目。
[0049] 网络流散列存储位置实施模块516被配置为基于流优先级来实施散列条目的位置 (即,管芯上高速缓存204或者存储器208)。如之前所提到的,可以基于与某些散列条目相对 应的网络流的流优先级和/或访问频率,将这些散列条目锁定在第一级散列表302中。依赖 于高速缓存替换算法,基于散列条目的访问模式,将散列条目从管芯上高速缓存204驱逐到 存储器208,或者从存储器208提升到管芯上高速缓存204。因此,可以将与优先级流相对应 的散列条目从管芯上高速缓存204驱逐到存储器208,从而导致延时。网络流散列存储位置 实施模块516通过基于从网络控制器112接收到的流优先级来将散列条目实施为位于管芯 上高速缓存204或者存储器208中,克服了仅依赖于高速缓存替换算法的缺陷。
[0050] 在一些实施例中,例如在高速缓存替换算法实现最近最少使用(LRU)策略的那些 实施例中,网络流散列存储位置实施模块516可以创建单独的线程,以定期地"触及 (touch)"与高优先级散列条目相关联的高速缓存行。在这些实施例中,"触及"某些高速缓 存行设置存活期位(age bit)以确保"被触及的"高速缓存行将不会被驱逐,这是由于存活 期位将不在LRU位置中。在一些实施例中,网络设备122的处理器202可以暴露硬件负载锁定 指令(例如,"loadLK")。在这些实施例中,硬件负载锁定指令向处理器指示是否要驱逐高速 缓存行或者将高速缓存行锁定到管芯上高速缓存204中。换言之,硬件负载锁定指令抢先于 高速缓存替换算法。当与在管芯上高速缓存204中的高速缓存行处锁定的散列条目相对应 的网络流完成时,网络控制器112可以向网络设备122提供以下指令:与该网络流相对应的 散列条目的高速缓存行不再需要被锁定在管芯上高速缓存204中。在一些实施例中,处理器 202可以定期地检查被锁定的高速缓存行,以确定被锁定的高速缓存行中是否有任何高速 缓存行已变得陈旧(即,高速缓存行在预定的持续时间内没有被访问)。在一些实施例中,如 果高速缓存行中有任何高速缓存行已变得陈旧,则处理器202可以对陈旧的高速缓存行进 行解锁,以减少由于高速缓存污染而造成的潜在延时。另外,如下面将进一步详细描述的, 网络流散列存储位置实施模块516可以对与网络流表308中的网络流的散列条目相对应的 访问计数器进行解释。网络流散列存储位置实施模块516可以对访问计数器进行解释,以确 定是将散列条目保持在其当前位置还是移动散列条目(即,从管芯上高速缓存204移动到存 储器208,或者反之亦然)。
[0051]网络分组处理模块520被配置为:对网络分组进行处理,该操作是在将经处理的网 络分组发送给目标设备(例如另一个网络设备122、远程计算设备102或者计算设备130)之 前进行的。在一些实施例中,网络分组处理模块520可以包括路由协议查找模块522和/或分 组报头更新模块524。路由协议查找模块522被配置为:在管芯上高速缓存204处从I/O子系 统206接收到网络分组时,执行查找操作以确定要使用哪种路由协议来处理该网络分组。在 一些实施例中,执行查找操作可以包括:在网络设备122的查找表中查找路由协议。分组报 头更新模块524被配置为对网络分组的报头进行更新。经更新的报头可以包括例如由网络 流散列查找模块502获取的经更新的网络流信息。
[0052]现在参考图6,SDN架构600(其可以由系统100来实现)的说明性实施例包括应用层 602、控制层610和基础设施层620。应用层602可以包括一个或多个网络应用114,并且基础 设施层620可以包括一个或多个网络设备122。在S
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1