公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。; D0 F5 q) m2 v( f. y' K4 i
) \0 _2 Y% m f4 _& w- V- B 远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:
9 D2 m: p0 x- P1 n; o3 H; {! z+ }0 d
3 u9 t6 I% c* V1 u' K
9 W e1 T4 U7 X6 v/ A多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。
! _1 o$ B) Z0 B2 x2 A0 Y: s$ z+ G: E# _! b' D9 I* S* ^* {6 I0 U- x
用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
2 M6 ]! ?2 a. h' ^
! d* h2 x4 Q9 N7 t4 D' {. G$ v! Q: i; s
9 u# k! ]3 H/ i$ C! f% Y: ~( f* n6 D4 o6 A t
是固定电话拨打手机,听一下是那方通话掉了?
( o& k, L8 M& c1 b1 I" U u' C* a5 @3 k( f% R
9 ^( h S$ t9 k, {* W
I! |1 D+ u3 M/ Y _听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
1 B( O8 |4 O8 F6 \% h" l) m8 d6 T0 a% z! R
但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?
% I9 k; d n2 h" e6 v
: b+ |- b) g* l+ ]* R1 W8 Z" w J* O据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题? S+ X% s d5 f& w8 C# W
3 b' m+ a, n9 M4 k- l( y4 i7 f7 p
7 g: w) w/ o. k0 l5 i5 C/ ]* P& ^6 H) M5 Y B, T& [) U
因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。; [5 l' X+ t- ^! A ]
7 Q7 _ G1 l3 ~1 ]- X觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
' h+ c1 c% Q4 ^, h- L* [$ ~* R/ y8 i5 h$ ^) y$ H' U$ F) r
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?
; S( t1 G$ J p8 Y7 E* O; P
; d8 u' X/ y+ p6 M. K再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:
: g6 m; B3 i$ O$ v7 e U# @8 e ^6 [) }+ p- M; G6 [
! r4 g9 I( ~5 y. H! i0 N/ D! o+ Q
* L8 d0 {, d5 A; c5 r9 O1 D: [4 k2 P
) q2 S1 G$ M, d! V% {3 {; `: w4 v; ]$ s发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。: [ v1 R& A/ B+ A9 D
# X& O7 D) J# c0 z/ a5 A
转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
U. P8 T8 f4 K
2 h; t! w, [# q8 u# x奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。/ f# U* v! f& I- I" _
5 z2 f* x: ?. |
看这几个invite有啥特殊的地方?. s! B# N& R3 j3 b
7 C; q' K( G, R! s* i/ x2 J
; j$ Y+ A: K+ Q, B. l, e+ O+ G2 x2 W" c8 w
显然不是我司的产品00-0e-5e打头的mac地址。( Q1 ]2 I& h" E2 @8 Q
/ I* y+ h' q* e j- K; l, K: g对比正常呼叫的mac地址
$ R- ?* z0 [/ U9 ^
4 {$ j2 c2 K: B2 o" m
* `- l5 w- v* M3 d E) ]% [1 e* Q' K) E: H( K0 s
据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。
6 l! G& y+ t* B
4 z6 R0 ~- ^ W9 f& _检查下面的iad有一个172.31.234.108的设备:
! |: p/ z5 P q, m4 N7 e& K( ]$ H8 N6 I% }9 j8 t6 f
7 p7 B# @$ E$ r
8 z8 z8 i+ e& L- [) p/ X
让现场更改这个ip地址,防止和e1板冲突,后故障消除。
) e- Y% z( e$ }/ A, i8 e3 w& }: d: \" C& y3 M3 R1 Q
改天抓的包里:% w) y( ~+ E0 ]. f* C7 G" \
: W3 v! I) {; Q( Q! W4 [% ~! b: P
; O5 o3 L: c2 p; M7 G8 o8 F$ F% k& b$ ~; _4 H! c
改成了这个ip地址。
9 ?0 \' v R" x2 G5 S2 v
3 |" T5 r2 ~2 x) }; @4 e回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。8 F$ q: ] l# n6 c! @3 w
0 v# v& [7 [" _* } T5 q2 f5 E- @5 f2 a3 H" |
4 M; e4 g: }# |0 V+ Z- z" e
; T( k6 z$ n; n2 W; J
0 L8 z# Z+ \& Q1 Q; b
" |. C; l1 t/ r9 E8 E S& F
) j$ N1 y6 Z9 I0 |
5 d' J$ D- _0 _( a
; I6 P& w! s! \" ?/ }* b, r$ |
5 l. k4 T9 i' @ g4 x
. l1 h/ _- q2 G
% `) W ?0 P& { }5 k1 p8 J7 V6 d$ A1 _- h5 W/ |& }/ s2 Y( _4 ?
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:7 ^" ] Y. b1 N3 X4 p
: g8 [$ E/ o0 x" B6 o8 i) \+ I/ m+ T( w s& K# \3 Y) l: U2 x, T
! J9 Z$ B- q& }- v" J0 B
经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。# V9 L& ~. e7 x+ V' N* D8 s; v
" Q" \; c3 g! x
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
' ^+ e' j, E5 q. }3 m3 k3 i1 v————————————————
3 Q7 X% F$ v: z, x3 c$ j- W: o版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。! w/ l4 l8 x1 U- t8 d- g5 k
原文链接:https://blog.csdn.net/wj31932/article/details/1000573188 e# O1 G! v, X4 ?+ [) b
, M2 z& Q) T! G( X9 A |