著录项信息
专利名称 | 用于加速分组处理的方法 |
申请号 | CN200410095932.5 | 申请日期 | 2004-10-25 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2005-04-27 | 公开/公告号 | CN1610338 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/56 | IPC分类号 | H;0;4;L;1;2;/;5;6;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 阿尔卡特公司 | 申请人地址 | 法国巴黎
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 阿尔卡特公司 | 当前权利人 | 阿尔卡特公司 |
发明人 | D·J·威尔松 |
代理机构 | 北京市中咨律师事务所 | 代理人 | 杨晓光;于静 |
摘要
IPv6已经发展为IPv4的改进升级。尽管IPv6在诸如寻址和路由选择的某些领域提供了相当多的改进,它已经消除了互联网报头长度字段。结果,对已经加入了扩展包头的分组进行处理以获得上层报头信息会导致较慢的处理速度。本发明通过高速缓存与报头选项字段的长度相关的信息来处理这一问题,该报头选项字段也被称为扩展包头。当接收到IPv6分组流,且如果该分组报头包括扩展报头,则对所述高速缓存信息的复查可以避免处理步骤,并且因此加速分组处理。
1.一种访问具有扩展报头的分组的传送报头的方法,其中所述分组属于特定业务流,该方法包括:
从所述分组读取报头信息;
根据涉及扩展报头的报头信息建立高速缓存关键字;
使用所述高速缓存关键字以执行高速缓存查找;
当所述扩展报头不断变化时,向所述特定业务流增加不可预知流标记;
当所述特定业务流具有所述不可预知流标记时,执行所述扩展报头的顺序遍历;
当所述特定业务流不具有所述不可预知流标记时,在所述高速缓存中存储从所述扩展报头读取的数据;并且
当所述高速缓存中找到扩展报头数据时,使用所述扩展报头数据以并行加载所述扩展报头以便减少遍历所述扩展报头所需的时间。
2.如权利要求1所述的方法,其中所述分组是IPv6分组。
3.如权利要求2所述的方法,其中所述高速缓存查找在包含了扩展报头长度的表上执行,并使用了包含基于存在于所述IPv6报头中的字段的元组。
4.如权利要求3所述的方法,包括下列步骤:当执行所述高速缓存查找时,读取扩展报头组中的第一扩展报头,以进一步减少分组处理时间。
5.如权利要求1所述的方法,其中如果没有找到高速缓存项,执行所述扩展报头的顺序读取,以及高速缓存关于这些扩展报头长度的信息,用于处理相同流中的后续分组。
6.如权利要求1所述的方法,包括步骤:检测具有逐跳和选路扩展报头的分组,并且确定是否需更这些分组的选项处理。
7.如权利要求6所述的方法,其中,响应于不包含扩展报头的分组,读取所述上层报头,而不执行高速缓存查找。
8.如权利要求7所述的方法,其中,使用手动配置检测所述经常变化的扩展报头。
9.如权利要求7所述的方法,其中,基于对所述分组流的观测,动态确定所述经常变化的扩展报头。
10.如权利要求1所述的方法,其中,如果所述高速缓存数据与所述分组不匹配,则不更新所述高速缓存项。
11.如权利要求10所述的方法,其中,所述高速缓存与所述分组不匹配的检测可以被手动激活。
12.如权利要求10所述的方法,其中,所述高速缓存与所述分组不匹配的检测是基于流观测被激活的。
13.如权利要求1所述的方法,其中,高速缓存来自所述上层报头的信息。
14.如权利要求13所述的方法,其中,所述高速缓存信息包括协议以及源和目的端口识别。
15.如权利要求1所述的方法,其中,对于在常规分组处理过程中执行的分类和查找的结果进行高速缓存。
用于加速分组处理的方法\n技术领域\n[0001] 本发明涉及通信系统,更具体而言涉及分组处理方案,其中使用高速缓存来快速访问分组流中的上层报头。\n背景技术\n[0002] 在下面的讨论中,互联网协议-第6版(IPv6)和多字段分类(MFC)被作为特定参照。然而,可以理解,本发明的概念不限制于IPv6和MFC,而且所描述的实现方式只是作为示范。\n[0003] IPv6作为改进发展,克服了IPv4中的一些限制。特别地,IPv4的路由选择和寻址的限制对基于32位字段限制的可用地址配置而言是实际的限制。而IPv6将地址字段增加到128位。这可以支持更多级的寻址层次及更多数量的可寻址节点。另外,一些IPv4报头字段已被撤销从而减少分组处理的处理成本,并且限制IPv6报头的带宽成本。IPv6已具有了这样的新的能力,即能够标记属于特殊业务流量的分组,对于该业务流量,发送器请求基于服务或实时处理的质量的特殊处理。另外,增加可选择的互联网层信息到分组的机制已经改变了。在IPv4中,这可以通过作为IPv4报头一部分的选项字段来完成。IPv4报头中的互联网报头长度(IHL)字段表明这些额外的字段及基本报头的长度。然而,由于IHL字段的长度,仅仅有限数量的选项可以被加到分组。在IPv6中,利用扩展报头增加了互联网层信息。这些报头增加到IPv6报头和上层报头之间的IPv6分组上。每一个扩展报头包含识别下一个报头类型的字段,并且未使用与IPv4的IHL类似的字段,而是由IPv6指定所述扩展报头中每一个扩展报头的长度。这允许不限定数量的扩展报头被加到IPv6分组上。\n[0004] 图1示出了包括流标记字段的IPv6报头格式。\n[0005] 常规分组处理典型地需要来自于上层报头的字段。作为处理这种数据的许多例子中的一个,多字段分类(MFC),通常于5-元组<源IP,目的IP,源端口,目的端口,协议>来分类分组。当使用选项或扩展报头时,到达上层报头以检索分组处理所必需的数据变得困难并且昂贵。\n[0006] 对于IPv4,用选项处理分组是简单的,因为前述IHL字段可以被用来略过整个IPv4报头,包括任何附加选项,以到达上层报头。\n[0007] 对于IPv6,由于IPv6报头没有像IPv4中的IHL那样的可以被用来立刻到达上层报头的字段,对于包含扩展报头的分组而言,到达上层报头显然更加困难。一个现有技术解决方案是顺序遍历扩展报头。因为每一个扩展报头的长度被存储在该扩展报头本身中,看来这似乎是最明显的解决方案。于是,如果在到达上层报头和进行常规分组处理之前,需要遍历大量的扩展报头,IPv6分组处理将会变得昂贵。这个成本看起来甚至更不必要,因为IPv6扩展报头的存在并不必然意味着从节点需要特殊处理。一些扩展报头包含仅仅与目的节点相关的信息,并且可以被所有在途节点完全忽略。事实上,只有逐跳及路由器扩展报头与所有的节点有关,并且后者只有当到达的分组去往节点时才被加以应用。幸运的是,RFC2460指定逐跳扩展报头为IPv6报头之后的第一扩展报头。这样节点能简单通过检查目的地址和IPv6报头的下一个报头字段来迅速确定是否需要用于分组的特殊处理。\n[0008] 一个可选择的先前方法是简单地将在分组分类中使用的字段限制为来自所述IP报头的字段,从而不需要检查上报头。对于MFC,这将标准5-元组分类减化为3-元组分类。\n由于限制使用在MFC关键字中的字段对于IPv6意味着对节点通路安全性的改变被控制,因而这并不是非常普及的选项。这样,必须随后为IPv6开发一组新的规则,因为有时从上层报头读取所有的字段是不方便的。正因为如此,限制在分组分类中使用的字段并不被认为是有竞争力的解决方案。\n发明内容\n[0009] 简而言之,本发明涉及对关于在分组流内使用的扩展报头的长度的信息所进行的高速缓存,以便加速对流中的随后分组的处理。在一个示范性的实施例中,该分组流包括IPv6分组。\n[0010] 因此,依照本发明的第一方面,提供一种访问分组流中上层报头的方法,它包括下列步骤:响应于包含扩展报头的分组,基于存在于该报头中的字段建立高速缓存关键字,并且执行对高速缓存项的高速缓存查找;以及响应于相应高速缓存项的找到,使用该高速缓存项并行读取扩展报头以到达和读取在所述上层报头中的字段。\n[0011] 依照本发明的第二方面,提供一种用于执行MFC以过滤分组流的系统,包括:响应于包含扩展报头的IPv6分组报头的装置,用于基于存在于所述报头中的字段建立高速缓存关键字,并且执行对高速缓存项的高速缓存查找;以及响应于相应高速缓存项的找到的装置,用于使用该高速缓存项并行读取扩展报头以到达和读取所述上层报头中的字段。\n附图说明\n[0012] 现在将参照附图更详细地描述本发明,其中:\n[0013] 图1示出了IPv6报头格式;\n[0014] 图2示出了到达IPv6分组的上层报头所需的操作顺序;\n[0015] 图3A和3B示出了使用串行和并行处理的存储器访问的比较;以及[0016] 图4A到4G示出了使用了选项的扩展报头查找的时间轴。\n具体实施方式\n[0017] 当节点接收到分组,将检查所述IPv6报头。对于没有扩展报头的分组将使用常规的分组处理技术进行处理。这意味着处理这些分组的唯一额外成本是对扩展报头的检查。\n对于具有逐跳扩展报头的分组,或去往包含选路报头的节点的分组,可以在这一点上启动由该报头指定的特殊处理。\n[0018] 对于具有扩展报头的分组,所述节点将使用包含在所述IPv6报头中的信息来建立关键字,以便执行高速缓存查找。这个关键字的格式对于所有分组可以是相同的,或者以IPv6报头中的字段的存在或值为基础。举例来说,对于具有非零流标记的分组,可以使用元组,或。对于具有零流标记的分组,可以使用元组,或。\n[0019] 当进行高速缓存查找时,所述来自报头的信息可以被用于读取列表中的第一扩展报头。如果在高速缓存中没有找到项,所述节点进而使用扩展报头长度和扩展报头的下一个报头字段顺序遍历扩展报头的列表。顺序遍历后,预期在相同流中有更多的分组具有相似扩展报头,用于遍历扩展报头的数据被置于高速缓存中。然而,如果找到了高速缓存项,所述节点使用来自第一扩展报头的信息和高速缓存的数据,以并行读取每一个余下的扩展报头。这允许所述节点能够快速地遍历所述扩展报头,并且其将到达上层报头,或者,如果没有高速缓存足够的数据,则继续顺序遍历最后的扩展报头。如果发现高速缓存的数据在扩展报头并行遍历中的任意一个点是错误的,该节点必须从数据错误的点顺序遍历剩余的扩展报头。在这种情况下,预期相同流中的额外分组具有相似格式,高速缓存将被更新,以反映当前分组中的扩展报头。\n[0020] 图2概括了上面描述的算法。应当注意,如果在读取IPv6报头后,得知在该分组中没有扩展报头,则不进行高速缓存查找。这样,在没有使用了扩展报头的分组的情况下,将只有很小的,如果有的话,执行这些优化所带来的负担。\n[0021] 图3示出了遍历扩展报头关联表与使用加速算法之间在存储器访问中的不同。在所示的情形中,通过一次存储器访问减少了分组处理等待时间。图3A示出了在报头的顺序遍历中使用的存储器访问。如图3B所示,并行处理包括步骤2b中与第一扩展报头的复查并行的对高速缓存的检查。\n[0022] 本发明有几个可选择的实施例。第一实施例是识别,并且对“不可预知”流作出反应的能力。这将被用来检测扩展报头不断变化的流。如果识别到这种流,将很清楚高速缓存的数据将可能是错误的,并且进行顺序遍历更为有效,而不必试图进行并行遍历。另外,对于这种流而言,更新高速缓存来反映当前分组的格式将是不必要的。标记“不可预知”的流可以是手动配置的结果,也可以基于对流的观测动态地确定。\n[0023] 第二实施例具有指定高速绶存项为“困难的”的能力。这将表明流中的大多数分组将被使用高速缓存数据正确地解释,并且如果该高速缓存数据与所述分组不匹配,该高速缓存将不被更新。这将防止单独的分组改变高速缓存数据。如前所扩展的内容,这个特征可以被手工激活或作为流观测的结果激活。通过指定在高速缓存失败的情况下只有在特定数量的失败之后才更新高速缓存中的数据,可以增强该扩展。\n[0024] 第三实施例也高速缓存一些上层报头信息,比如协议及源和目的端口。当高速缓存信息被接收到,该协议信息与包含在IPv6报头中的信息相结合,可以被用来立即开始分组分类,比如MFC。当该分类完成时,剩余的高速缓存信息可以被用来快速遍历扩展报头,并且用于验证高速缓存的协议信息与所述分组的相应信息是否匹配。如果两组信息匹配,那么该分类有效。但是,如果来自于高速缓存的信息是错误的,分类需要用来自于所述上层报头的正确信息加以重复。在最坏的情况下,存在一个额外分类成本,但是在最好的情况下这允许分组分类与扩展报头遍历并行地完成,并且能通过分组分类需要的等待时间而减少整个分组处理等待时间。\n[0025] 更进一步的实施例是高速缓存在常规分组处理期间执行的其它分类和查找的结果的能力。举例来说,所述MFC和正向查找的结果可以加入到所述高速缓存。使用该实施例,只有流中的第一分组需要完全分类,而流中的后续分组能使用来自高速缓存的这个分类结果。\n[0026] 本发明提供了优于先前讨论的现有技术的解决方案。由于大部分扩展报头对于大多数节点不需要特别处理,本发明减少了与处理含有扩展报头的IPv6分组相关的成本。还可以快速到达上层报头,从而分组处理得以继续。\n[0027] 关于对现有的MFC元组的使用,因为上层报头可以被迅速定位,在分组分类中使用的字段相对于用于IPv4的相应字段保持不变。这意味着现有的安全策略能够以IPv4中的相同方式应用到IPv6。\n[0028] 由于需要从高速缓存读取数据,并行加载扩展报头信息的代价会导致整个存储带宽的微小增加,但是该增加只发生于包含扩展报头的分组。\n[0029] 图4示出了并行加载直到6个扩展报头所对应的时间轴。实线条表示遍历扩展报头的最好情况。虚线条示出了如果高速缓存信息是错误时遍历扩展报头的绝对最坏情况。\n从图4A到4G可以看出,在遍历报头最好情况下,可以从包括了如虚线条所显示的顺序报头查找的处理中节约相当多的时间。\n[0030] 高速缓存可以通过许多方式实现。可能的实现方式包括使用内容寻址存储器(CAM)或通过使用散列表。也许最明显的方法是使用现有的CAM。使用CAM作为高速缓存有它的优点和缺点。主要的优点是,通过使用CAM,大多数的,如果不是全部,来自所述关键字的比特可以被用于执行查找,使得当与关键字匹配时只有非常低或为零的机会存在冲突,这取决于所述精确执行。这意味着仅会发生非常少的归因于从CAM获得错误信息的失配。\nCAM实现的不利方面,除了CAM昂贵且受空间约束之外,CAM查找需要两个存储器访问以完成高速缓存查找。第一个访问为写入,即为CAM提供所述关键字和指令以执行查找。第二个访问为读取,即从CAM检索结果。\n[0031] 除了使用CAM,还可以选择使用散列表来实现所述高速缓存。这种实现方式具有一定的优势,因为它没有花费宝贵和昂贵的CAM空间。由于散列表查找执行的速度,这种实现与CAM实现相比可能至少一样快且肯定更廉价。散列表实现的不利方面在于,与CAM实现相比,当与关键字匹配时,有更大的发生冲突的可能性。\n[0032] 取决于所述高速缓存实现的精确程度,当与关键字匹配时,发生冲突是可能的。这是没有使用所述关键字的所有比特作为到所述高速缓存的索引的结果。其后果是需要进行进一步处理以解决该冲突。在某些实现中,解决这些冲突的成本可能高于归因于错误的高速缓存信息的顺序遍历扩展报头所带来的成本。在这些情况中,简单假设冲突不发生是有益的。最终结果可能是高速缓存和分组数据间失配频率的增加,但是在处理中总体上减少。\n对于散列表实现,额外的益处就是减少了散列表项的大小,因为需要用来解决冲突的信息不再需要了。散列表项大小的减小有效地增加了在所述表中的项的数量,或节约了存储资源。\n[0033] 正如前面讨论的,为了建立关键字以索引到高速缓存,高速缓存方法使用了来自于报头的字段。存储在高速缓存中的信息是被认为是分组中的信息的副本。因为这个副本,必须注意确认高速缓存数据与分组中的数据匹配。为了做到这一点,最低限度扩展报头的长度必须被高速缓存从而可以加载扩展报头以确认其与高速缓存数据匹配。如果这个确认没有执行,恶意主机可能建立合法流,为了绕过一些安全机制而修改该流中的后续分组。作为例子,可以假设简单地高速缓存所有扩展报头的整个长度的实现方式。当所述流中包含多个扩展报头的第一分组到达时,这些扩展报头被顺序遍历,并且在高速缓存中加入项。在该分组上执行MFC,并且该分组被接收。流中的另一个分组到达,并且读出高速缓存数据。\n整个扩展报头的偏移量被用于读取所谓的上层报头,但是其实际上是与所述第一分组的相应报头相同的伪报头。执行MFC,并且接受该分组。扩展报头已经被顺序读取后,将会清楚地了解到该第二分组比第一分组有更少的扩展报头,并且真正的上层报头在该分组中的位置比高速缓存数据指定的要靠前。\n[0034] 尽管本发明的特殊实施例可以被描述和说明,很明显地,对于本领域的技术人员而言,在不背离本发明基本概念的情况下可以做出各种改变。但是,可以理解的是,这种改变将落入后附权利要求所界定的发明的全部范围之内。
法律信息
- 2020-10-13
未缴年费专利权终止
IPC(主分类): H04L 12/56
专利号: ZL 200410095932.5
申请日: 2004.10.25
授权公告日: 2011.04.27
- 2011-04-27
- 2006-12-27
- 2005-04-27
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2000-09-01
| | |
2
| | 暂无 |
1997-02-18
| | |
3
| | 暂无 |
1998-01-07
| | |
4
| |
2002-08-07
|
2002-02-01
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |