引言
无线路由器是一款基于GPRS/CDMA 1X公用移动网络平台,通过无线接入Internet或VPDN的网络设备。它能提供可移动的、低成本的基于TCP/IP的数据传输通道。
无线路由器可广泛应用于金融、保险、电力、监控、交通、气象、水文监测等行业。利用稳定的GPRS/CDMA 1X无线网络,无线路由器可以代替部分有线以太网路由器、HUB、有线MODEM,实现数据的无线传输。在公用移动网络覆盖的条件下,原先采用以太网接口,依靠有线以太网通信系统的各种终端设备,如PC机、工控机、ATM机、POS机、网络摄像机等,都可以很方便地通过无线路由器接入到GPRS/CDMA 1X网络中,利用移动互联网提供的数据服务来进行数据通信。
图1 模拟器工作原理示意图
与传统有线网络接入相比,无线路由器设备具有以下优点:
·不受线缆的约束,能迅速提供无线TCP/IP服务。
·具有移动性,可以安装在轮船、火车、汽车等移动载体上。
·灵活可变,根据需要随时增减设备。
无线路由器硬件设计
无线路由器由无线通信模块、以太网接口、嵌入式处理器及存储器、电源模块等四部分组成,如图1所示,它一端通过无线通信模块经天线接入GPRS/CDMA 1X网络,另一端通过以太网接口连接网络终端设备,如PC、网络摄像机、多媒体终端等,无线路由器相当于在网络终端设备和互联网之间搭起了一座桥梁。无线通信模块部分完成接入GPRS/CDMA 1X网络的工作,相当于一部可以拨号上网的移动调制解调器。
无线路由器通过无线通信模块连接GPRS或CDMA 1X移动互联网络,通过以太网接口连接内部网络设备或者内部局域网。无线路由器具备网络路由功能,能够在两个网络之间转发数据。各种终端设备发出的数据通过以太网口被处理器接收,处理器对数据进行相应处理后再通过串行口1发送给无线通信模块,由它转发到GPRS或CDMA网络中。同理,从无线网络来的反向数据经过相反的路径最终送回网络终端设备。
无线路由器硬件包括嵌入式处理器、存储器、无线通信模块、接口和电源等几部分,如图2所示。
图2 无线路由器硬件设计框图
处理器
无线路由器的嵌入式处理器采用ARM处理器S3C4510B,内核为ARM7TDMI,主频为50MHz,它提供2个UART串行口、1个I2C总线控制器、1个实时时钟和1个10/100Mbps以太网控制器。
存储器
FLASH存储器为1片1M×16位数据宽度的HY29LV160,它的容量为16M位(2M字节),工作电压为2.7V~3.6V。
SDRAM存储器为1片16位数据宽度的HY57V641620,它的容量为4组×16M位(8M字节),工作电压为3.3V。
I2C存储器为1片AT24C01,它提供了128字节的EEPROM存储空间,可用于存放少量在系统掉电时需要保存的数据。
无线通信模块
采用Wavecom公司生产的GPRS模块Q2406B或CDMA 1X模块Q2358C,嵌入式处理器通过串行口1与无线通信模块的相连,模块通过外接天线与公用移动网络的蜂窝小区基站通信,收发无线数据。
对外接口
路由器对外有三个接口:一个SMA座的天线接口,50Ω阻抗;一个RJ45座的10M以太网口接口,连接各种网络终端设备;一个DB9座的RS232串行口,既可以配置成控制台接口,用来设置参数和设备运行监控,也可配置成串口数据转换接口,用于将串口数据转换成网口数据。
电源
考虑到车载电瓶电压大都为+12V,为了方便连接汽车的点烟器或车载电瓶,无线路由器电源模块采用直流电源+12输入,输出4V、2.8V、3.3V,分别供给无线通信模块、S3C4510、FLASH等数字电路部分。
无线路由器的软件设计
操作系统软件
mClinux是一个完全符合GNU/GPL(通用公共许可证)公约的项目和完全开放代码,它是标准Linux的一个分支,现在由Lineo公司支持维护。它专门针对没有MMU的CPU,并且为嵌放式系统做了许多小型化的工作。
无线路由器的操作系统软件采用mClinux,它是基于Linux内核公开源代码的一种嵌入式操作系统。由于无线路由器的硬件电路是针对此应用专门设计的,mClinux并不能直接使用,所以重新修改mClinux操作系统软件中与硬件电路相关的部分源代码,使得mClinux操作系统能够在无线路由器电路板上正常运行,针对mClinux进行的改动主要有:
·ARM S3C4510B和存储器芯片的初始化程序;
·mClinux内核的引导程序bootloader;
·无线路由器各种网络应用软件的配置文件;
·针对ARM S3C4510B处理器,选择合适的编译工具和参数选项,重新编译整个操作系统。
无线路由器支持的网络协议
无线路由器支持的网络协议示于表1。
表1 无线路由器支持的网络协议
应用软件
无线路由器的网络接口包括有线以太网接口和无线拨号上网接口,无线路由器的作用就是在这两个接口之间转发数据,提供静态路由功能。TCP/IP网络协议的实现代码已经内嵌在mClinux操作系统中,在内核中设置“IP转发”和“IP伪装”就能实现静态路由功能。应用软件设计主要包括两个网络应用程序:PPP应用程序和iptables应用程序。
PPP应用程序
PPP应用程序用来通过无线通信模块拨号登录GPRS/CDMA 1X移动网络,登录过程遵循PPP点到点通信协议。mClinux操作系统代码中包含有一个实现PPP协议的程序pppd,但是需要根据GPRS/CDMA 1X移动网络通信的要求,修改pppd源代码中的部分配置参数,如拨号号码、登录用户名、登录密码,就能够得到需要的PPP应用程序,实现拨号登录移动网络。
iptables应用程序
iptables软件包支持数据处理包伪装和过滤功能,这种功能被称为网络过滤器(netfilter)。在无线路由器中我们使用了"IP转发"和"IP伪装"功能。
“IP转发”功能 :
# echo 1 > /proc/sys/net/ipv4/ipforward
“IP伪装”功能:
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
“IP伪装”的工作原理是:当路由器拨号上网后,它拥有的两个网络接口,它俩分别拥有两个IP地址:
a.拨号网络接口ppp0是一个动态的合法公网IP地址,假定为a.b.c.d;
b.以太网口接口eth0是一个固定的私网的IP地址,假定为192.168.1.1
假如以太网口连接的是一个局域网192.168.1.x,通常这个局域网内的设备是不能访问到公网IP的。局域网终端设备(假定它的ip地址为192.168.1.22)将无线路由器以太网口的IP地址192.168.1.1设定为默认网关,当无线路由器收到局域网设备访问公网的请求数据包时,通过上面的"IP转发"命令对其进行转发,再通过的"IP伪装"命令对其进行改写,将数据包的源地址192.168.1.22替换为自己的合法IP地址a.b.c.d,将源端口号port1换成一个新的端口号port2,并且对该过程进行记录。
当无线路由器收到Internet主机的响应包时,如果目的端口号正是先前改动后的端口号port2,则再对该包进行反向改写,将响应包的目的IP(a.b.c.d)及目的端口号(port2)替换为原来记录的局域网设备的IP地址192.168.1.22和端口号port1,然后再发送给局域网设备。
将私网地址转化为公网地址,是由存储在基于iptable的无线路由器上的数据库完成的。无线路由器的iptable软件维护这个数据库,因此它知道如何进行“逆转换”,所以从公网返回的数据就能正确的送到源访问设备。
终端设备接入无线网络方式
无线路由器对终端设备提供两个接口,分别是以太接口和无线ppp接口。无线路由器中的路由软件将来自以太口的有线网络设备的数据自动转发到GPRS/CDMA网络,或者接收来自GPRS/CDMA网络的数据并转发给以太口的有线网络设备。这种由无线路由器的自动转发能力提供了以下三种功能:
·网络终端设备的数据转发
网络终端设备只要通过以太网口连接到无线路由器,并将默认网关设置成无线路由器的IP地址,就可以接入到GPRS/CDMA网络。终端设备本身的通信软件无需作任何的改变。
·网络终端设备的即插即用
无线路由器内置DHCP服务器。终端设备只要设置成自动获取IP地址,通过以太口连接到无线路由器,就可以通过DHCP协议自动获取动态的IP地址、网关地址、子网掩码、DNS等网络参数,然后可以接入到GPRS/CDMA网络。终端设备本身的通信软件无需作任何的改变,真正做到了即插即用。
·移动网络自适应
无线路由器内置软件能自动识别路由器硬件配置的无线通信模块类型,然后采用不同的拨号参数,登录GPRS或者CDMA 1X移动网络。
图3 无线路由器的设备外形图
结语
有线网络终端设备可以利用已有的GPRS/CDMA 1X网络,无需铺设网线便可通过无线路由器完成网络无线接入。CDMA 1X无线路由器设备可在高速公路监控、防汛指挥、山区防火、地质灾害等场合作为应急通信手段。在偏远地区,岛屿、汽车、三峡游轮、火车等架设通信线路困难或架线不经济的地方,使用GPRS/CDMA 1X无线路由器接入互联网或者专用VPDN是一种迅速、廉价的解决方法。本设备已经应用在太湖流域管理局的太湖水文数据监控系统中。
总之,在GPRS/CDMA 1X蜂窝网覆盖的范围内,无线路由器设备能快速经济地提供无线网络通信业务。本文所提供方法实现的无线路由器设备通用性强,能够高效率地运行。
参考文献:
1. James Stanger,Patrick T.Lane著,钟日红等译,Linux黑客防范开放源代码安全指南,机械电子工业出版社,2002年
2. Samsung Electronics,S3C4510B USER Manual
3. ARM Architecture Reference Manual,Second Edition,David Seal
4. 李驹光编著,ARM应用系统开发详解(第二版),清华大学出版社,2004年12月