CN106385379A - 报文缓存方法及装置 - Google Patents
报文缓存方法及装置 Download PDFInfo
- Publication number
- CN106385379A CN106385379A CN201610824424.9A CN201610824424A CN106385379A CN 106385379 A CN106385379 A CN 106385379A CN 201610824424 A CN201610824424 A CN 201610824424A CN 106385379 A CN106385379 A CN 106385379A
- Authority
- CN
- China
- Prior art keywords
- message
- buffer area
- offset amount
- address
- address offset
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种报文缓存方法及装置,所述方法包括:网卡接收对端设备发送的报文;网卡CPU基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;其中,为不同长度的报文分配的所述地址空间的大小不同;DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。应用本发明实施例,可以有效地提高报文的缓存性能。
Description
技术领域
本申请涉及计算机通信领域,尤其涉及报文缓存方法及装置。
背景技术
随着网络技术的高速发展,网络速率不断提升,加之突发攻击流量等因素,为网络各个节点上的设备带来了很大的冲击。而对于最普通的网络设备网卡来说,它是网络链路与应用程序之间的纽带,承载着网络与应用程序之间的数据交换。
然而,当遇到突发流量或攻击时,应用程序往往无法及时读取缓存区中的报文,导致缓存区容量不足,使得网卡DMA(Direct Memory Access,直接内存存取)控制器无法将后续的报文缓存到网络设备的缓存区,从而引起报文的丢失。
发明内容
有鉴于此,本申请提供一种报文缓存方法及装置,用以提高报文的缓存性能。
具体地,本申请是通过如下技术方案实现的:
根据本发明实施例的第一方面,提供一种报文缓存方法,应用于网络设备,所述网络设备包括DMA控制器,所述方法包括:
网卡接收对端设备发送的报文;
网卡CPU(Central Processing Unit,中央处理器)基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;其中,为不同长度的报文分配的所述地址空间的大小不同;
DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。
根据本发明实施例的第二方面,提供一种报文缓存装置,所述装置包括:
接收单元,用于网卡接收对端设备发送的报文;
分配单元,用于网卡CPU基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;其中,为不同长度的报文分配的所述地址空间的大小不同;
第一缓存单元,用于DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。
本申请实施例提出一种新的报文缓存方法,通过对报文缓存机制的改进,网卡可以接收对端设备发送的报文。在接收到报文后,网卡CPU可以基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;DMA控制器可以基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。其中,为不同长度的报文分配的所述地址空间的大小不同。
由于网卡CPU可以基于缓存区的起始地址和报文长度,为报文分配与该报文的报文长度相对应的地址空间,对于不同长度的报文将会分配不同大小的地址空间对报文进行缓存,而不再是使用等间隔的地址空间对报文进行缓存,从而使得缓存报文的缓存区间可以得到有效地利用,因此,可以有效提升报文的缓存能力。
附图说明
图1是本申请一示例性实施例示出的相关技术中的一种缓存区的示意图;
图2是本申请一示例性实施例示出的一种报文缓存方法的流程图;
图3是是本申请一示例性实施例示出的一种缓存区的示意图;
图4是本申请一示例性实施例示出的一种报文缓存装置所在设备的硬件结构图;
图5是本申请一示例性实施例示出的一种报文缓存装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
随着网络技术的高速发展,网络速率地不断提升,对网络设备的性能的要求也越来越高。作为网络设备的重要组成部分,网卡是连接网络链路与应用程序之间的纽带,所以网卡的网络数据处理能力往往决定了网络设备性能。
在通常情况下,网卡通过PCI-E(总线和接口标准)插槽与该网络设备(服务器或者PC机等)相连,网卡中包含有DMA控制器和网卡CPU等相关硬件。
当该网络设备启动后,可以加载网卡驱动程序,网卡驱动程序可以向网络设备申请一段固定大小的内存作为报文的缓存区。当网卡通过网卡光口或者千兆电口接收到对端设备发送的报文时,可以将接收到的报文存放至网卡的缓存区中。网卡CPU可以查询网卡驱动程序申请到的网络设备的缓存区的起始地址,并计算出将要缓存报文在网络设备的缓存区中的地址。网卡中的DMA控制器基于网卡CPU计算出的报文在缓存区的地址,将存放在网卡缓存区中的报文缓存至网络设备的缓存区中。
然而,在相关的报文缓存的机制中,当网络设备启动后,网络设备可以加载网卡驱动程序时,网络设备可以基于网卡驱动程序针对内存申请的请求,分配一块或者多块物理地址连续的固定大小的内存作为缓存区。当网卡接收到报文后,网卡CPU可以将网络设备的缓存区地址进行等长度地分割,并计算出在缓存区中存放报文的地址空间。然后,网卡中的DMA控制器可以基于该地址空间将接收到的报文缓存到相应地址空间对应的缓存区中。
一方面,由于网卡CPU通过对缓存区的地址空间进行等长度的静态分割,网卡中的DMA控制器基于分割后的等长度的地址空间将报文缓存至与之对应的等容量的缓存区中。当静态分割后的地址空间对应的缓存区容量过大,而需要缓存的报文长度过小时,则可能会造成缓存空间的不必要浪费,从而可以影响缓存区使用率。
例如,参见图1,假设一块缓存区的总容量为256M,经等长度地址空间静态分割后,每个地址空间对应的用于缓存报文的缓存区的容量为2K,接收到的报文长度为300bytes,将300bytes的报文缓存至2K容量的缓存区中,则会造成1748bytes容量的缓存区的浪费,因而通过对缓存区的地址空间等长度静态分配,以此来缓存报文的方式极大地降低了缓存区的使用率。
另一方面,当网络流量过大或者存在网络攻击时,由于网络设备基于网卡驱动程序针对内存申请的请求,分配的作为缓存区的内存容量大小是固定的,网络设备上的应用程序往往无法及时读取缓存区中的报文,使得网卡DMA控制器无法将后续接收到的报文缓存到该缓存区,从而引起丢包的发生,因此缓存能力不足也是相关报文缓存技术中的一大缺陷。
例如,假设一块缓存区的总容量为256M,经等长度地址空间静态分割后,每个地址空间对应的用于缓存报文的缓存区的容量为2K,则可以缓存131072个报文。由于256M的缓存区的总容量大小是固定的,所以当需要缓存的报文数量超过131072个,则会出现丢包的现象,因此,缓存能力不足也是相关报文缓存技术中的一大缺陷。
本发明实施例提出一种新的报文缓存方法,通过对报文缓存机制的改进,网卡可以接收对端设备发送的报文。在接收到报文后,网卡CPU可以基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;DMA控制器可以基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。其中,为不同长度的报文分配的所述地址空间的大小不同。
当该缓存区的容量不足时,网络设备可以将报文缓存至与该缓存区关联的下一级缓存区。
一方面,由于网卡CPU可以基于缓存区的起始地址和报文长度,为报文分配与该报文的报文长度相对应的地址空间,而不再是使用等长度的地址空间,从而使得缓存报文的缓存区间可以得到有效地利用,
另一方面,由于可以申请另外的一块内存作为与上述缓存区关联的下一级缓存区对报文进行缓存。通过增加二级缓存区,可以有效地扩大缓存区的容量,增加报文缓存的数量。因此,可以有效地解决缓存能力不足的问题。
综上所述,使用本申请实施例的方法,可以有效地提高报文缓存的能力。
参见图2,图2是本申请一示例性实施例示出的一种报文缓存方法的流程图。所述方法应用于网络设备,主要包括以下步骤:
步骤201:网卡接收对端设备发送的报文;
步骤202:网卡CPU基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;其中,为不同长度的报文分配的所述地址空间的大小不同;
步骤203:DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。
在相关报文缓存的机制中,网卡CPU通过对缓存区的地址空间采用等长度静态分割的方法,为每个待缓存的报文分配等长度的地址空间,DMA控制器可以基于该等长度的地址空间将网卡接收的报文缓存至网络设备的缓存区中。但当经过等长度地址空间的静态分割后,如果每个地址空间对应的缓存区容量过大,而需要缓存的报文长度过小时,则可能会造成缓存空间的不必要浪费,从而可以影响缓存区使用率。
而在本实施例中,网卡CPU可以基于缓存区的起始地址和报文长度,为所述待缓存的报文动态分配地址空间,报文的长度不同,所分配的与该报文对应的地址空间的大小也不同。
例如,假设一块缓存区的总容量为256M,经等长度地址空间静态分割后,每个地址空间对应的用于缓存报文的缓存区的容量为2K,接收到的报文平均长度为300bytes,则可以缓存131072个报文。而如果采用本实施例的动态分配缓存区地址空间的方法,换句话说,报文可以连续地存放在缓存区中,则可以缓存894784个报文。与相关技术中报文缓存的方法相比,报文缓存的数量得到大幅度提升,因此可以有效地提高网络设备对报文缓存的性能。
在实现时,网络设备启动后,网络设备可以加载网卡驱动程序,网络设备可以基于网卡驱动程序针对内存申请的请求,分配一块或者多块物理地址连续的固定大小的内存作为缓存区。
网卡可以通过网卡光口或者千兆电口接收对端设备发送的报文。
网卡CPU可以基于一块缓存区的起始地址和网卡接收到的报文长度,从所述缓存区中为接收到的报文动态分配地址空间,并可以将地址偏移量写入该报文的头部指定字段,然后可以基于动态分配的地址空间,将该报文缓存至该缓存区。
其中,上述地址偏移量是报文在缓存区中对应的起始地址和该报文长度之和,表征下一个待缓存报文在所述缓存区的起始地址。
与相关的报文缓存技术不同的是,报文所在缓存区的起始地址不再是预先基于等长度的地址空间而计算的,而是通过写入缓存的报文的头部字段的地址偏移量,确定下一个待缓存报文的起始地址,对接收到的报文进行连续地缓存。
将地址偏移量写入缓存的报文的头部字段,如Tag字段,主要是使得网卡CPU可以基于该地址偏移量,确定下一个待缓存报文在缓存区的起始地址。DMA控制器可以基于网卡CPU确定的地址空间将该报文缓存至与该地址空间对应的缓存区。而在网络设备的应用程序读取缓存区中的报文时,又可以通过报文头部字段中记录的地址偏移量,确定待读取的下一个报文在缓存区中的起始地址,并基于该起始地址,读取缓存区中的报文。
例如,参见图3,假设用于缓存报文的缓存区的起始地址为0,第一待缓存的报文长度为300字节,第二待缓存的报文长度为200字节。则第一报文头部Tag字段中写入的地址偏移量为第一个待缓存报文在缓存区中的起始地址(即0)和第一报文长度(即300)之和(即300),该地址偏移量300可以表示第二个待缓存报文在缓存区中起始地址。对于第二个待缓存报文,其头部Tag字段中写入的地址偏移量为第二个待缓存报文在缓存区中的起始地址(即300)和第二个报文的长度(即200)之和(即500),该地址偏移量500可以表示第三个待缓存报文在缓存区中的起始地址。依据此方法,网卡中的DMA控制器可以依次将网卡接收到的报文缓存至缓存区中。
在本实施例中,当所述缓存区容量不足时,DMA控制器可以将接收到的报文缓存至与该缓存区关联的下一级缓存区。而当该下一级缓存区容量不足时,将所述报文丢弃。
与相关的报文缓存机制不同的是,在网络设备基于网卡驱动程序针对内存申请的请求,预先分配一块或者多块物理地址连续的固定大小的缓存区之后,网卡驱动程序可以为每块缓存区多申请一小块缓存区作为与各缓存区关联的下一级缓存区。并可以将下一级缓存区的地址写入与之关联的缓存区的头部区域。
为每个固定大小的缓存区多申请一块缓存区作为下一级缓存区,在一定程度上,可以扩大缓存区的容量,从而可以提高缓存报文的数量。
在实现时,网卡驱动程序可以为每块缓存区多申请一小块缓存区作为与各缓存区关联的下一级缓存区,并可以将下一级缓存区的地址写入与之关联的缓存区的头部区域。
当网卡接收到对端设备发送的报文后,可以先检查缓存区的容量是否满足对报文的缓存。如果缓存区的容量不足,则可以将接收到的报文依次缓存在与该缓存区关联的下一级缓存区中。
在下一级缓存区中对报文进行缓存时,网卡通过读取该缓存区头部空间中的代表下一级缓存区的地址信息,确定下一级缓存区的位置。网卡可以检测下一级缓存区的容量是否满足对上述报文的缓存。
如果下一级缓存区的容量满足报文的缓存,网卡可以基于上述动态分配缓存区地址空间对报文进行缓存的方法,将接收到的报文缓存至下一级缓存区中。
如果下一级缓存区的容量不足时,网卡可以将该报文丢弃。
当然,网络设备可以通过如下方式对缓存区的报文进行读取,并可以将读取到的报文返回至读取请求的发起方。
在本实施例中,当网络设备接收到针对所述缓存区的报文读取请求时,可以基于该缓存区头部区域中记录的地址信息,确定与之关联的下一级缓存区的位置。并可以判断下一级缓存区是否缓存有报文。如果下一级缓存有报文,则读取下一级缓存区中缓存的报文,并可以向读取请求对应的发起方返回读取到的报文。
如果下一缓存区中没有缓存报文,则可以判断与之关联的缓存区中是否有缓存有报文。如果缓存有报文,则读取该缓存区中的报文,并向读取请求对应的发起方返回读取到的报文。
网络设备从该缓存区和下一级缓存区中读取缓存的报文的具体过程如下:
当网络设备接收到针对所述缓存区的报文读取请求时,基于所述缓存区的起始地址和所述地址偏移量从所述缓存区依次读取报文。在读取报文后,网络设备可以解析读取的报文,获取该报文头部指定字段中的地址偏移量。网络设备可以对所述地址偏移量进行合法性校验。如果该地址偏移量通过合法性校验,则向所述报文读取请求对应的发起方返回读取到的报文。如果所述地址偏移量未通过合法性校验,则将该地址偏移量置零,并向所述报文读取请求对应的发起方返回读取到的报文。
值得说明的是,上述地址偏移量可以表示下一个待读取报文在缓存区中的起始地址。该地址偏移量通过校验之后,网络设备不仅可以向读取请求对应的发起方返回读取到的报文,还可以基于该地址偏移量,确定下一个待读取报文在缓存区的起始地址。
此外,网络设备可以通过以下方式,对报文中记录的地址偏移量进行校验。
开发人员可以基于该网络设备所支持链路的所能通过的最大报文长度,确定该网络设备缓存区对应的MTU(Maximum Transmission Unit,最大传输单元)值。
当网络设备通过解析从缓存区中读取的报文,获得该报文中记录的地址偏移量后,可以将该地址偏移量与上述设定的MTU值之和与该缓存区的容量进行比较。
如果该地址偏移量与该MTU值之和大于该缓存区容量时,则可以确定该地址偏移量未通过合法性校验。此时,网络设备可以将获取到的地址偏移量置零,并可以向读取请求对应的发起方返回该报文。而在将地址偏移量置零后,网络设备在读取下一个待读取报文时,则可以基于该置零后的地址偏移量,从该缓存区的起始位置(即0地址对应的位置),基于上述读取报文的方法,读取新缓存至缓存区中的报文。
如果该地址偏移量与该MTU值之和小于等于该缓存区容量时,则可以确定该地址偏移量通过合法性校验。此时,网络设备可以将该报文返回读取请求对应的发起方。并可以基于该地址偏移量,确定下一个待读取的报文在缓存区中起始地址,并读取该报文,将读取到的报文返回至读取请求对应的发起方。
下面以读取缓存区中缓存的报文为例,对上述读取方法进行详细地说明。当然,对于下一级缓存区中读取报文的方法,也如所述读取方法相同,在此,不再赘述。
下面以具体的例子对上述缓存区报文读取的方法进行详细地说明:
例如,参见图3,假设缓存区的总容量为256M,假设缓存报文的缓存区的起始地址为0,第一个缓存的报文长度为300字节,第二个缓存的报文长度为200字节。第一个报文在缓存区中的起始地址为0,第二个报文在该缓存区中的起始地址为300bytes。假设MTU值被设定为2k,该缓存区中缓存有报文头部Tag字段中记录的地址偏移量为262143k的报文。
通过上述动态分配缓存区地址空间对报文进行缓存的方法,第一个缓存的报文的头部Tag字段中记录的地址偏移量为300bytes,第二个缓存的报文的头部Tag字段中记录的地址偏移量为500bytes。
网络设备在接收到针对所述缓存区的报文读取请求时,可以基于缓存区的起始地址(即0bytes),读取第一个缓存的报文,并可以对该报文进行解析,获取该第一个报文头部Tag字段中的地址偏移量(即300bytes),并可以对300bytes的地址偏移量进行合法性校验。
网络设备可以将该地址偏移量即(300bytes)与该MTU值(2k)之和(即2348bytes)与该缓存区的容量(即256M)进行比较,通过比较,网络设备可以确定该地址偏移量通过合法性校验。网络设备可以将第一缓存的报文返回至读取请求对应的发起方。
此外,网路设备还可以基于该地址偏移量(即300),确定第二个缓存的报文在缓存区中的起始地址(即300),然后基于该起始地址,读取第二个缓存的报文,并对该报文进行解析,获取第二个报文头部Tag字段中携带的地址偏移量(即500),然后对该地址偏移量进行校验。
网络设备可以基于上述方法,依次读取缓存区中的报文。
当该网络设备通过解析报文,获得地址偏移量为262143k时,网络设备可以对该地址偏移量进行合法性校验。
网络设备可以将该地址偏移量即(262143k)与该MTU值(2k)之和(即262145k)与该缓存区的容量(即256M)进行比较。通过比较,网络设备可以确定该地址偏移量与MTU值之和大于该缓存区的容量,则可以确定该地址偏移量未通过合法性校验。网络设备可以将该地址偏移量置零,并可以将记录有该地址偏移量的报文返回至读取请求发起方。
而此时,网络设备可以基于置零的地址偏移量,重新从缓存区的起始位置读取新缓存入缓存的报文。
通过以上实施例可知,本发明通过对报文缓存机制的改进,网络设备的网卡可以接收对端设备发送的报文,在接收到报文后,网卡CPU可以基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;DMA控制器可以基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。
由于在本本申请中,网卡可以基于缓存区的起始地址和报文长度,为报文分配与该报文的报文长度相对应的地址空间,对于不同长度的报文将会分配不同大小的地址空间对报文进行缓存,而不再是使用等间隔的地址空间对报文进行缓存,从而使得缓存报文的缓存区间可以得到有效地利用,因此,可以有效提升报文的缓存能力。
另外,在本申请中,网络设备还可以为上述缓存区分配关联的下一级缓存区,当上述缓存区的容量不足时,网络设备还可以将报文缓存至与该缓存区关联的下一级缓存区,从而可以有效地扩大缓存区的容量,增加报文缓存的数量,可以有效地解决缓存能力不足的问题。
与前述报文缓存方法的实施例相对应,本申请还提供了报文缓存装置的实施例。本申请报文缓存装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请报文缓存装置所在网络设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的网络设备通常根据该报文缓存的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图5,图5是本申请一示例性实施例示出的一种报文缓存装置的框图,所述装置包括:接收单元510,分配单元520和第一缓存单元530。
其中,接收单元510,用于网卡接收对端设备发送的报文;
分配单元520,用于网卡CPU基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;其中,为不同长度的报文分配的所述地址空间的大小不同;
第一缓存单元530,用于DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。
在一个可选的实现方式中:
所述第一缓存单元530,具体用于网卡将地址偏移量写入所述报文头部指定字段;其中,所述地址偏移量为所述报文在缓存区中对应的起始地址和所述报文的长度之和;所述地址偏移量表征下一个待缓存报文在所述缓存区的起始地址;将所述报文缓存至与所述地址空间对应的缓存区间。
在另一个可选的实现方式中:
所述装置还可以包括:第二缓存单元540,用于当所述缓存区容量不足时,将所述报文缓存至与该缓存区关联的下一级缓存区;丢弃单元550,用于当所述下一级缓存区容量不足时,将所述报文丢弃。
在另一个可选的实现方式中:
所述装置还可以包括:读取单元560,用于当接收到针对所述缓存区的报文读取请求时,基于所述缓存区的起始地址和所述地址偏移量从所述缓存区依次读取报文;校验单元570,用于解析所述报文获取所述报文头部指定字段中的所述地址偏移量;对所述地址偏移量进行合法性校验;第一返回单元580,用于如果所述地址偏移量通过合法性校验,则向所述报文读取请求对应的发起方返回读取到的报文;第二返回单元590,如果所述地址偏移量未通过合法性校验,则将所述地址偏移量置零,并向所述报文读取请求对应的发起方返回读取到的报文。
在另一个可选的实现方式中,所述校验单元570,具体用于:判断所述地址偏移量与MTU值之和是否大于所述缓存区长度;如果所述地址偏移量与MTU值之和大于所述缓存区长度,则确定所述地址偏移量未通过所述合法性校验;如果所述地址偏移量与MTU值之和小于等于所述缓存区长度,则确定所述地址偏移量通过所述合法性校验。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种报文缓存方法,应用于网络设备,所述网络设备包括网卡,所述网卡包括直接内存存取控制器DMA控制器和网卡中央处理器网卡CPU,其特征在于,所述方法包括:
网卡接收对端设备发送的报文;
网卡CPU基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;其中,为不同长度的报文分配的所述地址空间的大小不同;
DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。
2.根据权利要求1所述的方法,其特征在于,所述DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区,包括:
网卡将地址偏移量写入所述报文头部指定字段;其中,所述地址偏移量为所述报文在缓存区中对应的起始地址和所述报文的长度之和;所述地址偏移量表征下一个待缓存报文在所述缓存区的起始地址;
将所述报文缓存至与所述地址空间对应的缓存区间。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述缓存区容量不足时,将所述报文缓存至与该缓存区关联的下一级缓存区;
当所述下一级缓存区容量不足时,将所述报文丢弃。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当接收到针对所述缓存区的报文读取请求时,基于所述缓存区的起始地址和所述地址偏移量从所述缓存区依次读取报文;
解析所述报文获取所述报文头部指定字段中的所述地址偏移量;对所述地址偏移量进行合法性校验;
如果所述地址偏移量通过合法性校验,则向所述报文读取请求对应的发起方返回读取到的报文;
如果所述地址偏移量未通过合法性校验,则将所述地址偏移量置零,并向所述报文读取请求对应的发起方返回读取到的报文。
5.根据权利要求4所述的方法,其特征在于,所述对所述地址偏移量进行合法性校验,包括:
判断所述地址偏移量与MTU值之和是否大于所述缓存区长度;
如果所述地址偏移量与MTU值之和大于所述缓存区长度,则确定所述地址偏移量未通过所述合法性校验;
如果所述地址偏移量与MTU值之和小于等于所述缓存区长度,则确定所述地址偏移量通过所述合法性校验。
6.一种报文缓存装置,其特征在于,所述装置包括:
接收单元,用于网卡接收对端设备发送的报文;
分配单元,用于网卡CPU基于缓存区的起始地址和所述报文的长度,从所述缓存区中为所述报文动态分配地址空间;其中,为不同长度的报文分配的所述地址空间的大小不同;
第一缓存单元,用于DMA控制器基于动态分配的所述地址空间,将所述报文缓存至所述缓存区。
7.根据权利要求6所述的装置,其特征在于,所述第一缓存单元,具体用于:
网卡将地址偏移量写入所述报文头部指定字段;其中,所述地址偏移量为所述报文在缓存区中对应的起始地址和所述报文的长度之和;所述地址偏移量表征下一个待缓存报文在所述缓存区的起始地址;将所述报文缓存至与所述地址空间对应的缓存区间。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二缓存单元,用于当所述缓存区容量不足时,将所述报文缓存至与该缓存区关联的下一级缓存区;
丢弃单元,用于当所述下一级缓存区容量不足时,将所述报文丢弃。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
读取单元,用于当接收到针对所述缓存区的报文读取请求时,基于所述缓存区的起始地址从所述缓存区依次读取报文;
校验单元,用于解析所述报文获取所述报文头部指定字段中的所述地址偏移量;对所述地址偏移量进行合法性校验;
第一返回单元,用于如果所述地址偏移量通过合法性校验,则向所述报文读取请求对应的发起方返回读取到的报文;
第二返回单元,如果所述地址偏移量未通过合法性校验,则将所述地址偏移量置零,并向所述报文读取请求对应的发起方返回读取到的报文。
10.根据权利要求9所述的装置,其特征在于,所述校验单元,具体用于:
判断所述地址偏移量与MTU值之和是否大于所述缓存区长度;如果所述地址偏移量与MTU值之和大于所述缓存区长度,则确定所述地址偏移量未通过所述合法性校验;如果所述地址偏移量与MTU值之和小于等于所述缓存区长度,则确定所述地址偏移量通过所述合法性校验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610824424.9A CN106385379A (zh) | 2016-09-14 | 2016-09-14 | 报文缓存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610824424.9A CN106385379A (zh) | 2016-09-14 | 2016-09-14 | 报文缓存方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106385379A true CN106385379A (zh) | 2017-02-08 |
Family
ID=57936689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610824424.9A Pending CN106385379A (zh) | 2016-09-14 | 2016-09-14 | 报文缓存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106385379A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193947A (zh) * | 2017-05-22 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种文件系统缓存增量刷新方法及系统 |
CN108833301A (zh) * | 2018-05-30 | 2018-11-16 | 杭州迪普科技股份有限公司 | 一种报文处理方法和装置 |
CN108828531A (zh) * | 2018-06-27 | 2018-11-16 | 电子科技大学 | 一种在fc总线仿真平台上雷达数据的处理方法 |
CN110855468A (zh) * | 2019-09-30 | 2020-02-28 | 华为技术有限公司 | 报文发送方法及装置 |
CN111752583A (zh) * | 2020-06-11 | 2020-10-09 | Oppo广东移动通信有限公司 | 固件升级方法、装置、电子设备和计算机可读存储介质 |
WO2021128104A1 (zh) * | 2019-12-25 | 2021-07-01 | 华为技术有限公司 | 一种报文缓存方法、集成电路系统及存储介质 |
CN113419780A (zh) * | 2021-05-08 | 2021-09-21 | 中国科学院声学研究所 | 一种基于fpga加速卡的dpdk驱动系统 |
CN114189569A (zh) * | 2020-08-31 | 2022-03-15 | 华为技术有限公司 | 一种数据传输方法、装置及系统 |
CN114884909A (zh) * | 2022-07-11 | 2022-08-09 | 苏州联讯仪器有限公司 | Dma数据传输方法、dma数据传输装置及数据传输系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877666A (zh) * | 2009-11-13 | 2010-11-03 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多应用程序报文接收方法和装置 |
US8447898B2 (en) * | 2005-10-28 | 2013-05-21 | Microsoft Corporation | Task offload to a peripheral device |
WO2014101090A1 (zh) * | 2012-12-28 | 2014-07-03 | 华为技术有限公司 | 缓存报文的方法和装置 |
CN104572498A (zh) * | 2014-12-26 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 报文的缓存管理方法和装置 |
CN104753814A (zh) * | 2013-12-31 | 2015-07-01 | 国家计算机网络与信息安全管理中心 | 基于网卡的报文分流处理方法 |
US20150334058A1 (en) * | 2014-05-13 | 2015-11-19 | Red Hat Israel, Ltd. | Adjusting buffer size for network interface controller |
-
2016
- 2016-09-14 CN CN201610824424.9A patent/CN106385379A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447898B2 (en) * | 2005-10-28 | 2013-05-21 | Microsoft Corporation | Task offload to a peripheral device |
CN101877666A (zh) * | 2009-11-13 | 2010-11-03 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多应用程序报文接收方法和装置 |
WO2014101090A1 (zh) * | 2012-12-28 | 2014-07-03 | 华为技术有限公司 | 缓存报文的方法和装置 |
CN104753814A (zh) * | 2013-12-31 | 2015-07-01 | 国家计算机网络与信息安全管理中心 | 基于网卡的报文分流处理方法 |
US20150334058A1 (en) * | 2014-05-13 | 2015-11-19 | Red Hat Israel, Ltd. | Adjusting buffer size for network interface controller |
CN104572498A (zh) * | 2014-12-26 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 报文的缓存管理方法和装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193947A (zh) * | 2017-05-22 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种文件系统缓存增量刷新方法及系统 |
CN108833301A (zh) * | 2018-05-30 | 2018-11-16 | 杭州迪普科技股份有限公司 | 一种报文处理方法和装置 |
CN108828531A (zh) * | 2018-06-27 | 2018-11-16 | 电子科技大学 | 一种在fc总线仿真平台上雷达数据的处理方法 |
CN110855468A (zh) * | 2019-09-30 | 2020-02-28 | 华为技术有限公司 | 报文发送方法及装置 |
WO2021128104A1 (zh) * | 2019-12-25 | 2021-07-01 | 华为技术有限公司 | 一种报文缓存方法、集成电路系统及存储介质 |
CN111752583A (zh) * | 2020-06-11 | 2020-10-09 | Oppo广东移动通信有限公司 | 固件升级方法、装置、电子设备和计算机可读存储介质 |
CN111752583B (zh) * | 2020-06-11 | 2024-05-14 | Oppo广东移动通信有限公司 | 固件升级方法、装置、电子设备和计算机可读存储介质 |
CN114189569B (zh) * | 2020-08-31 | 2024-03-26 | 华为技术有限公司 | 一种数据传输方法、装置及系统 |
CN114189569A (zh) * | 2020-08-31 | 2022-03-15 | 华为技术有限公司 | 一种数据传输方法、装置及系统 |
CN113419780A (zh) * | 2021-05-08 | 2021-09-21 | 中国科学院声学研究所 | 一种基于fpga加速卡的dpdk驱动系统 |
CN113419780B (zh) * | 2021-05-08 | 2023-05-12 | 中国科学院声学研究所 | 一种基于fpga加速卡的dpdk驱动系统 |
CN114884909B (zh) * | 2022-07-11 | 2022-09-09 | 苏州联讯仪器有限公司 | Dma数据传输方法、dma数据传输装置及数据传输系统 |
CN114884909A (zh) * | 2022-07-11 | 2022-08-09 | 苏州联讯仪器有限公司 | Dma数据传输方法、dma数据传输装置及数据传输系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106385379A (zh) | 报文缓存方法及装置 | |
US8225027B2 (en) | Mapping address bits to improve spread of banks | |
US10248350B2 (en) | Queue management method and apparatus | |
CN104809076B (zh) | Cache的管理方法及装置 | |
US20210073158A1 (en) | Methods and apparatus for network interface fabric send/receive operations | |
US20070011358A1 (en) | Mechanisms to implement memory management to enable protocol-aware asynchronous, zero-copy transmits | |
US7904677B2 (en) | Memory control device | |
CN102195874A (zh) | 数据分组的预提取 | |
US6715008B2 (en) | Method and system for over-run protection in a message passing multi-processor computer system using a credit-based protocol | |
US20140052938A1 (en) | Clumsy Flow Control Method and Apparatus for Improving Performance and Energy Efficiency in On-Chip Network | |
US10120810B2 (en) | Implementing selective cache injection | |
JP2012059252A (ja) | 共用データ・バスに対する階層的バッファ・システムのための方法、集積回路デバイス、およびプロセッサ・デバイス | |
US10079782B2 (en) | Facilitating communication of data packets using credit-based flow control | |
CN111641566B (zh) | 数据处理的方法、网卡和服务器 | |
CN106161256A (zh) | 一种边界网关协议bgp路由的处理方法及装置 | |
CN104935636A (zh) | 网络通道加速方法和系统 | |
CN115102908B (zh) | 基于带宽控制的网络报文生成的方法以及相关装置 | |
US20060029088A1 (en) | Reducing latency in a channel adapter by accelerated I/O control block processing | |
CN109408412B (zh) | 内存预取控制方法、装置及设备 | |
WO2021128104A1 (zh) | 一种报文缓存方法、集成电路系统及存储介质 | |
CN110297785A (zh) | 一种基于fpga的金融数据流控装置和流控方法 | |
CN107273100B (zh) | 一种数据实时处理及存储装置 | |
CN108307223A (zh) | 电视页面数据的存储方法及装置 | |
US9736069B1 (en) | Method for storing and retrieving packets in high bandwidth and low latency packet processing devices | |
CN109302353B (zh) | 一种分配报文缓存空间的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Binjiang District and Hangzhou city in Zhejiang Province Road 310051 No. 68 in the 6 storey building Applicant after: Hangzhou Dipu Polytron Technologies Inc Address before: Binjiang District and Hangzhou city in Zhejiang Province Road 310051 No. 68 in the 6 storey building Applicant before: Hangzhou Dipu Technology Co., Ltd. |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170208 |