掌桥专利:专业的专利平台
掌桥专利
首页

一种流量处理系统及方法

文献发布时间:2023-06-19 19:21:53


一种流量处理系统及方法

技术领域

本发明涉及通信领域,具体而言,涉及一种流量处理系统及方法。

背景技术

现有技术中,为了控制芯片面积/成本,交换芯片的片内缓存规格一般都比较有限,如常见接入交换芯片的片内缓存在1~2MB之间。在网络流量突发的场景下,例如发生多个输入端口往1个输出端口发送流量,由于输出带宽比输入带宽小,突发的输入网络流量需要暂存在片内缓存。由于片内缓存容量有限,造成突发的网络流量产生丢包,最终影响流量处理效果。

发明内容

本发明的目的在于提供一种流量处理系统及方法,能够对突发网络流量进行处理,避免对突发流量进行丢包。

为了实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本申请实施例提供了一种流量处理系统,所述系统包括:

数据接收模块、队列编号产生模块、队列调度模块、数据输出模块、外挂大容量缓存颗粒、片内缓存模块;

所述接收模块用于对数据接收;

所述片内缓存模块用于将数据存储;

所述队列编号产生模块用于根据数据的描述符信息中的真实目的端口产生队列编号,基于所述队列编号将所述数据对应的描述符信息发往对应的队列中,确定发往各队列的描述符信息的数量和该队列的长度阈值,将超过所述长度阈值的描述符信息添加至DMA队列中,其中,所述数据的描述符信息包括数据的真实目的端口;

所述队列调度模块用于基于调度规则对不同队列中的描述符信息进行调度;

所述数据输出模块用于接收所述队列调度模块调度的描述符信息,基于所述调度的描述符信息从所述片内缓存模块中获取对应的待处理数据,将所述待处理数据输出;

所述外挂大容量缓存颗粒用于将所述DMA队列中描述符信息对应的数据进行暂存。

在可选的实施方式中,所述队列编号产生模块还用于将每个队列的长度与该队列对应的长度阈值进行比较,在该队列的长度等于所述长度阈值的情况下,将该队列的状态设置为拥塞状态,在接收到所述数据接收模块发送的发往拥塞状态的第一数据时,将所述第一数据的描述符信息添加至所述DMA队列中。

在可选的实施方式中,所述系统还包括DMA;

所述DMA用于传输目的端口为DMA的接收数据;

所述DMA还用于将第一数据发送至外挂大容量缓存颗粒,其中,所述第一数据为发往目标队列的数据,目标队列为拥塞状态的队列。

在可选的实施方式中,所述队列编号产生模块还用于将所述第一数据的描述符信息中的存储使能更新为暂存存储,将所述第一数据的描述符信息中添加目的端口为DMA。

在可选的实施方式中,所述系统还包括CPU;

所述CPU用于确定所述片内缓存模块的存储空间,在检测到所述目标队列的存储空间释放后,从所述外挂大容量缓存颗粒中获取与所述目标队列对应的第二数据,将所述第二数据发送至所述数据接收模块,其中,所述片内缓存模块包括不同的存储空间,不同存储空间用于存储除DMA队列以外的队列中描述符信息对应的数据。

在可选的实施方式中,所述数据接收模块将所述第二数据发送至所述队列编号产生模块,所述队列编号产生模块将所述第二数据对应的描述符信息发往所述目标队列。

在可选的实施方式中,所述外挂大容量缓存颗粒还用于实时确定不同外挂队列的数据的存储数量;

所述数据接收模块还用于接收新的数据,在所述外挂大容量缓存颗粒存储的目标外挂队列的存储数量清零,且目标队列的队列长度小于长度阈值时,将所述新的数据对应的描述符信息发往所述队列编号产生模块的目标队列中,并将目标队列的拥塞状态更新为未拥塞状态,其中,所述目标外挂队列与所述目标队列的队列编号一致。

在可选的实施方式中,所述数据输出模块具体用于:接收所述队列调度模块调度的待处理描述符信息,基于所述待处理描述符信息从所述片内缓存模块中获取待处理数据,基于所述待处理描述符信息确定所述待处理数据的真实目的端口,将所述待处理数据发送到所述真实目的端口。

在可选的实施方式中,所述外挂大容量缓存颗粒包括双倍速率同步动态随机存储器或者四倍数据速率静态随机存取存储器。

第二方面,本申请实施例提供了一种流量处理方法,通过所述流量处理系统,对流量进行处理。

本申请具有以下有益效果:

本申请对流量处理系统进行设计,系统包括数据接收模块、队列编号产生模块、队列调度模块、数据输出模块、外挂大容量缓存颗粒、片内缓存模块,接收模块用于对数据接收,片内缓存模块用于将数据存储,队列编号产生模块用于对数据产生队列编号,基于数据的描述符信息发往对应队列中,确定发往各队列的描述符信息的数量和该队列的长度阈值,将超过长度阈值的描述符信息添加至DMA队列中,队列调度模块用于基于调度规则对不同队列中的描述符信息进行调度,数据输出模块用于接收队列调度模块调度的描述符信息,基于调度的描述符信息从片内缓存模块中获取对应的待处理数据,将待处理数据输出,外挂大容量缓存颗粒用于将DMA队列中描述符信息对应的数据进行暂存。在出现突发流量时,将突发的网络流量分流到外挂大容量缓存颗粒进行缓存,再将缓存的数据再环回送到数据接收模块进行正常转发,满足报文输出保序的要求,避免在发生突发流量时,对数据进行丢包。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需

要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实5施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在

不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的流量处理系统的结构示意图;

图2为本发明实施例提供的一种流量处理方法的流程示意图之一;

图3为本发明实施例提供的一种流量处理方法的流程示意图之二;

图4为本发明实施例提供的一种流量处理方法的流程示意图之三;

图5为本发明实施例提供的一种流量处理方法的流程示意图之四。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发

明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,5显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常

在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限

制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发0明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

5在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”

等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。

经过发明人大量研究发现,现有技术中,为了控制芯片面积/成本,交换芯片的片内缓存规格一般都比较有限,如常见接入交换芯片的片内缓存在1~2MB之间。在网络流量突发的场景下,例如发生多个输入端口往1个输出端口发送流量,由于输出带宽比输入带宽小,突发的输入网络流量需要暂存在片内缓存。由于片内缓存容量有限,造成突发的网络流量产生丢包,最终影响流量处理效果。

有鉴于对上述问题的发现,本实施例提供了一种流量处理系统及方法,能够通过流量处理系统的接收模块用于对数据接收,流量处理系统的片内缓存模块用于将数据存储,流量处理系统的队列编号产生模块用于对数据产生队列编号,基于数据的描述符信息发往对应队列中,确定发往各队列的描述符信息的数量和该队列的长度阈值,将超过长度阈值的描述符信息添加至DMA队列中,流量处理系统的队列调度模块用于基于调度规则对不同队列中的描述符信息进行调度,流量处理系统的数据输出模块用于接收队列调度模块调度的描述符信息,基于调度的描述符信息从片内缓存模块中获取对应的待处理数据,将待处理数据输出,流量处理系统的外挂大容量缓存颗粒用于将DMA队列中描述符信息对应的数据进行暂存。在出现突发流量时,将突发的网络流量分流到外挂大容量缓存颗粒进行缓存,再将缓存的数据再环回送到数据接收模块进行正常转发,满足报文输出保序的要求,避免在发生突发流量时,对数据进行丢包,下面对本实施例提供的方案进行详细阐述。

所述流量处理系统还包括流量处理装置、存储器及处理器。

所述存储器及处理器各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述流量处理装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器中或固化在所述流量处理装置的操作系统(operating system,OS)中的软件功能模块。所述处理器用于执行所述存储器中存储的可执行模块,例如所述流量处理装置所包括的软件功能模块及计算机程序等。

其中,所述存储器可以是,但不限于,随机存取存储器(RandomAccess Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable ProgrammableRead-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable ProgrammableRead-Only Memory,EEPROM)等。其中,存储器用于存储程序,所述处理器在接收到执行指令后,执行所述程序。

请参照图1,为一种流量处理系统的结构示意图,以下将系统包括各个模块进行详细阐述。

所述系统包括:数据接收模块111、队列编号产生模块112、队列调度模块113、数据输出模块114、外挂大容量缓存颗粒115、片内缓存模块116;

所述数据接收模块111用于对数据接收;所述片内缓存模块116用于将数据存储;所述队列编号产生模块112用于根据数据的描述符信息中的真实目的端口产生队列编号,基于所述队列编号将所述数据对应的描述符信息发往对应的队列中,确定发往各队列的描述符信息的数量和该队列的长度阈值,将超过所述长度阈值的描述符信息添加至DMA队列中,其中,所述数据的描述符信息包括数据的真实目的端口;所述队列调度模块113用于基于调度规则对不同队列中的描述符信息进行调度;所述数据输出模块114用于接收所述队列调度模块调度的描述符信息,基于所述调度的描述符信息从所述片内缓存模块中获取对应的待处理数据,将所述待处理数据输出;所述外挂大容量缓存颗粒115用于将所述DMA队列中描述符信息对应的数据进行暂存。

在一示例中,所述流量处理系统还包括DMA117(Direct Memory Access,直接存储器访问),DMA用于传输目的端口为DMA的接收模块接收的数据,DMA还用于将第一数据发送至外挂大容量缓存颗粒中,第一数据为发往目标队列的数据,目标队列为拥塞状态的队列。

在一示例中,数据接收模块从接口单元1接收10个数据包,数据接收模块对接收到的10个数据包进行合规检查,符合规则要求的数据包在片内缓存模块的缓存空间足够的情况下,将数据包写入片内缓存模块中。数据接收模块确定每个数据包的描述符信息,描述符信息包括数据包的长度、在片内缓存模块的存储地址、数据包的真实目的端口、优先级信息、数据包的类型等。数据接收模块将10个数据包的描述符信息发送至队列编号产生模块。

队列编号产生模块基于数据接收模块发送的10个数据包的描述符信息中的真实目的端口,产生10个数据包对应的描述符信息的队列编号,当10个数据包中1-10号数据包的真实目的端口为接口单元2时,则10个数据包对应的描述符对应的队列编号均为接口单元2对应的队列,将10个数据包对应的描述符信息发往接口单元2对应的队列中。

在另一示例中,队列编号产生模块基于数据接收模块发送的10个数据包的描述符信息中的真实目的端口和优先级信息,当数据包1-10的真实目的端口为接口单元2时,且1-7数据包的优先级为第一优先级,8-10数据包的优先级为第二优先级,则将数据包1-7的描述符信息发往接口单元2中的第一优先级对应的队列中,将数据包8-10的描述符信息发往接口单元2中第二优先级对应的队列中。

在进行流量处理之前,预先为不同队列编号的队列设置长度阈值,例如对队列编号为接口单元1的队列的长度阈值设置为5,在发往接口单元1的数据包的描述符信息的数量超过长度阈值时,超过长度阈值的6-10数据包的描述符信息添加至DMA队列中,将1-5数据包的描述符信息添加至接口单元1对应的队列中。

队列调度模块将DMA队列中的6-10描述符信息的数据包通过DMA通道送到外挂大容量缓存颗粒中进行暂存。

在一示例中,当数据接收单元接收到10个真实目的端口为接口单元1的数据包时,将1-5数据包的描述符信息发往队列编号为接口单元1的队列中,且队列编号为接口单元1的队列的长度阈值为5,片内缓存模块中存储1-5数据包,外挂大容量缓存颗粒中缓存6-10的数据包,当队列调度模块对接口单元1的队列中的1号数据包的描述符信息进行调度,从片内缓存模块中获取1号数据包,并将1号数据包从数据输出模块输出,此时片内缓存模块中释放出原先存储1号数据包的存储空间,从外挂大容量缓存颗粒中获取队列编号为接口单元1的队列中的6号数据包,将6号数据包发往数据接收模块,数据接收模块对6号数据包进行接收,并确定6号数据包的描述符信息,队列编号产生模块基于6号数据包的描述符信息,为6号数据包的描述符信息产生队列编号为接口单元1的队列编号,将6号数据包对应的描述符信息发往队列编号为接口单元1的队列中,6号数据包的描述符信息排列在5号数据包的描述符信息之后,并将6号数据包存储至片内缓存模块中,队列调度模块基于调度规则对6号数据包对应的描述符信息进行调度时,数据输出模块从片内缓存模块中读取6号数据包对应的描述符信息对应的数据包,确定6号数据包的描述符信息中的真实目的端口,将6号数据包发往对应的真实目的端口。

为了对流量按序处理,如图2所示,为流量处理步骤流程示意图,应用于流量处理系统的队列编号产生模块,具体包括以下步骤:

步骤201:将每个队列的长度与该队列对应的长度阈值进行比较。

捕捉202:在该队列的长度等于长度阈值的情况下,将该队列的状态设置为拥塞状态。

步骤203:在接收到数据接收模块发送的发往拥塞状态的第一数据时,将第一数据的描述符信息添加至DMA队列中。

确定每个队列的长度,每个队列的长度基于每个队列中包含的描述符信息进行确定,在某个队列包含三个描述符信息时,确定该队列的长度为3。

为每个队列均设置长度阈值,由于队列中各描述符信息对应的数据存储在片内缓存模块中,片内缓存模块中包含不同的存储空间,不同存储空间

存储不同队列编号中不同描述符信息对应的数据,为每个队列设置长度阈5值,即为片内缓存模块中每个存储空间的上限。

将每个队列的长度与该队列对应的长度阈值进行比较,示例性的,当包含一个队列A,队列A的长度阈值为5,确定队列A的长度也为5,则队列A的长度等于队列A的长度阈值,为队列A设置为拥塞状态。当队列A的长度为4时,则队列A的长度小于队列A的长度阈值,则队列A的状态为0未拥塞状态。在队列A的状态为拥塞状态时,当数据接收模块接收到新的数据包11,队列编号产生模块确定数据包11的队列编号为队列A,此时队列A的状态为拥塞状态,将数据包11对应的描述符信息添加至DMA队列中,此时队列A中不再增加数据包11的描述符信息,以避免由于片内缓存

模块中队列A的存储空间已满,将数据包11丢弃,导致无法对数据包115进行转发的操作。

为了区分发往DMA中的数据,应用于流量处理系统的队列编号产生模块,如图3所示,为流量处理步骤流程示意图,应用于流量处理系统的队列编号产生模块,具体包括以下步骤:

步骤301:接收发送至目标队列的第一数据。

0步骤302:将第一数据的描述符信息中的存储使能更新为暂存存储,将

第一数据的描述符信息中添加目的端口为DMA。

队列编号产生模块一旦收到发往拥塞状态的目标队列的第一数据时,将第一数据对应的数据包的描述符信息中的存储使能更新为暂存存储,并

将第一数据的数据包的描述符信息中添加目的端口为DMA,基于描述符信5息中的目的端口DMA,将第一数据包的队列编号强制修改为DMA队列。

流量处理系统还包括CPU,为了实现对突发流量的处理,如图4所示,为流量处理步骤流程示意图,具体包括以下步骤:

步骤401:CPU确定片内缓存的存储空间。

步骤402:在检测到目标队列的存储空间释放后,从外挂大容量缓存颗粒中获取与目标队列对应的第二数据。

步骤403:将第二数据发送至数据接收模块。

步骤404:数据接收模块将第二数据发送至队列编号产生模块。

步骤405:队列编号产生模块将所第二数据对应的描述符信息发往目标队列。

CPU确定片内缓存的存储空间的方式可以为:CPU通过芯片的寄存器访问接口实时读取片内缓存的存储空间数值。

超过长度阈值的数据即为突发流量,在超过长度阈值的数据存储至外挂大容量缓存颗粒中时,对于突发流量的处理,CPU实时监测片内缓存模块的存储空间,监测片内缓存模块的目标队列的存储空间是否存在释放,在监测到片内缓存模块的目标队列的存储空间释放,从外挂大容量缓存颗粒中获取与目标队列对应的第二数据,将第二数据发送至数据接收模块进行处理。示例性的,在CPU检测到片内缓存模块中拥塞状态的队列A释放空间后,从外挂大容量缓存颗粒中获取队列A的第二数据,将第二数据发送至接收模块进行处理。

需要说明的是,外挂大容量存储颗粒中不同外挂队列的数据按照数据接收模块的接收顺序进行存储,外挂大容量存储颗粒中的外挂队列的队列编号与片内缓存的队列编号一一对应。

不同外挂队列中存储的数据按照接收顺序存储,且从外挂大容量缓存颗粒中读取数据时,基于存储的顺序进行读取。外挂大容量缓存颗粒包括双倍速率同步动态随机存储器或者四倍数据速率静态随机存取存储器。

为了实现对数据的保序处理,如图5所示,为流量处理步骤流程示意图,具体包括以下步骤:

步骤501:外挂大容量缓存颗粒实时确定不同外挂队列的数据的存储数量。

步骤502:数据接收模块接收新的数据,在外挂大容量缓存颗粒存储的目标外挂队列的存储数量清零,且目标队列的队列长度小于长度阈值时,将新的数据对应的描述符信息发往队列编号产生模块的目标队列中,并将目标队列的拥塞状态更新为未拥塞状态。

其中,目标外挂队列与目标队列的队列编号一致。

确定外挂大容量存储缓存颗粒中不同外挂队列的数据的存储数量的实现方式有多种,在一种实现方式中,为外挂大容量缓存颗粒中缓存的不同外挂队列各设置一个计数器,在队列编号产生模块每往外挂队列发送一个数据包,外挂大容量缓存颗粒中对应的外挂队列的计数器加1,数据接收模块每收到一个从外挂大容量缓存颗粒中返回的数据包,对应外挂队列计数器减1,基于不同计数器确定不同外挂队列的数据的存储数量。

外挂大容量缓存颗粒实时基于数据读取情况,确定不同外挂队列的数据的存储数量,在目标外挂队列的存储数量清零时,且目标队列的队列长度小于长度阈值,将队列编号产生模块中的目标队列的拥塞状态更新为未拥塞状态,并在数据接收模块接收到发往目标队列的新的数据时,将新的数据的描述符信息发往队列编号产生模块的目标队列中,以使得队列调度模块对新的数据进行调度处理。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述,仅为本申请的各种实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 一种流量计量装置以及流量计量方法
  • 一种高精度气体微流量计及气体流量测量方法
  • 一种明渠流量测量系统、方法及流量计修正装置
  • 分布式流量处理系统、设备及其流量关联处理方法
  • 分布式流量处理系统、设备及其流量关联处理方法
技术分类

06120115887609