公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。; }2 V2 h+ S+ k3 Z/ r' u
) X8 v* w5 }0 s5 a4 P" ^# y 远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:( a& q9 z2 U/ b6 |- H7 k
* Z: }( ~" u2 B
; S' f9 Z# O2 r7 h, N+ [$ T( e
, Y3 F8 R5 K; q* W' F
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。; a6 ?% C8 L- t
! ^1 ?) V9 z; h$ j% v$ j用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
& R8 ?8 U |3 \ c( J) K5 W# W5 ?
: \5 F/ v- b6 P1 F6 T G& P( P2 Z2 C8 }% u q7 a
4 r" E# A; W' H6 A) } T3 i( ]
是固定电话拨打手机,听一下是那方通话掉了?
& P" `5 Q# Q' o o# {7 K4 i
7 s: C% X' l4 o
5 `) _" c) a! p0 z' G% ?. L0 D
. g# l. ?/ A* z8 F% K听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
- z. v5 U. U- I! U4 P3 B- u7 T T, y6 ~& f: w3 G g1 s7 A5 I: l3 s
但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?
: C8 s4 O. Y/ f3 e* b Q# t3 Q1 R( v, B* q3 z" s
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?, y# J- A8 s, J
! \7 ]) A- y8 H7 A
2 L& p% w3 ]: ?
) {" D- j1 j8 E+ \7 _因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。2 v) v& r$ g9 b& J5 W
! g4 k9 L: w4 [4 @5 J觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
3 B. n" M' ]$ q6 _- v9 @% v @1 t8 _- ~; U8 D! y& a! ]; j' n
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?
% ]3 }+ }' f( N$ f+ c4 j( E8 m6 e) i9 {" n; J, ]
再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:
! j' O6 U: l$ Q, a: @ [
0 n3 T( ?0 p: ^/ v6 l; K3 F2 g% y# i0 D7 H! e
! G: p, `& `( d5 C# N7 a5 ^( \; ^* l: O) X( Y6 ~
: A# R1 W, S Z+ A' n+ N" B0 g
发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。$ u. \ A/ b% {. x- b
w" i% D4 E0 s. X# @( D转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
4 C. G8 O' u$ F: C4 H2 c9 K' k4 s
8 a( t; d7 Y# D奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。; @4 t: b9 v- U
; t& |( F) H) {4 n! m& d: ~1 _) L0 [
看这几个invite有啥特殊的地方?6 P" T6 w5 z8 I$ F. h
! ]+ t0 g2 ?# u
7 }. f2 Y1 F6 d0 i! c+ w
( R: m0 ~$ s) D8 D1 Q% [( G {1 ~显然不是我司的产品00-0e-5e打头的mac地址。
9 I: G! f* k( e% w6 P
+ [4 D0 ^5 ?$ n对比正常呼叫的mac地址
! d- |9 k# K5 f7 J7 \, P3 o! M. k7 Q6 O
1 h2 Y8 J- o: N! ~' ^& O# s6 z( a. }
7 D+ r! ^/ G+ p7 M据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。
! K8 z+ ]4 K' W- K- I" q7 F: h; {) i- g$ F
检查下面的iad有一个172.31.234.108的设备:
6 o# M3 m) G+ @- b
0 W, q) p) p3 v) N6 a
# u+ e2 n7 J- {2 s6 {3 L% e3 q: X- m' f' a# w+ ]+ ? K, F6 O
让现场更改这个ip地址,防止和e1板冲突,后故障消除。
: Y( g4 U$ p( B3 M
* q6 Y9 P) S( h# u% t! l' O: ]+ ~7 S改天抓的包里:
2 K: @7 }* Q: v5 h0 H2 c/ \3 c( a) T2 I$ f: U8 j% c7 _9 ?8 `
. c o% B% e! C3 ^# ?& T, P
" G8 R6 L. f# f2 v, M改成了这个ip地址。2 J; L! g. n, p" d% j9 \( k
, |7 r6 \ ?1 k# Y9 ^' ?% {3 H回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
0 h7 _) }4 W, |& v
; |, t' B! f9 N; m3 ^5 M
% ?3 J4 j0 l9 Z+ }7 U% X* A8 t
/ r1 |: m4 e4 X, N+ s: [; k
! t8 D C" ` B8 N# R, I v7 w" J& ~7 e K1 N4 Z
; C Z/ j( f0 t
: _; k* w( y8 M. y* A
. a X9 K8 X9 m! R7 @( b/ t, X
% ^8 H {7 O8 r3 }5 A( j9 A4 f" H/ w& m, t4 d& Z9 e. H
% t- [; d0 K9 O9 V9 K9 p4 c4 ?1 a+ \2 ]! H* }
" M* T. N- X/ l- V- c
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:; `9 E5 K, ? o
! n: a& n* S: B
' Z) b/ h, Q/ x/ u* k, \5 P3 k# v! ~! V$ b
经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。
% u% p* G& a0 L8 ]# o/ E9 @2 |4 @0 u5 ]
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
# Y$ c; W5 u1 F7 t1 o, l# k————————————————
0 d- ]- M& [' y4 U" S1 u8 p版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
8 R/ B$ y8 V6 Q9 J2 E6 S原文链接:https://blog.csdn.net/wj31932/article/details/100057318
; O' d- t3 e2 _5 ^6 c1 c, L& j5 z
1 H9 Y( H6 P" y5 a |