精品案例Wireshark分析音频视频的方法应用.docx
- 文档编号:12414171
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:28
- 大小:2.46MB
精品案例Wireshark分析音频视频的方法应用.docx
《精品案例Wireshark分析音频视频的方法应用.docx》由会员分享,可在线阅读,更多相关《精品案例Wireshark分析音频视频的方法应用.docx(28页珍藏版)》请在冰豆网上搜索。
精品案例Wireshark分析音频视频的方法应用
Wireshark分析音频视频的方法
Wireshark分析信令音频视频的方法
【摘要】当我们在网络中获取流媒体的数据包时,如何判断数据和解析数据成流媒体工作的首要任务,我们可以利用Wireshark这款软件进行分析网络数据包,同时可以分析丢包率、时延、抖动,对编码也可做出相应的解析。
【关键字】Wireshark、信令、音频、视频
一、概述
1、Wireshark分析信令流程
以VoLTE基本呼叫为例
1、使用SIP过滤出来SIP信令
根据筛选出来的消息,可以点开消息查看任一SIP消息的内容:
2、查看流程图
点击Telephony->VoIPCalls
弹出来的也面,选择这一路呼叫,点击Flow
流程图清晰的显示了呼叫的流程和收发的端口号以及时间戳。
根据时间戳可以分析呼叫时延,接续时延。
以及终端收到后发送RTP的时间间隔等。
可以选择SaveAS进行保存
保存的文件可以使用记事本打开:
(一线和客户处理问题的时候,可以采用这种方法)。
3、计算SIP收发消息的个数
选择Telephopny->SIP
下面清晰的统计到这次呼叫中,每个消息的个数。
以及是否有重传的包。
(定位重传问题)
二、背景介绍
1、如何使用使用Wireshark抓包
1、抓包
(1)点击Capture->Interface选择网卡
(2)点击Options可以对抓包做一些设置,比如抓到包后保存的路径。
抓包条件的设置等。
设置完成后,启动抓包。
如果设置了停止条件,满足条件后,抓包停止。
2、过滤表达式
抓到包以后,可以根据需求,把自己想要分析的包过滤出来。
比如想分析信令
可以在Filter输入sip,点击Apply,sip消息就全过滤出来了。
就可以很方便的分析想要的消息。
过滤规则:
(1)可以根据IP地址过滤
源地址过滤:
ip.src==50.4.17.35orip.srceq50.4.17.48表示源地址为.35或者.48的数据包。
目的地址过滤:
ip.dst==50.4.17.35orip.dsteq50.4.17.48
e.g:
ip.src==50.4.17.35orip.srceq50.4.17.48
(2)端口过滤
tcp.dstporteq80/目的端口为80的TCP消息
tcp.srcporteq80/源端口为80的TCP消息
tcp.porteq80orudp.porteq80/端口为80的TCP和UDP消息
tcp.port>=1andtcp.port<=80根据端口范围进行过滤
e.gtcp.port=80
1)协议过滤
比如sip/tcp/udp/dns/ftp/http/arp/smtp/ip/ssl等。
e.gsip
(3)根据包长度进行过滤
udp.length==28这个长度是指udp本身固定长度8加上udp下面那块数据包之和。
tcp.len>=7指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len==94除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后。
frame.len==119整个数据包长度,从eth开始到最后
e.gudp.length==28
frame.len==1414
(4)http模式过滤/定位业务发放的时候可以使用
http.request.method==GET
http.request.method==POST
http.request.uri==logo-edu.gif
httpcontainsGET
httpcontainsHTTP1.0
GET包
http.request.method==GET&&httpcontainsHost:
http.request.method==GET&&httpcontainsUser-Agent:
POST包
http.request.method==POST&&httpcontainsHost:
http.request.method==POST&&httpcontainsUser-Agent:
响应包
httpcontainsHTTP1.1&&httpcontains200ok&&httpcontainsContent-Type:
httpcontainsHTTP1.0&&httpcontains200ok&&httpcontainsContent-Type:
(5)表达式
采用连接符and/or(&&/or)、!
等等
!
(ip.src==192.168.1.1)and!
(ip.dst==192.168.1.243)
可以根据不同的条件进行组合过滤,过滤出来的数据包。
可以选择
File->exportSpecifedPackets对过滤出来的包根据自己得需求进行保存。
有些版本没有这个选项,那么选择SaveAS。
三、实施方案
1、Wireshark分析音频RTP报文
对于一些RTP包(例如语音编解码为G.729的RTP包),Wireshark默认不会将其解析出来,这时可以通过手工操作进行解析:
选定一个UDP包,点击鼠标右键,在弹出的快捷菜单中选择“DecodeAs…”项,弹出如下对话框。
1、丢包率、时延、抖动分析
(1)丢包率,抖动分析
选择Telephony->RTP-ShowALLStreams可以看到RTP的统计,丢包率,抖动。
说明:
SSRC是在RTP协议层面选择的,它用来表示编码后的流,也可以指示一定的RTP打包方式.
SSRC是一个RTP层面的标识,它用来标识一个独立的RTPstream,同一个RTP会话内,多个不同的RTPstream不能共用相同的SSRC。
选择一条流,点击Analysie可以进行流分析。
(2)时延分析
另外,可以根据RTP包要求的打包时长和实际RTP包之间的延迟进行比较,来判断RTP流是否正常。
例如下图中,载荷类型为EVS,载荷长度为110Byte,对应的打包时长为20ms,也就是说,每隔20ms发送端会发出一个RTP包、接收端收到一个RTP包。
1)查看PT(载荷长度)
2)查看打包时长(根据O-A协商,可以在SIP信令里看到打包时长)。
3)进行流分析界面,下图中显示的RTP包时延较为均匀:
Delta:
也就是说Delta指的是在进行抓包的网卡上接收到前后两个RTP包之间的到达时间的间隔。
可以知道这只是在抓包网卡层面上的分析。
2、音频编解码占用带宽计算
在网络中,语音编解码通过RTP协议打包,发到IP网络上。
对一个语音包来说:
包长度=Ethernet头+IP头+UDP头+RTP头+有效载荷
Ethernet头=208bit(26byte)、IP头=160bit(20byte)、UDP头=64bit(8byte)
RTP头=96bit(12byte)
包长=528bit+有效载荷
有效载荷=每秒有效载荷比特数×打包周期
带宽=包长度×每秒包数=包长度×(1/打包周期)=(528bit+有效载荷)×(1/打包周期)=(528bit+(打包周期(秒)×每秒的比特数))×(1/打包周期)
=(528/打包周期)+每秒比特数
所以:
G711:
每秒有效载荷比特数是64k所以G711的带宽=(528/20+64)Kbit/s=90.4Kbit/s
每秒比特数可以通过Wireshark进行查看。
3、RTP流中编解码速率
获取该编解码的PT值,直接点开wiresharkRTP消息查看,或者O-A协商的时候,通过SIP消息看最终协商成功的PT值。
1)查询183消息
2)在RTP报文中查看
3)配置wireshark可以通过RTP流看见编解码发送速率
点击RTP流,就可以看到编解码速率。
PS:
然后根据上面的计算公式,就可以计算编解码带宽。
4.播放RTP流中的语音
(1)根据第1,丢包抖动分析中,选择一个呼叫后,点击“Play”按钮,可以将RTP流中的语音播放出来。
首先会要求选择一个jitterbuffer值:
Jitterbuffer参数表示对RTP流的抗抖动能力,一般取值范围为30~50ms,如果接收端的jitterbuffer值太小,则有一部分数据包会被丢弃,Wireshark能够根据参数来模拟RTP流处理的情况。
设置好jitterbuffer参数后,例如20ms,点击“Decode”按钮,进入如下界面:
上图中红色方框中的内容显示,如果jitterbuffer值为20ms,则接收端的数据包会有丢失,从而引起语音质量变差。
可以选择一个语音流进行播放,也可以选择多个语音流同时播放,来体会真实场景中的语音质量。
(2)根据Wireshark提取的音频RTP流,使用Rtpplayer和HMEDemo或者vlcmediaplayer进行播放。
2、Wireshark分析视频RTP报文
视频的丢包,时延,抖动的分析方法和音频的一样。
下面主要介绍一些视频特有的一些参数的分析方法。
1、视频图像的分辨率
分辨率:
通过抓包查询分辨率,先把UDPdate“Decodeas”成RTP,然后在过滤条件中输入“h264.pic_width_in_mbs_minus1”。
在RTP的H.264参数中查找h264.pic_width_in_mbs_minus1,h264.pic_width_in_mbs_minus1的值为分辨率宽度模16值减1,可查出对应的分辨率.
h264.pic_width_in_mbs_minus1=29对应分辨率为(29+1)*16*(39+1)*16=480*640为QVGA。
2、码率计算
Wireshark的Filter中输入过滤条件“(rtporrtcp)&&(ip.dst==UEIP)&&(udp.dstport==UEVideoport)”,选择“Statistics”>“Summary”,在Summary窗口中找到Displayed列,并用Avg.packets/sec和Avg.packetsize计算码率。
计算方法为:
视频码率=8*Avg.packets/sec*(Avg.packetsize–76)(注:
74为样例的Eth/IP/UDP/RTP包头部分的大小)
1)包头大小的查看
如下图:
IPV4包头大小为54(IPV6的为76)
2)码率的查看
3)查看码率整体信息
从Statistics->IOGraphs可以看到视的到组播流的波形,平均码率以及有无断流等信息。
3、用Wireshark导出可播放的H264文件
(1)将附件的h264_export.rar解压,将附件中h264_export.lua放到wireshark根目录。
(2)在wireshark根目录下,找到init.lua文件,打开该问题,修改如下:
1)如果该文件中有修改init.lua配置,若有disable_lua=true这样的行则注释掉,注释方法参考源代码中注释;
2)在该文件末加入dofile("h264_export.lua")
(3)查看RTP包中的H264编解码的PT值,转换为H264
点击edit->preference->protocols->h264在这里填写实际的PT值,点击Ok
(4)导出H264文件
1)点击Tools->ExportH264tofile
2)点击exportALL.
导出完成后,在原文件的目录下,生成两条H264文件,文件名fromxxxtoxxx,方便确认视频的发起方和接受方。
(5)播放视频文件
将该文件拖入elecardStreamEye或者VLCmediaPlyer进行播放
3、音频和视频还原成音/视频
通过Rtpplayer和vlcmediaplayer来还原音频和视频。
该方法,单独播放音频、视频均可。
(1)通过Wireshark选择菜单Telephony>RTP>ShowAllStreams,显示抓包文件中所有RTP流;
点击选择【Payload】为H264这行后,点击【SaveAs】保存成d:
\v.rtpdump;点击选择【Payload】为AMR-WB这行后,点击【SaveAs】保存成d:
\a.rtpdump。
(2)用SIP信令过滤,找到O-A协商的183的SDP信息,并保存成ASCII码文本文件d:
\mrbt.sdp;
Copy出来后,保存为d:
\mrbt.sdp;注意:
precondition相关的可以删掉,注意视频这一块支持AVPF把F删掉。
修改后:
注意音频和视频的端口后。
(3)把rtpplay.exe放到和保存上述文件相同的路径。
保存成d:
\rtpplay.exe。
写一个可执行文件,play.bat。
内容如下:
端口号修改成上面SDP里面的音频,视频端口。
(4)用vlcmediaplayer打开mrbt.sdp。
(5)点击play.bat,vlcmediaplayer就可以音/视频同时播放。
四、提升总结
Wireshark是一款功能非常强大的抓包、协议分析软件,掌握相应的分析技术,可以非常方便的对常用的RTP报文进行解析,从而帮助我们对音频或者视频的某段数据进行分析,分析丢包率、时延、抖动和编码速率,帮助我们回溯问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 案例 Wireshark 分析 音频视频 方法 应用