论坛风格切换切换到宽版
  • 5564阅读
  • 6回复

APRS-G减少GPRS流量的方法 [复制链接]

上一主题 下一主题
离线bg6cq
 
只看楼主 倒序阅读 0楼 发表于: 2014-02-11
这几天在用aprsdroid, 从日志中看到它的流量有两种


1, 服务器下行流量
    每隔20秒钟一次, 其目的是为了保活, 原因是网络中有很多设备会观察tcp连接的状态, 如果太长时间没有数据,
这些设备会认为连接出现异常, 将连接状态重置. 通过定期发送一些数据包, 可以避免被重置, 这一点对GPRS网络
尤其重要. 典型的服务器下行流量中保活数据包如下(其中出现IPv6地址,是因为这些数据是从一台有IPv6协议的
机器上连接euro.aprs2.net,默认使用了IPv6协议):
# aprsc 2.0.10-g618c9ea 10 Feb 2014 03:37:05 GMT T2IRELAND [2001:770:18:7::c101:c19c]:14580
这一行数据大约80个字节,每分钟3次,还是挺多的。

2. aprs上行流量
   根据各种情况判断需要上传位置时,aprsdroid会发送上行信息,类似下面的:
BG6CQ-5>APDR12,TCPIP*:=3150.59N/11716.06E$231/006/A=000164


在使用中,第二种信息是有用的,第一种则是没有实际作用的。默认的配置,第二种信息非常少,第一种则有很多。
我步行30分钟测试,第二种有用的信息才6条,大约6*60=360字节,第一种无实际作用的信息则有95条,大约95*80=7600字节。

为了减少流量,我写了个简单的中转程序,对第一种无实际作用的信息进行优化,做法是忽略服务器发来的保活信息,
每隔60秒(距离上次发保活或位置报告之后60秒)定期发送给客户端一个#\r\n来完成保活。这样一来,第二种信息减少为26条,大约26*3=78字节。

以上计算看起来减少的很多,但实际上GPRS不是按照上面讨论的tcp传送的内容来计费,而是包含有各种包头等开销,
具体怎么统计的我也不清楚。

但无论如何,通过上面的优化能大幅度的减少GPRS的流量。

过一会我去机场接人,会测试上述程序的长时间工作是否正常。
离线bg7pwh
发帖
32
只看该作者 1楼 发表于: 2014-02-11
辛苦楼主了!
离线bg7pwh
发帖
32
只看该作者 2楼 发表于: 2014-02-11
结果如何?
离线bg6cq
只看该作者 3楼 发表于: 2014-02-11

从20:44:13到22:52:48大约130分钟,  交互过程见
http://202.38.64.1/20140211.txt

最前面是时间戳,后面的C表示客户机上传的信息,S表示服务器下传的信息,*表示被拦截的保活。

粗略统计如下:

客户机登录命令7次,上传位置报告53次(20:58:37有2个重复的报告,原因不明),共上传60个命令

服务器连接响应7次, 登录响应7次, 发布位置报告8次(包含有BG6CQ-5 6次,原因不明), 这些共22次
保活422次, 被拦截了277次, 剩余的145次发给客户机, 因此共下传了145+22=167个命令

上面的两个原因不明估计是aprsdroid和对方服务器的bug, 待定位.
离线BG2VIA
发帖
278
只看该作者 4楼 发表于: 2014-02-12
试试俺们大连兄弟写的aprsmap吧,还支持连接电台呢:http://www.aprsmap.org/
离线bg6cq
只看该作者 5楼 发表于: 2014-02-12
今天的测试,合肥-马鞍山-合肥, 09:18 - 13:24 约 4小时

粗略统计如下:

客户机上传位置报告254次

服务器发送保活769次, 被拦截后仅仅发送260次给客户机

也就是说, aprs服务器发送保活占用的流量是位置报告信息的3倍左右, 经过现在的处理, 至少节省了1/2的流量.

离线bh8cby
发帖
16
只看该作者 6楼 发表于: 2014-02-26
昨天我用了一下aprs,开机打开软件消耗时长2小时左右,消耗流量9M。一下子就蒙了,感觉5元30M的流量不够用了。
呼  号:BH8CBY
姓  名:郭太军
手        机:13548044674(用于短信联系,上班时间没有及时回复请原谅)
通信地址:中国四川成都蒲江县大北街45号