Nothing Special   »   [go: up one dir, main page]

CN116889024A - 一种数据流传输方法、装置及网络设备 - Google Patents

一种数据流传输方法、装置及网络设备 Download PDF

Info

Publication number
CN116889024A
CN116889024A CN202180092641.2A CN202180092641A CN116889024A CN 116889024 A CN116889024 A CN 116889024A CN 202180092641 A CN202180092641 A CN 202180092641A CN 116889024 A CN116889024 A CN 116889024A
Authority
CN
China
Prior art keywords
channel
message
data stream
flow
output
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.)
Pending
Application number
CN202180092641.2A
Other languages
English (en)
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.)
Huawei 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
Publication of CN116889024A publication Critical patent/CN116889024A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/50Allocation or scheduling criteria for wireless resources
    • H04W72/54Allocation or scheduling criteria for wireless resources based on quality criteria

Landscapes

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

Abstract

本申请提供一种数据流传输方法、装置及网络设备,涉及通信技术领域,用于降低非拥塞流中低优先级的数据流的时延,提高了片内缓存的分配和释放的效率。该方法包括:接收第一数据流的第一报文,并根据第一数据流的业务类型确定第一数据流为非拥塞流或者拥塞流;若第一数据流为非拥塞流,将第一报文存储在片内缓存中,并在触发第一数据流的调度指令时,从片内缓存中读取第一数据流的第一报文并通过第一通道输出;若第一数据流为拥塞流,将第一报文存储在片外缓存中,并在触发第一数据流的调度指令时,从片外缓存中读取第一数据流的第一报文并通过第二通道输出,第一通道的优先级高于第二通道。

Description

一种数据流传输方法、装置及网络设备 技术领域
本申请涉及通信技术领域,尤其涉及一种数据流传输方法、装置及网络设备。
背景技术
随着网络的快速发展,网络设备支持的带宽处理能力、端口数和用户数等迅速增长,网络设备上承载的业务类型也越来越多,从而使得一个网络设备上承载海量的数据。在这海量数据流中,存在一些对时延要求比较高的业务的数据,比如,该业务可以包括语音通话、视频通话、远程操控和自动驾驶等,这些业务对数据的实时性和丢包率的要求很高,无论当前的网络状态是否拥塞都需要确保优先服务。
现有技术中,网络设备在通过网卡传输数据流时,通常根据数据流的业务类型将数据流划分为非拥塞流和拥塞流,并将非拥塞流存储在网卡的片内缓存中,拥塞流存储在网卡的片外缓存中。之后,当调度数据流输出时,从片内缓存和片外缓存中读取数据流,并根据业务优先级区分高优先级和低优先级两个通道缓存输出,具体是将非拥塞流中优先级较高的数据流缓存在高优先级通道、将非拥塞流中优先级较低的数据流和拥塞流缓存在低优先级通道,并优先服务高优先级通道。由于片内缓存的读延迟极小,且非拥塞流中优先级较高的数据流通过高优先级通道输出,这样高优先级的数据流可以快速被输出,从而获得较低的时延。
上述方案中,拥塞流存储在片外缓存中,具有较大的读延迟,非拥塞流中低优先级的数据流通过低优先级通道输出,从而需要等待拥塞流读出后一起排队输出,这样会导致非拥塞流中低优先级的数据流的时延增大,同时在一定程度上会降低片内缓存分配和释放的效率。
发明内容
本申请提供一种数据流传输方法、装置及网络设备,可用于降低非拥塞流中低优先级的数据流的时延,从而提高了片内缓存的分配和释放的效率,进而提高片内缓存的利用率。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种数据流传输方法,应用于网卡中,该网卡与片外缓存耦合,该网卡包括片内缓存、第一通道和第二通道,第一通道的优先级高于第二通道的优先级(即在第一通道和第二通道均有数据输出时,该网卡优先服务第一通道),该方法包括:接收第一数据流的第一报文,并根据第一数据流的业务类型确定第一数据流为非拥塞流或者拥塞流,第一数据流可以包括多个报文,第一报文是这多个报文中的任一报文,第一报文中可以包括用于指示第一数据流的第一队列索引;若第一数据流为非拥塞流,比如,第一数据流是视频通话、远程操控或自动驾驶等对时延要求比较高的业务的数据流,将第一报文存储在该片内缓存中,并在触发第一数据流的调度指令时,从该片内缓存中读取第一数据流的第一报文并通过第一通道输出;若第一数据流为拥塞流,比如,第一数据流是网页浏览或文件下载等对时延和丢包不敏感的业务的 数据流,将第一报文存储在该片外缓存中,并在触发第一数据流的调度指令时,从该片外缓存中读取第一数据流的第一报文并通过第二通道输出。
上述技术方案中,当该网卡接收到第一数据流的报文时,若第一数据流为非拥塞流,则将第一数据流的报文存储在片内缓存中,并在调度第一数据流时从片内缓存中读出后通过高优先级的第一通道输出,由于片内缓存的读延迟小,因此可以保证非拥塞流中高优先级和低优先级的数据流均能够被快速输出,从而在一定程度上提高了片内缓存的分配和释放的效率,进而提高片内缓存的利用率。此外,若第一数据流为拥塞流,则将第一数据流的报文存储在片外缓存中,并在调度第一数据流时从片外缓存中读出后通过低优先级的第二通道输出,由于片外缓存的空间较大,从而可以保证对于拥塞流的缓存需求。
在第一方面的一种可能的实现方式中,该网卡根据第一数据流的业务类型确定第一数据流为非拥塞流或者拥塞流,包括:若第一数据流的业务类型为时延要求小于第一时延的业务类型,则确定第一数据流为非拥塞流;若第一数据流的业务类型为时延要求大于第二时延的业务类型,则确定第一数据流为拥塞流,第二时延大于第一时延。进一步的,当该网卡根据第一数据流的业务类型确定第一数据流不是非拥塞流时,该方法还可以包括:该网卡根据第一数据流对应的端口、用户优先级、和/或实时队列长度确定第一数据流是拥塞流或者非拥塞流。比如,若第一数据流对应的端口的传输速率较大、用户优先级较高或者实时队列较短,该网卡可以确定第一数据流为非拥塞流,若第一数据流对应的端口的传输速率较小、用户优先级较低或者实时队列较长,该网卡可以确定第一数据流为拥塞流。
在第一方面的一种可能的实现方式中,当第一数据流从该非拥塞流转换为该拥塞流时,比如,第一数据流在前一时间段内被确定为非拥塞流,在后一时间段内被确定为拥塞流,该方法还包括:当接收到第一数据流的第二报文时,将第二报文存储在该片外缓存中,第二报文的第二序列号大于第一报文的第一序列号,第一报文可以是第一数据流从非拥塞流转换为拥塞流之前的一个报文,第二报文可以是第一数据流从非拥塞流转换为拥塞流之后的一个报文,每个报文的序列号可用于指示该报文在第一数据流中的位置(也可以称为发送顺序);在第一数据流中序列号小于第二报文的第二序列号的报文通过第一通道输出之后,即在第二报文之前接收到的第一数据流的报文全部输出之后,从该片外缓存中读取第二报文并通过第二通道输出。上述可能的实现方式中,当第一数据流从该非拥塞流转换为该拥塞流时,可以将接收到的第一数据流的第二报文存储在该片外缓存中,以避免第一数据流的报文在片内缓存中的累积,从而在一定程度上提高片内缓存的分配和释放的效率;此外,当调度第一数据流时,在通过第一通道将第一数据流中序列号小于第二序列号的报文输出之后,再从该片外缓存中读取第二报文并通过第二通道输出,可以避免第一数据流从该非拥塞流转换为该拥塞流时报文出现乱序的问题。
在第一方面的一种可能的实现方式中,该方法还包括:当第一数据流的第一报文输入第一通道时,将第一通道中第一数据流的报文的输入数量加一;当第一报文从第一通道输出时,将第一通道中第一数据流的报文的输出数量加一;当第二报文输入第二通道时,将该输入数量携带在第二报文的控制信息中;其中,当该输出数量大于或 等于第二报文的控制信息携带的该输入数量时,第一数据流中序列号小于第二序列号的报文已通过第一通道输出。上述可能的实现方式中,可以保证该网卡在将第二报文之前接收到的第一数据流的报文全部输出之后,再通过第二通道输出第二报文,从而保证第一数据流从该非拥塞流转换为该拥塞流时报文出现乱序的问题。
在第一方面的一种可能的实现方式中,当第一数据流从该拥塞流转换为该非拥塞流时,比如,第一数据流在前一时间段内被确定为拥塞流,在后一时间段内被确定为非拥塞流,该方法还包括:当接收到第一数据流的第三报文时,将第三报文存储在该片内缓存中,第三报文可以是第一数据流从拥塞流转换为非拥塞流之后的一个报文,每个报文的序列号可用于指示该报文在第一数据流中的位置(也可以称为发送顺序);若第二通道中第一数据流的报文未全部输出,从该片内缓存中读取第三报文并通过第二通道输出;若第二通道中第一数据流的报文全部输出,从该片内缓存中读取第三报文并通过第一通道输出。上述可能的实现方式中,当第一数据流从该拥塞流转换为该非拥塞流时,将接收到的第一数据流的第三报文存储在该片内缓存中,可以保证第一数据流转换为非拥塞流后可以获取较小的传输时延;此外,当调度第一数据流时,根据第二通过中第一数据流的报文是否全部输出,对应将第三报文通过第一通道或第二通道输出,可以避免第一数据流从该拥塞流转换为该非拥塞流时报文出现乱序的问题。
在第一方面的一种可能的实现方式中,第二通道中第一数据流的每个报文对应一个输入输出信息,该方法还包括:当第一数据流的第一报文输入第二通道或从第二通道输出时,记录第一报文的输入输出信息,该输入输出信息用于确定第二通道中的第一数据流的报文是否全部输出。上述可能的实现方式中,该网卡可以通过该输入输出信息确定第二通道中的第一数据流的报文是否全部输出,从而确定第三报文是通过第一通道或第二通道输出,进而避免第一数据流从该拥塞流转换为该非拥塞流时报文出现乱序的问题。
在第一方面的一种可能的实现方式中,该输入输出信息为第二通道中第一数据流的报文数量,该当第一数据流的第一报文输入第二通道或从第二通道输出时,记录第一报文的输入输出信息,包括:当第一数据流的第一报文输入第二通道时,将该报文数量加一;当第一数据流的第一报文从第二通道输出时,将该报文数量减一;其中,当该报文数量为0时,第二通道中第一数据流的报文已全部输出;当该报文数量不为0时,第二通道中第一数据流的报文未全部输出。上述可能的实现方式中,提供了一种简单、有效的确定第二通道中的第一数据流的报文是否全部输出的方式。
在第一方面的一种可能的实现方式中,该输入输出信息包括输入标志位和流标识位,该当第一数据流的第一报文输入第二通道或从第二通道输出时,记录第一报文的输入输出信息,包括:当第一数据流的第一报文输入第二通道时,将第一报文对应的输入标志位置为有效、该流标识位置为第一数据流的流标识;当第一数据流的第一报文从第二通道输出时,将第一报文对应的输入标志位置为无效;其中,当该输入输出信息中第一数据流的流标识对应的所有输入标志位均为无效时,第二通道中第一数据流的报文全部输出;当该输入输出信息中第一数据流的流标识对应的所有输入标志位中存在有效的输入标志位时,第二通道中第一数据流的报文未全部输出。上述可能的实现方式中,提供了另一种简单、有效的确定第二通道中的第一数据流的报文是否全 部输出的方式。
在第一方面的一种可能的实现方式中,该网卡包括寄存器组,该寄存器组中的每个寄存器用于存储一个报文的输入输出信息,该寄存器组的深度与片外最大读延迟、要求带宽和满足要求性能时的最小包长有关。上述可能的实现方式可以尽可能的减小寄存器组的深度,从而降低该网卡的芯片面积和成本。
在第一方面的一种可能的实现方式中,该方法还包括:当该寄存器组的占用率大于第一阈值时,减小第二通道中拥塞流的报文的传输量;当该寄存器组的占用率大于第二阈值时,减小第一通道中非拥塞流的报文的传输量,第二阈值大于第一阈值。上述可能的实现方式中,通过控制第一通道或第二通道中数据流的传输量,可以尽可能地在保证非拥塞流具有较低时延的情况下,避免该寄存器组发生溢出的问题。
在第一方面的一种可能的实现方式中,该方法还包括:根据片内缓存的占用率、片外缓存的占用率、第一通道的占用率或第二通道的占用率中的至少一个项,调节拥塞流的传输量和/或非拥塞流的传输量。上述可能的实现方式中,可以尽可能地在保证非拥塞流具有较低时延的情况下,避免第一通道和/或第二通道的过度占用,从而避免该网卡的超负荷工作。
第二方面,提供一种数据流传输装置,该装置与片外缓存耦合,该装置中包括片内缓存、第一通道和第二通道,第一通道的优先级高于第二通道的优先级(即在第一通道和第二通道均有数据输出时,该网卡优先服务第一通道),该装置还包括:接收单元,用于接收第一数据流的第一报文,第一数据流可以包括多个报文,第一报文是这多个报文中的任一报文,第一报文中可以包括用于指示第一数据流的第一队列索引;确定单元,用于根据第一数据流的业务类型或者第一数据流的队列长度确定第一数据流为非拥塞流或者拥塞流;调度单元,用于确定第一数据流为非拥塞流(比如,第一数据流是视频通话、远程操控或自动驾驶等对时延要求比较高的业务的数据流),或者确定第一数据流为非拥塞流(比如,第一数据流是网页浏览或文件下载等对时延和丢包不敏感的业务的数据流);写入单元,用于若第一数据流为非拥塞流,将第一报文存储在该片内缓存中,若第一数据流为拥塞流,将第一报文存储在该片外缓存中;该调度单元,还用于触发第一数据流的调度指令;读取单元,用于若第一数据流为非拥塞流,从该片内缓存中读取第一数据流的第一报文并通过第一通道输出,若第一数据流为拥塞流,从该片外缓存中读取第一数据流的第一报文并通过第二通道输出。
在第二方面的一种可能的实现方式中,调度单元还用于:若第一数据流的业务类型为时延要求小于第一时延的业务类型,则确定第一数据流为非拥塞流;若第一数据流的业务类型为时延要求大于第二时延的业务类型,则确定第一数据流为拥塞流,第二时延大于第一时延。进一步的,当该网卡根据第一数据流的业务类型确定第一数据流不是非拥塞流时,调度单元还用于:根据第一数据流对应的端口、用户优先级、和/或实时队列长度确定第一数据流是拥塞流或者非拥塞流。比如,若第一数据流对应的端口的传输速率较大、用户优先级较高或者实时队列较短,该调度单元可以确定第一数据流为非拥塞流,若第一数据流对应的端口的传输速率较小、用户优先级较低或者实时队列较长,该调度单元可以确定第一数据流为拥塞流。
在第二方面的一种可能的实现方式中,当第一数据流从该非拥塞流转换为该拥塞 流时,比如,第一数据流在前一时间段内被确定为非拥塞流,在后一时间段内被确定为拥塞流:该写入单元,还用于当该接收单元接收到第一数据流的第二报文时,将第二报文存储在该片外缓存中,第二报文的第二序列号大于第一报文的第一序列号,第一报文可以是第一数据流从非拥塞流转换为拥塞流之前的一个报文,第二报文可以是第一数据流从非拥塞流转换为拥塞流之后的一个报文,每个报文的序列号可用于指示该报文在第一数据流中的位置(也可以称为发送顺序);该读取单元,还用于在第一数据流中序列号小于第二序列号的报文通过第一通道输出之后,即在第二报文之前接收到的第一数据流的报文全部输出之后,从该片外缓存中读取第二报文并通过第二通道输出。
在第二方面的一种可能的实现方式中,该装置还包括:第一计数器,用于当第一数据流的第一报文输入第一通道时,将第一通道中第一数据流的报文的输入数量加一;第二计数器,用于当第一报文从第一通道输出时,将第一通道中第一数据流的报文的输出数量加一;当第二报文输入第二通道时,将该输入数量携带在第二报文的控制信息中;其中,当该输出数量大于或等于第二报文的控制信息携带的该输入数量时,第一数据流中序列号小于第二序列号的报文已通过第一通道输出。
在第二方面的一种可能的实现方式中,当第一数据流从该拥塞流转换为该非拥塞流时:该写入单元,还用于当该接收单元接收到第一数据流的第三报文时,将第三报文存储在该片内缓存中,第三报文是第一数据流从拥塞流转换为非拥塞流之后的一个报文;该读取单元,还用于若第二通道中第一数据流的报文未全部输出,从该片内缓存中读取第三报文并通过第二通道输出;该读取单元,还用于若第二通道中第一数据流的报文全部输出,从该片内缓存中读取第三报文并通过第一通道输出。
在第二方面的一种可能的实现方式中,第二通道中第一数据流的每个报文对应一个输入输出信息,该读取单元还用于:当第一数据流的第一报文输入第二通道或从第二通道输出时,记录第一报文的输入输出信息,该输入输出信息用于确定第二通道中的第一数据流的报文是否全部输出。
在第二方面的一种可能的实现方式中,该输入输出信息为第二通道中第一数据流的报文数量,该读取单元还用于:当第一数据流的第一报文输入第二通道时,将该报文数量加一;当第一数据流的第一报文从第二通道输出时,将该报文数量减一;其中,当该报文数量为0时,第二通道中第一数据流的报文已全部输出;当该报文数量不为0时,第二通道中第一数据流的报文未全部输出。
在第二方面的一种可能的实现方式中,该输入输出信息包括输入标志位和流标识位,该读取单元还用于:当第一数据流的第一报文输入第二通道时,将第一报文对应的输入标志位置为有效、该流标识位置为第一数据流的流标识;当第一数据流的第一报文从第二通道输出时,将第一报文对应的输入标志位置为无效;其中,当该输入输出信息中第一数据流的流标识对应的所有输入标志位均为无效时,第二通道中第一数据流的报文全部输出;当该输入输出信息中第一数据流的流标识对应的所有输入标志位中存在有效的输入标志位时,第二通道中第一数据流的报文未全部输出。
在第二方面的一种可能的实现方式中,该装置包括寄存器组,该寄存器组中的每个寄存器用于存储一个报文的输入输出信息,该寄存器组的深度与片外最大读延迟、 要求带宽和满足要求性能时的最小包长有关。
在第二方面的一种可能的实现方式中,该调度单元还用于:当该寄存器组的占用率大于第一阈值时,减小该拥塞流的传输量;当该寄存器组的占用率大于第二阈值时,减小该非拥塞流的传输量,第二阈值大于第一阈值。
在第二方面的一种可能的实现方式中,该调度单元还用于:根据片内缓存的占用率、片外缓存的占用率、第一通道的占用率或第二通道的占用率中的至少一个项,调节拥塞流的传输量和/或非拥塞流的传输量。
在本申请的另一方面,还提供一种芯片,该芯片包括上述第二方面或者第二方面的任一种可能的实现方式所提供的数据流传输装置,比如,该芯片为网卡。
在本申请的又一方面,提供一种网络设备,该网络设备包括网卡和处理器,该处理器可用于向该网卡发送数据流,该网卡包括上述第二方面或者第二方面的任一种可能的实现方式所提供的数据流传输装置。可选的,该网络设备可以为接入网、城域网、骨干网或者局域网中的终端设备、路由器或者交换机等。
在本申请的又一方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在设备上运行时,使得该设备执行上述第一方面或者第一方面的任一种可能的实现方式所提供的数据流传输方法。
在本申请的又一方面,提供一种计算机程序产品,当该计算机程序产品在设备上运行时,使得该设备执行上述第一方面或者第一方面的任一种可能的实现方式所提供的数据流传输方法。
可以理解地,上述提供的任一种数据流传输装置、芯片、网络设备、计算机存储介质或者计算机程序产品均用于执行上文所提供的数据流传输方法,因此,其所能达到的有益效果可参考上文所提供的数据流传输方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种网络设备的结构示意图;
图2为本申请实施例提供的一种网卡的结构示意图;
图3为本申请实施例提供的一种数据流传输方法的流程示意图;
图4为本申请实施例提供的另一种数据流传输方法的流程示意图;
图5为本申请实施例提供的又一种数据流传输方法的流程示意图;
图6为本申请实施例提供的一种寄存器组的示意图;
图7为本申请实施例提供的一种数据流传输装置的流程示意图;
图8为本申请实施例提供的另一种数据流传输装置的流程示意图。
具体实施方式
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,本申请实施例采用了“第 一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一阈值和第二阈值仅仅是为了区分不同的阈值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在介绍本申请实施例之前,为便于理解,首先对本申请实施例所涉及的数据流的高低优先级、非拥塞流、拥塞流、片内缓存和片外缓存的概念进行解释说明。
数据流的高低优先级可以是按照数据流对应的业务的优先级划分的。高优先级的业务通常是指对带宽和时延有较高要求的业务,比如,该业务可以包括语音通话、视频通话、远程操控和自动驾驶等。低优先级的业务通常是指对时延和丢包不敏感的业务,比如,该低优先级的业务可以包括网页浏览和文件下载等。
非拥塞流和拥塞流可以是按照端口、用户、队列调度优先级、实时队列长度和缓存占用状态等状态划分的。在实际应用中,非拥塞流可以包括高优先级的数据流和一些数据量较小的低优先级的数据流,拥塞流可以包括一些数据量较大的低优先级的数据流;此外,随着一些因素的变化,非拥塞流和拥塞流也会发生转换,比如,非拥塞流可以转换为拥塞流,拥塞流也可以转换为非拥塞流,二者并不是固定不变的。示例性的,以端口区分非拥塞流和拥塞流为例,如果一个端口只有低优先级的数据流,但该端口的数据流量并没有超过端口最大处理带宽,则该低优先级的数据流可以认为是非拥塞流;此外,大部分应用场景下高优先级的数据流量不会超过端口最大处理带宽,从而高优先级的数据流基本都是非拥塞流。
片内缓存也可以称为本地缓存(local buffer),是指集成在网卡内部的缓存。片内缓存的空间较小,但读延迟很小,在本申请中可用于非拥塞流的快速转发,在快速转发的情况下缓存空间能够快速释放,提高缓存空间利用率。
片外缓存是指位于网卡芯片之外的缓存,即独立于网卡存在。片外缓存的空间较大,但读延迟较大,并且不同的片外缓存支持的访问带宽也可能各不相同,通常用于队列发生拥塞累积后使用,或者对于缓存时间长度有需求的业务使用。
图1为申请实施例提供的一种网络设备的结构示意图,该网络设备可以为接入网、城域网、骨干网或者局域网中的终端设备、路由器或者交换机等。为便于描述,本申请实施例中将上述设备统称为网络设备。如图1所示,该网络设备可以包括处理器101、存储器102、网卡103和总线104,处理器101、存储器102和网卡103通过总线104耦合。
其中,处理器101通过运行或执行存储在存储器102内的软件程序和/或模块,以及调用存储在存储器102内的数据,执行该网络设备的各种功能。处理器101可以包括一个或者多个模块,比如,处理器101可以包括中央处理器单元(central processing unit,CPU),以及诸如网络处理器(network processor,NP)、数字信号处理器、人工智能处理器、微控制器或微处理器等其他各类通用处理器。进一步的,处理器101还可以包括其他硬件电路或加速器,比如,专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合等。
存储器102可用于存储数据、软件程序以及模块,可以由任何类型的易失性或非易失性存储器或者它们的组合实现。比如,存储器102可以包括随机存取存储器(random access memory,RAM),双倍速率(double data rate,DDR)的同步动态或者同步静态RAM,非易失性随机访问存储器(non-volatile random access memory,NVRAM),电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,高带宽存储器(high band memory,HBM)、磁存储器,快闪存储器,磁盘或光盘等。在本申请实施例中,存储器102包括的多个存储器或模块可以全部集成在一起,也可以部分集成在一起。可选的,存储器102包括的多个存储器或模块中的部分存储器或模块集成在一起,另一部分存储器或者模块作为独立的芯片与网卡103合封在一起。示例性的,存储器102包括DDR和HBM,该DDR可以集成在存储器102的芯片中,该HBM可以作为一个独立的芯片与网卡103合封在一起。
网卡103可以为网络接口卡(network interface card,NIC),该网络设备可以通过网卡103发送数据流,也可以通过网卡103接收数据流。总线104可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线104可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步的,如图2所示,网卡103可以包括报文写控制器(packet write controller,PWC)、调度器(scheduler,SCH)、报文读控制器(packet read controller,PRC)、片内缓存。其中,该SCH可用于区分输入数据流中的非拥塞(non-congested,NC)流和拥塞(congested,CG)流,比如,根据端口、用户、实时队列长度和队列调度优先级、以及缓存占用状态等。该PWC可用于根据该SCH的调度将输入的数据流写入片外缓存或者片内缓存,该片外缓存(比如,DDR或者HBM)与网卡103耦合,比如,该PWC可以将非拥塞流写入片内缓存、将拥塞流写入片外缓存。该PRC中可以包括第一通道CH1和第二通道CH2,CH1的优先级可以高于CH2的优先级,该PWC可用于根据该SCH的调度从片外缓存和片内缓存中按照先入先出(first in first out,FIFO)的顺序读取数据流,并通过CH1和CH2输出数据流,图2中的CG-FIFO可以表示拥塞流在缓存中的存储指针,NC-FIFO可以表示非拥塞流在缓存中的存储指针,CG-FIFO和NC-FIFO具体可以由该SCH发送给该PRC。
本领域技术人员可以理解的是,图1示出的网络设备和图2所示的网卡并不构成对网络设备结构和网卡结构的限定。在实际应用中,网络设备和网卡还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
图3为本申请实施例提供的一种数据流传输方法的流程示意图,该方法可应用于网卡中,该网卡与片外缓存耦合,该网卡包括片内缓存、第一通道和第二通道,第一通道的优先级高于第二通道的优先级。参见图3,该方法包括以下步骤。
S301:接收第一数据流的第一报文,并根据第一数据流的业务类型确定第一数据流为非拥塞流或者拥塞流。
其中,第一数据流可以是指该网卡所在的网络设备中的处理器发送给该网卡的。比如,当该网络设备需要向其他网络设备发送一个或者多个数据流时,该处理器可以向该网卡发送这一个或者多个数据流,从而使得该网卡将这一个或者多个数据流发送给其他网络设备,第一数据流可以是该这一个或者多个数据流中的任一数据流。
另外,第一数据流可以包括多个报文(也可以称为数据包),第一报文可以是这多个报文中的任一报文。第一数据流的多个报文中的每个报文均可以包括流标志位,该流标志位可用于指示第一数据流,即第一数据流的每个报文中的流标志位可用于指示该报文是第一数据流的报文。比如,当使用一个数据流的队列索引(即存储该数据流的队列的索引)来标识该数据流时,第一数据流可通过第一队列索引(queue index,QID)来标识,第一数据流的每个报文中的流标志位可以为第一QID。
具体的,当该网络设备中的处理器向该网卡发送第一数据流时,该网卡可以接收到第一数据流的一个或者多个报文,第一报文可以是这一个或者多个报文中的任一报文。此外,该网卡可以根据第一数据流的业务类型确定第一数据流是拥塞流或者非拥塞流,具体确定第一数据流是拥塞流或者非拥塞流的步骤可以由图2所示的网卡中的调度器SCH来执行。示例性的,当第一数据流是诸如视频通话、远程操控和自动驾驶等对时延要求比较高的业务的数据流时,该调度器SCH可以确定第一数据流是非拥塞流;当第一数据流是诸如网页浏览和文件下载等对时延和丢包不敏感的业务的数据流时,该调度器SCH可以确定第一数据流是拥塞流。其中,若确定第一数据流是非拥塞流,则执行下述步骤S302a-S303a;若确定第一数据流是拥塞流,则执行下述步骤S302b-S303b。
进一步的,该网卡根据第一数据流的业务类型确定第一数据流为非拥塞流或者拥塞流可以包括:若第一数据流的业务类型为时延要求小于第一时延的业务类型,则确定第一数据流为非拥塞流;若第一数据流的业务类型为时延要求大于第二时延的业务类型,则确定第一数据流为拥塞流,第二时延大于第一时延。进一步的,当该网卡根据第一数据流的业务类型确定第一数据流不是非拥塞流时,该方法还可以包括:该网卡根据第一数据流对应的端口、用户优先级、和/或实时队列长度确定第一数据流是拥塞流或者非拥塞流。比如,若第一数据流对应的端口的传输速率较大、用户优先级较高或者实时队列较短,该网卡可以确定第一数据流为非拥塞流,若第一数据流对应的端口的传输速率较小、用户优先级较低或者实时队列较长,该网卡可以确定第一数据流为拥塞流。
需要说明的是,该网卡根据第一数据流对应的端口、用户优先级、和/或实时队列长度等信息确定第一数据流是拥塞流或者是非拥塞流的具体过程可以参见相关技术中的描述,本申请实施例对此不作具体限制。
S302a:若第一数据流为非拥塞流,将第一报文存储在片内缓存中。
具体的,当该网卡中的调度器SCH确定第一数据流是非拥塞流时,该调度器SCH可以向该网卡中的报文写控制器PWC发送第一指示信息,第一指示信息可以用于指示第一数据流是非拥塞流,还可以用于指示第一报文对应的缓存地址。这样,当该报文写控制器PWC接收到第一指示信息时,可以根据该缓存地址将第一报文存储在片内缓存中。进一步的,当该网卡接收到第一数据流的其他报文时,该网卡也可以按照 上述方式将该其他报文也存储在片内缓存中。也即是,当第一数据流为非拥塞流时,该网卡可以将接收到的第一数据流的报文存储在片内缓存中。
S303a:在触发第一数据流的调度指令时,从片内缓存中读取第一数据流的第一报文并通过第一通道输出。
其中,第一数据流的调度指令可以由该网卡中的调度器SCH触发并发送给该网卡中的报文读取控制器PRC,该调度指令可用于调度该报文读取控制器PRC读取第一数据流的报文,第一数据流的调度指令中可以携带第一数据流在片内缓存中的存储地址或者存储指针。
具体的,当该网卡中的调度器SCH触发第一数据流的调度指令,并将该调度指令发送给该报文读取控制器PRC时,该报文读取控制器PRC可以基于该调度指令从片内缓存中读取第一数据流的报文(包括第一报文),若片内缓存中包括第一数据流的多个报文,则该报文读取控制器PRC可以按照先入先出FIFO的顺序依次读取该多个报文,并存放在第一通道中,以通过第一通道将该多个报文输出。第一通道的优先级高于第二通道的优先级,这样该网卡可以在网络拥塞时可以优先服务第一通道,以保证非拥塞流的报文能够快速地通过第一通道输出,从而使得非拥塞流获取极低时延。
S302b:若第一数据流为拥塞流,将第一报文存储在片外缓存中。
具体的,当该网卡中的调度器SCH确定第一数据流是拥塞流时,该调度器SCH可以向该网卡中的报文写控制器PWC发送第二指示信息,第二指示信息可以用于指示第一数据流是拥塞流,还可以用于指示第一报文对应的缓存地址。这样,当该报文写控制器PWC接收到第二指示信息时,可以根据该缓存地址将第二报文存储在片外缓存中。进一步的,当该网卡接收到第一数据流的其他报文时,该网卡也可以按照上述方式将该其他报文也存储在片外缓存中。也即是,当第一数据流为拥塞流时,该网卡可以将接收到的第一数据流的报文存储在片外缓存中。
S303b:在触发第一数据流的调度指令时,从片外缓存中读取第一数据流的第一报文并通过第二通道输出。
其中,第一数据流的调度指令可以由该网卡中的调度器SCH触发并发送给该网卡中的报文读取控制器PRC,该调度指令可用于调度该报文读取控制器PRC读取第一数据流的报文,第一数据流的调度指令中可以携带第一数据流在片外缓存中的存储地址或者存储指针。
具体的,当该网卡中的调度器SCH触发第一数据流的调度指令,并将该调度指令发送给该报文读取控制器PRC时,该报文读取控制器PRC可以基于该调度指令从片外缓存中读取第一数据流的报文(包括第一报文);若片外缓存中包括第一数据流的多个报文,则该报文读取控制器PRC可以按照先入先出FIFO的顺序依次读取该多个报文以存放在第二通道中,并通过第二通道将该多个报文输出。第二通道的优先级低于第一通道的优先级,这样该网卡可以在网络拥塞时可以优先服务第一通道,以保证非拥塞流中高低优先级和低优先级的数据流均能够被快速输出,从而使得非拥塞流获取极低时延,进而在一定程度上也提高了片内缓存的利用率。
进一步的,如图4所示,在S302a之后,若第一数据流从非拥塞流转换为拥塞流(比如,第一数据流在前一时间段内被确定为非拥塞流,在后一时间段内被确定为拥 塞流),该网卡还接收到第一数据流的第二报文,则该方法还可以包括S304a,S304a与S303a可以不分先后顺序,图4中以S304a位于S303a之后为例进行说明。
S304a:当接收到第一数据流的第二报文时,将第二报文存储在片外缓存中。
具体的,在第一数据流从非拥塞流转换为拥塞流之后,若该网卡接收到第一数据流的第二报文,该网卡可以根据拥塞流的报文存储在片外缓存的原则,将第二报文存储在片外缓存中。比如,当该网卡接收到第一数据流的第二报文时,该网卡中调度器SCH可以向报文写控制器PWC发送第二指示信息,第二指示信息可以用于指示第一数据流是拥塞流,还可以用于指示第二报文对应的缓存地址,这样当该报文写控制器PWC接收到第二指示信息时,可以根据该缓存地址将第二报文存储在片外缓存中。进一步,在该网卡转换为拥塞流之后,若该网卡还接收到第一数据流的其他报文时,该网卡也可以按照上述第二报文对应的方式,将该其他报文也存储在片外缓存中。
相应的,如图4所示,在触发第一数据流的调度指令之后,即在S303a之后,该方法还可以包括S305a。
S305a:在第一数据流中序列号小于第二序列号的报文通过第一通道输出之后,从片外缓存中读取第二报文并通过第二通道输出。
其中,第一报文可以是第一数据流从非拥塞流转换为拥塞流之前的一个报文,第二报文可以是第一数据流从非拥塞流转换为拥塞流之后的一个报文。第一序列号可用于指示第一报文在第一数据流中的位置(也可以称为发送顺序),第二序列号可用于指示第二报文在第一数据流中的位置。第二报文在第一数据流中的位置位于第一报文之后,即第二序列号大于第一序列号。
另外,每个报文的序列号可以携带在该报文中,该网卡在接收到每个报文时,可以从每个报文中获取该报文的序列号。比如,该网卡在接收到第一数据流的第一报文时,可以从第一报文中获取第一序列号;在接收到第二报文时,可以从第二报文中获取第二序列号。
具体的,当第一数据流从非拥塞流转换为拥塞流时,该网卡接收到的第一数据流的报文的存储位置也从片内缓存对应切换为片外缓存,且片内缓存中第一数据流的报文的序列号小于片外缓存中第一数据流的报文的序列号。该网卡在调度输出第一数据流时,为了保证第一数据流的报文在输出时不发生乱序,需要保证片内缓存中存储的第一数据流的报文输出之后,再输出片外缓存中存储的第一数据流的报文。因此,该网卡可以在通过第一通道将第一数据流中序列号小于第二序列号的报文输出之后,即将第二报文之前接收到的第一数据流的报文全部输出之后,再从片外缓存中读取第二报文并通过第二通道输出。
比如,当第一数据流为非拥塞流时,该网卡将接收到的第一数据流的报文packet.1和packet.2存储在片内缓存中,当第一数据流从非拥塞流转换为拥塞流时,该网卡将接收到的第一数据流的报文packet.3存储在片外缓存中。若packet.1和packet.2对应的序列号分别为NO.1和NO.2、packet.3对应的序列号为NO.3,则该网卡在调度输出第一数据流时,可以在第一数据流中序列号小于NO.3的两个报文packet.1和packet.2通过第一通道输出之后,再从片外缓存中读取packet.3以通过第二通道输出。
可选的,该网卡可以通过分别记录第一通道中第一数据流的报文的输入数量和输 出数量,来确定第一数据流中序列号小于第二序列号的报文是否已通过第一通道输出,即确定第一通道中的第一数据流的报文是否已全部输出。具体的,以第一数据流的第一报文为例,当第一数据流的第一报文输入第一通道时,将第一通道中第一数据流的报文的输入数量加一;当第一报文从第一通道输出时,将第一通道中第一数据流的报文的输出数量加一。示例性的,该网卡中可以包括两个计数器,这两个计数器可以为第一计数器和第二计数器,第一计数器可用于记录第一通道中输入的第一数据流的报文的数量,第二计数器可用于记录第一通道中输出的第一数据流的报文的数量,这两个计数器可以位于该网卡的报文读取控制器PRC中。
此外,当第一数据流从非拥塞流转换为拥塞流,且该网卡接收到转换为拥塞流后的第二报文(比如,第二报文为第一数据流转换为拥塞流后的一个报文)时,该网卡将第二报文输入第二通道时,可以将当前第一通道对应的第一数据流的报文的输入数量携带在第二报文的控制信息(也可以称为随路控制信息)中,第二报文的控制信息携带的输入数量可用于表示第二报文之前对应输入第一通道的第一数据流的报文的数量,也即是,该网卡在第二报文之前接收到的第一数据流的报文的数量。这样,该网卡在通过第二通道输出第二报文之前,可以根据第二报文的控制信息携带的输入数量和当前第一通道对应的输出数量确定第一数据流中序列号小于第二序列号的报文是否已通过第一通道输出;若该输出数量大于或等于第二报文的控制信息携带的输入数量时,则确定第一数据流中序列号小于第二序列号的报文已通过第一通道输出;若该输出数量小于第二报文的控制信息携带的输入数量时,则第一数据流中序列号小于第二序列号的报文未全部通过第一通道输出,此时该网卡可以继续通过第一通道输出第一数据流的报文,直至该输出数量大于或等于第二报文的控制信息携带的输入数量。
需要说明的是,第一计数器和第二计数器在计数过程中,存在第一计数器先溢出并翻转为0、而第二计数器仍未溢出的情况,此时根据该输出数量和报文的控制信息携带的输入数量进行判断时,可能会出现报文乱序的问题。为此,本申请实施例中可以在第一计数器的计数满足第一数值(比如,8K)时,可以同时将第一计数器的计数和第二计数器的计数同时减去第二数值(比如,2K),以避免因为计数器的溢出而出现报文乱序的问题。其中,第一数值和第二数值可以是事先设置的,本申请实施例对此不作具体限制。
进一步的,如图5所示,在S302b之后,若第一数据流从拥塞流转换为非拥塞流(比如,第一数据流在前一时间段内被确定为拥塞流,在后一时间段内被确定为非拥塞流),该网卡还接收到第一数据流的第二报文,则该方法还可以包括S304b,S304b与S303b可以不分先后顺序,图5中以S304b位于S303b之后为例进行说明。
S304b:当接收到第一数据流的第三报文时,将第三报文存储在片内缓存中。
其中,第一报文可以是第一数据流从拥塞流转换为非拥塞流之前的一个报文,第三报文可以是第一数据流从拥塞流转换为非拥塞流之后的一个报文。第一序列号可用于指示第一报文在第一数据流中的位置(也可以称为发送顺序),第三序列号可用于指示第三报文在第一数据流中的位置。第三序列号大于第一序列号可以用于表示第三报文在第一数据流中的位置位于第一报文之后。
另外,每个报文的序列号可以携带在该报文中,该网卡在接收到每个报文时,可 以从每个报文中获取该报文的序列号。比如,该网卡在接收到第一数据流的第一报文时,可以从第一报文中获取第一序列号;在接收到第三报文时,可以从第三报文中获取第二序列号。
具体的,在第一数据流从拥塞流转换为非拥塞流之后,若该网卡接收到第一数据流的第三报文,该网卡可以根据非拥塞流的报文存储在片内缓存的原则,将第三报文存储在片内缓存中。比如,当该网卡接收到第一数据流的第三报文时,该网卡中调度器SCH可以向报文写控制器PWC发送第三指示信息,第三指示信息可以用于指示第一数据流是非拥塞流,还可以用于指示第三报文对应的缓存地址,这样当该报文写控制器PWC接收到第三指示信息时,可以根据该缓存地址将第三报文存储在片内缓存中。进一步,在该网卡转换为拥塞流之后,若该网卡还接收到第一数据流的其他报文时,该网卡也可以按照上述第三报文对应的方式,将该其他报文也存储在片内缓存中。
相应的,如图5所示,在触发第一数据流的调度指令之后,即在S303b之后,该方法还可以包括S305b或S305c。
S305b:若第二通道中第一数据流的报文未全部输出,从片内缓存中读取第三报文并通过第二通道输出。
S305c:若第二通道中第一数据流的报文全部输出,从片内缓存中读取第三报文并通过第一通道输出。
其中,当第一数据流从拥塞流转换为非拥塞流时,该网卡接收到的第一数据流的报文的存储位置也从片外缓存对应切换为片内缓存,且片外缓存中第一数据流的报文的序列号大于片内缓存中第一数据流的报文的序列号。该网卡在调度输出第一数据流时,为了保证第一数据流的报文在输出时不发生乱序,需要保证片外缓存中存储的第一数据流的报文输出之后,再输出片内缓存中存储的第一数据流的报文。因此,该网卡可以在输出第三报文之前,确定第二通道中第一数据流的报文是否已全部输出;若已全部输出则从片内缓存中读取第三报文并通过第一通道输出;若未全部输出则从片内缓存中读取第三报文并通过第二通道输出,读取的第三报文位于第二通道中第一数据流的其他报文(即从片内读取的第一数据流的报文,比如第一报文)之后,这样按照先入先出的顺序,在该其他报文输出之后,第三报文即可通过第二通道输出,从而保证了第一数据流的报文在输出时不发生乱序。
比如,当第一数据流为拥塞流时,该网卡将接收到的第一数据流的报文packet.1和packet.2存储在片外缓存中,当第一数据流从拥塞流转换为非拥塞流时,该网卡将接收到的第一数据流的报文packet.3存储在片内缓存中。若packet.1和packet.2对应的序列号分别为NO.1和NO.2、packet.3对应的序列号为NO.3,则该网卡在调度输出第一数据流时,可以确定第一数据流中序列号小于NO.3的两个报文packet.1和packet.2是否已全部通过第二通道输出,若已全部输出则从片外缓存中读取packet.3并通过第一通道输出,若未全部输出则从片外缓存中读取packet.3排列在packet.2之后,这样可以在packet.2通过第二通道输出之后,输出packet.3。
进一步的,第二通道中第一数据流的报文可以对应有输入输出信息,该网卡可以通过记录第二通道中第一数据流的报文的输入输出信息来确定第二通道中第一数据流的报文是否已全部输出,即确定第二通道中第三报文之前接收到的第一数据流的报文 是否已全部输出。
在一种可能的实施例中,该输入输出信息可以为第二通道中第一数据流的报文数量,以第一数据流的第一报文为例,记录该报文数量的过程可以为:当第一数据流的第一报文输入第二通道时,将第二通道中第一数据流的报文数量加一;当第一报文从第二通道输出时,将该报文数量减一。示例性的,该网卡中可以包括第三计数器,第三计数器可用于记录第二通道中第一数据流的报文数量,比如,第三计数器可以在第一报文进入第二通道时加一,在第一报文从第二通道输出时减一,第三计数器可以位于该网卡的报文读取控制器PRC中;此外,记录的该报文数量可以存储在该网卡包括的存储器中,比如该存储器可以为一个2R2W的存储器,在第三计算器每次将该报文数量加一或者减一之后,该网卡可以根据第三计算器对应的数量来更新该存储器。这样,该网卡在输出第三报文之前,可以读取该存储器中存储的报文数量并进行判断;若该报文数量不为0,则表示第二通道中第一数据流的报文未全部输出,此时从片内缓存中读取第三报文并通过第二通道输出;若该报文数量为0时,则表示第二通道中第一数据流的报文已全部输出,此时从片内缓存中读取第三报文并通过第一通道输出。
其中,上述记录该报文数量的方案可以适用于系统规格的数据流的数量较少,以及在处理性能方面只要求一个时钟周期只处理一个报文的场景中。可选的,若系统规格的数据流的数量较大,比如,数据流的数量大于2R2W的存储器的深度,还可以通过哈希算法将多个数据流对应的该报文数量映射在该存储器的同一个条目(entry)中来存储。
在另一种可能的实施例中,该输入输出信息可以包括输入标志位和流标识位,以第一数据流的第一报文为例,记录第一报文的输入输出信息的过程可以为:当第一报文输入第二通道时,将第一报文对应的输入标志位置为有效、流标识位置为第一数据流的流标识;当第一报文从第二通道输出时,将第一报文对应的输入标志位置为无效。示例性的,该网卡中可以包括寄存器组,如图6所示,该寄存器组的结构可以表示为depth*{VLD,QID},即该寄存器组中的每个寄存器可以包括一个输入标志位VLD和一个流标识位QID,enq-addr表示入队指针,deq-addr表示出队指针。具体的,假设第一数据流的流标识表示为QID1,若第一报文对应的入队指针enq-addr在位置1,则在第一报文输入第二通道时,可以与将位置1的寄存器中的VLD置为1(比如,置为1时有效、置为0时无效)、将QID置为QID1,之后该入队指针enq-addr可以加一;若第一报文对应的出队指针deq-addr在位置2,则在第一报文从第二通道输出时,可以将位置2的寄存器中的VLD置为0(比如,置为1时有效、置为0时无效),还可以将QID置为0(可选的),之后该出队指针deq-addr可以加一。这样,该网卡在输出第三报文之前,可以通过该寄存器组中存储的输入信息来判断第二通道中第一数据流的报文是否已全部输出;若该寄存器组(即寄存器组中存储的输入输出信息)中第一数据流的流标识对应的所有输入标志位均为无效时,则确定第二通道中第一数据流的报文全部输出;若该输入输出信息中第一数据流的流标识对应的所有输入标志位中存在有效的输入标志位时,则确定第二通道中第一数据流的报文未全部输出。需要说明的是,入队指针enq-addr和出队指针deq-addr可以从0开始递增,直到递增至该寄存组的深度depth后,再重新从0开始循环。
其中,在通过该寄存器组记录第二通道中存储的每个报文的输入输出信息时,该寄存器组包括的寄存器的数量(也可以称为寄存器组的深度(depth))可以较大,比如该数量可以达到几十万甚至上百万,也可以在满足该网卡的处理性能要求的情况下根据第二通道中所需要存储的报文总数量设置满足该网卡的覆盖片外读延迟即可。可选的,根据不同的性能规格要求以及所使用的片外缓存的最大延迟等计算出该寄存器组所需要的最大深度。在一种示例性中,该寄存器组的深度depth与片外最大读延迟(即片外缓存的最大读延迟)τ、规格要求带宽W和规格要求的满足性能要求时的最小包长L有关。示例性的,depth=τ×W/L,若以τ为4us、规格要求165字节(byte,B)以上达到500Gbps为例,则在W为500Gbps、L为165B×8bits时,depth等于1515。另外,由于第二通路中通常可以拼包使用片外缓存,即将多个报文拼接为一个报文,若按两个报文拼接为一个报文为例,则该depth=1515/2=757.5,即该寄存器组的深度在758以上即可满足性能需求。
进一步的,为防止极端情况下,寄存器组或者存储器占用溢出,还可以增加控制机制,以实时控制寄存器组或者存储器的占用情况,当寄存器组或者存储器的占用超过保护阈值后,可以对控制平面(比如,网卡中的调度器SCH)起反压,避免寄存器组或者存储器的进一步占用。示例性的,以寄存器组为例,该控制机制可以包括:当该寄存器组的占用率大于第一阈值时,减小第二通道中拥塞流的报文的传输量,比如,该网卡中的调度器SCH可以减少拥塞流的调度,以减少该网卡中的报文读控制器PRC从片外缓存中读取的拥塞流的流量,从而减小第二通道中拥塞流的报文的传输量。或者,当该寄存器组的占用率大于第二阈值时,减小第一通道中非拥塞流的报文的传输量,比如,该网卡中的调度器SCH可以减少非拥塞流的调度,以减少该网卡中的报文读控制器PRC从片内缓存中读取的非拥塞流的流量,从而减小第一通道中非拥塞流的报文的传输量,第二阈值大于第一阈值。类似的,该网卡还可以根据片内缓存的占用率、片外缓存的占用率、第一通道的占用率、第二通道的占用率、第一通道对应的NC-FIFO、和/或第二通道对应的CG-FIFO,分别通过不同的阈值来减小拥塞流或非拥塞流的传输量,以实现拥塞流和非拥塞流的传输控制。根据上述方式,通过在持续拥塞或者片外缓存较小或性能不足的情况下,控制拥塞流的传输可以保证非拥塞流的正常传输,从而使得非拥塞流能够持续获得低时延,进而提高用户体验。
在本申请实施例中,当该网卡接收到第一数据流的报文时,若第一数据流为非拥塞流,则将第一数据流的报文存储在片内缓存中,并在调度第一数据流时从片内缓存中读出后通过高优先级的第一通道输出,由于片内缓存的读延迟小,因此可以保证非拥塞流中高优先级和低优先级的数据流均能够被快速输出,从而在一定程度上提高了片内缓存的分配和释放的效率,进而提高片内缓存的利用率。此外,若第一数据流为拥塞流,则将第一数据流的报文存储在片外缓存中,并在调度第一数据流时从片外缓存中读出后通过低优先级的第二通道输出,由于片外缓存的空间较大,从而可以保证对于拥塞流的缓存需求。进一步的,当第一数据流从非拥塞流转换为拥塞流或者从拥塞流转换为非拥塞流时,还可以通过一定的保序逻辑实现同一数据流的多个报文的有序传输,从而提高用户体验。
上述主要从网卡的角度对本申请实施例提供的方案进行了介绍。可以理解的是, 该网卡为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的网元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对网卡进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图7示出了上述实施例中所涉及的数据流传输装置的一种可能的结构示意图,该装置可以为网卡,该装置包括:接收单元401、调度单元402、写入单元403和读取单元404。其中,接收单元401用于执行上述方法实施例的S301、接收第一数据流的第二报文和/或第三报文的步骤等;调度单元402用于执行上述方法实施例中确定第一数据流为非拥塞流或者拥塞流、以及触发第一数据流的调度指令的步骤;写入单元403用于执行上述方法实施例中的S302a、S302b、S304a或者S304b中的一个或者多个步骤;读取单元404用于执行上述方法实施例中的S303a、S303b、S305a、S305b或者S305c中的一个或者多个步骤。进一步的,该装置所示的功能结构与图2所示的网卡的各单元之间的对应关系可以为:接收单元401和写入单元403可以对应图2中的报文写控制器PWC,调度单元402可以对应图2中的调度器SCH,读取单元404可以对应图2中的报文读控制器PRC。
在硬件实现上,上述调度单元402、写入单元403和读取单元404可以为处理器,接收单元401可以为接收器,接收器与发送器通常可以构成收发器,该收发器可以称为通信接口。
图8所示,为本申请实施例提供的上述实施例中所涉及的数据流传输装置的一种可能的结构示意图,该装置可以为网卡,该装置包括:处理器412、通信接口413、存储器411以及总线414。处理器412、通信接口413以及存储器411通过总线414相互连接。在本申请实施例中,处理器412用于对该装置的动作进行控制管理,例如,处理器412用于执行上述方法实施例中的S302a-S305a、S302b-S305c,和/或用于本文所描述的技术的其他过程。通信接口413用于支持该装置进行通信,比如,支持该装置接收第一报文、第二报文和/或第三报文等。存储器411,用于存储该装置的程序代码和数据,比如,存储器411可用于存储该网卡接收到的数据流的报文。
其中,处理器412可以是微处理器、专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线414可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture, EISA)总线等。
在本申请实施例中,当该网卡接收到第一数据流的报文时,若第一数据流为非拥塞流,则将第一数据流的报文存储在片内缓存中,并在调度第一数据流时从片内缓存中读出后通过高优先级的第一通道输出,由于片内缓存的读延迟小,因此可以保证非拥塞流中高优先级和低优先级的数据流均能够被快速输出,从而在一定程度上提高了片内缓存的分配和释放的效率,进而提高片内缓存的利用率。此外,若第一数据流为拥塞流,则将第一数据流的报文存储在片外缓存中,并在调度第一数据流时从片外缓存中读出后通过低优先级的第二通道输出,由于片外缓存的空间较大,从而可以保证对于拥塞流的缓存需求。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在本申请的另一实施例中,还提供一种芯片,该芯片用于执行本文所提供的数据流传输方法。比如,该芯片可以为图2所示的网卡,或者该芯片包括图7或者图8所示的数据流传输装置。
在本申请的另一实施例中,还提供一种网络设备,该网络设备的结构可以如图1所示,即该网络设备可以包括处理器101和网卡103;其中,处理器101可用于向网卡103发送数据流,网卡103可以为上文所提供的任一种网卡或者数据流传输装置,用于执行本文所提供的数据流传输方法。可选的,该网络设备还可以包括存储器102。
在本申请的另一实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当设备的至少一个处理器执行该指令时,使得该设备执行本文所提供的数据流传输方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施本文所提供的数据流传输方法。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (22)

  1. 一种数据流传输方法,其特征在于,应用于网卡中,所述网卡与片外缓存耦合,所述网卡包括片内缓存、第一通道和第二通道,所述第一通道的优先级高于所述第二通道的优先级,所述方法包括:
    接收第一数据流的第一报文,并根据所述第一数据流的业务类型确定所述第一数据流为非拥塞流或者拥塞流;
    若所述第一数据流为所述非拥塞流,将所述第一报文存储在所述片内缓存中,并在触发所述第一数据流的调度指令时,从所述片内缓存中读取所述第一数据流的所述第一报文并通过所述第一通道输出;
    若所述第一数据流为所述拥塞流,将所述第一报文存储在所述片外缓存中,并在触发所述第一数据流的调度指令时,从所述片外缓存中读取所述第一数据流的所述第一报文并通过所述第二通道输出。
  2. 根据权利要求1所述的方法,其特征在于,当所述第一数据流从所述非拥塞流转换为所述拥塞流时,所述方法还包括:
    当接收到所述第一数据流的第二报文时,将所述第二报文存储在所述片外缓存中,所述第二报文的第二序列号大于所述第一报文的第一序列号;
    在所述第一数据流中序列号小于所述第二报文的第二序列号的报文通过所述第一通道输出之后,从所述片外缓存中读取所述第二报文并通过所述第二通道输出。
  3. 根据权利要求2所述的方法,其特征在于,所述方法还包括:
    当所述第一数据流的第一报文输入所述第一通道时,将所述第一通道中所述第一数据流的报文的输入数量加一;
    当所述第一报文从所述第一通道输出时,将所述第一通道中所述第一数据流的报文的输出数量加一;
    当所述第二报文输入所述第二通道时,将所述输入数量携带在所述第二报文的控制信息中;
    其中,当所述输出数量大于或等于所述第二报文的控制信息携带的所述输入数量时,所述第一数据流中序列号小于所述第二序列号的报文已通过所述第一通道输出。
  4. 根据权利要求1所述的方法,其特征在于,当所述第一数据流从所述拥塞流转换为所述非拥塞流时,所述方法还包括:
    当接收到所述第一数据流的第三报文时,将所述第三报文存储在所述片内缓存中;
    若所述第二通道中所述第一数据流的报文未全部输出,从所述片内缓存中读取所述第三报文并通过所述第二通道输出;
    若所述第二通道中所述第一数据流的报文全部输出,从所述片内缓存中读取所述第三报文并通过所述第一通道输出。
  5. 根据权利要求4所述的方法,其特征在于,所述第二通道中所述第一数据流的每个报文对应一个输入输出信息,所述方法还包括:
    当所述第一数据流的第一报文输入所述第二通道或从所述第二通道输出时,记录所述第一报文的输入输出信息,所述输入输出信息用于确定所述第二通道中的所述第 一数据流的报文是否全部输出。
  6. 根据权利要求5所述的方法,其特征在于,所述输入输出信息为所述第二通道中所述第一数据流的报文数量,所述当所述第一数据流的第一报文输入所述第二通道或从所述第二通道输出时,记录所述第一报文的输入输出信息,包括:
    当所述第一数据流的第一报文输入所述第二通道时,将所述报文数量加一;
    当所述第一数据流的第一报文从所述第二通道输出时,将所述报文数量减一;
    其中,当所述报文数量为0时,所述第二通道中所述第一数据流的报文已全部输出;当所述报文数量不为0时,所述第二通道中所述第一数据流的报文未全部输出。
  7. 根据权利要求5所述的方法,其特征在于,所述输入输出信息包括输入标志位和流标识位,所述当所述第一数据流的第一报文输入所述第二通道或从所述第二通道输出时,记录所述第一报文的输入输出信息,包括:
    当所述第一数据流的第一报文输入所述第二通道时,将所述第一报文对应的输入标志位置为有效、所述流标识位置为所述第一数据流的流标识;
    当所述第一数据流的第一报文从所述第二通道输出时,将所述第一报文对应的输入标志位置为无效;
    其中,当所述输入输出信息中所述第一数据流的流标识对应的所有输入标志位均为无效时,所述第二通道中所述第一数据流的报文全部输出;当所述输入输出信息中所述第一数据流的流标识对应的所有输入标志位中存在有效的输入标志位时,所述第二通道中所述第一数据流的报文未全部输出。
  8. 根据权利要求7所述的方法,其特征在于,所述网卡包括寄存器组,所述寄存器组中的每个寄存器用于存储一个报文的输入输出信息,所述寄存器组的深度与片外最大读延迟、要求带宽和满足要求性能时的最小包长有关。
  9. 根据权利要求7所述的方法,其特征在于,所述方法还包括:
    当所述寄存器组的占用率大于第一阈值时,减小所述第二通道中拥塞流的报文的传输量;
    当所述寄存器组的占用率大于第二阈值时,减小所述第一通道中非拥塞流的报文的传输量,所述第二阈值大于所述第一阈值。
  10. 根据权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:
    根据所述片内缓存的占用率、所述片外缓存的占用率、所述第一通道的占用率和/或所述第二通道的占用率,调节所述拥塞流的传输量和/或所述非拥塞流的传输量。
  11. 一种数据流传输装置,其特征在于,所述装置与片外缓存耦合,所述装置中包括片内缓存、第一通道和第二通道,所述第一通道的优先级高于所述第二通道的优先级,所述装置还包括:
    接收单元,用于接收第一数据流的第一报文;
    调度单元,用于根据所述第一数据流的业务类型,确定所述第一数据流为非拥塞流或者为拥塞流;
    写入单元,用于若所述第一数据流为所述非拥塞流,将所述第一报文存储在所述片内缓存中,若所述第一数据流为所述拥塞流,将所述第一报文存储在所述片外缓存中;
    所述调度单元,还用于触发所述第一数据流的调度指令;
    读取单元,用于若所述第一数据流为非拥塞流,从所述片内缓存中读取所述第一数据流的所述第一报文并通过所述第一通道输出,若所述第一数据流为拥塞流,从所述片外缓存中读取所述第一数据流的所述第一报文并通过所述第二通道输出。
  12. 根据权利要求11所述的装置,其特征在于,当所述第一数据流从所述非拥塞流转换为所述拥塞流时:
    所述写入单元,还用于当所述接收单元接收到所述第一数据流的第二报文时,将所述第二报文存储在所述片外缓存中,所述第二报文的第二序列号大于所述第一报文的第一序列号;
    所述读取单元,还用于在所述第一数据流中序列号小于所述第二序列号的报文所述第一通道输出之后,从所述片外缓存中读取所述第二报文并通过所述第二通道输出。
  13. 根据权利要求12所述的装置,其特征在于,所述装置还包括:
    第一计数器,用于当所述第一数据流的第一报文输入所述第一通道时,将所述第一通道中所述第一数据流的报文的输入数量加一;
    第二计数器,用于当所述第一报文从所述第一通道输出时,将所述第一通道中所述第一数据流的报文的输出数量加一;
    当所述第二报文输入所述第二通道时,将所述输入数量携带在所述第二报文的控制信息中;
    其中,当所述输出数量大于或等于所述第二报文的控制信息携带的所述输入数量时,所述第一数据流中序列号小于所述第二序列号的报文已通过所述第一通道输出。
  14. 根据权利要求11所述的装置,其特征在于,当所述第一数据流从所述拥塞流转换为所述非拥塞流时:
    所述写入单元,还用于当所述接收单元接收到所述第一数据流的第三报文时,将所述第三报文存储在所述片内缓存中;
    所述读取单元,还用于若所述第二通道中所述第一数据流的报文未全部输出,从所述片内缓存中读取所述第三报文并通过所述第二通道输出;
    所述读取单元,还用于若所述第二通道中所述第一数据流的报文全部输出,从所述片内缓存中读取所述第三报文并通过所述第一通道输出。
  15. 根据权利要求14所述的装置,其特征在于,所述第二通道中所述第一数据流的每个报文对应一个输入输出信息,所述读取单元还用于:
    当所述第一数据流的第一报文输入所述第二通道或从所述第二通道输出时,记录所述第一报文的输入输出信息,所述输入输出信息用于确定所述第二通道中的所述第一数据流的报文是否全部输出。
  16. 根据权利要求15所述的装置,其特征在于,所述输入输出信息为所述第二通道中所述第一数据流的报文数量,所述读取单元还用于:
    当所述第一数据流的第一报文输入所述第二通道时,将所述报文数量加一;
    当所述第一数据流的第一报文从所述第二通道输出时,将所述报文数量减一;
    其中,当所述报文数量为0时,所述第二通道中所述第一数据流的报文已全部输出;当所述报文数量不为0时,所述第二通道中所述第一数据流的报文未全部输出。
  17. 根据权利要求15所述的装置,其特征在于,所述输入输出信息包括输入标志位和流标识位,所述读取单元还用于:
    当所述第一数据流的第一报文输入所述第二通道时,将所述第一报文对应的输入标志位置为有效、所述流标识位置为所述第一数据流的流标识;
    当所述第一数据流的第一报文从所述第二通道输出时,将所述第一报文对应的输入标志位置为无效;
    其中,当所述输入输出信息中所述第一数据流的流标识对应的所有输入标志位均为无效时,所述第二通道中所述第一数据流的报文全部输出;当所述输入输出信息中所述第一数据流的流标识对应的所有输入标志位中存在有效的输入标志位时,所述第二通道中所述第一数据流的报文未全部输出。
  18. 根据权利要求17所述的装置,其特征在于,所述装置包括寄存器组,所述寄存器组中的每个寄存器用于存储一个报文的输入输出信息,所述寄存器组的深度与片外最大读延迟、要求带宽和满足要求性能时的最小包长有关。
  19. 根据权利要求17所述的装置,其特征在于,所述调度单元还用于:
    当所述寄存器组的占用率大于第一阈值时,减小所述拥塞流的传输量;
    当所述寄存器组的占用率大于第二阈值时,减小所述非拥塞流的传输量,所述第二阈值大于所述第一阈值。
  20. 根据权利要求11-19任一项所述的装置,其特征在于,所述调度单元还用于:
    根据所述片内缓存的占用率、所述片外缓存的占用率、所述第一通道的占用率或所述第二通道的占用率中的至少一个项,调节所述拥塞流的传输量和/或所述非拥塞流的传输量。
  21. 一种网络设备,其特征在于,所述网络设备包括相互耦合的处理器和网卡,所述处理器包括片外缓存,所述网卡包括权利要求11-20任一项所述的数据流传输装置。
  22. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令被设备运行时,使得所述设备执行如权利要求1-10任一项所述的数据流传输方法。
CN202180092641.2A 2021-02-22 2021-02-22 一种数据流传输方法、装置及网络设备 Pending CN116889024A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/077239 WO2022174444A1 (zh) 2021-02-22 2021-02-22 一种数据流传输方法、装置及网络设备

Publications (1)

Publication Number Publication Date
CN116889024A true CN116889024A (zh) 2023-10-13

Family

ID=82931930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180092641.2A Pending CN116889024A (zh) 2021-02-22 2021-02-22 一种数据流传输方法、装置及网络设备

Country Status (2)

Country Link
CN (1) CN116889024A (zh)
WO (1) WO2022174444A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117134932B (zh) * 2023-04-06 2024-08-13 荣耀终端有限公司 数据流调度方法和电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07283814A (ja) * 1994-04-07 1995-10-27 Matsushita Electric Ind Co Ltd フロー制御方式
CN101854660B (zh) * 2009-03-30 2013-05-22 电信科学技术研究院 一种拥塞控制方法及装置
WO2011157136A2 (zh) * 2011-05-31 2011-12-22 华为技术有限公司 一种数据管理方法、装置及数据芯片
CN102244568B (zh) * 2011-06-24 2013-12-04 上海海事大学 一种附带式跨层设计的无线网络拥塞控制方法
TWI481230B (zh) * 2013-01-08 2015-04-11 D Link Corp Analyze the data packets to select the connection path for the connection path
CN105376172B (zh) * 2014-08-29 2019-01-25 华平信息技术股份有限公司 一种控制网络拥塞的方法
CN106851727B (zh) * 2017-01-23 2020-01-31 西安电子科技大学 基于多路径路由协议实现自组网拥塞控制的方法
CN107454017B (zh) * 2017-06-05 2021-05-11 上海交通大学 一种云数据中心网络中混合数据流协同调度方法
CN109714267B (zh) * 2018-12-26 2021-01-29 清华大学 管理反向队列的传输控制方法及系统
US11792114B2 (en) * 2019-05-23 2023-10-17 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient management of non-idempotent operations in a network interface controller (NIC)
CN111328148B (zh) * 2020-03-11 2023-04-07 展讯通信(上海)有限公司 数据传输方法及装置

Also Published As

Publication number Publication date
WO2022174444A1 (zh) 2022-08-25

Similar Documents

Publication Publication Date Title
US8929363B1 (en) Apparatus and method for allocating buffers of a memory including tracking a number of buffers used to store a received frame
US8218546B2 (en) Interleaved processing of dropped packets in a network device
KR100323258B1 (ko) 버퍼 관리를 통한 속도 보증
US7027457B1 (en) Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches
US8059671B2 (en) Switching device
US8718077B1 (en) Apparatus and method for dynamically limiting output queue size in a quality of service network
CN109314673B (zh) 一种客户业务传输方法和装置
US20060291458A1 (en) Starvation free flow control in a shared memory switching device
CN113973085B (zh) 一种拥塞控制方法和装置
US20080063004A1 (en) Buffer allocation method for multi-class traffic with dynamic spare buffering
CN111526095B (zh) 一种流量控制方法和装置
CN115622952A (zh) 资源调度方法、装置、设备及计算机可读存储介质
CN110830388A (zh) 一种数据调度方法、装置、网络设备及计算机存储介质
US8879578B2 (en) Reducing store and forward delay in distributed systems
CN116889024A (zh) 一种数据流传输方法、装置及网络设备
JP2004242337A (ja) 交換のためにメモリに書き込まれるパケットをキューイングするシステム、方法及び論理
CN111131061B (zh) 一种数据传输方法及网络设备
CN117749726A (zh) Tsn交换机输出端口优先级队列混合调度方法和装置
WO2023226603A1 (zh) 一种抑制拥塞队列产生的方法及装置
US20140321279A1 (en) Random early drop based processing circuit and method for triggering random early drop based operation according to at least trigger event generated based on software programmable schedule
CN112737970A (zh) 一种数据传输方法及相关设备
CN102594670B (zh) 多端口多流的调度方法、装置及设备
JP2010035245A (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理
US8842696B1 (en) Guaranteed rate port scheduler
EP4436118A1 (en) Message processing method and apparatus, and network device and medium

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