通信测试
|
 测试动态 测试科技 测试产品 
您现在的位置:首页泰尔测试测试科技
TD-SCDMA网络测试仪IP数据采集卡的研制
刘伟 张治中
2010-03-23 00:00:00 来源:[重庆邮电学院学报]

摘要 为顺应3G网络IP化的趋势,根据TD-SCDMA网络协议中IP数据包传输相关描述,研制了TD-SCDMA网络测试仪IP数据采集卡,利用网卡加WinPcap驱动的方法实现IP数据包采集,为上层协议分析提供有效消息。在Realtek8139网卡上的测试表明,该设计能可靠地完成IP数据包的采集,完全可以应用于当前TD-SCDMA网络测试。

0、引言

  近年来TD-SCDMA一直是通信行业关注的一个焦点,回顾TD-SCDMA的研发与产业化进展、技术试验、政府引导等,明显看出我国对TD-SCDMA的关注达到了一个新的高度。为了进一步支持TD-SCDMA产业化进展,国家对当前TD-SCDMA产业发展的各个环节给予了支持[1]。针对我国正大力开发TD-SCDMA第三代移动通信(3G)系统、即将大规模组建3G网络,却没有所必需的实验研发、建网和运行测试设备的现状,在国际上传统通信测试仪表厂商只推出了基于CDMA2000和WCDMA 2种标准的测试仪表的情况下,研制出具有自主知识产权的TD-SCDMA移动通信网络测试仪,完善TD-SCDMA产业链,形成系列产品并推向市场,必将产生巨大的社会效益和经济效益。该测试仪主要测试的接口包括Iub,Iur,IuCS,IuPS,Nc,Nb,C/D/E/G/Gr/MSCS-SCP,Gn/Gp,Gi等[2-4],主要实现协议分析(解码)、呼叫跟踪、业务统计及分析、网络异常分析、网络分析和优化、协议仿真等功能,采用工控机结构,多链路、多通道的硬件由多个基于PCI总线的数据采集卡(规程板)组成。IP数据采集卡是其中的一个PCI数据采集卡。

  TD-SCDMA网络从R99演进到R4版本,逐步改进。TD-SCDMA的下一步发展趋势是向R5版本演进,R5版本是全IP化的版本,Iu,Iur和Iub接口增加了基于IP的可选传输方式,使得无线接入网实现了IP化;在核心网方面,最大的变化是在R4的基础上增加了IP多媒体子系统(即IMS系统),它和分组域一起实现实时和非实时的多媒体业务,并可以实现与电路域的互操作[5]

  IP数据采集在TD-SCDMA网络测试仪中是非常重要的一部分。本文描述的是纯IP数据包的采集实现(非IP over ATM部分)。

1、IP数据采集卡的硬件实现

  从3GPP和TCP/IP相关协议[2-5]可以看出,TD-SCDMA网络中的IP数据与通常的IP网络中的数据规范相同而且更简单,完全可以直接通过网卡捕获完成数据采集,我们需要做的只是取出网络中的数据供上层分析软件作信令分析。IP数据采集卡的工作流程大致为:由TD-SCDMA网络的相应接口传输过来的以太网帧到达网卡→网卡内的单片程序接收帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收后就产生中断信号通知CPU→CPU得到中断信号产生中断,操作系统根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据放入堆栈→应用程序对数据进行处理。

  我们选择了Realtek RTL8139C芯片的IOM/100M自适应网卡来处理以太网帧,该网卡遵循PCI2.2总线规范,支持IEEE 802.3u 100Base-T和IEEE 802.3x全双工流控制,它内建了符合MII规格的收发器(Tranceiver),可以使用DMA直接使用位于内存的缓冲区来保存网络上接收的数据包。为完成对数据包的捕获,需要对网卡的工作模式进行设置。

2、IP数据采集卡的软件调试

  2.1 混杂模式

  正常情况下,网络接口应该只响应这样的2种数据帧:与自己硬件地址相匹配的数据帧和发向所有机器的广播数据帧。而对于网卡来说一般有以下4种接收模式:①广播模式:该模式下的网卡能够接收网络中的广播信息;②组播模式:设置在该模式下的网卡能够接收组播数据;③直接模式:在这种模式下,只有目的网卡才能接收该数据;④混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。

  所以我们把网卡设置为混杂模式,它就能接收传输在网络上的每一个信息包。

  2.2 Winpcap

  以太网介质接入控制(medium access control,MAC)子层及其以下层协议由硬件实现,逻辑链路控制(logical link control,LLC)子层及其上层协议均由软件实现。Windows操作系统下的网络设备驱动程序遵守网络设备接口规范(network device interface specification,NDIS),它在分层的网络驱动程序框架中规定了一个标准接口,从而使抽象低层次的硬件提供了高层次网络上的网络管理。我们采用的winpcap(windows packet capture)也是用的NDIS,将自己注册为一个协议处理驱动。

  Winpcap是windows平台下一个免费、公共的网络访问系统[7]。开发winpcap项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下各项功能:①捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;②在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;③在网络上发送原始的数据报;④收集网络通信过程中的统计信息。

  Winpcap的主要功能是独立于主机协议而发送和接收原始数据报。我们主要用到winpcap的捕获功能,通过对winpcap驱动和winsock的利用[8],很多编程变得简单,下面简要介绍数据包的捕获过程。

  2.2.1 获得网卡列表

  安装了winpcap驱动之后,其中的pcap.h提供了pcap_findalldevs()函数来实现获得网卡列表(主要是获得网卡的名称),该API返回一个pcap_if结构的链表,表的每项内容含有全面的网卡信息:字段名字、含有名字的描述、有关驱动器的易读信息。它定义为int pcap_findalldevs(pcap_if_t* * alldevsp,char* errbuf)

  参数alldevsp是pcap_if_t结构体的指针,如果函数pcap_findalldevs函数执行成功,将获得一个可用网卡的列表,里面存储的就是第一个元素的指针;Errbuf存储错误信息的字符串。

  返回值int:如果返回O则执行成功,错误返回-1。

  代码如下(去掉错误检测等代码,下同):

  pcap_if_t* alldevs;

  pcap_if_t* d;

  char errbuf[PCAP_ERRBUF_SIZE];

  pcap_findalldevs(&alldevs,errbuf);//获得网络设备指针

  for(d=alldevs;d;d=d-next)

  {d->name;}//d->name就是我们需要的网卡名字字符串

  pcap_freealldevs(alldevs);//释放alldev资源

  事实上,winpap也提供另外的高级信息。特别是pcap_findalldevs()函数返回的每个pcap_if结构体都同样包含一个pcap_addr结构的列表,它包含:一个地址列表,一个掩码列表,一个广播地址列表和一个目的地址列表。在此不再详述。

  2.2.2 打开相应网卡并设置为混杂模式

  打开网卡的功能是通过pcap_open_live()来实现的,下面是pcap_open_live的函数声明:

  pcap_t* pcap_open_live(char* device,int snaplen,int promisc,int to_ms,char* ebuf)

  Device就是前面我们获得的网卡的名字。

  它有3个参数snaplen,promisc,to_ms。

  ●snaplen用于指定所捕获包的特定部分,这样在某些场合就可以减少拷贝数据的数量从而提高包捕获的效率。

  ●promisc指明网卡处于混杂模式,此时网卡可以捕获到发往其它主机的数据包。我们正需要此功能。

  ●to_ms参数指定读数据的超时控制,超时以ms计算。当在超时时间内网卡上没有数据到来时,对网卡的读操作将返回。如果该参数为O那么意味着没有超时控制,对网卡的读操作在没有数据到来时将永远堵塞。如果为-1那么对网卡的读操作将立即返回,不管有没有数据可读。代码如下:

  pcap_t* adhandle;

  char errbuf[PCAP_ERRBUF_SIZE];

  adhandle=pcap-open-live(d->name,//网卡名称

  65535,//捕获包的大小

  1,//混杂模式

  1000,//读超时为1秒

  errbuf);///error buffer

  2.2.3 捕获数据包并保存为文件

  pcap_dump( )实现将数据包内容依次写入pcap_dump_open()指定的文件中,函数声明如下:

  void pcap-dump(u_char* user,const struct pcap_pkthdr* h,const u_char* sp)

  参数const u_char * sp即数据包内容指针。代码如下:

  dumpfile=pcap_dump_open(adhandle,argv);//打开文件

  /*以下代码循环捕获数据并调用packet_handler函数把数据存储到堆文件*/

  pcap_loop(adhandle,0,packet_handler,(unsigned char* )dumpfile);

  void packet_handler(u_char* dumpfile,const struct pcap_pkthdr* header,const u_char* pkt_data)

  {pcap_dump(dumpfile,header,pkt_data);}

3、设计结果

  数据包保存下来之后就可以读取出来供应用软件分析。为验证捕获效果,我们通过接收另一个机器的已知数据IP包然后用该软件抓包,再用pcap_open_offline()打开一个堆文件,用pcap_lpop( )来循环从文件中读取数据,并打印了其中每个包的内容,证实了我们的设计。

  在文中我们采用的所有代码在VC编译环境下用C++语言实现[9],可以打印出捕获的数据包。至此,整个数据采集完成并得到验证。该方案通过初步实践确认在TD-SCDMA网络建网初期数据量不太大的情况下完全能实现IP数据包的采集。如果在一个繁忙的网络上进行截获则需要对应用程序进行必要的性能优化以避免丢失数据包,可以采用多线程的方法来解决:程序中使用3个线程进行操作:①只进行捕获操作,它将驱动程序获得的数据包添加到数据包队列的头部;②只进行过滤操作,它检查新到的队尾的数据包,检查其是否满足过滤条件,如果不满足则将其删除出队列;③进行数据包处理操作。

  如果有要求更高的应用,就不得不采用一些专用芯片如网络处理器进行处理,对此我们将进一步完善设计。

4、结束语

  在当前3G尚未商用的前提下,我们通过多次模拟实验证明,利用该IP数据采集卡,通过100 M网卡读入由TD-SCDMA网络的相应接口传输过来的IP数据包,利用winpcap驱动捕获数据包并将其转换成可以识别的数据供上层分析是能够满足TD-SCDMA网络测试要求的。事实上,采用winpcap驱动方案对网卡的型号并无严格要求,该采集卡具有运行稳定高效、代码简单、同时方便改进等特点。

  参考文献:

  [1] 王炎.TD-SCDMA系统测试情况分析[EB/OL].[2005-08-04].http://www.cttl.com.cn.

  [2] 3GPP TS 23.002 V5.12.O.Network archi-tecture[EB/OL].(2003-09-20)[2006-05-30].http://www.3gpp.org/ftp/Specs/2004-09/Rel-5/23_series/23002-5cO.zip.

  [3] 3GPP TS 25.401 V5.9.O.UTRAN overall description[EB/OL].(2003-09-20)[2006-05-30].http://www.3gpp.org/ftp/Specs/2004-09/Rel-5/25_series/25401-590.zip.

  [4] 3GPP TS 23.060 V5.9.O.General Packet Radio Service(GPRS);Service description;stage 2[EB/OL].(2003-09-20)[2006-05-30].http://www.3gpp.org/ftp/Specs/2004-09/Rel-5/23_series/23060-590.zip.

  [5] 3GPP TS 29.060 V5.11.0.General Packet Radio Service(GPRS);GPRS TunneIling Protocol(GTP)across the Gn and Gpinter-face[EB/0L].(2003-09-20)[2006-05-30].http://www.3gpp.org/ftp/Specs/2004-09/Rel-5/29_series/29060-5bO.zip.

  [6] 李小文,李贵勇,陈贤亮,等.TD-SCDMA第三代移动通信系统、信令及实现[M].北京:人民邮电出版社,2003.

  [7] The WinPcap Team.The WinPcap manual and tutorial[EB/0L].[2006一05—30].http://WWW.winpcap.org.

  [8] ANTHONY J.Jim 0hlund.Microsoft Windows网络编程[M].2版.北京:清华大学出版社,2002.

  [9] DAVID J.Kruglinski.Visual C++技术内幕[M].4版.北京:清华大学出版社,1999.

  (责任编辑:刘勇)

相关文章
· TD-SCDMA网络无线利用率提升
· TD-SCDMA该被打入冷宫吗
· TD专利长期免费成活雷锋 曾与高通谈判遭拒
· TD-SCDMA用户数突破2亿
· 中国移动TD-SCDMA网络累计总投资超1500亿
· 摆脱路径依赖束缚 F频段新建模式性能更优
泰尔网版权与免责声明:
①凡本网注明“来源:泰尔网”的所有作品,版权均属于泰尔网,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:泰尔网”。违反上述声明者,本网将追究其相关法律责任。
② 凡本网注明“来源:XXX(非泰尔网)”的作品,均转载自其它媒体,转载目的在于科学研究和传播交流更多资讯,不代表本网赞同其观点和对其真实性负责。
③ 如因作品版权和其它问题需要同本网联系的,请在30日内进行。 联系信箱:cttl@catr.cn
5月4日,工业和信息化部公布了《通信工程建设项目招标投标管...
2014年世界电信和信息社会日的主题是“宽带促进可持续发展”...
 ·
 ·
 ·
 ·
 ·
 ·
热点专题
泰尔数据
中国通信标准化协会    电信终端测试技术协会    信息名址服务管理中心    工信部电信经济专家委员会   
中国下一代互联网示范工程专家委员会    中国通信企业协会通信网络安全委员会    中国通信企业协会增值服务专业委员会    云计算发展与政策论坛   
Copyright©2008-2014 cttl.cn All Right Reserved. 京ICP证080582 京公网安备11010802010351号 网站声明