TDSCDMA网络测试仪IP数据采集卡的研制.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流TDSCDMA网络测试仪IP数据采集卡的研制.精品文档.第 18 卷第 4 期重庆邮电学院学报( 自然科学版)Vol. 18No. 42006 年 8 月Journal of Chongqing University of Posts and Telecommunications( Natural Science)Aug. 2006文章编号: 1004- 5694( 2006) 04- 0448- 03TD-SCDMA 网络测试仪 IP 数据采集卡的研制刘伟, 张治中( 重庆邮电大学 通信网与测试技术重点实验室, 重庆 400065)摘要: 为顺应 3G 网 络 IP 化的趋势, 根据 T D- SCD M A 网络协议 中 IP 数据 包传输 相关描 述, 研 制了 T D- SCDM A网络 测试仪 IP 数据采集卡, 利用网卡加 WinPcap 驱动的方法实现 I P 数据包采集, 为上层协议 分析提供 有效消息。在 Realt ek8139 网卡上的测试表明, 该设计能可靠地完成 I P 数据包的采集, 完全可以应用于当前 T D- SCDM A 网 络测试。关键词: T D- SCDM A ; 测试仪; 数据采集卡; PCI 总线; WinP cap中图分类号: T N915. 06文献标识码: A0引言它和分组域一起实现实时和非实时的多媒体业务,并可以实现与电路域的互操作 5 。近年来 T D- SCDMA 一直是通信行业关注的一个焦点, 回顾 T D- SCDM A 的研发与产业化进展、技术试验、政府引导等, 明显看出我国对 T D- SCDM AIP 数据采集在 T D- SCDMA 网络测试仪中是非常重要的一部分。本文描述的是纯 IP 数据包的采集实现( 非 IP over A T M 部分) 。的关注达到了一个新的高度。为了进一步支持 T D-SCDM A 产业化进展, 国家 对当前 T D- SCDM A 产1IP 数据采集卡的硬件实现业发展的各个环节给予了支持 1 。针对我国正大力开发 T D- SCDM A 第三代移动通信( 3G) 系统、即将大规模组建 3G 网络, 却没有所必需的实验研发、建网和运行测试设备的现状, 在国际上传统通信测试仪表厂商只推出了基于 CDMA2000 和 WCDM A 2种标准的测试仪表的情况下, 研制出具有自主知识产权的 T D- SCDMA 移 动通 信 网 络 测 试仪, 完 善T D- SCDMA 产业链, 形成系列产品并推向市场, 必将产生巨大的社会效益和经济效益。该测试仪主要测试的接口包括 Iub, Iur, IuCS, IuP S, Nc, N b, C/ D/E/ G/ Gr/ MSCS- SCP, Gn/ Gp, Gi 等 2- 4 , 主 要 实 现协议分析( 解码) 、呼叫跟踪、业务统计及分析、网络异常分析、网络分析和优化、协议仿真等功能, 采用工控机结构, 多链路、多通道的硬件由多个基于 P CI总线的数据采集卡( 规程板) 组成。IP 数据 采集卡是其中的一个 P CI 数据采集卡。T D- SCDMA 网络从 R99 演进到 R4 版本, 逐步改进。T D- SCDM A 的下一步发展趋势 是向 R5 版本演进, R5 版本是全 IP 化的版本, Iu, Iur 和 Iub 接口增加了基于 IP 的可选传输方式, 使得无线接入网实现了 IP 化; 在核心网方面, 最大的变化是 在 R4的基础上增加了 IP 多媒体子系统( 即 IM S 系统) ,从 3GPP 和 T CP / IP 相 关协议 2- 5 可 以看 出,T D- SCDM A 网络中的 IP 数据与通常的 IP 网络中的数据规范相同而且更简单, 完全可以直接通过网卡捕获完成数据采集, 我们需要做的只是取出网络中的数据供上层分析软件作信令分析。IP 数据采集卡的工作流程 大致为: 由 T D- SCDM A 网络的相应接口传输过来的以太网帧到达网卡 网卡内的单片程序接收帧的目的 M AC 地址, 根据计算机上的网卡驱动程序设置的接收模式判断该不该接收, 认为该接收后就产生中断信号通知 CPU CPU 得到中断信号产生中断, 操作系统根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据放入堆栈 应用程序对数据进行处理。我们选择了 Realt ek RT L 8139C 芯片的 10M/100M 自适 应网 卡来 处 理 以太 网 帧, 该 网 卡遵 循P CI2. 2 总线规范, 支持 IEEE 802. 3u 100Base- T 和IEEE 802. 3x 全双工流控制, 它内建了符合 M II 规格的收发器( T ranceiver) , 可以使用 DM A 直接使用位于内存的缓冲区来保存网络上接收的数据包。为完成对数据包的捕获, 需要对网卡的工作模式进行设置。收稿日期: 2005- 09- 07修订日期: 2006- 06- 03基金 项 目: 国 家 高 技 术 研 究 发 展 计 划 ( 863 重 大 专 项 ) ( 2005A A 123780 ) ; 科 技 部 中 小 企 业 创 新 基 金( 05c26215111405) ; 科技部中小企业创新基金( No . 05C26215111405) ; 重庆 市科委科技 攻关项目 ( CST C, 2005AC2040) 和重 庆市经委指导性计划项目( N o. 05- 1G X- DZ180) 。作者简介: 刘伟( 1978- ) , 男, 重庆人, 硕士 研究生, 研究方向为通信网测试, E- mail: L_30 so hu. co m; 张 治中, 教授, 主 要研究方向为通信网测试, 光交换和宽带信息网 络技术等。aaaaaa第 4 期刘伟, 等: T D- SCDM A 网络测试仪 I P 数据采集卡的研制44922. 1IP 数据采集卡的软件调试混杂模式- 1。代码如下( 去掉错误检测等代码, 下同) :pcap_if_t * alldev s;pcap_if_t * d;正常情况下, 网络接口应该只响应这样的 2 种数据帧: 与自己硬件地址相匹配的数据帧和发向所有机器的广播数据帧。而对于网卡来说一般有以下4 种接收模式: 广播模式: 该模式下的网卡能够接收网络中的广播信息; 组播模式: 设置在该模式下的网卡能够接收组播数据; 直接模式: 在这种模式下, 只有目的网卡才能接收该数据; 混杂模式: 在这种模式下的网卡能够接收一切通过它的数据, 而不管该数据是否是传给它的。所以我们把网卡设置为混杂模式, 它就能接收传输在网络上的每一个信息包。2. 2 Winpcap以太网介质接入控制( medium access contr ol,MAC) 子层及其以下层协议由硬件实现, 逻辑链路控制( log ical link cont ro l, L L C) 子层及其上层协议均由软件实现。Window s 操作系统下的网络 设备驱动程序遵守网 络设备接 口规范 ( netw o rk deviceint erface specif ication, NDIS) , 它在分层的网络驱动程序框架中规定了一个标准接口, 从而使抽象低层次的硬件提供了高层次网络上的网络管理。我们采用的 w inpcap( w indow s packet capt ure) 也是用的NDIS, 将自己注册为一个协议处理驱动。Winpcap 是 w indow s 平台下一个免费、公共的网络访问系统 7 。开发 w inpcap 项目的目的在于为w in32 应用程序提供访问网络底层的能力。它提供了以下各项功能: 捕获原始数据报, 包括在共享网络上各主机发送/ 接收的以及相互之间交换的数据报; 在数据报发往应用程序之前, 按照自定义的规则将某些特殊的数据报过滤掉; 在网络上发送原始的数据报; 收集网络通信过程中的统计信息。Winpcap 的主要功能是独立于主机协议而发送和接收原始数据报。我们主要用到 w inpcap 的捕获功能, 通过对 w inpcap 驱动和 w insock 的利用 8 , 很多编程变得简单, 下面简要介绍数据包的捕获过程。char er rbuf PCA P_ERRBU F _SIZ E ;pcap_findalldevs( & alldev s, err buf) ; / / 获得网络设备 指针fo r( d= alldevs; d; d= d- nex t) d- > name; / / d- > name 就是 我们 需 要的 网卡 名 字字符串pcap_freealldev s( alldevs) ; / / 释放 alldev 资源事实上, w inpap 也提供另外的高级信息。特别是 pcap_f indalldevs( ) 函数返回的每个 pcap_if 结构体都同样包含一个 pcap_addr 结构的列表, 它包含: 一个地址列表, 一个掩码列表, 一个广播地址列表和一个目的地址列表。在此不再详述。2. 2. 2 打开相 应网卡并设置为混杂模式打开网卡的功能是通过 pcap_open_live( ) 来实现的, 下面是 pcap_open_live 的函数声明:pcap_t* pcap_o pen_live ( char * device, int sna-plen, int pr omisc, int t o_ms, char * ebuf)Device 就是前面我们获得的网卡的名字。它有 3 个参数 snaplen, pro misc, t o_m s。snaplen 用于指定所捕获包的特定部分, 这样在某些场合就可以减少拷贝数据的数量从而提高包捕获的效率。pro misc 指明网卡 处于混杂模 式, 此 时网卡可以捕获到发往其它主机的数据包。我们正需要此功能。to _ms 参数指定读数据的超时控制, 超时以m s 计算。当在超时时间内网卡上没有数据到来时,对网卡的读操作将返回。如果该参数为 0 那么意味着没有超时控制, 对网卡的读操作在没有数据到来时将永远堵塞。如果为- 1 那么对网卡的读操作将立即返回, 不管有没有数据可读。代码如下:pcap_t * adhandle;char er rbuf PCA P_ERRBU F _SIZ E ;adhandle = pcap_open_live( d- > name, / / 网卡名称65535, / / 捕获包的大小2. 2. 1获得网卡列表1, / / 混杂模式安装了 winpcap 驱动之后, 其中的 pcap. h 提供了 pcap_f indalldevs ( ) 函数来 实现获 得网 卡列 表( 主要是获得网卡的名称) , 该 AP I 返回一个 pcap_if结构的链表, 表的每项内容含有全面的网卡信息: 字段名字、含有名字的描述、有关驱动器的易读信息。它定义为参数 alldevsp 是 pcap_if _t 结构体的指针, 如果函数 pcap_f indalldevs 函数执行成功, 将获得一个可用网卡的列表, 里面存储的就是第一个元素的指针;Errbuf 存储错误信息的字符串。返回值 int : 如果返回 0 则执行成功, 错误返回1000, / / 读超 时为 1 秒er rbuf) ; / / er ro r buffer2. 2. 3 捕获数 据包并保存为文件pcap_dump( ) 实现将数据包内容依次写入 pcap_dump_open( ) 指定的文件中, 函数声明如下:v oid pcap_dump ( u_cha r* user , const str uct pcap_pk-参数 co nst u_char * sp 即数据包内容指针 。代码如下:dumpfile = pcap_dum p_open( adhandle, arg v) ; / / 打 开文件/ * 以下代码循环捕获数据并调用 packet_handler 函数把数据存储到堆文件* /450重 庆 邮 电 学 院 学 报( 自然科学版)第 18 卷pcap _ loo p ( adhandle, 0, packet _ handler, ( unsig nedchar * ) dumpfile) ;void packet _ handler ( u _ char * dumpfile, const str uct有运行稳定高效、代码简单、同时方便改进等特点。参考文献:pcap_pkthdr* header , const u_cha r* pkt_data) pcap_dump( dumpfile, header , pkt_data) ; 1王炎. T D- SCDMA 系 统测试 情况分 析 EB/OL . 2005- 08- 04 . ht t p: / / w w w. ct t l. com.3设计结果 2cn.3GP P T S 23. 002 V5. 12. 0. Netw o rk arch-i数据包保存下来之后就可以读取出来供应用软件分析。为验证捕获效果, 我们通过接收另一个机器的已知数据 IP 包然后用该软件抓包, 再用 pcap_t ect ure EB/ OL . ( 2003- 09- 20) 2006- 05-30 . ht tp: / / ww w . 3g pp. o rg/ f t p/ Specs/2004- 09/ Rel- 5/ 23_series/ 23002- 5c0. zip.open_of f line( ) 打开一个堆文件, 用 pcap _loop( ) 来循环从文件中读取数据, 并打印了其中每个包的内容, 证实了我们的设计。在文中我们采用的所有代码在 VC 编译环境下用 C+ + 语言 实现 9 , 可以打 印出捕获 的数据包。至此, 整个数据采集完成并得到验证。该方案通过初步实践确认在 T D- SCDMA 网络建网初期数据量不太大的情况下完全能实现 IP 数据包的采集。如果在一个繁忙的网络上进行截获则需要对应用程序进行必要的性能优化以避免丢失数据包, 可以采用多线程的方法来解决: 程序中使用 3 个线程进行操 3 4 53GPP T S 25. 401 V5. 9. 0. UT RAN o veralldescript ion EB/ OL . ( 2003- 09- 20) 2006-05- 30 . ht t p: / / w ww . 3gpp. o rg/ f t p/ Specs/2004- 09/ Re-l 5/ 25_series/ 25401- 590. zip.3GPP T S 23. 060 V5. 9. 0. General PacketRadio Serv ice ( GPRS) ; Service descript ion;St age 2 EB/ OL . ( 2003- 09- 20) 2006- 05-30 . ht t p: / / w ww . 3gpp. o rg/ f t p/ Specs/2004- 09/ Re-l 5/ 23_series/ 23060- 590. zip.3GPP T S 29. 060 V5. 11. 0. General PacketRadio Service ( GPRS ) ; GPRS T unnelling作:只进行捕获操作, 它将驱动程序获得的数据Prot o col ( GT P ) across t he Gn and Gp int er-包添加到数据包队列的头部;只进行过滤操作,f ace EB/ OL . ( 2003- 09- 20) 2006- 05- 30 .它检查新到的队尾的数据包, 检查其是否满足过滤ht t p: / / w w w . 3g pp. or g/ f t p/ Specs/ 2004- 09/条件, 如果不满足则将其删除出队列;包处理操作。进行数据 6Re-l 5/ 29_series/ 29060- 5b0. zip.李小文, 李贵 勇, 陈贤 亮, 等. T D- SCDM A 第如果有要求更高的应用, 就不得不采用一些专用芯片如网络处理器进行处理, 对此我们将进一步三代移动通信系统、信令及实现 M . 北京:人民邮电出版社, 2003.完善设计。 7T he W inPcap T eam . T he WinP cap manual4结束语and t ut o rial EB/ OL . 2006- 05- 30 . ht t p: / /ww w . w inpcap. o rg .在当前 3G 尚未 商用的前提下, 我们通 过多次模拟实验证明, 利用该 IP 数据采集卡, 通过 100 M网卡读入由 T D- SCDMA 网络的相应接口传输过来的 IP 数据包, 利用 w inpcap 驱动捕获数据包并将其转换成可以识别的数据供上层分析是能够满足 T D-SCDM A 网络 测试要 求的。 事实上, 采用 w inpcap 8 9ANT H ONY J. Jim Ohlund. M icrosof t Win-dow s 网络编程 M . 2 版. 北京: 清华大学出版社, 2002.DAVID J. Kruglinski. Visual C+ + 技术内幕 M . 4 版. 北京: 清华大学出版社, 1999.( 责任编辑: 刘勇)驱动方案对网卡的型号并无严格要求, 该采集卡具On design and implementation of IP card for TD- SCDMA network analyzerL IU W ei, ZH ANG Zh-i zhong( K ey L ab on Communication N etw ork and T esting T echnology , Chong qing Univer sity ofPos ts and T elecommunicatio ns , Chong qing 400065, P. R. China)Abstract: T o co nf orm the development t rend of 3G based IP , according t o t he descript ion about IPdat a packet t ransmission in T D- SCDMA netw o rk prot ocol, w e developed t he IP dat a acquisit ioncard fo r T D- SCDM A net wo rk analy zer, t he NIC and WinPcap driver is used t o implem ent t he IPdat a acquisit ion, t he ef f ectiv e messag e w ill be analysed in higher layers by sof tw are. We confirmthe card can be applied t o current T D- SCDMA net w ork t est ent irely af t er w e finished t he IP dat aacquisit io n t est based o n Realtek8139 NIC.Key words: T D- SCDMA; analy zer; dat a acquisit ion card; PCI bus; WinPcap