CN105099932A - 基于直通转发技术的调度方法及装置 - Google Patents

基于直通转发技术的调度方法及装置 Download PDF

Info

Publication number
CN105099932A
CN105099932A CN201510374398.XA CN201510374398A CN105099932A CN 105099932 A CN105099932 A CN 105099932A CN 201510374398 A CN201510374398 A CN 201510374398A CN 105099932 A CN105099932 A CN 105099932A
Authority
CN
China
Prior art keywords
packet
scheduling
bag
equipment
markers
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.)
Granted
Application number
CN201510374398.XA
Other languages
English (en)
Other versions
CN105099932B (zh
Inventor
雷春
王运富
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510374398.XA priority Critical patent/CN105099932B/zh
Publication of CN105099932A publication Critical patent/CN105099932A/zh
Application granted granted Critical
Publication of CN105099932B publication Critical patent/CN105099932B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/33Flow control; Congestion control using forward notification

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明实施例提供一种基于直通转发技术的调度方法及装置。本发明实施例基于直通转发技术,通过在检测到包描述对应的数据包未完整存储至设备的存储器时,比较当前时标与包描述中所携带的预估时间预估时标的大小,且当当前时标大于或等于预估时标时,设备即开始调度包描述对应的数据包,从而在存储数据包的同时,即开始调度,减短数据包从输入设备到输出设备的传输时间,以提升通信质量。另外,以当前时标大于或等于预估时标作为设备调度数据包的前提,是为了保证设备所调度数据包的完整性,以实现设备对数据包的有效调度。

Description

基于直通转发技术的调度方法及装置
技术领域
本发明实施例涉及通信技术,尤其涉及一种基于直通转发技术的调度方法及装置。
背景技术
直通转发技术(英文:Cut-through)是指设备,例如交换机或网卡,在获取到数据包的目的地址后,开始向目的端口发送数据包。通常情况下,设备在接收到数据包的前6个字节时就已经获取到目的地址,从而可以确定目的端口,并向该目的端口转发这个数据包。
接下来以网卡为例,说明网卡基于直通转发技术的下行处理流程。网卡从中央处理器(英文:CentralProcessingUnit,简称:CPU)的主存储器获取数据包,并转发该数据包给其他设备。在此调度过程中,因基于直通转发技术,所以,网卡在收集数据包的首部信息,例如介质访问控制(英文:MediaAccessControl,简称:MAC)地址,网络协议(英文:InternetProtocol,简称:IP)地址,目的端口号等信息,和数据包在网卡的存储器中的存储地址指针后,生成一个数据包头,该数据包头可以称为“包描述(英文:PacketDescription,简称:PD)”,其中,首部信息中部分或全部信息包含于数据包的前6个字节;然后,网卡在处理该包描述的同时,存储整个数据包至存储器,并在存储完成后,才开始调度该数据包,以及对该数据包进行处理后发出。其中,调度包括流队列调度和端口调度。
在上述技术中,单个数据包从输入网卡到输出网卡的传输时间为数据包完整存储到存储器的时间、队列调度时间、端口调度时间、包描述处理时间和数据包处理时间的加总和。对于一数据包,若检测到该数据包还未完全存储至存储器,此时,需要等待该数据包的完整存储,从而导致该数据包从输入网卡到输出网卡的传输时间较长,导致通信质量下降。
发明内容
本发明实施例提供一种基于直通转发技术的调度方法及装置,以解决上述技术中存在的问题,可减短数据包从输入网卡到输出网卡的传输时间,从而可提升通信质量。
第一方面,本发明实施例提供一种基于直通转发技术的调度方法,应用于设备通过增强的外设部件互连标准PCIe接口调度数据,所述调度方法包括:
所述设备接收数据包,生成包描述,其中,所述包描述中携带预估时标,所述预估时标用于表示预估的所述数据包完整存储至所述设备的存储器的时标,所述包描述与所述数据包唯一对应;
所述设备通过所述包描述检测所述数据包是否完整存储至所述设备的存储器中;
当所述设备通过所述包描述检测到所述数据包未完整存储至所述设备的存储器时,所述设备比较当前时标与所述包描述中所携带的所述预估时标的大小,所述当前时标用于表示所述设备内置的计数器的当前计数值;
当所述当前时标大于或等于所述预估时标时,所述设备调度所述包描述,其中,调度包括队列调度和端口调度;
所述设备根据所述包描述中携带的、所述数据包在所述存储器的存储地址信息,读取所述数据包,并对所述数据包进行处理;
所述设备将处理后的数据包发送出去。
根据第一方面,在第一方面的第一种可能的实现方式中,所述队列调度具体为:所述设备根据所述包描述在队列中的位置,调度所述包描述;所述端口调度具体为:当所述设备检测到所述数据包已完整存储至所述设备的存储器时,所述设备根据所述包描述中所携带的目的端口,调度所述包描述。
根据第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述设备接收数据包,包括:
所述设备接收所述数据包的第一个分片,所述第一个分片包括所述数据包的头部信息,所述头部信息包括所述数据包的长度;
所述调度方法还包括:
所述设备根据所述数据包的长度、所述PCIe接口直接内存访问DMA的单位读取量以及所述设备的调度平均时延,获得所述预估时标。
根据第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述设备根据所述数据包的长度,所述PCIe接口DMA的单位读取量和分片读取平均时延,以及所述设备的调度平均时延,获得所述预估时标,包括:
根据如下式子获得调整时间:
其中,L表示所述数据包的长度,α表示所述PCIe接口DMA的单位读取量,表示分片读取平均时延,表示所述设备的调度平均时延,△t表示所述调整时间;
根据所述调整时间及所述设备接收到所述数据包的第一个分片的时标,获得所述预估时标:其中,t表示所述设备接收到所述数据包的第一个分片的时标,表示所述预估时标。
根据第一方面的第二种或第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述调度方法还包括:
所述设备根据以下方式确定所述调度平均时延:
在所述设备流量很低的情况下,所述调度平均时延为所述设备内调度器的调度的最好能力;
在正常使用时,所述设备流量比较大的情况下,包描述滞留在所述设备内部的缓存中等待调度,所述调度平均时延为所述调度器的最差调度能力。
第二方面,本发明实施例提供一种基于直通转发技术的调度装置,应用于所述调度装置通过增强的外设部件互连标准PCIe接口调度数据,所述调度装置包括:
输入接口,用于接收数据包;
共享缓存处理模块,用于根据所述输入接口接收的所述数据包生成包描述,其中,所述包描述中携带预估时标,所述预估时标用于表示预估的所述数据包完整存储至所述调度装置的存储模块的时标,所述包描述与所述数据包唯一对应;
调度处理模块,用于通过所述包描述检测所述数据包是否完整存储至所述调度装置的存储模块中;当通过所述包描述检测到所述数据包未完整存储至所述调度装置的存储模块时,比较当前时标与所述包描述中所携带的所述预估时标的大小,所述当前时标用于表示所述调度装置内置的计数模块的当前计数值;以及,当所述当前时标大于或等于所述预估时标时,调度所述包描述给数据包处理模块,其中,调度包括队列调度和端口调度;
所述数据包处理模块,用于根据所述包描述中携带的、所述数据包在所述存储模块的存储地址信息,读取所述数据包,并对所述数据包进行处理;
输出接口,用于将所述数据包处理模块处理后的数据包发送出去。
根据第二方面,在第二方面的第一种可能的实现方式中,所述调度处理模块包括流队列调度处理模块和端口调度处理模块,其中,
所述流队列调度处理模块,用于根据所述包描述在队列中的位置,调度所述包描述给所述端口调度处理模块;
所述端口调度处理模块,用于当检测到所述数据包已完整存储至所述调度装置的存储模块时,根据所述包描述中所携带的目的端口,调度所述包描述。
根据第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述输入接口具体用于:接收所述数据包的第一个分片,所述第一个分片包括所述数据包的头部信息,所述头部信息包括所述数据包的长度;所述共享缓存处理模块还用于:根据所述数据包的长度、所述PCIe接口直接内存访问DMA的单位读取量以及所述调度装置的调度平均时延,获得所述预估时标。
根据第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述共享缓存处理模块用于根据所述数据包的长度,所述PCIe接口DMA的单位读取量和分片读取平均时延,以及所述调度装置的调度平均时延,获得所述预估时标时,具体用于:
根据如下式子获得调整时间:
其中,L表示所述数据包的长度,α表示所述PCIe接口DMA的单位读取量,表示分片读取平均时延,表示所述调度装置的调度平均时延,△t表示所述调整时间;
根据所述调整时间及所述输入接口接收到所述数据包的第一个分片的时标,获得所述预估时标:其中,t表示所述输入接口接收到所述数据包的第一个分片的时标,表示所述预估时标。
根据第二方面的第二种或第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述共享缓存处理模块还用于:
根据以下方式确定所述调度平均时延:
在所述调度装置流量很低的情况下,所述调度平均时延为所述调度处理模块的调度的最好能力;
在正常使用时,所述调度装置流量比较大的情况下,包描述滞留在所述调度装置内部的缓存中等待调度,所述调度平均时延为所述调度处理模块的最差调度能力。
本发明实施例基于直通转发技术的调度方法及装置,通过在检测到包描述对应的数据包未完整存储至设备的存储器时,比较当前时标与包描述中所携带的预估时标的大小,且当当前时标大于或等于预估时标时,设备即开始调度包描述对应的数据包,从而在存储数据包的同时,即开始调度,减短数据包从输入设备到输出设备的传输时间,以提升通信质量。另外,以当前时标大于或等于预估时标作为设备调度数据包的前提,是为了保证设备所调度数据包的完整性,以实现设备对数据包的有效调度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为网卡的内部结构示意图;
图2为本发明应用场景示例图;
图3为本发明基于直通转发技术的调度方法实施例一的流程图;
图4为本发明基于直通转发技术的调度方法与现有技术的传输时间对比示意图;
图5为共享缓存处理模块的内部结构及其与外部的连接的示意图;
图6为流队列调度处理模块的内部调度示意图;
图7为端口调度处理模块的内部调度示意图;
图8为本发明基于直通转发技术的调度装置实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,说明网卡基于直通转发技术的下行处理流程。如图1所示,网卡10通过新一代的外设部件互连标准(英文:PeripheralComponentInterconnectExpress,简称:PCIe)接口模块11和共享缓存处理模块12,将数据包从中央处理器(英文:CentralProcessingUnit,简称:CPU)20的主存储器(未示出)搬移到网卡10的存储器(英文:Memory)13。同时,共享缓存处理模块12收集数据包的首部信息,例如介质访问控制(英文:MediaAccessControl,简称:MAC)地址,网络协议(英文:InternetProtocol,简称:IP)地址,目的端口号等信息,和数据包在存储器13中的存储地址指针,生成一个数据包头发送给帧头处理模块14,该数据包头可以称为“包描述(英文:PacketDescription,简称:PD)”。帧头处理模块14对包描述进行L2/L3层协议处理等处理,并将处理后的包描述输入至流队列调度处理模块15。流队列调度处理模块15缓存输入的处理后的包描述至流队列。因基于直通转发技术,流队列调度处理模块15在调度时要对数据包在存储器13中存储的完整性进行检测,如果检测结果是非完整数据包,则该非完整数据包不参与调度,同时,该非完整数据包所在的流队列中的其他数据包也不参与调度。流队列调度处理模块15输出完整数据包对应的包描述给端口调度处理模块16。端口调度处理模块16缓存完整数据包对应的包描述,按照端口调度的原则进行调度,输出完整数据包对应的包描述给数据包处理模块17。数据包处理模块17根据完整数据包对应的包描述中的存储地址指针信息,从存储器13中读出数据包,并按照包描述中的数据包处理信息处理数据包,进行相关的校验、切片或数据包修改等处理后,从介质访问控制(英文:MediaAccessControl,简称:MAC)接口18输出。
在图1所示的架构中,当处理数据包追求最小的时延时,在X86的CPU系统中,网卡和X86的CPU的接口可为PCIe接口模块11,当数据包从主存储器向网卡10的存储器13搬移时,是按照PCIe接口模块11协商的最大读取请求大小(Maxreadrequestsize)单位进行的。如果最大读取请求大小为128字节(英文:byte),对于2K大小的数据包要搬移16次。采用直通转发技术的架构,即网卡10得到数据包的第一个分片后就可以进行数据包的转发。因为帧头处理模块14只处理数据包头,此时,得到数据包的第一个分片后已经具备处理条件,所以,为了减少时延,不等数据包全部写入存储器13中,就将数据包头分片,即包描述发送给帧头处理模块14进行处理,处理完毕后将处理后的包描述输入至流队列调度处理模块15进行调度。
直通转发技术解决的一个问题是调度过程中可能存在不完整的包,这个不完整的包在流队列调度处理模块15中如何调度的。如果不考虑数据包的完整性,在端口调度处理模块16中就没有完整的数据包处理,数据包调度处于等待状态,从而导致调度流量的下降。
在现有技术中,通过流队列调度处理模块15在调度时对数据包在存储器13中存储的完整性进行检测,确保数据包完整存入网卡10的存储器13中后再进行调度,这样,又会存在背景技术中所述的问题。
基于上述原因,本发明提供一种基于直通转发技术的调度方法及装置,以避免上述技术中存在的问题,可减短数据包从输入设备到输出设备的传输时间,提升通信质量。
本发明实施例的一种应用场景中,使用网卡将客户端中CPU的数据经过交换网发送到服务器端的CPU上。可选地,在客户端使用现场可编程门阵列(英文:FieldProgrammableGateArray,简称:FPGA)替代网卡,实现直通转发技术。如图2所示,在客户端100中,CPU101与FPGA102之间采用PCIe接口;在服务器端200中,CPU201与网卡202之间采用PCIe接口;服务器端200与交换机300,以及客户端100与交换机300之间采用串行器/解串器(英文:SERializer/DESerializer,简称:SerDes)接口。
图3为本发明基于直通转发技术的调度方法实施例一的流程图。本发明实施例提供一种基于直通转发技术的调度方法,应用于设备通过PCIe接口调度数据,将CPU的主存储器中的数据搬移到设备的内部。该方法可以由基于直通转发技术的调度装置执行,该装置可以通过硬件和/或软件的方式实现,该装置可以集成在网卡等设备中。
如图3所示,本实施例的方法包括:
S301、设备接收数据包,生成包描述,其中,包描述中携带预估时标,预估时标用于表示预估的数据包完整存储至上述设备的存储器的时标,包描述与数据包唯一对应。
相比于现有技术,本发明实施例在包描述中增加一预估时标。其中,在包描述中增加预估时标可通过多种方式实现,例如,在包描述中新增一字段,该字段用于表示预估时标,或者,在包描述中利用一空闲位,使用该空闲位来表示预估时标,等等。
S302、设备通过包描述检测该数据包是否完整存储至设备的存储器中。
因包描述与数据包唯一对应,所以,包描述就代表了数据包,故数据包的存储状态可通过包描述检测。
S303、当设备通过包描述检测到数据包未完整存储至该设备的存储器时,设备比较当前时标与包描述中所携带的预估时标的大小,其中,当前时标用于表示设备内置的计数器的当前计数值。
在现有技术中,若网卡检测到数据包未完整存储至该网卡的存储器时,需要等待数据包的完整存储,在此存储过程中网卡是不调度该数据包的。本发明实施例中,设备在检测到数据包未完整存储至该设备的存储器时,还要比较当前时标与包描述中所携带的预估时标的大小。
当设备调度数据包时,首先检测数据包在设备内部的完整性,即数据包是否完整存储至设备的存储器中。在现有技术中,当数据包未完整存储在设备的存储器中时,则等待数据包全部存储到设备的存储器,在此存储过程中网卡是不调度该数据包的。在本发明实施例中,在设备检测到数据包未完整存储至该设备的存储器时,不再等待数据包全部存储,此时,设备比较当前时标与包描述中所携带的预估时标的大小,当当前时标小于预估时标时,按照现有技术调度;否则,执行S304。
S304、当当前时标大于或等于预估时标时,设备调度包描述,其中,调度包括队列调度和端口调度。
通常情况下,包描述是缓存在队列中的,因此,在设备调度包描述时,首先进行队列调度,再根据包描述中携带的目的端口进行端口调度。其中,端口调度时还可结合优先级调度,等等,本发明不以此为限制。
S305、设备根据包描述中携带的、数据包在存储器的存储地址信息,读取数据包,并对数据包进行处理。
设备根据所调度的包描述,从存储器读取该包描述对应的数据包,并按照包描述中的数据包处理信息处理数据包,进行相关的校验、切片或数据包修改等处理。
S306、设备将处理后的数据包发送出去。
可以理解,因预估时标仅是预估的数据包完整存储至上述设备的存储器的时间,因此,数据包完整存储到设备的存储器的实际时间与预估时标存在以下三种关系:
一种关系中,实际时间大于预估时标。该关系中,到达该预估时标时,数据包未完整存储到设备的存储器中。此时,若当前时标小于预估时标,数据包不完整,因此,等待若干时间,使得当前时标大于或等于预估时标之后再开始调度,在一定程度上可保证数据包的完整性。也就是说,等待的时间小于等待数据包完整存储的时间,相比于现有技术,可减短数据包从输入设备到输出设备的传输时延时间。
另一种关系中,实际时间等于预估时标。该关系中,到达该预估时标时,数据包恰好完整存储到设备的存储器中。此时,调度触发条件,即当前时标大于或等于预估时标,可保证数据包的完整性。
又一种关系中,实际时间小于预估时标。该关系中,到达该预估时标时,数据包已完整存储到设备的存储器中。
基于上述原因,本发明实施例比较当前时标与预估时标的大小,采用当当前时标大于或等于预估时标时开始调度。
应理解,尽管本文中可使用术语“当前时标”以描述某一时刻,但该时刻不是固定不变的,也就是说当前时标随计数器的数值的改变而改变。
本发明实施例基于直通转发技术,通过在检测到包描述对应的数据包未完整存储至设备的存储器时,比较当前时标与包描述中所携带的预估时标的大小,且当当前时标大于或等于预估时标时,设备即开始调度包描述对应的数据包,从而在存储数据包的同时,即开始调度,减短数据包从输入设备到输出设备的传输时间,以提升通信质量。另外,以当前时标大于或等于预估时标作为设备调度数据包的前提,是为了保证设备所调度数据包的完整性,以实现设备对数据包的有效调度。其中,图4示例示出本发明实施例与现有技术的传输时间的对比。
在上述实施例中,队列调度可以具体为:设备根据包描述在队列中的位置,调度包描述。端口调度可以具体为:当设备检测到数据包已完整存储至设备的存储器时,设备根据包描述中所携带的目的端口,调度包描述。
以下采用网卡作为上述设备为例,详细说明本发明实施例的调度过程。
图5示出共享缓存处理模块的内部处理过程。参考图5,共享缓存处理模块42通过PCIe接口模块41接收数据包的各分片。当数据包的第一个分片进入入队处理子模块421时,入队处理子模块421向存储器地址资源池422申请数据包在存储器的存储地址;在申请到存储地址后,入队处理子模块421将数据包的各分片按申请到的存储地址存入存储器43;同时,入队处理子模块421将数据包的第一个分片中需要处理的字段,例如MAC地址,IP地址等需要进行处理的信息写入包描述,该数据包在存储器43中的存储地址以及完整存储的预估时标也写入包描述;另外,如果是数据包的第一个分片,入队处理子模块421还为该数据包的第一个分片向数据包ID资源池423申请一个序列号(英文:SerialNumber,简称:SN),称为“head_cell_id”,将head_cell_id也写入包描述。其中,head_cell_id为数据包进入网卡时申请,数据包离开网卡时释放。入队处理子模块421将生成的包描述输出到帧头处理模块44。
帧头处理模块44处理包描述,这里所说的处理可以包括L2/L3协议处理,校验,流化等,这里不进行详述。帧头处理模块44将处理后的包描述输出给流队列调度处理模块。
如图6所示,流队列调度处理模块将输入的包描述按照解析出的流队列号为进行缓存。例如,根据五元组算出一个数据包的包描述对应的流队列号为1,则将该数据包的包描述存入流队列号1对应的随机存取存储器(英文:RandomAccessMemory,简称:RAM)中,其中,流队列的个数这里列举为n个,n为自然数。这样,不同的流队列中存储的都是不同数据包的包描述,包描述就代表了数据包,本实施例中一个方框代表一个表描述。流队列调度就是调度不同流队列中的包描述。
由于直通转发技术,传统流队列调度时要对数据包在存储器中存储的完整性进行检查,如果检查结果是非完整报文,则调度时不参与调度或不输出。具体实现方式如图6所示,由于包描述中有“head_cell_id”字段,“head_cell_id”代表了在网卡中的一个数据包。利用“head_cell_id”为地址生成一个表,即数据包状态RAM,表的数据表示数据包在存储器中存储的状态。其中,数据包状态RAM中,带有斜线的方框表示“head_cell_id”寻址到的对应的数据包的状态为0,表示数据包还没有完整存储到网卡的存储器中,流队列调度处理模块对流队列轮询时放弃对这个流队列的调度;不带有斜线的方框表示“head_cell_id”寻址到的对应的数据包的状态为1,表示数据包完整存储到网卡的存储器中。
在本发明实施例中,包描述中携带预估时标。因此,在流队列调度处理模块查询数据包状态RAM,如果数据包状态RAM中的数据显示为数据包为完整存储状态,预估时标不起作用,即不进行比较直接调度出流队列;否则,比较当前时标与包描述中所携带的预估时标的大小,如果当前时标大于或等于预估时标,流队列调度处理模块调度包描述对应的数据包。
流队列调度处理模块输出的包描述进入端口调度处理模块。在端口调度处理模块中,包描述按照端口×优先级的方式进入端口队列RAM等待调度。具体地,端口调度处理模块调度的方式为端口之间同一个优先级轮询(英文:RollPoling,简称:RP),不同优先级采用严格优先级(StrictPriority,简称:SP)或(英文:WeightRollPoling,简称:WRP)调度。如图7所示,该例中外部有4个端口:端口A、端口B、端口C和端口D,每个端口优先级有8级:优先级0至优先级7,一共存在32个队列,分2级调度,第一级调度中,4个端口的优先级0队列RP轮询,4个端口的优先级1队列RP轮询,如此类推,一共存在8个RP轮询调度器,分别输出8个优先级的调度结果;第2级调度中,通过多路复用器对8个优先级的调度结果进行选择,其中,一部分做SP调度,剩下的部分做WRP调度,调度输出的结果递交给数据包处理模块。
本发明实施例中,端口调度处理模块调度包描述时,还要检测包描述对应的数据包在网卡的存储器中的状态,具体的,查看数据包状态RAM。如果包描述在数据包状态RAM中对应的数据显示为1,表示数据包已完整存储在网卡中,端口调度处理模块调度处理后的包描述给设备内的数据包处理模块,并经设备的输出接口输出;否则,不允许调度。
最后,数据包处理模块得到端口调度处理模块输出的包描述后,根据包描述中数据包在存储器的存储地址信息,通过共享缓存处理模块从存储器中读出整个数据包,同时释放存储地址和head_cell_id指针地址;然后,根据包描述中的相关命令信息对数据包进行处理,其中,处理可包括校验,改写,切片,头添加或剥离等处理;处理完毕后,数据包处理模块将处理后的数据包传输给MAC接口模块,从MAC接口模块对外发送出去。
具体地,参考图5,数据包处理模块47得到端口调度处理模块输出的包描述后,根据包描述中数据包在存储器43的存储地址信息,通过共享缓存处理模块42的出队处理子模块424从存储器43中读出整个数据包,然后执行上述后续流程,此处不再赘述。
本发明实施例通过流队列调度处理模块在检测到包描述对应的数据包未完整存储至设备的存储器时,比较当前时标与包描述中所携带的预估时标的大小,且当当前时标大于或等于预估时标时,流队列调度处理模块即开始调度包描述对应的数据包,从而在存储数据包的同时,即开始调度,减短数据包从输入网卡到输出网卡的传输时间,以提升通信质量。另外,以当前时标大于或等于预估时标作为设备调度数据包的前提,是为了保证设备所调度数据包的完整性,以实现设备对数据包的有效调度。其中,图4示例示出本发明实施例与现有技术的延时对比。
进一步地,现有技术中,当一个流队列中连续的2个数据包,在先数据包是长数据包,在后数据包是短数据包,且长数据包的目的端口为一端口,短数据包的目的端口为另一端口时,在流队列调度处理模块中,检测到长数据包还未完全存储至存储器,而短数据包已完成到存储器的存储,此时,因流队列具有先入先出的特点,短数据包的调度在长数据包的调度完成之后,从而导致短数据包从输入网卡到输出网卡的传输时间延长。而本发明实施例减短了长数据包的传输时间,因此,短数据包的等待时间变短,从而减短同一流队列中短数据包的传输时间。
在上述实施例的基础上,设备接收数据包可以包括:设备接收数据包的第一个分片,该第一个分片包括数据包的头部信息,头部信息包括所述数据包的长度。此时,该调度方法还可以包括:设备根据数据包的长度、PCIe接口直接内存访问(英文:DirectMemoryAccess,简称:DMA)的单位读取量以及设备的调度平均时延,获得预估时标。
其中,设备根据数据包的长度,PCIe接口DMA的单位读取量和分片读取平均时延,以及设备的调度平均时延,获得预估时标,可以包括:
(1)根据如下式子获得调整时间:
式(1)
上式中,L表示数据包的长度,α表示PCIe接口DMA的单位读取量,表示分片读取平均时延,表示设备的调度平均时延,△t表示调整时间。
(2)根据调整时间及设备接收到数据包的第一个分片的时标,获得预估时标:其中,t表示设备接收到数据包的第一个分片的时标,表示预估时标。
具体地,以下说明上述参数的设定。
1)确定时标:设备内部设定一个计数器,设备复位以后计数器一直计数,计数值用于表示当前时标。
2)确定数据包的长度:PCIe接口模块给入队处理子模块的数据包的第一个分片中包含数据包的长度(pkt_length)的信息。
3)确定PCIe接口参数:PCIe接口DMA的单位读取量(maxreadrequestsize),即分片大小,通常为128字节。
4)确认软件配置参数:分片读取平均时延,即PCIeDMA读出平均时延(dma_rd_delay)测算时需要一个软件配置的参数,即统计样本数,通常设定为2048。
5)确定分片读取平均时延:网卡内部实现DMA读取的平均读时延的自动测试,即网卡统计每次发起PCIeDMA读请求(read_request)时收收到CPU返回数据包分片的时间差,对时间差进行累加,累加的个数等于软件配置的统计样本数(例如2048)时,将累加值进行平均,得到的值称为分片读取平均时延。需注意的是,软件配置的个数可选的是2的幂次方,这样,在求平均的时候只需移位就可以实现除法运算。
6)确定设备的调度平均时延:在设备流量很低的情况下,调度平均时延为设备内调度器的调度的最好能力;在正常使用时,设备流量比较大的情况下,包描述滞留在设备内部的缓存中等待调度,调度平均时延为调度器的最差调度能力。具体地,根据运用场景,分为测试模式和非测试模式,测试模式的运用场景为时延比拼,即CPU只发很少的数据包,在设备流量很低的情况下测试数据包的时延,设备的调度平均时延等于调度器的调度的最好能力;非测试模式为正常使用时流量比较大的情况,很多包描述滞留在设备内部的缓存中等待调度,此时调度时延变为数据包时延的主要部分,设备的调度平均时延等于调度器的最差调度能力。
上述两种场景下的设备的调度平均时延都基于设备内部设置的的寄存器硬件求出的平均值为基础,软件配置的时候可以根据需要适当调整。
7)确定调整时间:根据式(1)确定调整时间。
8)确定预估时标:
网卡背景下,当网卡从PCIe接口接收数据时,数据包头携带了数据包的长度信息,网卡主动测试PCIe接口的读时延,预测出该数据包完整存入网卡的存储器的预估时标并写入包描述;当进行流队列调度的时候,如果数据包状态RAM显示已经完全入队,该预估时标不起作用;当数据包状态RAM显示非完全入队时,流队列调度允许提前将数据包调度出来,以便抵消后级的流队列调度时间和端口调度时间。采用当前时标和包描述中携带的预估时标相比较,比较差值小于软件设定的调度时延时,允许提前调度。同时在端口调度时再次查询数据包状态RAM,确定数据包已经完整存入网卡的存储器后才允许端口调度。
可以理解,本文所说的队列调度可以理解为流队列调度。
图8为本发明基于直通转发技术的调度装置实施例一的结构示意图。本发明实施例提供一种基于直通转发技术的调度装置,应用于通过PCIe接口调度数据,将CPU的主存储器中的数据搬移到调度装置的内部。该调度装置可以通过软件和/或硬件的方式实现。若该调度装置通过软件的方式实现,则该调度装置可以集成在网卡等设备中;若该调度装置通过硬件的方式实现,则该调度装置可以为网卡等设备。
如图8所示,调度装置80包括:输入接口81、共享缓存处理模块82、调度处理模块83、数据包处理模块84、存储模块85和输出接口86。调度装置80基于直通转发技术。
其中,输入接口81用于接收数据包。共享缓存处理模块82用于根据输入接口81接收的数据包生成包描述,其中,包描述中携带预估时标,预估时标用于表示预估的数据包完整存储至调度装置80的存储模块的时标,包描述与数据包唯一对应。调度处理模块83用于通过包描述检测数据包是否完整存储至调度装置80的存储模块85中;当通过包描述检测到数据包未完整存储至调度装置80的存储模块85时,比较当前时标与包描述中所携带的预估时标的大小,当前时标用于表示调度装置80内置的计数模块(未示出)的当前计数值;以及,当当前时标大于或等于预估时标时,调度包描述给数据包处理模块84,其中,调度包括队列调度和端口调度。数据包处理模块84用于根据包描述中携带的、数据包在存储模块85的存储地址信息,读取数据包,并对数据包进行处理。输出接口86用于将数据包处理模块84处理后的数据包发送出去。
本实施例的装置,可以用于执行上述任意方法实施例,例如图3所示方法实施例,的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选地,调度处理模块83可以包括流队列调度处理模块(未示出)和端口调度处理模块(未示出)。其中,流队列调度处理模块可以用于根据包描述在队列中的位置,调度包描述给端口调度处理模块。端口调度处理模块可以用于当检测到数据包已完整存储至调度装置80的存储模块85时,根据包描述中所携带的目的端口,调度包描述。
进一步地,输入接口81可具体用于接收数据包的第一个分片,第一个分片包括数据包的头部信息,头部信息包括数据包的长度。换句话说,输入接口81为PCIe接口。此时,共享缓存处理模块82还可以用于:根据数据包的长度、PCIe接口DMA的单位读取量以及调度装置80的调度平均时延,获得预估时标。
其中,共享缓存处理模块82用于根据数据包的长度,PCIe接口DMA的单位读取量和分片读取平均时延,以及调度装置80的调度平均时延,获得预估时标时,具体用于:
(1)根据如下式子获得调整时间:
其中,L表示数据包的长度,α表示PCIe接口DMA的单位读取量,表示分片读取平均时延,表示调度装置的调度平均时延,△t表示调整时间。
(2)根据调整时间及输入接口81接收到数据包的第一个分片的时标,获得预估时标:其中,t表示输入接口81接收到数据包的第一个分片的时标,表示预估时标。
在上述基础上,共享缓存处理模块82还可以用于:根据以下方式确定调度平均时延。
方式一:在调度装置80流量很低的情况下,调度平均时延为调度处理模块83的调度的最好能力。
方式二:在正常使用时,调度装置80流量比较大的情况下,包描述滞留在调度装置80内部的缓存中等待调度,调度平均时延为调度处理模块83的最差调度能力。
可选地,调度装置80还可以包括帧头处理模块(未示出)。该帧头处理模块处于共享缓存处理模块82与调度处理模块83之间,用于处理共享缓存处理模块82生成的包描述,并将处理后的包描述输出至调度处理模块83。这里的处理包括对包描述进行L2/L3层协议处理等处理,但本发明实施例不以此为限制。
在本申请所提供的几个实施例中,应该理解到,所揭示的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种基于直通转发技术的调度方法,应用于设备通过增强的外设部件互连标准PCIe接口调度数据,其特征在于,所述调度方法包括:
所述设备接收数据包,生成包描述,其中,所述包描述中携带预估时标,所述预估时标用于表示预估的所述数据包完整存储至所述设备的存储器的时标,所述包描述与所述数据包唯一对应;
所述设备通过所述包描述检测所述数据包是否完整存储至所述设备的存储器中;
当所述设备通过所述包描述检测到所述数据包未完整存储至所述设备的存储器时,所述设备比较当前时标与所述包描述中所携带的所述预估时标的大小,所述当前时标用于表示所述设备内置的计数器的当前计数值;
当所述当前时标大于或等于所述预估时标时,所述设备调度所述包描述,其中,调度包括队列调度和端口调度;
所述设备根据所述包描述中携带的、所述数据包在所述存储器的存储地址信息,读取所述数据包,并对所述数据包进行处理;
所述设备将处理后的数据包发送出去。
2.根据权利要求1所述的调度方法,其特征在于,
所述队列调度具体为:所述设备根据所述包描述在队列中的位置,调度所述包描述;
所述端口调度具体为:当所述设备检测到所述数据包已完整存储至所述设备的存储器时,所述设备根据所述包描述中所携带的目的端口,调度所述包描述。
3.根据权利要求1或2所述的调度方法,其特征在于,所述设备接收数据包,包括:
所述设备接收所述数据包的第一个分片,所述第一个分片包括所述数据包的头部信息,所述头部信息包括所述数据包的长度;
所述调度方法还包括:
所述设备根据所述数据包的长度、所述PCIe接口直接内存访问DMA的单位读取量以及所述设备的调度平均时延,获得所述预估时标。
4.根据权利要求3所述的调度方法,其特征在于,所述设备根据所述数据包的长度,所述PCIe接口DMA的单位读取量和分片读取平均时延,以及所述设备的调度平均时延,获得所述预估时标,包括:
根据如下式子获得调整时间:
其中,L表示所述数据包的长度,α表示所述PCIe接口DMA的单位读取量,表示分片读取平均时延,表示所述设备的调度平均时延,Δt表示所述调整时间;
根据所述调整时间及所述设备接收到所述数据包的第一个分片的时标,获得所述预估时标:其中,t表示所述设备接收到所述数据包的第一个分片的时标,表示所述预估时标。
5.根据权利要求3或4所述的调度方法,其特征在于,所述调度方法还包括:
所述设备根据以下方式确定所述调度平均时延:
在所述设备流量很低的情况下,所述调度平均时延为所述设备内调度器的调度的最好能力;
在正常使用时,所述设备流量比较大的情况下,包描述滞留在所述设备内部的缓存中等待调度,所述调度平均时延为所述调度器的最差调度能力。
6.一种基于直通转发技术的调度装置,应用于所述调度装置通过增强的外设部件互连标准PCIe接口调度数据,其特征在于,所述调度装置包括:
输入接口,用于接收数据包;
共享缓存处理模块,用于根据所述输入接口接收的所述数据包生成包描述,其中,所述包描述中携带预估时标,所述预估时标用于表示预估的所述数据包完整存储至所述调度装置的存储模块的时标,所述包描述与所述数据包唯一对应;
调度处理模块,用于通过所述包描述检测所述数据包是否完整存储至所述调度装置的存储模块中;当通过所述包描述检测到所述数据包未完整存储至所述调度装置的存储模块时,比较当前时标与所述包描述中所携带的所述预估时标的大小,所述当前时标用于表示所述调度装置内置的计数模块的当前计数值;以及,当所述当前时标大于或等于所述预估时标时,调度所述包描述给数据包处理模块,其中,调度包括队列调度和端口调度;
所述数据包处理模块,用于根据所述包描述中携带的、所述数据包在所述存储模块的存储地址信息,读取所述数据包,并对所述数据包进行处理;
输出接口,用于将所述数据包处理模块处理后的数据包发送出去。
7.根据权利要求6所述的调度装置,其特征在于,所述调度处理模块包括流队列调度处理模块和端口调度处理模块,其中,
所述流队列调度处理模块,用于根据所述包描述在队列中的位置,调度所述包描述给所述端口调度处理模块;
所述端口调度处理模块,用于当检测到所述数据包已完整存储至所述调度装置的存储模块时,根据所述包描述中所携带的目的端口,调度所述包描述。
8.根据权利要求6或7所述的调度装置,其特征在于,
所述输入接口具体用于:接收所述数据包的第一个分片,所述第一个分片包括所述数据包的头部信息,所述头部信息包括所述数据包的长度;
所述共享缓存处理模块还用于:根据所述数据包的长度、所述PCIe接口直接内存访问DMA的单位读取量以及所述调度装置的调度平均时延,获得所述预估时标。
9.根据权利要求8所述的调度装置,其特征在于,所述共享缓存处理模块用于根据所述数据包的长度,所述PCIe接口DMA的单位读取量和分片读取平均时延,以及所述调度装置的调度平均时延,获得所述预估时标时,具体用于:
根据如下式子获得调整时间:
其中,L表示所述数据包的长度,α表示所述PCIe接口DMA的单位读取量,表示分片读取平均时延,表示所述调度装置的调度平均时延,Δt表示所述调整时间;
根据所述调整时间及所述输入接口接收到所述数据包的第一个分片的时标,获得所述预估时标:其中,t表示所述输入接口接收到所述数据包的第一个分片的时标,表示所述预估时标。
10.根据权利要求8或9所述的调度装置,其特征在于,所述共享缓存处理模块还用于:
根据以下方式确定所述调度平均时延:
在所述调度装置流量很低的情况下,所述调度平均时延为所述调度处理模块的调度的最好能力;
在正常使用时,所述调度装置流量比较大的情况下,包描述滞留在所述调度装置内部的缓存中等待调度,所述调度平均时延为所述调度处理模块的最差调度能力。
CN201510374398.XA 2015-06-30 2015-06-30 基于直通转发技术的调度方法及装置 Active CN105099932B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510374398.XA CN105099932B (zh) 2015-06-30 2015-06-30 基于直通转发技术的调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510374398.XA CN105099932B (zh) 2015-06-30 2015-06-30 基于直通转发技术的调度方法及装置

Publications (2)

Publication Number Publication Date
CN105099932A true CN105099932A (zh) 2015-11-25
CN105099932B CN105099932B (zh) 2018-06-05

Family

ID=54579517

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510374398.XA Active CN105099932B (zh) 2015-06-30 2015-06-30 基于直通转发技术的调度方法及装置

Country Status (1)

Country Link
CN (1) CN105099932B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107483158A (zh) * 2017-09-13 2017-12-15 广州供电局有限公司 变电站二次设备以及二次设备的数据发送方法
US20230344539A1 (en) * 2022-04-22 2023-10-26 Nxp B.V. Frame scheduling based on an estimated direct memory access (dma) latency and apparatus for time aware frame scheduling

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7243177B1 (en) * 2005-03-31 2007-07-10 Emc Corporation Method and system for throttling data packets in a data transmission system
CN101287111A (zh) * 1998-01-14 2008-10-15 天溪有限公司 带有视频程序的传输流再分多路复用器
CN101656659A (zh) * 2008-08-19 2010-02-24 中兴通讯股份有限公司 一种混合业务流的缓存处理方法、存储转发方法及装置
US7826470B1 (en) * 2004-10-19 2010-11-02 Broadcom Corp. Network interface device with flow-oriented bus interface
CN102739818A (zh) * 2012-06-21 2012-10-17 华为技术有限公司 一种地址调度方法、装置及系统
WO2013173565A1 (en) * 2012-05-16 2013-11-21 The Keyw Corporation Packet capture deep packet inspection sensor
CN103853676A (zh) * 2014-03-28 2014-06-11 苏州科达科技股份有限公司 基于PCIe总线的信道分配、释放、数据传输方法和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101287111A (zh) * 1998-01-14 2008-10-15 天溪有限公司 带有视频程序的传输流再分多路复用器
US7826470B1 (en) * 2004-10-19 2010-11-02 Broadcom Corp. Network interface device with flow-oriented bus interface
US7243177B1 (en) * 2005-03-31 2007-07-10 Emc Corporation Method and system for throttling data packets in a data transmission system
CN101656659A (zh) * 2008-08-19 2010-02-24 中兴通讯股份有限公司 一种混合业务流的缓存处理方法、存储转发方法及装置
WO2013173565A1 (en) * 2012-05-16 2013-11-21 The Keyw Corporation Packet capture deep packet inspection sensor
CN102739818A (zh) * 2012-06-21 2012-10-17 华为技术有限公司 一种地址调度方法、装置及系统
CN103853676A (zh) * 2014-03-28 2014-06-11 苏州科达科技股份有限公司 基于PCIe总线的信道分配、释放、数据传输方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107483158A (zh) * 2017-09-13 2017-12-15 广州供电局有限公司 变电站二次设备以及二次设备的数据发送方法
US20230344539A1 (en) * 2022-04-22 2023-10-26 Nxp B.V. Frame scheduling based on an estimated direct memory access (dma) latency and apparatus for time aware frame scheduling

Also Published As

Publication number Publication date
CN105099932B (zh) 2018-06-05

Similar Documents

Publication Publication Date Title
US10262700B2 (en) System and method for determining a cause of network congestion
US9313115B2 (en) Traffic generator with priority flow control
US7668107B2 (en) Hardware implementation of network testing and performance monitoring in a network device
JP5497564B2 (ja) セッションアクティブチェッカを有する並列パケットプロセッサ
US9800485B2 (en) System and method for determining an effect of network congestion
US9088520B2 (en) Network impairment unit for concurrent delay and packet queue impairments
JP4356261B2 (ja) 優先度設定方法及び装置
JPH04263536A (ja) ネットワークモニタ装置及びシステム
US20150103667A1 (en) Detection of root and victim network congestion
EP2760182B1 (en) Data communication apparatus, data transmission method, and computer system
WO2009064651A1 (en) Instrumenting packet flows
US8306045B2 (en) Packet forwarding apparatus and method for discarding packets
JP2010268434A (ja) 並列のキャプチャエンジンを用いるトラフィックレシーバー
CN108667898A (zh) 使用外出镜像提供网元中的缓冲器内容的快照
CN115174432B (zh) Rdma网络状态监测方法、装置、设备及可读存储介质
US20130028082A1 (en) Packet transmission device, memory control circuit, and packet transmission method
CN103685062A (zh) 缓存管理方法及装置
US8537673B1 (en) Fairness algorithm for bundle resource utilization
CN105099932A (zh) 基于直通转发技术的调度方法及装置
US20110029706A1 (en) Electronic device and method for controlling an electronic device
CN102594670B (zh) 多端口多流的调度方法、装置及设备
CN110297785A (zh) 一种基于fpga的金融数据流控装置和流控方法
EP3975513A1 (en) Accelerated network traffic sampling using an accelerated line card
Meitinger et al. A hardware packet re-sequencer unit for network processors
US11451998B1 (en) Systems and methods for communication system resource contention monitoring

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211222

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right