掌桥专利:专业的专利平台
掌桥专利
首页

减少多播复制序列中的偏差的系统及方法

文献发布时间:2023-06-19 18:32:25


减少多播复制序列中的偏差的系统及方法

技术领域

本公开一般来说涉及用于在计算机网络环境中分发消息的系统及方法,且更具体来说,本公开涉及用于减少网络中的多播消息封包分发的偏差的方法。

背景技术

交换机是网络硬件组件,其基于每一数据封包内所含的地址信息而控制消息或数据封包的分发。数据封包可属于需要交换机来将封包复制到一或多个预订目的地的多播群组。恰当构造的交换机可在一个入口端口上接收封包且以为特定网络的最大速度能力的线速度(wire speed)或线路速度(line speed)将封包复制到适当出口端口。

近年来,随着越来越多的行业依赖于高性能计算机及网络,可从网络速度及封包接收时间的微小差异中获取显著优势。尽管以线路速度操作的交换机能够以纳秒级的每个时钟循环将封包复制到出口端口一次,但对于必须复制到多个出口端口及/或目的地的多播封包,将封包复制到第一目的地与将相同的封包复制到最后一个目的地之间的延迟在即使只有几纳秒就足以建立竞争优势时可为重要的。具体来说,由于交换通常是对于多播群组中的每一封包重复的按目的地的顺序次序进行,因此交换序列开头处的目的地将相对于交换序列的结束处的目的地始终受益于封包与封包间的持续偏差,这造成交换序列中的某些端口或位置比其它端口或位置对终端用户来说更合意的情况。在许多情形中,终端用户将测试网络并对网络装置施加压力,以便确定优选端口并获得优于其它端口的优势。例如向算法交易者提供实时市场数据的金融机构等的多播发送者可能需要多播交换系统及方法,所述多播交换系统及方法减少目的地之间的封包交换偏差,借此除去终端用户测试网络设备或请求交换序列中的特定端口的任何动机,且确保所述机构为每一客户提供一致的服务。因此,需要一种高效的方法及构件来减少交换机上的目的地之间的多播封包复制中的持续偏差,以确保交换机不会持续地为一个目的地提供相对于另一个目的地的实质优势。

发明内容

在一个方面中,本申请案提供一种减少多播复制中的偏差的方法,所述方法包括:在网络装置处接收封包;依据所述封包确定多播群组;获得对应于所述多播群组的至少两个或更多个目的地;针对所述至少两个或更多个目的地复制所述封包;及以经随机化序列将所述经复制封包转发到所述至少两个或更多个目的地。

在另一方面中,本申请案提供一种用于转发封包的网络装置,其包括:入口端口,其经配置以接收至少第一数据封包;转发器,其经配置以:依据所述第一数据封包确定多播群组;获得对应于所述多播群组的至少两个或更多个目的地;复制所述第一数据封包;且通过至少一个出口端口以经随机化序列将所述经复制封包转发到所述两个或更多个目的地,所述出口端口基于所述两个或更多个目的地。

在另一方面中,本申请案提供一种减少多播复制中的偏差的方法,所述方法包括:在网络装置处接收封包;依据所述封包确定多播群组;获得对应于所述多播群组的端口位图,其中所述端口位图是所述网络装置的属于所述多播群组的端口的列表;根据所述端口位图随机转发所述封包;获得对应于所述多播群组的包括下一跳列表的链接列表,其中从对应于所述多播群组的多个链接列表副本随机选择所述链接列表,且其中将所述多个链接列表副本中的每一者中的所述下一跳列表随机排序;根据所述所选择链接列表转发所述封包。

附图说明

通过参考联合附图做出的详细说明将更明了且更佳地理解本公开的各种目标、方面、特征及优点,遍及附图,相似参考字符识别对应元件。在图式中,相似参考编号通常指示相同、功能上类似及/或结构上类似的元件。

图1是描绘网络内的网络装置的一般框图;

图2是图解说明根据示范性实施例的一种减少层2(L2)多播复制中的偏差的方法的流程图;

图3描绘根据减少L2多播复制中的偏差的方法的一个实例的封包处置;

图4是图解说明根据示范性实施例减少L2多播复制中的偏差的第二方法的流程图;

图5A描绘根据示范性实施例的多播端口位图;

图5B描绘供在图4中所描绘的方法中使用的示范性多播复制群组;

图6是描绘减少L2多播复制中的偏差的第二方法的一个实例的流程图;

图7描绘根据示范性实施例的根据减少L2多播复制中的偏差的第二方法的封包处置;

图8描绘根据示范性实施例的根据减少L2多播复制中的偏差的第三方法的封包处置;

图9描绘根据示范性实施例的根据减少L2多播复制中的偏差的第四方法的封包处置;

图10是图解说明根据示范性实施例的一种减少L2或层3(L3)多播复制中的偏差的方法的流程图;

图11是描绘图10中所展示的减少L3多播复制中的偏差的方法的一个实例的流程图;

图12描绘根据图10中所展示的方法的封包处置;

图13是图解说明根据示范性实施例减少L3多播复制中的偏差的第二方法的流程图;

图14是根据示范性实施例的网络交换机的框图;

附图及以下说明中陈述所述方法及系统的各种实施例的细节。

具体实施方式

一些实施例涉及一种减少多播复制中的偏差的方法。所述方法包含:在网络装置处接收封包,依据所述封包确定多播群组,获得对应于所述多播群组的至少两个或更多个目的地,针对所述至少两个或更多个目的地复制所述封包,及以经随机化序列将所述经复制封包转发到所述至少两个或更多个目的地。

在一些实施例中,所述两个目的地是所述网络装置的一或多个出口端口。另外,所述获得至少两个或更多个目的地的步骤可包含以下步骤:将所述多播群组加索引到查找表中以获得对应于所述多播群组的端口位图,其中所述端口位图是所述网络装置的属于所述多播群组的端口的列表。在一些实施例中,所述以经随机化序列将所述经复制封包转发到所述至少两个或更多个目的地的步骤可包含:在所述端口位图中随机选择初始目的地,其中所述端口位图是循环式位向量;及在所述初始目的地处开始根据所述端口位图转发所述经复制封包,直到所述经复制封包已被转发到所述端口位图中的每一端口。

在一些实施例中,所述以经随机化序列将所述经复制封包转发到所述至少两个或更多个目的地的步骤可包含以下步骤:将所述端口位图划分成一或多个复制群组,其中所述一或多个复制群组含有所述端口位图的端口的子集;随机选择第一复制群组;及根据所述第一复制群组转发所述经复制封包。另外,所述方法可进一步包含以下步骤:随机选择第二复制群组,及根据所述第二复制群组转发所述经复制封包。

在其它实施例中,所述方法可进一步包含以下步骤:在所述第一复制群组中随机选择初始目的地,其中所述第一复制群组是循环式位向量;及在所述初始目的地处开始根据所述第一复制群组转发所述经复制封包。在一些实施例中,所述方法进一步包含以下步骤:将所述端口位图中的所述端口列表随机地重新排序,其中将所述端口位图划分成所述一或多个复制群组包括将所述经重新排序端口位图划分成所述一或多个复制群组。

在一些实施例中,所述获得所述至少两个或更多个目的地的步骤包括将所述多播群组编号加索引到IP路由表中以获得对应于所述多播群组的链接列表,且其中以经随机化序列将所述经复制封包转发到所述至少两个或更多个目的地包括根据所述链接列表转发所述经复制封包。在一些实施例中,从对应于所述多播群组的多个链接列表副本随机选择所述链接列表,其中从对应于所述多播群组的包括下一跳列表的第一链接列表产生所述多个链接列表副本,且其中在所述多个链接列表副本中的每一者中将所述下一跳列表随机地重新排序。在一些实施例中,所述方法进一步包含:从所述多个链接列表副本周期性地选择链接列表副本,及将所述所选择链接列表副本中的所述下一跳列表随机地重新排序。

在一些实施例中,获得所述至少两个或更多个目的地包含:将多播群组编号加索引到查找表中以获得对应于所述多播群组编号的端口位图,其中所述端口位图是所述网络装置的属于所述多播群组的端口的列表。所述方法还包含:将所述多播群组编号加索引到IP路由表中以获得对应于所述多播群组编号的目的地的链接列表,其中从对应于所述多播群组编号的多个链接列表副本随机选择所述链接列表,其中从对应于所述多播群组编号的包括下一跳列表的第一链接列表产生所述多个链接列表副本,且其中在所述多个链接列表副本中的每一者中将所述下一跳列表随机地重新排序,且其中以经随机化序列将所述经复制封包转发到所述至少两个或更多个目的地包含:将所述端口位图划分成一或多个复制群组,其中所述一或多个复制群组含有所述端口位图的端口的子集;随机选择第一复制群组;根据所述第一复制群组转发所述经复制封包;及根据所述链接列表转发所述经复制封包。

一些实施例涉及一种用于转发封包的网络装置。所述装置可包含:入口端口,其经配置以接收至少第一数据封包;及转发器,其经配置以依据所述第一数据封包确定多播群组,获得对应于所述多播群组的至少两个或更多个目的地,复制所述第一数据封包,且通过至少一个出口端口以经随机化序列将所述经复制封包转发到所述两个或更多个目的地,所述出口端口基于所述两个或更多个目的地。所述至少两个或更多个目的地可为对应于从查找表获得的所述多播群组的端口位图,其中所述端口位图是所述网络装置的属于所述多播群组的端口的列表。在一些实施例中,所述转发器经配置以:通过将所述端口位图划分成一或多个复制群组而以经随机化序列将所述经复制封包转发到所述两个或更多个目的地,其中所述一或多个复制群组含有所述端口位图的端口的子集;随机选择第一复制群组;且根据所述第一复制群组转发所述经复制封包。

在一些实施例中,所述转发器经配置以将所述多播群组编号加索引到IP路由表中以获得所述至少两个或更多个目的地,其中所述至少两个或更多个目的地包括对应于所述多播群组的目的地的链接列表,且所述转发器进一步经配置以根据所述链接列表转发所述经复制封包。在一些实施例中,所述转发器进一步经配置以从所述多个链接列表副本周期性地选择链接列表且将所述所选择链接列表副本中的所述下一跳列表随机地重新排序。

在其它实施例中,公开一种减少多播复制中的偏差的方法。所述方法包含:在网络装置处接收封包;依据所述封包确定多播群组;获得对应于所述多播群组的端口位图,其中所述端口位图是所述网络装置的属于所述多播群组的端口的列表。所述方法进一步包含:根据所述端口位图随机转发所述第一封包;获得对应于所述多播群组的包括下一跳列表的链接列表,其中从对应于所述多播群组的多个链接列表副本随机选择所述链接列表,且其中将所述多个链接列表副本中的每一者中的所述下一跳列表随机排序;及根据所述所选择链接列表转发所述第一封包。

在一些实施例中,所述方法由集成电路执行。在一些实施例中,根据所述端口位图转发所述封包包含:在所述端口位图中随机选择初始目的地,其中所述端口位图是循环式位向量;及在所述初始目的地处开始根据所述端口位图转发所述经复制封包,直到封包已被转发到所述端口位图中的每一端口。

网络装置

图1是根据本发明的网络中的网络装置的配置的一个实例。所述网络装置可为基于硬件的装置,例如用于根据数据封包本身内所含的地址信息使所述封包在网络中移动的网络交换机。在一些实施例中,所述网络装置可另外及/或替代地执行路由器的功能且经配置以使封包在网络中或跨越网络移动,或者一般来说经配置以使数据在网络中或跨越网络移动的任何其它装置。另外,尽管本公开可能有时提及“交换机”及“交换”,但出于本发明的目的,术语“交换机”及“交换”可包含交换及路由两者。图1中的网络装置展示为网络交换机10。网络交换机10功能性地连接到中央处理单元(CPU)12及其它外部装置14。外部装置14可为其它外部处理器、外部存储器、其它网络装置,例如服务器、路由器或计算机及/或用以扩展交换能力的其它网络交换机。CPU 12可用于基于用于封包处理的所要规则或协议对网络交换机10进行编程。通过端口24从网络装置16、18、20及22接收的数据可独立于CPU 12由网络交换机10基于经编程指令来处理。经处理数据然后基于经编程封包处理规则跨越端口24被重新分发到适当网络装置。图1中所展示的网络交换机可为集成式模块化的单芯片解决方案。在一些实施例中,网络交换机10包含根据封包处理规则构造的专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者能够处理及交换封包的任何其它类型及形式的专用硅逻辑或处理电路系统。另外及/或替代地,网络交换机10可为电路板上的多个个别组件,或通过软件实施于一通用装置或若干通用装置上。

仍参考图1,在转发多播封包时,网络交换机10可从网络装置16、18、20及22接收多播封包且处理所述封包。虽然使用字词“封包”,但应理解,所公开过程可与其它类型的数据一起使用,所述其它类型的数据包含单元、帧、数据报、桥接协议数据单位封包、封包数据等。封包处理可包含读取封包、修改封包及将封包分类、改变封包转发行为、针对封包移除信息及/或附加信息、将封包镜射到另一端口、将封包存储于缓冲器中、将一系列封包中的封包重新排序、将封包发送到服务队列,或改变封包的类型。举例来说,网络交换机10可复制封包且选择端口2作为出口端口,此后所述端口可自网络交换机10转发封包。出口端口及最终网络装置目的地由封包中所含的数据确定。在层2(L2)转发中,在网络内将封包交换到网络交换机的一或多个出口端口。在L3转发中,可复制封包且在单个出口端口上或跨越多个出口端口将封包发送到多个目的地。在一些实施例中,最终封包目的地是连续网络装置,且封包在到达最终目的地之前从网络交换机10通过一系列网络装置被转发。

封包含有用于复制封包且将封包转发到网络上的适当目的地的信息。封包最初在由网络交换机10指出的源端口上接收,且然后封包可被复制及转发到属于由封包中所含的信息指示的多播群组的所述同一端口或者一或多个其它端口。可对照转发表(L2)或IP路由表(L3)将多播群组加索引以获得预订多播群组的目的地的列表。在多播中,将加标签为属于多播群组的封包发送到已向网络交换机10指示其属于多播群组的预订目的地。可在不使网络泛洪的情况下复制单个封包并将其转发到多个目的地,使得仅单个封包传输到每一目的地。

层2复制

可基于封包中所含的目的地MAC地址来交换、桥接或转发封包。如果封包指示封包的VLAN ID与源头的VLAN ID相同,那么根据封包的层2值转发封包。基于MAC地址信息的网络内交换称作层2(L2)转发,因为其是在数据链路层(OSI层2)上操作。在L2转发中,网络交换机10可使用多播群组编号且参考查找表(即,转发表)来获得针对多播群组加索引的目的地的列表。在一些实施例中,目的地列表可为网络交换机10中预订所述多播群组的所有端口的二进制端口位图向量。仍在其它实施例中,所述列表可为网络交换机10中的所有端口的二进制端口位图向量,其中每一向量位置的值指示端口是启用还是停用。端口位图向量可为任何长度,例如64位长度。下文包含加索引的多播群组编号(MCGN)及端口位图向量的实例查找表:

表1

在表1中所展示的端口位图向量中,向量中的每一值表示一端口;经启用端口可由“1”标记且经停用端口可由“0”标记。在一些实施例中,端口位图向量仅列示为多播复制群组的成员的那些端口。然后,封包被复制到向量中的每一端口。端口位图向量还可为以各种其它格式表示的值。在一些实施例中,目的地列表可包含预订多播群组的装置的MAC地址的列表,且网络交换机10可然后经由适当端口将封包复制到MAC地址。网络交换机10可参考MAC地址表以找出对应于目的地MAC地址的适当出口端口。MAC地址表是由网络交换机10使用所接收封包的源地址构建。如果未找出目的地的MAC地址,那么网络交换机10将把封包泛洪运送到除源端口之外的所有端口以确保其到达适当目的地。目的地然后做出回复,且其MAC地址被添加到所述表格以用于未来转发。如果目的地的MAC地址是已知的,那么网络交换机10通过依据MAC地址表确定的正确端口将封包发送到适当目的地MAC地址。所述表格还可通过经设计以发现链路层地址的各种通信协议(例如因特网群组管理协议(IGMP)窥探)来构建。所述相同信息可用于开发根据多播群组编号加索引的端口位图向量。

图2是图解说明根据本发明的一个实施例用于减少L2多播复制中的偏差的过程200的流程图。过程200可由一或多个网络装置执行。举例来说,过程200可由网络交换机10及/或其内所含的硬件(例如ASIC芯片)执行。在步骤210中,接收数据封包,且在步骤220中,处理数据封包以检索多播群组编号。在步骤230中,获得对应于多播群组编号的L2目的地列表。举例来说,目的地列表可为端口位图(例如位向量)或MAC地址的列表,如上文个别地描述。L2目的地列表可为循环式的,使得其不具有末尾且列表中的每一目的地连接到另两个目的地以形成循环,在所述循环中末尾值往回指向第一值。举例来说,L2目的地列表可为n个端口的循环式位向量。第n端口指向第一端口,使得位向量是循环式的,且无论开始端口如何,按顺序遍历循环式位向量,每一端口均将被经过。多播群组编号可在查找表(例如表1)中加索引且用于获得对应目的地列表(在表1中,端口位图向量)。

在步骤240中,所述过程包含在L2目的地列表内随机选择初始目的地。举例来说,网络交换机可使用随机数产生器来在端口位图向量中选择一端口作为用于转发封包的开始点。与初始端口位图向量相比,这导致端口或目的地的经随机化序列。虽然使用术语随机,但出于本发明的目的,随机包含随机及伪随机两者。举例来说,随机选择的初始目的地可为伪随机地选择的初始目的地,随机数产生器可为伪随机数产生器,且经随机化序列可为经伪随机化序列。步骤240中所展示的过程使用随机选择的初始目的地来将复制过程随机化,从而确保从一个封包到下一封包,一端口不会比另一端口受偏爱而向复制过程中引入偏差。在步骤250中,在初始目的地处开始,根据循环式L2目的地列表复制封包。如上文所描述,循环式列表确保列表中的每一目的地将接收封包,无论开始点如何。根据图2中所展示的示范性实施例,复制沿着循环式L2目的地列表从初始目的地开始按顺序进行到列表的末尾,且然后移动回到列表的开头直到封包被复制到每一目的地。

图3是根据示范性实施例用于多个封包的图2的过程200中的封包处置的实例。来自过程200的目的地列表展示为包含256个端口(端口00到端口255)的列表的端口位图向量310。虽然展示为包含256个端口,但端口位图向量可根据多少个端口是多播群组的成员而为任何长度及/或大小。在图3中所展示的实例中,随机选择端口00作为开始点320,且将封包1复制到向量中的每一端口(在开始点320处开始且在端口255或结束点330处结束)。针对封包2在端口02处选择随机(即,随机或伪随机)开始点340,且同样地将封包2复制到端口位图向量310中的每一端口。端口位图向量是循环式的,使得在端口255处,因封包2尚未复制到端口位图向量中的每一端口,复制过程返回到端口00且继续复制封包2直到其被复制到每一目的地端口,即直到端口01处的结束点350。同样地,针对封包3复制,随机选择的开始点360是在端口112处,且从端口112到端口255然后返回到端口00且直到端口111处的结束点370,复制封包3,使得其被复制到向量中的所有端口。在另一实施例中,端口位图可不包含网络交换机10的所有端口且替代地指示哪些端口预订了多播群组及哪些端口未预订多播群组,且封包将仅被复制到预订端口。如图3中所展示,当接收多播群组中的下一封包时,重复过程200,且在L2目的地列表中随机选择另一开始点。所述开始点可为或可不为与多播群组中的最后封包相同的开始点,且通过引入随机或伪随机开始点,过程200使L2多播复制中的偏差最小化,使得无法合理地预测给定数据封包的受偏爱端口。

举例来说,可花费一个时钟循环来将封包复制到每一端口。在1ns的时钟循环下,端口00将比端口255早256ns接收封包1。如果复制序列总是在端口00处开始,端口00将相对于端口255具有持续偏差,使得其将总是早256ns接收数据。返回参考图2及3,在步骤240中随机选择开始点会分散封包与封包间偏差,使得无法合理地预测哪一端口将首先接收封包,从而有效地消除偏差。

图4是图解说明根据本发明的另一实施例用于减少L2多播复制中的偏差的过程400的流程图。过程400可由一或多个网络装置执行。举例来说,过程400可由网络交换机10中的硬件执行。过程400展示为包含步骤410,选择多播群组编号且检索对应L2目的地列表。实例目的地列表在图5A中展示为端口位图向量。虽然端口位图向量510是以顺序次序展示,但在一些实施例中,并不包含网络交换机的全部256个端口。在一些实施例中,如果并非所有端口均预订多播群组,那么端口位图向量510可包含较少端口。返回参考图4,步骤420包含将L2目的地列表拆分成n个复制群组。在一些实施例中,网络交换机10内部的硬件(例如ASIC)可执行所述拆分。可将目的地列表拆分成任何数目个群组。每一群组可含有目的地列表中所包含的目的地的独特子集,使得所述群组一起包含L2目的地列表中的所有目的地。所述群组可为相等或不同大小。举例来说,现在参考图5B,每一复制群组520、522及524含有256端口位图向量的8个端口。继续所述实例,将存在总共32个复制以确保包含每一目的地。

返回参考图4,在步骤430中,展示过程400,接收属于所选择多播群组编号的封包。在一些实施例中,步骤430可在步骤410之前发生,使得从所接收封包导出在步骤410中选择的多播群组编号。在步骤440中,展示过程400,随机选择对应于封包的多播群组编号的n个复制群组中的一者,且在步骤450处将封包复制到所述复制群组中所列示的目的地。在步骤460处,如果封包尚未被复制到对应于多播群组编号的每一复制群组,那么过程400返回到步骤440且从复制群组的剩余池随机选择另一复制群组。在多播复制中,每一目的地接收封包的一个副本,因此一次选择每一群组。如果封包已被复制到每一复制群组,那么封包的复制过程在步骤470处完成。

图6是过程400的实例的流程图,展示为过程600。过程600可由一或多个网络装置执行。举例来说,过程600可由网络交换机10中的硬件执行。过程600中的步骤610包含接收传入数据封包。步骤610可相同及/或类似于430。不同于过程400,过程600展示为包含首先接收多播封包。在一些实施例中,过程600类似于过程400且直到拆分过程之后才接收封包。

在步骤620处,处理传入数据封包且确定其多播群组编号。在查找表(例如表1)中将多播群组编号加索引以检索目的地列表,所述目的地列表在步骤630中描述为256位端口位图。多播群组编号可用于根据用于L2交换的任何其它网络协议获得目的地列表。一旦检索到端口位图,步骤640便包含将端口位图拆分成各自由8个端口构成的32个复制群组。虽然展示为8的32个群组,但端口位图可被拆分成任何数目及大小的复制群组。复制群组可在硬件中拆分及存储,使得封包交换仍可以线速度实现。如上文所论述,在一些实施例中,给定多播群组的复制群组可在接收属于多播群组的多播封包之前拆分。在此实施例中,仅需要创建复制群组一次,且然后其可用于多播群组中的多于一个封包。

使用伪随机数产生器,步骤650包含选择对应于封包多播群组编号的32个复制群组中的一者。以类似于过程200的方式,随机或伪随机地选择复制群组的次序会在L2交换序列中引入随机性且消除从一个端口到另一端口的偏差。一旦选择了复制群组,便在步骤660处将封包复制到复制群组中的所有经启用端口。在一些实施例中,将封包复制到复制群组中的所有端口。在步骤670处,过程600检查封包是否已被复制到每一复制群组一次。如果答案为否,那么过程600返回到步骤650且再次利用伪随机数产生器选择剩余群组。如果答案为是,那么过程600结束封包的复制序列。

图7是根据本发明的过程600中的封包交换的实例。封包1展示为复制到展示为层2复制群组2的复制群组710(在端口08处开始且在端口15处结束),然后在720处进行到展示为层2复制群组13的复制群组730,且在端口104处开始复制并进行到端口111。以上继续直到封包1已被复制到每一复制群组。

图7还展示用于同一多播群组的封包2的封包处理。根据过程600,使用伪随机数产生器随机选择复制群组。在图7中所展示的实例中,封包2首先被复制到展示为层2复制群组31的复制群组740(在端口240处开始直到端口247),且然后在750处随机选择另一复制群组,且封包2被复制于展示为层2复制群组21的复制群组760的端口160到端口167上。所述过程继续直到封包2已被复制到每一复制群组。

在图7中,封包是在复制群组中按顺序复制到每一端口。因此,随机选择群组仅会使群组间偏差最小化,且群组内偏差仍可存在。举例来说,往回参考图7中的复制群组710,端口08将总是在端口15之前接收封包,无论群组是何时被选择。在一些实施例中,除使群组的大小及数目交替外及/或替代使群组的大小及数目交替,还可通过周期性地更新群组而消除群组内偏差。现在参考图8,展示封包交换过程600的实例,其具有用于消除群组内偏差的额外随机化步骤。在图8中,通过随机选择群组内的开始位置而使群组内的封包复制及/或转发过程变化。使用伪随机或随机数产生器,在展示为层2复制群组2的复制群组802内选择随机初始目的地。在随机选择的初始目的地804处开始,将封包1复制到端口10到端口15,然后端口08及端口09,结束点806。如同过程200中的目的地列表,复制群组802中的8个端口的端口位图向量是循环式的,使得无论初始开始点如何,每一目的地均接收封包。在808处使用伪随机数产生器,选择对应于封包1的多播群组的另一复制群组,展示为复制群组810。也使用伪随机数产生器选择随机初始目的地,展示为初始目的地812。然后以与针对复制群组802复制封包1相同的方式复制所述封包。过程继续直到封包1已被复制到每一复制群组。然后由网络交换机处理封包2。如同封包1,选择对应于多播群组编号的随机复制群组,展示为复制群组816。在所述群组内随机选择开始点818且沿着循环式向量复制封包2直到其被复制到每一目的地。随机选择另一群组,展示为复制群组822,且再次在随机开始点824处开始,沿着循环式向量复制封包2。所述过程继续直到封包2已被复制到每一复制群组。针对封包3,所述过程是相同的。

图9是根据本发明的另一实施例的封包交换过程600的另一实例,其具有额外随机化步骤。在图9中,使用随机/伪随机数产生器来在将目的地列表拆分成复制群组之前将目的地列表的序列随机地重新排序。每一复制群组因此含有从端口位图对目的地的随机选择。过程600然后如上文参考图6所描述而继续,除了每一群组现在含有从初始目的地列表对目的地的随机分配。

层3复制

在层3(L3)多播交换中,还可跨越网络基于封包中所含的目的地IP地址而交换、桥接、转发及路由封包。网络装置10可在硬件中执行L3多播交换(即,交换及/或路由)。举例来说,网络装置10可使用ASIC来以线路速度执行L3交换。网络交换机10处理封包且检索多播群组编号,多播群组编号用于获得对应于多播群组编号的目的地列表。目的地列表可为链接列表,包含例如一系列下一跳或VLAN及端口位图向量的组合等。

L3多播使用多播路由协议来建立链接列表。网络交换机10可使用各种多播路由协议,包含但不限于因特网群组管理协议(IGMP)、协议无关多播稀疏模式(PIM-SM)、协议无关多播密集模式(PIM-DM)等。在L3多播中,可视需要跨越网络使单个封包路由。例如,如果单个出口端口含有多个目的地,那么可在必要时将封包复制多次以发送到与出口端口相关联的虚拟局域网(VLAN)中的所有域,以及复制到所有其它目的地,包含预订多播群组的VLAN。

图10是图解说明根据本发明的一个实施例用于减少L3多播复制中的偏差的过程1000的流程图。过程1000可由一或多个网络装置执行。举例来说,过程1000可由网络交换机10及/或其内所含的硬件(例如ASIC芯片)执行。除过程200、400及/或600外及/或替代所述过程,还可执行过程1000以便减少多播封包的L2及L3交换两者中的偏差。如同过程200、400及600,过程1000根本上是关于在多播复制定序中引入随机性以消除从一个目的地到另一目的地的偏差。

过程1000展示为包含在步骤1010中选择多播群组编号。在一些实施例中,通过检验传入多播封包而确定多播群组编号。在其它实施例中,针对过程1000,网络交换机周期性地选择多播群组编号。步骤1020包含获得对应于多播群组的L3目的地列表。L3目的地列表可为链接列表或复制群组,例如,包含一系列下一跳的链接列表。在一些实施例中,链接列表另外及/或替代地含有表示目的地的一系列{VLAN,端口位图}向量。链接列表可通过在查找表中将多播群组编号加索引以获得复制群组来获得。复制群组可获得含有一系列下一跳的复制列表(即,链接列表)及/或端口位图向量。查找表可为通过路由协议(例如因特网群组管理协议(IGMP)、协议无关多播稀疏模式(PIM-SM)、协议无关多播密集模式(PIM-DM)等)形成的L3 IP路由表。

过程1000展示为包含步骤1030,所述步骤包含创建复制列表(即,链接列表)的m个副本,其中每一副本含有目的地的随机次序。使用随机数产生器,网络交换机中所含的软件可将目的地列表的每一副本中的目的地序列随机地重新排序。虽然使用术语随机重新排序,但如上文所论述,出于本公开的目的,随机包含随机及伪随机,使得目的地的随机重新排序的序列可为目的地的随机或仅伪随机地重新排序的序列。可创建任何数目个复制列表副本,例如2n个,其中n是可通过软件配置的。每一复制列表副本将具有相同目的地,但目的地的次序将被随机化。

虽然上文关于L3多播复制描述过程1000,但所述过程也可应用于L2复制。在L2复制中,每一目的地属于同一网络,因此{VLAN,端口}链接列表包含仅跨越网络交换机的端口的各种目的地。为了成功L2复制,步骤1030可因此包含将{VLAN,端口}链接列表中的端口的次序随机化以每多播群组获得链接列表的m个副本,每一副本具有列表中的端口的不同序列但具有对应于L2域的相同VLAN值。

当在步骤1040中接收到多播群组中的多播封包时,在步骤1050中随机选择对应于所述多播群组的2n个复制列表副本中的一者。步骤1060包含将封包复制到复制列表中的所有目的地。步骤1040到1060可在网络交换机中的硬件中发生,使得复制可以线速度发生。所述过程将针对多播群组中的每一个别封包重复,因此封包将以不同次序复制到下一跳。这减少L3复制序列中的短期偏差。

图11是图解说明根据特定实施例的过程1100的流程图。过程1100可由一或多个网络装置执行。举例来说,过程1100可由网络交换机10及/或其内所含的硬件(例如ASIC芯片)执行。过程1100可类似于及/或相同于过程1000。步骤1110包含接收传入数据封包,且步骤1120包含确定数据封包所属的多播群组。在一些实施例中,稍后执行步骤1110,且从多播群组列表中选择多播群组,举例来说,如过程1000中所展示。在确定多播群组之后,步骤1130包含获得通过多播复制群组编号加索引的多播复制列表。使用复制列表,步骤1140包含产生复制列表的64个副本,每一副本具有下一跳的随机排序的序列。虽然展示为64个副本,但可创建任何数目个复制列表副本。如上文所论述,复制列表可包含属于多播群组编号的下一跳及/或端口位图。使用伪随机数产生器,步骤1150包含随机选择对应于多播群组编号的64个复制列表副本中的一者,且步骤1060包含将封包复制到复制列表中的每一下一跳。

图12是根据示范性实施例在拷贝复制列表之后用于过程1000及1100的封包处理的实例。封包1展示为根据展示为层3复制列表32的复制列表1210中的目的地的次序来复制。复制列表1210展示为包含256个下一跳,但应理解,复制列表可为任何长度,只要每一列表副本具有与其它副本相同的目的地即可。如所展示,复制列表1210中的下一跳的次序是随机的。针对多播群组中的每一封包,随机选择另一复制列表。举例来说,封包2展示为根据展示为层3复制列表7的复制列表1220来复制,且封包3展示为根据展示为层3复制列表18的复制列表1230来复制。由于同一多播群组中的不同封包是根据对应于复制群组的随机选择的复制列表复制,L3复制中的短期偏差被减少。

在一些实施例中,可采取其它步骤来减少L3封包交换中的长期偏差。长期偏差是因复制列表副本是静态的事实导致。举例来说,在创建复制列表副本且将每一副本中的目的地的次序随机地重新排序之后,下一跳221可能总是在下一跳12之前。由于列表是静态的,无论选择哪一列表,下一跳221将与下一跳12相比具有偏差。根据示范性实施例,现在参考图13,展示除过程1100及1200之外还可执行更新过程1300以减少L3复制中的长期偏差。过程1300可由一或多个网络装置执行。举例来说,过程1300可由网络交换机10及/或其内所含的硬件(例如ASIC芯片)执行。在过程1300中,在步骤1310中由网络交换机选择多播群组编号,且在步骤1320中检索对应于多播群组的n个早先存在的复制列表副本中的一者。在一些实施例中,使用伪随机数产生器随机选择复制列表。在一些实施例中,根据调度表选择复制列表。举例来说,网络交换机内的软件可经配置以按顺序选择复制列表副本以确保每一副本被周期性地更新。步骤1330包含将复制列表中的目的地序列随机地重新排序。在一些实施例中,步骤1330与过程1100的步骤1140的类似之处在于,副本中的目的地的次序是随机排序的。可在网络交换机内周期性地起始过程1300以消除长期偏差。在一些实施例中,通过多播封包到达所选择多播群组而触发过程1300。在一些实施例中,根据过程1300随机更新多播群组。

网络交换机

图14是根据本发明的图1中所展示的网络交换机10的详细框图。网络交换机10展示为包含CPU管理输入控制器(CMIC)30。在一些实施例中,CMIC 30包含4个PCIe端口。CMIC30允许网络交换机10连接到CPU 12,所述CPU可用于存取网络交换机10及将处理器32编程。处理器32可用于对包含L2/L3处理36的网络交换机10进行编程及控制。处理器32是对从存储器提取的指令做出响应且处理所述指令的任何逻辑电路系统。在一些实施例中,处理器32是专用集成电路(ASIC)。处理器32实现其各种内部模块与端口24之间的线速度或线路速度通信。处理器32还可为现场可编程门阵列(FPGA)或任何其它类型及形式的专用硅逻辑或处理电路系统。

L2/L3处理36通过入口管线34及出口管线38连接到端口24。取决于应用,端口24可为快速以太网端口、千兆位以太网端口、管理端口、直接附加铜(DAC)端口,及/或PCIe端口或其它共用端口。举例来说,端口24可包含256千兆位以太网端口。应注意,在必要时,可提供任何数目个端口,且可提供用于外部装置14的额外互连件。端口24可在网络交换机10处从网络装置16、18、20及/或22接收封包且将封包传递到处理器32。封包可由入口管线34传递到L2/L3处理36以供复制及转发。入口管线34可包含用于封包处理的解析器及其它块(tile)。封包传递到L2/L3处理36,所述L2/L3处理将经处理及/或经复制封包传递到出口管线38以最终通过端口24将封包转发到适当网络装置16、18、20及22。本发明可适应各种类型的数据,且“封包”可包含封包、单元、帧、数据报、桥接协议数据单位封包、封包数据等。

图14图解说明L2/L3处理36包含随机数产生器40及转发表42。随机数产生器40可为可产生随机或伪随机数的任何类型的随机数产生器,包含非确定性随机数产生器及确定性或伪随机数产生器。随机数产生器40可以软件实施或作为硬件组件被包含。转发表42可包含按多播群组编号加索引的L2目的地列表,例如用于L2交换的L2 MAC地址表。L2交换在网络内转发封包。转发表42还可包含用于L3交换或路由的L3 IP路由表,L3交换或路由在网络间转发封包且可包含链接列表。上文详细地解释了使用随机数产生器40及转发表42进行封包转发及处理。转发表40可含有目的地列表及/或复制列表,例如用于L2交换的端口位图向量及用于L3交换的链接列表。

网络交换机10还可包含其它未展示的组件。举例来说,网络交换机10可包含以太网端口接口控制器、千兆位端口接口控制器、因特网端口接口控制器、缓冲器及存储器管理单元。

示范性实施例的配置

如各种示范性实施例中所展示的系统及方法的构造及布置仅是说明性的。尽管本公开中已详细地描述了仅几个实施例,但许多修改是可能的(例如,端口或目的地数量、数据类型、随机化或伪随机化方法、参数值、布置等的变化)。举例来说,元件的位置可颠倒或以其它方式改变,元件之间的连接可为直接或间接使得可存在连接于其间的一或多个中间元件,且离散元件的性质或数目或者位置可更改或改变。因此,所有此些修改打算包含在本公开的范围内。任何过程或方法步骤的次序或序列可根据替代实施例而改变或重新定序。可在不背离本公开的范围的情况下在示范性实施例的设计、操作条件及布置方面做出其它替代、修改、改变及省略。举例来说,本公开的实施例可由单个装置及/或系统实施或者由单独装置及/或系统的组合实施。

本公开考虑用于实现各种操作的方法、系统及任何机器可读媒体上的程序产品。本公开的实施例可使用现有计算机处理器或通过为此目的或另一目的而并入的适当系统的专用计算机处理器或通过硬接线系统来实施。本公开的范围内的实施例包含程序产品,所述程序产品包括用于载运或上面存储有机器可执行指令或数据结构的机器可读媒体。此类机器可读媒体可为可由通用或专用计算机或者具有处理器的其它机器存取的任何可用媒体。通过实例的方式,此类机器可读媒体可包括RAM、ROM、EPROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置或者可用来载运或存储呈机器可执行指令或数据结构形式的所要程序代码且可由通用或专用计算机(即,ASIC或FPGA)或者具有处理器的任何其它机器存取的任何其它媒体。以上各项的组合也包含于机器可读媒体的范围内。举例来说,机器可执行指令包含致使通用计算机、专用计算机或专用处理机器执行特定功能或功能群组的指令及数据。

尽管各图展示方法步骤的特定次序,但步骤的次序可不同于所描绘的次序。而且,可同时或部分同时执行两个或更多个步骤。此变化将取决于所选择的软件及硬件系统以及设计者选择。所有此些变化均在本公开的范围内。同样地,可利用具有基于规则的逻辑及其它逻辑的标准编程技术实现软件实施方案以实现各种连接步骤、处理步骤、比较步骤及决策步骤。

相关技术
  • 用于抑制HSV-1复制和/或靶标序列表达的CRISPR/Cas9系统、方法、试剂盒及其应用
  • 用于抑制HSV-1复制和/或靶标序列表达的CRISPR/Cas9系统、方法、试剂盒及其应用
  • 用于远程多播复制系统中的多播复制的方法和设备
  • 在无线通信系统中减少与多播会话相关联的消息接发中的流引用的数目
技术分类

06120115607025