对共享多目标组扩展的共同节点的单链表进行压缩的制作方法

文档序号:9476540阅读:334来源:国知局
对共享多目标组扩展的共同节点的单链表进行压缩的制作方法
【技术领域】
[0001]本公开涉及对用于网络应用的分组进行复制。
【背景技术】
[0002]单链表是计算机科学中的常见数据结构。单链表包括一起表示序列的一组节点。每个节点包括对下一节点的参考和数据域。
[0003]联网中的一个示例应用是多目标扩展表(MET)中的多目标组扩展。例如,为了将分组分发到属于互联网协议(IP)多播组的一列输出接口,节点的链表被遍历并且一份分组被从由列表中的每个节点表示的接口发送出。
【附图说明】
[0004]图1是根据本文中所呈现的技术,示出具有共同节点的若干单链表,并且为其创建压缩的单链表的简图。
[0005]图2是示出用于图1中所示的示例的压缩的单链表的简图。
[0006]图3是根据本文中所呈现的技术,用于创建压缩的单链表的多目标扩展表的简图。
[0007]图4是根据本文中所呈现的技术,示出被执行以生成压缩的单链表的操作的示例的流程图。
[0008]图5是示例性网络设备的框图,在该网络设备中本文中所呈现的技术可以被用于对分组进行复制。
[0009]图6-8示出了本文中所呈现的链表压缩技术的应用的示例。
【具体实施方式】
[0010]
[0011]本文中所呈现的是用于当对多目标组进行扩展时重复复制分组的技术。包括第一数据库和第二数据库的多目标扩展表被存储。第一数据库包括表示单链表中所有节点的数据,该单链表是用于多个多目标组的节点的超集。每个节点表示物理或虚拟的网络设备的接口,并且第一数据库中的每个条目包括与单链表中的当前节点地址和下一节点的地址相关联的接口数据。第二数据库存储表示绕过第一数据库中的一个或多个节点的多目标组专用弧的数据。单链表被遍历以确定如何通过,使用当前节点地址来访问第一数据库来确定确定下一节点地址以及确定与当前节点地址相关联的接口数据,并且使用基于针对单链表中的多个节点的子集的组标识符的关键字搜索第二数据库来确定第二数据库中是否存在与关键字的匹配,来复制针对特定的多目标组的分组关键字关键字。基于第一数据库中存储的与当前节点地址相关联的接口数据来复制分组。当在第二数据库中发现匹配时,针对第一数据库中的节点的下一节点地址根据与第二数据库中的关键字相匹配的条目被确定。当在第二数据库中未发现匹配时,针对第一数据库中的节点的下一节点地址根据访问第一数据库被确定。
[0012]示例件实施例
[0013]本文中呈现了实现理论上最佳压缩具有共同节点的一组单链表的技术。这些技术的用途包括在硬件和软件实现二者中的多目标组扩展和包括链表的其它网络应用。
[0014]首先参考图1,示出了包括单链表10的若干单链表的简图,该单链表10是用于多个多目标组的节点的超集。因为如下文中显而易见的,因为列表10包括用于多个多目标组的所有节点,所以其还被称为广播单链表。多目标组中的每个包括列表10中的节点的子集。特别地,并且仅是通过示例,具有由单链表20定义的多目标组1,由单链表30定义的多目标组2和由单链表40定义的多目标组3。如本领域技术人员所知的,单链表包括一起表示序列的一组节点。每个节点包括对下一节点的参考和数据域。
[0015]超集单链表10包括一系列标号为1、2、3、4和5的节点,其中,节点I转到节点2,节点2转到节点3,节点3转到节点4,节点4转到节点5。列表10结束于空或者无效节点12。列表10是所有节点按序列被遍历的默认情况。用于广播单链表10的开始指针(SP)是节点I。图1中所示的单链表中的每个节点可以表示用于物理或虚拟的网络设备的接口的相关联数据和/或接口。例如,每个节点可以表示接口、虚拟信道或虚拟专用网络(VPN)网关(例如,通道)。
[0016]叠加的单链表10是所有单独的链表(例如,列表20-40)的超集。相邻的节点由可应用于所有链表的被称为单跳弧(single-hop arcs)的弧链接。绕过或跳过一个或多个节点的弧是链表专用的,被称为多跳弧(mult1-hop arcs)。由于广播链表是超集,因此广播链表不具有多跳弧。
[0017]多目标组I列表20包括节点1、节点3、节点4和节点5的序列。组I的SP是节点I。列表20跳过节点2,以使得节点I直接转到节点3。S卩,组I中存在越过节点2的多跳弧。列表20结束于空或者无效节点22。
[0018]多目标组2列表30包括节点2、节点3和节点4的序列。节点I和5不是组2的一部分,列表30的SP是节点2。列表30结束于空或者无效节点32。组2中存在越过节点5的多跳弧。
[0019]多目标组3列表40包括节点1、节点2、节点3和节点5的序列。列表40结束于空或者无效节点42。因此,组3中存在越过节点4的多跳弧。
[0020]根据所呈现的技术,如果链表共享共同的节点,则多个链表被集成到单个压缩的(叠加的)链表中。如果链表中的每个节点表示多目标扩展表(MET)中的条目,则MET与在本文中所描述的压缩单链表一起被更有效地使用。
[0021]用于图1中所示的示例的压缩或叠加的单链表的示例在图2中以标号50被示出。叠加链表50包括与图1中所示的SP相同的用于各种组的SP。通过叠加链表50的默认路径在图2中被示为“全部(ALL) ”,并且该默认路径是节点I到节点2到节点3到节点4到节点5到空节点12。然而,在链表50中存在组专用的多跳弧来对针对特定组的被跳过的一个或多个节点负责。例如,图2示出了用于组I的从节点I到节点3的组专用弧60,如组I的链表所需要的跳过节点2。相似地,存在用于组2的从节点4到空节点12的组专用弧70,如组2所需要的跳过节点5。还存在用于组3的从节点3到节点5的组专用弧90,如组3所需的跳过节点4。叠加的单链表50具有8个条目,但可以被用于负责图1中所示的所有单链表10-40,而使用传统MET技术将需要16个条目。这比传统的实现方式改善了50%。大量的存储空间被节省,并且当针对许多更长的链表进行伸缩(scale)时,很明显的是以该方式对共享共同节点的多个链表进行压缩是更有效的。
[0022]现在参考图3以用于对在图1和图2中所示的示例的MET进行描述。MET(—般以标号100示出)包括被称为主节点信息库(PRIB)的第一数据库110和被称为幻像节点信息库(PHAB)的第二数据库120。PRIB 110包括超集(广播)单链表10中的所有节点,和用于通过单链表10中的节点的直接序列推进的默认情况。PRIB 110具有针对当前节点地址的列112、针对物理或虚拟的网络设备的相应接口标识符(和/或与接口相关联的数据)的列114和针对下一节点地址的列116。例如,如果当前节点地址是被分配给接口 ID I的BI,则下一节点地址是B2(其被分配给接口 ID 2),等等。然而,一般地,PRIB 110中的每个条目可以被直接地索引,因此PRIB 110在每个条目中仅包括在给定当前节点地址的单链表中的下一节点地址,但是又,为了确定如何对分组进行复制,接口数据与PRIB 110中的节点相关联。
[0023]PHAB 120存储指定移动通过PRIB 110以便生成不同的多目标组的方法的数据。更具体地,PHAB 120是指定多目标组专用的多跳弧的数据库。PHAB 120中的每个条目表示跳过或绕过超集链表中的一个或多个节点的组专用多跳弧。PHAB 120不像查找数据库而更像搜索数据库,然而PRIB 110是存储器查找数据库。
[0024]PHAB 120具有用于搜索关键字和相应数据的域。搜索关键字可以是基于针对超集单链表中的多个节点的子集的组标识符。然而,在一个示例中,存在两个搜索关键字域:一个用于在122所示的组ID,另一个用于在124所示的当前节点地址。数据域以标号126示出,并
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1