[发明专利]一种基于TCAM的路由查找系统及其方法有效
申请号: | 201710310664.1 | 申请日: | 2017-05-05 |
公开(公告)号: | CN107222401B | 公开(公告)日: | 2020-07-24 |
发明(设计)人: | 张建伟;马万里;苗延楠;吴国强;滕飞 | 申请(专利权)人: | 大连理工大学 |
主分类号: | H04L12/701 | 分类号: | H04L12/701;H04L12/743;H04L12/751;G06F12/08 |
代理公司: | 大连星海专利事务所有限公司 21208 | 代理人: | 王树本 |
地址: | 116024 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 tcam 路由 查找 系统 及其 方法 | ||
1.一种基于TCAM的路由查找系统,包括容量为N个条目的TCAM模块1、容量为M个条目的TCAM模块2、具有N个输入端的编码器,具有M个输入端的优先级编码器,两输入选择器和两输入或门,所述TCAM模块1的N个输出端分别与编码器的N个输入端一一对应相连,所述TCAM模块2的M个输出端分别与优先级编码器的M个输入端一一对应相连,所述编码器的输出端与两输入选择器的“1”端相连,所述优先级编码器的输出端与两输入的选择器的“0”端相连,所述TCAM模块1输出的匹配标志1与两输入选择器的选择端相连,所述TCAM模块1输出的匹配标志1和TCAM模块2输出的匹配标志2分别与两输入或门相连,两输入选择器的输出端作为系统的匹配地址,两输入或门的输出端作为系统的匹配标志,所述N及M均为大于零的正整数,其特征在于,所述TCAM模块1中存放n1条第一层前缀,n1为大于零的正整数,存放的地址范围为[0,n1-1],前缀采用随机存放的方式,TCAM模块1的地址范围[n1,N-1]不存放前缀;在TCAM模块2的地址范围为[0,n2-1]的TCAM entry中存放n2条第二层前缀,TCAM模块2的地址范围为[n2,n2+ne1-1]放置ne1条未使用的TCAM entry,组成空闲空间1,ne1为大于零的正整数;在TCAM模块2的地址范围为[n2+ne1,n2+ne1+nO1-1]的TCAM entry中存放nO1条,长度为24~17的其他层的前缀,nO1为大于零的正整数,前缀按照前缀长度存放,前缀长度长的放在低地址,短的放在高地址;在TCAM模块2的地址范围为[n2+ne1+nO1,n2+ne1+nO1+ne2-1]的TCAMentry不存放前缀,组成空闲空间2,在TCAM模块2的地址范围为[n2+ne1+nO1+ne2,n2+ne1+nO1+ne2+nO2-1]的TCAM entry中存放nO2条长度为16~13的其它层前缀,前缀按照前缀长度存放,前缀长度长的放在低地址,短的放在高地址,TCAM模块2的地址范围为[n2+ne1+nO1+ne2+nO2,n2+ne1+nO1+ne2+nO2+ne3-1]的TCAM entry中不存放前缀,组成空闲空间3,TCAM模块2地址范围为[n2+ne1+nO1+ne2+nO2+ne3,M-1]的TCAM entry中存放M-(n2+ne1+nO1+ne2+nO2+ne3)条前缀长度为12~8的其他层前缀,前缀按照前缀长度存放,前缀长度长的放在低地址,短的放在高地址;如果前缀A和前缀B在同一分支上,也就是它们是互相重叠的前缀,并且前缀A的长度比前缀B的长度短,就称前缀A是前缀B的超集或者记作
2.根据权利要求1所述系统的一种基于TCAM的路由查找及更新方法,其特征在于,所述查找方法包括以下步骤:
步骤401、将待查找的目的IP同时送入TCAM模块1和TCAM模块2中,进行搜索;
步骤402、从编码器的输出端得到TCAM模块1的匹配地址,从优先级编码器的输出端得到TCAM模块2的匹配地址,从TCAM模块1的输出端得到匹配标志1,从TCAM模块2输出端得到匹配标志2;
步骤403、将TCAM模块1得到的匹配标志1送入选择器的选择端;
步骤404、将TCAM模块1得到的匹配地址的最高位前加标志位“1”,送入选择器“1”端,将TCAM模块2中得到的匹配地址的最高位前加“0”,送入选择器“0”端;
步骤405、从选择器输出端得到搜索的匹配结果,从或门输出端得到匹配标志;
所述更新方法包括插入和删除两部分,其中插入方法包括以下步骤:
步骤501、开始,准备好要插入的前缀;
步骤502、判断要插入的前缀是否应该插入到第一层前缀中,如果该前缀应该插入到第一层,则执行步骤503,否则执行步骤508;
步骤503、判断要插入的前缀在第一层前缀中是否存在超集P1,如果超集P1存在,则执行步骤504,如果不存在,则执行步骤511;
步骤504、判断前缀P1在第二层中是否存在超集P2,如果超集P2存在,则执行步骤506,如果不存在,则执行步骤505;
步骤505、将前缀P1插入到第二层前缀中;
步骤506、将前缀P2插入到其它前缀层中;
步骤507、将前缀P1移动到前缀P2在移动之前的位置;
步骤508、如果要插入的前缀应该插入到第二层,则执行步骤509,否则执行步骤511;
步骤509、判断被插入前缀在第二层是否存在超集P2,如果存在,则执行步骤510,如果不存在,则执行步骤511;
步骤510、将前缀P2插入到其它层;
步骤511、在相应的前缀层插入目标前缀;
步骤512、记录前缀数量和位置的变化;
步骤513、结束此次前缀插入操作;
所述删除方法包括以下步骤:
步骤601、开始删除过程,准备好被删除的前缀;
步骤602、判断被删除前缀是否位于第一层,如果被删除前缀位于第一层,则执行步骤603,否则执行步骤609;
步骤603、判断被删除前缀在第二层中是否有超集P2,如果超集P2存在,则执行步骤604,如果超集P2不存在,则执行步骤613;
步骤604、判断前缀P2在第一层前缀中有无与被删除前缀不同的子集,如果子集存在,则执行步骤613,如果不存在子集,则执行步骤605;
步骤605、将前缀P2移动到被删除的前缀的位置处;
步骤606、判断前缀P2在其它层前缀中是否有超集P3,如果超集P3存在,则执行步骤607,如果超集P3不存在,则执行步骤613;
步骤607、判断前缀P3在第二层前缀中是否存在与前缀P2不同的子集,如果存在,则执行步骤613,如果不存在,则执行步骤608;
步骤608、将前缀P3移动到前缀P2的位置;
步骤609、判断被删除前缀是否位于第二层中,如果位于第二层前缀中,则执行步骤610,否则执行步骤613;
步骤610、判断被删除前缀在其他层中是否存在超集P3,如果存在,则执行步骤611,如果不存在,则执行步骤613;
步骤611、判断前缀P3在第二层前缀中有无与被删除前缀不同的子集前缀,如果该子集存在,则执行步骤613,如果不存在,则执行步骤612;
步骤612、将前缀P3移动到被删除前缀的位置处;
步骤613、删除目标前缀;
步骤614、记录前缀位置和数量的变化;
步骤615、结束此次删除操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710310664.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种缝纫机的切刀结构
- 下一篇:一种裤腰上橡筋机上的收料机构