CN113347112B - 一种基于多级缓存的数据包转发方法及装置 - Google Patents
一种基于多级缓存的数据包转发方法及装置 Download PDFInfo
- Publication number
- CN113347112B CN113347112B CN202110638573.7A CN202110638573A CN113347112B CN 113347112 B CN113347112 B CN 113347112B CN 202110638573 A CN202110638573 A CN 202110638573A CN 113347112 B CN113347112 B CN 113347112B
- Authority
- CN
- China
- Prior art keywords
- data packet
- router
- state
- sram
- dram
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2425—Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
- H04L47/2433—Allocation of priorities to traffic types
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种基于多级缓存的数据包转发方法及装置,涉及网络路由器技术领域,可以提高路由器的转发效率。本发明实施例的技术方案包括:接收来自于路由器的输入端口的数据包,然后根据接收到的数据包对应的包间时隙,确定路由器的运行状态。在路由器的运行状态为忙时,将接收到的数据包存入DRAM。在路由器的运行状态为准忙时,若接收到的数据包为高优先级,则将接收到的数据包存入SRAM,若接收到的数据包为低优先级,则将接收到的数据包存入DRAM。在路由器的运行状态为闲时,将接收到的数据包存入SRAM。再从SRAM或DRAM中确定待发送的目标数据包,并获取目标数据包,通过交换网板的输出端口发送目标数据包。
Description
技术领域
本发明涉及网络路由器技术领域,特别是涉及一种基于多级缓存的数据包转发方法及装置。
背景技术
互联网中的路由器是数据包的交换设备,路由器在网络拥塞时利用缓存存储数据包。现有的商用路由器普遍使用大容量的片外动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)作为缓存来应对突发流量的问题。路由器的单端口传输速率越大,单端口的缓存容量也越大。
当前高性能路由器单端口传输速率已经达到400Gb/s,需要外挂DDR总容量不小于80Gb,单端口至少需要外挂16片DDR。单端口外挂的DDR数量的增加,抑制了DDR的散热性能,影响DDR的稳定性,进而影响路由器的转发效率。
发明内容
本发明实施例的目的在于提供一种基于多级缓存的数据包转发方法及装置,以提高路由器的转发效率。具体技术方案如下:
第一方面,本发明实施例提供了一种基于多级缓存的数据包转发方法,应用于路由器中的交换网板,所述交换网板包括静态随机存取存储器SRAM和动态随机存取存储器DRAM,所述方法包括:
接收来自于所述路由器的输入端口的数据包;
根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态;所述包间时隙为接收到的数据包到达所述输入端口的时间与上一个数据包到达所述输入端口的时间之间的时间间隔;
在所述路由器的运行状态为忙时状态的情况下,将接收到的数据包存入所述DRAM;
在所述路由器的运行状态为准忙时状态的情况下,若接收到的数据包的优先级为高优先级,则将接收到的数据包存入所述SRAM,若接收到的数据包的优先级为低优先级,则将接收到的数据包存入所述DRAM;
在所述路由器的运行状态为闲时状态的情况下,将接收到的数据包存入所述SRAM;
从所述SRAM或者所述DRAM中确定待发送的目标数据包,并获取所述目标数据包,通过所述交换网板的输出端口发送所述目标数据包。
可选的,所述路由器的初始运行状态为闲时状态;所述根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态,包括:
在所述路由器的运行状态为闲时状态时,若所述包间时隙小于时隙阈值,则更新所述路由器的运行状态为准忙时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙大于所述时隙阈值,则更新所述路由器的运行状态为闲时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙小于所述时隙阈值,且所述SRAM的空间占用率大于第一占用率阈值或者所述DRAM的空间占用率大于第二占用率阈值,则更新所述路由器的运行状态为忙时状态;
在所述路由器的运行状态为忙时状态时,若所述包间时隙大于所述时隙阈值、所述SRAM的空间占用率小于等于第一占用率阈值且所述DRAM的空间占用率小于等于第二占用率阈值,则更新所述路由器的运行状态为闲时状态。
可选的,所述SRAM和所述DRAM的页框大小为64个字节;在所述根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态之前,所述方法还包括:
按照接收到的数据包大小,以64个字节为单位,将接收到的数据包拆分为多个信元,每个信元大小为64个字节的指定整数倍或者小于64个字节。
可选的,每个SRAM和每个DRAM均对应一个内存芯片编号;所述获取所述目标数据包,包括:
根据所述目标数据包的标识,确定目标数据包的存储信息;所述存储信息包括数据包的长度和数据包存储的内存芯片编号和由数据包拆成的各信元各自所存储的物理地址;
根据数据包的存储信息获取各信元,并将获取的信元重组为所述目标数据包。
可选的,所述从所述SRAM或者所述DRAM中确定待发送的目标数据包,包括:
在所述SRAM和所述DRAM各自对应的逻辑存储队列中,以轮询的方式,确定各逻辑存储队列对应的计数值是否为正数,直到确定一个逻辑存储队列对应的计数值为正数时,从逻辑存储队列中获取一个数据包标识,将该数据包标识对应的数据包作为所述目标数据包,并将逻辑存储队列对应的计数值减去所述目标数据包的大小;
其中,所述SRAM和所述DRAM各自对应的逻辑存储队列中存储了自身存储的数据包的标识,各逻辑存储队列对应的计数值初始值为预设值。
第二方面,本发明实施例提供了一种基于多级缓存的数据包转发装置,应用于路由器中的交换网板,所述交换网板包括静态随机存取存储器SRAM和动态随机存取存储器DRAM,所述装置包括:
接收模块,用于接收来自于所述路由器的输入端口的数据包;
状态管理模块,用于根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态;所述包间时隙为接收到的数据包到达所述输入端口的时间与上一个数据包到达所述输入端口的时间之间的时间间隔;
缓存管理模块,用于在所述路由器的运行状态为忙时状态的情况下,将接收到的数据包存入所述DRAM;
缓存管理模块,还用于在所述路由器的运行状态为准忙时状态的情况下,若接收到的数据包的优先级为高优先级,则将接收到的数据包存入所述SRAM,若接收到的数据包的优先级为低优先级,则将接收到的数据包存入所述DRAM;
缓存管理模块,还用于在所述路由器的运行状态为闲时状态的情况下,将接收到的数据包存入所述SRAM;
确定模块,用于从所述SRAM或者所述DRAM中确定待发送的目标数据包,并获取所述目标数据包,通过所述交换网板的输出端口发送所述目标数据包。
可选的,所述路由器的初始运行状态为闲时状态;所述状态管理模块,具体用于:
在所述路由器的运行状态为闲时状态时,若所述包间时隙小于时隙阈值,则更新所述路由器的运行状态为准忙时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙大于所述时隙阈值,则更新所述路由器的运行状态为闲时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙小于所述时隙阈值,且所述SRAM的空间占用率大于第一占用率阈值或者所述DRAM的空间占用率大于第二占用率阈值,则更新所述路由器的运行状态为忙时状态;
在所述路由器的运行状态为忙时状态时,若所述包间时隙大于所述时隙阈值、所述SRAM的空间占用率小于等于第一占用率阈值且所述DRAM的空间占用率小于等于第二占用率阈值,则更新所述路由器的运行状态为闲时状态。
可选的,所述SRAM和所述DRAM的页框大小为64个字节;所述装置还包括分割模块;所述分割模块,用于:
在所述根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态之前,按照接收到的数据包大小,以64个字节为单位,将接收到的数据包拆分为多个信元,每个信元大小为64个字节的指定整数倍或者小于64个字节。
可选的,每个SRAM和每个DRAM均对应一个内存芯片编号;所述确定模块包括重组模块;所述重组模块,用于:
根据所述目标数据包的标识,确定目标数据包的存储信息;所述存储信息包括数据包的长度和数据包存储的内存芯片编号和由数据包拆成的各信元各自所存储的物理地址;
根据数据包的存储信息获取各信元,并将获取的信元重组为所述目标数据包。
可选的,所述确定模块包括调度模块;所述调度模块,用于:
在所述SRAM和所述DRAM各自对应的逻辑存储队列中,以轮询的方式,确定各逻辑存储队列对应的计数值是否为正数,直到确定一个逻辑存储队列对应的计数值为正数时,从逻辑存储队列中获取一个数据包标识,将该数据包标识对应的数据包作为所述目标数据包,并将逻辑存储队列对应的计数值减去所述目标数据包的大小;
其中,所述SRAM和所述DRAM各自对应的逻辑存储队列中存储了自身存储的数据包的标识,各逻辑存储队列对应的计数值初始值为预设值。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一网络处理器的数据包转发方法的步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一网络处理器的数据包转发方法的步骤。
第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一网络处理器的数据包转发方法。
本发明实施例提供的基于多级缓存的数据包转发方法及装置,路由器中的交换网板能够根据路由器的运行状态,将接收到的数据包存储在SRAM或者DRAM。由于SRAM的读写速度快,因此由SRAM存储部分数据包能够减小路由器对于存储容量的要求,即减小了需要外挂的存储器数量,因此提高了存储器的稳定性,进而提高了路由器的转发效率。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例提供的一种基于多级缓存的数据包转发方法流程图;
图2为本发明实施例提供的一种数据包拆分过程的示例性示意图;
图3为本发明实施例提供的一种数据包的重组方法流程图;
图4为本发明实施例提供的一种差额轮询过程的示例性示意图;
图5为本发明实施例提供的一种基于多级缓存的数据包转发过程的示例性示意图;
图6为本发明实施例提供的另一种基于多级缓存的数据包转发方法流程图;
图7为本发明实施例提供的另一种基于多级缓存的数据包转发过程的示例性示意图;
图8为本发明实施例提供的一种基于多级缓存的数据包转发装置的结构示意图;
图9为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中的路由器包括输入端口和多个交换网板,每个交换网板包括静态随机存取存储器(Static Random-Access Memory,SRAM)和动态随机存取存储器(DynamicRandom Access Memory,DRAM)。其中,DRAM读写速度慢,而SRAM读写速度快,利用SRAM存储数据包能够减小路由器对于存储容量的要求。本发明实施例利用这两种存储器共同用于存储需要经过路由器转发的数据包,以下对本发明实施例提供的数据包转发方法进行具体说明。
本发明实施例提供的基于多级缓存的数据包转发方法应用于路由器中的交换网板,如图1所示,该方法包括如下步骤:
S101,接收来自于路由器的输入端口的数据包。
在本发明实施例中,路由器通过输入端口接收来自电子设备的数据包,其中电子设备可以是手机、计算机或者服务器等具备数据包收发能力的设备。
在执行S101之前,从路由器的输入端口接收到数据包时,路由器按照数据包的接收顺序,将该数据包存储在该输入端口的输入先进先出(First Input First Output,INPUT FIFO)物理队列中。通过路由器中的地址映射模块,按照先进先出规则,从INPUTFIFO物理队列中获取数据包,并根据数据包的包头中的目的网际互联协议(InternetProtocol,IP)地址,查找路由表中是否记录了该IP地址对应的输出端口。若记录了,则向查找到的输出端口所在的交换网板发送该数据包。若未记录,则丢弃该数据包。
S102,根据接收到的数据包对应的包间时隙,确定路由器的运行状态。其中,包间时隙为接收到的数据包到达输入端口的时间与上一个数据包到达输入端口的时间之间的时间间隔。
S103,在路由器的运行状态为忙时状态的情况下,将接收到的数据包存入DRAM。
S104,在路由器的运行状态为准忙时状态的情况下,若接收到的数据包为高优先级,则将接收到的数据包存入SRAM,若接收到的数据包为低优先级,则将接收到的数据包存入DRAM。
S105,在路由器的运行状态为闲时状态的情况下,将接收到的数据包存入SRAM。
S103、S104和S105用于区分三个步骤,在执行图1的过程时,选择一个步骤执行,不均执行。
S106,从SRAM或者DRAM中确定待发送的目标数据包,并获取目标数据包,通过交换网板的输出端口发送目标数据包。
一种实施方式中,路由器可以按照数据包存储在SRAM或者DRAM中的顺序,按照由先到后的规则,从SRAM或者DRAM中确定目标数据包。其中,目标数据包可以是SRAM或者DRAM中存储的任意一个数据包。
在本发明实施例中,路由器通过交换网板的输出端口向目标数据包的目的IP地址所表示的设备,发送目标数据包。
本发明实施例提供的数据包转发方法,路由器中的交换网板能够根据路由器的运行状态,将接收到的数据包在存储SRAM或者DRAM。由于SRAM的读写速度快,因此由SRAM存储部分数据包能够减小路由器对于存储容量的要求,即减小了需要外挂的存储器数量,因此提高了存储器的稳定性,提高了路由器的转发效率。
以下对上述S102-S105根据路由器的运行状态,将接收到的数据包存入SRAM或者DRAM的方式进行具体说明。
S102,根据接收到的数据包对应的包间时隙,确定路由器的运行状态。其中,包间时隙为接收到的数据包与上一个数据包到达输入端口之间的时间间隔。
例如,交换网板接收到的数据包A到达输入端口的时刻为010,输入端口接收到数据包A之前,路由器上一个接收到的数据包为数据包B,数据包B达到输入端口的时刻为009。数据包A对应的包间时隙为010-009=1。其中,数据包A和数据包B到达的输入端口可以相同也可以不用。
可以理解的,当包间时隙较大,说明路由器接收数据包的时间间隔长,路由器在短时间内接收到的数据包数量较少,因此路由器忙碌程度低。
可以理解的,当包间时隙较小,说明路由器接收数据包的时间间隔短,路由器在短时间内接收到的数据包数量较多,因此路由器忙碌程度高。
S103,在路由器的运行状态为忙时状态的情况下,将接收到的数据包存入DRAM。
由于DRAM存储容量大,因此在路由器的运行状态为忙时状态时,路由器接收到的数据包较多。此时路由器对于存储容量需求较高,利用DRAM存储数据包能够满足路由器当前对于存储容量的需求。
S104,在路由器的运行状态为准忙时状态的情况下,若接收到的数据包为高优先级,则将接收到的数据包存入SRAM,若接收到的数据包为低优先级,则将接收到的数据包存入DRAM。
由于DRAM存储容量大且读写速度慢,而SRAM存储容量小且读写速度快。由于准忙时状态下路由器的忙碌程度低于忙时状态,且高于闲时状态,因此路由器的运行状态为准忙时状态时,SRAM不能完全满足路由器对于存储容量的需求,因此将低优先级的数据包存储至存储容量大的DRAM,将高优先级的数据包存储至读写速度快的SRAM,以提高高优先级的数据包的转发效率,降低高优先级的数据包的传输时延。
在本发明实施例中,数据包的优先级可以根据数据包IP层的差分服务代码点(Differentiated Services Code Point,DSCP)字段确定。其中,DSCP字段包括三种:第一种为默认PHB服务每跳行为(Default Per Hop Behavior,Default PHB),即BE,表示尽力而为;第二种为AF,即Assured Forwarding,表示保证转发;第三种为EF,即ExpeditedForwarding,表示加速转发。
本发明实施例中,将DSCP字段包括BE或者AF的数据包均作为低优先级的数据包,将DSCP字段包括EF的数据包作为高优先级的数据包。
S105,在路由器的运行状态为闲时状态的情况下,将接收到的数据包存入SRAM。
由于SRAM读写速度快,因此在路由器的运行状态为闲时状态时,路由器接收到的数据包较少,利用SRAM存储数据包能够满足路由器当前对于存储容量的需求,而且能够提高路由器转发速度。
本发明实施例能够根据路由器的运行状态,确定数据包的存储位置,以适应路由器对于存储容量的要求,并进一步提高了数据包的转发效率。
在本发明实施例中,路由器的初始运行状态为闲时状态。上述S102根据接收到的数据包对应的包间时隙,确定路由器的运行状态的方式,可以实现为以下四种情况。
情况一,在路由器的运行状态为闲时状态时,若该包间时隙小于时隙阈值,则更新路由器的运行状态为准忙时状态。
在路由器的运行状态为闲时状态时,若该包间时隙小于时隙阈值,说明路由器接收到突发流量,将路由器的运行状态更新为准忙时状态,利用DRAM承担部分存储任务,能够以充足的缓存应对突发流量,避免应SRAM缓存容量不足而产生丢包;同时利用SRAM存储部分数据包,能够保证高优先级的数据包的转发效率。
可选的,时隙阈值可以预先设置,例如,预先设置时隙阈值tΔ=10微秒。
在路由器的运行状态为闲时状态时,若该包间时隙大于等于时隙阈值,则保持路由器的运行状态为闲时状态。
情况二,在路由器的运行状态为准忙时状态时,若该包间时隙大于时隙阈值,则更新路由器的运行状态为闲时状态。
在路由器的运行状态为准忙时状态时,若该包间时隙大于时隙阈值,表示路由器接收到的数据包较少,将路由器的运行状态更新为闲时状态,以保证数据包的转发效率,提高SRAM的利用率。
情况三,在路由器的运行状态为准忙时状态时,若该包间时隙小于时隙阈值,且SRAM的空间占用率大于第一占用率阈值或者DRAM的空间占用率大于第二占用率阈值,则更新路由器的运行状态为忙时状态。
在路由器的运行状态为准忙时状态时,若该包间时隙小于时隙阈值,且SRAM的空间占用率大于第一占用率阈值或者DRAM的空间占用率大于第二占用率阈值,表示路由器接收到的数据包较多,且SRAM或者DRAM的空间占用率较大,此时将路由器的运行状态更新为忙时状态,满足路由器对于存储容量的要求。
在本发明实施例中,若该包间时隙小于时隙阈值,且DRAM的空间占用率大于第二占用率阈值,则更新路由器的运行状态为忙时状态,并丢弃该数据包。
若该包间时隙小于时隙阈值,且SRAM的空间占用率大于第一占用率阈值,则更新路由器的运行状态为忙时状态,并在执行S103时将该数据包存入DRAM。
可选的,第一占用率阈值和第二占用率阈值可以预先设置。例如预先设置第一占用率阈值TS=70%,第二占用率阈值TD=90%。
在路由器的运行状态为准忙时状态时,若情况二和情况三的条件均不满足,即该包间时隙小于等于时隙阈值、SRAM的空间占用率小于等于第一占用率阈值、且DRAM的空间占用率小于等于第二占用率阈值,则保持路由器的运行状态为准忙时状态。
情况四,在路由器的运行状态为忙时状态时,若该包间时隙大于时隙阈值、SRAM的空间占用率小于等于第一占用率阈值且DRAM的空间占用率小于等于第二占用率阈值,则更新路由器的运行状态为闲时状态。
在路由器的运行状态为忙时状态时,若该包间时隙小于时隙阈值、SRAM的空间占用率小于等于第一占用率阈值且DRAM的空间占用率小于等于第二占用率阈值,说明路由器接收到的数据包较少,且SRAM和DRAM的空间占用率较少,此时将路由器的运行状态更新为闲时状态,提高数据包的转发效率。
在路由器的运行状态为忙时状态时,若不满足情况四的条件,即该包间时隙小于等于时隙阈值、SRAM的空间占用率大于第一占用率阈值、或者DRAM的空间占用率大于第二占用率阈值,则保持路由器的运行状态为忙时状态。
以下通过表一对本发明实施例的S103-S105中数据包的存储策略进行说明。
表一
其中,tΔ为时隙阈值,TS为第一占用率阈值,TD为第二占用率阈值,策略表示S103-S105中对数据包的存储位置。表一中包括斜线的单元格表示该项不考虑。AQM为ActiveQueue Management,即主动队列管理,表示丢弃数据包。
本发明实施例既能减少高优先级的数据包的传输时延,又降低了整体的丢包率。
在常规的缓存管理算法,例如伙伴系统(Buddy System)中,将缓存器的所有空闲页框分组为11块链表,每个块链表分别包含1、2、4、8、16、32、64、128、256、512或者1024个连续的页框。每个页框大小为4k(kilo,千)字节,因此1024个页框对应4兆字节(MegaBytes,MB)连续的RAM块。每个RAM块的第一个页框的物理地址是该RAM块大小的整数倍。
按照标准,10兆比特每秒(megabits per second,Mbps)以太网采用中继器时,路由器之间的连接长度是2500米,路由器之间最多经过4个中继器,因此规定对10Mbps以太网一帧的最小发送时间为51.2微秒。51.2微秒能传输的数据为512位,因此以太网最小帧为64字节,即以太网数据包的大小最小为64字节。存储器内最小的内存单元是一个页框。常规方式中页框大小为4k字节,这相对于以太网最小帧过大,所以本发明实施例中,SRAM和DRAM的页框大小设置为64个字节。
为提高缓存的利用效率,本发明实施例还可以将数据包拆分后存储缓存器SRAM或者DRAM。基于此,在S102之前,路由器还可以按照接收到的数据包大小,以64个字节为单位,将接收到的数据包拆分为多个信元,每个信元大小为64个字节的指定整数倍或者小于64个字节。在本发明实施例中,如果数据包不能被64整除,则将数据包除以64的余数作为一个信元,存储在一个页框中。
由于数据包的长度字段有16位,因此数据包最大长度为2的16次方个字节,即64k字节,64k字节等于64字节的1024倍,所以各种大小的数据包均可以被1024个页框容纳下。
在本发明实施例中,64个字节的指定整数倍可以为1、2、4、8、16、32、64、128、256、512或者1024倍。同时,一个数据包拆分的各信元大小是64个字节的倍数不同,且一个数据包拆分的各信元存储在一种存储器(SRAM或者DRAM)中。
例如,对于一个大小为38*64字节的数据包,如果不拆分,则需要64*64k字节的存储空间,其中有26*64字节的空间被浪费。如图2所示,本发明实施例可以将该数据包拆分为:32*64字节的信元、4*64字节的信元和2*64字节的信元,并分别存储在32个页框、4个页框和2个页框中。图2中的38*64字节的数据包可以为二进制数据,二进制展开每一位数为0或1,图2中二进制展开为00000100110仅为一段二进制数据的示例,实际上38*64字节的数据不止图2所示的11位。
由于本发明实施例能够将数据包拆分后存入SRAM或者DRAM中,减少了存储数据包所需的存储空间。由于Buddy System的反碎片机制能够减少碎片(即信元)的产生,提高缓存利用率,减少碎片数量。基于Buddy System本发明实施例提供的数据包的拆分方式,提高了内存利用效率。
基于上述对数据包的拆分方法,内存中存储的是数据包的信元。因此在确定待发送的目标数据包后,需要对信元进行重组。
在本发明实施例中,交换网板包括至少一片SRAM和至少一片DRAM,每个SRAM和每个DRAM均对应一个内存芯片编号。基于此,参见图3,上述S106中从SRAM和DRAM中获取目标数据包的方式,可以实现为以下步骤。
S1061,根据目标数据包的标识,确定目标数据包的存储信息。其中,存储信息包括数据包的长度和数据包存储的内存芯片编号和由数据包拆成的各信元各自所存储的物理地址。
一种实施方式中,本发明实施例提供一种数据结构,可称为mmu_unit,用于存储数据包的存储信息。
可选的,mmu_unit包括的信息如表二所示。
表二
其中,五元组哈希值指的是,基于数据包的源IP地址、源端口、目的IP地址、目的端口和传输层协议,计算的哈希值。保留位为空,保留位的值无效。ADDR为address,即地址。11个ADDR1-ADDR1024,分别表示数据包拆分的信元存储于的页框的物理地址。
由于数据包拆分后的每个信元占据的页框数有11种可能,分别为1、2、4、8、16、32、64、128、256、512或者1024个页框,且同一个数据包的各信元占用的页框数不同。基于这两个特点,本发明实施例采用mmu_unit记录每个数据包的信元在存储器中的分布信息。如果数据包没有相应大小的信元,存储该信元所需的页框的物理地址用0xFFFF填充。
例如,一个大小为38*64字节的数据包拆分为:32*64字节的信元1、4*64字节的信元2和2*64字节的信元3。信元1存储在32个页框中,信元2存储在4个页框中,信元3存储在2个页框中。则该数据包的mmu_unit中对于ADDR32记录有32个页框的物理地址、对于ADDR4记录有4个页框的物理地址、对于ADDR2记录有2个页框的物理地址、且对ADDR1024、ADDR512、ADDR128、ADDR64、ADDR16、ADDR8和ADDR1记录有0xFFFF。
由于数据包大小不一定是64个字节的整数倍,所以ADDR1记录的物理地址指向的存储区域中的数据不一定都有效。因此mmu_unit中记录的数据包的长度,用于验证获取的数据包的有效性。可采用独立编址的方式,为每个SRAM和每个DRAM均设置一个内存芯片编号。ID用于数据包的匹配,例如在访问存储器(DRAM或者SRAM)时,通过ID匹配的方式获取存储器中的数据包。
可选的,mmu_unit需要使用2个页框存储,可以存储在SRAM或者DRAM中。
S1062,根据数据包的存储信息获取各信元,并将获取的信元重组为目标数据包。
一种实施方式中,可以按照信元的大小从大到小的顺序,将各信元拼接为目标数据包。
采用本发明实施例提供的mmu_unit结构存储数据包的存储信息,避免在各信元中记录下一个信元的首地址,因此减少了数据存储量,避免存储过多的维护信息。
本发明实施例可采用差额轮询(Deficit Round Robin,DRR)的方式,对SRAM或者DRAM中存储的数据包进行调度,确定待发送的目标数据包。
基于此,上述S106从SRAM或者DRAM中确定待发送的目标数据包的方式,可以实现为:在SRAM和DRAM各自对应的逻辑存储队列中,以轮询的方式,确定各逻辑存储队列对应的计数值是否为正数,直到确定一个逻辑存储队列对应的计数值为正数时,从逻辑存储队列中获取一个数据包标识,将该数据包标识对应的数据包作为目标数据包,并将逻辑存储队列对应的计数值减去目标数据包的大小。
其中,SRAM和DRAM各自对应的逻辑存储队列中存储了自身存储的数据包的标识,各逻辑存储队列对应的计数值初始值为预设值。例如,数据包标识可以是数据包的首地址,即存储器中存储该数据包的存储区域的第一个存储单元的地址。
在本发明实施例中,SRAM和DRAM各自对应多个优先级不同的逻辑存储队列,每个逻辑存储队列设置有一个计算器(Deficit),用于计算逻辑存储队列对应的计数值,计数值表示一次调度允许的最大字节数。每个逻辑存储队列的计数值初始值根据逻辑存储队列的优先级设置。其中,优先级越高,逻辑存储队列对应的计数值初始值越高。
一种实施方式中,交换网板按照顺序轮询SRAM和DRAM各自对应逻辑存储队列,每次轮询到一个队列时,如果该队列对应的计数值为正数,则从该队列中获取一个数据包标识,并将该队列对应的计数值减去该标识对应的数据包的大小。如果该数据包大小超过计数值,则将该队列计数值确定为负值,以保证数据量大的数据包也可以被调度。如果该队列对应的计数值为0或负数,则继续轮询下一个逻辑存储队列。在SRAM和DRAM各自对应逻辑存储队列对应的计数值均不为正数时,分别将SRAM和DRAM各自对应逻辑存储队列的计数值设置为初始值。
在本发明实施例中,上述S103-S105将数据包存入存储器的同时,根据数据包的优先级与需要存入的存储器的逻辑存储队列的优先级之间的对应关系,确定与该数据包优先级对应的逻辑存储队列,并将数据包的标识加入确定的逻辑存储队列中。
示例性的,如图4所示,SRAM和DRAM中一种图案的方块表示一个数据包标识,相同图案的方块所在的条形方框表示一个逻辑存储队列。各逻辑存储队列的优先级不同。按照自上而下的顺序,依次确定每个队列对应的计数值是否为正数,并从计数值为正数的队列中确定数据包。对确定的数据包的信元进行重组,将重组后的数据包加入交换网板对应的输出端口的FIFO物理队列,等待按顺序发送。
本发明实施例采用的差额轮询的方式,可以有效地保证高优先级数据包优先转发的同时,也保障低优先级数据包的转发。
结合图5,对本发明实施例中的基于多级缓存的数据包转发方法进行说明。
如图5所示,路由器的输入端口将接收到的数据包传输至路由器的地址映射模块,由地址映射模块根据数据包的包头中目的IP地址,确定该数据包对应的输出端口,并向确定的输出端口所在的交换网板发送该数据包。其中,图5所示的各模块中,除地址映射模块以外,其余模块存在于一个交换网板中。路由器的每个交换网板均包括图5中除地址映射模块以外的其余模块。交换网板接收到数据包后,交换网板包括的各模块均可获取到该数据包。
交换网板的状态管理模块根据来自于地址映射模块的数据包对应的包间时隙、SRAM和DRAM的空间占用率以及该数据包的优先级,确定缓存控制信息,向缓存管理模块发送缓存控制信息。其中,缓存控制信息包括数据包存储在SRAM或者DRAM。由于本发明实施例将数据包优先存入SRAM,因此本发明实施例将SRAM称为主缓存,将DRAM称为备用缓存。
交换网板的分割模块,将来自于地址映射模块的数据包,拆分为多个信元,并将拆分的信元传输至缓存管理模块。
交换网板的缓存管理模块根据缓存控制信息,将数据包拆分成的多个信元存储至SRAM或者DRAM,生成并存储mmu_unit结构的存储信息。
交换网板的调度管理模块根据SRAM和DRAM各自对应的逻辑存储队列,采用差额轮询的方式,确定待发送的目标数据包。并向重组模块发送目标数据包的标识。
交换网板的重组模块基于目标数据包的标识,查找目标数据包的mmu_unit结构的存储信息,并基于查找到的存储信息,从SRAM或者DRAM中获取目标数据包的信元,将获取的信元重组为目标数据包。然后重组模块通过该交换网板对应的输出端口发送目标数据包。
参见图6,以下对本发明实施例的整体流程进行说明:
S601,路由器通过输入端口接收数据包。
S602,路由器的地址映射模块根据数据包的包头中的目的IP地址,确定该数据包对应的输出端口,并向确定的输出端口所在的交换网板发送该数据包。
S603,交换网板的状态管理模块根据接收到的数据包对应的包间时隙、SRAM和DRAM的空间占用率以及接收到的数据包的优先级,确定数据包存储在SRAM或者DRAM。
S604,交换网板的分割模块将数据包拆分为多个信元。
S605,交换网板的缓存管理模块将数据包拆分成的信元存储至SRAM或者DRAM,并生成mmu_unit结构的存储信息。其中,mmu_unit结构的信息用于记录存入SRAM或者DRAM的数据包的存储信息。
例如,如图7所示,图7中左边的各“PORT”表示路由器的输入端口,右边的各“PORT”表示输出端口。“PORT”之间的三个圆点表示省略号,即本发明实施例中路由器的输入端口和输出端口数量不限于图7所示的数量。每个INPUT FIFO为存储一个输入端口接收到的数据包的先进先出物理队列,每个OUTPUT FIFO为存储一个输出端口需要发送的数据包的先进先出物理队列。SRAM以及DRAM中包括多个方框的条形图形表示逻辑存储队列,SRAM以及DRAM中的圆点表示省略号,即SRAM以及DRAM中逻辑存储队列数量不限于图7所示的数量。
参见图7,交换网板的状态管理模块根据接收到的数据包对应的包间时隙、SRAM和DRAM的空间占用率(即图7中的状态信息)以及接收到的数据包的优先级,生成缓存控制信息,其中缓存控制信息包括数据包存储在SRAM或者DRAM。并向交换网板的缓存管理模块发送控制信息,由缓存管理模块向INPUT FIFO物理队列发送缓存指令,将INPUT FIFO物理队列中的数据包经过分割模块拆分为多个信元后,由缓存管理模块将拆分的信元存储至SRAM或者DRAM。
S606,交换网板的调度模块根据SRAM和DRAM各自对应的逻辑存储队列,采用差额轮询的方式,确定目标数据包。
S607,交换网板的重组模块基于mmu_unit结构的存储信息从SRAM或者DRAM中获取目标数据包的信元,并将获取的信元重组为目标数据包。
例如,参见图7,交换网板的调度模块从SRAM和DRAM中确定目标数据包,并通过重组模块从SRAM或DRAM获取目标数据包的信元,并将获取的信元重组为目标数据包,然后加入OUTPUT FIFO物理队列中,等待通过OUTPUT FIFO物理队列对应的输出端口发送。
S607之后,交换网板的缓存管理模块回收目标数据包的存储空间,等待存储其他的数据包。
S608,通过交换网板的输出端口发送目标数据包。
由于单端口外挂的DDR数量越多,端口输出队列的长度越长,使得遍历输出队列的时长过长,导致数据包的传输时延过大。
而本发明实施例中,由SRAM承担部分缓存任务,SRAM读写速度快,减少了堆积在存储器中的数据包的数量,因此减少了数据包的传输时延。同时DRAM缓存部分数据包,由于DRAM成本低且容量大,能够保证路由器忙碌时对于存储容量的需求,减少丢包率。
基于相同的发明构思,对应于上述方法实施例,本发明实施例提供了一种基于多级缓存的数据包转发装置,应用于路由器中的交换网板,交换网板包括静态随机存取存储器SRAM和动态随机存取存储器DRAM。如图8所示,该装置包括:接收模块801、状态管理模块802、缓存管理模块803和确定模块804;
接收模块801,用于接收来自于路由器的输入端口的数据包;
状态管理模块802,用于根据接收到的数据包对应的包间时隙,确定路由器的运行状态;包间时隙为接收到的数据包到达输入端口的时间与上一个数据包到达输入端口的时间之间的时间间隔;
缓存管理模块803,用于在路由器的运行状态为忙时状态的情况下,将接收到的数据包存入DRAM;
缓存管理模块803,还用于在路由器的运行状态为准忙时状态的情况下,若接收到的数据包的优先级为高优先级,则将接收到的数据包存入SRAM,若接收到的数据包的优先级为低优先级,则将接收到的数据包存入DRAM;
缓存管理模块803,还用于在路由器的运行状态为闲时状态的情况下,将接收到的数据包存入SRAM;
确定模块804,用于从SRAM或者DRAM中确定待发送的目标数据包,并获取目标数据包,通过交换网板的输出端口发送目标数据包。
可选的,路由器的初始运行状态为闲时状态;状态管理模块802,具体用于:
在路由器的运行状态为闲时状态时,若包间时隙小于时隙阈值,则更新路由器的运行状态为准忙时状态;
在路由器的运行状态为准忙时状态时,若包间时隙大于时隙阈值,则更新路由器的运行状态为闲时状态;
在路由器的运行状态为准忙时状态时,若包间时隙小于时隙阈值,且SRAM的空间占用率大于第一占用率阈值或者DRAM的空间占用率大于第二占用率阈值,则更新路由器的运行状态为忙时状态;
在路由器的运行状态为忙时状态时,若包间时隙大于时隙阈值、SRAM的空间占用率小于等于第一占用率阈值且DRAM的空间占用率小于等于第二占用率阈值,则更新路由器的运行状态为闲时状态。
可选的,SRAM和DRAM的页框大小为64个字节;装置还包括分割模块;分割模块,用于:
在根据接收到的数据包对应的包间时隙,确定路由器的运行状态之前,按照接收到的数据包大小,以64个字节为单位,将接收到的数据包拆分为多个信元,每个信元大小为64个字节的指定整数倍或者小于64个字节。
可选的,每个SRAM和每个DRAM均对应一个内存芯片编号;确定模块804包括重组模块;重组模块,用于:
根据目标数据包的标识,确定目标数据包的存储信息;存储信息包括数据包的长度和数据包存储的内存芯片编号和由数据包拆成的各信元各自所存储的物理地址;
根据数据包的存储信息获取各信元,并将获取的信元重组为目标数据包。
可选的,确定模块804包括调度模块;调度模块,用于:
在SRAM和DRAM各自对应的逻辑存储队列中,以轮询的方式,确定各逻辑存储队列对应的计数值是否为正数,直到确定一个逻辑存储队列对应的计数值为正数时,从逻辑存储队列中获取一个数据包标识,将该数据包标识对应的数据包作为目标数据包,并将逻辑存储队列对应的计数值减去目标数据包的大小;
其中,SRAM和DRAM各自对应的逻辑存储队列中存储了自身存储的数据包的标识,各逻辑存储队列对应的计数值初始值为预设值。
本发明实施例还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现方法实施例中的方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据包转发方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据包转发方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种基于多级缓存的数据包转发方法,其特征在于,应用于路由器中的交换网板,所述交换网板包括静态随机存取存储器SRAM和动态随机存取存储器DRAM,所述方法包括:
接收来自于所述路由器的输入端口的数据包;
根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态;所述包间时隙为接收到的数据包到达所述输入端口的时间与上一个数据包到达所述输入端口的时间之间的时间间隔;
在所述路由器的运行状态为忙时状态的情况下,将接收到的数据包存入所述DRAM;
在所述路由器的运行状态为准忙时状态的情况下,若接收到的数据包的优先级为高优先级,则将接收到的数据包存入所述SRAM,若接收到的数据包的优先级为低优先级,则将接收到的数据包存入所述DRAM;
在所述路由器的运行状态为闲时状态的情况下,将接收到的数据包存入所述SRAM;
从所述SRAM或者所述DRAM中确定待发送的目标数据包,并获取所述目标数据包,通过所述交换网板的输出端口发送所述目标数据包;
所述路由器的初始运行状态为闲时状态;所述根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态,包括:
在所述路由器的运行状态为闲时状态时,若所述包间时隙小于时隙阈值,则更新所述路由器的运行状态为准忙时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙大于所述时隙阈值,则更新所述路由器的运行状态为闲时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙小于所述时隙阈值,且所述SRAM的空间占用率大于第一占用率阈值或者所述DRAM的空间占用率大于第二占用率阈值,则更新所述路由器的运行状态为忙时状态;
在所述路由器的运行状态为忙时状态时,若所述包间时隙大于所述时隙阈值、所述SRAM的空间占用率小于等于第一占用率阈值且所述DRAM的空间占用率小于等于第二占用率阈值,则更新所述路由器的运行状态为闲时状态。
2.根据权利要求1所述的方法,其特征在于,所述SRAM和所述DRAM的页框大小为64个字节;在所述根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态之前,所述方法还包括:
按照接收到的数据包大小,以64个字节为单位,将接收到的数据包拆分为多个信元,每个信元大小为64个字节的指定整数倍或者小于64个字节。
3.根据权利要求2所述的方法,其特征在于,每个SRAM和每个DRAM均对应一个内存芯片编号;所述获取所述目标数据包,包括:
根据所述目标数据包的标识,确定目标数据包的存储信息;所述存储信息包括数据包的长度和数据包存储的内存芯片编号和由数据包拆成的各信元各自所存储的物理地址;
根据数据包的存储信息获取各信元,并将获取的信元重组为所述目标数据包。
4.根据权利要求1所述的方法,其特征在于,所述从所述SRAM或者所述DRAM中确定待发送的目标数据包,包括:
在所述SRAM和所述DRAM各自对应的逻辑存储队列中,以轮询的方式,确定各逻辑存储队列对应的计数值是否为正数,直到确定一个逻辑存储队列对应的计数值为正数时,从逻辑存储队列中获取一个数据包标识,将该数据包标识对应的数据包作为所述目标数据包,并将逻辑存储队列对应的计数值减去所述目标数据包的大小;
其中,所述SRAM和所述DRAM各自对应的逻辑存储队列中存储了自身存储的数据包的标识,各逻辑存储队列对应的计数值初始值为预设值。
5.一种基于多级缓存的数据包转发装置,其特征在于,应用于路由器中的交换网板,所述交换网板包括静态随机存取存储器SRAM和动态随机存取存储器DRAM,所述装置包括:
接收模块,用于接收来自于所述路由器的输入端口的数据包;
状态管理模块,用于根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态;所述包间时隙为接收到的数据包到达所述输入端口的时间与上一个数据包到达所述输入端口的时间之间的时间间隔;
缓存管理模块,用于在所述路由器的运行状态为忙时状态的情况下,将接收到的数据包存入所述DRAM;
缓存管理模块,还用于在所述路由器的运行状态为准忙时状态的情况下,若接收到的数据包的优先级为高优先级,则将接收到的数据包存入所述SRAM,若接收到的数据包的优先级为低优先级,则将接收到的数据包存入所述DRAM;
缓存管理模块,还用于在所述路由器的运行状态为闲时状态的情况下,将接收到的数据包存入所述SRAM;
确定模块,用于从所述SRAM或者所述DRAM中确定待发送的目标数据包,并获取所述目标数据包,通过所述交换网板的输出端口发送所述目标数据包;
所述路由器的初始运行状态为闲时状态;所述状态管理模块,具体用于:
在所述路由器的运行状态为闲时状态时,若所述包间时隙小于时隙阈值,则更新所述路由器的运行状态为准忙时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙大于所述时隙阈值,则更新所述路由器的运行状态为闲时状态;
在所述路由器的运行状态为准忙时状态时,若所述包间时隙小于所述时隙阈值,且所述SRAM的空间占用率大于第一占用率阈值或者所述DRAM的空间占用率大于第二占用率阈值,则更新所述路由器的运行状态为忙时状态;
在所述路由器的运行状态为忙时状态时,若所述包间时隙大于所述时隙阈值、所述SRAM的空间占用率小于等于第一占用率阈值且所述DRAM的空间占用率小于等于第二占用率阈值,则更新所述路由器的运行状态为闲时状态。
6.根据权利要求5所述的装置,其特征在于,所述SRAM和所述DRAM的页框大小为64个字节;所述装置还包括分割模块;所述分割模块,用于:
在所述根据接收到的数据包对应的包间时隙,确定所述路由器的运行状态之前,按照接收到的数据包大小,以64个字节为单位,将接收到的数据包拆分为多个信元,每个信元大小为64个字节的指定整数倍或者小于64个字节。
7.根据权利要求6所述的装置,其特征在于,每个SRAM和每个DRAM均对应一个内存芯片编号;所述确定模块包括重组模块;所述重组模块,用于:
根据所述目标数据包的标识,确定目标数据包的存储信息;所述存储信息包括数据包的长度和数据包存储的内存芯片编号和由数据包拆成的各信元各自所存储的物理地址;
根据数据包的存储信息获取各信元,并将获取的信元重组为所述目标数据包。
8.根据权利要求5所述的装置,其特征在于,所述确定模块包括调度模块;所述调度模块,用于:
在所述SRAM和所述DRAM各自对应的逻辑存储队列中,以轮询的方式,确定各逻辑存储队列对应的计数值是否为正数,直到确定一个逻辑存储队列对应的计数值为正数时,从逻辑存储队列中获取一个数据包标识,将该数据包标识对应的数据包作为所述目标数据包,并将逻辑存储队列对应的计数值减去所述目标数据包的大小;
其中,所述SRAM和所述DRAM各自对应的逻辑存储队列中存储了自身存储的数据包的标识,各逻辑存储队列对应的计数值初始值为预设值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110638573.7A CN113347112B (zh) | 2021-06-08 | 2021-06-08 | 一种基于多级缓存的数据包转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110638573.7A CN113347112B (zh) | 2021-06-08 | 2021-06-08 | 一种基于多级缓存的数据包转发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113347112A CN113347112A (zh) | 2021-09-03 |
CN113347112B true CN113347112B (zh) | 2022-06-07 |
Family
ID=77475438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110638573.7A Active CN113347112B (zh) | 2021-06-08 | 2021-06-08 | 一种基于多级缓存的数据包转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113347112B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454003A (zh) * | 2017-08-18 | 2017-12-08 | 南京航空航天大学 | 一种可动态切换工作模式的片上网络路由器及方法 |
CN110708260A (zh) * | 2019-11-13 | 2020-01-17 | 鹏城实验室 | 数据包传输方法及相关装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10243856B2 (en) * | 2017-03-24 | 2019-03-26 | Intel Corporation | Load balancing systems, devices, and methods |
CN111092825B (zh) * | 2018-10-23 | 2022-07-29 | 华为技术有限公司 | 一种传输报文的方法和装置 |
-
2021
- 2021-06-08 CN CN202110638573.7A patent/CN113347112B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454003A (zh) * | 2017-08-18 | 2017-12-08 | 南京航空航天大学 | 一种可动态切换工作模式的片上网络路由器及方法 |
CN110708260A (zh) * | 2019-11-13 | 2020-01-17 | 鹏城实验室 | 数据包传输方法及相关装置 |
Non-Patent Citations (1)
Title |
---|
"路由器缓存容量的分析研究";张博等;《中国传媒大学学报(自然科学版)》;20091230(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113347112A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11916781B2 (en) | System and method for facilitating efficient utilization of an output buffer in a network interface controller (NIC) | |
EP4057579A1 (en) | Data forwarding method, data buffering method, device, and related apparatus | |
US8184540B1 (en) | Packet lifetime-based memory allocation | |
US10193831B2 (en) | Device and method for packet processing with memories having different latencies | |
US8325749B2 (en) | Methods and apparatus for transmission of groups of cells via a switch fabric | |
US7751404B2 (en) | Method, system, and computer program product for high performance bonding resequencing | |
CN108366111B (zh) | 一种用于交换设备的数据包低时延缓存装置与方法 | |
US9769092B2 (en) | Packet buffer comprising a data section and a data description section | |
WO2020125652A1 (zh) | 报文转发方法、装置、网络设备及计算机可读介质 | |
US20200136986A1 (en) | Multi-path packet descriptor delivery scheme | |
EP2526478B1 (en) | A packet buffer comprising a data section an a data description section | |
CN113454957B (zh) | 一种存储器的管理方法及装置 | |
US6850999B1 (en) | Coherency coverage of data across multiple packets varying in sizes | |
CN114531488B (zh) | 一种面向以太网交换器的高效缓存管理系统 | |
CN116955247B (zh) | 一种缓存描述符管理装置及其方法、介质、芯片 | |
US20160212070A1 (en) | Packet processing apparatus utilizing ingress drop queue manager circuit to instruct buffer manager circuit to perform cell release of ingress packet and associated packet processing method | |
US7409624B2 (en) | Memory command unit throttle and error recovery | |
EP1508225B1 (en) | Method for data storage in external and on-chip memory in a packet switch | |
CN113347112B (zh) | 一种基于多级缓存的数据包转发方法及装置 | |
US10990447B1 (en) | System and method for controlling a flow of storage access requests | |
US7069397B2 (en) | Stream based memory manager with function specific hardware logic for accessing data as a stream in memory | |
US7855967B1 (en) | Method and apparatus for providing line rate netflow statistics gathering | |
CN117118762B (zh) | 中央处理器收包处理方法、装置、电子设备和存储介质 | |
CN117749726A (zh) | Tsn交换机输出端口优先级队列混合调度方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |