CN105229977A - 对共享多目标组扩展的共同节点的单链表进行压缩 - Google Patents
对共享多目标组扩展的共同节点的单链表进行压缩 Download PDFInfo
- Publication number
- CN105229977A CN105229977A CN201480027850.9A CN201480027850A CN105229977A CN 105229977 A CN105229977 A CN 105229977A CN 201480027850 A CN201480027850 A CN 201480027850A CN 105229977 A CN105229977 A CN 105229977A
- Authority
- CN
- China
- Prior art keywords
- database
- node address
- group
- linked list
- multiple target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
存储了包括第一数据库和第二数据库的多目标扩展表,该第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集,该第二数据库存储表示跨越一个或多个节点的多目标组专用弧的数据。单链表被遍历以确定如何复制针对特定的多目标组的分组。分组基于在第一数据库中存储的与当前节点地址相关联的接口数据被复制。当在第二数据库中发现匹配时,根据第二数据库来确定下一节点地址。当在第二数据库中未发现匹配时,根据访问第一数据库来确定下一节点地址。当下一节点地址被确定为无效或空时,终止遍历单链表。
Description
技术领域
本公开涉及对用于网络应用的分组进行复制。
背景技术
单链表是计算机科学中的常见数据结构。单链表包括一起表示序列的一组节点。每个节点包括对下一节点的参考和数据域。
联网中的一个示例应用是多目标扩展表(MET)中的多目标组扩展。例如,为了将分组分发到属于互联网协议(IP)多播组的一列输出接口,节点的链表被遍历并且一份分组被从由列表中的每个节点表示的接口发送出。
附图说明
图1是根据本文中所呈现的技术,示出具有共同节点的若干单链表,并且为其创建压缩的单链表的简图。
图2是示出用于图1中所示的示例的压缩的单链表的简图。
图3是根据本文中所呈现的技术,用于创建压缩的单链表的多目标扩展表的简图。
图4是根据本文中所呈现的技术,示出被执行以生成压缩的单链表的操作的示例的流程图。
图5是示例性网络设备的框图,在该网络设备中本文中所呈现的技术可以被用于对分组进行复制。
图6-8示出了本文中所呈现的链表压缩技术的应用的示例。
具体实施方式
概述
本文中所呈现的是用于当对多目标组进行扩展时重复复制分组的技术。包括第一数据库和第二数据库的多目标扩展表被存储。第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集。每个节点表示物理或虚拟的网络设备的接口,并且第一数据库中的每个条目包括与单链表中的当前节点地址和下一节点的地址相关联的接口数据。第二数据库存储表示绕过第一数据库中的一个或多个节点的多目标组专用弧的数据。单链表被遍历以确定如何通过,使用当前节点地址来访问第一数据库来确定确定下一节点地址以及确定与当前节点地址相关联的接口数据,并且使用基于针对单链表中的多个节点的子集的组标识符的关键字搜索第二数据库来确定第二数据库中是否存在与关键字的匹配,来复制针对特定的多目标组的分组关键字关键字。基于第一数据库中存储的与当前节点地址相关联的接口数据来复制分组。当在第二数据库中发现匹配时,针对第一数据库中的节点的下一节点地址根据与第二数据库中的关键字相匹配的条目被确定。当在第二数据库中未发现匹配时,针对第一数据库中的节点的下一节点地址根据访问第一数据库被确定。
示例性实施例
本文中呈现了实现理论上最佳压缩具有共同节点的一组单链表的技术。这些技术的用途包括在硬件和软件实现二者中的多目标组扩展和包括链表的其它网络应用。
首先参考图1,示出了包括单链表10的若干单链表的简图,该单链表10是用于多个多目标组的节点的超集。因为如下文中显而易见的,因为列表10包括用于多个多目标组的所有节点,所以其还被称为广播单链表。多目标组中的每个包括列表10中的节点的子集。特别地,并且仅是通过示例,具有由单链表20定义的多目标组1,由单链表30定义的多目标组2和由单链表40定义的多目标组3。如本领域技术人员所知的,单链表包括一起表示序列的一组节点。每个节点包括对下一节点的参考和数据域。
超集单链表10包括一系列标号为1、2、3、4和5的节点,其中,节点1转到节点2,节点2转到节点3,节点3转到节点4,节点4转到节点5。列表10结束于空或者无效节点12。列表10是所有节点按序列被遍历的默认情况。用于广播单链表10的开始指针(SP)是节点1。图1中所示的单链表中的每个节点可以表示用于物理或虚拟的网络设备的接口的相关联数据和/或接口。例如,每个节点可以表示接口、虚拟信道或虚拟专用网络(VPN)网关(例如,通道)。
叠加的单链表10是所有单独的链表(例如,列表20-40)的超集。相邻的节点由可应用于所有链表的被称为单跳弧(single-hoparcs)的弧链接。绕过或跳过一个或多个节点的弧是链表专用的,被称为多跳弧(multi-hoparcs)。由于广播链表是超集,因此广播链表不具有多跳弧。
多目标组1列表20包括节点1、节点3、节点4和节点5的序列。组1的SP是节点1。列表20跳过节点2,以使得节点1直接转到节点3。即,组1中存在越过节点2的多跳弧。列表20结束于空或者无效节点22。
多目标组2列表30包括节点2、节点3和节点4的序列。节点1和5不是组2的一部分,列表30的SP是节点2。列表30结束于空或者无效节点32。组2中存在越过节点5的多跳弧。
多目标组3列表40包括节点1、节点2、节点3和节点5的序列。列表40结束于空或者无效节点42。因此,组3中存在越过节点4的多跳弧。
根据所呈现的技术,如果链表共享共同的节点,则多个链表被集成到单个压缩的(叠加的)链表中。如果链表中的每个节点表示多目标扩展表(MET)中的条目,则MET与在本文中所描述的压缩单链表一起被更有效地使用。
用于图1中所示的示例的压缩或叠加的单链表的示例在图2中以标号50被示出。叠加链表50包括与图1中所示的SP相同的用于各种组的SP。通过叠加链表50的默认路径在图2中被示为“全部(ALL)”,并且该默认路径是节点1到节点2到节点3到节点4到节点5到空节点12。然而,在链表50中存在组专用的多跳弧来对针对特定组的被跳过的一个或多个节点负责。例如,图2示出了用于组1的从节点1到节点3的组专用弧60,如组1的链表所需要的跳过节点2。相似地,存在用于组2的从节点4到空节点12的组专用弧70,如组2所需要的跳过节点5。还存在用于组3的从节点3到节点5的组专用弧90,如组3所需的跳过节点4。叠加的单链表50具有8个条目,但可以被用于负责图1中所示的所有单链表10-40,而使用传统MET技术将需要16个条目。这比传统的实现方式改善了50%。大量的存储空间被节省,并且当针对许多更长的链表进行伸缩(scale)时,很明显的是以该方式对共享共同节点的多个链表进行压缩是更有效的。
现在参考图3以用于对在图1和图2中所示的示例的MET进行描述。MET(一般以标号100示出)包括被称为主节点信息库(PRIB)的第一数据库110和被称为幻像节点信息库(PHAB)的第二数据库120。PRIB110包括超集(广播)单链表10中的所有节点,和用于通过单链表10中的节点的直接序列推进的默认情况。PRIB110具有针对当前节点地址的列112、针对物理或虚拟的网络设备的相应接口标识符(和/或与接口相关联的数据)的列114和针对下一节点地址的列116。例如,如果当前节点地址是被分配给接口ID1的B1,则下一节点地址是B2(其被分配给接口ID2),等等。然而,一般地,PRIB110中的每个条目可以被直接地索引,因此PRIB110在每个条目中仅包括在给定当前节点地址的单链表中的下一节点地址,但是又,为了确定如何对分组进行复制,接口数据与PRIB110中的节点相关联。
PHAB120存储指定移动通过PRIB110以便生成不同的多目标组的方法的数据。更具体地,PHAB120是指定多目标组专用的多跳弧的数据库。PHAB120中的每个条目表示跳过或绕过超集链表中的一个或多个节点的组专用多跳弧。PHAB120不像查找数据库而更像搜索数据库,然而PRIB110是存储器查找数据库。
PHAB120具有用于搜索关键字和相应数据的域。搜索关键字可以是基于针对超集单链表中的多个节点的子集的组标识符。然而,在一个示例中,存在两个搜索关键字域:一个用于在122所示的组ID,另一个用于在124所示的当前节点地址。数据域以标号126示出,并且包括用于(在PRIB中的)下一节点地址的数据。由于PHAB120只存储针对多目标组专用弧的数据,因此关键字映射到的数据是多跳弧将转到的节点的地址。
当针对多目标组进行复制时,下面的一般程序如下。(使用包括组标识符和当前节点地址的关键字)搜索PHAB120。如果在PHAB120中发现了命中(hit),则来自PHAB120中的数据域126的结果被用于下一节点地址。如果在PHAB120中发生了错过(miss)(在PHAB120中不存在针对搜索关键字的条目),则从PRIB110获得下一节点地址。
此外,PRIB110指定用于默认情况的链表,并且PHAB120指定用于多目标组的例外,该多目标组是PRIB110中所指定的超集的子集。在给定节点处没有多跳弧的情况下,链表默认到(在PRIB110中定义的)主链表。换句话说,主链表是所有链表的超集。以该方式,因为主节点共享相同的单跳弧,所以主节点默认地可以被所有链表共享。因此,可以避免重复共同的主节点。
使用这些技术,所需要的MET条目的数目是叠加单链表中的多跳弧的总数目的函数,如图1中所示。该结果对于共享共同节点的链表的任意组是理论上最好的,因此使得这些技术是高度可伸缩的解决方案。
下面是示例。考虑了多目标组2。组2的SP是对应于接口2的节点地址B2,并且分组被复制到接口2。其被设置为当前节点地址。使用B2作为当前节点地址,PRIB110指示当当前节点地址是B2时,下一节点地址是B3。现在,使用包括组2和当前节点地址B2的搜索关键字来搜索PHAB120。因为在PHAB120中不存在针对该搜索关键字的匹配条目,所以PRIB110获胜,意味着下一节点地址由PRIB110中所存储的(其为节点B3)确定。
对于下一循环,下一节点地址B3被设置为当前节点地址。分组被复制到对应于该循环处的当前节点地址(即,B3)的接口3。使用当前节点地址B3搜索PRIB110,并确定了下一节点地址是B4。使用包括组2和当前节点地址B3的搜索关键字来搜索PHAB120。因为在PHAB120中不存在针对该搜索关键字的匹配条目,所以下一节点地址基于PRIB110,PRIB110指示了下一节点地址是B4。
此外,对于下一循环,下一节点地址B4被设置成当前节点地址。使用作为当前节点地址的B4来在PRIB110中进行查找,并确定了下一节点地址是B5。分组被复制到对应于在该循环的当前节点地址B4的接口4。用搜索关键字组2和当前节点地址B4来搜索PHAB120。此次,在PHAB120中存在针对该搜索关键字的匹配/命中。因此,不管PRIB110指示了什么,PHAB120而不是PRIB110确定了下一节点地址应该是什么。PHAB120指示了对于组2和当前节点地址B4,下一节点地址是空节点,即链表被终止。因此,与图1中所示的链表30一致,跳过超集链表中的节点B5。以该方式遍历针对多目标组2的节点的链表,并且在每个循环,分组被复制到由被遍历的节点表示的接口,即,首先是对应于节点2的接口,然后是对应于节点3的接口,最后是对应于节点4的接口。因此,链表被“走过”以在多个接口上连续地复制分组。
现在参考图4,其描述了以上结合图1-3所描述的操作的流程图。为了确定如何复制针对多目标组的分组,这些操作将在物理或虚拟的网络设备中或者代表物理或虚拟的网络设备而被执行。在200,链表开始指针(SP)被设置成针对特定的多目标组的当前节点地址。在210,使用当前节点地址来访问第一数据库(PRIB)以确定与当前节点地址相关联的接口数据以便复制分组,并且获取下一节点地址。此时,分组可以被复制到对应于当前节点地址的接口。实际上,在访问PRIB(210)之后和下一循环(操作260)之前的任意时间,分组可以基于在PRIB中存储的针对当前节点地址的接口数据被复制。此外,可能有在PRIB查找之后和在分组复制之前被执行的针对各种其它功能的逻辑,例如负载均衡。
在220,使用搜索关键字(组ID和当前节点地址)来搜索第二数据库(PHAB)以确定是否存在匹配/命中。操作210和220可以被串行或并行地执行。并行地执行该操作是更有时间效率的。在230,如果PHAB的搜索返回匹配,则来自第二数据库(PHAB)的下一节点地址被选择和使用,否则使用从第一数据库(PRIB)获得的下一节点地址。在240,确定下一节点地址是否对应于空或者无效的节点,如果是,则在250,链表被终止/完成。在260,下一节点地址被设置成当前节点地址以用于下一循环。再次执行操作210、220、230、240和260直到到达空/无效节点,在该点处链表被完成。分组基于在PRIB中存储的针对在操作210-250的每个循环期间被遍历的每个节点的接口数据被复制。
因此,在一个或多个中,本文提供了用于当扩展多目标组时循环复制分组的方法,该方法包括:存储包括第一数据库和第二数据库的多目标扩展表,该第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集,每个节点表示物理或虚拟的网络设备的接口,并且第一数据库中的每个条目包括与当前节点地址相关联的接口数据和单链表中的下一节点的地址,该第二数据库存储表示绕过第一数据库中的一个或多个节点的多目标组专用弧的数据;以及遍历单链表以确定如何通过以下方式复制针对特定的多目标组的分组:使用当前节点地址来访问第一数据库以确定下一节点地址和确定与当前节点地址相关联的接口数据;基于在第一数据库中存储的与当前节点地址相关联的接口数据来复制分组;基于针对单链表中的多个节点的子集的组标识符使用关键字来搜索第二数据库,以确定在第二数据库中是否存在与关键字的匹配;并且当在第二数据库中发现匹配时,根据在第二数据库中的与关键字相匹配的条目来确定第一数据库中的节点的下一节点地址,并且当在第二数据库中未发现匹配时,根据访问第一数据库所获得的来确定第一数据库中的节点的下一节点地址。
现在转向图5,示出了网络设备的示例的框图,本文中所呈现的技术可以被用在该网络设备中或者用于该网络设备。如果网络设备是虚拟网络设备,则图5中所示的组件将以软件的形式在计算设备中运行的软件中被实现/模拟。网络设备300包括多个端口/接口310(1)-310(N)、一个或多个联网专用集成电路(ASIC)320、中央处理单元(CPU)330和存储器340。根据网络设备的功能,ASIC320是交换机ASIC、路由器ASIC或网关ASIC,并且包括评估在端口/接口310(1)-310(N)中的一个上所接收的分组的参数并且如果合适,确定如何将它们从另一端口/接口输出的逻辑。(图3中所示的)MET100可以被包括或配置在ASIC320中以帮助多目标组的路由判定。替换地,MET100可以被存储在存储器340中。存储器340还可以存储用于单链表控制软件350的指令。当被CPU330执行时,单链表控制软件350使得CPU330帮助ASIC,或者完全地执行本文中结合图1-4所呈现的操作。换句话说,本文中所描述的操作可以完全地在硬件中或完全地在软件/固件中被执行。
存储器340可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质设备、光学存储介质设备、闪存设备、电的、光学的或其他物理/有形的存储器存储设备。一般地,存储器340可以包括编码有软件(包括计算机可执行指令)的一个或多个有形的(非暂态的)计算机可读存储介质(例如,存储器设备),并且当软件被(CPU330)执行时,可操作以执行本文中所描述的操作。
因此,如图5中所描绘的那样,以一种形式,提供了一种装置,该装置包括:多个接口,网络中所发送的分组在该接口上被接收和发送出;联网专用集成电路,该联网专用集成电路被配置为将分组定向到多个接口中的一个;和中央处理单元,该中央处理单元被耦合到联网专用集成电路。联网专用集成电路或中央处理单元被配置为:存储包括第一数据库和第二数据库的多目标扩展表,该第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集,每个节点表示物理或虚拟的网络设备的接口,并且第一数据库中的每个条目包括与当前节点地址相关联的接口数据和单链表中的下一节点的地址,该第二数据库存储表示绕过第一数据库中的一个或多个节点的多目标组专用弧的数据;以及遍历单链表以确定如何通过以下方式复制针对特定的多目标组的分组:使用当前节点地址来访问第一数据库以确定下一节点地址和确定与当前节点地址相关联的接口数据;基于在第一数据库中存储的与当前节点地址相关联的接口数据来复制分组;基于针对单链表中的多个节点的子集的组标识符使用关键字来搜索第二数据库,以确定在第二数据库中是否存在与关键字的匹配;并且当在第二数据库中发现匹配时,根据在第二数据库中的与关键字相匹配的条目来确定第一数据库中的节点的下一节点地址,并且当在第二数据库中未发现匹配时,根据访问第一数据库所获得的来确定第一数据库中的节点的下一节点地址。
以另一形式,本文中提供了编码有软件(包括计算机可执行指令)的一个或多个计算机可读存储介质,并且当软件被执行时,可操作以:在网络设备中,存储包括第一数据库和第二数据库的多目标扩展表,该第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集,每个节点表示物理或虚拟的网络设备的接口,并且第一数据库中的每个条目包括与当前节点地址相关联的接口数据和单链表中的下一节点的地址,该第二数据库存储表示绕过第一数据库中的一个或多个节点的多目标组专用弧的数据;以及遍历单链表以确定如何通过以下方式复制针对特定的多目标组的分组:使用当前节点地址来访问第一数据库以确定下一节点地址和确定与当前节点地址相关联的接口数据;基于在第一数据库中存储的与当前节点地址相关联的接口数据来复制分组;基于针对单链表中的多个节点的子集的组标识符使用关键字来搜索第二数据库,以确定在第二数据库中是否存在与关键字的匹配;并且当在第二数据库中发现匹配时,根据在第二数据库中的与关键字相匹配的条目来确定第一数据库中的节点的下一节点地址,并且当在第二数据库中未发现匹配时,根据访问第一数据库所获得的来确定第一数据库中的节点的下一节点地址。
现在转向图6-8,现在对本文中所呈现的技术的应用的示例进行描述。首先参考图6,示出了互联网协议(IP)多播示例。在该示例中,超集是层3(L3)组,子集是(无通道的)L3组。传统地,MET扩展被用于IP多播复制。源主机400通过IP多播组1来将数据流1分发到订户H1。路由器R1是关于源主机400的第一跳路由器,路由器R2在路由器R1的下游。为了完整性示出路由器R3,但不包括在该示例中。源主机400通过IP多播组2将数据流2分发到订户H1、H2和H3。IP多播树可以是另一IP多播树的被剪除的子集,或者IP多播树可以重叠。在该情况下,路由器R2可以通过本文所呈现的技术使用单链表来选择性地复制IP多播组1和2上的分组。
转向图7,示出了IP多播通道示例。在该示例中,超集是层3(L3)组,子集是(具有通道的)L3组。类似顶级虚拟化(OTV)的某一层2(L2)虚拟专用网络(VPN)技术创建了用于洪泛(flooding)的一个IP多播组和用于多播的一个IP多播组。在500,示出了OTV域。路由器R3发送需要到达主机H1、H2和H4的广播分组。网关G1发送OTV域500中的IP多播组1上的分组,以便到达网关G2和G3。路由器R3发送需要到达主机H2的多播分组。在只扇出到网关G2的OTV域中创建IP多播组2。多播组是广播组的被剪除的子集。网关G1只需要发送分组到网关G2,并且不需要发送分组到网关G3。IP多播组1是IP多播组2的被剪除的子集。在该情况下,网关G1可以使用单链表以选择性地复制IP多播组1和2上的分组。
图8示出了L2多播通道的示例。在该示例中,超集是L2组,子集是L2组。类似虚拟专用LAN服务(VPLS)的某一L2VPN技术需要复制点对点通道/伪线连接上的客户帧。在计算机联网和通信中,伪线(或伪-线)通过网络模拟点对点连接。伪线模拟承载服务的“透明线”的操作。服务可以是异步传输模式(ATM)、帧中继、以太网或时分多路复用(TDM),而分组网络可以是多协议标记交换(MPLS)、互联网协议(IPv4或IPv6)或者2层通道协议第3版(L2TPv3)。VPLS是通过IP/多协议标记交换(MPLS)网络来提供基于以太网的多点对多点的通信的方法。
路由器R3发送需要到达主机H1、H2和H4的广播分组。网关G1需要复制伪线上的分组到G2和G3。路由器R3发送需要到达主机H2的多播分组。多播组是广播组的被剪除的子集。网关G1只需要发送伪线上的分组到网关G2,不需要发送伪线上的分组到G3。L2多播树是L2广播树的被剪除的子集。在该情况下,网关G1可以使用单链表来选择性地复制L2多播组和L2广播组上的分组。
本文中所呈现的共享的单链表压缩方法提供了若干好处。首先,其将资源使用最大化。压缩允许给定相同资源的更大的容量。这些技术实现了具有共同节点的一组单链表的理论上最好的压缩,并且可以被应用到MET中的多目标组扩展和包括链表的任意其他网络应用。
其次,这些技术是高度可伸缩的。MET随着链表节点的总数目次线性地增长。通过沿着叠加单链表来遍历任意单链表,实现了用于具有共同节点的一组单链表的理论上最好的压缩,成功地避免了任意节点或弧的不必要的重复。优于任意现有的解决方案,该方法允许随着链表数目的增加和每个链表尺寸的增加成比例缩放。即使缩放成上百万个单链表,也不影响计算性能。
第三,该方法是非常灵活的。在下一跳节点地址的数目上不存在限制。在即将被预确定的组中不存在对链表数目的要求。因此,链表可以被从叠加链表中动态地添加或移除。
为了支持属于相同超集的多个单链表,许多网络交换机遭受MET中的生产能力过剩。这些技术可以提供可伸缩性、灵活性和完全的MET使用。
以上所描述的是示例。本文中所描述的概念可以在不脱离其精神或本质特性的情况下以其他特定的形式进行实现。因此,以上示例在各方面都被认为是示意性的,而不打算成为限制性的。因此,旨在包括落在根据其公平地、合法地和公正地享有的宽度解读的、要求优先权保护的申请中所递交的任意权利要求的精神和范围内的所有这些改变、修改和变化。
Claims (20)
1.一种当对多目标组进行扩展时循环复制分组的方法,所述方法包括:
存储包括第一数据库和第二数据库的多目标扩展表,所述第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集,每个节点表示物理或虚拟的网络设备的接口,并且所述第一数据库中的每个条目包括与当前节点地址相关联的接口数据和所述单链表中的下一节点的地址,所述第二数据库存储表示绕过所述第一数据库中的一个或多个节点的多目标组专用弧的数据;并且
遍历所述单链表以确定如何通过以下方式复制针对特定多目标组的分组:
使用当前节点地址来访问所述第一数据库以确定下一节点地址和确定与所述当前节点地址相关联的接口数据;
基于所述第一数据库中存储的与所述当前节点地址相关联的接口数据来复制所述分组;
基于针对所述单链表中的多个节点的子集的组标识符使用关键字来搜索所述第二数据库,以确定在所述第二数据库中是否存在与所述关键字的匹配;并且
当在所述第二数据库中发现匹配时,根据在所述第二数据库中的与所述关键字相匹配的条目来确定所述第一数据库中的节点的下一节点地址,并且当在所述第二数据库中未发现匹配时,根据访问所述第一数据库所获得的来确定所述第一数据库中的节点的下一节点地址。
2.如权利要求1所述的方法,其中所述第二数据库中的每个条目包括关键字域和数据域,所述关键字域用于当前节点地址,包括数据的所述数据域用于下一节点地址。
3.如权利要求2所述的方法,其中搜索包括使用所述针对特定多目标组的组标识符和所述当前节点地址搜索所述第二数据库来分别对第一和第二关键字域再次进行搜索,从而确定在所述第二数据库中是否存在与条目的匹配,并且当存在匹配时,获取针对所述第二数据库中的匹配条目的存储在所述数据域中的下一节点地址。
4.如权利要求3所述的方法,还包括,在访问所述第一数据库、搜索所述第二数据库并且确定针对所述特定多目标组的单链表中的下一节点地址的每个循环之后,将所述下一节点地址设置为所述当前节点地址以用于访问所述第一数据库、搜索所述第二数据库和确定下一节点地址的下一循环。
5.如权利要求4所述的方法,还包括当所述下一节点地址被确定为无效或空时,终止遍历所述单链表。
6.如权利要求1所述的方法,其中搜索包括基于用于包括所述多个节点的子集的多目标组的组标识符来进行搜索。
7.如权利要求1所述的方法,其中所述单链表指层2(L2)广播组的目标,每个多目标组是L2组,该L2组是所述L2广播组的子集。
8.如权利要求1所述的方法,其中所述单链表指层3(L3)多播组的目标,每个多目标组是L2组,该L2组是所述L3多播组的子集。
9.如权利要求1所述的方法,其中所述单链表指层3(L3)广播组的目标,每个多目标组是L3组,该L3组是所述L3广播组的子集。
10.一种装置,包括:
多个接口,网络中所发送的分组在所述多个接口上被接收和发送出;
联网专用集成电路,所述联网专用集成电路被配置为将分组定向到所述多个接口中的一个;和
中央处理单元,所述中央处理单元被耦合到所述联网专用集成电路;
其中所述联网专用集成电路或中央处理单元被配置为:
存储包括第一数据库和第二数据库的多目标扩展表,所述第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集,每个节点表示物理或虚拟的网络设备的接口,并且所述第一数据库中的每个条目包括与当前节点地址相关联的接口数据和所述单链表中的下一节点的地址,所述第二数据库存储表示绕过所述第一数据库中的一个或多个节点的多目标组专用弧的数据;
遍历所述单链表以确定如何通过以下方式复制针对特定多目标组的分组:
使用当前节点地址来访问所述第一数据库以确定下一节点地址和确定与所述当前节点地址相关联的接口数据;
基于所述第一数据库中存储的与所述当前节点地址相关联的接口数据来复制所述分组;
基于针对所述单链表中的多个节点的子集的组标识符使用关键字来搜索所述第二数据库,以确定在所述第二数据库中是否存在与所述关键字的匹配;并且
当在所述第二数据库中发现匹配时,根据在所述第二数据库中的与所述关键字相匹配的条目来确定所述第一数据库中的节点的下一节点地址,并且当在所述第二数据库中未发现匹配时,根据访问所述第一数据库所获得的来确定所述第一数据库中的节点的下一节点地址。
11.如权利要求10所述的装置,其中所述联网专用集成电路或所述中央处理单元被配置为使用所述针对特定多目标组的组标识符和所述当前节点地址搜索所述第二数据库来分别对第一和第二关键字域再次进行搜索,从而确定在所述第二数据库中是否存在与条目的匹配,并且当存在匹配时,获取针对所述第二数据库中的匹配条目的存储在所述数据域中的下一节点地址。
12.如权利要求11所述的装置,其中所述联网专用集成电路或所述中央处理单元被配置为,在访问所述第一数据库、搜索所述第二数据库并且确定针对所述特定多目标组的单链表中的下一节点地址的每个循环之后,将所述下一节点地址设置为所述当前节点地址以用于访问所述第一数据库、搜索所述第二数据库和确定下一节点地址的下一循环。
13.如权利要求12所述的装置,其中所述联网专用集成电路或所述中央处理单元被配置为,当所述下一节点地址被确定为无效或空时,终止遍历所述单链表。
14.如权利要求10所述的装置,其中所述联网专用集成电路或所述中央处理单元被配置为,基于用于包括所述多个节点的子集的多目标组的组标识符来进行搜索。
15.一个或多个被编码有包括计算机可执行指令的软件的计算机可读存储介质,并且当软件被执行时,可操作以:
在网络设备中,存储包括第一数据库和第二数据库的多目标扩展表,所述第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集,每个节点表示物理或虚拟的网络设备的接口,并且所述第一数据库中的每个条目包括与当前节点地址相关联的接口数据和所述单链表中的下一节点的地址,所述第二数据库存储表示绕过所述第一数据库中的一个或多个节点的多目标组专用弧的数据;并且
遍历所述单链表以确定如何通过以下方式复制针对特定多目标组的分组:
使用当前节点地址来访问所述第一数据库以确定下一节点地址和确定与所述当前节点地址相关联的接口数据;
基于所述第一数据库中存储的与所述当前节点地址相关联的接口数据来复制所述分组;
基于针对所述单链表中的多个节点的子集的组标识符使用关键字来搜索所述第二数据库,以确定在所述第二数据库中是否存在与所述关键字的匹配;并且
当在所述第二数据库中发现匹配时,根据在所述第二数据库中的与所述关键字相匹配的条目来确定所述第一数据库中的节点的下一节点地址,并且当在所述第二数据库中未发现匹配时,根据访问所述第一数据库所获得的来确定所述第一数据库中的节点的下一节点地址。
16.如权利要求15所述的计算机可读存储介质,其中可操作以进行搜索的所述指令包括下面指令,所述指令可操作以使用所述针对特定多目标组的组标识符和所述当前节点地址搜索所述第二数据库来分别对第一和第二关键字域再次进行搜索,从而确定在所述第二数据库中是否存在与条目的匹配,并且当存在匹配时,获取针对所述第二数据库中的匹配条目的存储在所述数据域中的下一节点地址。
17.如权利要求16所述的计算机可读存储介质,还包括下面指令,所述指令可操作以,在访问所述第一数据库、搜索所述第二数据库并且确定针对所述特定多目标组的单链表中的下一节点地址的每个循环之后,将所述下一节点地址设置为所述当前节点地址以用于访问所述第一数据库、搜索所述第二数据库和确定下一节点地址的下一循环。
18.如权利要求17所述的计算机可读存储介质,还包括下面指令,所述指令可操作以当所述下一节点地址被确定为无效或空时,终止遍历所述单链表。
19.如权利要求15所述的计算机可读存储介质,其中可操作以用于进行搜索的所述指令包括可操作以用于基于用于包括所述多个节点的子集的多目标组的组标识符来进行搜索的指令。
20.如权利要求15所述的计算机可读存储介质,其中所述单链表指层2(L2)广播组的目标,每个多目标组是L2组,该L2组是所述L2广播组的子集。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/894,484 | 2013-05-15 | ||
US13/894,484 US9369293B2 (en) | 2012-09-11 | 2013-05-15 | Compressing singly linked lists sharing common nodes for multi-destination group expansion |
PCT/US2014/036906 WO2014186170A1 (en) | 2013-05-15 | 2014-05-06 | Compressing singly linked lists sharing common nodes for multi-destination group expansion |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105229977A true CN105229977A (zh) | 2016-01-06 |
CN105229977B CN105229977B (zh) | 2018-09-21 |
Family
ID=50896565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480027850.9A Expired - Fee Related CN105229977B (zh) | 2013-05-15 | 2014-05-06 | 用于循环复制分组的方法、装置和计算机可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9369293B2 (zh) |
EP (1) | EP2997702B1 (zh) |
CN (1) | CN105229977B (zh) |
WO (1) | WO2014186170A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766004A (zh) * | 2017-11-02 | 2018-03-06 | 郑州云海信息技术有限公司 | 一种映射关系实现方法、系统及计算机设备 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2661025A4 (en) * | 2010-12-28 | 2017-11-01 | Nec Corporation | Information system, control device, communication method and program |
US9887939B2 (en) | 2015-03-11 | 2018-02-06 | International Business Machines Corporation | Transmitting multi-destination packets in overlay networks |
US9959301B2 (en) * | 2014-07-25 | 2018-05-01 | Cisco Technology, Inc. | Distributing and processing streams over one or more networks for on-the-fly schema evolution |
US9729338B2 (en) | 2014-09-23 | 2017-08-08 | Cavium, Inc. | Fast hardware switchover in a control path in a network ASIC |
US9565136B2 (en) * | 2014-09-23 | 2017-02-07 | Cavium, Inc. | Multicast replication engine of a network ASIC and methods thereof |
US9760418B2 (en) | 2014-09-23 | 2017-09-12 | Cavium, Inc. | Session based packet mirroring in a network ASIC |
US9813327B2 (en) | 2014-09-23 | 2017-11-07 | Cavium, Inc. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
CN104636045B (zh) * | 2015-03-09 | 2019-04-26 | 联想(北京)有限公司 | 显示方法、装置及电子设备 |
US10419571B2 (en) | 2015-03-24 | 2019-09-17 | Cavium, Llc | Packet processor forwarding database cache |
US10218525B2 (en) * | 2016-11-11 | 2019-02-26 | Cisco Technology, Inc. | System and method to control latency of serially-replicated multi-destination flows |
CN110929103B (zh) * | 2019-11-20 | 2023-04-11 | 车智互联(北京)科技有限公司 | 为数据集合构建索引的方法、数据查询方法及计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040042478A1 (en) * | 2002-09-03 | 2004-03-04 | Drew Bertagna | Method and apparatus for multicast traffic management |
CN1547354A (zh) * | 2003-12-17 | 2004-11-17 | 港湾网络有限公司 | 网络地址转换规则配置的优化方法 |
US20050171959A1 (en) * | 2002-02-14 | 2005-08-04 | Koen Deforche | Efficient ipv4/ipv6 best matching prefix method and apparatus |
CN1761238A (zh) * | 2004-09-14 | 2006-04-19 | 阿尔卡特公司 | 网络处理器中路由转发数据库的优化 |
CN101820386A (zh) * | 2009-01-30 | 2010-09-01 | 帕洛阿尔托研究中心公司 | 用于促进在以内容为中心的网络中转发分组的方法和系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0680173B1 (en) | 1994-04-28 | 2003-09-03 | Hewlett-Packard Company, A Delaware Corporation | Multicasting apparatus |
US6359899B1 (en) * | 1997-05-28 | 2002-03-19 | Lucent Technologies Inc. | Priority access for real-time traffic in contention-based networks |
US6839348B2 (en) | 1999-04-30 | 2005-01-04 | Cisco Technology, Inc. | System and method for distributing multicasts in virtual local area networks |
US6643706B1 (en) * | 1999-06-29 | 2003-11-04 | Cisco Technology, Inc. | Scaleable route redistribution mechanism |
US7000234B1 (en) * | 2000-01-20 | 2006-02-14 | Sun Microsystems, Inc. | Maintaining a double-ended queue as a linked-list with sentinel nodes and delete flags with concurrent non-blocking insert and remove operations using a double compare-and-swap primitive |
US7117273B1 (en) | 2000-01-25 | 2006-10-03 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
US7334048B1 (en) * | 2002-06-04 | 2008-02-19 | Extreme Networks, Inc. | Method and apparatus for fast route table update |
US8036139B2 (en) | 2002-10-28 | 2011-10-11 | Cisco Technology, Inc. | Internal BGP downloader |
US7761702B2 (en) | 2005-04-15 | 2010-07-20 | Cisco Technology, Inc. | Method and apparatus for distributing group data in a tunneled encrypted virtual private network |
US7809009B2 (en) | 2006-02-21 | 2010-10-05 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
US7742475B2 (en) | 2006-05-03 | 2010-06-22 | Cisco Technology, Inc. | Techniques for distributing replication points for traffic using point-to-point links |
US8259612B2 (en) | 2006-06-09 | 2012-09-04 | Cisco Technologies, Inc. | Method of routing multicast traffic |
US8611270B1 (en) * | 2007-01-19 | 2013-12-17 | Cisco Technology, Inc. | Dynamic wireless VLAN IP multicast distribution |
US7843917B2 (en) | 2007-11-08 | 2010-11-30 | Cisco Technology, Inc. | Half-duplex multicast distribution tree construction |
US7792111B2 (en) | 2008-04-23 | 2010-09-07 | Cisco Technology, Inc. | Point-to-multipoint for multicast and unicast forwarding |
US8385245B2 (en) | 2008-11-13 | 2013-02-26 | Cisco Technology, Inc. | System and method for multicasting in a network environment |
US20130021942A1 (en) | 2011-07-18 | 2013-01-24 | Cisco Technology, Inc. | Granular Control of Multicast Delivery Services for Layer-2 Interconnect Solutions |
-
2013
- 2013-05-15 US US13/894,484 patent/US9369293B2/en active Active
-
2014
- 2014-05-06 WO PCT/US2014/036906 patent/WO2014186170A1/en active Application Filing
- 2014-05-06 EP EP14728776.7A patent/EP2997702B1/en not_active Not-in-force
- 2014-05-06 CN CN201480027850.9A patent/CN105229977B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050171959A1 (en) * | 2002-02-14 | 2005-08-04 | Koen Deforche | Efficient ipv4/ipv6 best matching prefix method and apparatus |
US20040042478A1 (en) * | 2002-09-03 | 2004-03-04 | Drew Bertagna | Method and apparatus for multicast traffic management |
CN1547354A (zh) * | 2003-12-17 | 2004-11-17 | 港湾网络有限公司 | 网络地址转换规则配置的优化方法 |
CN1761238A (zh) * | 2004-09-14 | 2006-04-19 | 阿尔卡特公司 | 网络处理器中路由转发数据库的优化 |
CN101820386A (zh) * | 2009-01-30 | 2010-09-01 | 帕洛阿尔托研究中心公司 | 用于促进在以内容为中心的网络中转发分组的方法和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766004A (zh) * | 2017-11-02 | 2018-03-06 | 郑州云海信息技术有限公司 | 一种映射关系实现方法、系统及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105229977B (zh) | 2018-09-21 |
WO2014186170A1 (en) | 2014-11-20 |
US20140071988A1 (en) | 2014-03-13 |
EP2997702B1 (en) | 2017-04-26 |
EP2997702A1 (en) | 2016-03-23 |
US9369293B2 (en) | 2016-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105229977A (zh) | 对共享多目标组扩展的共同节点的单链表进行压缩 | |
CN104811387B (zh) | 具有位索引显式复制的等价多路径 | |
US9338086B2 (en) | Hierarchal label distribution and route installation in a loop-free routing topology using routing arcs at multiple hierarchal levels for ring topologies | |
US9832124B2 (en) | Method and apparatus providing single-tier routing in a shortest path bridging (SPB) network | |
US10284472B2 (en) | Dynamic and compressed trie for use in route lookup | |
US9143429B2 (en) | Identifying an egress point to a network location | |
US9264243B2 (en) | Flooding and multicasting in a loop-free routing topology using routing arcs | |
US20160134518A1 (en) | Deterministic and optimized bit index explicit replication (bier) forwarding | |
JP5385984B2 (ja) | マルチキャストルートを算出する方法 | |
US9419919B2 (en) | VPC auto configuration | |
CN109391549B (zh) | 使用一致性哈希进行ecmp路由 | |
CN111147373A (zh) | 实现非灵活算法路由器参与灵活算法路由协议 | |
US20140036729A1 (en) | Label distribution and route installation in a loop-free routing topology using routing arcs | |
EP2520051A1 (en) | Efficient protection scheme for mpls multicast | |
US10594629B2 (en) | Load balancing on multi-chip network switch without full bi-section bandwidth | |
JP2013504272A (ja) | 複数の等コストパスから選択するための方法および装置 | |
CN103346968A (zh) | 用于路由组播数据的方法和装置 | |
JP2015520997A (ja) | 最短経路の決定におけるタイブレイク | |
US20170111260A1 (en) | Trill isis-based route calculation method and device | |
US9515924B2 (en) | Method and apparatus providing single-tier routing in a shortest path bridging (SPB) network | |
Kumar et al. | Improved prophet routing algorithm for opportunistic networks | |
Huang et al. | Label space reduction based on LSP multiplexing in MPLS Openflow hybrid network | |
Ibáñez et al. | HURP/HURBA: Zero-configuration hierarchical Up/Down routing and bridging architecture for Ethernet backbones and campus networks | |
JP2016103697A (ja) | ネットワークシステム、制御装置、通信装置、通信装置の制御方法及びプログラム | |
CN101640630B (zh) | 虚拟链路组的通告方法、系统和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180921 |
|
CF01 | Termination of patent right due to non-payment of annual fee |