CN101494569B - 一种报文处理方法和装置 - Google Patents
一种报文处理方法和装置 Download PDFInfo
- Publication number
- CN101494569B CN101494569B CN2009100045092A CN200910004509A CN101494569B CN 101494569 B CN101494569 B CN 101494569B CN 2009100045092 A CN2009100045092 A CN 2009100045092A CN 200910004509 A CN200910004509 A CN 200910004509A CN 101494569 B CN101494569 B CN 101494569B
- Authority
- CN
- China
- Prior art keywords
- message
- buffer
- message buffer
- processing unit
- keep
- 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
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及通信领域,解决现有技术中对所有报文均采用两个报文缓冲区复制报文,而如果在复制过程中申请新的报文缓冲区失败,会导致保活报文处理失败的问题,提供了一种报文处理方法和装置,该接收方法包括:将接收到的报文存储于报文缓冲区中;判断所述报文缓冲区中的报文类型是否为预定义类型;将符合预定义类型报文所在的报文缓冲区投递给相应的处理单元。本发明的有益效果在于,可以针对不同的报文,直接将该报文从报文缓冲区投递到报文处理单元,减少接收报文时所使用的报文缓冲区的资源。
Description
技术领域
本发明涉及通信领域,具体的讲是一种报文处理方法和装置。
背景技术
保活对一些分布式系统很重要(保活,即两个设备实体为了知道对方的工作状态而进行的检测机制),通过它通讯的两端可以互相知道对方的工作状态。比如TCP协议就需要保活,建立连接的通讯双方每隔一定时间会向对方发出保活报文,如果没有这个保活报文,如果通讯的一方因为掉电或者死机不在了,另一方将永远等待,那么该连接占用的资源将永远无法被清掉。
如图1所示为现有技术中保活报文的处理流程图。定义两个设备实体A和B,A和B各自独立运行自己的软件系统,A和B通过他们之间的互联网络来通讯。
A每隔一段时间(比如1秒)向B发送一个保活报文。
B的硬件接收到这个报文,存储于硬件收帧缓冲区中空闲的报文缓冲区Q1中,并将Q1置为非空闲状态。然后重新申请一个硬件收帧缓冲区外的报文缓冲区R1,该报文缓冲区R1不属于所述硬件收帧缓冲区,如果申请失败,则将Q1恢复为空闲状态,直接结束。
如果成功则复制Q1的内容到R1中,其中,网络上报文的接收都是通过收帧缓冲区来接收的,为了避免收帧缓冲区中的报文缓冲区被协议栈上的其它报文处理单元持久占用,导致无法继续收帧,因此需要进行复制。将Q1置为空闲状态。然后将R1传递给保活处理单元,保活处理单元更新最近收到A保活报文的时间,然后释放掉R1,最后结束。
B每隔一段时间(大于A发送的间隔)会去检测一下在这段时间内是否收到A发来的保活报文,如果没有则认为保活失败,否则认为本次保活成功。同样A对B保活也是一样的过程。
所述的报文缓冲区是用于交换机保存从网络上收上来和要发送出去的报文,每个报文缓冲区保存一个报文,每个报文缓冲区都占用一定的内存大小,因此受到系统内存大小的限制,系统可以容纳的报文缓冲区的数目是有限的。
收帧缓冲区是指硬件收帧时用到的一个数据结构,里面有固定数目的报文缓冲区及每个报文缓冲区的状态信息(比如是否空闲)。收帧单元在收帧时会读取报文缓冲区的状态,寻找第一个空闲的报文缓冲区,并把收到的报文写入其中,并将报文缓冲区的状态置为非空闲;当报文的处理单元对该报文进行处理后,由该收帧单元将所述报文缓冲区置为空闲状态。如果没有空闲的报文缓冲区,硬件将无法收帧。该缓冲区在硬件驱动初始化的时候申请,为了保证硬件收帧的效率,里面的这些报文缓冲区永远不能被释放。
本发明的发明人在实现本发明的过程中发现现有技术至少存在以下不足,申请报文缓冲区R1时如果失败,则会直接导致Q1被置为空闲状态,本次保活操作将会结束,而如果在B的检测例程两次检测的时间间隔内,连续的出现报文缓冲区申请失败的情况,就会导致保活失败。设备实体B就会认为设备实体A不存在,从而中断两个设备实体的通信。
发明内容
本发明实施例的目的在于提供一种报文处理方法和装置,用于解决现有技术中对所有报文均采用两个报文缓冲区复制报文,而如果在复制过程中申请新的报文缓冲区失败,会导致保活报文处理失败的问题。
为了解决上述现有问题,本发明实施例提供了一种报文处理方法,该方法包括:将接收到的报文存储于硬件收帧缓冲区中的报文缓冲区中;判断所述报文缓冲区中的报文类型是否为预定义类型;将符合预定义类型报文所在的报文缓冲区投递给相应的处理单元。
为了解决上述现有问题,本发明实施例还提供了一种报文处理装置,该装置包括:报文接收单元,用于接收报文,并将所述报文存储于硬件收帧缓冲区中的报文缓冲区;判断单元,用于判断所述报文缓冲区中存储报文的类型是否为预定义的报文类型;报文处理单元,用于根据所述判断结果,将所述符合预定类型的报文进行相应处理。
本发明实施例的有益效果在于,可以针对不同的报文,即对处理简单的报文不进行报文缓冲区的复制,直接将该报文从报文缓冲区投递到报文处理单元,减少接收报文时所使用的报文缓冲区的资源。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1所示为现有技术中保活报文的处理流程图;
图2所示为本发明报文处理方法的实施例流程图;
图3所示为本发明保活报文处理方法的实施例流程图;
图4所示为本发明状态查询报文处理方法的实施例流程图;
图5所示为本发明报文处理方法中发送报文的实施例流程图;
图6所示为本发明保活报文处理方法中发送保活报文实施例流程图;
图7所示为本发明状态查询报文处理方法中发送状态响应报文实施例流程图;
图8所示为本发明报文处理装置的实施例示意图;
图9所示为本发明报文处理装置中发送报文部分的实施例示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例提供一种报文处理方法和装置。以下结合附图对本发明进行详细说明。
如图2所示为本发明报文处理方法的实施例流程图。
步骤201,将接收到的报文存储于硬件收帧缓冲区中的报文缓冲区中。
步骤202,判断所述报文缓冲区中的报文类型是否为预定义类型。
步骤203,将符合预定义类型报文所在的报文缓冲区投递给相应的处理单元。
作为本发明的一个实施例,所述报文类型包括保活报文。
作为本发明的一个实施例,在所述步骤203之后还包括,所述相应的处理单元处理完成后,将所述报文缓冲区置为空闲状态。
作为本发明的一个实施例,所述相应的处理单元包括:保活处理单元。
作为本发明的一个实施例,所述步骤202中,如果所述报文的类型不是所述预定义类型则申请第二报文缓冲区,将所述报文缓冲区中的报文复制到第二报文缓冲区中,并将该第二报文缓冲区投递给相应的处理单元进行处理,即使用现有技术中的报文接收处理流程进行处理。
如图3所示为本发明保活报文处理方法的实施例流程图。
步骤301,将接收到的帧存放于硬件收帧缓冲区中空闲的报文缓冲区,将该报文缓冲区置为非空闲状态。
步骤302,判断所述帧是否为保活报文。其中可以通过判断报文特定比特位以识别所述保活报文。如果为保活报文则进入步骤303。
步骤303,将所述报文缓冲区中的保活报文发送给保活处理单元。
作为本发明的一个实施例,在所述步骤303之后还包括,所述保活处理单元根据所述保活报文进行保活处理后,将所述报文缓冲区置为空闲状态。
作为本发明的一个实施例,所述步骤302中,如果所述报文不是保活报文则申请第二报文缓冲区,所述第二报文缓冲区不属于所述硬件收帧缓冲区,将所述报文缓冲区的内容复制到所述第二报文缓冲区,并对该第二报文缓冲区中的报文内容进行处理。即现有技术中对接收到报文的处理流程。
在本发明实施例中,在接收保活报文等只需要做简单处理的特定报文时,利用特定的缓冲区进行存储,所述缓冲区不会在每次报文处理完成后就被释放,因此不会造成由于申请报文缓冲区不成功的情况下,保活报文等特定报文接收不成功的不足,从而避免了由于没有成功接收保活报文造成误认为发送方不存在,而影响通信。
如图4所示为本发明状态查询报文处理方法的实施例流程图。
机箱式交换机有管理板和线卡,管理板负责管理整个交换机系统,所述线卡用于连接所述交换机的网线接口。所述管理板需要随时获取所述线卡的状态信息,所以要随时向线卡发送状态查询报文,线卡接收到状态查询报文后进行如下步骤:
步骤401,将接收到的帧存放于硬件收帧缓冲区中空闲的报文缓冲区,将该报文缓冲区置为非空闲状态。
步骤402,判断所述帧是否为状态查询报文。其中可以通过判断报文特定比特位以识别所述状态查询报文。如果为状态查询报文则进入步骤403。
步骤403,将所述报文缓冲区中的状态查询报文发送给状态处理单元。
由状态处理单元向管理板返回状态信息。
如图5所示为本发明报文处理方法中发送报文的实施例流程图。
步骤501,在硬件初始化时在内存中申请至少一个报文缓冲区。
步骤502,将所述报文缓冲区内填充要发送的报文。
步骤503,发送所述报文。
作为本发明的一个实施例,所述步骤501中,所述在硬件初始化时申请至少一个报文缓冲区是指,在各种业务运行前申请所述至少一个报文缓冲区。
作为本发明的一个实施例,所述报文包括:保活报文。
作为本发明的一个实施例,在所述发送报文之后还包括,重复利用所述报文缓冲区,并不释放所述报文缓冲区。
如图6所示为本发明保活报文处理方法中发送保活报文实施例流程图。
步骤601,在硬件初始化时申请至少一个报文缓冲区。
步骤602,将保活报文填充到所述报文缓冲区。
步骤603,调用硬件发送所述报文缓冲区内的保活报文。
作为本发明的一个实施例,在预定时间间隔后,例如1秒之后重复执行步骤602和步骤603,重复发送保活报文。
在本发明实施例中,在发送保活报文等需要重复发送的特定报文时,利用特定的缓冲区进行存储,所述缓冲区不会在每次发送完报文后就被释放,因此不会造成由于申请报文缓冲区不成功的情况下,保活报文等特定报文发送不成功的不足,从而避免了由于没有成功发送保活报文造成了对方设备实体误认为发送方不存在,而影响通信。
如图7所示为本发明状态查询报文处理方法中发送状态响应报文实施例流程图。
在管理板端进行如下步骤:
步骤701,在硬件初始化时申请至少一个报文缓冲区。
步骤702,将状态查询报文填充到所述报文缓冲区。
步骤703,调用硬件发送所述报文缓冲区内的状态查询报文。
作为本发明的一个实施例,在预定时间间隔后,例如1秒之后重复执行步骤702和步骤703,重复发送状态查询报文到状态处理单元。
如图8所示为本发明报文处理装置的实施例示意图。
包括报文接收单元801,报文缓冲区802,判断单元803,报文处理单元804。
所述报文接收单元801,用于接收所述报文,并将所述报文存储于硬件收帧缓冲区中的所述报文缓冲区802。
所述判断单元803,用于判断所述报文缓冲区802中报文的类型是否为预定义的报文类型。
所述报文处理单元804,用于根据所述判断结果,将所述符合预定类型的报文进行相应处理。
作为本发明的一个实施例,还包括报文复制单元,用于根据所述判断结果,将所述报文缓冲区802中的报文复制到第二报文缓冲区中,并将该第二报文缓冲区投递给相应的报文处理单元进行处理,即使用现有技术中的报文处理单元进行处理。
作为本发明的一个实施例,所述报文处理单元包括,保活处理单元。
如图9所示为本发明报文处理装置中发送报文部分的实施例示意图。
包括缓存申请单元901,报文缓冲区902,报文填充单元903,发送单元904。
所述缓存申请单元901,用于在硬件初始化时申请至少一个报文缓冲区902。
所述报文填充单元903,用于将所述报文缓冲区902内填充要发送的报文。
所述发送单元904,用于将所述报文发送出去。
本发明的实施例的有益效果在于,取消了现有技术中对所有报文均采用两个报文缓冲区复制报文,而在复制过程中申请新的报文缓冲区失败,从而导致保活报文处理失败的问题。并且可以针对不同的报文,即对处理简单的报文不进行报文缓冲区的复制,直接将该报文从报文缓冲区投递到报文处理单元,减少接收报文时所使用的报文缓冲区的资源。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种报文处理的方法,其特征在于该方法包括:
将接收到的报文存储于硬件收帧缓冲区中的报文缓冲区中;
判断所述报文缓冲区中的报文类型是否为预定义类型;
将符合预定义类型的报文投递给相应的处理单元;
如果所述报文的类型不是所述预定义类型,则申请第二报文缓冲区,将所述报文缓冲区中的报文复制到第二报文缓冲区中,并从该第二报文缓冲区投递给相应的处理单元进行处理。
2.根据权利要求1所述的方法,其特征在于,所述预定义类型报文包括保活报文或者状态查询报文。
3.根据权利要求1所述的方法,其特征在于,所述相应的处理单元包括:保活处理单元。
4.根据权利要求1所述的方法,其特征在于,还包括发送报文的步骤:
在硬件初始化时,申请至少一个报文缓冲区;
将所述报文缓冲区内填充要发送的报文;
发送所述报文。
5.根据权利要求4所述的方法,其特征在于,所述在硬件初始化时申请至少一个报文缓冲区是指,在各种业务运行前申请所述至少一个报文缓冲区。
6.根据权利要求5所述的方法,其特征在于,在所述发送报文之后还包括,不释放所述报文缓冲区,重复利用所述报文缓冲区。
7.一种报文处理装置,其特征在于该装置包括:
报文接收单元,用于接收报文,并将所述报文存储于硬件收帧缓冲区中的报文缓冲区;
判断单元,用于判断所述报文缓冲区中存储报文的类型是否为预定义的报文类型;
将符合预定义类型的报文投递给相应的处理单元;
如果所述报文的类型不是所述预定义类型,则申请第二报文缓冲区,将所述报文缓冲区中的报文复制到第二报文缓冲区中,并从该第二报文缓冲区投递给相应的处理单元进行处理;
报文处理单元,用于根据所述判断结果,将所述符合预定义类型的报文进行相应处理。
8.根据权利要求7所述的装置,其特征在于,所述报文处理单元包括保活处理单元。
9.根据权利要求7所述的装置,其特征在于,该装置还包括:
缓存申请单元,用于在硬件初始化时,申请至少一个报文缓冲区;
报文填充单元,用于将所述报文缓冲区内填充要发送的报文;
发送单元,用于将所述报文发送出去。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100045092A CN101494569B (zh) | 2009-03-06 | 2009-03-06 | 一种报文处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100045092A CN101494569B (zh) | 2009-03-06 | 2009-03-06 | 一种报文处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101494569A CN101494569A (zh) | 2009-07-29 |
CN101494569B true CN101494569B (zh) | 2011-08-17 |
Family
ID=40924985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100045092A Active CN101494569B (zh) | 2009-03-06 | 2009-03-06 | 一种报文处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101494569B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104038440B (zh) * | 2014-06-23 | 2017-07-25 | 福建星网锐捷网络有限公司 | 一种报文转发的方法和设备 |
CN108270589B (zh) * | 2016-12-30 | 2021-06-15 | 北京华为数字技术有限公司 | 一种报文处理方法及相关装置 |
CN109286539B (zh) * | 2018-10-31 | 2020-06-12 | 迈普通信技术股份有限公司 | 检测发送异常的方法、装置、通信设备及可读存储介质 |
-
2009
- 2009-03-06 CN CN2009100045092A patent/CN101494569B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101494569A (zh) | 2009-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7487424B2 (en) | Bitmap manager, method of allocating a bitmap memory, method of generating an acknowledgement between network entities, and network entity implementing the same | |
CN101877604B (zh) | 一种传输文件的方法及系统 | |
CN104092717B (zh) | 消息处理方法及系统、消息目的端设备 | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
CN103856440A (zh) | 一种基于分布式总线的消息处理方法、服务器和系统 | |
CN103957155A (zh) | 报文传输方法、装置及互联接口 | |
CN103905300A (zh) | 一种数据报文发送方法、设备及系统 | |
CN106331190A (zh) | Ip地址回收方法、装置及动态主机配置协议服务器 | |
CN103188059A (zh) | 快速通道互联系统中数据包重传方法、装置和系统 | |
CN102479159A (zh) | 多进程harq数据的缓存方法和设备 | |
CN101494569B (zh) | 一种报文处理方法和装置 | |
CN102612143A (zh) | 资源请求的处理方法、用户设备及通信系统 | |
CN101448022B (zh) | 互联网小型计算机系统接口接收端窗口控制方法及装置 | |
CN101631353B (zh) | 一种状态分组数据单元的管理方法和装置 | |
CN101001213B (zh) | 一种短消息传输系统及方法 | |
CN101588297A (zh) | 业务消息包处理方法、业务消息包处理设备和网络系统 | |
CN101355483A (zh) | 一种多网口发送数据包的方法和设备 | |
CN105335217B (zh) | 一种服务器静默方法与系统 | |
CN110865891B (zh) | 一种异步消息编排方法和装置 | |
CN111556447B (zh) | 一种信息处理方法及装置 | |
CN1980131A (zh) | 邮件拦截的方法及实现该方法的模块 | |
CN103117955A (zh) | 消息传输方法及装置、系统 | |
CN116260887A (zh) | 数据传输方法、数据发送装置、数据接收装置和存储介质 | |
KR0156856B1 (ko) | 다중 메세지 재전송 처리장치 및 방법 | |
CN101378538B (zh) | 一种群发消息处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |