Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND SYSTEM FOR COUNTING DATA PACKETS
Document Type and Number:
WIPO Patent Application WO/2011/150638
Kind Code:
A1
Abstract:
Disclosed is a method for counting data packets in the present invention, which comprises the following steps of: counting packet pulse signals when a low bit counter is in a counting state, and providing a carry signal when the low bit counter has expired; and acquiring data from an address of a random access memory (RAM) corresponding to the low bit counter which provides the carry signal, adding 1 to said data and then writing said data into said address. A system for counting data packets is also disclosed in the present invention. According to the technical scheme of the present invention, the occupancy rate of logical resources is reduced while the counting of the data packets in a network is finished at a high speed.

Inventors:
YANG, Jinmei (ZTE Plaza, Keji Road South Hi-Tech Industrial Park, Nansha, Shenzhen Guangdong 7, 518057, CN)
Application Number:
CN2010/079500
Publication Date:
December 08, 2011
Filing Date:
December 07, 2010
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ZTE CORPORATION (ZTE Plaza, Keji Road South Hi-Tech Industrial Park, Nansha, Shenzhen Guangdong 7, 518057, CN)
中兴通讯股份有限公司 (中国广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦, Guangdong 7, 518057, CN)
International Classes:
H04L12/24; G06F7/50
Attorney, Agent or Firm:
CHINA PAT INTELLECTUAL PROPERTY OFFICE (Suite 717, E-Wing CenterNo. 113 Zhichun Road, Haidian, Beijing 6, 100086, CN)
Download PDF:
Claims:
权利要求书

1、 一种数据包的计数方法, 其特征在于, 该方法包括:

当低位计数器为计数状态时, 对包脉冲信号进行计数, 当所述低位计 数器计满时, 发出进位信号;

从发出进位信号的低位计数器对应的 RAM的地址中获取数据,将所述 数据加 1后再写入所述地址。

2、 根据权利要求 1所述的方法, 其特征在于, 所述当低位计数器为计 数状态时, 对包脉冲信号进行计数之前, 该方法还包括:

根据数据包产生包脉冲信号。

3、 根据权利要求 2所述的方法, 其特征在于, 所述根据数据包产生包 脉冲信号为:

数据通道接口接收与其相连的数据仪表发送的数据包, 根据通道号和 数据包的类型产生多种包脉冲信号, 将所述包脉冲信号发送给通道。

4、 根据权利要求 1所述的方法, 其特征在于, 该方法还包括: 当低位计数器为清零状态时, 对低位计数器的数据清零; 计算通道中 所有低位计数器对应的 RAM的地址, 将所述地址中的数据清零。

5、 根据权利要求 4所述的方法, 其特征在于, 所述当低位计数器为清 零状态时, 对低位计数器的数据清零; 计算通道中所有低位计数器对应的 RAM的地址, 将所述地址中的数据清零为:

当低位计数器是清零状态时, 将自身的数据置为 0; 按轮巡方式轮巡到 有低位计数器是清零状态的通道时, 根据通道号和数据包的类型计算通道 内所有低位计数器对应的 RAM的地址, 并发送给状态机; 状态机将所述地 址中的数据置为 0。

6、 根据权利要求 1所述的方法, 其特征在于, 所述从发出进位信号的 低位计数器对应的 RAM的地址中获取数据,将所述数据加 1后再写入所述 地址之前还包括:

按轮巡方式轮巡到发出进位信号的低位计数器所在的通道时, 根据通 道号和数据包的类型计算低位计数器对应的 RAM 的地址, 将计算出的 RAM的地址发送给状态机。

7、 根据权利要求 1所述的方法, 其特征在于, 所述当低位计数器为计 数状态时, 对包脉冲信号进行计数, 当所述低位计数器计满时, 发出进位 信号为:

通道中的每个低位的计数器根据包头识别各自计数的包脉冲信号, 并 对各自的包脉冲信号进行计数, 当低位计数器计满时, 发出用于发出进位 请求的进位信号。

8、 根据权利要求 1至 7任一项所述的方法, 其特征在于, 所述从发出 进位信号的低位计数器对应的 RAM 的地址中获取数据, 将所述数据加 1 后再写入所述地址为:

状态机收到 RAM的地址后,发送给所述 RAM写使能脉冲信号, RAM 在下一个时钟的上升沿来临时, 输出自身所述地址存储的数据给状态机, 状态机将该数据加 1后发送给 RAM进行保存; 状态机完成进位工作后,将 自身的状态置为读写 RAM结束状态。

9、 根据权利要求 1至 7任一项所述的方法, 其特征在于, 所述将所述 数据加 1后再写入所述地址之后, 该方法还包括:

清除所述低位计数器的进位信号。

10、 根据权利要求 9所述的方法, 其特征在于, 所述清除所述低位计 数器的进位信号为:

状态机将自身的状态置为读写 RAM结束状态后,触发进位清除模块开 始工作, 所述进位清除模块根据该通道的通道号和发出进位信号的低位计 数器对应的数据包的类型, 产生进位清除脉冲, 并发送给状态机, 状态机 对产生进位信号的低位计数器的进位信号进行清除。

11、 一种数据包的计数系统, 其特征在于, 该系统包括: 低位计数器、 状态机、 RAM; 其中,

低位计数器, 用于当自身为计数状态时, 对包脉冲信号进行计数, 当 计满时, 发出进位信号;

状态机,用于从发出进位信号的低位计数器对应的 RAM的地址中获取 数据, 将所述数据加 1后再写入所述地址;

RAM, 用于为状态机提供自身的数据, 并保存状态机写入的数据。

12、 根据权利要求 11所述的系统, 其特征在于, 该系统进一步包括: 数据通道接口, 用于根据数据包产生包脉冲信号; 和 /或,

轮巡算法模块, 用于对通道进行轮巡, 当轮巡到有低位计数器是清零 状态或发出进位信号的通道时, 触发地址运算模块; 地址运算模块, 用于 当受到轮巡算法模块触发时, 根据通道号和数据包的类型计算低位计数器 对应的 RAM的地址, 并发送给状态机; 和 /或,

进位清除模块, 用于受到状态机的触发时根据通道的通道号和发出进 位信号的低位计数器对应的数据包的类型, 产生进位清除脉冲, 并发送给 状态机。

13、 根据权利要求 11或 12所述的系统, 其特征在于,

所述低位计数器还用于, 当自身为清零状态时, 对自身的数据清零; 所述状态机还用于, 将地址运算模块发送的 RAM 的地址中的数据清

Description:
一种数据包的计数方法及系统 技术领域

本发明涉及网络系统领域中的网络信息管理技 术, 尤其涉及一种数据 包的计数方法及系统。 背景技术

在多通道的网络系统中, 为了排除其中某个通道的故障, 或者进行网 络系统中数据流的计费, 都需要对数据包进行分类, 并在此基础上分别统 计网络系统的通道中各种类型的数据包的发送 和接收的数量。

现有技术中, 通常釆用两种方法计算网络系统中数据包的数 量。 第一 种方法是利用寄存器实现的, 例如, 网络系统中有 n个通道, 每个通道有 m种数据包, 每种数据包都需要一个 k位的计数器, 因为一个 k位的寄存 器可以实现一个 k位的二进制计数器, 因此至少需要占用 n*m*k个寄存器 才能实现数据包的计数; 此外, 每个计数器都要具备清零功能, 因为每一 个带清零功能的计数器都需要一个查找表(LUT , Look-Up-Table ), 所以 就还需要 n*m*k个 LUT, 寄存器和查找表都属于逻辑资源, 用于进行逻辑 运算。 第二种方法是利用随机存取存储器(RAM, Random Access Memory ) 实现的, 当有某种类型的数据包到达数据包的监控系统 , 并产生数据包的 计数脉冲, 该监控系统从 RAM对应的地址中读出计数器的值后,对该值加 1然后写入 RAM。 第一种实现方法的优点是计数的速度快, 缺点是如果对 多个通道和多种数据包进行计数, 因为使用了较多的计数器和查找表, 从 而占用大量逻辑资源。 第二种实现方法的优点是占用较少的寄存器资 源, 但是由于读写 RAM至少需要 3个时钟周期, 所以如果计数脉冲密集, 计数 器的运算速度将不能满足高速技术的需求。 申请号为 03132077.5 , 发明名称为网络信息交换中多端口收发包数统 计方法的专利申请中, 提出一种数据包的计数方法, 使用现场可编程门阵 列 (FPGA, Field—Programmable Gate Array )在总线转换过程中进行包緩 存与分类计数;在所述 FPGA内部设置 RAM;尤其是釆用 FPGA中的 RAM 存放分类计数的结果。这种方法利用 RAM资源代替触发器资源保存计数器 的计数值, 可以减少统计消耗触发器过多的问题, 从而降低成本。 但是这 个方法存在两个缺陷: 其一是只利用 RAM实现计数, 而 RAM的数据读出 再写入至少需要 3个时钟周期, 该专利的应用场合是要求在 96个时钟周期 内, 因此需要统计的数据包的个数不能超过 32个, 否则将没有足够的时间 进行处理, 因此具有很大的局限性; 其二是虽然该方法针对多个通道的数 据包可以同时计数, 但是无法对单个通道的计数器进行清零, 如果某个通 道需要重新开始计数, 只能对整个系统复位, 因此降低了系统的灵活性。 发明内容

有鉴于此, 本发明的主要目的在于提供一种数据包的计数 方法及系统, 在降低逻辑资源使用率的同时高速的完成网络 中数据包数量的计算工作。

为达到上述目的, 本发明的技术方案是这样实现的:

本发明提供一种数据包的计数方法, 包括:

当低位计数器为计数状态时, 对包脉冲信号进行计数, 当所述低位计 数器计满时, 发出进位信号;

从发出进位信号的低位计数器对应的 RAM的地址中获取数据,将所述 数据加 1后再写入所述地址。

上述方法中, 所述当低位计数器为计数状态时, 对包脉冲信号进行计 数之前, 该方法还包括:

根据数据包产生包脉冲信号。

上述方法中, 所述根据数据包产生包脉冲信号为: 数据通道接口接收与其相连的数据仪表发送的 数据包, 根据通道号和 数据包的类型产生多种包脉冲信号, 将所述包脉冲信号发送给通道。

上述方法中, 该方法还包括:

当低位计数器为清零状态时, 对低位计数器的数据清零; 计算通道中 所有低位计数器对应的 RAM的地址, 将所述地址中的数据清零。

上述方法中, 所述当低位计数器为清零状态时, 对低位计数器的数据 清零; 计算通道中所有低位计数器对应的 RAM的地址,将所述地址中的数 据清零为:

当低位计数器是清零状态时, 将自身的数据置为 0; 按轮巡方式轮巡到 有低位计数器是清零状态的通道时, 根据通道号和数据包的类型计算通道 内所有低位计数器对应的 RAM的地址, 并发送给状态机; 状态机将所述地 址中的数据置为 0。

上述方法中,所述从发出进位信号的低位计数 器对应的 RAM的地址中 获取数据, 将所述数据加 1后再写入所述地址之前还包括:

按轮巡方式轮巡到发出进位信号的低位计数器 所在的通道时, 根据通 道号和数据包的类型计算低位计数器对应的 RAM 的地址, 将计算出的 RAM的地址发送给状态机。

上述方法中, 所述当低位计数器为计数状态时, 对包脉冲信号进行计 数, 当所述低位计数器计满时, 发出进位信号为:

通道中的每个低位的计数器根据包头识别各自 计数的包脉冲信号, 并 对各自的包脉冲信号进行计数, 当低位计数器计满时, 发出用于发出进位 请求的进位信号。

上述方法中,所述从发出进位信号的低位计数 器对应的 RAM的地址中 获取数据, 将所述数据加 1后再写入所述地址为:

状态机收到 RAM的地址后,发送给所述 RAM写使能脉冲信号, RAM 在下一个时钟的上升沿来临时, 输出自身所述地址存储的数据给状态机, 状态机将该数据加 1后发送给 RAM进行保存; 状态机完成进位工作后,将 自身的状态置为读写 RAM结束状态。

上述方法中, 所述将所述数据加 1 后再写入所述地址之后, 该方法还 包括:

清除所述低位计数器的进位信号。

上述方法中, 所述清除所述低位计数器的进位信号为:

状态机将自身的状态置为读写 RAM结束状态后,触发进位清除模块开 始工作, 所述进位清除模块根据该通道的通道号和发出 进位信号的低位计 数器对应的数据包的类型, 产生进位清除脉冲, 并发送给状态机, 状态机 对产生进位信号的低位计数器的进位信号进行 清除。

本发明还提供一种数据包的计数系统, 包括: 低位计数器、 状态机、 RAM; 其中,

低位计数器, 用于当自身为计数状态时, 对包脉冲信号进行计数, 当 计满时, 发出进位信号;

状态机,用于从发出进位信号的低位计数器对 应的 RAM的地址中获取 数据, 将所述数据加 1后再写入所述地址;

RAM, 用于为状态机提供自身的数据, 并保存状态机写入的数据。 上述系统中, 该系统进一步包括:

数据通道接口, 用于根据数据包产生包脉冲信号; 和 /或,

轮巡算法模块, 用于对通道进行轮巡, 当轮巡到有低位计数器是清零 状态或发出进位信号的通道时, 触发地址运算模块; 地址运算模块, 用于 当受到轮巡算法模块触发时, 根据通道号和数据包的类型计算低位计数器 对应的 RAM的地址, 并发送给状态机; 和 /或,

进位清除模块, 用于受到状态机的触发时根据通道的通道号和 发出进 位信号的低位计数器对应的数据包的类型, 产生进位清除脉冲, 并发送给 状态机。

上述系统中, 所述低位计数器还用于, 当自身为清零状态时, 对自身 的数据清零;

所述状态机还用于, 将地址运算模块发送的 RAM 的地址中的数据清 本发明提供的数据包的计数方法及系统, 计数器对包脉冲信号进行计 数,计满时发出进位信号,将发出进位信号的 计数器对应的 RAM的地址中 的数据加 1 ; 利用将寄存器和 RAM结合的方法对网络中数据包进行计数, 达到了高速的计算速度, 使得计算速度接近完全利用寄存器实现的计数 速 度, 同时降低了逻辑资源使用率, 与单独使用寄存器进行计数的方法相比, 节省了大量的逻辑资源; 此外, 在不影响其它通道计数的同时, 可以实现 对某一通道的计数器清零, 提高了系统的灵活性。 附图说明

图 1是本发明实现数据包的计数方法的流程示意 ;

图 2是本发明实现数据包的计数系统的结构示意 ; 具体实施方式

本发明的基本思想是: 当低位计数器为计数状态时,对包脉冲信号进 行计数, 当所述低位计数器计满时, 发出进位信号; 从发出进位信号的 低位计数器对应的 RAM的地址中获取数据, 将所述数据加 1后再写入 所述地址。

下面通过附图及具体实施例对本发明再做进一 步的详细说明。

本发明提供一种数据包的计数方法, 图 1 是本发明实现数据包的计数 方法的流程示意图, 如图 1所示, 该方法包括以下步骤: 步骤 101 , 根据数据包产生包脉冲信号;

具体的, 数据通道接口的一侧连接具有收发数据包功能 的数据仪表, 接收数据仪表发送的数据包; 数据通道接口的另一侧与多个通道连接, 每 个通道中存在多种类型的数据包, 每个通道中的每种数据包都配有一个二 进制计数器进行计数; 数据通道接口根据通道号和数据包的类型产生 多种 包脉冲信号, 并将每种包脉冲信号发送给对应的通道。

步骤 102, 低位计数器接收包脉冲信号, 并判断自身的状态, 如果是计 数状态, 就执行步骤 103 , 如果是清零状态, 就执行步骤 108;

具体的, 存在 n个通道, 每个通道有 m种数据包, 每种数据包都需要 一个 k位的二进制计数器进行计数, n*m个 i位寄存器作为 k位的二进制计 数器的低 i位的计数器, 称为低位计数器; 位宽为 j且深度为 n*m的 RAM 作为 k位二进制计数器的高 j位的计数器, 且 i+j=k, 每个 RAM的地址与 一个低 i位的计数器对应; 其中, i的值根据通道的数量和数据包的种类而 定, 当通道的数量较多或者数据包的种类较多时, i的值可以取的大一些, 这样低 i位的计数器发出进位信号的频率会降低,就 足够的时间处理进位 信号; 如果通道的数量较少或者数据包的种类较少时 , i的值可以取的小一 些; 低 i位的计数器和 RAM都通过信息交互接口与交换机的 CPU相连, 便于读取低位计数器的数据和 RAM的数据;

CPU通过信息交互接口, 对低位计数器的状态进行配置, 信息交互接 口中有多个寄存器, 每个寄存器对应一个通道中的所有低位计数器 , CPU 根据当前需求对每个寄存器的值进行设置, 例如, 当需要进行对某一通道 中包脉冲信号中的数据包进行计数时, 将寄存器的值设置为 1 ,表示该寄存 器对应的所有的低位计数器的状态为计数状态 ; 当对包脉冲信号中数据包 计数完毕时, 可以读取低位计数器的数据和 RAM的数据, 读取完数据, 就 可以对低位计数器和 RAM进行清零, 以便低位计数器和 RAM可以继续计 数, 此时将寄存器的值设置为 0, 表示低位计数器的状态为清零状态; 通道 中的低位计数器接收数据通道接口发送的包脉 冲信号, 低位计数器通过读 取信息交互接口中对应的寄存器的值判断自身 的状态, 如果是计数状态, 就执行步骤 103 , 如果是清零状态, 就执行步骤 108。

步骤 103,低位计数器对包脉冲信号进行计数,当计 满时发出进位信号; 具体的,通道中的每个 k位的二进制计数器的低 i位的计数器根据包头 识别各自计数的包脉冲信号, 并对各自的包脉冲信号进行计数; 当低位计 数器计满时发出进位信号, 即可以将 FPGA内部的触发器的值置为 1 ,表示 进位信号有效, 发出进位信号相当于向轮巡算法模块发出进位 请求; 发出 的进位信号同时可以触发状态机, 使其进入准备工作状态; 例如, 如果 k 位的二进制计数器的低 4位的计数器对包脉冲信号进行计数, 当低 4位的 计数器的值是 1111时, 如果再有包脉冲信号, 该计数器就会加 1然后变成 0000, 这时表示低 4位的计数器已经计满, 就发出一个进位信号, 此时该 计数器会加 1后变成 0000, 即实现了进位后自动从零开始计数, 所以可以 执行步骤 102。

步骤 104, 计算发出进位信号的低位计数器对应的 RAM的地址; 具体的, 轮巡算法模块对所有通道进行轮巡, 判断通道中的每个低位 计数器是否发出进位信号, 当判断出某个通道的某个类型的数据包对应的 低位计数器发出进位信号时, 轮巡算法模块就暂时停留在该通道, 触发地 址运算模块; 地址运算模块根据通道号和数据包的类型计算 该低位计数器 对应的 RAM的地址, 将计算出的 RAM的地址发送给状态机; 例如, 存在 8个通道, 每个通道有 16种类型的数据包, 现在第 2个通道的第 5种数据 包的进位信号为 1 , 那么地址运算模块计算出的 RAM 的地址是二进制数 01100, 其中, 前两位 01表示第 2个通道, 后三位 100表示第 5种数据包。

步骤 105 ,获取 RAM的地址中的数据,将该数据加 1后再写入该地址; 具体的, 状态机收到地址运算模块发送的 RAM 的地址后, 发送给该 RAM 一个写使能脉冲信号, RAM收到该写使能脉冲信号后, 在下一个时 钟的上升沿来临时, 输出自身对应地址存储的数据给状态机, 状态机将该 数据加 1 ,在下一个时钟的上升沿来临时发送给 RAM加 1后的数据, RAM 将加 1 后的数据在对应地址进行保存; 状态机完成进位工作后, 将自身的 状态置为读写 RAM结束状态。

步骤 106, 清除该低位计数器的进位信号;

具体的,状态机将自身的状态置为读写 RAM结束状态后, 触发进位清 除模块开始工作, 进位清除模块就根据该通道的通道号和发出进 位信号的 低位计数器对应的数据包的类型, 产生一个进位清除脉冲, 将该进位清除 脉冲发送给状态机; 当状态机收到进位清除模块发送的进位清除脉 冲时, 对产生进位信号的低位计数器的进位信号进行 清除, 即将实现进位信号的 触发器的值由 1改为 0。

步骤 107, 判断该通道是否还有进位信号, 如果有, 就执行步骤 104, 如果没有就执行步骤 110;

具体的, 轮巡算法模块判断当前所在的通道中是否还有 进位信号, 如 果有, 就执行步骤 104, 如果没有就执行步骤 110。

步骤 108,对低位计数器的数据清零, 并计算通道中所有低位计数器对 应的 RAM的地址;

具体的, 当低位计数器的状态是清零状态时, 将 FPGA 内部的触发器 的值置为 1 ; 同时该低位计数器将自身的数据置为 0; 轮巡算法模块对所有 通道进行轮巡, 根据触发器的值判断通道中是否有低位计数器 的状态是清 零状态, 如果有, 轮巡算法模块就暂时停留在该通道, 触发地址运算模块; 地址运算模块根据通道号和数据包的类型计算 该通道内所有低位计数器对 应的 RAM的地址, 将计算出的 RAM的地址发送给状态机。 步骤 109, 将 RAM的地址中的数据清零;

具体的, 状态机收到地址运算模块发送的该通道的所有 低位计数器对 应的 RAM的地址, RAM的地址是二进制数, 所以状态机按照 RAM的地 址由小到大的顺序, 依次读取地址中的数据, 然后将该数据置为 0。

步骤 110, 轮巡其他通道;

具体为, 当处理完某通道的中的进位请求后, 或者, 当对某通道中的 所有低位计数器和 RAM 中的数据清零后, 轮巡算法模块继续轮巡其他通 道; 釆用轮巡算法模块对所有通道轮巡的方式, 而不是釆用根据通道设置 的优先级的进行处理的方式, 可以避免几个通道中的低位计数器同时发出 进位信号时, 优先级最低的通道不能够及时得到处理的情况 。

为实现上述方法, 本发明还提供一种数据包的计数系统, 图 2是本发 明实现数据包的计数系统的结构示意图, 如图 2 所示, 该系统包括: 低位 计数器 21、 状态机 22、 RAM23; 其中,

低位计数器 21 , 用于当自身为计数状态时, 对包脉冲信号进行计数, 当计满时, 发出进位信号;

低位计数器 21还用于, 当自身为清零状态时, 并对自身的数据清零; 状态机 22 , 用于从发出进位信号的低位计数器 21对应的 RAM23的地 址中获取数据, 将所述数据加 1后再写入所述地址;

状态机 22还用于,将地址运算模块 26发送的 RAM的地址中的数据清 零;

状态机 22从发出进位信号的低位计数器 21对应的 RAM的地址中获取 数据, 将所述数据加 1后再写入所述地址为: 状态机 22收到地址运算模块 26发送的 RAM23的地址后, 发送给所述 RAM23 —个写使能脉冲信号, RAM23在下一个时钟的上升沿来临时, 输出自身存储的数据给状态机 22, 状态机 22将该数据加 1后发送给 RAM23进行保存;状态机 22完成进位工 作后, 将自身的状态置为读写 RAM结束状态, 并触发进位清除模块 27开 始工作;

RAM23 , 用于为状态机 22提供自身的数据, 并保存状态机 22写入的 数据。

该系统进一步还可以包括: 数据通道接口 24;

数据通道接口 24, 用于根据数据包产生包脉冲信号;

数据通道接口 24根据数据包产生包脉冲信号为: 数据通道接口 24接 收与其相连的数据仪表发送的数据包, 根据通道号和数据包的类型产生多 种包脉冲信号, 将所述包脉冲信号发送给通道;

该系统进一步还可以包括: 轮巡算法模块 25、地址运算模块 26; 其中, 轮巡算法模块 25 , 用于对通道进行轮巡, 当轮巡到有低位计数器 21是 清零状态或发出进位信号的通道时, 触发地址运算模块 26;

地址运算模块 26, 用于当受到轮巡算法模块 25触发时,根据通道号和 数据包的类型计算低位计数器 21对应的 RAM23的地址, 并发送给状态机

22;

该系统进一步还可以包括: 进位清除模块 27;

进位清除模块 27 ,用于受到状态机 22的触发时根据通道的通道号和发 出进位信号的低位计数器 21对应的数据包的类型, 产生进位清除脉冲, 并 发送给状态机 22。

以上所述, 仅为本发明的较佳实施例而已, 并非用于限定本发明的保 护范围, 凡在本发明的精神和原则之内所作的任何修改 、 等同替换和改进 等, 均应包含在本发明的保护范围之内。