利用Wireshark软件进行信令分析

2013-10-16 12:01李山松
计算机与网络 2013年2期
关键词:信令解码交换机

李山松

(河北远东哈里斯通信有限公司河北石家庄050200)

1 引言

通信设备之间的组网都是通过标准的信令协议达成的。处理联网故障,可以通过分析2 台设备之间收发的信令消息找到故障点。但是这些信令数据的可读性比较差,要想了解信令包含的具体内容,商业化的信令分析仪是一个很好的工具,但是价格比较高,携带也不是很方便,不能在工程人员中进行大面积推广。这里就探讨一下如何使用开源软件W ireshark 为工程联网故障的排查提供服务,进而加快联网问题的排查速度。

2 W ireshark 软件介绍

2.1 软件介绍[1]

W ireshark 软件,以前称为Ethereal 软件。1997年底,由Gerald Combs 完成了最初版本的编写,并将其置于GNU GPL通用许可证的保障范围之下,使用者可以免费获得软件和其源代码,并拥有针对其源代码修改和完善的权利。之后,众多程序员参与了软件的编写和完善。2006年6月,因为商标的问题,Ethereal 更名为W ireshark。目前,W ireshark 已经是全世界使用最广泛的信令分析软件之一。

2.2 如何用W ireshark 读取信令数据

W ireshark 软件相当优秀,但是他本身并不能直接读取通信设备输出的信令消息。如果能够解决这个问题,其他问题皆可迎刃而解。通过分析,发现W ireshark 支持读取PCAP 格式的封包捕获文件,接下来的问题就是如何能把通信设备输出的信令消息转换为PCAP 封包格式。下面以交换机PR I 中继使用的Q.931 协议为例子,详细介绍这一转换是如何完成的。

3 PCAP 文件格式[2]

为了生成PCAP 文件,首先需要了解PCAP 文件的结构。PCAP 文件格式是一种在协议分析中用到的数据包存储格式。但是,目前还没有现成的工具软件能把交换机输出的信令信息打包为PCAP 格式的文件。因此,这一转换过程需要自己编程解决。PCAP 文件由一个文件头和若干个数据包构成。每个数据包前面还有一个头部结构,记录数据包的捕获时间、长度等内容,下面是用C 语言描述的数据包头部结构:

其中:

GMTtime 和m icroTime 是数据包的捕获时间。

caplen 和len 是所捕获数据的长度。

下面是PCAP 文件头的C 语言结构定义:

其中:

magic 为标识位:取值为0xD 4C3B2A1

version_major 为主版本号:默认值为0x02

version_m inor 为副版本号:默认值为0x04

thiszone 是区域时间:可以设置为0

sigfigs 是精确时间戳:可以设置为0

snaplen 是数据包最大长度:可以设置为0

linktype 是链路层类型:将此值设置为0xB1,表示后面的数据包都是按照DLT_LINUX_LAPD 的帧格式进行存储。之所以选择这种帧格式,主要是因为DLT_LINUX_LAPD 在标准LAPD 帧格式的基础上,扩展出了一些额外的信息字节,通过这些字节,可以标识出数据包的收发方向。到这里,又涉及到了一个新的数据结构DLT_LINUX_LAPD 帧,下面介绍一下这个帧结构。

4 DLT_LINUX_LAPD 帧

DLT_LINUX_LAPD 是linux 操作系统为了处理LAPD帧而定义的一个数据结构,这里借用一下这个结构来封装交换机输出的信令消息。可以使用下面的C 语言来描述这个帧的头部结构[3]:

sll_pkttype 为数据包类型,如果数据包是对端设备发送给本机的,取值为0。如果数据包是发往其他设备的,取值为4。

sll_protocol 为协议类型,取值0x0030

其他项目在程序中不使用,都置为0。

5 数据的封装层次

数据的封装分2 步完成。

①首先在交换机跟踪到的信令消息前面加上一个4 字节的LAPD_HDR,构成标准的LAPD 数据帧[4]。然后,在LAPD帧前面加上一个DLT_LINUX_HDR,构成DLT_LINUX_LAPD 数据帧。最后,在DLT_LINUX_LAPD 数据帧的前面加上PKT_HDR,构成PCAP 文件的一个基本数据单元。其数据单元结构,可以表示如下:

Packet= [PKT_HDR][DLT_LINUX_HDR][LAPD_HDR][原始信令消息]

②将封装好的数据单元存入PCAP 文件。这个过程比较简单:先创建一个文件,然后在文件中写入文件头PCAP_FILE_HDR,之后顺序写入第1 步生成的数据包,最后关闭文件。生成的PCAP 文件,其结构可以表示如下:FILE=[PCAP_FILE_HDR][Packet_1]…[Packet_n]

6 使用效果

根据上面的描述,制作了一个格式转换工具,用于将交换机跟踪到的PR I 信令消息封装成W ireshark 软件可以读取的PCAP 格式,然后用W ireshark 进行解码[5]。下面是解码前后的数据对比:解码之前的原始数据:

原始数据包含"信令标识"、"承载能力"、"电路标识"、"主被叫"等信息,这些信息都是以十六进制代码的形式进行显示的。原始数据的可读性比较差,在工程实践中使用起来比较困难,往往需要求助开发人员对信令数据进行人工解读。为了提高工作效率,可以使用转换工具将跟踪到的信令源码打包到一个PCAP 文件,然后使用W ireshare 对这个文件进行解码。

下面是解码后的主叫部分:

从上面的例子可以直观看到,解码出的数据的可读性大大提高。那么解码的结果是否正确呢?参照技术规范《YDN 034.2-1997 ISDN 用户-网络接口规范第2 部分:数据链路层技术规范》对以上解析出的数据进行验证,以上关于消息类型,主被叫号码[6]等描述均正确。从以上的例子可以看到,通过构建PCAP 数据包的方式,可以很直观地对信令数据进行解码。有了这个工具的帮助,可以极大地提升工作效率。

7 结束语

W ireshark 软件可以解析的协议非常多,并且可以通过Lua 工具方便的添加对于新协议的支持。上面仅仅演示的是通过构建数据包,让W ireshark 帮助解析PR I 中继的Q.931 协议。同样,也可以通过构建数据包的形式,让W ireshark 分析其他的通信协议。在W ireshark 的帮助下,工作肯定更有效率。特别是在一些工程调试时,由于还要顾及到成本问题,昂贵的信令分析仪很难普及。在这些领域,掌握自己构建PCAP 文件的技术,进而利用W ireshark 对信令数据进行解析,更能发挥这一自由软件的价值。

[1]CHR IS S.W ireshark 数据包分析实战[M].北京:人民邮电出版社,2013:39-40.

[2]吕雪峰,彭文波,宋泽宇.网络分析技术揭秘[M].北京:机械工业出版社,2012:361-363.

[3]于 跃,朱程荣.基于Linux 嵌入式嗅探器的设计与实现[J].计算机应用与软件,2007,24(6):162-164.

[4]YDN 034.2-1997ISDN.数据链路层技术规范[S].

[5]白 洁.用W ireshark 抓包分析帧格式[J].电脑知识与技术,2011,07(28):6831-6832.

[6]YDN 034.3ISDN.第三层基本呼叫控制技术规范[S].

猜你喜欢
信令解码交换机
《解码万吨站》
解码eUCP2.0
SLS字段在七号信令中的运用
更换汇聚交换机遇到的问题
移动信令在交通大数据分析中的应用探索
基于地铁交换机电源设计思考
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于信令分析的TD-LTE无线网络应用研究
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机