CN104394099B - 一种报文传输方法及装置 - Google Patents
一种报文传输方法及装置 Download PDFInfo
- Publication number
- CN104394099B CN104394099B CN201410745282.8A CN201410745282A CN104394099B CN 104394099 B CN104394099 B CN 104394099B CN 201410745282 A CN201410745282 A CN 201410745282A CN 104394099 B CN104394099 B CN 104394099B
- Authority
- CN
- China
- Prior art keywords
- message
- cache
- heading
- memory
- internal memory
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文传输方法及装置,包括:CPU获取直接内存存取DMA控制器读写内存报文的消息,消息中携带由DMA控制器读写后的第一报文对应的内存地址;在高速缓存cache中查找与第一报文的内存地址对应的cache地址内的第二报文;将第二报文的报文头配置为无效;将内存中的第一报文的报文头数据重新缓存到cache中;根据第一报文的报文头数据的内容,对cache中报文头数据进行相应的修改;使用cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过DMA控制器转发。采用本发明实施例提供的方案,提高了CPU访问报文的速度,从而提高了报文转发的效率。
Description
技术领域
本发明涉及无线通信技术领域,尤其涉及一种报文传输方法及装置。
背景技术
当网络设备对报文进行转发时,网络芯片内的直接内存存取(DMA,Direct MemoryAccess)控制器与内存之间传送数据报文。DMA控制器将网络芯片从外部接收的报文写入内存中,或者将内存中的报文传送给网络芯片,即对内存进行读/写操作,内存中的报文缓存区用来存储报文数据,报文中的数据各自对应不同的内存地址。在DMA控制器与内存之间传送报文过程中,CPU也进行内存访问,即对内存中的报文数据进行读/写操作。一般的,为了加速CPU对内存的访问速度,将内存中的部分数据预先存入高速缓存cache中,CPU通过cache读写内存中的报文数据。因为CPU访问cache的速度要高于直接访问内存的速度,所以通过预存储部分内存数据到cache,能够加速CPU的执行效率。由于DMA控制器和CPU都对内存中的报文数据进行读/写操作,当CPU访问cache中的报文数据时,DMA控制器对内存进行读/写操作从而改变了内存中的报文数据,使得CPU访问的cache中的报文数据和内存中的报文数据不一致。
现有技术在出现CPU访问的cache中的报文数据和内存中的报文数据不一致的情况时,采用如下方式传输报文:当DMA控制器对内存中的报文数据进行读/写操作时,DMA控制器向CPU发送内存被读写的消息,CPU在接收到该消息后,根据该消息中携带的内存中由DMA控制器读/写的数据对应的内存地址,在cache中查找具有相同的内存地址的报文,将在cache中查找到的对应的内存地址的报文设置为无效,并指示cache将内存中相对应的内存地址中的报文重新载入cache中,从而保证cache和内存中的报文数据保持一致。CPU在读取cache中的报文后,根据报文头的内容,对报文头做相应的修改,将修改后的报文(包括报文头和数据内容)写入内存中与报文的内存地址对应的内存报文缓存区中,由DMA控制器将修改后的报文读入网络芯片,由网络芯片转发出去。
上述现有的DMA控制器访问内存时的报文传输方式中,由于CPU在对cache中的报文设置无效的操作,将内存中相对应的内存地址中的报文重新载入cache的过程,会导致大量的内存访问,降低了CPU访问报文的速度,进而增加了CPU处理报文的时间,降低了报文传输的效率。
发明内容
本发明实施例提供一种报文传输方法及装置,用以解决现有技术中存在的当DMA控制器对内存进行读写操作时,CPU对cache中的报文设置无效,将与cache中被无效的报文的地址对应的内存地址中的报文重新载入cache的过程,导致的CPU访问报文速度慢,以及报文传输效率低的问题。
本发明实施例提供一种报文传输方法,包括:
CPU获取直接内存存取DMA控制器读写内存报文的消息,所述消息中携带由DMA控制器读写后的第一报文对应的内存地址;
在高速缓存cache中查找与所述第一报文的内存地址对应的cache地址内的第二报文,所述cache中预存储内存中的报文、报文内存地址、cache地址的对应关系;
当在cache中查找到所述第二报文时,将所述第二报文的报文头配置为无效;
将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
采用本发明实施例提供的方法,由于CPU只对cache中的第二报文的报文头进行无效,以及对第一报文的报文头重新缓存,无需对cache中的报文内容进行无效和重新缓存操作,减少了操作时间,提高了CPU访问报文的速度,从而提高了报文转发的效率。
进一步的,获取直接内存存取DMA控制器读写内存报文的消息,具体包括:
接收当所述DMA控制器读写内存时发送的读写内存报文消息;或者
监测所述DMA控制器对内存的读写报文操作。
进一步的,所述第一报文存储在内存中的一个内存缓冲区中;所述第一报文包含一个报文头。
进一步的,所述第一报文由所述DMA控制器分为多个子报文,分别存储在内存中的多个内存缓冲区中;每个子报文包含一个报文头;
将所述第二报文的报文头配置为无效,具体包括:
将与所述第一报文的各子报文的报文头的内存地址对应的cache地址中所述第二报文中的报文头配置为无效。
进一步的,根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改,具体包括:
根据所述第一报文的各子报文的报文头数据的内容,对与所述第一报文的各子报文的报文头的内存地址对应的所述第二报文中的报文头数据进行相应的修改,并为属于同一报文的报文头添加相同的报文标识,用于所述DMA将具有相同报文标识的子报文重组后从内存中转发出来。
进一步的,上述方法,还包括:
当在cache中未查找到所述第二报文时,将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
本发明实施例提供了一种报文传输装置,包括:
获取单元,用于获取直接内存存取DMA控制器读写内存报文的消息,所述消息中携带由DMA控制器读写后的第一报文对应的内存地址;
查找单元,用于在高速缓存cache中查找与所述第一报文的内存地址对应的cache地址内的第二报文,所述cache中预存储内存中的报文、报文内存地址、cache地址的对应关系;
配置单元,用于当在cache中查找到所述第二报文时,将所述第二报文的报文头配置为无效;
第一缓存单元,用于将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
第一修改单元,用于根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
第一更新单元,用于使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
采用本发明实施例提供的装置,由于只对cache中的第二报文的报文头进行无效,以及对第一报文的报文头重新缓存,无需对cache中的报文内容进行无效和重新缓存操作,减少了操作时间,提高了CPU访问报文的速度,从而提高了报文转发的效率。
进一步的,所述获取单元,具体用于接收当所述DMA控制器读写内存时发送的读写内存报文消息;或者监测所述DMA控制器对内存的读写报文操作。
进一步的,所述第一报文存储在内存中的一个内存缓冲区中;所述第一报文包含一个报文头。
进一步的,所述第一报文由所述DMA控制器分为多个子报文,分别存储在内存中的多个内存缓冲区中;每个子报文包含一个报文头;
所述配置单元,具体用于将与所述第一报文的各子报文的报文头的内存地址对应的cache地址中所述第二报文中的报文头配置为无效。
进一步的,所述修改单元,具体用于根据所述第一报文的各子报文的报文头数据的内容,对与所述第一报文的各子报文的报文头的内存地址对应的所述第二报文中的报文头数据进行相应的修改,并为属于同一报文的报文头添加相同的报文标识,用于所述DMA将具有相同报文标识的子报文重组后从内存中转发出来。
进一步的,上述装置,还包括:
第二缓存单元,用于当在cache中未查找到所述第二报文时,将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
第二修改单元,用于根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
第二更新单元,用于使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的报文传输方法的流程图;
图2为本发明实施例1提供的报文传输方法的流程图;
图3为本发明实施例2提供的报文传输方法的流程图;
图4为本发明实施例3提供的报文传输装置的结构示意图。
具体实施方式
为了给出当DMA控制器对内存进行读写操作时,提高CPU访问数据的速度以及提高数据传输效率的的实现方案,本发明实施例提供了一种数据传输方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供一种报文传输方法,如图1所示,包括:
步骤101、CPU获取直接内存存取DMA控制器读写内存报文的消息,该消息中携带由DMA控制器读写后的第一报文对应的内存地址。
步骤102、在高速缓存cache中查找与该第一报文的内存地址对应的cache地址内的第二报文,cache中预存储内存中的报文、报文内存地址、cache地址的对应关系。
步骤103、当在cache中查找到所述第二报文时,将第二报文的报文头配置为无效。
步骤104、将内存中的第一报文的报文头数据重新缓存到cache中。
步骤105、根据第一报文的报文头数据的内容,对cache中报文头数据进行相应的修改。
步骤106、使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
本发明实施例中,网络设备上的直接内存存取(DMA,Direct Memory Access)可以将网络设备从外部接收的报文写入内存中,或者将内存中的报文传输给网络设备,其中,网络设备可以为有线的或无线的网络芯片。CPU对内存进行访问时,为了加速访问内存速度,将内存中的部分数据预先存入高速缓存cache中,cache中缓存的内存数据大小,可以由CPU根据实际情况进行设置。
DMA控制器在将网络设备从外部接收的报文写入内存时,存储在内存的内存缓冲区中,内存中包含多个内存缓冲区,如果DMA控制器写入内存的报文很大,一个内存缓冲区中的存储空间无法存储该报文,那么DMA控制器可以将该报文分为多个子报文,将每个子报文分别对应存储在不同内存缓冲区中,每个子报文包含一个报文头。
下面结合附图,用具体实施例对本发明提供的方法及装置进行详细描述。
实施例1:
本发明实施例以DMA控制器将网络设备从外部接收的报文写入内存的一个内存缓冲区中为例,每一个内存缓冲区中的报文包含报文头,图2为本发明实施例提供的报文传输方法的流程图,具体包括如下处理步骤:
步骤201、CPU获取直接内存存取DMA控制器发送的读写内存报文的消息。
其中,该消息中携带有DMA控制器读写后的第一报文对应的内存地址。
本步骤中,CPU可以通过两种方式获取DMA控制器发送的读写内存报文的消息,具体如下:
第一种方式:DMA控制器在读写内存报文时,向CPU发送读写内存报文的消息;
第二种方式:CPU监测DMA控制器对内存的读写报文操作。具体的,CPU可以通过向DMA控制器轮询的方式确定DMA控制器是否读写内存报文。
步骤202、CPU在cache中查找是否存在与该第一报文的内存地址对应的cache地址内的第二报文,如果是,进入步骤203,如果否,进入步骤205。
其中,cache中预存储了内存中的内存段的报文、报文内存地址、内存中报文存储在cache中的cache地址之间的对应关系。内存地址和cache地址具有预设的对应关系。cache中一般存储内存的部分内存段,因此,如果第一报文的内存地址有映射到cache中,即在cache中能够查找到与该第一报文的内存地址对应的cache地址内的第二报文,进入步骤203;如果第一报文的内存地址在cache中无映射,即在在cache中未查找到与该第一报文的内存地址对应的cache地址内的第二报文,进入步骤205。
步骤203、CPU将查找到的第二报文的报文头配置为无效。
本步骤中,在DMA控制器对内存中写入报文之前,内存中的报文数据与cache中的报文数据相同。当DMA控制器对内存进行读写时,第一报文为DMA控制器对内存进行读写后的报文,是内存中已改变的报文数据,而此时cache中的与第一报文的内存地址对应的cache地址内的第二报文,仍然是DMA控制器对内存读写之前该内存地址内未改变的报文,因此cache中的报文数据与内存中的报文数据不一致。
步骤204、CPU将内存中的第一报文的报文头数据重新缓存到cache中,并进入步骤206。
步骤205、CPU将内存中的第一报文的报文头数据缓存到cache中,并进入步骤206。
步骤206、CPU读取cache中缓存的第一报文的报文头,根据该第一报文的报文头数据的内容,对cache中的该报文头数据进行相应的修改。
具体的,以无线报文为例,需要用RX Header搜集射频相关信息等,802.11头部要进行一系列无线相关的操作,如报文的检查、关联操作、节电处理等,如果需要转发到有线口,802.11头部会被修改为802.3的头部。
步骤207、CPU使用cache中修改后的报文头数据更新内存中的第一报文的报文头数据。
步骤208、CPU在更新内存中的第一报文的报文头数据后,向DMA控制器发送该第一报文已修改的消息。
步骤209、DMA控制器接收到该第一报文已修改的消息后,将修改后的第一报文读入网络设备进行转发。
通过本发明实施例提供的方法,由于CPU只对cache中的第二报文的报文头进行无效,以及对第一报文的报文头重新缓存,无需对cache中的报文内容进行无效和重新缓存操作,减少了操作时间,提高了CPU访问报文的速度,从而提高了报文转发的效率。
实施例2:
本发明实施例以DMA控制器将网络设备从外部接收的报文分为多个子报文,每一个子报文对应存储在一个内存缓冲区中为例,每一个内存缓冲区中的子报文包含报文头,图3为本发明实施例提供的报文传输方法的流程图,具体包括如下处理步骤:
步骤301、当DMA控制器确定网络设备从外部接收的报文的大小大于报文阈值时,将报文分为预设数量子报文,并将每个子报文分别对应写入不同的内存缓冲区中。
步骤302、CPU获取直接内存存取DMA控制器发送的读写内存报文的消息。
其中,该消息中携带有DMA控制器读写后的第一报文的各子报文对应的内存地址。
具体的,CPU获取DMA控制器发送的读写内存报文的消息的方式与上述实施例1中步骤201采用的方式相同,在此不再进行详细描述。
步骤303、CPU在cache中查找是否存在与该第一报文的各子报文的内存地址对应的cache地址内的第二报文,如果是,进入步骤304,如果否,进入步骤306。
其中,cache中预存储了内存中的内存段的报文、报文内存地址、内存中报文存储在cache中的cache地址之间的对应关系。内存地址和cache地址具有预设的对应关系。cache中一般存储内存的部分内存段,因此,如果第一报文的内存地址有映射到cache中,即在cache中能够查找到与该第一报文的内存地址对应的cache地址内的第二报文,进入步骤304;如果第一报文的内存地址在cache中无映射,即在在cache中未查找到与该第一报文的内存地址对应的cache地址内的第二报文,进入步骤306。
步骤304、将与第一报文的各子报文的报文头的内存地址对应的cache地址中第二报文中的报文头配置为无效。
本步骤中,在DMA控制器对内存中写入报文之前,内存中的报文数据与cache中的报文数据相同。当DMA控制器对内存进行读写时,第一报文为DMA控制器对内存进行读写后的报文,是内存中已改变的报文数据,而此时cache中的与第一报文的内存地址对应的cache地址内的第二报文,仍然是DMA控制器对内存读写之前该内存地址内未改变的报文,因此cache中的报文数据与内存中的报文数据不一致。
步骤305、CPU将内存中的第一报文的各子报文的报文头数据重新缓存到cache中,并进入步骤307。
步骤306、CPU将内存中的第一报文的各子报文的报文头数据缓存到cache中,并进入步骤307。
步骤307、CPU读取cache中缓存的第一报文的各子报文的报文头,根据各子报文的报文头数据的内容,对与第一报文的各子报文的报文头的内存地址对应的cache中的报文头数据进行相应的修改,并为属于同一报文的报文头添加相同的报文标识。
具体的,以无线报文为例,需要用RX Header搜集射频相关信息等,802.11头部要进行一系列无线相关的操作,如报文的检查、关联操作、节电处理等,如果需要转发到有线口,802.11头部会被修改为802.3的头部。
步骤308、CPU使用cache中修改后的报文头数据更新内存中的第一报文的各子报文的报文头数据。
步骤309、CPU在更新内存中的第一报文的各子报文的报文头数据后,向DMA控制器发送该第一报文已修改的消息。
步骤310、DMA控制器接收到该第一报文已修改的消息后,将修改后的具有相同报文标识的子报文重组,将重组后的报文读入网络设备进行转发。
通过本发明实施例提供的方法,由于CPU只对cache中的第二报文的报文头进行无效,以及对第一报文的报文头重新缓存,无需对cache中的报文内容进行无效和重新缓存操作,减少了操作时间,提高了CPU访问报文的速度,从而提高了报文转发的效率。
实施例3:
基于同一发明构思,根据本发明上述实施例提供的报文传输方法,相应地,本发明另一实施例还提供了报文传输装置,其结构示意图如图4所示,具体包括:
获取单元401,用于获取直接内存存取DMA控制器读写内存报文的消息,所述消息中携带由DMA控制器读写后的第一报文对应的内存地址;
查找单元402,用于在高速缓存cache中查找与所述第一报文的内存地址对应的cache地址内的第二报文,所述cache中预存储内存中的报文、报文内存地址、cache地址的对应关系;
配置单元403,用于当在cache中查找到所述第二报文时,将所述第二报文的报文头配置为无效;
第一缓存单元404,用于将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
第一修改单元405,用于根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
第一更新单元406,用于使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
进一步的,获取单元401,具体用于接收当所述DMA控制器读写内存时发送的读写内存报文消息;或者监测所述DMA控制器对内存的读写报文操作。
进一步的,所述第一报文存储在内存中的一个内存缓冲区中;所述第一报文包含一个报文头。
进一步的,所述第一报文由所述DMA控制器分为多个子报文,分别存储在内存中的多个内存缓冲区中;每个子报文包含一个报文头;
配置单元403,具体用于将与所述第一报文的各子报文的报文头的内存地址对应的cache地址中所述第二报文中的报文头配置为无效。
进一步的,第一修改单元405,具体用于根据所述第一报文的各子报文的报文头数据的内容,对与所述第一报文的各子报文的报文头的内存地址对应的所述第二报文中的报文头数据进行相应的修改,并为属于同一报文的报文头添加相同的报文标识,用于所述DMA将具有相同报文标识的子报文重组后从内存中转发出来。
进一步的,上述装置,还包括:
第二缓存单元407,用于当在cache中未查找到所述第二报文时,将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
第二修改单元408,用于根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
第二更新单元409,用于使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
上述各单元的功能可对应于图1至图3所示流程中的相应处理步骤,在此不再赘述。
综上所述,本发明实施例提供的方案,CPU获取直接内存存取DMA控制器读写内存报文的消息,消息中携带由DMA控制器读写后的第一报文对应的内存地址;在高速缓存cache中查找与第一报文的内存地址对应的cache地址内的第二报文,cache中预存储内存中的报文、报文内存地址、cache地址的对应关系;将第二报文的报文头配置为无效;将内存中的第一报文的报文头数据重新缓存到cache中;根据第一报文的报文头数据的内容,对cache中报文头数据进行相应的修改;使用cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过DMA控制器转发。采用本发明实施例提供的方案,提高了CPU访问报文的速度,从而提高了报文转发的效率。
本申请的实施例所提供的报文传输装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要报文传输装置具有上述功能,都应该在本申请的保护范围之内。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种报文传输方法,其特征在于,包括:
CPU获取直接内存存取DMA控制器读写内存报文的消息,所述消息中携带由DMA控制器读写后的第一报文对应的内存地址;
在高速缓存cache中查找与所述第一报文的内存地址对应的cache地址内的第二报文,所述cache中预存储内存中的报文、报文内存地址、cache地址的对应关系;
当在cache中查找到所述第二报文时,将所述第二报文的报文头配置为无效;
将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
2.如权利要求1所述的方法,其特征在于,获取直接内存存取DMA控制器读写内存报文的消息,具体包括:
接收当所述DMA控制器读写内存时发送的读写内存报文消息;或者
监测所述DMA控制器对内存的读写报文操作。
3.如权利要求1所述的方法,其特征在于,所述第一报文存储在内存中的一个内存缓冲区中;所述第一报文包含一个报文头。
4.如权利要求1所述的方法,其特征在于,所述第一报文由所述DMA控制器分为多个子报文,分别存储在内存中的多个内存缓冲区中;每个子报文包含一个报文头;
将所述第二报文的报文头配置为无效,具体包括:
将与所述第一报文的各子报文的报文头的内存地址对应的cache地址中所述第二报文中的报文头配置为无效。
5.如权利要求4所述的方法,其特征在于,根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改,具体包括:
根据所述第一报文的各子报文的报文头数据的内容,对与所述第一报文的各子报文的报文头的内存地址对应的所述第二报文中的报文头数据进行相应的修改,并为属于同一报文的报文头添加相同的报文标识,用于所述DMA将具有相同报文标识的子报文重组后从内存中转发出来。
6.如权利要求1所述的方法,其特征在于,还包括:
当在cache中未查找到所述第二报文时,将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
7.一种报文传输装置,其特征在于,包括:
获取单元,用于获取直接内存存取DMA控制器读写内存报文的消息,所述消息中携带由DMA控制器读写后的第一报文对应的内存地址;
查找单元,用于在高速缓存cache中查找与所述第一报文的内存地址对应的cache地址内的第二报文,所述cache中预存储内存中的报文、报文内存地址、cache地址的对应关系;
配置单元,用于当在cache中查找到所述第二报文时,将所述第二报文的报文头配置为无效;
第一缓存单元,用于将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
第一修改单元,用于根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
第一更新单元,用于使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
8.如权利要求7所述的装置,其特征在于,所述获取单元,具体用于接收当所述DMA控制器读写内存时发送的读写内存报文消息;或者监测所述DMA控制器对内存的读写报文操作。
9.如权利要求7所述的装置,其特征在于,所述第一报文存储在内存中的一个内存缓冲区中;所述第一报文包含一个报文头。
10.如权利要求7所述的装置,其特征在于,所述第一报文由所述DMA控制器分为多个子报文,分别存储在内存中的多个内存缓冲区中;每个子报文包含一个报文头;
所述配置单元,具体用于将与所述第一报文的各子报文的报文头的内存地址对应的cache地址中所述第二报文中的报文头配置为无效。
11.如权利要求10所述的装置,其特征在于,所述修改单元,具体用于根据所述第一报文的各子报文的报文头数据的内容,对与所述第一报文的各子报文的报文头的内存地址对应的所述第二报文中的报文头数据进行相应的修改,并为属于同一报文的报文头添加相同的报文标识,用于所述DMA将具有相同报文标识的子报文重组后从内存中转发出来。
12.如权利要求7所述的装置,其特征在于,还包括:
第二缓存单元,用于当在cache中未查找到所述第二报文时,将内存中的所述第一报文的报文头数据重新缓存到所述cache中;
第二修改单元,用于根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;
第二更新单元,用于使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410745282.8A CN104394099B (zh) | 2014-12-08 | 2014-12-08 | 一种报文传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410745282.8A CN104394099B (zh) | 2014-12-08 | 2014-12-08 | 一种报文传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104394099A CN104394099A (zh) | 2015-03-04 |
CN104394099B true CN104394099B (zh) | 2017-09-19 |
Family
ID=52611935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410745282.8A Active CN104394099B (zh) | 2014-12-08 | 2014-12-08 | 一种报文传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104394099B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589764B (zh) * | 2015-12-10 | 2018-10-09 | 新华三技术有限公司 | Cpu异常处理方法及装置 |
US10554548B2 (en) * | 2016-06-30 | 2020-02-04 | Futurewei Technologies, Inc. | Partially deferred packet access |
CN111026324B (zh) * | 2018-10-09 | 2021-11-19 | 华为技术有限公司 | 转发表项的更新方法及装置 |
CN116339611A (zh) * | 2021-12-22 | 2023-06-27 | 华为技术有限公司 | 缓存管理的方法、装置、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707565A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 零拷贝网络报文发送、接收方法和装置 |
CN102523168A (zh) * | 2011-12-23 | 2012-06-27 | 福建星网锐捷网络有限公司 | 一种传输报文的方法及装置 |
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及系统 |
-
2014
- 2014-12-08 CN CN201410745282.8A patent/CN104394099B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707565A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 零拷贝网络报文发送、接收方法和装置 |
CN102523168A (zh) * | 2011-12-23 | 2012-06-27 | 福建星网锐捷网络有限公司 | 一种传输报文的方法及装置 |
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104394099A (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104394099B (zh) | 一种报文传输方法及装置 | |
US10042576B2 (en) | Method and apparatus for compressing addresses | |
KR102147356B1 (ko) | 캐시 메모리 시스템 및 그 동작방법 | |
KR20160060551A (ko) | 솔리드 스테이트 드라이브 메모리 캐시 점유 예측 시스템 및 그 방법 | |
CN105677580A (zh) | 访问缓存的方法和装置 | |
CN104520824A (zh) | 为缓存一致性处理缓存回写和缓存淘汰 | |
CN107590099A (zh) | 一种多主机访问从机的方法、扩展装置及存储介质 | |
TWI502346B (zh) | 根據窺探回應資訊之目錄快取分配技術 | |
CN105278918B (zh) | 寄存器的读取方法和采用该读取方法的寄存器 | |
CN105359122B (zh) | 多cpu系统中的增强型数据传输 | |
CN102314400A (zh) | 一种分散聚合式dma方法及装置 | |
CN104833055A (zh) | 多联机空调系统数据传输的方法和装置 | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及系统 | |
US9606926B2 (en) | System for pre-fetching data frames using hints from work queue scheduler | |
KR102523418B1 (ko) | 프로세서 및 프로세서에서 데이터를 처리하는 방법 | |
CN103995789B (zh) | 一种直接内存存取的实现系统及方法 | |
CN106372013B (zh) | 远程内存访问方法、装置和系统 | |
US10061513B2 (en) | Packet processing system, method and device utilizing memory sharing | |
CN104699649A (zh) | 一种多分支串行总线接口及数据交换方法 | |
CN102006285A (zh) | 一种用于网络安全设备的报文处理方法及装置 | |
CN103368944A (zh) | 一种内存共享网络架构及其协议规范 | |
CN103823444B (zh) | 半导体设备的上下位机的通信方法和通信系统 | |
CN105024899B (zh) | 一种支持Modbus和PPI协议复用的实时串行通信系统 | |
US9612950B2 (en) | Control path subsystem, method and device utilizing memory sharing | |
US9582215B2 (en) | Packet processing system, method and device utilizing memory sharing |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |