一种复制报文的方法

文档序号:7940851阅读:423来源:国知局
专利名称:一种复制报文的方法
技术领域
本发明涉及通信系统中报文的处理方法,尤其涉及报文的复制方法。
背景技术
在移动通信网络环境中,包括GSM、CDMA和WCDMA系统,有许多需要对某些数据流进行复制,如当出现语音用户切换或多方会话时,就需要对语音流进行复制。用户终端之间的位置可能是不断变化的,当用户从一个基站控制范围切换到另外一个基站控制范围,无论前、后两个基站是否属于同一基站控制器,为了保证通话语音质量,在切换过程中,需要将语音流同时发送给两个基站。再例如在多方会话中,需要将一个用户的语音数据同时发送给其他多个用户,此时也需要对语音流进行复制处理。
针对以上情况,现有的解决方案如图1所示,将语音流中需复制的语音报文的整个负载(payload)重新多次复制,同时修改相应的报文头。
由于现有的解决方案是将报文负载整个进行复制,另外再修改相应的报文头,自然需要更多的内存,以便来缓存数据,另外进行数据复制时,需要占用更多的CPU资源,同时也增加了报文的处理时间,增大报文的延迟几率,从而导致设备处理能力与语音质量的下降。

发明内容
本发明的目的是提供一种复制报文的方法,降低了占用的CPU内存,有效提高CPU内存的利用率。
本发明所揭示的一种复制报文的方法包括以下步骤(1)当CPU接收到报文后,将报文负载保存到内存中;(2)经判断若CPU接收到的报文需要进行复制,则在所述报文负载之前封装携带有不同传送信息的报文头;(3)将报文头偏移量写入发送队列;(4)根据写入发送队列的报文头偏移量得到各相应报文头,然后加上报文负载作为一个完整的报文发送出去。
在上述方法步骤(2)中,所述传送信息包括报文需传送到达的用户的信息。
在上述方法步骤(3)中,所述将报文头偏移量写入发送队列进一步包括以下步骤写入发送队列报文头的偏移量为第N个报文头的偏移量,其中N指报文需传送的次数。
在上述方法步骤(3)中,所述将报文头偏移量写入发送队列进一步包括以下步骤将报文负载之前的各个报文头的偏移量分别写入发送队列中。这样,在上述方法步骤(4)中还包括以下步骤判断发送队列的空闲位置数量是否满足报文传送次数,如果空闲位置数量不满足报文传送次数,则丢弃全部报文或者部分报文;如果空闲位置数量满足报文传送次数,则传送全部报文。
其中所述空闲位置数量不满足报文传送次数,包括空闲位置数量小于报文传送次数;所述空闲位置数量满足报文传送次数,包括空闲位置数量大于或等于报文传送次数。
在上述方法步骤(4)中,所述各报文头加上报文负载作为一个完整的报文发送出去还进一步包括根据报文头中携带的报文负载地址信息从内存中读取报文负载,然后与各报文头作为一个完整报文发送出去的步骤。
通过本发明提供的一种复制报文的方法,不需要对报文负载进行复制,仅在报文负载之前封装携带不同传送信息的报文头,发送时,根据写入发送队列的报文头偏移量得到各相应报文头,然后加上报文负载作为一个完整的报文发送出去,从而节省了CPU内存空间,有效提高CPU内存的利用率,同时也减少了报文的处理时间,降低了报文延迟,发送复制报文简单易行。


图1为现有技术中的语音报文复制过程示意图;图2为本发明中的报文复制过程示意图;图3为本发明中复制报文入发送队列第一种实施方式;图4为本发明中复制报文入发送队列第二种实施方式。
具体实施例方式
本发明的核心思想是在CPU内存中对于需复制的报文,在报文负载之前封装各报文头,写入发送队列报文头偏移量,然后根据该偏移量得到各相应报文头,再依据报文头中包含的报文负载地址信息从内存中读取报文负载,与各报文头作为一个完整的报文发送出去。
以下借助附图描述本发明的最佳实施例。
当CPU接收到报文后,将报文负载(Payload)保存在内存之中,在这之前CPU预留一定的空间用于封装接收报文的报文头。
CPU经判断若确定不需要对接收报文进行复制时,则在报文负载(Payload)之前封装区分不同端口号或用户等报文传送信息的报文头Header1,然后将报文负载的长度、报文头的偏移量及报文在内存中的地址等报文复制信息写入发送队列中,发送时读取这些以上复制信息直接发送。
CPU经判断若确定需要对接收报文进行复制时,如图2所示,在报文负载之前封装区分不同用户信息即传送信息的报文头,即在原报文头Header1之前增加封装其他区分不同端口号或用户等信息的报文头(例如Header2,...,Header N),所增加的报文头的数量根据要求复制的次数来确定。
在报文负载之前封装完各报文头后,报文头偏移量入发送队列,其方式可以采用有两种方式。
第一种方式如图3所示,将包含复制N-1次的报文头入发送队列一次,写入发送队列的报文头的偏移量(offset)为报文头Header N的偏移量,由于所有的报文头是相同长度的,所以发送任务读出这个偏移量就知道总共需要发送的次数。采用这种方式时,从发送队列中取一次偏移量有可能需要发送多个报文。
第二种方式如图4所示,将报文负载之前的各报文头的偏移量分别写入发送队列中,相当于同时写入了N个报文。然后判断发送队列的空闲位置数量(假设为L)是否满足报文传送次数(假设为N),如果不满足,即发送队列的空闲位置数量(L)少于报文传送次数(N)数),也即1<L<N,则丢弃全部报文或者丢弃部分(例如“N-L”部分)报文;如果满足,即发送队列的空闲位置数量(L)大于或等于报文传送次数(N),也即L>N或L=N,则传送全部报文。
发送报文时,从发送队列中读出报文头的偏移量得到相应的报文头,再根据各报文头中包含的其他信息,如报文长度(Length)和报文负载在内存中的地址即报文地址(Buffer Handle),从CPU内存中读取报文负载,各报文头加上该报文负载作为一个完整的报文发送出去,从而完成复制的需求。
以上所述的报文复制方法,勿需对报文负载进行复制,只需在报文负载之前封装携带有不同传送信息的报文头,以保证报文的正确传送到不同终端用户,因而可以节省CPU中宝贵的内存空间,减少CPU内存的占有率,减少了报文的处理时,发送复制报文简单易行。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种复制报文的方法,其中所述报文包括报文负载和报文负载之前的报文头,其特征在于,该方法包括以下步骤(1)当CPU接收到报文后,将报文负载保存到内存中;(2)经判断若CPU接收到的报文需要进行复制,则在所述报文负载之前封装携带有不同传送信息的报文头;(3)将报文头偏移量写入发送队列;(4)根据写入发送队列的报文头偏移量得到各相应报文头,然后加上报文负载作为一个完整的报文发送出去。
2.如权利要求1所述的方法,其特征在于,所述步骤(2)中,还进一步包括若经判断CPU接收到的报文不需要进行复制,则直接在所述报文负载之前封装该报文传送信息的报文头。
3.如权利要求1所述的方法,其特征在于,所述传送信息包括报文需传送到达的用户的信息。
4.如权利要求1所述的方法,其特征在于,所述CPU保存报文之前,预留用于封装各报文头的空间。
5.如权利要求1所述的方法,其特征在于,在步骤(3)中,所述将报文头偏移量写入发送队列进一步包括以下步骤写入发送队列报文头的偏移量为第N个报文头的偏移量,其中N指报文需传送的次数。
6.如权利要求1所述的方法,其特征在于,在步骤(3)中,所述将报文头偏移量写入发送队列进一步包括以下步骤将报文负载之前的各个报文头的偏移量分别写入发送队列中。
7.如权利要求6所述的方法,其特征在于,步骤(4)还进一步包括以下步骤判断发送队列的空闲位置数量是否满足报文传送次数,如果空闲位置数量不满足报文传送次数,则丢弃全部报文或者部分报文;如果空闲位置数量满足报文传送次数,则传送全部报文。
8.如权利要求7所述的方法,其特征在于,所述空闲位置数量不满足报文传送次数,包括空闲位置数量小于报文传送次数;所述空闲位置数量满足报文传送次数,包括空闲位置数量大于或等于报文传送次数。
9.如权利要求1所述的方法,其特征在于,在步骤(4)中,所述各报文头加上报文负载作为一个完整的报文发送出去进一步包括根据报文头中携带的报文负载地址信息从内存中读取报文负载,然后与各报文头作为一个完整报文发送出去的步骤。
全文摘要
本发明提供了一种复制报文的方法,该方法包括(1)当CPU接收到报文后,将报文负载保存到内存中;(2)经判断若CPU接收到的报文需要进行复制,则在所述报文负载之前封装携带有不同传送信息的报文头;(3)将报文头偏移量写入发送队列;(4)根据写入发送队列的报文头偏移量得到各相应报文头,然后加上报文负载作为一个完整的报文发送出去。利用方法可以有效地降低占用的CPU内存,提高CPU内存的利用率,减少报文复制的处理时间。
文档编号H04L12/58GK1505343SQ0215236
公开日2004年6月16日 申请日期2002年12月5日 优先权日2002年12月5日
发明者李珲, 李志同, 黄伟才, 张振华, 珲 李 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1