CN112751774B - 一种数据包处理方法、装置及设备 - Google Patents
一种数据包处理方法、装置及设备 Download PDFInfo
- Publication number
- CN112751774B CN112751774B CN201911047115.5A CN201911047115A CN112751774B CN 112751774 B CN112751774 B CN 112751774B CN 201911047115 A CN201911047115 A CN 201911047115A CN 112751774 B CN112751774 B CN 112751774B
- Authority
- CN
- China
- Prior art keywords
- data packet
- rate
- message length
- interval
- speed limit
- 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/50—Overload detection or protection within a single switching element
-
- 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/215—Flow control; Congestion control using token-bucket
-
- 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/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- 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/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种数据包处理方法、装置及设备,该数据包处理方法可以应用于可编程交换机,其中,可编程交换机根据预设对应关系确定报文长度和限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时间。当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发。采用该数据包处理方法可以在可编程交换机上实现限速功能,并且只需记录较少变量,有利于减少对可编程交换机内存的占用。
Description
技术领域
本申请涉及通信领域,尤其涉及一种数据包处理方法、装置及设备。
背景技术
在云计算(cloud computing)网络中,由于云计算网络具有用户数量大,传输的网络流多的特点,为了提供网络的质量保障(quality of service,QoS),可以采用限速器(rate limiter)限定网络中的网络流的发送速率。通常来讲,限速器可以在网络的交换机上通过编程实现,其中,在交换机上实现限速器的功能可以显著降低网络的服务器的使用量,有利于降低网络的复杂度。但是,目前交换机采用的限速器算法(如漏桶算法)将占用交换机大量的内存,使得交换机支持的限速器的最大数量也有限。如何降低限速器算法对交换机内存的大量占用成为待解决的问题。
发明内容
本申请实施例提供了一种数据包处理方法、装置及设备,该数据包处理方法通过预设限速速率,使可编程交换机按照限速速率对数据包进行转发,丢弃超时的数据包,从而在可编程交换机上实现限速器的功能;并且预设对应关系可以在可编程交换机中的不同的限速器之间共享,有利于降低对可编程交换机内存的占用。
第一方面,本申请实施例提供一种数据包处理方法,该方法可以应用于可编程交换机,其中,可编程交换机根据预设对应关系中确定报文长度和限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长。当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发。
一方面,采用本申请实施例提供的数据包处理方法可以实现限速功能。例如,假设第一数据包为所述在先数据包,第二数据包为所述数据包。第一数据包到达所述可编程交换机的到达时刻t1与第二数据包到达所述可编程交换机的到达时刻t2之间的时间差为δ,其中,第二数据包到达所述可编程交换机的到达时刻t2即为当前时刻。假设限速速率为R,那么,当前时刻t2能够转发的数据包的大小要小于或等于δ*R,才能保证该时长范围所发送的数据包的大小不会过多而引起超速。若可编程交换机以限速速率R转发第二数据包所需的时长t大于所述时间差δ,即t*R大于δ*R时,可编程交换机还转发了该数据包b,将导致当前时刻转发的数据包过大,即该时间差转发了过多的比特数,导致超速,因此,丢弃该数据包可避免超速。
另一方面,本申请实施例提供的数据包处理方法只需记录数据包对应的令牌值,数据包到达所述可编程交换机的时刻,在先数据包到达所述可编程交换机的时刻这三个参数,有利于减少对可编程交换机内存的占用。
在一种可能的设计中,可编程交换机解析接收到的所述数据包,确定所述数据包的报文长度和所述数据包所在数据流的限速速率。
在一种可能的设计中,可编程交换机确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值;所述预设对应关系中包括每个报文长度区间和每个限速速率区间的组合对应的令牌值。由于可编程交换机的编程能力限制,不能直接实现乘/除运算。本申请实施例所述的数据包处理方法采用预算乘/除法,将运算结果存储在预设对应关系中。通过查询预设对应关系,可以实现所述数据包处理方法中的报文长度除以限速速率的运算。并且采用除法运算,可以使限速的数值不局限于2的次幂的固定数值,有利于提高限速器速率配置的灵活性。
在一种可能的设计中,可编程交换机可以根据确定的所述报文长度区间和所述限速速率区间,确定报文长度标识和限速速率标识;从所述预设对应关系中,查询所述报文长度标识和所述限速速率标识对应的令牌值;所述预设对应关系中包括每个报文长度标识和每个限速速率标识的组合对应的令牌值;每个报文长度标识指示一个报文长度区间,每个限速速率标识指示一个限速速率区间。采用报文长度标识指示报文长度区间,限速速率标识指示限速速率区间,有利于降低预设对应关系对可编程交换机内存空间的占用。
在一种可能的设计中,若所述令牌值小于所述时间差,获取所述时间差与所述令牌值的差值;若所述时间差与所述令牌值的差值小于预设的阈值,根据丢弃策略判断是否丢弃所述数据包。若可编程交换机以限速速率转发所述报文长度的数据包所需要的时长小于所述时间差,但非常接近于所述时间差,那么可编程交换机可以按照一个随机数判断是否丢弃所述数据包。
在一种可能的设计中,若所述时间差与所述令牌值的差值大于预设的阈值,转发所述数据包。若可编程交换机以限速速率转发所述报文长度的数据包所需要的时长小于所述时间差,并且不接近所述时间差,那么可编程交换机将转发所述数据包。
第二方面,本申请实施例提供一种数据包处理装置,该装置具有实现第一方面所提供的数据包处理方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请实施例提供一种数据包处理装置,该装置包括处理器和存储器;该存储器用于存储计算机程序,该处理器执行存储器中存储的计算机程序,以使该装置执行第一方面或第一方面中任一种可能实现方式中的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,该可读存储介质包括程序或指令,当所述程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面中任一种可能实现方式中的方法。
上述方面中的芯片系统可以是片上系统(system on chip,SOC),也可以是基带芯片等,其中基带芯片可以包括处理器、信道编码器、数字信号处理器、调制解调器和接口模块等。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种可编程交换机的结构示意图;
图2为本申请实施例提供的一种可编程交换机中的数据流向示意图;
图3为本申请实施例提供的一种数据包处理方法的流程示意图;
图4为本申请实施例提供的另一种数据包处理方法的流程示意图;
图5为本申请实施例提供的一种匹配流程的示意图;
图6为本申请实施例提供的一种可编程交换机上实现限速器功能的流程示意图;
图7为一种可编程交换机的限速器的实验测试结果示意图;
图8为本申请实施例提供的数据包处理方法的一种实验测试结果的示意图;
图9为本申请实施例提供的数据包处理方法的另一种实验测试结果的示意图。
图10为本申请实施例提供的一种数据包处理装置的结构示意图;
图11为本申请实施例提供的另一种数据包处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在本申请实施例的描述之前,首先介绍相关的背景技术。
在云计算(cloud computing)网络中,由于云计算网络具有用户数量大,传输的网络流多的特点,为了提供网络的质量保障(quality of service,QoS),可以采用限速器(rate limiter)限定网络中的网络流的发送速率。通常来讲,可以在网络服务器(如终端服务器)或网络交换机(如可编程交换机)上通过限速器算法来实现限速器的功能,其中,限速器算法具有中央处理器(central processing unit,CPU)的运算能力要求高,内存(memory)占用量大的特点。
为了解决交换机内存不足导致的限速器部署数量受限的问题,本申请实施例提供的一种数据包处理方法,该方法可以应用于可编程交换机中,具体的,可编程交换机根据预设对应关系中确定报文长度和限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长。当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发。通过该交换限速方法可以在可编程交换机上实现限速器的功能,只需记录较少的参数,有利于减少对可编程交换机内存的占用。并且预设对应关系可以在交换机中的不同的限速器之间共享,有利于优化算法的存储利用效率。
相较于传统硬件交换机中采用漏桶算法无法实现和部署大规模的限速器,本申请实施例提供的数据包处理方法采用令牌桶算法、丢弃超速报文以及报文事件触发相结合的方式在可编程交换机上实现和部署大规模的限速器。一方面,算法设计上选择令牌桶算法,相较于漏桶算法中必须维护一个队列,并且每个限速器都需要配置速率和缓存两个参数,令牌桶算法只需要维护令牌变量,降低了变量占用的存储空间,有利于降低算法的空间复杂度。另一方面,算法设计上选择报文事件触发,相较于计时器触发方案中并发读写变量在交换机中实现的开销大,将导致传输控制协议数据包(transmission control protocol,TCP)的吞吐量抖动较大,对TCP不友好,报文事件触发可以降低在可编程交换机中实现的开销,并且对于不同类型的数据包都不会产生较大的吞吐量抖动。
下面结合附图详细说明本申请实施例。
下面先介绍一种可编程交换机的结构。请参见图1,可编程交换机100的结构可以包括三个部分,分别为入口流水线110、共享内存120和出口流水线130,其中,入口流水线110和出口流水线130结构相同。以入口流水线110为例,入口流水线110包括解析单元111、匹配执行单元112以及数据包重组单元113,如图1所示。
其中,解析单元111(parser)用于将数据包解析成自定义的数据结构。例如,解析单元111采用句法分析程序对数据包进行解析,转换为可编程交换机数据平面处理器可以处理的数据结构。匹配执行单元112(match and action,MAU)用于存储可编程协议无关报文处理器(P4)代码中定义的数据结构和表格,当有数据包到达MAU时,MAU可以进行查表操作,并根据查找到的表格中定义的预设对应关系执行对应的操作。数据包重组单元113(deparser)用于将处理过的数据包头部和原始的数据包载荷重新组装成新的数据包。共享内存120是一块高速内存池,用于缓存数据包,所述可编程交换机通过对共享内存池的读写操作来实现数据包从入口流水线到出口流水线的交换。其中,共享内存120还可以用于复制或调度数据包。出口流水线130也包括解析单元131、匹配执行单元132以及数据包重组单元133,各个单元的具体描述可以参考入口流水线中各个单元的具体描述,在此不再赘述。可以理解的是,上述入口流水线和出口流水线可以提供相同的功能,用于容纳更多的处理逻辑。
本申请实施例提供的一种数据包处理方法在图1所示的可编程交换机中的操作流程示意图如图2所示,其中,图2仅示出了所述数据包处理方法所使用的主要单元,仅为一种示例,本实施例不作限定。首先,当可编程交换机启动限速器后,预设对应关系可以以表格的形式被加载并安装进可编程交换机中的入口流水线的相应表格内。当可编程交换机接收到数据流时,可以对数据流中的数据包进行解析,得到所述数据包的参数(如报文长度标识,限速速率标识以及所述数据包到达可编程交换机的时刻与在先数据包到达可编程交换机的时刻之间的差值)。根据所述报文长度标识和限速速率标识进行查表匹配操作,可以得到所述数据包的对应的令牌值。将所述数据包对应的令牌值与所述时间差进行判断比较,当所述令牌值大于时间差时,对所述数据包执行的操作为丢弃所述数据包。
本申请实施例提供一种数据包处理方法,请参见图3,该数据包处理方法可以应用于如图1所示的可编程交换机,具体包括以下步骤:
S301,根据预设对应关系确定报文长度和限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长。
报文长度指示数据包的大小,例如,数据包的报文长度为1000,则表示该数据包的大小为1000字节(byte)。限速速率指示可编程交换机以限速速率转发数据包,若超过该限速速率,则可编程交换机不能实现限速功能。其中,数据包的限速速率为数据包所在数据流的限速速率。可选的,可编程交换机对于不同的数据流(如不同网络地址的数据流),可以设置不同的限速速率。对于同一个数据流中的多个数据包,限速速率均为所述数据流的限速速率。例如,若数据包所在数据流的限速速率为64兆比特每秒(Mbps),则表示所述数据包的限速速率为64Mbps。所述报文长度和所述限速速率可以通过解析接收到的数据包得到。可选的,可编程交换机在根据预设对应关系确定报文长度和限速速率对应的令牌值之前,可以对接收到的数据包进行解析,以获取所述数据包的报文长度和所述数据包所在数据流的限速速率。例如,可编程交换机的解析单元对数据包进行解析,获取所述数据包的报文长度为1000。又例如,可编程交换机的解析单元解析得到数据包所在数据流的限速速率为64Mbps,则所述数据包的限速速率为64Mbps。可选的,可编程交换机在对数据包进行解析时,还可以获取所述数据包所在数据流的网络地址,所述数据包到达可编程交换机的时刻等参数,本实施例不作限定。
由于可编程交换机的编程能力的限制,不能直接进行除法运算,即不能直接计算报文长度除以限速速率得到的值。其中,所述报文长度除以限速速率得到的值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长。为了确定所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长,本实施例提出预先计算多个报文长度和多个限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长。对于报文长度和限速速率的组合对应的令牌值,可以通过建立预设对应关系来存储所述对应关系。其中,所述预设对应关系包括报文长度和限速速率的组合与令牌值的对应关系。例如,预设对应关系中的报文长度为1000(byte),限速速率为1000Mbps,该报文长度和限速速率的组合对应的令牌值为125纳秒(ns)。该令牌指示所述可编程交换机以1000Mbps的限速速率转发报文长度为1000的数据包所需要的时长为125ns。当数据包到达可编程交换机时,可编程交换机通过查询预设对应关系确定数据包对应的令牌值。其中,可编程交换机可以先确定数据包的报文长度和数据包所在数据流的限速速率后,再查询预设对应关系,确定所述数据包报文长度和限速速率对应的令牌值。所述数据包的报文长度和限速速率对应的令牌值指示所述可编程交换机转发该数据包所需要的时长。
在一种示例中,数据包的报文长度和限速速率可以有非常多的取值。例如,数据包的报文长度可能的取值为[0,9000]这一区间中的任一个值,即表示数据包可以在该区间中取任意一个整数值(如1000)。相类似的,限速速率可能的取值为[0,10000Mbps]这一区间中的任一个值。为了减少报文长度可选的取值和限速速率可选的取值而带来的大量的除法计算结果,从而导致大量除法计算结果占用可编程交换机的大量内存,本申请实施例所述的预设对应关系包括报文长度区间和限速速率区间的组合对应令牌值。对于报文长度区间中的任一个报文长度和限速速率区间中的任一个限速速率的组合,对应一个令牌值,该令牌值指示可编程交换机以限速速率区间中的值转发报文长度区间中的值的数据包所需要的时长的近似值。例如,预设对应关系中的一个报文长度区间为[687,695],一个限速速率区间为[29Mbps,31Mbps],该报文长度区间和限速速率区间的组合对应的令牌值为100ns,该令牌值指示可编程交换机以限速速率区间[29Mbps,31Mbps]中的限速速率转发数据包报文长度位于报文长度区间[687,695]的数据包所需要的时长均可近似为100ns。
可选的,预设对应关系包括报文长度区间和限速速率区间的组合对应令牌值,S301可以包括以下步骤:确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值;所述预设对应关系中包括每个报文长度区间和每个限速速率区间的组合对应的令牌值。例如,可编程交换机解析数据包,确定该数据包的报文长度为690,限速速率为30Mbps。根据预设对应关系,该数据包的报文长度位于报文长度区间[687,695],限速速率位于限速速率区间[29Mbps,31Mbps],则可编程交换机确定该数据包对应的令牌值为100ns。
可选的,报文长度区间和限速速率区间的组合与令牌值的对应关系还可以通过报文长度标识和限速速率标识的组合与令牌值的对应关系来表示。其中,报文长度标识指示不同报文长度区间。例如,报文长度区间[687,695]的报文长度标识为4。限速速率标识指示不同限速速率区间。例如,限速速率区间[29Mbps,31Mbps]的限速速率标识为7。上述报文长度标识和限速速率标识的组合对应的令牌值为100ns,该令牌值指示可编程交换机以限速速率区间[29Mbps,31Mbps]中的限速速率转发数据包报文长度位于报文长度区间[687,695]的数据包所需要的时长均可近似为100ns。
可选的,预设对应关系包括报文长度标识和限速速率标识的组合对应令牌值,S301可以包括以下步骤:确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;根据确定的所述报文长度区间和所述限速速率区间,确定报文长度标识和限速速率标识;从所述预设对应关系中,查询所述报文长度标识和所述限速速率标识对应的令牌值;所述预设对应关系中包括每个报文长度标识和每个限速速率标识的组合对应的令牌值;每个报文长度标识指示一个报文长度区间,每个限速速率标识指示一个限速速率区间。例如,可编程交换机解析数据包,确定该数据包的报文长度为690,限速速率为30Mbps。根据预设对应关系,该数据包的报文长度位于报文长度区间[687,695],报文长度区间[687,695]的报文长度标识为4;限速速率位于限速速率区间[29Mbps,31Mbps],限速速率区间[29Mbps,31Mbps]的限速速率标识为7。可编程交换机根据报文长度标识4和限速速率标识7的组合确定该数据包对应的令牌值为100ns。可以理解的是,预设对应关系包括报文长度标识和限速速率标识的组合对应令牌值,相较于报文长度区间和限速速率区间的组合对应令牌值,可以降低对可编程交换机的内存占用。
S302,当所述令牌值大于时间差时,丢弃所述数据包。
可编程交换机根据预设对应关系确定报文长度和限速速率对应的令牌值,即确定了可编程交换机以限速速率转发报文长度的数据包所需要的时长。若可编程交换机以限速速率转发报文长度的数据包所需要的时长大于该数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,则表示若可编程交换机转发了该数据包,将导致当前时刻转发的数据包过大,即该时间差转发了过多的比特数,将导致超速。为了实现可编程交换机的限速功能,当所述令牌值大于时间差时,可编程交换机将丢弃所述数据包。
在一种示例中,可编程交换机将记录在先数据包到达可编程交换机的时刻,所述在先数据包为在当前数据包之前到达可编程交换机且被可编程交换机转发。可编程交换机获取到当前时刻,则可以确定当前数据包到达可编程交换机的时刻与在先数据包到达可编程交换机的时刻之间的差值,即确定所述时间差。可选的,若所述令牌值大于所述时间差,则表示当前报文会导致累计令牌超过当前时间,那么为了保障QoS,可编程交换机将丢弃所述数据包。可选的,当所述令牌值小于所述时间差时,表示当前报文不会导致累计令牌超过当前时间,可编程交换机将转发所述数据包。
本申请实施例提供一种数据包处理方法,该方法可以应用于可编程交换机,其中,可编程交换机根据预设对应关系确定报文长度和限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长;当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发。可编程交换机采用该交换限速方法可以在交换机上实现限速器的功能,只需记录数据包对应的令牌值,数据包到达所述可编程交换机的时刻,在先数据包到达所述可编程交换机的时刻这三个参数,有利于减少对可编程交换机内存的占用。
本申请实施例提供另一种数据包处理方法,请参见图4,该数据包处理方法具体包括以下步骤:
S401,初始化限速系统。
在数据流到达可编程交换机之前,可编程交换机可以初始化限速系统。启动限速系统后,可编程协议无关报文处理器(P4)代码中定义的数据结构以及预设对应关系被加载进可编程交换机的入口流水线,然后控制平面读取限速器的配置文件,并通过数据平面将预设对应关系安装进可编程交换机内存中。在一种示例中,所述预先对应关系可以包括但不限于报文长度对应报文长度区间,限速速率对应限速速率区间,报文长度区间和限速速率区间的组合对应令牌值。例如,一个报文长度对应多个报文长度区间中的一个报文长度区间。一个数据包所在数据流的限速速率对应多个限速速率区间中的一个限速速率区间。一个限速速率区间和一个报文长度区间的组合对应一个令牌值。
在一种示例中,预设对应关系可以包括但不限于报文长度标识对应报文长度区间,限速速率标识对应限速速率区间,报文长度标识和限速速率标识的组合对应令牌值。上述预设对应关系均可以采用表格的形式被安装进可编程交换机。例如,可编程交换机可以读取P4代码中定义的报文长度表格,限速速率表格和令牌值表格。下面对上述三个表格进行详细的描述。
所述报文长度表格包括报文长度区间和报文长度标识,所述报文长度区间和所述报文长度标识一一对应。其中,通过大量的实验观察可知,数据包的长度通常小于9000byte,将数据包的长度取值范围划分为多个报文长度区间,可以得到报文长度表格,如表1所示。
表1:报文长度表格
报文长度区间(字节) | 报文长度标识 |
[687,695] | 4 |
… | … |
其中,表1的第一列存储了多个报文长度区间,表1的第二列存储了多个报文长度标识,一个报文长度区间对应一个报文长度标识。例如,报文长度区间[687,695]对应的报文长度标识为4。可以理解的是,表1仅示出了一种报文长度区间作为一种示例,表1还可以包括其他不同的报文长度区间,本实施例不作限定。
所述限速速率表格包括限速速率区间和限速速率标识,所述限速速率区间和限速速率标识一一对应。其中,通过大量的实验观察可知,单个数据流的最大限速速率通常小于10000Mbps,将限速速率取值范围划分为多个限速速率区间,可以得到限速速率表格,如表2所示。
表2:限速速率表格
限速速率区间(Mbps) | 限速速率标识 |
[29,31] | 7 |
… | … |
其中,表2的第一列存储了多个限速速率区间,表2的第二列存储了限速速率标识,一个限速速率区间对应一个报文长度标识。例如,限速速率区间[29,31]对应的限速速率标识为7。可以理解的是,表2仅示出了一种限速速率区间作为一种示例,表2还可以包括其他不同的限速速率区间,本实施例不作限定。
令牌值表格包括了预先计算的令牌值,以及令牌值对应的报文长度区间和限速速率区间的组合,如表3所示。
表3:令牌值表格1
(报文长度区间,限速速率区间) | 令牌值(纳秒) |
([687,695],[29,31]) | 100 |
… | … |
其中,根据报文长度区间和限速速率区间,可以从表3获取对应的令牌值。例如,当数据包的报文长度为688,数据包所在数据流的限速速率为30Mbps时,可编程交换机可以分别通过表1和表2确定所述数据包的报文长度所在的报文长度区间为[687,695],所述数据包的限速速率所在的限速速率区间为[29,31]。根据所述报文长度区间和限速速率区间,可以通过表3获取对应的令牌值为100纳秒。可以理解的是,表3仅示出了一种报文长度区间和限速速率区间的组合对应的令牌值作为一种示例,表3还可以包括其他报文长度区间和限速速率区间的组合对应的令牌值,本实施例不作限定。
可选的,所述令牌值表格还可以预先计算的令牌值,以及令牌值对应的报文长度标识和限速速率标识的组合,如表4所示。
表4:令牌值表格2
(报文长度标识,限速速率标识) | 令牌值(纳秒) |
(4,7) | 100 |
… | … |
其中,根据报文长度标识和限速速率标识,可以从表3获取对应的令牌值。例如,当数据包的报文长度为688,数据包所在数据流的限速速率为30Mbps时,根据数据包的报文长度以及数据包对应的流的最大限速速率,可以分别通过表1和表2获取所述数据包对应的报文长度标识为4,限速速率标识为7。根据所述报文长度标识和限速速率标识,可以通过表4获取对应的令牌值为100纳秒。可以理解的是,表4仅示出了一种报文长度标识和限速速率标识的组合对应的令牌值作为一种示例,表4还可以包括其他报文长度标识和限速速率标识对应的令牌值,本实施例不作限定。相较于表3,表4占用可编程交换机的内存更少。
S402,根据数据包的报文长度和数据包所在数据流的限速速率,确定所述数据包的报文长度所在的报文长度区间和所述数据包的限速速率所在的限速速率区间。
当数据流到达可编程交换机时,可以对数据流进行解析。其中,对于数据流中的每一个数据包,可以获取数据包的参数。所述数据包的参数可以包括但不限于数据包标识,报文长度和限速速率等。所述数据包标识用于区分不同的数据包,所述数据包标识可以是数据包对应的IP地址,数据包对应的时间戳等,本实施例不作限定。数据包的报文长度表示该数据包传输的数据量,例如,数据包的长度一般小于9000。数据包的限速速率表示该数据包对应的用户的流量速率,例如,单个用户的流量速率一般小于10000Mbps。
在一种示例中,假设网络服务提供商(internet service provider,ISP)为不同的数据流设置了不同的优先级(priority)和突发(burst)大小,那么可以将优先级和突发大小相同的数据流存储到一个数据流表格中,所述数据流表格中的一个条目代表一个数据流,如表5所示。
表5:数据流表格
其中,表5的第一列存储了数据流对应的IP地址,用于区分不同的数据流。表4的第二列存储了数据流的相关参数值,所述数据流的相关参数值可以包括但不限于数据流的限速速率、数据流对应的限速器标识以及上次流经交换机的时刻。其中,数据流的限速速率指示数据流中的数据包的限速大小,如表5所示的30Mbps。数据流对应的限速器标识指示数据包所在数据流经过了哪一个限速器,如表5所示的数据包对应的流经过的是限速器5。其中,可编程交换机可以通过多个限速器实现不同的限速速率。例如,可编程交换机根据到达的数据流的优先级和突发大小,可以确定该数据流的限速速率,即确定该数据流通过哪一个限速器进行处理。上次流经交换机的时刻用于指示在先数据包到达可编程交换机的时刻,若可编程交换机获取到当前时刻,则可以确定所述数据包到达可编程交换机的时刻和在先数据包到达可编程交换机的时刻之间的时间差。可以理解的是,表5所示的数据流表格为一种优先级和突发大小下的表格,所述可编程交换机中还可以包括其他的优先级和突发大小下的多个表格,表格样式与表5相同,本实施例不作限定。
在一种示例中,S402可以包括以下步骤:可编程交换机根据解析得到的数据包的报文长度,可以从上述表1中确定所述数据包的报文长度所在的报文长度区间。根据数据包的数据包标识(如数据包所在数据流的IP地址)从上述表4中确定数据包所在数据流的限速速率,再根据所述数据包所在数据流的限速速率从上述表2中确定所述数据包的限速速率所在的限速速率区间。
可选的,可编程交换机还可以根据数据包的报文长度和数据包所在数据流的限速速率,确定报文长度标识和限速速率标识。其中,可以包括以下步骤:可编程交换机根据解析得到的数据包的报文长度,可以从上述表1中确定所述数据包的报文长度所在的报文长度区间。进一步可以确定所述数据包的报文长度对应的报文长度标识。根据数据包所在数据流的IP地址从上述表4中确定数据包所在数据流的限速速率,再根据所述数据包所在数据流的限速速率从上述表2中确定所述数据包的限速速率所在的限速速率区间。进一步可以确定所述数据包的限速速率对应的限速速率标识。
需要注意的是,可编程交换机可以通过多个限速器实现不同的限速速率。本申请实施例所述表1至表5中的表项均可以在多个限速器之间共享,即可编程交换机存储上述表1至表5即可对应地查询多个限速速率区间,多个报文长度区间或多个令牌值,有利于降低对可编程交换机内存的占用。
S403,根据预设对应关系确定所述数据包的报文长度所在的报文长度区间和所述数据包的限速速率所在的限速速率区间对应的令牌值。
根据预设对应关系中的报文长度区间和限速速率区间的组合对应令牌值,可编程交换机可以确定所述数据包对应的令牌值,即确定可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时间。例如,可编程交换机确定数据包的报文长度所在的报文长度区间为[687,695],数据包的限速速率所在的限速速率区间为[29,31],那么通过查询表3,可编程交换机确定所述数据包对应的令牌值为100ns,即确定可编程交换机以限速速率区间[687,695]中的限速速率转发报文长度区间[29,31]中的报文长度的数据包所需要的时间为100ns。
在一种示例中,表1、表2、表3、表4和表5均为P4代码中定义的表格,可以按照在P4代码中执行的顺序被P4编译器依次加载进可编程交换机的MAU内。可选的,以可编程交换机利用表1、表2、表4和表5为例,可编程交换机在执行限速功能时,匹配流程如图5所示,可以包括以下步骤:
获取所述数据包的报文长度,数据包所在数据流的限速速率、对应的限速器的下标、上次流经交换机的时刻;
根据所述报文长度确定所述数据包的报文长度在报文长度表格中对应的报文长度区间的下标i(即报文长度标识);
根据所述数据包所在数据流的限速速率确定所述数据包所在数据流的限速速率在限速速率表格中对应的取值区间的下标j(即限速速率标识);
根据所述下标i和所述下标j获取所述数据包在令牌值表格中对应的令牌值,所述令牌值指示可编程交换机以限速速率转发所述数据包所需要的时间t1。
S404,根据令牌值以及时间差确定对所述数据包执行的操作。
可编程交换机确定当前数据包到达交换机的时刻为当前时刻,根据所述当前时刻和在先数据包到达可编程交换机的时刻,可以确定所述数据包到达可编程交换机的时刻与相邻在先数据包到达可编程交换机的时刻之间的差值,即确定时间差t2。其中,在先数据包在当前数据包之前到达可编程交换机且被可编程交换机转发。根据所述t1和t2的大小关系,可以确定对数据包执行的操作。其中,对所述数据包执行的操作可以包括但不限于丢弃,转发和随机丢弃等。若对数据包执行的操作为丢弃,则可编程交换机将不对数据包进行转发,数据包将被丢弃。若对数据包执行的操作为转发,则可编程交换机将对数据包进行转发。若对数据包执行的操作为随机丢弃,则可编程可以按照丢弃策略判断丢弃或转发所述数据包。
在一种示例中,可编程交换机确定对数据包执行的操作可以包括以下步骤:
确定第一差值,所述第一差值为所述数据包到达可编程交换机的时刻与在先数据包到达可编程交换机的时刻的差值;
若所述令牌值大于所述第一差值,丢弃所述第一数据包。
其中,当令牌值大于所述第一差值时,即表示可编程交换机以限速速率转发所述数据包所需要的时间t1大于时间差t2。若可编程交换机以限速速率转发所述数据包,将导致当前时刻转发的数据包过大,即该时间差转发了过多的比特数,导致超速,可编程交换机将丢弃所述数据包以实现限速功能。
在一种示例中,可编程交换机确定对数据包执行的操作可以包括以下步骤:
若所述令牌值小于所述时间差,获取所述时间差与所述令牌值的差值;
若所述时间差与所述令牌值的差值小于预设的阈值,根据丢弃策略判断是否丢弃所述数据包;或,
若所述时间差与所述令牌值的差值大于预设的阈值,转发所述数据包。
其中,当可编程交换机以限速速率转发所述数据包所需要的时间t1小于时间差t2时,根据t1和t2之间的差值,可编程交换机可以确定对所述数据包执行不同的操作。可选的,当t1小于t2时,若t1和t2之间的差值小于预设的阈值,表示t1近似等于t2,且略小于t2,那么可编程交换机可以确定对所述数据包的处理为随机丢弃,即表示可编程交换机可以丢弃或者转发所述数据包,具体执行哪一种操作将根据丢弃策略来确定。例如,令t1和t2之间的差值为第二差值,将第二差值和预设的阈值t3设置为一个取值区间的下限和上限,即该取值区间为[t2-t1,t3]。其中,该取值区间对应一个预设概率。可编程交换机将根据所述数据包的优先级和突发大小产生一个随机数,并将所述随机数与该取值区间对应的预设概率进行比较。若所述随机数大于所述预设概率,则指示可编程交换机丢弃所述数据包。若所述随机数小于所述预设概率,则指示可编程交换机转发所述数据包。
可选的,若t1和t2之间的差值大于预设的阈值,表示t1与t2的差值较大,那么可编程交换机可以确定所述数据包不是超速报文,确定转发所述数据包。可以理解的是,上述可编程交换机对所述数据包执行的操作仅为一种示例,对于可编程交换机中的其他数据包,可编程交换机对其他数据包执行的操作也可以包括但不限于丢弃数据包,转发数据包和随机丢弃数据包等,本实施例不作限定。
本申请实施例提供了一种数据包处理方法,该方法可以应用于可编程交换机,首先初始化所述可编程交换机的限速系统,使可编程交换机加载预设对应关系。当数据流到达可编程交换机时,通过解析数据包确定所述数据包所在数据流的限速速率和所述数据包的报文长度。根据所述数据包的报文长度和所述数据包所在数据流的限速速率,确定所述数据包的报文长度所在的报文长度区间和所述数据包的限速速率所在的限速速率区间。根据预设对应关系,确定所述报文长度区间和所述限速速率区间的组合对应的令牌值。根据所述令牌值和所述数据包到达可编程交换机的时刻与在先数据包到达可编程交换机的时刻的之间的差值,可编程交换机确定对所述数据包执行的操作。可编程交换机采用该交换限速方法可以实现限速器的功能,存储预设对应关系的表项可以在多个限速器之间共享,有利于减少对交换机内存的占用。并且通过加载预先设置的报文对应的近似值表格可以实现除法运算,可以使限制器的限速更准确灵活。
下面对数据包对应的令牌的近似值的计算过程进行详细的介绍。
根据上文实施例的描述,所述令牌值为数据包的报文长度除以数据包所在数据流的限速速率得到的值,即需要进行除法运算。但是受限于所述可编程交换机的硬件平台,除法运算不能在可编程交换机的数据平面直接完成。为了实现除法运算,本实施例采用预算除法,并将预算结果存储在所述报文对应的令牌的近似值表格中,通过查表的方式来实现乘除运算。例如,本申请实施例通过预先计算多个不同的数据包的报文长度除以所述数据包所在数据流的限速速率的值,将除法计算得到的值存储在预设对应关系中,可编程交换机运行时只需要查询所述预设对应关系即可获得除法运算的近似结果。
其中,参与运算的分子、分母分别是数据包的报文长度和数据包所在数据流的限速速率。基于大量实验观察可知,数据包的报文长度(x)一般小于9000;而数据流的速率(y)一般也是一个有限值,例如,单个数据流的速率最大值一般小于10000Mbps。本申请实施例提出如下算法来计算x/y。
假设x,y∈N+,且x∈[minX,maxX],y∈[minY,maxY]。首先,将x的取值空间按如下方法划分成多个报文长度区间:
其中,x0=minX且maxX∈[xN,xN(1+r)]。r∈(0,1)为精度控制参数,用于控制计算精度以及如表3或表4所示的令牌值表格的大小。
y的取值空间的划分方法与x的取值空间的划分方法相同,可以将y划分为多个限速速率区间:
其中,y0=minY且maxY∈[yN,yN(1+r)]。
其中,lower表示报文长度区间的下限值除以限速速率区间的上限值得到的值,可以指示令牌值的最小值。upper表示报文长度区间的上限值除以限速速率区间的下限值得到的值,可以指示令牌值的最大值。将所述最小值和所述最大值进行算术平均,可以得到所述报文长度区间和所述限速速率区间的组合对应的令牌值。
分析可知,所述令牌值与实际的除法运算得到的值x/y的误差是可以估算的,其误差为:
由于报文长度的取值子空间和限速速率的取值子空间的划分以及计算误差都受所述精度控制参数r的影响,因此,可以通过调节r来控制计算误差以及所述令牌值表格需要存储的表项数目。例如,当x∈[1,10000],y∈[1,10000]时,若不采用精度控制参数r,那么可编程交换机预先存储所有计算结果,共需要存储10000*10000即1亿条表项;若采用精度控制参数r,取r=0.02,则取值空间被划分为295个子空间,共需要存储295*295即87025条表项,是现有技术方案中存储空间的0.087%,降低了可编程交换机的存储空间的占用量,并且此时的计算误差是0.0198,即所述令牌值近似等于实际的除法运算的结果。
下面结合上文实施例中的描述,对可编程交换机上实现限速器功能的整体流程进行示例性的介绍,请参见图6,具体包括以下步骤:
可编程交换机启动限速系统,P4代码中定义的数据结构以及预设对应关系被加载进可编程交换机的入口流水线,然后控制平面读取限速器的配置文件,并通过数据平面将预先设置的表格安装进可编程交换机,其中,所述预先设置的表格包括报文长度表格,限速速率表格和令牌值表格;
当数据流到达可编程交换机时,对于所述数据流中的数据包,可编程交换机确定所述数据包所在数据流的限速速率和所述数据包的报文长度;
根据所述数据包所在数据流的限速速率和所述数据包的报文长度,可编程交换机从所述报文长度表格中获取所述报文长度标识,从所述限速速率表格中获取所述限速速率标识;
根据所述报文长度标识和所述限速速率标识从所述令牌值表格中获取所述令牌值;
判断所述令牌值是否大于第一差值,所述第一差值为所述数据包到达可编程交换机的时刻与在先数据包到达可编程交换机的时刻之间的差值;
若大于,则确定所述数据包的标记结果为丢弃,丢弃所述数据包;
若不大于,则获取第二差值,所述第二差值为所述第一差值与所述令牌值之间的差值;
若所述第二差值大于预设的阈值,则确定所述数据包的标记结果为转发,转发所述数据包;
若所述第二差值小于预设的阈值,则确定所述数据包的标记结果为随机丢弃,丢弃或者转发所述数据包。
根据上述图3和图4所示的实施例提供的数据包处理方法,可以在可编程交换机上实现并进行实验测试。下面对所述实验测试的一种示例性结果进行分析说明。可以理解的是,所述实验测试还可以包括其他的示例性的结果,本实施例不作限定。
下面对吞吐量抖动情况进行分析。图7所示的实验测试结果为基于现有的数据包处理方法(如可编程交换机的Meter限速器)进行实验测试得到的,其中,实验测试结果的纵坐标表示吞吐量(Mbps),横坐标表示用数据流的传输时间(s)。场景1表示网络中往返时间(Round Trip Time,RTT)为100微秒,场景2表示网络RTT为1毫秒,其中,RTT表示数据发送时刻到接收到确认的时刻的差值。如图7所示,每个子图对应不同的数据包限速大小,其中,数据包的限速大小为32Mbps,64Mbps,128Mbps和256Mbps。根据图7所示的实验测试结果,在场景1和场景2两种不同的实验测试场景下,网络中的吞吐量的抖动较大。可见采用基于计时器的数据包处理方法将导致网络传输吞吐量抖动,尤其是对于TCP数据包,吞吐量抖动较大。
图8所示的实验测试结果为基于本申请实施例提供的数据包处理方法进行实验测试得到的,其中,实验测试结果的纵坐标表示吞吐量(Mbps),横坐标表示用数据流的传输时间(s)。场景1表示网络RTT为100微秒,场景2表示网络RTT为1毫秒。如图8所示,每个子图也对应不同的数据包限速大小,其中,数据包的限速大小为32Mbps,64Mbps,128Mbps和256Mbps。根据图8所示的实验测试结果,在场景1和场景2两种不同的实验测试场景下,网络中的吞吐量稳定,不抖动;无论是TCP数据包还是用户数据报协议(user datagramprotocol,UDP)数据包吞吐量都稳定。可以理解的是,图7和图8是在相同的实验测试场景下采用不同的技术手段进行实验测试得到的不同的实验测试结果,通过对比可知,本申请实施例提供的数据包处理方法可以解决TCP在限速器上吞吐量抖动的问题。
下面对限速器的限速速率进行分析。图9所示的实验测试结果为基于本申请实施例提供的数据包处理方法进行实验测试得到的,其中,实验测试结果的纵坐标表示吞吐量(Mbps),横坐标表示允许突发大小(MB),场景1表示网络RTT为100微秒,场景2表示网络RTT为1毫秒。如图9所示,每个子图展示了不同的限速大小,其中,数据包的限速大小不再局限于32Mbps,64Mbps等2的次幂的固定数值,例如,数据包的限速大小可以是图9所示的100Mbps,200Mbps等。可以理解的是,由于本申请实施例提供的限速方法可以等价于实现了除法运算,所以数据包的限速大小可以是更灵活的值,提高了限速器速率配置的灵活性。
下面对限速器占用的存储空间进行分析。以可编程交换机的Meter限速器进行测试,根据实际的测试结果,可编程交换机上的Meter的数量可达到16000至32000之间,并且每个Meter将占用16字节的内存资源。以本申请实施例提供的限速器进行测试,根据实际的测试结果,可编程交换机上的限速器的数量可达到100000以上,并且每个限速器只占用6字节的内存资源。本申请实施例提供的数据包处理方法解决了可编程交换机内存不足导致的限速器数量受限的问题,有利于提高可编程交换机的存储利用率。
以下结合图10和图11详细说明本申请实施例的相关装置。
本申请实施例提供一种数据包处理装置,如图10所示。该数据包处理装置1000可以用于执行本申请实施例提供的数据包处理方法,该数据包处理装置包括:
收发模块1001,用于接收或转发数据包;
处理模块1002,用于根据预设对应关系确定报文长度和限速速率对应的令牌值;所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长;
所述处理模块,还用于当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发。
在一种实现方式中,处理模块1002还用于:
解析所述数据包,确定所述数据包的报文长度和所述数据包所在数据流的限速速率。
在一种实现方式中,处理模块1002具体用于:
确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;
根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值;所述预设对应关系中包括每个报文长度区间和每个限速速率区间的组合对应的令牌值。
在一种实现方式中,处理模块1002具体用于:
根据确定的所述报文长度区间和所述限速速率区间,确定报文长度标识和限速速率标识;
从所述预设对应关系中,查询所述报文长度标识和所述限速速率标识对应的令牌值;
所述预设对应关系中包括每个报文长度标识和每个限速速率标识的组合对应的令牌值;每个报文长度标识指示一个报文长度区间,每个限速速率标识指示一个限速速率区间。
在一种实现方式中,处理模块1002还用于:
若所述令牌值小于所述时间差,获取所述时间差与所述令牌值的差值;
若所述时间差与所述令牌值的差值小于预设的阈值,根据丢弃策略判断是否丢弃所述数据包。
在一种实现方式中,处理模块1002还用于:
若所述时间差与所述令牌值的差值大于预设的阈值,转发所述数据包。
需要说明的是,上述实施例中的装置可以是网络设备,也可以是应用于网络设备中的芯片或者其他可实现上述网络设备功能的组合器件、部件等。
当装置是网络设备或可实现上述网络设备功能的组合器件时,收发模块可以是收发器,可以包括天线和射频电路等。处理模块可以是处理器,例如基带芯片等。
当装置是具有上述网络设备功能的部件时,收发模块可以是射频单元,处理模块可以是处理器,或者是具备上述实施例中所述的数据包处理功能的芯片。当装置是芯片系统时,收发模块可以是芯片系统的输入/输出接口。处理模块可以是芯片系统的处理器,例如:中央处理单元(central processing unit,CPU)。
图11是本申请实施例提供的一种数据包处理装置,如图11所示,该数据包处理装置可用于执行本申请实施例提供的数据包处理方法。数据包处理装置1100可以包括处理器1101,可以用于对可编程交换机中的数据包进行处理。例如,图10所示的处理模块1002所实现的相关功能可以通过处理器1101来实现。处理器1101可以包括一个或多个处理器,例如该处理器1101可以是一个或多个中央处理器(central processing unit,CPU),网络处理器(network processor,NP),硬件芯片或者其任意组合。在处理器1101是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
数据包处理装置1100还可以包括存储器1102,存储器1102用于存储程序代码等。存储器1102可以包括易失性存储器(volatile memory),例如随机存取存储器(randomaccess memory,RAM);存储器1102也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD);存储器1102还可以包括上述种类的存储器的组合。
数据包处理装置1100还可以包括收发器1103,该收发器也可以称为收发机、收发装置等,收发器1103用于接收或转发数据包,例如,接收数据流以获取数据包的传输速率和报文长度。又例如,若所述令牌值小于所述时间差,收发器1103用于转发所述数据包。
上述处理器1101可以用于实现本申请实施例提供的数据包处理方法,其中,处理器1101,用于执行以下步骤:
根据预设对应关系确定报文长度和限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长;
当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发。
在一种实现方式中,所述处理器1101还用于:
解析所述数据包,确定所述数据包的报文长度和所述数据包所在数据流的限速速率。
在一种实现方式中,所述处理器1101具体可以用于:
确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;
根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值;所述预设对应关系中包括每个报文长度区间和每个限速速率区间的组合对应的令牌值。
在一种实现方式中,所述处理器1101具体可以用于:
根据确定的所述报文长度区间和所述限速速率区间,确定报文长度标识和限速速率标识;
从所述预设对应关系中,查询所述报文长度标识和所述限速速率标识对应的令牌值;
所述预设对应关系中包括每个报文长度标识和每个限速速率标识的组合对应的令牌值;每个报文长度标识指示一个报文长度区间,每个限速速率标识指示一个限速速率区间。
在一种实现方式中,所述处理器1101还用于:
若所述令牌值小于所述时间差,获取所述时间差与所述令牌值的差值;
若所述时间差与所述令牌值的差值小于预设的阈值,根据丢弃策略判断是否丢弃所述数据包。
在一种实现方式中,所述处理器1101还用于:
若所述时间差与所述令牌值的差值大于预设的阈值,转发所述数据包。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括程序或指令,当所述程序或指令在计算机上运行时,使得计算机执行上述方法实施例中的数据包处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种数据包处理方法,应用于可编程交换机,其特征在于,包括:
根据数据包的报文长度和数据包所在数据流的限速速率,从多个报文长度和限速速率的组合与令牌值的预设对应关系中确定所述数据包的报文长度和限速速率对应的令牌值,所述令牌值指示所述可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长;
当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发;
当所述令牌值小于所述时间差时,获取所述时间差与所述令牌值的差值;
若所述时间差与所述令牌值的差值小于预设的阈值,根据丢弃策略判断是否丢弃所述数据包。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
解析所述数据包,确定所述数据包的报文长度和所述数据包所在数据流的限速速率。
3.根据权利要求1或2所述的方法,其特征在于,所述根据数据包的报文长度和数据包所在数据流的限速速率,从多个报文长度和限速速率的组合与令牌值的预设对应关系中确定所述数据包的报文长度和限速速率对应的令牌值,包括:
确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;
根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值;所述预设对应关系中包括每个报文长度区间和每个限速速率区间的组合对应的令牌值。
4.根据权利要求3所述的方法,其特征在于,所述根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值,包括:
根据确定的所述报文长度区间和所述限速速率区间,确定报文长度标识和限速速率标识;
从所述预设对应关系中,查询所述报文长度标识和所述限速速率标识对应的令牌值;
所述预设对应关系中包括每个报文长度标识和每个限速速率标识的组合对应的令牌值;每个报文长度标识指示一个报文长度区间,每个限速速率标识指示一个限速速率区间。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述时间差与所述令牌值的差值大于预设的阈值,转发所述数据包。
6.一种数据包处理装置,其特征在于,包括:
收发模块,用于接收或转发数据包;
处理模块,用于根据数据包的报文长度和数据包所在数据流的限速速率,从多个报文长度和限速速率的组合与令牌值的预设对应关系中确定所述数据包的报文长度和限速速率对应的令牌值;所述令牌值指示可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长;
所述处理模块,还用于当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发;
所述处理模块,还用于当所述令牌值小于所述时间差时,获取所述时间差与所述令牌值的差值;若所述时间差与所述令牌值的差值小于预设的阈值,根据丢弃策略判断是否丢弃所述数据包。
7.根据权利要求6所述的装置,其特征在于,所述处理模块还用于:
解析所述数据包,确定所述数据包的报文长度和所述数据包所在数据流的限速速率。
8.根据权利要求6或7所述的装置,其特征在于,所述处理模块在根据数据包的报文长度和数据包所在数据流的限速速率,从多个报文长度和限速速率的组合与令牌值的预设对应关系中确定所述数据包的报文长度和限速速率对应的令牌值时,具体用于:
确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;
根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值;所述预设对应关系中包括每个报文长度区间和每个限速速率区间的组合对应的令牌值。
9.根据权利要求8所述的装置,其特征在于,所述处理模块在根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值时,具体用于:
根据确定的所述报文长度区间和所述限速速率区间,确定报文长度标识和限速速率标识;
从所述预设对应关系中,查询所述报文长度标识和所述限速速率标识对应的令牌值;
所述预设对应关系中包括每个报文长度标识和每个限速速率标识的组合对应的令牌值;每个报文长度标识指示一个报文长度区间,每个限速速率标识指示一个限速速率区间。
10.根据权利要求6所述的装置,其特征在于,所述处理模块还用于:
若所述时间差与所述令牌值的差值大于预设的阈值,转发所述数据包。
11.一种数据包处理装置,其特征在于,包括处理器和存储器,其中:
所述存储器,用于存储程序代码;
所述处理器,用于执行所述存储器中的代码,具体执行以下步骤:
根据数据包的报文长度和数据包所在数据流的限速速率,从多个报文长度和限速速率的组合与令牌值的预设对应关系中确定所述数据包的报文长度和限速速率对应的令牌值,所述令牌值指示可编程交换机以所述限速速率转发所述报文长度的数据包所需要的时长;
当所述令牌值大于时间差时,丢弃所述数据包;其中,所述时间差为所述数据包到达所述可编程交换机的时刻与在先数据包到达所述可编程交换机的时刻之间的差值,所述在先数据包在所述数据包之前到达所述可编程交换机且被所述可编程交换机转发;
当所述令牌值小于所述时间差时,获取所述时间差与所述令牌值的差值;
若所述时间差与所述令牌值的差值小于预设的阈值,根据丢弃策略判断是否丢弃所述数据包。
12.根据权利要求11所述的装置,其特征在于,所述处理器还用于:
解析所述数据包,确定所述数据包的报文长度和所述数据包所在数据流的限速速率。
13.根据权利要求11或12所述的装置,其特征在于,所述处理器在根据数据包的报文长度和数据包所在数据流的限速速率,从多个报文长度和限速速率的组合与令牌值的预设对应关系中确定所述数据包的报文长度和限速速率对应的令牌值时,具体用于:
确定所述数据包的报文长度所在的报文长度区间以及所述数据包所在数据流的限速速率所在的限速速率区间,所述报文长度区间是基于最大报文长度划分的多个报文长度区间中的一个,所述限速速率区间是基于最大限速速率划分的多个限速速率区间中的一个;
根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值;所述预设对应关系中包括每个报文长度区间和每个限速速率区间的组合对应的令牌值。
14.根据权利要求13所述的装置,其特征在于,所述处理器在根据确定的所述报文长度区间和所述限速速率区间,从预设对应关系中确定所述令牌值时,具体用于:
根据确定的所述报文长度区间和所述限速速率区间,确定报文长度标识和限速速率标识;
从所述预设对应关系中,查询所述报文长度标识和所述限速速率标识对应的令牌值;
所述预设对应关系中包括每个报文长度标识和每个限速速率标识的组合对应的令牌值;每个报文长度标识指示一个报文长度区间,每个限速速率标识指示一个限速速率区间。
15.根据权利要求11所述的装置,其特征在于,所述处理器还用于:
若所述时间差与所述令牌值的差值大于预设的阈值,转发所述数据包。
16.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令在计算机上运行时,如权利要求1至5中任一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911047115.5A CN112751774B (zh) | 2019-10-30 | 2019-10-30 | 一种数据包处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911047115.5A CN112751774B (zh) | 2019-10-30 | 2019-10-30 | 一种数据包处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112751774A CN112751774A (zh) | 2021-05-04 |
CN112751774B true CN112751774B (zh) | 2023-07-11 |
Family
ID=75640846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911047115.5A Active CN112751774B (zh) | 2019-10-30 | 2019-10-30 | 一种数据包处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112751774B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086450B (zh) * | 2022-06-01 | 2023-11-17 | 珠海高凌信息科技股份有限公司 | 一种可编程数据平面装置、流表更新方法及交换机 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710502A (zh) * | 2012-05-12 | 2012-10-03 | 杭州迪普科技有限公司 | 一种基于消耗时间的网络限速方法及装置 |
CN102780621A (zh) * | 2012-07-23 | 2012-11-14 | 北京星网锐捷网络技术有限公司 | 一种上行数据包发送方法、装置及网络设备 |
CN103501278A (zh) * | 2013-09-30 | 2014-01-08 | 珠海市君天电子科技有限公司 | 一种平滑的流量控制方法及装置 |
CN104009928A (zh) * | 2014-05-26 | 2014-08-27 | 深圳市共进电子股份有限公司 | 一种对数据流进行限速的方法及装置 |
WO2017012412A1 (zh) * | 2015-07-21 | 2017-01-26 | 深圳市中兴微电子技术有限公司 | 一种流量监管方法、装置及存储介质 |
CN106850466A (zh) * | 2017-02-22 | 2017-06-13 | 电子科技大学 | 一种时间触发网络中数据包的转发方法及装置 |
-
2019
- 2019-10-30 CN CN201911047115.5A patent/CN112751774B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102710502A (zh) * | 2012-05-12 | 2012-10-03 | 杭州迪普科技有限公司 | 一种基于消耗时间的网络限速方法及装置 |
CN102780621A (zh) * | 2012-07-23 | 2012-11-14 | 北京星网锐捷网络技术有限公司 | 一种上行数据包发送方法、装置及网络设备 |
CN103501278A (zh) * | 2013-09-30 | 2014-01-08 | 珠海市君天电子科技有限公司 | 一种平滑的流量控制方法及装置 |
CN104009928A (zh) * | 2014-05-26 | 2014-08-27 | 深圳市共进电子股份有限公司 | 一种对数据流进行限速的方法及装置 |
WO2017012412A1 (zh) * | 2015-07-21 | 2017-01-26 | 深圳市中兴微电子技术有限公司 | 一种流量监管方法、装置及存储介质 |
CN106850466A (zh) * | 2017-02-22 | 2017-06-13 | 电子科技大学 | 一种时间触发网络中数据包的转发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112751774A (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100990340B1 (ko) | 무선 통신 환경에서의 패킷 라우팅 | |
US8665892B2 (en) | Method and system for adaptive queue and buffer control based on monitoring in a packet network switch | |
KR100990054B1 (ko) | 다수의 요청에 기초한 qos 처리의 제공 | |
US7359321B1 (en) | Systems and methods for selectively performing explicit congestion notification | |
US8817807B2 (en) | System and method for distributed resource control of switches in a network environment | |
CN112585914B (zh) | 报文转发方法、装置以及电子设备 | |
US9125089B2 (en) | Method and apparatus for packet aggregation in a network controller | |
US11863459B2 (en) | Packet processing method and apparatus | |
US11290388B2 (en) | Flow control method and apparatus | |
US10135736B1 (en) | Dynamic trunk distribution on egress | |
EP2562964B1 (en) | Alleviating congestion in a cable modem | |
US11799803B2 (en) | Packet processing method and apparatus, communications device, and switching circuit | |
JP2022518857A (ja) | パケットスケジューリング方法、スケジューラ、ネットワーク装置及びネットワークシステム | |
CN108206787A (zh) | 一种拥塞避免方法和装置 | |
JP2009027400A (ja) | 過大フロー検出装置、過大フロー検出回路、端末装置及びネットワークノード | |
JP2020017903A (ja) | 通信システム、通信制御方法、及び通信装置 | |
CN112751774B (zh) | 一种数据包处理方法、装置及设备 | |
CN113055301A (zh) | 拥塞控制方法及相关设备 | |
US20120063339A1 (en) | Method and apparatus for transmitting packet in wireless network | |
US8660001B2 (en) | Method and apparatus for providing per-subscriber-aware-flow QoS | |
Baba et al. | Soft-isolated network slicing evaluation for 5G low-latency services with real application micro-burst | |
Cardozo et al. | Bufferbloat systematic analysis | |
Irawan et al. | Performance evaluation of queue algorithms for video-on-demand application | |
WO2022068617A1 (zh) | 流量整形方法及装置 | |
CN114979011A (zh) | 一种应用于园区网络的拥塞控制方法 |
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 |