一种TCAM多通道虚拟化实现方法及系统转让专利

申请号 : CN201711240218.4

文献号 : CN108182156B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 眭新光李云照

申请人 : 北京卓讯科信技术有限公司成都卓讯云网科技有限公司

摘要 :

本发明公开了一种TCAM多通道虚拟化实现方法及系统,涉及计算机通信技术领域。该方法及系统一方面,通过判断当前连接的通道数以及各个通道流量情况自动选择使用:轮询策略、排序策略和/或轮询跳过空闲策略,从而极大的减少了空闲周期,节约了总线成本;另一方面,通过采集各个通道信息,并将当前状态信息上报给计算机,计算机可以根据当前状态制定固定策略,从而给多通道虚拟化技术提供了极大的灵活性;所以,采用本发明实施例提供的方法及系统,实现了TCAM的多通道控制,提高了TCAM总线的有效利用率。

权利要求 :

1.一种TCAM多通道虚拟化实现方法,其特征在于,包括如下步骤:S1,并行接收N个通道数据,对每个通道数据进行缓存并监控每个通道的缓存状态,S2,判断每个通道的缓存状态是否有数据溢出,如果是,则丢弃溢出的完整的整包数据;否则,判断是否自动选择出策略,如果是,则执行选择出的策略,否则,计算机根据上报的状态指标固定使用某种策略或制定固定策略,对接收到的数据执行所述固定策略;

所述判断是否自动选择出策略,包括如下步骤:

S201,检测计算机是否下发策略控制命令,如果是,则执行S204;否则执行S202;

S202,检测当前通道数,如果当前通道数小于等于2,则执行S205,如果当前通道数大于

2,则执行步骤S203;

S203,判断是否有FIFO溢出情况,如果没有,则执行S206;否则执行S207;

S204,选择出当前计算机配置的策略并执行;

S205,执行轮询策略;

S206,执行轮询跳过空闲策略;

S207,执行排序策略。

2.根据权利要求1所述的TCAM多通道虚拟化实现方法,其特征在于,S2中,所述丢弃溢出的完整的整包数据后,还包括步骤:每丢弃一个包,对丢包计数器加一,同时更新丢包计数寄存器。

3.根据权利要求1所述的TCAM多通道虚拟化实现方法,其特征在于,所述轮询跳过空闲策略按照如下方法进行实施:将所有端口组成一个环形队列;

调度时,采用轮转的基本模式,每拍完成处理后,将当前拍选择的端口在环形队列上下移一位作为下一拍处理的输入位置;同时,在当拍处理时,检查当前指针所指端口及其后环形队列上是否有有效输入,若有,则接收环形方向上第一个有效的输入,同时将当前指针拨向该位置的下一个位置,作为下一拍的输入;否则,将当前指针向环形方向后拨一格,作为下一拍处理时的输入位置。

4.根据权利要求3所述的TCAM多通道虚拟化实现方法,其特征在于,所述轮询跳过空闲策略的最小延迟为N-1拍,最大延迟根据通道数量以及缓存情况确定,N为通道数量。

5.根据权利要求1所述的TCAM多通道虚拟化实现方法,其特征在于,所述轮询策略按照如下方法进行实施:依次检测N个通道缓存是否有数据,如果有数据,则将数据读出送给TCAM执行,直至缓存数据清空。

6.根据权利要求1所述的TCAM多通道虚拟化实现方法,其特征在于,所述排序策略按照如下方法进行实施:检测当前通道缓存命令包数量的多少,将缓存命令包数量多的通道排列在上,缓存命令包数量少的通道排列在下的顺序,对当前所有通道进行排序;

调度时,每次输出执行排在最上面的通道,并锁定该通道,直至将该缓存所有命令写入TCAM;同时,对当前的N-1个未锁定通道接收的包数量进行排序,当对锁定通道缓存数据释放完成后,则解锁该通道,同时输出上次未锁定通道排在最上面的通道,依次循环。

7.根据权利要求6所述的TCAM多通道虚拟化实现方法,其特征在于,所述排序策略的延迟根据通道数量N确定,采用如下公式计算:延迟=|(N-1)/2|+1。

8.一种TCAM多通道虚拟化实现系统,其特征在于,包括:

接收模块,用于并行接收N个通道TCAM的匹配命令信息,并将接收的数据传输至缓存模块;

缓存模块,用于缓存各个通道的匹配命令包信息,并将所有通道的缓存状态传输至策略选择模块和状态监控模块;还用于接收策略选择模块返回的策略,并根据策略输出包命令给TCAM;

状态监控模块,用于收集缓存通道信息、当前执行策略信息、TCAM总线利用率和/或丢包个数信息,并定时上传给计算机传输模块;

策略选择模块,用于根据通道数量以及流量信息自动选择策略,或用于接收上位机传输模块的配置信息,并制定固定策略,还用于将自动选择的策略或根据计算机配置信息制定出的固定策略返回给所述缓存模块;其中,根据计算机配置信息制定出的固定策略优先于自动选择的策略,所述自动选择的策略包括轮询策略、轮询跳过空闲策略和排序策略;

计算机传输模块,与CPU接口连接,用于接收控制命令以及上传当前状态。

9.根据权利要求8所述的TCAM多通道虚拟化实现系统,其特征在于,所述接收模块、缓存模块、状态监控模块、策略选择模块和上位机传输模块均由可编程器件FPGA实现,具体的为:FIFO或者RAM。

10.根据权利要求8所述的TCAM多通道虚拟化实现系统,其特征在于,所述轮询跳过空闲策略按照如下方法进行实施:将所有端口组成一个环形队列;

调度时,采用轮转的基本模式,每拍完成处理后,将当前拍选择的端口在环形队列上下移一位作为下一拍处理的输入位置;同时,在当拍处理时,检查当前指针所指端口及其后环形队列上是否有有效输入,若有,则接收环形方向上第一个有效的输入,同时将当前指针拨向该位置的下一个位置,作为下一拍的输入;否则,将当前指针向环形方向后拨一格,作为下一拍处理时的输入位置;

所述排序策略按照如下方法进行实施:

检测当前通道缓存命令包数量的多少,将缓存命令包数量多的通道排列在上,缓存命令包数量少的通道排列在下的顺序,对当前所有通道进行排序;

调度时,每次输出执行排在最上面的通道,并锁定该通道,直至将该缓存所有命令写入TCAM;同时,对当前的N-1个未锁定通道接收的包数量进行排序,当对锁定通道缓存数据释放完成后,则解锁该通道,同时输出上次未锁定通道排在最上面的通道,依次循环。

说明书 :

一种TCAM多通道虚拟化实现方法及系统

技术领域

[0001] 本发明涉及计算机通信技术领域,尤其涉及一种TCAM多通道虚拟化实现方法及系统。

背景技术

[0002] 伴随大数据概念的出现,数据信息传输速度慢的问题也日益突出,受到人们的广泛关注。随着互联网越来越深入人们的日常生活,网络流量不断增大,各种网络应用的数量也飞速增长,鉴于此,为识别网络中的流量类型以提供更优的服务质量和网络安全水平,数据包分类技术应运而生,且已成为现有互联网架构的核心组成部分。其中,基于三态内容寻址存储器(TCAM)的高速数据包分类机制因具有极高的包匹配速率,已成为了包分类技术的工业标准。但TCAM接口资源有限,无法完全适应如今复杂的网络处理。
[0003] 目前,提升TCAM数据传输速度的方法主要是通过优化缓存机制和物理接口,但随着网络技术不断发展,数据量增长的速度不断提高,现有技术中使用的传输方法已经无法满足要求,TCAM物理接口已经成为数据传输的瓶颈。而且,在现有技术中,为了最大程度的利用TCAM,使用多通道虚拟技术对虚拟的N个通道进行轮询查找,极大的浪费了总线资源。

发明内容

[0004] 本发明的目的在于提供一种TCAM多通道虚拟化实现方法及系统,从而解决现有技术中存在的前述问题。
[0005] 为了实现上述目的,本发明采用的技术方案如下:
[0006] 一种TCAM多通道虚拟化实现方法,包括如下步骤:
[0007] S1,并行接收N个通道数据,对每个通道数据进行缓存并监控每个通道的缓存状态,
[0008] S2,判断每个通道的缓存状态是否有数据溢出,如果是,则丢弃溢出的完整的整包数据;否则,判断是否自动选择出策略,如果是,则执行选择出的策略,否则,计算机根据上报的状态指标固定使用某种策略或制定固定策略,对接收到的数据执行所述固定策略;
[0009] 所述判断是否自动选择出策略,包括如下步骤:
[0010] S201,检测计算机是否下发策略控制命令,如果是,则执行S204;否则执行S202;
[0011] S202,检测当前通道数,如果当前通道数小于等于2,则执行S205,如果当前通道数大于2,则执行步骤S203;
[0012] S203,判断是否有FIFO溢出情况,如果没有,则执行S206;否则执行S207;
[0013] S204,选择出当前计算机配置的策略并执行;
[0014] S205,执行轮询策略;
[0015] S206,执行轮询跳过空闲策略;
[0016] S207,执行排序策略。
[0017] 优选地,S2中,所述丢弃溢出的完整的整包数据后,还包括步骤:每丢弃一个包,对丢包计数器加一,同时更新丢包计数寄存器。
[0018] 优选地,所述轮询跳过空闲策略按照如下方法进行实施:
[0019] 将所有端口组成一个环形队列;
[0020] 调度时,采用轮转的基本模式,每拍完成处理后,将当前拍选择的端口在环形队列上下移一位作为下一拍处理的输入位置;同时,在当拍处理时,检查当前指针所指端口及其后环形队列上是否有有效输入,若有,则接收环形方向上第一个有效的输入,同时将当前指针拨向该位置的下一个位置,作为下一拍的输入;否则,将当前指针向环形方向后拨一格,作为下一拍处理时的输入位置。
[0021] 优选地,所述轮询跳过空闲策略的最小延迟为N-1拍,最大延迟根据通道数量以及缓存情况确定,N为通道数量。
[0022] 优选地,所述轮询策略按照如下方法进行实施:依次检测N个通道缓存是否有数据,如果有数据,则将数据读出送给TCAM执行,直至缓存数据清空。
[0023] 优选地,所述排序策略按照如下方法进行实施:
[0024] 检测当前通道缓存命令包数量的多少,将缓存命令包数量多的通道排列在上,缓存命令包数量多的通道排列在下的顺序,对当前所有通道进行排序;
[0025] 调度时,每次输出执行排在最上面的通道,并锁定该通道,直至将该缓存所有命令写入TCAM;同时,对当前的N-1个未锁定通道接收的包数量进行排序,当对锁定通道缓存数据释放完成后,则解锁该通道,同时输出上次未锁定通道排在最上面的通道,依次循环。
[0026] 优选地,所述排序策略的延迟根据通道数量N确定,采用如下公式计算:
[0027] 延迟=|(N-1)/2|+1。
[0028] 一种TCAM多通道虚拟化实现系统,包括:
[0029] 接收模块,用于并行接收N个通道TCAM的匹配命令信息,并将接收的数据传输至缓存模块;
[0030] 缓存模块,用于缓存各个通道的匹配命令包信息,并将所有通道的缓存状[0031] 态传输至策略选择模块和状态监控模块;还用于接收策略选择模块返回的[0032] 策略,并根据策略输出包命令给TCAM;
[0033] 状态监控模块,用于收集缓存通道信息、当前执行策略信息、TCAM总线利[0034] 用率和/或丢包个数信息,并定时上传给计算机传输模块;
[0035] 策略选择模块,用于根据通道数量以及流量信息自动选择策略,或用于接收上位机传输模块的配置信息,并制定固定策略,还用于将自动选择的策略或根据计算机配置信息制定出的固定策略返回给所述缓存模块;其中,根据计算机配置信息制定出的固定策略优先于自动选择的策略,所述自动选择的策略包括轮询策略、轮询跳过空闲策略和排序策略;
[0036] 计算机传输模块,与CPU接口连接,用于接收控制命令以及上传当前状态。
[0037] 优选地,所述接收模块、缓存模块、状态监控模块、策略选择模块和上位机传输模块均由可编程器件FPGA实现,具体的为:FIFO或者RAM。
[0038] 优选地,所述轮询跳过空闲策略按照如下方法进行实施:
[0039] 将所有端口组成一个环形队列;
[0040] 调度时,采用轮转的基本模式,每拍完成处理后,将当前拍选择的端口在环形队列上下移一位作为下一拍处理的输入位置;同时,在当拍处理时,检查当前指针所指端口及其后环形队列上是否有有效输入,若有,则接收环形方向上第一个有效的输入,同时将当前指针拨向该位置的下一个位置,作为下一拍的输入;否则,将当前指针向环形方向后拨一格,作为下一拍处理时的输入位置;
[0041] 所述排序策略按照如下方法进行实施:
[0042] 检测当前通道缓存命令包数量的多少,将缓存命令包数量多的通道排列在上,缓存命令包数量多的通道排列在下的顺序,对当前所有通道进行排序;
[0043] 调度时,每次输出执行排在最上面的通道,并锁定该通道,直至将该缓存所有命令写入TCAM;同时,对当前的N-1个未锁定通道接收的包数量进行排序,当对锁定通道缓存数据释放完成后,则解锁该通道,同时输出上次未锁定通道排在最上面的通道,依次循环。
[0044] 本发明的有益效果是:本发明实施例提供的一种TCAM多通道虚拟化实现方法及系统,一方面,通过判断当前连接的通道数以及各个通道流量情况自动选择使用:轮询策略、排序策略和/或轮询跳过空闲策略,从而极大的减少了空闲周期,节约了总线成本;另一方面,通过采集各个通道信息,并将当前状态信息上报给计算机,计算机可以根据当前状态制定固定策略,从而给多通道虚拟化技术提供了极大的灵活性;所以,采用本发明实施例提供的方法及系统,实现了TCAM的多通道控制,提高了TCAM总线的有效利用率。

附图说明

[0045] 图1是本发明实施例提供的TCAM多通道虚拟化实现方法流程示意图;
[0046] 图2是本发明实施例中S3的实现流程示意图;
[0047] 图3是轮询跳过空闲策略工作原理示意图;
[0048] 图4是排序策略工作原理示意图;
[0049] 图5是本发明实施例提供的TCAM多通道虚拟化实现系统的结构示意图。

具体实施方式

[0050] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
[0051] 实施例一
[0052] 如图1-2所示,本发明实施例提供了一种TCAM多通道虚拟化实现方法,包括如下步骤:
[0053] S1,并行接收N个通道数据,对每个通道数据进行缓存并监控每个通道的缓存状态,
[0054] S2,判断每个通道的缓存状态是否有数据溢出,如果是,则丢弃溢出的完整的整包数据;否则,判断是否自动选择出策略,如果是,则执行选择出的策略,否则,计算机根据上报的状态指标固定使用某种策略或制定固定策略,对接收到的数据执行所述固定策略;
[0055] 所述判断是否自动选择出策略,包括如下步骤:
[0056] S201,检测计算机是否下发策略控制命令,如果是,则执行S204;否则执行S202;
[0057] S202,检测当前通道数,如果当前通道数小于等于2,则执行S205,如果当前通道数大于2,则执行步骤S203;
[0058] S203,判断是否有FIFO溢出情况,如果没有,则执行S206;否则执行S207;
[0059] S204,选择出当前计算机配置的策略并执行;
[0060] S205,执行轮询策略;
[0061] S206,执行轮询跳过空闲策略;
[0062] S207,执行排序策略。
[0063] 其中,S2中,所述丢弃溢出的完整的整包数据后,还包括步骤:每丢弃一个包,对丢包计数器加一,同时更新丢包计数寄存器。
[0064] 在本发明的一个优选实施例中,所述轮询跳过空闲策略按照如下方法进行实施:
[0065] 将所有端口组成一个环形队列;
[0066] 调度时,采用轮转的基本模式,每拍完成处理后,将当前拍选择的端口在环形队列上下移一位作为下一拍处理的输入位置;同时,在当拍处理时,检查当前指针所指端口及其后环形队列上是否有有效输入,若有,则接收环形方向上第一个有效的输入,同时将当前指针拨向该位置的下一个位置,作为下一拍的输入;否则,将当前指针向环形方向后拨一格,作为下一拍处理时的输入位置。
[0067] 轮询跳过空闲策略的工作原理如图3所示。
[0068] 采用上述的轮询跳过空闲策略,则可以最大可能的跳过空闲通道,相对于轮询策略大幅度减少了延迟。
[0069] 本实施例中,所述轮询跳过空闲策略的最小延迟为N-1拍,最大延迟根据通道数量以及缓存情况确定,N为通道数量。
[0070] 在本发明的一个优选实施例中,所述轮询策略可以按照如下方法进行实施:依次检测N个通道缓存是否有数据,如果有数据,则将数据读出送给TCAM执行,直至缓存数据清空。
[0071] 在本发明的一个优选实施例中,所述排序策略可以按照如下方法进行实施:
[0072] 检测当前通道缓存命令包数量的多少,将缓存命令包数量多的通道排列在上,缓存命令包数量多的通道排列在下的顺序,对当前所有通道进行排序;
[0073] 调度时,每次输出执行排在最上面的通道,并锁定该通道,直至将该缓存所有命令写入TCAM;同时,对当前的N-1个未锁定通道接收的包数量进行排序,当对锁定通道缓存数据释放完成后,则解锁该通道,同时输出上次未锁定通道排在最上面的通道,依次循环。
[0074] 排序策略的工作原理如图4所示。
[0075] 采用上述的排序策略,充分考虑了前级缓存承受情况,优先释放缓存较大通道,同时也最大限度的利用了TCAM的总线资源。
[0076] 本实施例中,所述排序策略的延迟根据通道数量N确定,可以采用如下公式计算:
[0077] 延迟=|(N-1)/2|+1。
[0078] 实施例二
[0079] 如图5所示,本发明实施例提供了一种TCAM多通道虚拟化实现系统,包括:
[0080] 接收模块,用于并行接收N个通道TCAM的匹配命令信息,并将接收的数据传输至缓存模块;
[0081] 缓存模块,用于缓存各个通道的匹配命令包信息,并将所有通道的缓存状[0082] 态传输至策略选择模块和状态监控模块;还用于接收策略选择模块返回的[0083] 策略,并根据策略输出包命令给TCAM;
[0084] 状态监控模块,用于收集缓存通道信息、当前执行策略信息、TCAM总线利[0085] 用率和/或丢包个数信息,并定时上传给计算机传输模块;
[0086] 策略选择模块,用于根据通道数量以及流量信息自动选择策略,或用于接收上位机传输模块的配置信息,并制定固定策略,还用于将自动选择的策略或根据计算机配置信息制定出的固定策略返回给所述缓存模块;其中,根据计算机配置信息制定出的固定策略优先于自动选择的策略,所述自动选择的策略包括轮询策略、轮询跳过空闲策略和排序策略;
[0087] 计算机传输模块,与CPU接口连接,用于接收控制命令以及上传当前状态。
[0088] 在本发明的一个优选实施例中,所述接收模块、缓存模块、状态监控模块、策略选择模块和上位机传输模块均由可编程器件FPGA实现,具体的为:FIFO或者RAM。
[0089] 在本发明的一个优选实施例中,所述轮询跳过空闲策略按照如下方法进行实施:
[0090] 将所有端口组成一个环形队列;
[0091] 调度时,采用轮转的基本模式,每拍完成处理后,将当前拍选择的端口在环形队列上下移一位作为下一拍处理的输入位置;同时,在当拍处理时,检查当前指针所指端口及其后环形队列上是否有有效输入,若有,则接收环形方向上第一个有效的输入,同时将当前指针拨向该位置的下一个位置,作为下一拍的输入;否则,将当前指针向环形方向后拨一格,作为下一拍处理时的输入位置;
[0092] 所述排序策略按照如下方法进行实施:
[0093] 检测当前通道缓存命令包数量的多少,将缓存命令包数量多的通道排列在上,缓存命令包数量多的通道排列在下的顺序,对当前所有通道进行排序;
[0094] 调度时,每次输出执行排在最上面的通道,并锁定该通道,直至将该缓存所有命令写入TCAM;同时,对当前的N-1个未锁定通道接收的包数量进行排序,当对锁定通道缓存数据释放完成后,则解锁该通道,同时输出上次未锁定通道排在最上面的通道,依次循环。
[0095] 通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的一种TCAM多通道虚拟化实现方法及系统,一方面,通过判断当前连接的通道数以及各个通道流量情况自动选择使用:轮询策略、排序策略和/或轮询跳过空闲策略,从而极大的减少了空闲周期,节约了总线成本;另一方面,通过采集各个通道信息,并将当前状态信息上报给计算机,计算机可以根据当前状态制定固定策略,从而给多通道虚拟化技术提供了极大的灵活性;所以,采用本发明实施例提供的方法及系统,实现了TCAM的多通道控制,提高了TCAM总线的有效利用率。
[0096] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。