专利名称:用于处理复制分组的方法和装置的制作方法
技术领域:
本发明涉及信息网络领域,更具体而言,本发明涉及用于识别复制分组的方法和装置。
背景技术:
随着越来越多的信息通过当今的网络被传送,企业在向它们的顾客提供及时的服务和信息时变得严重依赖于它们的网络基础设施。这些网络基础设施的故障会在收入损失和雇员空闲方面付出极大代价。因此,具有高可靠性的系统越来越吸引联网设备的用户。此外,路由器、交换机和其他这样的网络元件的制造商被不断地要求提供能够在仍旧维持这种高可靠性的同时支持不断增长的网络流量负担的网络元件。这些需求迫使网络元件提供更大的分组处理速率,这种处理速率的增长通常是通过处理功率的大幅增长来实现的。
对于要求这种高可用性的网络环境,一种用于提供故障保险连接的方法是对每个分组进行多次发送,每次发送通过从源到目的地的若干(或所有)独立路径。由于独立路径,通常提供两条路径并两次发送分组就足够了,因为这两条路径同时发生故障的概率很低。这种方法本质上提供了零故障恢复时间,因为如果一条路径发生故障,则在另一路径上(至少以很高概率)接收分组的拷贝。
相反,其他方案通常会带来某种延时。这可能包括诸如以下延时与活动路径的故障检测相关联的延时、与转发到备选路径的分组的交换相关联的延时,以及与在切换(这通常由终端主机处理)期间丢弃的分组流量的重传相关联的延时。这种延时由于协议超时和用于路由选择重配置的设置时间而可以持续数秒,对于长程链路尤其如此。
因此,尽管多分组发送技术相对于其他备选技术来说更有吸引力,但是这样的方法提出了多个挑战。一个问题在于将每个分组发送两次所需的额外带宽。但是,在任何第一路径发生故障的情况下都需要第二路径的带宽,因此经常争论的是,通过空闲(并因此可用在故障情况下)或者通过传输这些复制品(它们被用在故障情况下),该带宽在任何未发生故障的情况下都是一种浪费。第二种挑战是在两条独立路径上引导分组。在单独的第1层路径的情况下,通常存在出自源的两条物理链路(例如源和目的地之间的两条光纤连接),以使得在物理MAC层上发生复制传输。在更高层上,源或许可以利用由这些层提供的设施来沿着两条独立路径“源路由”分组。例如,企业路由器可被连接到两个单独的服务提供商(SP)并通过链路同时向每个单独的SP发送分组。另外,在支持这种机制的环境中可以使用因特网协议(IP)松散源路由选项(LSRO)和多路径标记交换(MPLS)。
应该注意,在以上述方式提供可靠连接时,这样的技术必须防止复制分组被递送到终端主机。这一点在在对终端主机(它们通常通过某种暴露的长程连接来连接子网)来说透明的网络层中提供这种可用性特征时尤其有意义,这是由于复制分组消耗终端主机处和终端主机的网络上的资源。此外,在某些情况下,这些复制分组会干扰终端主机的协议的操作。这种复制分组还会扰乱作为不应当复制分组的服务的网络层的标准语义。但是,网络层服务无法依靠序列号来检测复制分组,例如在可靠的传输协议(例如传输控制协议(TCP))中可用的序列号。
因此,希望具有以下能力在不会不利地影响网络效率的情况下,通过沿不同路径传输复制分组来提供可靠的网络连通性。这种功能还应该以不会不利地影响采用这种解决方案的网络元件的处理能力(即分组吞吐量)的方式来提供。优选地,采用这种解决方案的网络元件还应该能够使其自身和网络抵御采用大量分组扰乱网络操作的攻击。
发明内容
在一个实施例中,公开了一种网络设备。该网络设备包括复制分组映射(DPM)。在该实施例的某些方面中,DPM包括多个DPM字段。在该实施例的其他方面中,DPM被配置为接收分组概要值(PSV)。
在另一实施例中,公开了用于确定分组是否是复制分组的方法。该方法包括确定复制分组映射(DPM)的字段是否指示分组是复制分组。该确定是用与分组相对应的分组概要值(PSV)来执行的。
以上是概述,从而必然包含细节的简化、一般化和省略;因此,本领域技术人员将意识到,该概述仅仅是示例性的,并且决不希望是限制性的。在下面提出的非限制性详细描述中,仅由权利要求书限定的本发明的其他方面、创造性特征和优点将变得明显。
通过参考附图,本领域技术人员可以更好地理解本发明,并清楚了解多个目的、特征和优点。
图1是示出并入了本发明实施例的网络设备的框图。
图2是示出根据本发明实施例的具有两个复制分组映射(DPM)的DPM库的框图。
图3是示出根据本发明实施例的具有多个DPM的DPM库的框图。
图4是示出根据本发明实施例的DPM的框图。
图5是示出根据本发明实施例的DPM字段的框图。
图6是示出包括支持本发明实施例的信息的访问控制列表的框图。
图7是示出根据本发明实施例的分组处理的流程图。
图8是示出根据本发明实施例的DPM查找进程的流程图。
图9是示出根据本发明实施例的用于操作包括多个DPM的DPM库的进程的流程图。
图10是示出根据本发明实施例的利用先前和当前DPM库进行的DPM查找进程的流程图。
不同附图中所使用的相同标号指示类似或相同的项目。
具体实施例方式
下面提供对本发明的示例的详细描述,该描述不应看作对发明本身的限制。相反,任何数目的变化都可以落在所附权利要求书限定的本发明的范围内。
介绍本发明提供了这样一种方法和装置,其通过对关于分组的信息执行散列操作并将散列值与已存储的代表先前接收到的分组的散列值的值相比较来检测复制分组,以便确定分组是否是复制的(即,是否已经被网络设备“看见”过)。例如可以逐个比特地比较由散列函数生成的值与已存储的值。如果分组是复制的(即已存储的值包括指示这样的分组已被网络设备接收到过的信息),则丢弃分组。如果分组不是复制的,则将分组的散列信息添加到已存储的散列信息,并以适当方式转发分组。散列函数可以是任何这样的函数,但是散列的随机化程度越高,生成的误报(falsepositive)就越少。还将意识到,生成和存储的比特越多,确定就越准确,但是相对成本也越大。
更具体而言,根据本发明的网络设备包括分组概要值(PSV)生成器,该生成器被配置为用于从每个接收到的分组中提取PSV。该网络设备还包括复制分组映射(DPM)库,该DPM库包括至少一个DPM。在一个实施例中,每个DPM对于每个PSV提供一个条目。当接收到分组时,生成该分组的PSV。利用该PSV,在DPM中“查找”该分组(即,将该PSV与DPM中的信息相匹配)。如果DPM中的信息指示具有该PSV的分组已被接收,则该分组被分类为复制的并被相应地处理(通常是被丢弃)。否则,该条目被更新以指示接收到具有给定PSV的分组,该分组被分类为非复制的,并相应地被转发。
在本发明的一个实施例中,DPM是一个2字段条目,其中一个字段对应于先前的时间间隔Tp,而另一字段对应于当前时间间隔Tc。在接收到分组时,如果与该分组的PSV相对应的条目的任何一个字段已被设置,则分组被分类为复制的。否则,条目中与当前时间间隔(Tc)相对应的字段被设置。这些时间间隔对应于实时间隔。在当前时间间隔(Tc)结束时,DPM中与先前时间间隔(Tp)相对应的字段被清除,然后该字段看作与新的当前时间间隔相对应的字段,而那些先前被看作与当前时间间隔相对应的字段被看作与针对下一时间间隔的先前时间间隔相对应的字段。该时间间隔在这里被称为时间间隔改变(TIC)。如果每个时间间隔的长度是t毫秒,那么根据相对于最近的TIC的确切当前时间,如果具有相同PSV的分组是在最近t到2t毫秒内接收到的,则分组被看作是最近接收到的。具体而言,在刚刚发生了TIC的时刻,在最近t毫秒内接收到的分组被分类为复制的,而就在TIC发生前,在最近2t毫秒内接收到的分组被分类为复制的。
这种方案可以被扩展到每条目多个字段,同时伴随空间和构造成本的增大。以与上述类似的方式,在每次TIC时,与最旧时间间隔相关联的字段被清除,然后被与新的时间间隔相关联,同时先前第二旧的字段被指定为最旧字段。这种扩展可被用于对为复制抑制目的而被认为是“最近的”时间段的变化提供粒度更精细的控制。实际上,通过调整TIC值(以及可获得的DPM中被使用的DPM的数量),可以动态配置窗口大小(接收复制分组导致较晚接收到的复制分组被确定为复制的时间段)。但是,无论实现两个还是更多个DPM,重新指定DPM字段实现起来都相对直接(无论以硬件还是软件实现),这是因为这样做只影响在接收分组时设置哪个DPM,以及在每次TIC时清除哪个DPM。
实现本发明实施例的网络设备提供了若干优点,其中包括以下优点。这样的网络设备(例如交换机或路由器)可以不向终端主机递送大量复制分组的情况下支持如前所述的为了实现零故障恢复时间而在独立路径上执行的复制分组传输。这样的网络设备还可以抑制由于故障、错误配置和攻击而引起的复制。
但是,将会意识到,本发明的使用也适合于在同一链路上将每个分组发送多次(例如两次)的情形。当然,在使用这种方法时,考虑到诸如给定链路的可用带宽是否足够以及链路上的过量分组丢弃(与链路的故障相对照)之类的问题,通过链路发送复制分组必须是可行的。
由于根据本发明的方法采用标准分组格式(即不需要对分组进行修改(例如不需要向分组添加信息)),因此这样的方法不涉及当前在现有网络设备中使用的标准协议的修改。此外,由于该方法可以以硬件实现,因此采用本发明的网络设备的分组吞吐量未受到严重影响,并且实际上可能不会遭受任何的恶化。
用于复制分组检测的装置的示例图1是示出根据本发明实施例的网络设备100的体系结构的框图。网络设备100在分组处理单元110处接收传入分组流105。一旦经过分组处理单元110的处理,传入分组流105就被网络设备100转发,作为传出分组流115。传入分组流105的分组在分组处理单元110内是部分由分组概要值(PSV)生成器120来处理的。PSV生成器120生成PSV 125,PSV125被传递到复制分组映射(DPM)库130。DPM库130受控于DPM控制单元140。如果DPM库130与DPM控制单元140联合确定出作为PSV125提供的值指示复制分组,则这种状况经由命中信号145被传输到分组处理单元110。类似地,如果作为PSV 125提供的值没有致使DPM库130生成命中,则同样地利用命中信号145指示正在考虑的分组不是复制分组这一事实。如果分组不是复制的,则更新DPM库130中与PSV 125的值(即正在考虑的分组)相对应的条目,以指示分组的接收(未来用于识别该分组的复制)。一旦已经执行了关于给定分组是否是复制分组的确定,分组处理单元110就可以基于该信息来适当地处理给定分组。
在本发明中,网络设备100的PSV生成器120从每个分组中提取出分组概要值(PSV 125)并将该PSV传递到DPM库130。DPM库130包括复制分组映射(DPM),该DPM可以以多种方式配置。这样的DPM对于每个PSV可以包括一个条目,或可以将PSV映射到其中的比特。当接收到分组时,基于其PSV在DPM中查找该分组。如果DPM条目指示具有该PSV的分组最近已接收到,则分组被分类为复制的并被相应地处理(通常被丢弃)。否则,更新该条目以指示具有该PSV的分组的最近接收,并将分组分类为非复制的,并相应地转发分组。
在这样的体系结构中,DPM库130(更具体而言,DPM库130内的(一个或多个)DPM)可使用Bloom过滤器来实现。Bloom过滤器是一种简单的空间效率高的随机化数据结构,其用于表示一个集合,以便支持近似成员查询。这种空间高效性是以由于未将所有接收到的分组映射到唯一PSV而引起的小概率的误报为代价来实现的,但是在本申请中这是一种方便的折衷办法。Bloom过滤器以可接受的低概率的误报为对于空间效率高的用于维护关于已接收到的分组的信息的机制的需求提供了良好的解决方案。利用该方法,每个DPM被设计为用于实现对于给定窗口(对照最近接收到的分组检查复制分组的时间段)的Bloom过滤器。在这种情形中,每个DPM(Bloom过滤器)以全0的阵列开始。如上所述,对每个分组执行多次(例如k次)散列操作以形成其相应的PSV,其中每次散列操作产生DPM中的一个比特位置。这些比特位置被设置(例如设置为1)。为了检查新接收的分组是否是复制的(即其PSV是否在DPM中存储的PSV集合中),新接收的分组被执行k次散列操作,并且相应的比特被检查。如果相应的比特都是1,则PSV被匹配,该分组是复制的(至少在某个置信级别上)。否则,PSV未被匹配,分组不是复制的。在后一种情况下,DPM中与该PSV相对应的比特被设置(例如设置为1)以指示该分组的接收。
通过散列函数的数目(k)、在给定时间段期间期望分析的分组的数目(n)以及在每个DPM中的比特的数目(m)来近似地控制误报的概率。在一种实现方式中,可以推导出在给定要分析的分组的数目以及每个DPM中的比特的数目的情况下使所采用的散列函数的个数最小的关系,该关系是k=ln 2*(m/n)在只使用单个散列函数的情况下,该等式变为m=0.6932/n其中,在实践中,DPM的大小被限制在整数个比特(并且可能是偶数个比特)。因此,按照这种表示方法,每个DPM所需的比特数目由针对给定误报概率将要分析的分组的数目(从而,针对复制检查分组的时间间隔的长度)所控制。
在本发明的一个实施例中,使用单个散列函数。在此实施例中,利用在传输层对分组内容执行的循环冗余校验(CRC)计算来实现PSV。这种计算通常不包括更低层头部和尾部信息,这些头部和尾部信息可能依赖于分组采取的路径。由于CRC计算与诸如传统软件校验和的较弱属性相比往往更能确保分组中的任何差异导致PSV中的差异,因此这种计算很有吸引力。CRC计算也易于以硬件实现。但是,如前所述,也可以使用其他散列函数以及多个散列函数。PSV可以选择性地包括目的地/转发信息,以使被发送到不同目的地的同一传输层分组不会被看作复制分组。
在本发明的一个实施例中,DPM库由两个DPM构成,其中一个DPM对应于先前时间间隔Tp,而另一DPM对应于当前时间间隔Tc。在接收到分组时,如果与给定分组的PSV相对应的条目已使任一DPM被设置,则分组被分类为复制的。否则,条目中与当前时间间隔相对应的字段被设置。这些时间间隔对应于实时间隔。在当前时间间隔Tc结束时,DPM中与先前时间间隔相对应的字段被清除,然后被看作与新的当前时间间隔相对应的字段,而那些先前被看作与当前时间间隔相对应的字段现在被看作与针对下一时间间隔的先前时间间隔相对应的字段。该时间间隔在这里被称为时间间隔改变(TIC)。如果每个时间间隔的长度是t毫秒,那么根据相对于最近的TIC的确切当前时间,如果具有相同PSV的分组是在最近t到2t毫秒内接收到的,则分组被看作是最近接收到的。具体而言,在刚刚发生了TIC的时刻,在最近t毫秒内接收到的分组被分类为复制的,而就在TIC发生前,在最近2t毫秒内接收到的分组被分类为复制的。现在联系图2来论述支持这种方法的体系结构。
图2是更详细示出DPM库130和DPM控制单元140的框图。在图2中,DPM库200接收PSV 205,并在DPM控制单元210的控制下生成命中信号215。DPM库200在DPM寻址单元220处接收PSV 205。DPM寻址单元220基于PSV 205的值来确定多个DPM(在图2中示为DPM222(1)-(2)(DPM 222(1)-(2)进而包括DPM字段225(1,1)-(2,N)))中的哪些DPM将被访问。DPM寻址单元(DPMAU)220通过向DPM控制单元210提供DPMAU数据信号226,并进而接收DPMAU控制信号227而在DPM控制单元210的控制下提供这种功能。DPM控制单元210还被配置为用于经由DPM数据信号228(1)-(2)从DPM字段225(1,1)-(2,N)中读取信息。以类似方式,DPM控制单元210经由DPM控制信号229(1)-(2)来控制DPM字段225(1,1)-(2,N)。
为了确定是否应该断言(assert)命中信号215,根据PSV 205的值(即指示由PSV 205代表的分组是复制的)来检查DPM字段225(1,1)-(1,N)和DPM字段225(2,1)-(2,N)中的一些适当的DPM字段的值。在一种情形下,这是以如下方式实现的。DPMAU 220将DPMAU数据信号226提供到DPM控制单元210,而DPM控制单元210提供DPMAU控制信号227作为响应。DPMAU控制信号227导致DPM字段225(1,1)-(2,N)中的一些适当的DPM字段的读取线路的断言。这致使DPM字段225(1,1)-(2,N)中选中的DPM字段在它们的输出处提供它们的内容。基于它们的内容(经由DPM数据信号228(1)-(2)确定),DPM控制单元210也对那些尚未被设置的DPM字段进行设置。DPM数据信号228(1)-(2)和DPM控制信号229(1)-(2)还允许DPM控制单元210在交换当前和先前DPM时清除DPM 222(1)-(2)中的一个适当的DPM。
输出被提供到选择单元240,选择单元240在DPM控制单元210的控制下(并基于DPM数据信号228(1)-(2)的值),从DPM字段225(1,1)-(2,N)的输出中选择适当的输出。在执行选择之后,选择单元240对这些输出执行与(AND)操作,并对结果执行或(OR)操作以得出命中信号215。因此,如果DPM 222(1)-(2)中的任一DPM的所有被选比特都指示由PSV 205代表的分组是复制的,则由命中信号215指示这一事实。
应该注意,实际上,PSV 205的比特线可被简单地传递到DPM222(1)-(2),以及在确定命中信号215的值时用于确定DPM 222(1)-(2)中的哪一个(或二者)将使用PSV 205的输入使能信号。在此情况下,DPM寻址单元220仅用于向DPM控制单元210提供DPMAU数据信号226,以被DPM控制单元210用于生成DPM控制信号229(1)-(2)(在此情况下是上述使能信号)。在此情形中,DPM数据信号228(1)-(2)可被DPM控制单元210用于确定DPM字段225(1,1)-(2,N)中的每一个的状态。
还应该注意,在其他实现方式中,DPM字段225(1,1)-(2,N)可以包括允许DPM字段225(1,1)-(2,N)中的每一个执行生成前述输出所需的寻址和比较的电路(因此,功能)。在此情况下,PSV 205将被传递到DPM字段225(1,1)-(2,N),DPM字段225(1,1)-(2,N)随后执行读取功能,并将必各输出提供到选择单元240并设置其自身,以便存储PSV 205的值。
要注意,变量标识符“N”被用在这里描述的附图中的若干实例中,以更简单地指示一系列相关或类似元件中的最后一个元件。这种变量标识符的重复使用并不一定意味着这些元件序列的大小之间的相关性,虽然这种相关性也可能存在。这种变量标识符的使用不要求每个元件序列具有与由同一变量标识符限界的另一序列相同的元件数目。相反,在每个使用实例中,由“N”(或任何其他这样的标识符)标识的变量可以保存与具有相同变量标识符的其他实例相同或不同的值。
此外,关于这里描述的信号,本领域技术人员将意识到,信号可从第一模块直接被发送到第二模块,或者信号可以在模块之间被修改(例如被放大、衰减、延迟、锁存、缓冲、反相、过滤或以其他方式修改)。虽然上述实施例中的信号被刻画为从一个模块发送到下一模块,但是本发明的其他实施例可以包括修改后的信号以取代这种直接发送的信号,只要信号中的信息和/或功能方面在模块间传输即可。在某种程度上,在第二模块处的信号输入可以被概念化为从来自第一模块的第一信号输出中导出的第二信号,这是因为其中涉及电路的物理限制(例如不可避免地存在某种衰减和延迟)。因此,这里所使用的从第一信号中导出的第二信号包括第一信号或对第一信号的任何修改,这种修改或者由于电路限制,或者由于穿过其他不改变第一信号中的信息和/或功能方面的电路元件。
在上述实施例中,不同的组件被包含在不同的其他组件(例如被示为网络设备100的组件的各种元件)内。将会理解,这样示出的体系结构仅仅作为示例,实际上,可以实现很多其他体系结构来实现同样的功能。在简要但仍旧明确的意义上,用于实现同样功能的组件的任何布置从效果上而言都是“相关联”的,以实现所需功能。因此,这里为实现特定功能而组合的任何两个组件都可被看作彼此“相关联”以实现所需功能,这与体系结构或中间组件无关。同样地,如此关联的任何两个组件还可被看作彼此“可操作地相连”或“可操作地相耦合”以实现所需功能。
联系图1和2所述的方法可被扩展到对于每个条目具有多个字段(即多DPM)的体系结构,但是在空间和制造成本上也会有相应的增长。以与上述相似的方式,与最旧时间间隔相关联的DPM在每次TIC时被清除,然后被关联到新的时间间隔,而先前第二旧的DPM现在被指定为最旧DPM。这种扩展可被用于对在复制抑制中被认为是“最近的”时间段的变化提供粒度更精细的控制。但是,不论是实现两个还是更多个DPM,DPM的重新指定都是相对直接的以便以硬件或软件来实现,这是因为这种重新指定只影响在分组接收时设置哪个DPM,以及在每次TIC时清除哪个DPM。
可以使TIC之间的时间间隔是可配置的。但是,该间隔应该被设置为使其大于复制分组到达之间的期望差,但小于传输分组重传时间之间的时间。例如,在比如说遍及美国大陆的WAN链路上,切换时间通常在30-50毫秒的范围内。在这种情形中,在分组接收时间中允许例如大约15毫秒的抖动,并将TIC之间的时间设置为15毫秒。即使利用TCP的“快速重传”,发送者也将需要接收与接收机处的3个顺序错乱的分组相对应的3个复制ACK来导致重传,因此上一跳路由器在看见原始分组之后至少大约60到100毫秒之前,将不会看到重传的分组。因此,它将不会把传输层重传分类为复制的。
在某些实施例(例如某些硬件实现方式)中,通过将DPM库的DPM字段分割到存储器的多个分离的库中,并且向与将被清除的字段(DPM)相对应的库提供重置,来实现每次TIC时的字段清除。在另一实施例中,使用简单的状态机来在给定的TIC时逐步清除每个条目中的最旧字段。在每次TIC时立即清除所有这些最旧DPM字段不是强制性的,但是DPM字段的清除应该发生在从TIC时刻开始的(合理的)有限时间段内。为了确保这种清除及时发生,可以采用额外的DPM。利用这种方法,当额外DPM保存最旧字段时,在TIC时使该DPM脱离与分组接收相关的服务,并且将先前脱离服务的库作为最新库添加回服务中。在“脱离服务”时,状态机具有对该先前最旧的库的排他性访问,以使DPM字段可被清除。这样的实现方式联系图3给出。
图3是根据本发明的多库技术的框图。与图2的DPM库200的情况相同,DPM库300接收PSV 305,并在DPM控制单元310的控制下生成命中信号315。但是,与图2的DPM库200不同的是,DPM 300支持多个复制分组映射(图3中示为DPM 320(1)-(M))。以类似方式,DPM库300在DPM寻址单元(DPMAU)330处接收PSV 305,所述DPMAU 330受DPM控制单元310的控制。DPMAU 330被耦合到DPM 320(1)-(M)中的每一个,并被配置为用于向其中选中的DPM提供PSV 305。在这方面DPM库300不同于DPM库200。尽管DPM库200提供两个复制分组映射(并且可被容易地配置为只支持一个复制分组映射),DPM库300被设计为支持多个(即多于两个)复制分组映射。
在DPM控制单元310的控制下,由选择单元330选择来自DPM320(1)-(M)中的适当DPM的输出。选择单元330提供多种功能。选择单元330选择DPM 320(1)-(M)中的适当DPM作为先前DPM和当前DPM,对来自给定DPM的被选字段执行与操作,以便确定给定的DPM是否指示复制分组。来自每个选中的DPM的这种结果与其他这样的结果执行与操作,以便确定选中的DPM中的任何DPM是否指示复制分组。该与操作的结果被从DPM库300输出,作为命中信号315。
图4是更详细示出复制分组映射(DPM)库400的示例性体系结构的框图。DPM库400以与上述类似的方式接收PSV 405,然后生成命中信号410。在图4所示的体系结构中,DPM库400包括专用的DPM寻址单元(在图4中示为DPM寻址单元415)、多个DPM字段(被示为DPM字段420(1)-(N),它们构成DPM 425)以及选择单元430。在DPM控制单元(未示出)的控制下,DPM库400被设计为用于基于DPM字段420(1)-(N)中的一个或多个的内容经由命中信号410生成对复制分组的指示。将注意到,为了简化起见,DPM库400被示为具有单个DPM(DPM425,它是单列DPM字段)。DPM 425通过重置信号435的断言被清除(例如重置为全0)。
在操作中,DPM库400通过重置信号435的断言被初始化。一旦被初始化(并在接收到分组且随后生成PSV 405之后),DPM寻址单元415接收要在DPM库400中“查找”的PSV。DPM寻址单元415确定DPM字段420(1)-(N)中的哪些DPM字段将被读取(例如预期这些字段中的哪些将是在复制分组匹配的情况下或在Bloom过滤器实现方式的情况下的字段,DPM字段420(1)-(N)中的哪个将被读取)。DPM寻址单元415利用多个读取信号(被示为读取信号440(1)-(N))来访问DPM字段420(1)-(N)。在一种实现方式中,DPM寻址单元415就只是检查PSV 405的值,并针对其值等于1的每个比特位置来断言读取信号440(1)-(N)中的相应信号,从而读取DPM字段420(1)-(N)中的相应DPM字段。或者,在Bloom过滤器实现方式中,读取信号440(1)-(N)中与PSV 405的值相对应的那个读取信号被断言。通过锁存控制信号460,输出值被锁存在输出450(1)-(N)中的相应的输出处。选择单元430接收输出450(1)-(N),并在接收自DPM控制单元(未示出)的选择信号470的控制下选择这些信号中的适当信号。输出450(1)-(N)中的适当输出在以这种方式被识别出的情况下,被选择并被执行与操作,从而使肯定结果指示DPM字段420(1)-(N)中的每个相应DPM字段被同样地设置,从而指示匹配(并因此指示复制分组)。该结果作为命中信号410被提供到分组处理单元。
图5是DPM字段500的示例性体系结构的框图,该DPM字段500是诸如参考前图论述的DPM字段这样的DPM字段的示例。DPM字段500包括DPM存储单元510,其输出被输出锁存器520锁存。DPM存储单元510还接收重置信号530和设置信号540。设置信号540是读取信号550的延迟版本,并且是在锁存控制信号570的控制下,通过利用设置信号延迟锁存器560延迟读取信号550而生成的。一旦DPM存储单元510的内容已被输出锁存器520锁存,该值就作为输出580出现。
在操作中,DPM字段500首先接收重置信号530,以便初始化DPM存储单元510。当DPM存储单元510将被读取时,读取信号550被断言,从而致使DPM存储单元510的内容被提供到输出锁存器520。锁存控制570随后被断言以锁存该输出,并因此将该输出作为DPM字段500的输出580提供。与这些操作合作,读取信号550被提供到设置信号延迟锁存器560,以最终作为设置信号540被提供到DPM存储单元510。但是,为了避免竞争状况(race condition),在锁存控制570被断言以锁存DPM存储单元510的输出之前读取信号550不被断言,随后仅在由设置信号延迟锁存器560产生的延迟之后。从而,设置信号540在该延迟之后被断言(即,在读取信号550的断言、锁存控制信号570的断言(从而DPM存储单元510的内容的锁存)并且由设置信号延迟锁存器560提供延迟之后)。设置信号540的断言设置DPM存储单元510。更简单来讲,DPM字段500被设计为使其可以被清除,随后被读取。但是,不论DPM存储单元510的内容如何,DPM字段500都在被读取之后被设置。这种情况继续,直到下次重置信号被断言。
在一个实施例中,复制分组分类导致分组被丢弃,并且可选地,导致计数器递增。在某些实施例中,计数器由分组分类(例如可能包括传统的ACL分类)方面选择。复制分组分类应防止诸如ACL、策略器(policer)和转发统计量之类的统计量响应于复制而被更新。网络设备可被设计为如果存在关于复制分组可能晚些到达并且不被丢弃的指示,那么在分组在传输前被丢弃(例如被输出策略器)的情况下,使被分类为非复制的分组致使对DPM的更新被抑制。但是,需要注意维护标准分组统计量,包括策略器统计量。现在联系图6给出这种ACL的示例。
图6是示出访问控制列表(ACL)600的字段的框图。ACL 600包括多个访问控制列表条目610(1)-(N)(注意,访问控制列表(ACL)条目还可称为ACE)。ACL条目610(1)-(N)中的每一个包括多个字段,在图6中包含性地示为ACL字段620(1,1)-(N,N)。ACL 600可以被设计为考虑由本发明的分组处理单元生成的结果。例如,ACL字段620(1,L)-(N,L)可被配置为允许分组处理判决基于(至少部分基于)根据本发明的分组处理的结果。
应该注意,就以下意义而言网络层复制分组分类不是最理想的两个不同的更高层分组有可能被以两个TIC的时间段接收到并被映射到同一PSV,从而导致后一分组被(错误地)分类为复制的并(通常)被丢弃。虽然这很不幸,但是它只有在所产生在丢弃速率在网络层中由其他因素引起的丢弃速率中是一项显著增长的情况下才会带来问题。实际上,可以这么说,这样的情况实际上只有在这样的行为会降低网络对于基于不具有复制分组传输的方案的应用的可用性和可靠性的情况下才会带来问题。DPM应该利用相关联的分组到达速率和TIC时间间隔将“误报”数目保持在低于可接受分组丢弃的速率上。例如,假设10Gbps的连接和平均长度为300字节的分组,则在15毫秒间隔中大约可接收63,000个分组。
在一个实施例中,如前所述,网络设备实现Bloom过滤器以替代DPM的每个字段。利用Bloom过滤器的标准分析并假设有良好质量的散列,令误命中容差为f,并且过滤器接收到的分组数目为P,则Bloom过滤器参数如下k=ceil(-log2(f))n=ceil(log2(Pk))其中k是PSV中所需子字段的数目,n是每个子字段中的比特数目,因此n*k是PSV的比特宽度。因此,例如f为10-6,则k约为20,如果P约为128,000,则n约为2。如果该体系结构对于每次分组接收支持k个读-修改-写周期,则这可被实现为一个具有2n比特的比特阵列。但是,这可以通过为每个子字段提供一个单独的比特阵列子库来实现,因此每个DPM库需要20个子库,其中每个子库大约包括2兆比特,或者说总共包括40兆比特。在每个条目有3个字段的情况下,一个DPM库是120兆比特。通过适当地修改以上参数,DPM可被分配给每个端口,或由多个端口共享。例如,由4个10千兆比特端口共享的DPM将允许分组接收速率P变为4倍。提供大量具有这种性质的库(子库)的专用存储器芯片将有助于实现高速的基于硬件的网络设备。
这里论述的复制分组分类方法还会遇到以下情况复制分组到达的足够晚,以至于未被DPM识别为复制分组(换句话说,在原始分组后多于1-2个TIC)。但是,通过合适地设置TIC间隔,这种情况是不太可能发生的。此外,大多数分组流量都是在TCP上承载的,TCP会通过响应于原始分组的确认未出现而重传分组来导致接收到复制分组。因此,该协议(实际上是大多数协议)在此状况下可以很容易地在在终端主机处丢弃复制分组。由于这种传输层保护,偶尔溜过的复制分组不会造成任何损害,只要在接收主机处消耗的带宽和处理量不严重即可。通过要求两条路径之间的正常抖动远低于往返时间(通常情况),TIC间隔可被设置以使这种事件成为小概率事件。
用于复制分组检测的示例性进程图7是一般地示出根据本发明的实施例的进程的流程图。该进程开始于关于需要这种处理的新分组的接收的确定(步骤700)。只要未接收到新分组,进程就循环,以等待这种分组的接收。一旦接收到新分组,就例如利用分组的内容来生成分组概要值(PSV)(步骤710)。一旦生成了分组的PSV,该PSV就被用于执行复制分组映射查找(步骤720)。接下来,确定与该PSV的值相对应的DPM字段是否指示所考虑的分组是复制分组(730)。如果分组不是复制分组,则以通常方式(例如根据该分组的适用ACE)转发分组(步骤740)。但是,如果针对该分组的PSV的DPM字段指示该分组是复制的,则丢弃分组(步骤750)。
如上所述,图7示出了根据本发明实施例的进程的流程图。可以意识到,这里论述的操作可以由直接输入的命令构成,这些命令可以由计算机系统用户或由专用硬件模块执行的步骤来输入,但是优选实施例包括由软件模块执行的步骤。这里提到的步骤的功能可以对应于模块的功能或模块的一部分的功能。
这里所称操作可以是模块或模块的一部分(例如软件、固件或硬件模块)。例如,虽然所述实施例包括软件模块和/或包括手工输入的用户命令,但是各种示例模块可以是专用硬件模块。这里论述的软件模块可以包括脚本、批处理文件或其他可执行文件,或者这些文件的组合和/或部分。软件模块可以包括编码在计算机可读介质上的计算机程序或其子例程。
另外,本领域技术人员将意识到,模块之间的边界仅仅是示例性的,并且备选实施例可以合并模块,或另外分解模块中的功能。例如,这里论述的模块可以被分解成作为多个计算机进程被执行的子模块,并且可选地,在多个计算机上执行。此外,备选实施例可以组合特定模块或子模块的多个实例。此外,本领域技术人员将意识到,在示例性实施例中描述的操作仅用于举例说明。根据本发明,操作可被组合,或者操作的功能可被分配到另外的他操作中。
或者,这些行为可以被包含在实现这种功能的电路结构中,例如复杂指令集计算机(CISC)的微代码、被编程到可编程或可擦除/可编程设备中的固件、现场可编程门阵列(FPGA)的配置、门阵列或全定制专用集成电路(ASIC)的设计等等。
这里所示出并论述的进程的每个块可以由模块(例如软件模块)或模块的一部分或计算机系统用户来执行。因此,上述方法及其操作以及用于其的模块可以在被配置为用于执行该方法的操作的计算机系统上执行,和/或从计算机可读介质执行。该方法可以被包含在用于配置计算机系统以执行所述方法的机器可读和/或计算机可读介质中。因此,软件模块可以被存储在计算机系统存储器内和/或被发送到计算机系统存储器,以将计算机系统配置为执行所述模块的功能。
这样的计算机系统通常根据程序(内部存储的指令的列表,例如特定的应用程序和/或操作系统)处理信息并经由I/O设备产生作为结果的输出信息。计算机进程通常包括执行(运行)程序或程序的一部分、当前程序值和状态信息,以及由操作系统用于管理进程执行的资源。父进程可以产生其他子进程以帮助执行父进程的总功能。由于父进程具体产生子进程来执行父进程的总功能的一部分,因此由子进程(以及孙子进程等)执行的功能有时可被描述为是由父进程执行的。
这样的计算机系统通常包括多个“同时”执行的计算机进程。通常,计算机系统包括单个处理单元,该处理单元能够交替地支持很多活动进程。虽然多个进程看起来可能是同时执行的,但是在任何给定时间点,实际上只有一个进程被单个处理单元所执行。通过快速改变进程执行,计算机系统给出了同时执行进程的外观。计算机系统在各个执行阶段中在多个进程间复用计算机系统的资源的能力被称为多任务处理(multitasking)。按照定义可支持真正的同时处理的具有多个处理单元的系统,被称为多处理系统。当活动的进程在多任务处理和/或多处理环境中被执行时,这样的进程常被称为同时执行。
这里描述的软件模块可以被这样的计算机系统例如从计算机可读介质中接收。计算机可读介质可以被永久地、可移除地或远程地耦合到计算机系统。计算机可读介质例如非排它性地包括任何数目的下述介质磁存储介质,包括磁盘和磁带存储介质;光存储介质,例如紧致盘介质(例如CD-ROM、CD-R等等)和数字视频盘存储介质;非易失性存储器,包括诸如FLASH存储器、EEPROM、EPROM、ROM或专用集成电路之类的基于半导体的存储单元;易失性存储介质,包括寄存器、缓冲器或缓存、主存储器、RAN等等;以及数据传输介质,包括计算机网络、点到点电信和载波传输介质。在基于UNIX的实施例中,软件模块可以包含在文件中,该文件可以是设备、终端、本地或远程文件、套接字、网络连接、信号或其他通信或状态改变的手段。其他新型和各种类型的计算机可读介质可被用于存储和/或传输这里论述的软件模块。
图8是示出在诸如图2所示的体系结构中进行DPM查找(例如图7所示)的基本进程的流程图。该进程开始于确定与PSV相对应的当前字段是否等于零(例如被清除)(步骤800)。很明显,关于与PSV相对应的当前字段是否等于零的确定可被用于代表利用单个复制分组映射执行的分析,或来自两个复制分组映射的结果的或操作(在使用加窗方法的情况下)。在任何情况下,如果此分析指示与PSV相对应的当前字段不等于零,DPM库则指示所考虑的分组是复制分组(步骤810)。但是,如果与PSV相对应的当前字段等于零,DPM库则指示所考虑的分组不是复制分组(步骤820)并设置与给定分组的PSV相对应的当前字段(例如设置为1)(步骤830)。
图9是示出用于操作诸如图3所示DPM库300这样的DPM库的进程的流程图。该处理开始于DPM库和DPM控制单元的初始化(步骤900)。接下来,最初充当先前和当前DPM的DPM被选择(步骤910)。一旦先前和当前DPM被选择,利用这些DPM执行的分组处理就可以开始(步骤920)。该处理继续,直到已被识别为当前DPM的DPM超时(如DPM控制单元所指示)为止(步骤930)。一旦当前DPM超时,下一DPM就变为当前DPM(步骤940),并且“旧的”当前DPM变为先前DPM(步骤945)。
在某些实施例中,当选择了当前和下一DPM的新位置时,已被选为先前DPM的DPM可以被清除。在这样的实现方式中,需要使旧的(先前的)DPM脱离服务以清除该DPM。在此情况下,可以采用用于清除旧DPM的单独的子进程。当当前和下一DPM被选为“新的”先前和当前DPM时(步骤940),“旧的”先前DPM被清除(步骤950)。当旧的(先前的)DPM未被完全清除时(步骤960)该进程进行下去,并继续进行直到旧的(先前的)DPM被完全清除为止(步骤970)。这时,该DPM可用作当前DPM。
图10是示出根据本发明用于以图9建议的方式利用当前和先前DPM处理分组的进程的流程图。该进程开始于确定与当前PSV值相对应的先前DPM是否等于零(步骤1000)。如果与当前PSV值相对应的先前DPM不等于零,DPM库则指示给定分组是复制分组(步骤1010)。
但是,如果与当前PSV值相对应的先前DPM等于零,则确定与当前PSV值相对应的当前DPM是否等于零(步骤1020)。同样,与不等于零的先前DPM相同,如果与当前PSV值相对应的当前DPM不等于零,DPM库则指示给定的分组是复制分组(步骤1010)。但是,如果与当前PSV值相对应的当前DPM也等于零,DPM库则指示给定的分组不是复制分组(步骤1030)。另外,DPM库设置与当前PSV值相对应的当前DPM(例如设置为1),以指示具有与当前PSV值相对应的PSV值的分组已被DPM库识别出(步骤1040)。
这里描述的基本方案可以以多种方式被扩展。例如,复制分类可被限制到分组中通过使用了复制传输的链路到达的被选子集,并被限制到对偶然的复制分组具有复原能力的协议子集(例如TCP)。相反,复制分组分类可被用于确定和响应于发生在未期望出现复制分组的网络设置中的复制分组的发生。例如,复制分组分类可被用于抑制可能由于以下原因引起的复制分组起因于网络设备的故障(例如路由器故障,其中发生故障的路由器重复发送相同的分组)、生成树环、多播环或甚至生成了大量复制分组的恶意攻击。
虽然已经示出并描述了本发明的特定实施例,但是对于本领域技术人员显而易见的是,基于这里的教导,可以在不脱离本发明及其更广阔方面的情况下进行改变和修改,因此,所附权利要求将把落在本发明的真实精神和范围内的所有这样的改变和修改包含在其范围内。此外,虽然已经参考这些特定实施例具体示出和描述了本发明,但是本领域技术人员将会理解,在不脱离本发明的精神或范围的情况下,可以对其在形式和细节上执行上述和其他改变。
权利要求
1.一种网络设备,包括复制分组映射(DPM)。
2.如权利要求1所述的网络设备,其中所述DPM包括多个DPM字段。
3.如权利要求2所述的网络设备,其中所述DPM被配置为接收分组概要值(PSV)。
4.如权利要求3所述的网络设备,其中所述DPM被实现为Bloom过滤器。
5.如权利要求3所述的网络设备,其中所述多个DPM字段之一对应于所述PSV。
6.如权利要求3所述的网络设备,其中所述多个DPM字段中的每一个对应于所述PSV中的一个比特。
7.如权利要求3所述的网络设备,其中所述多个DPM字段中的每一个被配置为将所述PSV的相应比特的值与存储在所述多个DPM字段中的每一个中的值相比较,以生成输出,并且所述输出中的每一个的值指示所述PSV的所述相应比特的所述值是否与存储在所述多个DPM字段中的所述每一个的所述值相匹配。
8.如权利要求3所述的网络设备,其中所述多个DPM字段中的每一个被配置为被用所述PSV寻址,并且存储在所述多个DPM字段中与所述PSV的值相对应的那个DPM字段中的值指示所述分组是否是所述复制分组。
9.如权利要求1所述的网络设备,还包括分组概要值(PSV)生成器,其中所述复制分组映射(DPM)被耦合到所述PSV生成器。
10.如权利要求9所述的网络设备,其中所述PSV生成器被配置为基于由所述PSV生成器接收到的分组来生成PSV,并且所述DPM被配置为接收所述PSV。
11.如权利要求9所述的网络设备,其中所述DPM包括多个DPM字段。
12.如权利要求11所述的网络设备,其中所述多个DPM字段之一对应于所述PSV。
13.如权利要求11所述的网络设备,其中所述多个DPM字段中的每一个对应于所述PSV中的一个比特。
14.如权利要求12所述的网络设备,其中所述DPM被实现为Bloom过滤器。
15.如权利要求1所述的网络设备,还包括DPM库,其中所述DPM库包括所述DPM。
16.如权利要求15所述的网络设备,其中所述DPM库还包括多个DPM,其中所述多个DPM包括所述DPM。
17.如权利要求16所述的网络设备,其中所述多个DPM中的每一个被实现为Bloom过滤器。
18.如权利要求16所述的网络设备,其中所述多个DPM中的第一DPM被指定为当前DPM,并且所述多个DPM中的第二DPM被指定为先前DPM。
19.如权利要求16所述的网络设备,其中所述DPM库还包括耦合到所述多个DPM的DPM寻址单元;耦合到所述多个DPM的选择单元;以及DPM控制单元,该DPM控制单元被耦合以控制所述DPM寻址单元、所述多个DPM和所述选择单元。
20.如权利要求19所述的网络设备,其中所述DPM控制单元被配置为选择所述多个DPM中的第一DPM作为当前DPM,并选择所述多个DPM中的第二DPM作为先前DPM。
21.如权利要求20所述的网络设备,其中所述DPM控制单元被配置为致使所述DPM寻址单元向所述当前DPM和所述先前DPM提供所述PSV;并且所述DPM控制单元被配置为致使所述选择单元选择所述当前DPM和所述先前DPM。
22.如权利要求20所述的网络设备,其中所述DPM控制单元被配置为选择所述先前DPM作为不活动的DPM,并清除所述不活动的DPM。
23.如权利要求15所述的网络设备,还包括分组概要值(PSV)生成器,其中所述复制分组映射(DPM)被耦合到所述PSV生成器。
24.如权利要求23所述的网络设备,其中所述DPM库还包括耦合在所述PSV生成器和所述多个DPM之间的DPM寻址单元;以及耦合到所述多个DPM的选择单元。
25.如权利要求24所述的网络设备,其中所述DPM库还包括DPM控制单元,该DPM控制单元被耦合以控制所述DPM寻址单元、所述多个DPM和所述选择单元。
26.如权利要求25所述的网络设备,其中所述选择单元被配置为生成命中信号,并且所述命中信号指示所述PSV的比特值与存储在所述多个DPM之一中的相应位置上的比特值相匹配。
27.如权利要求9所述的网络设备,其中所述PSV生成器被配置为基于由所述PSV生成器接收到的分组来生成PSV,并且所述DPM被配置为接收所述PSV。
28.如权利要求27所述的网络设备,其中所述DPM还被配置为指示所述PSV与存储在所述DPM中的PSV相匹配。
29.如权利要求28所述的网络设备,其中所述PSV生成器被配置为利用循环冗余校验计算来生成所述PSV。
30.如权利要求9所述的网络设备,还包括分组处理单元,所述分组处理单元包括所述PSV生成器。
31.如权利要求30所述的网络设备,还包括DPM库,其中所述DPM库包括所述DPM,所述DPM库被配置为生成命中信号,并且所述DPM库被耦合以接收来自所述PSV生成器的所述PSV,并向所述分组处理单元提供所述命中信号。
32.如权利要求31所述的网络设备,其中所述命中信号指示所述PSV的值与存储在所述多个DPM之一中的值相匹配。
33.如权利要求31所述的网络设备,其中所述命中信号指示所述PSV的比特值与存储在所述多个DPM之一中的相应位置上的比特值相匹配。
34.如权利要求31所述的网络设备,其中所述分组处理单元被配置为利用所述命中信号来处理所述分组。
35.如权利要求31所述的网络设备,其中所述处理包括致使所述分组处理单元基于所述命中信号而丢弃所述分组。
36.一种用于确定分组是否是复制分组的方法,包括确定复制分组映射(DPM)的字段是否指示所述分组是所述复制分组,其中所述确定是利用与所述分组相对应的分组概要值(PSV)来进行的。
37.如权利要求36所述的方法,还包括如果所述确定确定所述分组是所述复制分组,则指示所述分组是所述复制分组。
38.如权利要求37所述的方法,还包括如果所述分组是所述复制分组,则丢弃所述分组。
39.如权利要求37所述的方法,其中所述确定包括
39所述PSV到所述DPM。
40.如权利要求39所述的方法,其中所述确定是通过将所述PSV的比特与存储在所述DPM的所述字段中的比特相比较来进行的,并且如果所述PSV的所述比特与存储在所述DPM的所述字段中的所述比特相匹配,则执行所述指示。
41.如权利要求40所述的方法,还包括将存储在所述DPM的所述字段中的所述比特设置为所述PSV的所述比特的值。
42.如权利要求37所述的方法,其中所述确定包括基于所述PSV来选择所述DPM的所述字段。
43.如权利要求42所述的方法,其中所述确定是通过基于所述PSV的值选择所述DPM的所述字段来进行的,并且如果存储在所述DPM的所述字段中的值指示所述分组是所述复制分组,则执行所述指示。
44.如权利要求43所述的方法,还包括如果所述分组不是所述复制分组,则设置存储在所述DPM的所述字段中的所述值。
45.如权利要求44所述的方法,还包括通过基于所述分组中的信息生成循环冗余校验值来生成所述PSV。
46.如权利要求37所述的方法,其中所述DPM是多个DPM之一。
47.如权利要求46所述的方法,还包括选择所述多个DPM中的第一DPM作为先前DPM;以及选择所述多个DPM中的第二DPM作为当前DPM。
48.如权利要求47所述的方法,还包括利用所述PSV来确定所述先前DPM的字段是否指示所述分组是所述复制分组;以及利用所述PSV来确定所述当前DPM的字段是否指示所述分组是所述复制分组。
49.如权利要求48所述的方法,还包括如果所述先前DPM的所述字段指示所述分组不是所述复制分组,并且所述当前DPM的所述字段指示所述分组不是所述复制分组,则指示所述分组不是所述复制分组,否则指示所述分组是所述复制分组。
50.如权利要求47所述的方法,还包括选择所述先前DPM作为不活动的DPM;选择所述当前DPM作为所述先前DPM;并且选择所述多个DPM中的另一DPM作为所述当前DPM。
51.如权利要求50所述的方法,还包括在所述不活动的DPM被选择为所述当前DPM之前清除所述不活动的DPM。
52.如权利要求50所述的方法,其中所述选择所述先前DPM作为不活动的DPM,选择所述当前DPM作为所述先前DPM以及选择所述多个DPM中的另一DPM作为所述当前DPM的步骤是周期性地执行的。
53.如权利要求52所述的方法,其中所述周期性地执行的周期是这样的所述周期大于复制分组到达之间的期望差异,并且所述周期小于分组重传之间的时间。
54.如权利要求52所述的方法,其中所述周期性地执行的周期被配置为允许所述不活动的DPM在所述不活动的DPM被选择为所述当前DPM之前被清除。
55.一种网络设备,包括处理器;耦合到所述处理器的计算机可读介质;以及被编码在所述计算机可读介质中的计算机代码,该计算机代码用于确定分组是否是复制分组,并且被配置为致使所述处理器确定复制分组映射(DPM)的字段是否指示所述分组是所述复制分组,其中所述计算机代码被配置为致使所述处理器利用与所述分组相对应的分组概要值(PSV)进行确定。
56.如权利要求55所述的网络设备,其中所述计算机代码还被配置为致使所述处理器如果被配置为致使所述处理器进行确定的所述计算机代码确定所述分组是所述复制分组,则指示所述分组是所述复制分组。
57.如权利要求56所述的网络设备,其中所述计算机代码还被配置为致使所述处理器将所述PSV与所述DPM相比较。
58.如权利要求56所述的网络设备,其中所述计算机代码还被配置为致使所述处理器基于所述PSV选择所述DPM的所述字段。
59.如权利要求58所述的网络设备,其中所述计算机代码还被配置为致使所述处理器通过被配置为基于所述分组中的信息生成循环冗余校验值来生成所述PSV。
60.如权利要求55所述的网络设备,其中所述DPM是多个DPM之一。
61.如权利要求60所述的网络设备,其中所述计算机代码还被配置为致使所述处理器选择所述多个DPM中的第一DPM作为先前DPM;以及选择所述多个DPM中的第二DPM作为当前DPM。
62.如权利要求61所述的网络设备,其中所述计算机代码还被配置为致使所述处理器利用所述PSV来确定所述先前DPM的字段是否指示所述分组是所述复制分组;以及利用所述PSV来确定所述当前DPM的字段是否指示所述分组是所述复制分组。
63.如权利要求62所述的网络设备,其中所述计算机代码还被配置为致使所述处理器如果所述先前DPM的所述字段指示所述分组不是所述复制分组,并且所述当前DPM的所述字段指示所述分组不是所述复制分组,则指示所述分组不是所述复制分组,否则指示所述分组是所述复制分组。
64.如权利要求61所述的网络设备,其中所述计算机代码还被配置为致使所述处理器选择所述先前DPM作为不活动的DPM;选择所述当前DPM作为所述先前DPM;并且选择所述多个DPM中的另一DPM作为所述当前DPM。
65.如权利要求64所述的网络设备,其中所述还被配置为致使所述处理器选择所述先前DPM作为所述不活动的DPM的计算机代码,所述还被配置为致使所述处理器选择所述当前DPM作为所述先前DPM的计算机代码,以及所述还被配置为致使所述处理器选择所述多个DPM中的另一DPM作为所述当前DPM的计算机代码还被配置为周期性地被执行。
66.如权利要求65所述的网络设备,其中所述周期性地执行的周期是这样的所述周期大于复制分组到达之间的期望差异,并且所述周期小于分组重传之间的时间。
67.如权利要求65所述的网络设备,其中所述周期性地执行的周期被配置为允许所述不活动的DPM在所述不活动的DPM被选择为所述当前DPM之前被清除。
68.一种用于确定分组是否是复制分组的计算机程序产品,包括可在计算机系统上执行的第一指令集,该第一指令集被配置为确定复制分组映射(DPM)的字段是否指示所述分组是所述复制分组,其中所述第一指令集利用与所述分组相对应的分组概要值(PSV)来进行所述确定;以及计算机可读介质,其中所述计算机程序产品被编码在所述计算机可读介质中。
69.如权利要求68所述的计算机程序产品,还包括可在所述计算机系统上执行的第二指令集,该第二指令集被配置为在所述被配置为致使所述处理器进行确定的计算机代码确定所述分组是所述复制分组的情况下,指示所述分组是所述复制分组。
70.如权利要求69所述的计算机程序产品,还包括可在所述计算机系统上执行的第三指令集,该第三指令集被配置为将所述PSV与所述DPM相比较。
71.如权利要求69所述的计算机程序产品,还包括可在所述计算机系统上执行的第三指令集,该第三指令集被配置为基于所述PSV来选择所述DPM的所述字段。
72.如权利要求71所述的计算机程序产品,还包括可在所述计算机系统上执行的第四指令集,该第四指令集被配置为通过被配置为基于所述分组中的信息生成循环冗余校验值来生成所述PSV。
73.如权利要求68所述的计算机程序产品,其中所述DPM是多个DPM之一。
74.如权利要求73所述的计算机程序产品,还包括可在所述计算机系统上执行的第二指令集,该第二指令集被配置为选择所述多个DPM中的第一DPM作为先前DPM;以及可在所述计算机系统上执行的第三指令集,该第三指令集被配置为选择所述多个DPM中的第二DPM作为当前DPM。
75.如权利要求74所述的计算机程序产品,还包括可在所述计算机系统上执行的第四指令集,该第四指令集被配置为利用所述PSV来确定所述先前DPM的字段是否指示所述分组是所述复制分组;以及可在所述计算机系统上执行的第五指令集,该第五指令集被配置为利用所述PSV来确定所述当前DPM的字段是否指示所述分组是所述复制分组。
76.如权利要求75所述的计算机程序产品,还包括可在所述计算机系统上执行的第六指令集,该第六指令集被配置为在所述先前DPM的所述字段指示所述分组不是所述复制分组,并且所述当前DPM的所述字段指示所述分组不是所述复制分组的情况下,指示所述分组不是所述复制分组,以及可在所述计算机系统上执行的第七指令集,该第七指令集被配置为在除以上情况外的其他情况下,指示所述分组是所述复制分组。
77.如权利要求74所述的计算机程序产品,还包括可在所述计算机系统上执行的第四指令集,该第四指令集被配置为选择所述先前DPM作为不活动的DPM;可在所述计算机系统上执行的第五指令集,该第五指令集被配置为选择所述当前DPM作为所述先前DPM;以及可在所述计算机系统上执行的第六指令集,该第六指令集被配置为选择所述多个DPM中的另一DPM作为所述当前DPM。
78.如权利要求77所述的计算机程序产品,其中所述第四、第五和第六指令集被周期性地执行。
79.如权利要求68所述的计算机程序产品,其中所述周期性地执行的周期是这样的所述周期大于复制分组到达之间的期望差异,并且所述周期小于分组重传之间的时间。
80.如权利要求68所述的计算机程序产品,其中所述周期性地执行的周期被配置为允许所述不活动的DPM在所述不活动的DPM被选择为所述当前DPM之前被清除。
81.一种用于确定分组是否是复制分组的装置方法,包括用于确定复制分组映射(DPM)的字段是否指示所述分组是所述复制分组的装置,其中所述用于确定的装置使用与所述分组相对应的分组概要值(PSV)。
82.如权利要求81所述的装置,还包括用于指示所述分组是所述复制分组的装置,所述用于指示的装置被配置为在所述用于确定的装置确定所述分组是所述复制分组的情况下指示所述分组是所述复制分组。
83.如权利要求82所述的装置,其中所述确定包括用于将所述PSV与所述DPM相比较的装置。
84.如权利要求82所述的装置,其中所述确定包括用于基于所述PSV来选择所述DPM的所述字段的装置。
85.如权利要求84所述的装置,还包括用于生成所述PSV的装置,该装置包括用于基于所述分组中的信息来生成循环冗余校验值的装置。
86.如权利要求82所述的装置,其中所述DPM是多个DPM之一。
87.如权利要求86所述的装置,还包括用于选择所述多个DPM中的第一DPM作为先前DPM的装置;以及用于选择所述多个DPM中的第二DPM作为当前DPM的装置。
88.如权利要求87所述的装置,还包括用于利用所述PSV来确定所述先前DPM的字段是否指示所述分组是所述复制分组的装置;以及用于利用所述PSV来确定所述当前DPM的字段是否指示所述分组是所述复制分组的装置。
89.如权利要求88所述的装置,还包括用于在所述先前DPM的所述字段指示所述分组不是所述复制分组,并且所述当前DPM的所述字段指示所述分组不是所述复制分组的情况下,指示所述分组不是所述复制分组的装置,以及用于在除以上情况外的其他情况下,指示所述分组是所述复制分组的装置。
90.如权利要求87所述的装置,还包括用于选择所述先前DPM作为不活动的DPM的装置;用于选择所述当前DPM作为所述先前DPM的装置;以及用于选择所述多个DPM中的另一DPM作为所述当前DPM的装置。
91.如权利要求90所述的装置,还包括用于在所述不活动的DPM被选择为所述当前DPM之前清除所述不活动的DPM的装置。
92.如权利要求90所述的装置,其中所述用于选择所述先前DPM作为所述不活动的DPM的装置,所述用于选择所述当前DPM作为所述先前DPM的装置,以及所述用于选择所述多个DPM中的另一DPM作为所述当前DPM的装置周期性地执行它们各自的选择。
全文摘要
公开了用于确定分组是否是复制分组的方法和装置。该方法包括确定复制分组映射(DPM)的字段是否指示分组是复制分组(步骤730)。该确定是利用与分组相对应的分组概要值(PSV)来进行的(步骤710和720)。所述装置(例如网络设备)包括复制分组映射(DPM),该DPM可被用于进行上述确定。
文档编号H04L12/56GK1826776SQ200480021360
公开日2006年8月30日 申请日期2004年7月23日 优先权日2003年7月24日
发明者戴维·R·彻里腾 申请人:思科技术公司