基于TCAM的IPMC数据存储方法与流程

文档序号:14940661发布日期:2018-07-13 20:38阅读:394来源:国知局

本发明涉及一种tcam存储方法,特别涉及一种基于tcam的ipmc数据存储方法,属于数据存储技术领域。



背景技术:

ipmc(internetprotocolmulticast,ip组播)条目存放在tcam(ternarycontentaddressablememory,三态内容寻址存储器)中,首先需要区分该ipmc条目的类型。ipmc条目根据目的地址和源地址分为以下三种:1.(s,g),需要匹配目的和源地址;2.(*,g),不关心源地址,只需要匹配目的地址;3.(*,*),不关目的和源地址。根据地址长度,ipmc条目分为ipv4条目和ipv6条目。

传统的存储方式是将tcam划分为不共享的两块资源,ipv4ipmc条目和ipv6ipmc条目在各自的存储空间内单独维护,在各自的存储空间初始化时为三种类型的条目分配好存储范围。如图1所示,(s,g)条目采用正向分配,(*,g)条目采用反向分配,(*,*)条目是default条目,预留好相应vrf数量的条目数。

然而,现有技术的这种存储方法,ipv4和ipv6的ipmc条目资源是独立存储的,对tcam的存储空间利用率低,且存储(s,g)、(*,g)与(*,*)三种类型条目的存储空间固定,无法进行空间资源共享。



技术实现要素:

针对现有技术的不足,本发明的目的在于提供一种基于tcam的ipmc数据存储方法,通过对ipv4和ipv6ipmc条目在tcam中存储方式的规划,以及调整存储空间资源,实现不同类型的ipmc条目共享存储空间的目的。

为实现前述发明目的,本发明采用的技术方案包括:

在tcam存储空间中规划六个连续地址的存储块block,用于存储ipv4和ipv6ipmc条目,所述ipv4或ipv6ipmc条目以block地址递增的方向按照(s,g)、(*,g)、(*,*)的顺序存储;

当向任一块block添加对应类型的ipmc条目时,若当前block存储空间不足,则查找其他block是否存在空闲存储空间,若存在,则为当前block扩容存储空间并存储所述对应类型的ipmc条目。

优选地,根据地址递增的顺序,为所述六块block依次分配连续递增的数值作为blockid,记录每一块block的起始偏移位置和结束偏移位置。

优选地,在任一块block中添加相应类型的ipmc条目时,均从该块block的起始偏移位置处累计存储,直到累计使用的偏移位置达到结束偏移位置时,表示该块block的存储空间已满。

优选地,所述为当前block扩容存储空间包括以下步骤:

s1:根据方向查找与当前block最邻近的且具有存储空间的block,获取当前block的id;记为block_id,获取已查找到的block的id记为adj_block_id;

s2:判断adj_block_id与block_id是否相等,若不相等,执行s3;否则执行s6;

s3:判断adj_block_id是否大于block_id,若大于,执行s4;否则,执行s5;

s4:将id为adj_block_id的block中的数据向下移动2个偏移单位,且该block的起始偏移位置加2,其前一个相邻block的结束偏移位置加2,adj_block_id减1,返回执行s2;

s5:将id为adj_block_id的block的结束偏移位置减2,其后一个block中的数据向上移动2个偏移单位,所述后一个block的起始偏移位置减2,adj_block_id加1,返回执行s2;

s6:在当前block中申请存储空间;

s7:结束。

优选地,一条ipv4ipmc条目占用的存储空间大小为一个偏移单位,一条ipv6ipmc条目占用的存储空间大小为两个偏移单位。

优选地,一个偏移单位的大小为160bit。

与现有技术相比,本发明的优点包括:能够实现不同类型的ipmc条目共享存储空间的目的,不仅实现ipv4ipmc条目和ipv6ipmc条目的存储空间资源共享,同时实现(s,g)、(*,g)和(*,*)这三种类型条目的存储空间资源共享,可满足不同类型用户的网络规格需求,从而提高了存储空间资源利用率。

附图说明

图1是现有技术中三种类型的ipmc条目的存储空间资源分配示意图;

图2是本发明的ipv4和ipv6ipmc条目的存储空间资源分配示意图;

图3a是本发明一典型实施例的添加ipmc条目过程的调整空间资源前的存储空间资源分配示意图;

图3b是本发明一典型实施例的添加ipmc条目过程的调整空间资源后的存储空间资源分配示意图;

图4是本发明一典型实施例的存储空间资源调整过程的流程图。

具体实施方式

鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。

本发明提出了一种ipmc条目在tcam中存储的方法,其技术方案作如下具体阐述。

首先,为ipv4和ipv6ipmc条目规划一个共同的tcam存储空间,并对所述tcam存储空间进行规划分配,图2是本发明的ipv4和ipv6ipmc条目的存储空间资源分配示意图,如图2所示,其中,v4(s,g)、v4(*,g)和v4(*,*)是ipv4ipmc条目的三种类型,v6(s,g)、v6(*,g)和和v6(*,*)是ipv6ipmc条目的三种类型。将用于存放ipv4ipmc条目和ipv6ipmc条目的tcam存储空间规划为六块block,按照地址递增顺序依次分配给v4(s,g)、v6(s,g)、v4(*,g)、v6(*,g)、v4(*,*)和v6(*,*)。

需要注意的是,在向block中分配和存储ipv4或ipv6ipmc条目时,不限于上述的分配方式,只需要保证用于存储(s,g)类型的ipv4ipmc条目的block地址前于用于存储(*,g)类型的ipv4ipmc条目的block地址,用于存储(*,g)类型的ipv4ipmc条目的block地址前于用于存储(*,*)类型的ipv4ipmc条目的block地址;同时,用于存储(s,g)类型的ipv6ipmc条目的block地址前于用于存储(*,g)类型的ipv6ipmc条目的block地址,用于存储(*,g)类型的ipv6ipmc条目的block地址前于用于存储(*,*)类型的ipv6ipmc条目的block地址即可,具体分配方式取决于实际使用中不同类型条目的规格。

表1是本发明一典型实施例为各block进行初始分配的示例,如下所示。

表1

表1中,id表示根据地址递增顺序的自上而下六块block的标识,l表示该块block的起始偏移位置,r表示该块block的结束偏移位置,m表示当前block对应的条目所占用的偏移单位数量,all表示该块block空间的总大小,used表示已经使用的空间大小。一条ipv4ipmc条目占用的存储空间大小为一个偏移单位,一条ipv6ipmc条目占用的存储空间大小为两个偏移单位,一个偏移单位的大小为160bit。

在向每一块block中添加相应类型的ipmc条目时,均从该块block的起始偏移位置处开始存储,直到累计使用的偏移位置达到结束偏移位置时,表示该块block存储空间已满,再次添加该类型的ipmc条目时,则需要进行存储空间资源调整。

若某一块block预先分配的存储空间资源已被用完,再次向该块block添加对应ipmc条目时,需要从最邻近的有空闲存储空间的block中调整出存储资源供该块block使用。图3a~3b是本发明一典型实施例的添加ipmc条目的示意图,如图3a所示,tcam存储器自上而下六块block分别存储v4(s,g)、v6(s,g)、v4(*,g)、v6(*,g)、v4(*,*)和v6(*,*)ipmc条目,该六块block的起始偏移位置和结束偏移位置分别为(l0,r0)、(l1,r1)、(l2,r2)、(l3,r3)、(l4,r4)、(l5,r5);其中,阴影部分表示存储空间已满,空白部分表示存储空间空闲。

如图3a所示,v4(*,g)block存储空间已满,此时若继续添加一条新的v4(*,g),则需通过调整空间资源来完成添加,从下方v6(*,g)block中调整出2个偏移单位大小的存储空间资源给v4(*,g)。相应的,v4(*,g)block的存储空间增大了2个偏移单位,v6(*,g)block的存储空间减小了2个偏移单位。v4(*,g)block的结束偏移位置变为r2',且r2'=r2+2,起始偏移位置不变;v6(*,g)block的起始偏移位置变为l3',且l3'=l3-2,调整空间资源后的tcam存储空间的存储分配情况如图3b所示。

图4是本发明一典型实施例的存储空间资源调整过程的流程图,其中,当前block的id用变量block_id表示,最邻近的且具有存储空间的block的id用变量adj_block_id表示,具体调整过程如下:

步骤401:判断当前block是否有存储空间,若没有,执行步骤402,否则跳转执行步骤407;

步骤402:查找到与当前block最邻近的且具有存储空间的block;

执行查找操作时,可设置向上查找或向下查找的优先顺序,或者同时执行向上和向下查找,目的是找到最邻近的且有空余存储空间的block。

步骤403:判断adj_block_id与block_id是否相等,若不相等,执行步骤404,否则执行步骤407;

步骤404:判断adj_block_id是否大于block_id,若大于,执行步骤405,否则执行步骤406;

步骤405:将id为adj_block_id的block中的数据向下移动2个偏移单位,该block的起始偏移位置lindex加2,其前一个block的结束偏移位置rindex加2,adj_block_id减1,返回执行步骤403;

步骤406:将id为adj_block_id的block的结束偏移位置rindex减2,其后一个block中的数据向上移动2个偏移单位,后一个block的起始偏移位置lindex减2,adj_block_id加1,返回执行步骤403;

步骤407:在当前block中申请存储空间;

步骤408:结束。

需要说明的是,本发明实施例中所公开的具体实施方案,仅用来阐述本发明技术方案的核心思想,并不因此而限制本发明的保护范围,基于本发明核心思想的其他实施方式,例如不同类型的ipmc条目在六块block中的不同分配方式,资源调整的其他方法等,都应涵盖在本发明的保护范围之内。

本发明技术方案提出的基于tcam存放ipmc条目的方法,能够实现不同类型的ipmc条目共享存储空间的目的,包括ipv4和ipv6ipmc条目资源共享,以及(s,g)、(*,g)和(*,*)三种类型ipmc条目资源共享,可满足不同类型的网络规格需求,从而提高了存储空间资源利用率。

应当理解,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1