- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
无线上网无法正常计费问题的解决
无线上网无法正常计费问题的解决
摘要
本文分析了使用RS4200板卡的IAG无线上网无法正常进行Radius计费的故障,找出了原因,并通过修改程序源码得以解决。
关键词
IAG、Radius、计费、无线上网
无线上网概述:
无线上网采用数据汇接方式,如图:
所有的PIAFS数据经由接入网关旁路后,以ISDN PRI接入到汇接网关,汇接网关通过PRI接口将数据传输到iAG上,iAG支持TCP/IP协议,将对PIAFS数据进行TCP/IP协议打包,然后根据ISP的接入服务号码接入到相应的ISP上,实现PIAFS拨号上网业务。
IAG为1台插入UTS_RS4200插卡设备的PC工控机,使用的操作系统为Red Hat Linux 6.2,IAG的软件版本为2.1.6。iAG终结来自PAS用户的PIAFS数据呼叫。iAG还终结PPP业务。采用Radius方式进行认证和计费。
iAG功能模块
IAG软件的核心是pppd程序,是厂家在原来的标准的pppd程序基础修改而成的。pppd程序具有可扩展性,它使用了具有radius客户端的插件(plugin),文件名为libpsr.so,厂家增加了在Radius包中增加主叫、被叫号码的插件,文件名为ariel_party_info.so。
故障现象:
在进行无线上网的测试中,发现:如果用户在拨号网络中正常挂断,能够正常计费;如果非正常挂断,如直接在手机上挂断,或由于信号问题掉线,则计费不能中止,时间会一直走下去。
询问其他本地网,发现使用RS-4200插卡设备的IAG均存在这个问题。
原有设备提供商已经破产,无法升级,必须通过更换为其他厂家设备才能解决。这样,原有的设备就会报废。
故障分析:
在IAG(客户端)被设置使用RADIUS协议后,任何通过IAG上网的PS用户都需要向这个IAG提供认证信息(包括用户名、密码),一旦IAG收到此类信息,它会选择使用RADIUS协议进行认证。之后,IAG创建一个“接入请求(Access- Request)”数据包,此包包含了诸如像用户名、、、-Reject)”
如果所有的条件被满足RADIUS验证服务器会传输一个“接入允许(Access-Accept)”响应。IAG从IP POOL中分配一个IP地址给PS用户。
然后IAG产生“记账请求(Accounting-Request)”,RADIUS计费服务器收到记帐请求,如果服务器能够成功的记录下记帐包的话,必须马上发送一个记帐响应应答;如果记录记帐包失败,不得发送任何应答。
记账回应(Accounting-Response) 是由RADIUS记帐服务器发给客户端的,用来通知客户端记帐请求已被接收,并且成功的记录下来。
通过故障现象,估计是在异常终止连接时没有向RADIUS记帐服务器发送“记账请求(Accounting-Request)”。为了证实这一猜测,抓取IAG与RADIUS包之间的IP包。运行“tcpdump –n dst host radius-server-ip”,然后拨号,正常挂断,再拨号,异常挂断。查看IP包,发现正常挂断后有“记账请求”发给RADIUS记账服务器,而异常挂断后没有包发送。
比较系统log文件/var/log/messages,发现异常挂断后增加了“party_info[calling]: failed ioctl (Input/output error)”的错误。
由于程序带有源码,可以进一步定位发生错误的具体位置,在源码所在的目录下“grep party_info `find . -name *.c `”,portslave-ariel/ppp-2.4.0-radius/pppd/plugins/ariel_party_info.c文件中有类似的内容,这是厂家开发的插件文件,用于在Radius包中增加主叫、被叫号码。从代码上可以推断出,异常挂断时,程序没有正常获取主叫号码,发生错误,转入错误处理。
正常挂断时,能够发送计费停止包,说明能够通过驱动程序获取主、被叫号码。异常挂断时,由于所有的底层连接信息都已经提前释放,因此无法获得号码。
故障解决:
在一次接续中,主叫、被叫号码都是不变的,因此,可以从呼叫开始时就把主叫、被叫号码保存起来,然后再接续中断过程中使用。
具体思路是:程序中增加保存主叫、被叫号码的静态数组,在程序执行过程中如果不手工清除,数据是一直保存着的。程序用到radius数据包,可以根据数据包的内容来判断流程所处的阶段,如果为鉴权或计费开始,则按照原来的过程处理。如果为计费结束,则使用保存在静态数组中的数据填充数据包。
新增一个函数check_pkt_type(RADPKT *pkt),用于判断流程所处阶段。已将程序编译好,只要进行如下操作即可完成:
把附件中
您可能关注的文档
最近下载
- 苏教版五年级上册《我们的大脑》教学设计.docx
- 贵州省2024年高三年级4月适应性考试 地理试卷.docx
- GEUPS维护及故障讲课文档.ppt VIP
- 触摸屏技术的原理及应用.docx VIP
- 路桥施工计算手册.docx
- 年产50吨瑞舒伐他汀钙、5吨匹伐他汀钙、50吨恩格列净、50吨恩格列净中间体EM1、5吨贝曲西班马来酸盐、200吨阿托伐他汀中间体B-4、200吨瑞舒伐他汀中间体D-1等产品项目环境影响报告书.pdf
- 六年级美术上册《劳动最光荣》课件.ppt
- 抖音直播间1000个违禁词(一举夺葵版).docx
- 反渗透法海水淡化产品水水质控制指标及水质调整措施.pdf VIP
- 《论语》论仁、孝、君子、教育.doc
文档评论(0)