一种报文传输方法及装置制造方法及图纸

技术编号:11108410 阅读:83 留言:0更新日期:2015-03-04 21:47
本发明专利技术公开了一种报文传输方法及装置,包括:CPU获取直接内存存取DMA控制器读写内存报文的消息,消息中携带由DMA控制器读写后的第一报文对应的内存地址;在高速缓存cache中查找与第一报文的内存地址对应的cache地址内的第二报文;将第二报文的报文头配置为无效;将内存中的第一报文的报文头数据重新缓存到cache中;根据第一报文的报文头数据的内容,对cache中报文头数据进行相应的修改;使用cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过DMA控制器转发。采用本发明专利技术实施例提供的方案,提高了CPU访问报文的速度,从而提高了报文转发的效率。

【技术实现步骤摘要】
一种报文传输方法及装置
本专利技术涉及无线通信
,尤其涉及一种报文传输方法及装置。
技术介绍
当网络设备对报文进行转发时,网络芯片内的直接内存存取(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地址中所述第二报文中的报文头配置为无效。 进一步的,所述修改单元,具体用于根据所述第一报文的各子报文的报文头数据的内容,对与所述第一报文的各子报文的报文本文档来自技高网
...
一种报文传输方法及装置

【技术保护点】
一种报文传输方法,其特征在于,包括:CPU获取直接内存存取DMA控制器读写内存报文的消息,所述消息中携带由DMA控制器读写后的第一报文对应的内存地址;在高速缓存cache中查找与所述第一报文的内存地址对应的cache地址内的第二报文,所述cache中预存储内存中的报文、报文内存地址、cache地址的对应关系;当在cache中查找到所述第二报文时,将所述第二报文的报文头配置为无效;将内存中的所述第一报文的报文头数据重新缓存到所述cache中;根据所述第一报文的报文头数据的内容,对cache中所述报文头数据进行相应的修改;使用所述cache中的修改后的报文头数据更新内存中的第一报文的报文头数据,并通过所述DMA控制器转发。

【技术特征摘要】
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....

【专利技术属性】
技术研发人员:王靖天
申请(专利权)人:福建星网锐捷网络有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1