公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。+ |) }$ v# G$ e$ {, n
3 D7 l$ l9 v, N- h6 B$ d1 E
远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:3 L9 D1 b, a0 ^$ m
( P. q+ {' l) Z6 y0 T3 I
( M+ n& x2 Q' {
/ ~5 S$ Z4 S( n( G. @! u多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。2 x% w" e9 e2 j( o
# h/ c8 v) `3 ^) ]' q$ |! @& ]' Z用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,' K5 ]: U/ {! o$ \' K- ~
) H1 q+ N/ v- S% j/ x3 I0 q
7 {6 X. C( [! d! m3 |4 v: [9 A. R6 {- s9 ?
是固定电话拨打手机,听一下是那方通话掉了?
0 k# Q7 D% H ]1 |
6 M$ |8 z3 X( P* X1 n$ p4 b: `' n8 F( i! A# A$ f2 c6 q
" c' a. S7 u4 K) J, C3 @听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。5 z) \+ _, H" J+ e7 Y4 _1 J6 S+ k
" H" R- Q% R$ J2 f( O" [但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?4 T; Y+ Y) y0 O3 k7 a8 l% q
% _9 [: `6 x" x2 O% R
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?
3 o* ~. Q( s3 I9 k' `" u A# K7 P5 f+ @% N5 i
0 r1 j# J3 c+ {4 a5 L @- J
7 u6 O! m- x& x( s+ H
因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。
. t. \2 E* y& e$ w4 ^' [, U6 `. H: x
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
- G" n' e" x" w1 w Y+ }/ C1 q3 Y# h2 V' T
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?0 O" [' f7 G$ b3 V/ O8 q9 V
i+ S9 K7 @. W4 E% r1 O0 h
再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:+ d* @" z h% p* Y
1 p2 w; n+ B+ w# P% Z
) Q; t8 f) @, x
7 E [6 z& {! o# w
5 @( W4 I1 V! Q' J! w7 a; Q8 G6 t: [: U
发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。# `4 a8 [4 x" I3 D0 Z
3 p5 D8 I, ^/ l& J3 @, U0 `" z
转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
2 Z9 ]( \* |6 n0 I/ e8 q% }3 T, a \9 N W# E3 Z
奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。5 O" e2 J% r7 b- w
4 H1 h3 W: O! q+ O5 Z看这几个invite有啥特殊的地方?- t/ ?& V% c f6 e
; B, c- V0 o: b9 M$ I
' u9 I! \/ i8 a9 z& t$ \. g6 A
9 e% w l9 u& d9 r1 @. D V9 k, o
显然不是我司的产品00-0e-5e打头的mac地址。
; P# p. i* _* Z4 F
7 g* t, }; a/ L1 Q6 j. O) w对比正常呼叫的mac地址
8 x# g3 U K& e- o6 e0 b% W
+ D* n' ~+ a, Z2 _7 V
0 x+ l0 r7 l; p: k/ v" M- @' E
1 e7 {* C! m; u7 D据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。
9 n$ `( P4 |) \6 C+ {4 J! w3 w
0 y: x, s" p7 X$ T. P/ C" A检查下面的iad有一个172.31.234.108的设备:
' `+ q& M: c) L: B( m9 U* U* r7 v" o; i& y+ P1 B1 m
/ G! B, D7 Q$ a8 s
# j1 J! R8 A4 `/ k! F% e让现场更改这个ip地址,防止和e1板冲突,后故障消除。
3 \7 q4 a9 s @& K. [! @
! U$ Y, A) G3 w4 f改天抓的包里:4 V/ L- C; z5 T' J, V! j! F5 \, i
" t. A$ R* M7 Q& [
! Z; m8 x/ _0 I& Z; m: d8 j+ f3 {+ K/ v$ H2 y- v5 J
改成了这个ip地址。7 M8 E6 b, _' U, C! Y7 v! U/ Y. A
# D6 n. _( Z$ M" Q
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
, J, E y6 B) b J, U" B9 Z* R" A* v/ j
& n; ], T+ b. \6 A8 B r& j- {5 {, A' x" w# v$ \. |" a: W H
3 B8 b. a/ f5 \3 `7 I J* w2 E
9 @' W2 N3 F2 X# w# j: Z
1 T2 U& ~$ k5 s1 f3 Y9 Z& A# \
1 i6 x7 V6 a0 T' i- }1 P# k3 C1 z) m. o+ Z) o. w% y0 ?. X
! k9 p$ f( x" a- N" c/ u/ @0 ~4 p G4 B. e
0 Y4 S6 q0 l$ q9 ~. B. J
5 ?! y4 C$ F* X6 l s+ n5 Y7 v/ Y6 C# [& e- R# ^
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:
& E7 Y l; h$ D4 x( c8 v
5 ?! L8 d/ v# Y W" J% R+ @9 Y4 S0 e6 ~
/ k. M2 Y* w" c, j: W经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。4 J2 \7 c: f/ H% p$ x8 k$ S& `
1 a% z% e7 G8 \
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
( ^4 _4 M0 o5 W1 o————————————————0 x" K' M& q* y# b, L4 f
版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& D5 [' i. X# x7 N1 `. C
原文链接:https://blog.csdn.net/wj31932/article/details/100057318
# O$ Q; f S9 }5 T
/ Y0 P$ G. J2 m2 V* u |