QCA4028的硬件方案,基板上部署了一个LTE模块插槽,同时又外留了一个USB3.0接口,所以,就能够在此硬件平台上调试基于LTE的双WAN,预期实现:网络
A 链路备份,在任意一个LTE网络链接异常时,其下的有线/WiFi无线用户仍能持续接入上游网络;负载均衡
B 负载均衡,尽可能让上行流量均衡分配在2个LTE网络链路上,避免流量其中到单个LTE链路。优化
本文档中采用LTE模块为上海移远的EC2X模块,USB3.0的LTE模块转接板来自T宝,它自带了SIM卡槽。网站
在QSDK软件工程代码中选中"muliiwan"组件,做为双wan的监护进程,它缺省是不启用的,很是好调试。在确保2个LTE模块都能成功保证WiFi用户上网后,再来调试双WAN功能更加有效。本次调试中发现EC系列的模块,它的wwanX接口的MAC地址是随机的,每次都不同,此外,2个wwan接口的MAC地址仍是同样的,开始调不通时为这个折腾了很久,后来才发现MAC同样对用户上网也没有关系(这个问题可能会埋伏了深层BUG,有待持续改进)。ui
mutliwan在同QSDK的配合中,发现提取不到网卡的IP地址和网关地址,致使错误将2个WAN链路都定位为offline,从而会出现将resolv.conf.auto清空,将default gateway条目删除掉,致使没法上网。规避方法是:在acquire_wan_data中,在ipaddr和gateway都为x后,再直接到网卡上取ip和gw值。WiFi用户上网时,会发现打不开页面或网站的状况,这个是由于QSDK固件中用了dnsmasq,而它须要真实的DNS配合进行解析,refresh_dns中频繁地清空resolv.conf.auto文件,可能会致使dnsmasq工做异常,规避方法是:不让refresh_dns频繁操做resolv.conf.auto,而改成操做一个新临时文件,只有当这个新临时文件不为空,且与现有的resolv.conf.auto不一样时,再将新临时文件替换resolv.conf.auto,并重启dnsmasq,这样就稳定了。此外,针对monitor_wan,其现有实现对LTE网络是不适合的,由于LTE网络可能已经断开了,但IP和网关却依旧存在的,因此,这里须要让它每次都进入add_task,要不在人工将某个wan口down下来后,监控进程都不处理,致使WIFi用户上网失败。3d
另外一方面,就是WAN口的up须要从新优化,在QSDK中,若是不启用multiwan服务,则缺省路由是后启动网卡所对应的缺省路由,且只有一条缺省路由条目,致使你将这个惟一的缺省路由网卡关闭后,WiFi用户就上不了网。这个不是multiwan引入,但也须要规避。能够在按期任务中检查route条目来解决,检查缺省路由条目和带UH标识条目,确保他俩同样便可。但multiwan确实仍是引入了问题的,其一:运行中关闭multiwan服务后,会将default路由条目删除掉,致使用户没法上网;其二:WAN接口上线成功后,不会更新dns和缺省路由条目,但它明明检测了新wan口,且状态是online了。规避方法是:在multiwan被stop后,重构路由条目(也可在定时任务中检测路由条目);在网卡更新IP后,当即重启multiwan服务。但重启multiwan服务它会重构路由表,可能会致使ping包时延波动或丢包,游戏用户可能会影响体验。调试
利用Multiwan来实现双WAN管控是可行的,具体使用时,还须要为目标环境进行简单修改,可能没法作到拿来便可用。blog