使用报头预测的低延时联网设备的制作方法

文档序号:13383105阅读:236来源:国知局
使用报头预测的低延时联网设备的制作方法
使用报头预测的低延时联网设备相关申请本申请要求于2012年9月18日提交的、题目为“可扩展的低延时多协议联网设备”的美国临时申请NO.61/702,312的优先权,其全部内容通过引用合并于此。技术领域本公开总地涉及降低联网设备中的延时。

背景技术:
当在高速网络设备(比如,交换机)中做出转发决策时,数据包报头到达延迟和处理时间是造成重大延时的原因之一。网络处理决策使用数据包报头的比特的一些子集作为输入。因为数据包报头的比特不会同时到达,所以传统的交换机设计方法会使网络处理决策延迟,直到所有需要的比特到达为止。附图说明图1是可以执行本文所提出的预测处理技术的示例网络设备的框图。图2是被配置为执行预测处理技术的网络设备中的组件的高级框图。图3是根据一个示例的能够进行低延时快速路径网络处理决策的预测处理单元的框图。图4A和4B是示出用于从接收到的报头字段预测尚未接收到的一组报头字段的预测处理单元中使用的缓存的示例的示意图。图5是示出使用图3中所示的预测处理单元能够实现的延时改进的时序图。图6是示出预测处理单元的多级级联配置的框图。图7是示出预测处理单元的多级并联配置的框图。具体实施方式概述网络设备接收包括多个报头字段的数据包。对数据包进行解析,以顺序获取多个报头字段。基于在网络设备处可用的一个或多个报头字段预测在网络设备处尚不可用的一个或多个报头字段。基于预测的一个或多个报头字段和在网络设备处可用的一个或多个报头字段,生成针对数据包的网络处理决策。示例实施例本文提出了预测数据包报头技术和多级联网决策流水线,以减少低延时网络设备(例如,交换机)中的数据包的处理时间。预测数据包报头处理可以使用迟滞、网络感知软件、或其他方法来提供精确的、准确无误的数据包报头预测。图1是被配置为执行预测数据包报头技术和多级联网决策流水线技术的示例网络设备10的框图。网络设备10包括被配置为从网络接收数据包并且向网络发送数据包的多个端口12(1)-12(N)、用于在端口12(1)-12(N)之间交换数据包的交换结构14、存储器16、以及中央处理单元(CPU)17。交换结构14包括一个或多个缓冲器20、一个或多个交换表30、和数据包决策单元40(即,预测处理交换信息库(SIB))。CPU17执行对网络设备10的操作的更高级控制。在数据包正在被处理时,缓冲器20临时存储网络设备10中的数据包。预测处理SIB40做出包括但并不限于安全、服务质量(QoS)、统计、入口和出口访问控制策略、分类、标记、添加或删除数据包字段、负载均衡、多承用处理(multipletenancyhandling)、层2桥接(交换)和层3路由、以及丢弃数据包的决策。交换结构14可以被实现在一个或多个专用集成电路(ASICs)中的数字逻辑门中。存储器16可以包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电、光、或其他物理/有形存储器存储设备。CPU17是例如,微处理器或微控制器。因此,存储器16通常可以包括编码有软件的一个或多个有形(非暂态)计算机可读存储介质(例如,存储器设备),该软件包括计算机可执行指令并且在被(CPU17)执行时可操作以执行本文描述的技术。例如,预测处理SIB40的操作可以部分地或完全地在存储于存储器16中并由CPU17执行的软件中被执行。网络设备10可以是任意现在已知的或以后开发的网络设备,包括交换机、路由器、网关、主机设备上的软件堆栈、虚拟网络接口卡(VNIC)、虚拟交换机、以及物理网络接口卡(包括支持虚拟化的网络接口卡)。现在转向图2,示出了根据一个示例的预测处理SIB40的高级框图。预测处理SIB40包括解析器50、预测处理单元60、以及处理决策单元70。解析器50包括被配置为在数据包的比特在网络设备的端口处被接收时解析该数据包的字段的数字逻辑。例如,解析器50被配置为解析数据包的多个报头字段(在本文中也可以被简称为“报头”)中的每一个报头字段,并且在报头被接收到时将报头提供给预测处理单元60。如图2所示,在网络上发送的数据包通常具有多组报头,该多组报头包括一组层2(L2)报头字段、一组层3(L3)报头字段、以及一组层4(L4)报头字段。在这些报头字段组在网络设备的端口处被接收到时,这些报头字段组的数据被顺序解析。因此,第一组报头字段(例如,L2报头)可用,随后是第二组报头字段(例如,L3报头),再后是第三组报头字段(例如,L4报头)。可以存在针对网络设备的每个端口的解析器,但为了简单起见在图2中仅示出了单个解析器。预测处理单元60接收多组报头(报头字段),并且针对每组报头生成网络处理决策结果。例如,预测处理单元60针对数据包生成L2网络处理决策结果、L3网络处理决策结果、以及L4网络处理决策结果。针对数据包的网络处理决策结果被提供给处理决策单元70,并且处理决策单元70基于一个或多个网络处理决策结果对数据包做出网络处理决策。在一些情况下,处理决策单元70可以仅基于L2网络处理决策结果,或基于L2和L3网络处理决策结果,或基于L2、L3和L4网络处理决策结果对数据包做出处理决策。处理决策单元70的操作可以被集成到预测处理单元60中,如通过下文描述的图3、图6、和图7中示出的示例配置理解的。L2、L3、和L4报头中的每一个报头包括多个字段。例如,针对以太网帧/数据包,L2报头的字段包括源介质访问控制(MAC)地址字段、目的地MAC地址字段、以太网类型协议标识符字段、以及可选的IEEE802.1Q标签字段。L3报头的示例字段包括因特网协议(IP)源地址字段和IP目的地地址字段。L4报头的示例字段包括传输控制协议(TCP)或通用数据报协议(UDP)源端口字段、TCP或UDP目的地端口字段、序列号字段、以及确认号字段。本文所提出的技术可用于对包括L4报头在内的任意深度数目的报头字段执行预测,例如,深度包检测(DPI)报头字段。尽管本文的附图和描述针对的是L2、L3、和L4报头,但是这仅旨在给出示例。应当理解的是,这些技术通常可用于基于在网络设备处可用的一个或多个报头字段,来预测在网络设备处尚不可用的一个或多个报头字段。针对数据包的网络处理决策是基于预测的一个或多个报头字段和在网络设备处可用的一个或多个报头字段生成的。现在转向图3,示出了针对包括第一组报头字段(例如,L2报头)和第二组报头字段(例如,L3报头))的简单情况的预测处理单元60的一种形式的框图。L2报头用参考标号80表示,L3报头用参考标号82表示。如上所述,在L3报头可用于处理之前的一段时间,(通过如图2所示的解析器50)L2报头将是可用的,已经准备就绪以供处理。预测处理单元60包括L2网络处理单元90、L3报头预测单元100、以及L3处理块110。L3处理块110包括L3预测网络处理单元112、L3网络处理单元114、预测决定逻辑单元116、以及比较器118。L2报头作为输入被提供至L2网络处理单元90和L3报头预测单元100。L2网络处理单元90被配置为基于L2报头80生成L2网络处理决策结果(L2结果)。L2结果作为输入被提供至L3预测网络处理单元112和L3网络处理单元114。L3报头预测单元100被配置为在L3报头82已经被解析并且可用于在网络设备处进行处理之前,基于L2报头预测L3报头。因此,L3报头预测单元100将基于接收的数据包的L2报头(接收的第一组报头字段)输出针对该数据包的L3报头的预测(预测的第二组报头字段)。L3预测网络处理单元112被配置为基于L2结果和预测的L3报头生成预测的L3网络处理决策。在所有的L3报头被解析并且可用于在网络设备处进行处理之后,L3网络处理单元114基于L2结果和L3报头生成实际的L3网络处理决策。因此,L3预测网络处理单元112将在L3网络处理单元114输出实际的L3网络处理决策之前输出预测的L3网络处理决策。而且,L3网络处理单元114直到其接收到所有的L3报头才能开始操作。一旦所有的L3报头可用于处理,比较器118就对由L3报头预测单元100生成的预测的L3报头与接收的L3报头82进行比较。如果比较器118发现预测的L3报头和接收的L3报头之间匹配,则比较器118生成提供至预测决定逻辑单元116的输出。预测决定逻辑单元116决定应该使用哪个网络处理决策,是由L3预测网络处理单元112输出的预测决策,还是来自L3网络处理单元114的实际决策。如果预测是正确的,即,如果L3预测报头匹配接收的L3报头82,则预测决定逻辑116将基于来自比较器118的输出选择L3预测网络处理决策,用作L3网络处理决策结果(L3结果)。否则,预测决定逻辑116将等待由L3网络处理单元114基于接收的L3报头输出的实际的L3网络处理决策,用作L3结果。诸如重新排序和数据包优先级之类的其他因素是预测决定逻辑的重要部分。在一些情况下,预测结果可以被丢弃,以防止数据包重新排序或防止被较低优先级的数据包抢先。针对这些情况,网络设备可以忽略预测的数据包报头和接收的数据包报头之间的比较结果,等待基于接收的数据包报头完成网络处理决策的生成。相反,也存在始终使用预测结果的某些情况。一个示例是静态视频流网络,在该网络中不正确地预测报头的机率很低并且少量数据包的丢失可以忽略不计。针对这些情况,对于不正确地预测报头字段(例如,基于第一组报头字段预测第二组报头字段)的机率低的已知类型的数据包流中的数据包,网络设备将始终选择预测的网络处理决策。L3报头预测单元100所使用的报头预测逻辑可以通过多种方式实现。现在参考图4A,用于L3报头预测的一种示例方法是缓存最近的数据包的报头。图4A示出了包含随着时间的过去由网络设备接收的数据包的L2报头和L3报头的表格的示例缓存120。在该示例中,缓存的“线索”是L2报头,并且存储/缓存值是其L3报头。当新数据包到达时,在缓存中查找该数据包的L2报头信息,以用比L3报头被完全解析并被使得可用于处理的时间明显少的时间获得对L3报头的预测。例如,如图4A中所示,带有L2报头=(源MAC1,目的地MAC3,以太网类型X)的数据包被接收。L2报头被用作针对缓存120的线索122,以使用那些L2报头搜索缓存120,以便定位匹配并提取相应的L3报头。使用线索122从缓存提取的结果124是(IP源地址3,IP目的地地址4,...)。图4B示出了另一示例缓存120’,该缓存的线索126包括L2报头和L3报头,并且结果128包括L4报头。图4B中的示例示出了包括L2报头(源MAC2,目的地MAC4,以太网类型X)和L3报头(IP源地址2,IP目的地地址3,...)的线索126、和包括L4报头(TCP源端口1,TCP目的地端口5,...)的相应结果。尽管图4B示出了用于提取L4报头的线索包括L2和L3报头,但是这并不意味着要限定为一些情况,并且线索可以仅是L2报头。因此,图4A和4B示出了对于在网络设备处随着时间的过去接收的数据包,可以将第一组报头字段的数据和第二组报头字段(和可选的第三组报头字段)的相应数据存储在缓存中。如果缓存中有匹配第一组(和第二组)报头字段的条目,则预测包括使用接收的数据包的第一组报头字段(和第二组报头字段)来从缓存中查找并提取相应的第二组报头字段(或相应的第三组报头字段)的数据。图4A和4B是时间缓存的示例。此外,在图4A中,L3报头预测包括缓存最近数据包的报头。缓存的线索是数据包的L2报头,并且存储的值是数据包的L3报头。当新数据包到达时,在缓存中查找数据包的L2报头信息,以在比L3报头被完全解析所花费的时间少得多的时间内获得/提取L3报头的预测。一旦新数据包的L3报头被完全解析,L3报头就被推进缓存中(如果条目还不存在)。用于数据包报头预测的其他方法可以使用缓冲区历史、流记录、网络感知软件、(或者)甚至统计计算来做出正确的数据包报头预测。通过追踪具有特定报头的数据包的出现,缓冲区历史可以被用来执行数据包报头预测。例如,当新数据包到达时,数据包的L2报头被用作缓冲区历史缓存的线索,该缓冲区历史缓存通过匹配缓冲区历史缓存中具有最高出现次数的L2报头返回数据包的L3报头。一旦新数据包的L3报头被完全解析,这些L3报头就被推进缓冲区历史缓存,从而增加了匹配报头记录的出现次数。数据包流是有可能到达同一队列的突发数据包,经常会多次重新生成相同的流。有用的是记录之先数据包的报头,用作查找并预测当前数据包的报头的线索。例如,当数据包到达时,它们的报头被存储作为流历史缓存的线索,其中的结果数据是下一个数据包的报头。将来,当相同的数据包到达时,它的报头被用以查找下一个数据包的报头的预测。上述的预测示例使用由硬件在硬件中填充的缓存。预测缓存还可以由网络感知软件填充。许多协议传输关于穿过网络设备的数据包的报头和主机的信息。该信息可以被用于填充预测缓存,并且在较为静态的网络配置中特别有用,在这种配置中缓存命中频率和预测精度变得非常高。现在转向图5,示出了图示出使用以上结合图3描述的预测报头处理技术可以实现的时间节省的示意图。该图示出在没有使用预测技术来获得L3网络处理结果的情况下,数据包延时是在时间t=B处,时间t=B=L3数据包报头就绪的时间加上L3网络处理的时间。使用预测技术的数据包延时为t=A=max(L3报头预测,L2网络处理)加上L3预测网络处理。L3预测网络处理既需要L3预测报头也需要L2网络处理结果。最大值函数max()被用来得出L3报头预测和L2网络处理中的哪一项花费了更长的时间。节省延时为B-A=L3报头就绪+L3网络处理-(max(L3报头预测,L2网络处理)+L3预测网络处理)。在正常情况下,L3预测网络处理将与正常L3网络处理具有相同的延时,并且甚至可以使用相同的硬件。在这种情况下,使用预测网络处理的延时节省为L3报头就绪-max(L3报头预测,L2网络处理)。因此,总而言之,图3示出了低延时快速路径处理决策配置的示例,在该配置中,基于在网络设备处可用的接收的第一组报头字段,在使得接收的第二组报头字段在网络设备处可用之前生成预测的第二组报头字段。在使得接收的第二组报头字段在网络设备处可用之前,基于第一组报头字段和预测的第二组报头字段生成网络处理决策。可以通过以下处理生成网络处理决策:基于第一组报头字段生成第一网络处理决策结果;基于第一网络处理决策和预测的第二组报头字段生成预测的第二网络处理决策;在通过解析使得接收的第二组报头字段在网络设备处可用之后,基于第一网络处理决策结果和接收的第二组报头字段生成实际的第二网络处理决策;以及选择预测的第二网络处理决策或实际的第二网络处理决策作为第二网络处理决策结果。现在参考图6和图7,将图3-5中所述的技术上位/扩展到多级预测。网络转发流水线对许多不同数据包类型的报头做出处理决策。为了使流水线的延时最小化,必须对每个不同类型的数据包报头做出数据包报头预测。图6中示出的提供多个预测的一种方法是,串联数据包报头逻辑从而使得最早的数据包报头预测结果被作为种子提供给下一个数据包报头预测。这种方法对随后的数据包报头提供了更高精确度的预测。图6示出了与图3中所示的相同的布置,但是添加了L4报头84、L4报头预测单元130、以及L4处理块140。L4报头预测单元140接收L2报头80和由L3报头预测单元100输出的L3预测报头作为输入。L4处理单元140包括L4预测网络处理单元142、L4网络处理单元144、预测决定逻辑146、以及比较器148。L4处理块140以与L3处理块110相似的方式进行操作。L4预测网络处理单元142的输入是来自L3处理块110的L3结果和来自L4报头预测单元130的L4预测报头。L4预测网络处理单元生成被提供至预测决定逻辑单元146的预测的L4网络处理决策。一旦L4报头可用,L4网络处理单元144就对L4报头84和L3报头进行操作。L4网络处理单元144生成被提供至预测决定逻辑单元146的实际的L4网络处理决策。比较器148将L4预测报头与接收的L4报头进行比较。如果匹配,则输出被提供至预测决定逻辑单元146,以选择预测的L4网络处理决策用作L4结果。否则,预测决定逻辑单元146等待由L4网络处理单元144输出的实际的L4网络处理决策,并选择实际的L4网络处理决策用作L4结果。因此,总而言之,图6示出了基于接收的第一组报头字段和预测的第二组报头字段预测第三组报头字段的处理。基于预测的第三组报头字段和第二网络处理决策结果生成预测的第三网络处理决策。在(通过解析数据包)使得接收的第三组报头字段在网络设备处可用之后,基于接收的第二组报头字段和接收的第三组报头字段生成实际的第三网络处理决策。选择预测的第三网络处理决策或实际的第三网络处理决策作为第三网络处理决策结果。更低延时的方法是并行执行所有的数据包报头预测(尽管在粗粒度预测的成本的情况下)。该并行方法在某些静态网络环境中仍是有用的。使用数据包报头预测,多级联网流水线可以被创建,其中在所有需要的数据包报头到达或是以其他方式被使得可用之前,少量网络处理决策被并行启动。每个网络处理决策可以具有作为输入种子的一个或多个唯一的数据包报头决策。一旦所有必需的报头都到达,可以在几乎零时间内选择正确的网络处理决策。所有数据包报头预测被并行执行的配置在图7中被示出。图7中的L3块110与图6中的相同。然而,在图7中不同于图6的是,由L4报头预测单元130进行的L4报头预测是仅基于L2报头80的。此外,L4处理块140不使用L3结果。相反,L4预测网络处理单元142仅使用L4预测报头作为输入。因此,由L4处理块140输出的L4结果可以单独从L4预测报头或接收的L4报头得出。总结图7的并行配置,基于第一组报头字段预测第三组报头字段,并且甚至是在第二组报头字段在网络设备处可用之前。不等待第二网络处理决策结果,基于预测的第三组报头字段生成预测的第三网络处理决策。在(通过解析数据包)使得接收的第三组报头字段在网络设备处可用之后,基于接收的第二组报头字段和接收的第三组报头字段生成实际的第三网络处理决策。选择预测的第三网络处理决策或实际的第三网络处理决策作为第三网络处理决策结果。总而言之,所提出的技术通常可用于基于在网络设备处可用的任意一个或多个报头字段,预测在网络设备处尚不可用的一个或多个报头字段(例如,L3、L4、DPI字段等)。基于预测的一个或多个报头字段和在网络设备处可用的一个或多个报头字段,针对数据包生成网络处理决策。预测可以包括使用接收的第一组报头字段(例如,L2报头)来预测第二组报头字段(例如,L3报头)、使用接收的第一组报头字段(例如,L2报头)来预测第二和第三组报头字段(例如,L3和L4报头)、使用接收的第一组报头字段(例如,L2报头)以及可选择的第二和/或第三组报头字段来预测第四组报头字段(例如,DPI报头)等等。总之,报头预测可以包括基于以下各项中的一项或多项来预测层3报头、层4报头、以及深度包检测报头中的一个或多个报头:接收的层2报头、接收的层3报头、预测的层3报头、接收的层4报头、以及预测的层4报头。以上描述仅旨在给出示例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1