一种保证通用路由封装隧道传输可靠的方法.pdf

上传人:62****3 文档编号:680116 上传时间:2018-03-04 格式:PDF 页数:15 大小:643.93KB
返回 下载 相关 举报
摘要
申请专利号:

CN200310113590.0

申请日:

2003.11.14

公开号:

CN1617525A

公开日:

2005.05.18

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):H04L 12/56申请日:20031114授权公告日:20081210终止日期:20141114|||授权|||实质审查的生效|||公开

IPC分类号:

H04L12/56

主分类号:

H04L12/56

申请人:

华为技术有限公司;

发明人:

刘峰

地址:

518129广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

北京德琦知识产权代理有限公司

代理人:

宋志强;王琦

PDF下载: PDF下载
内容摘要

本发明公开了一种保证通用路由封装隧道传输可靠的方法,该方法包括:A.接收方接收数据包,判断接收到数据包的序列号与接收方设置的期望收到数据包的序列号是否相同,如果不相同,执行步骤B;否则,执行步骤C;B.发送携带该序列号的重传通知消息给发送方,发送方收到重传通知消息后,从发送方设置的缓存队列获取到具有重传通知消息携带的序列号的数据包,重传给接收方,返回步骤A;C.正常处理该数据包后,将接收方期望接收到数据包的序列号增加一个定值,返回步骤A。因此,该方法保证了在GRE隧道中传输数据包的可靠性,从而解决了在GRE隧道中传输的数据包会丢失的问题。

权利要求书

1、  一种保证通用路由封装隧道传输可靠的方法,其特征在于,发送方预先设置用于缓存发送后的数据包的缓存队列,接收方预先设置期望收到数据包的序列号,该期望收到数据包的序列号与发送方发送的数据包序列号相同,该方法还包括:
A、接收方接收数据包,判断接收到数据包的序列号与接收方设置的期望收到数据包的序列号是否相同,如果不相同,执行步骤B;否则,执行步骤C;
B、发送携带该序列号的重传通知消息给发送方,发送方收到重传通知消息后,从发送方设置的缓存队列获取到具有重传通知消息携带的序列号的数据包,重传给接收方,返回步骤A;
C、正常处理该数据包后,将接收方期望接收到数据包的序列号增加一个定值,返回步骤A。

2、
  如权利要求1所述的方法,其特征在于,在所述步骤B之前,该方法进一步包括:发送方判断其缓存队列是否存在具有重传通知消息携带的序列号的数据包,如果存在,执行步骤B;否则,发送方报警,断掉通用路由封装隧道。

3、
  如权利要求1所述的方法,其特征在于,所述步骤B进一步包括:
B1、发送方从设置的缓存队列获取到序列号比接收方预先设置期望收到数据包的序列号大的数据包,重传给接收方。

4、
  如权利要求1所述的方法,其特征在于,所述步骤C进一步包括:如果预先设置并启动了定时器A或定时器B,则停止该定时器A或定时器B。

5、
  如权利要求1所述的方法,其特征在于,如果接收到数据包的序列号与接收方设置的期望收到数据包的序列号不相同,所述步骤A进一步包括:
A11、如果接收方接收到数据包的序列号大于接收方设置的期望收到数据包的序列号,则将该接收到的数据包缓存,返回步骤A;
A12、如果接收方接收到数据包的序列号小于接收方设置的期望收到数据包的序列号,则将该数据包丢弃,返回步骤A。

6、
  如权利要求5所述的方法,其特征在于,如果接收到数据包的序列号与接收方设置的期望收到数据包的序列号相同,所述步骤A进一步包括:
A13、接收方是否存在缓存的数据包,如果不存在,则返回步骤A;否则,执行步骤A14;
A14、接收方将接收方期望收到数据包的序列号与所缓存的序列号最小的数据包的序列号相比较,如果相等,则将该缓存的数据包取出进行正常处理后,将接收方期望收到数据包的序列号增加一个定值,返回步骤A13;如果大于,则将该缓存的数据包取出丢弃,返回步骤A13;如果小于,则执行步骤B。

7、
  如权利要求5所述的方法,其特征在于,该方法进一步包括:接收方预先设置用于按序列号的递增顺序缓存所述接收到的数据包的链表。

8、
  如权利要求7所述的方法,其特征在于,当所述的链表缓存数据包已满时,接收方则缓存序列号比链表中序列号最大的数据包的序列号小的数据包,丢弃链表中序列号最大的数据包。

9、
  如权利要求1、5或6所述的方法,其特征在于,所述的将接收方期望接收数据包的序列号增加一个定值的过程包括:该增加的定值是根据发送方所发送的数据包的递增大小确定的。

10、
  如权利要求5所述的方法,其特征在于,所述的步骤A11还包括:如果定时器A未启动,启动定时器A,当定时器A到时的时候,若接收方没有接收到数据包,执行步骤B。

11、
  如权利要求1或6所述的方法,其特征在于,在执行所述步骤B之前,该方法还包括:接收方设置一个定时器A并启动,当定时器到时,执行步骤B。

12、
  如权利要求1或6所述的方法,其特征在于,在步骤B所述的发送携带该序列号的重传通知消息给发送方的同时,接收方设置一个定时器B并启动;
接收方当该定时器B到时的时候没有收到数据包,则接收方进行报警并断掉通用路由封装隧道的连接。

13、
  如权利要求1所述的方法,其特征在于,如果传送该消息的接口为用户数据报协议时,在步骤B所述的发送携带该序列号的重传通知消息给发送方的同时,该方法还包括:
接收方设置一个定时器C并启动;
发送方接收到重传通知消息后,发送方发送重传通知应答给接收方;
接收方在该定时器C到时的时候没有接收到该重传通知应答,则接收方重新发送重传通知消息。

说明书

一种保证通用路由封装隧道传输可靠的方法
技术领域
本发明涉及通信领域的通用路由封装(GRE)技术,特别涉及一种保证GRE隧道传输可靠的方法。
背景技术
随着网际协议(IP)技术的发展,GRE隧道也得到了广泛的应用,GRE隧道是基于RFC1701标准协议、RFC1702标准协议和RFC2784标准协议的IP方案。它的做法是将数据包加上GRE头,封装了GRE头的数据包通过GRE隧道传送。在路由器看来GRE隧道是一个点到点端口,它可以被加密。
如图1所示,图1为用GRE隧道传输数据包的示意图:该数据包由网元A传送给网元B,网元A与网元B之间存在着两个接口:信令接口和GRE隧道,其中,信令接口可以是传输控制协议(TCP)接口或用户数据报协议(UDP)接口,用于实现GRE隧道的建立、保持和释放功能,GRE隧道用于从网元A传送数据包到网元B。
在分组数据业务节点(PDSN)中可以通过GRE隧道实现数据包的传送,在PDSN与监听系统之间也可以通过GRE隧道实现数据包的传送。
由于GRE隧道的建立在IP层之上,因此没有类似TCP的可靠传输保证。目前,没有方案能够解决在GRE隧道中如何保证数据包的可靠传输,从而存在着在GRE隧道中传输的数据包可能会丢失的问题。所以,如何在GRE隧道中保证数据包的可靠传输是一个亟待解决的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种保证GRE隧道传输可靠的方法,该方法能够保证在GRE隧道中传输数据包的可靠性,从而能够解决在GRE隧道中传输的数据包会丢失的问题。
根据上述目的,本发明的具体实施方案是这样实现的:
一种保证通用路由封装隧道传输可靠的方法,发送方预先设置用于缓存发送后的数据包的缓存队列,接收方预先设置期望收到数据包的序列号,该期望收到数据包的序列号与发送方发送的数据包序列号相同,该方法还包括:
A、接收方接收数据包,判断接收到数据包的序列号与接收方设置的期望收到数据包的序列号是否相同,如果不相同,执行步骤B;否则,执行步骤C;
B、发送携带该序列号的重传通知消息给发送方,发送方收到重传通知消息后,从发送方设置的缓存队列获取到具有重传通知消息携带的序列号的数据包,重传给接收方,返回步骤A;
C、正常处理该数据包后,将接收方期望接收到数据包的序列号增加一个定值,返回步骤A。
在所述步骤B之前,该方法进一步包括:发送方判断其缓存队列是否存在具有重传通知消息携带的序列号的数据包,如果存在,执行步骤B;否则,发送方报警,断掉通用路由封装隧道。
所述步骤B进一步包括:
B1、发送方从设置的缓存队列获取到序列号比接收方预先设置期望收到数据包的序列号大的数据包,重传给接收方。
所述步骤C进一步包括:如果预先设置并启动了定时器A或定时器B,则停止该定时器A或定时器B。
如果接收到数据包的序列号与接收方设置的期望收到数据包的序列号不相同,所述步骤A进一步包括:
A11、如果接收方接收到数据包的序列号大于接收方设置的期望收到数据包的序列号,则将该接收到的数据包缓存,返回步骤A;
A12、如果接收方接收到数据包的序列号小于接收方设置的期望收到数据包的序列号,则将该数据包丢弃,返回步骤A。
如果接收到数据包的序列号与接收方设置的期望收到数据包的序列号相同,所述步骤A进一步包括:
A13、接收方是否存在缓存的数据包,如果不存在,则返回步骤A;否则,执行步骤A14;
A14、接收方将接收方期望收到数据包的序列号与所缓存的序列号最小的数据包的序列号相比较,如果相等,则将该缓存的数据包取出进行正常处理后,将接收方期望收到数据包的序列号增加一个定值,返回步骤A13;如果大于,则将该缓存的数据包取出丢弃,返回步骤A13;如果小于,则执行步骤B。
该方法进一步包括:接收方预先设置用于按序列号的递增顺序缓存所述接收到的数据包的链表。
当所述的链表缓存数据包已满时,接收方则缓存序列号比链表中序列号最大的数据包的序列号小的数据包,丢弃链表中序列号最大的数据包。
所述的将接收方期望接收数据包的序列号增加一个定值的过程包括:该增加地定值是根据发送方所发送的数据包的递增大小确定的。
所述的步骤A11还包括:如果定时器A未启动,启动定时器A,当定时器A到时的时候,若接收方没有接收到数据包,执行步骤B。
在执行所述步骤B之前,该方法还包括:接收方设置一个定时器A并启动,当定时器到时,执行步骤B。
在步骤B所述的发送携带该序列号的重传通知消息给发送方的同时,接收方设置一个定时器B并启动;
接收方当该定时器B到时的时候没有收到数据包,则接收方进行报警并断掉通用路由封装隧道的连接。
如果传送该消息的接口为用户数据报协议时,在步骤B所述的发送携带该序列号的重传通知消息给发送方的同时,该方法还包括:
接收方设置一个定时器C并启动;
发送方接收到重传通知消息后,发送方发送重传通知应答给接收方;
接收方在该定时器C到时的时候没有接收到该重传通知应答,则接收方重新发送重传通知消息。
从上述方案可以看出,本发明预先在发送方设置缓存队列,用于存储发送后的数据包,在接收发设置一个链表和该接收方期望接收到的数据包的序列号,该链表用于缓存从发送方发送来的序列号大于该接收方期望接收到的数据包的序列号的数据包,该接收方预先设置的期望收到数据包的序列号与发送方发送的第一个数据包的序列号相同。当接收方在一定时间内没有收到该接收方期望收到的数据包时,发送重传通知消息给发送方,发送方重传该数据包给接收方,而其他比该数据包序列号大的一些数据包,可以从接收方的链表中获取,不需要再次由发送方进行重传。因此,该方法保证了在GRE隧道中传输数据包的可靠性,从而解决了在GRE隧道中传输的数据包会丢失的问题。
图1为用GRE隧道传输数据包的示意图。
图2为本发明保证在GRE隧道中传输数据包的流程图。
图3为本发明定时器A到时的时候保证在GRE隧道中传输数据包的流程图。
为了使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进行进一步详细的说明。
根据标准协议RFC1701,数据包中的GRE头的序列号(SequenceNumber)是一个四字节的字段,该字段用来表示该数据包的顺序,即该数据包的序列号。
当发送方按顺序发出数据包后,并不立即将该数据包丢弃,而是将发出的数据包在发送方进行缓存:该发送方设置一个缓存队列,该缓存队列用于缓存该发送方发出的数据包。该缓存队列的大小由发送方的设备性能和IP数据业务可靠性的需求高低决定。该缓存队列具有先进先出的功能,即该缓存队列缓存满后,后面进入该缓存队列的数据包会将最早进入该缓存队列的数据包冲掉。
假设发送方发送的数据包的序列号是从0开始的,并且为加1递增的。
接收方预先设置期望收到数据包的序列号,该接收方预先设置的期望收到数据包的序列号与发送方发送的第一个数据包的序列号相同,即该接收方预先设置的期望收到数据包的序列号为0,并且设置一个链表,用于存储序列号大于期望收到数据包的序列号的数据包,该链表中的数据包按照数据包的序列号递增顺序排列。
如图2所示,图2为本发明保证在GRE隧道中传输数据包的流程图,其具体步骤为:
步骤200、接收方接收到发送方通过GRE隧道发送的数据包;
步骤201、接收方判断该数据包的序列号与该接收方设置的期望收到数据包的序列号之差是否大于0,如果是,转入步骤202,否则,转入步骤203;
步骤202、将该数据包按照序列号的递增顺序插入该接收方的链表,如果没有启动定时器A,启动定时器A,如果该链表已满,则将序列号最大的数据包冲掉,转入步骤200;
步骤203、接收方判断该数据包的序列号与该接收方设置的期望收到数据包的序列号之差是否等于0,如果是,执行步骤204,否则,执行步骤205;
步骤204、接收方对该数据包按照现有技术进行正常处理,并将该接收方设置的期望收到数据包的序列号加1,如果定时器A或定时器B已经启动,则停止执行定时器A或定时器B,执行步骤206;
步骤205、接收方丢弃该数据包,转入步骤200,接收方继续接收数据包;
步骤206、判断接收方的链表是否为空,如果是,则转入步骤200,该接收方继续接收数据包;否则,执行步骤207;
步骤207、接收方判断其链表中的最小序列号的数据包的序列号与该接收方设置的期望收到数据包的序列号之差是否大于0,如果是,转入步骤208,否则,转入步骤209;
步骤208、接收方启动定时器A,等待接收数据包,返回步骤200;
步骤209、接收方判断其链表中的最小序列号的数据包的序列号与该接收方设置的期望收到数据包的序列号之差是否等于0,如果是,执行步骤210,否则,执行步骤211;
步骤210、将该数据包从该接收方的链表取出按照现有技术进行正常处理,将该接收方设置的期望收到数据包的序列号加1,转入步骤206;
步骤211、将该数据包从该接收方的链表取出丢弃,转入步骤206。
由于在图2所述的流程设置了定时器A,当定时器A到时的时候,如图3所示,图3为本发明定时器A到时的时候保证在GRE隧道中传输数据包的流程图,其具体过程为:
步骤300、接收方当定时器A到时的时候没有收到数据包;
步骤301、如果定时器没有启动,则接收方启动定时器B,并且通过信令接口向发送方发送重传通知消息,该消息携带该接收方期望接收的数据包的序列号和该接收方链表中已经收到的数据包的序列号;
步骤302、发送方接收到重传通知消息后,从自身的缓存队列中取出具有该接收方期望接收的数据包的序列号的数据包,重新发送到接收方,并且根据重传通知消息中携带的该接收方链表中已经收到的数据包的序列号重新发送接收方没有收到的数据包;
步骤303、当定时器B到时之前,如果接收方接收到了数据包,则按照图2所述的方法执行,当定时器B到时的时候没有接收到数据包,则执行步骤304;
步骤304、取消定时器B,接收方进行报警,断掉该GRE隧道,释放链表,结束本方法。
当接收方通过信令接口发送重传通知消息给发送方时,可以通过TCP接口发送,也可以通过UDP接口发送。当接收方通过UDP接口发送重传通知消息给发送方时,接收方还需要启动定时器C,定时器C定时的时长小于定时器B所定的时长,在定时器C到时之前没有收到从发送方发送的重传通知消息的应答时,接收方要重新发送重传通知消息给发送方,用以保证发送方可以接收到该重传通知消息。当接收方通过TCP接口发送重传通知消息给发送方时,由于TCP协议的底层具有应答机制,接收方所以不需要在启动定时器等待重传通知消息的应答。
当发送方的缓存队列中没有重传通知消息携带的具有接收方期望接收数据包的序列号的数据包,则发送方将不发送重传通知消息的应答。发送方可以进行报警,断掉GRE隧道的连接,释放发送方的缓存队列等操作。
定时器A、定时器B和定时器C的时间设定可以根据接收方设备的性能、GRE隧道的传输性能、IP数据业务的可靠性、接收方链表的长度和发送方队列的大小确定。
本发明提供的方法还可以在接收方不设置缓存从发送方发送来的序列号大于该接收方设置的期望接收的数据包的序列号的数据包的链表,对于这些数据包,接收方一律丢弃。当接收方设置的期望收到的数据包在一定时间内还没有接收到时,接收方发送重传通知消息给发送方,该发送重传通知消息中携带该接收方设置的期望接收的数据包的序列号,发送方接收到该重传通知消息后,重新发送该通知消息中所指明的该接收方期望接收的数据包,并且重新从发送方的缓存队列按顺序获取序列号大于该接收方设置的期望接收的数据包的序列号的数据包并发送。该方法使接收方不需要设置链表缓存数据包,减小信令的复杂程度,但是,发送方必须重传序列号大于该接收方设置的期望接收的数据包的序列号的数据包。
以上所述的仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

一种保证通用路由封装隧道传输可靠的方法.pdf_第1页
第1页 / 共15页
一种保证通用路由封装隧道传输可靠的方法.pdf_第2页
第2页 / 共15页
一种保证通用路由封装隧道传输可靠的方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种保证通用路由封装隧道传输可靠的方法.pdf》由会员分享,可在线阅读,更多相关《一种保证通用路由封装隧道传输可靠的方法.pdf(15页珍藏版)》请在专利查询网上搜索。

本发明公开了一种保证通用路由封装隧道传输可靠的方法,该方法包括:A.接收方接收数据包,判断接收到数据包的序列号与接收方设置的期望收到数据包的序列号是否相同,如果不相同,执行步骤B;否则,执行步骤C;B.发送携带该序列号的重传通知消息给发送方,发送方收到重传通知消息后,从发送方设置的缓存队列获取到具有重传通知消息携带的序列号的数据包,重传给接收方,返回步骤A;C.正常处理该数据包后,将接收方期望接收。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1