公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。8 v+ \6 y. | U
+ [. y( p; k5 Y0 Z9 X Q
远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:" A: P: S6 Y. f
& r, U, m- I: a- `: A
# X+ U( F8 _$ N7 `& S, o5 t: d! t/ N3 |/ R
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。( ? ^2 Y: @9 l q8 B+ W: O
4 I. K9 e5 n! i R% ?8 V用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
4 R5 o7 x8 L1 w0 W/ b6 O! l
4 X7 n* `) H' [/ `, C- p- m" Q1 X7 @6 t
2 |9 k7 {$ F+ X! M0 o" i0 M
是固定电话拨打手机,听一下是那方通话掉了?+ h1 z7 E8 U9 z ~' i) Y0 i
( M( A2 p" M$ C4 F
$ M% C( Y' a0 M7 F
+ O* c" V7 R6 w" N
听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
+ Y Z, s+ e7 b5 ]# E8 i- a Y7 ]
7 o9 ~# f, T& i' B( h# j$ q4 H但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?) W4 W& L* b/ l. o3 M+ v0 W
/ O$ M9 X' l1 e% M据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?* ~, i( ^5 J' ~5 g
0 n" g) m4 i- Y( O; Q6 j2 f0 n! [$ | z' f8 U4 {5 |, [1 G
9 m& @6 a9 f. G5 ?0 g) S5 ^
因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。
# j2 J* a/ t U8 \
7 v& B- |( o2 m r6 q觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。9 U5 H- s; y' f1 a
( O' o% ]" P x% ]/ y4 e
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?5 q+ O7 _1 ~- i r. H6 `* k
6 K0 m+ s! c; a6 Q再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:) [0 k& s4 b3 U6 w" O
9 }3 S {6 U5 x2 S7 _
9 B* d9 @8 e* W( x! X" T, b* J F0 n7 ^1 w# I# x S
5 E; Q8 L3 V" v3 V& G- i( T0 [/ @: |$ j6 V2 x
发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。. G. Y% p4 ?/ q+ P# M7 a; ]
! S' a0 t T1 \转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
. O4 o, T3 u5 B, H* V& |
; P. D' ^7 T& o0 q- P' g% t. S: |0 |% X奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。
5 q) L3 ?# G: s' k
5 X2 N4 w' }7 B4 Z3 c& K; h- C看这几个invite有啥特殊的地方?( f2 r+ G* V( m; z$ F3 r
) ^1 r+ r1 p. M) O( A% _
+ ]& |! _) L$ Y7 R; D7 r8 L. l0 d% N, y
显然不是我司的产品00-0e-5e打头的mac地址。/ f# J, `& H/ T3 B9 r0 o2 R
' t( k& m- J8 B% v# K# w
对比正常呼叫的mac地址
" P7 P, C9 c- x4 S3 e7 d; v* l) f- Y% r1 N$ _6 L, a- ~( f
$ M6 \( `. d, J- _0 f7 K
2 E) Y' V, `+ r1 k _
据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。4 u- {1 A$ s! Q( C% I4 ?
/ ]: g: m) u6 Q8 I% Y9 Y) G! A
检查下面的iad有一个172.31.234.108的设备:
1 g; j7 f5 P: u4 w
1 ~) A/ t' m7 V1 a( O; [( j c r3 H3 }9 R, r
. s5 _4 B. e" U5 F让现场更改这个ip地址,防止和e1板冲突,后故障消除。
' r; {7 B8 V' Q- K2 H! x
5 `! ~3 m- f+ _) K) v/ e- c/ C5 B改天抓的包里:
+ J% O0 Y+ {) b$ {! f8 J7 m2 x3 f$ t. q9 X. ]2 ]/ H
+ S2 l9 x/ D% d2 X( b4 P8 r' G
7 F% _' e7 x: j! U2 X& J) G改成了这个ip地址。
( I5 r7 {' c& {) }2 V) d- K0 v& n8 |% |+ o5 E k7 ?% P, B8 ^
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。: i% ?7 u0 K+ T* e* r6 ~4 ]) ~* R
, M5 y6 \' \# E; ~, ~0 R9 M
6 F; W- y) ]: V6 i# l2 ^
) a, E1 ~" s( {8 m- }7 l& f$ k/ i* E+ x, l* \" s( M, E
6 q& H) V" ]5 f7 |6 Z5 M
7 V; _6 R$ H8 n6 p* C! F# w" }9 Y6 X) T
: v1 p1 A% b1 V3 S+ `
( N$ x% m6 t! \! N6 E+ w, v% T& C; I9 F% K
6 t4 }8 G2 r; {3 E1 `6 \
* M$ J- z' |0 d W% c% F7 w- x& l" }( ^7 Z: q* v( k( X
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:
$ o5 r2 e. B) l8 J
" w6 P5 V; p/ v- u0 Z& p+ o" J% C0 l, j! q: a
9 o% o5 ~8 \, p$ F6 n& E& s1 d- p
经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。
3 u/ D" V* ]4 ~+ T8 ~* ]4 z) M# C; B7 X0 r8 R. Z& Y
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。" @$ |9 F* x0 \5 b) g G4 i) q
————————————————5 a' ?5 F# v* i
版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。' d/ C4 g3 b# e, m: V' E
原文链接:https://blog.csdn.net/wj31932/article/details/100057318
! r: W3 [3 t6 e, Z V/ Y) f
% ~" @( ?; A5 i |