当前位置:Linux教程 - Linux - Linux做WAP网关

Linux做WAP网关

摘要:本文简要介绍了WAP和WAP网关,重点对Kannel的网关做了介绍。

一、 WAP简介

1 WAP的产生和发展

1997年6月,Nokia、Ericsson、Motorola和Unwired Planet共同组成了WAP论坛,该论坛旨在将Internet的海量信息及先进的业务引入到无线数字话机及终端中,目标是产生一个适用于不同无线网络技术的全球无线协议规范,以供工业标准组织采纳。

WAP论坛设立以后得到了业界的积极响应,各路人士纷纷汇聚旗下。1998年初,WAP规范正式公布。WAP的出现,使电信产业中发展最为迅速的移动通信完全加入到电脑网络世界中来,同时也为将来的电信产业的发展指明了方向,它使移动Internet有了一个通行的标准,昭示着移动Internet标准的成熟。

WAP由一系列协议组成,用来标准化无线通信设备,例如蜂窝电话,无线电收发机,也可用于Internet访问,包括e-mail,WWW,Newsgroups和IRC(Internet Relay Chat)等。简单说来,WAP的目标就是将Internet的海量信息及先进的业务引入到移动电话等无线终端之中。它针对无线网络的特点如低带宽、高延迟进行优化设计,把Internet的一系列协议规范引入到无线网络中。WAP只要求移动电话和WAP代理服务器的支持,而不要求现有的移动通信网络协议做任何的改动,因而适用于CDMA、GSM、IMT-2000等不同的移动通信系统。此外,WAP尽可能少地占用手持设备资源(如ROM、RAM、CPU等),它通过加强网络的功能来弥补手持设备本身的缺陷。就象Web对Internet 的作用一样,WAP在应用层上隐藏了GSM的复杂性,留给用户友好亲切的界面。

符合WAP标准的电话将配备一浏览器,可与标准Web浏览器相媲美。它采用一种类似卡片组的工作方式,用户可通过卡片组浏览运营商定置的Web业务。终端用户首先选择一项业务,该业务会将卡片组下载到移动电话。然后,用户可以在卡片之间往返浏览,进行选择和输入信息,接着执行所选择的工作。浏览到的信息可高速缓存。供以后使用,卡片组也可高速缓存并做成书签以供快速检索。电子名片、日历事件和其它类型内容的格式都将得到支持。

Internet、移动通讯是目前最具活力、发展最为迅速的行业,WAP(无线应用协议 Wireless Application Protocol)将移动通讯和Internet有机地结合在一起,是移动世界与Internet之间的桥梁。现在,移动用户可以随时随地接入Internet,能够从他们的移动终端上快速安全地获取互联网及企业内部网的信息及其他通信服务。WAP具有广阔的市场前景,必将获得迅猛的发展,并将会在极大程度上改变我们的生活。

WAP最吸引人的地方在于,无论何时/何地/何人,都可以最快的速度获取信息,并且WAP终端比较方便携带和使用。WAP最适用的地方是电子商务,现在已经在证券、银行等方面得到了应用,如手机炒股、手机银行等。

2 WAP的体系结构

WAP工作模型类似WEB的工作模型,如下图所示。移动终端发出请求并且携带有各种参数(URL等),网关通过解析,发出相应的请求到Web服务器上,服务器通过检索参数生成相应的结果,返回给代理网关,网关进行解码、编码,把结果送回给移动终端,一个会话过程就结束了。WAP定义了一整套标准部件来实现客户端和服务器之间的通信,包括有标准的URL,标准的内容格式,标准的传输方式。 WAP和WWW使用一样URL来标志服务器上面的内容,因为考虑到和现在的Internet兼容,这个标准没有任何的改变。和WWW不一样的是内容表达格式和文件传输方式的标准,针对移动终端的特点进行了优化。WAP使用到了网关的技术来连结无线网络和Internet数据网络,网关要能够实现WAP协议堆栈到WWW协议堆栈的转化,还能实现 内容格式的转化,例如 wml语言到html。这种结构保证移动用户可以使用广泛的Internet资源,而网络应用程序的开发者不需要考虑网络和终端的类型,具有最大的灵活性和伸缩性!


在无线网络中,WAP手机与两个服务器(WAP Proxy Server 和 WTA Server)通讯。 WAP proxy(即WAP网关)把WAP手机发来的WAP协议请求转换成WWW协议请求,然后把WWW请求提交给Web Server。同时WAP Proxy也把Web Server应答的信息,编码成WAP手机可以识别的紧凑的二进制格式,然后再传递给WAP手机。

这个模型在很大程度上利用了现有的WWW 编程模型,应用开发人员可以从这种模型中得到许多好处,包括可以继续使用自己熟悉的编程模型、能够利用现有的工具(如Web服务器、XML工具)等。 另外,WAP 编程模型还针对无线环境的通信特点,对原有的WWW编程模型进行了优化和扩展。

WAP接入涉及了无线通信网络和Internet/Intranet,同时采用了WAP协议以及TCP/IP协议,使得WAP网关成为WAP接入的关键点。按照WAP网关的设置不同,可以把构造WAP接入平台的解决方案大致分成两类:一类是接入单位直接利用电信部门的公用WAP网关(如中国移动提供的172等);另一类是接入单位自行架设专业WAP网关。是采用电信部门的公用WAP网关还是架设专业网关主要是考虑接入对时效性和安全性的要求,如要求不太高,可使用公用WAP网关,反之,则要架设专用网关。

各大手机厂商都有自己的网关产品,在国内电信部门使用较多是Nokia、Motorola和Phone.com的网关,它们的功能比较完善,技术支持力量雄厚,但价格极高,对于普通的企业来说是无法承受的。于是一些WAP的爱好者们开始在LINUX上开发WAP网关,做的比较好的是Kannel和3ui的网关。其中Kannel网关是第一个获得WAP论坛WAP1.1兼容性认证的开放源代码的网关。本文主要介绍Kannel的WAP网关。

二、 Kannel WAP网关

Kannel网关运行与Linux平台下,开放源代码,完全支持WAP1.1协议规范,采用了分布式和多线程技术,网关处理速度快、可靠、易维护和易扩展。实现了WAP标准协议栈;实现WML和 WML Script内容的编码与解码;支持WBMP,实现图形显示;支持安全连接、非安全连接方式;支持持久连接、临时连接方式。能在多台主机之间进行负载分担,容错性高。在普通的PC机上能支持数百个并发用户。

1 安装和配置
可从http://www.kannel.org下载源代码,最新的稳定版本是1.0.3,开发版本是1.1.3,以1.0.3版本为例,将gateway-1.0.3.tar.gz下载到Linux机器上,kannel网关需要安装xml库,可以到http://www.xmlsoft.org下载libxml2-2.2.8.tar.gz,假设目录为/home/wap,先安装libxml库
cd /home/wap
tar zxvf libxml2-2.2.8.tar.gz
cd libxml2-2.2.8
./configure
make
make install (这一步需要root权限)

然后安装网关
cd /home/wap
tar zxvf gateway-1.0.3.tar.gz
cd gateway-1.0.3
./configure
make

doc/arch目录下的技术文档是fig格式,需要fig2dev程序,如果没有此程序,编译会报错,不过没有关系,我们需要的二进制可执行程序已经生成。如果嫌每次编译都报错麻烦,可以修改Makefile,将此部分去掉。或者去下载fig2dev(我没有去找它在哪儿)。
现在到gw目录下看一看,我们要的程序bearerbox和wapbox程序已生成,启动bearerbox(./bearerbox &),啊,程序报错,无法读配置文件kannel.conf,怎么回事,gw目录下没有这个文件啊,没关系,把wapkannel.conf文件拷贝为kannel.conf就可以了(cp wapkannel.conf kannel.conf)。

配置文件kannel.conf的格式如下,具体的含义看看Kannel自带的文档就明白了。
group = core
admin-port = 13000
wapbox-port = 13002
admin-password = bar
wdp-interface-name = ""*""
#log-file = ""/tmp/kannel.log""
#log-level = 0
box-deny-ip = ""*.*.*.*""
box-allow-ip = ""127.0.0.1""
#admin-deny-ip = """"
#admin-allow-ip = """"
#access-log = ""access.log""

group = wapbox
bearerbox-host = localhost
#log-file = ""/tmp/wapbox.log""
#log-level = 0
syslog-level = none

启动网关后(./bearerbox & ; ./wapbox &),就可以通过它访问wml页面了,赶快去下载模拟器吧,可以用Nokia Toolkit,Erission WapIDE,UP.SDK,Motorola等模拟器进行测试。如果你有WAP手机,装网关的Linux机器连到了Interner上,就可以拨172了,把手机里的网关设置为你的机器的IP地址,就可以手机上网了。在手机上需要设置的主要是
网关地址:xxx.xxx.xxx.xxx (你网关机器的IP地址)
端口号: 9201(一般设置) 9200(无连接方式)
连接类型:普通电话
波特率: 9600
用户名: wap
口令: wap
电话号码:172
主页: http://wap.china.com (你想去的URL)

2 程序说明

网关把处理负载分担在多台主机上,分为两个模块。网关系统由一个bearerbox和一到多个wapbox组成。bearerbox和wapbox可以运行在不同的机器上。

(1) bearer box

Bearerbox模块连接到CSD router,提供了对Wapbox的接口,实现了WAP协议栈的WDP层。Bearerbox记录当前运行的wapbox,从CSD router接收UDP包,把从同一个终端接收到的包路由到同一个wapbox,收到wapbox的处理结果后发到相应的用户终端。

(2)wapbox

wapbox模块实现了WAP协议栈的上层部分,属于同一个事务的会话和事务由同一个wapbox处理。Wapbox实现了WTLS、WTP和WSP层。Wapbox从电话接收到类似HTTP的请求,把实际的HTTP请求发到内容服务器,压缩响应数据,发回到终端。
bearerbox和wapbox之间通过TCP建立连接。 bearerbox充当server等待wapbox进行连接。这样,bearerbox就不需要保留静态的wapbox列表。它以一个空的列表开始,等待wapbox进行注册,这种设计使得动态的加入新的wapbox变得非常方便:只须安装一个,配置好,连接到相应的bearerbox。
如果bearerbox和wapbox之间的TCP连接断开了,bearerbox会得到通知把它从自己的clients列表中去掉。当崩溃的wapbox从bearerbox的clients列表中去掉之后,从应该路由到此wapbox的终端收到的数据包被看作从一个新的终端收到。这意味着wapbox必须能处理在一个会话当中的包。
也可能出现这样的情况,wapbox还存活着,但已经不能处理任何消息了。为了检测这种情况,wapbox要定期向bearerbox发送心跳(heartbeat)包,如果bearerbox未能收到heartbeat消息,它认为存在问题的wapbox崩溃了,但是未能断开TCP连接。bearerbox会断开连接,把它从clients列表种去掉。当wapbox恢复后,会重新打开连接。Heartbeat消息还包含wapbox的负载,bearerbox据此进行负载平衡。

3 性能测试

我在以下的环境下进行了测试,测试共使用三台PC机,分别为CWAP网关机器,Web服务器,模拟客户机,通过10M以太网相连,机器配置如下:
WAP网关:
操作系统: Linux RedHat7.0
CPU: Intel Pentium III
主频: 500MHz
内存: 128M
Web服务器:
操作系统: Windows 2000
CPU: Intel Celeron
主频: 500MHz
内存: 64M
模拟客户机:
操作系统: Linux RedHat7.0
CPU: Intel Celeron
主频: 500MHz
内存: 128M

WAP网关机器上启动网关程序(bearerbox和wapbox),模拟客户机上用测试程序fakewap(在test目录下)向网关请求Web服务器上的wml页面,统计响应时间,每秒处理请求数量等数据。
fakewap程序采用了多线程技术,可以模拟多用户量的并发情况,缺省设置下使用9201端口(WSP/WTP/WDP),使用方法为fakewap [options] url ...,其中几个主要的选项如下:
-g hostname 网关的机器名或IP地址 (default: localhost)
-p port 网关端口(default: 9201)
-m max 总共发送请求数 (default: 1)
-i interval 发送2个请求之间的间隔 (default: 1.0 seconds)
-c threads 并发用户数量 (default: 1)

测试结果为:在并发用户数为100的情况下,网关的响应时间在1秒以内,平均每秒处理的请求数量为40个左右,这对于绝大部分的企业应用来说是足够了。

三、参考网站
http://www.kannel.org
http://www.wapforum.org