一种gprs断线自动重拨的方法

文档序号:7553907阅读:454来源:国知局
专利名称:一种gprs断线自动重拨的方法
技术领域
本发明涉及无线通讯领域,尤其是涉及一种Linux嵌入式设备的GPRS断线自动重拨的方法。
背景技术
在Linux嵌入式下GPRS无线通信开发中,一般需要嵌入式设备长期在线;然而事与愿违,我们经常会遇到掉线的问题。究其原因,主要有以下几点:
1.当同一个位置区LAC下不同小区的T3212 (周期性位置更新定时器)值设置不一致时,在发生小区重选时会引发 LAU(Location Area Update)、RAU (Routing Area Update)。目前现网将位置区LAC与路由区RAU设置为一致,当发生LAU时必然触发RAU。频繁的LAU、RAU会导致DTFTP下载延迟加大,严重时会导致掉线。2.GPRS通信时需要对路由进行更新(RAU),一旦路由更新不成功就会掉线。3.登录服务器与开始下载数据之间发生小区重选导致掉线。针对掉线问题,现有的一般处理方法如下:
1.判断/var/run/ρρρθ.pid文件是否存在。如果pppd拨号成功,会在/var/run目录下添加ppp0.pid文件,这个文件记录当前PPPd进程的pid。若它存在,则在线;若不存在,则断线,此时就需要重新拨号。2.使用ping命令判断是否在线。若以首选DNS服务器IPl和备用DNS服务器IP2作为两个外网IP。首先需探测嵌入式设备与DNSl的连通性,可通过“ping -s1- c 2 IP1”实现,如探测结果与首选DNS服务器连通,则认为GPRS在线,等待一段时间后进入下一轮判断;如探测结果嵌入式设备与首选DNS服务器不连通,则需探测嵌入式设备与备用DNS服务器的连通性。同理,如嵌入式设备与备用DNS服务器连通则进入下一轮判断,如嵌入式设备与备用DNS服务器也不连通,此时认为GPRS断线,需要重拨。一般采用先结束PPI3D进程再运行PPP-ON脚本启用PPPD进程的方法实现重拨。对于第一种方法,显然是不可取的。实践证明当PPPd进程正常运行时,无线通信有可能是断开的。通过掉线原因分析也可得知掉线与PPPd进程是否存在没有必然的联系。对于第二种方法,不仅会造成流量的浪费而且重拨速度也很慢。以一个字节去ping加上返回的值一共是9个字节,也就是一个小时用9*12*60=6480B ^ 6.33KB。嵌入式设备的实际应用中,通常会要求设备长期在线,这样将造成流量严重浪费。采用先结束pppd进程,再运行ppp-on脚本启动pppd进程的重拨方法使得重拨速度很慢。

发明内容
本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种Linux嵌入式设备的GPRS断线自动重拨的方法。通过监控虚拟接口 pppO时间间隔T的流量差以及通过ping命令探测与首选、备用DNS服务器是否通信正常,检测GPRS是否断线,由此判断是否进行重拨;并且通过直接对PPH)进程发送重播信号实现重拨。这样可解决流量消耗过高,并达到提高重拨速度的效果。本发明采用的技术方案如下:
一种GPRS断线自动重拨的方法包括:
步骤1:含有GPRS模块的Linux嵌入式设备拨号成功后,生成虚拟接口 pppO,并监控虚拟接口 PPPO时间间隔T后当前时刻与前一时刻流量差,若所述流量差值大于零,则GPRS模块没有掉线,无需重拨;若所述流量差值等于零,则执行步骤2 ;
步骤2:自动重播进程通过ping命令探测与首选DNS服务器是否通信正常,若能ping通,则无需重拨;若不能Ping通,则需要进行步骤3 ;
步骤3:自动重播进程通过ping命令探测与备用DNS服务器是否通信正常,若能ping通,则无需重拨;若不能Ping通,则认为掉线了,进行步骤4 ;
步骤4:重拨进程向pppd拨号进程发送重拨信号。所述自动重播进程向pppd拨号进程发送重拨信号后,若有触发事件使得pppd拨号进程状态为死亡,则PPPd拨号进程将断开LCP连接,并判断GPRS模块是否不需要再次连接、GPRS模块要求断开连接或GPRS模块连接不成功数大于最大值,当上述条件为真时,重播进程重新进行拨号请求。所述自动重拨进程以虚拟接口 pppO在时间间隔T后当前时刻与前一时刻收到数据的字节数差值作为判断依据,具体过程:
步骤11:自动重播进程通过读取文件/proc/net/dev,直到发现pppO开头的行;
步骤12:自动重播进程解析文件/proc/net/dev中pppO开头行的数据,获得接收到的字节数Pl ;
步骤13:自动重播进程在时间间隔T后重复步骤11、步骤12得到当前时刻虚拟接口PPPO接收到的字节数P2,则P2-P1即是流量差值。综上所述,由于采用了上述技术方案,本发明的有益效果是:
I)通过虚拟接口 pppO在时间间隔T收到数据的字节数差值作为判断依据,检测是否断线,可有效减少GPRS断线自动重播过程中不必要的流量消耗。2)自动重播进程通过ping命令探测嵌入式设备与首选、备用DNS服务器是否通信正常,决定是否进行重拨是一种可靠的决定重拨的方法。3 )所述自动重播进程向pppd拨号进程发送重拨信号后,若有触发事件使得pppd拨号进程状态为死亡,则pppd拨号进程将断开LCP连接,并判断GPRS模块是否不需要再次连接、GPRS模块要求断开连接或GPRS模块连接不成功数大于最大值,当上述条件为真时,重播进程重新进行拨号请求,大幅提高重拨速度,节省系统程序开销。4)自动重播进程通过读取文件/proc/net/dev中以“pppO”开头的行,得到时间间隔值T后获取的流量差,这种方法简单、实用、高效。


本发明将通过例子并参照附图的方式说明,其中: 图1本设计中pppd拨号主要流程图。
具体实施例方式本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。本专利相关说明
1、最大值的设置依据PPPd程序,最大值可以变化。2,LCP连接是链路控制协议的简称。是PPP协议的一个子集,在PPP通信中,发送端和接收端通过发送LCP包来确定那些是数据传输中的必要信息。LCP检查链接设备的标识,决定是接受还是拒绝;确定传输中可接收的包字节数;核对双方配置是否匹配,如果不匹配则断开链接。只有在LCP包链接是可用的情况下,数据才能实现网络通信。LCP负责设备之间链路的创建、维护和终止。3、文件/proc/net/dev作用:实时反映了网络接口的流量信息,记录了每个网卡发送和接收的包和字节数,其中第二列是对接口收到的字节数的统计。本发明通过对文件/proc/net/dev 一行一行的读取,直到发现pppO开头的行,这就意味着找到了包含GPRS流量数据的信息,接下来只需要对该行数据进行解析,获取出其中接收到的字节数。通过上诉方法,每隔T时间间隔内,获取一次接收到的字节数,计算前后两次的差值可估算出T时间间隔内PPPO接口收到的字节数。3,工作过程:含有GPRS模块的Linux嵌入式设备启动pppd进程拨号成功后,生成虚拟接口 pppO ;随后启动自动重播进程,它以计算虚拟接口 pppO在时间间隔T后当前时刻与前一时刻收到的数据字节数差值作为判断依据,若差值大于零,则认为GPRS没有掉线,无需重拨;若所述流量差值等于零,则自动重播进程通过Ping命令探测嵌入式设备与首选DNS服务器是否通信正常,若通信正常,则无需重拨;若不正常,则自动重播进程通过ping命令探测嵌入式设备与备用DNS服务器是否通信正常,若通信正常,则无需重拨;若不正常,则认为GPRS断线了,此时自动重拨进程会向pppd进程发送重拨信号,pppd进程收到重拨信号后进入拨号流程。实施例一:一种GPRS断线自动重拨的方法包括:
步骤1:含有GPRS模块的Linux嵌入式设备拨号成功后,生成虚拟接口 pppO,自动重播进程以虚拟接口 pppO在时间间隔T后当前时刻与前一时刻收到的数据字节数差值作为判断依据,若差值大于零,则认为GPRS模块没有掉线,无需重拨,若差值等于零,则执行步骤2 ;
步骤2:自动重播进程通过ping命令探测嵌入式设备与首选DNS服务器是否通信正常,若能Ping通,则无需重拨;若不能ping通,则需要进行步骤3 ;
步骤3:自动重播进程通过ping命令探测嵌入式设备与备用DNS服务器是否通信正常,若能Ping通,则无需重拨;若不能ping通,则认为掉线了,进行步骤4 ;
步骤4:重拨进程向pppd拨号进程发送重拨信号。
实施例二:如图1所述,在实施例一基础上,所述自动重播进程向pppd拨号进程发送重拨信号后,若有触发事件使得pppd拨号进程状态为死亡,则PPPd拨号进程将断开LCP连接,并判断GPRS模块是否不需要再次连接、GPRS模块要求断开连接或GPRS模块连接不成功数大于最大值,当上述条件为真时,重播进程重新进行拨号请求。(现有技术中当有触发事件使得当前状态为死亡,PPPd进程将断开LCP连接,并判断是否不需要再次连接,或者要求断开连接,又或者连接不成功数大于最大值;如果上诉条件为真则结束PPPd进程。)
实施例三:在实施例一或二基础上,所述自动重播进程以虚拟接口 pppO在时间间隔T后当前时刻与前一时刻收到的数据字节数差值作为判断依据具体过程:
步骤11:自动重播进程通过读取文件/proc/net/dev,直到发现pppO开头的行;
步骤12:自动重播进程解析文件/proc/net/dev中pppO开头行的数据,获得接收到字节数 Pl ;其中 /proc/net/dev ;
步骤13:自动重播进程在时间间隔T后重复步骤11、步骤12得到当前时刻虚拟接口PPPO接收到的字节数P2,则P2-P1即是收到的数据字节数差值。本发明并不局限于前述的具体实施方式
。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
权利要求
1.一种GPRS断线自动重拨的方法,其特征在于包括: 步骤1:含有GPRS模块的Linux嵌入式设备拨号成功后,生成虚拟接口 pppO,自动重播进程以虚拟接口 PPPO在时间间隔T后当前时刻与前一时刻收到的数据字节数差值作为判断依据,若差值大于零,则GPRS模块没有掉线,无需重拨;若差值等于零,则执行步骤2 ; 步骤2:自动重播进程通过ping命令探测嵌入式设备与首选DNS服务器是否通信正常,若能Ping通,则无需重拨;若不能ping通,则需要进行步骤3 ; 步骤3:自动重播进程通过ping命令探测嵌入式设备与备用DNS服务器是否通信正常,若能Ping通,则无需重拨;若不能ping通,则认为掉线了,进行步骤4 ; 步骤4:重拨进程向pppd拨号进程发送重拨信号。
2.根据权利要求1所述的一种GPRS断线自动重拨的方法,其特征在于所述自动重播进程向PPPd拨号进程发送重拨信号后,若有触发事件使得pppd拨号进程状态为死亡,则pppd拨号进程将断开LCP连接,并判断GPRS模块是否不需要再次连接、GPRS模块要求断开连接或GPRS模块连接不成功数大于最大值,当上述条件为真时,重播进程重新进行拨号请求。
3.根据权利要求2或3所述的一种GPRS断线自动重拨的方法,其特征在于所述自动重播进程以虚拟接口 pppO在时间间隔τ后当前时刻与前一时刻收到的数据字节数差值作为判断依据,具体过程: 步骤11:自动重播进程通过读取文件/proc/net/dev,直到发现pppO开头的行; 步骤12:自动重播进程解析文件/proc/net/dev中pppO开头行的数据,获得接收到字节数Pl ; 步骤13:自动重播进程在时间间隔T后重复步骤11、步骤12得到当前时刻虚拟接口PPPO接收到的字节数P2,则P2-P1即是流量差值。
全文摘要
本发明涉及无线通讯领域,尤其是涉及一种Linux嵌入式设备的GPRS断线自动重拨的方法。本发明所要解决的技术问题是针现有技术实现Linux嵌入式设备GPRS断线自动重拨存在的问题,提供一种可有效减少流量消耗且简单高效的方法。本发明通过监控虚拟接口ppp0时间间隔T的流量差和使用ping命令探测与首选、备用DNS服务器是否通信正常,决定是否进行重拨;并且通过直接对PPPD进程发送重播信号实现重拨。这是一种可有效减少流量消耗、提高重拨速度的可靠方法。本发明应用于GPRS无线通讯领域。
文档编号H04M3/424GK103179536SQ201310094120
公开日2013年6月26日 申请日期2013年3月22日 优先权日2013年3月22日
发明者周海涛 申请人:成都卫士通信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1