公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。
' J9 |+ i5 k: c7 R' x6 B# v1 ^
, k$ t: @5 i' w: N) z$ x* i$ J5 q" O 远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:: S9 w% {1 H, y6 g
: @. [0 ?: r. W" V( v
! P1 w7 L4 X3 P- V ^5 L( b0 X( P5 ~+ L( C
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。
( P2 A$ h# y4 t6 Z8 U# z" L! d+ e/ N
. x. ^* z1 m6 z* W- J1 A' ]用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
# Q& r+ H8 w [$ h: T! u
J; E& s% l0 D" H- `9 n* X" ~
# w0 b$ g% R) d. ]( c
) M% O# y% W1 [是固定电话拨打手机,听一下是那方通话掉了?. Q) t8 u) X) _1 o! K1 k* w" I' W
! e. ^; P' n" J- A7 |
- {' H: z, x ? H" } [* N! s- l
( F# X6 V; v; y: e) ?2 u# Y听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。2 M7 N3 |9 t9 i) R# l2 O
# N! I) _( U$ Z# B
但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?
) ]5 }$ [: u' {( Q9 p! j9 _; }- w/ W" h4 f% ]& O
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?
! H& ]0 m) P* T$ T; Z" B
# U/ N6 q( O' Y1 S+ Y
v& D& s& V4 ?1 ?8 f6 l5 }. w/ ~/ r$ ?, b8 j4 W1 u) k
因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。
) f' l0 u) U* }5 n' R6 L7 I! H$ f& K& @) D% N+ q
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
4 G- \8 q. i/ [! C W; G
8 B" f1 F0 S5 s6 w2 b8 {: C' ]' [5 o6 M没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?
6 _$ K/ g* E% F- g! x' m0 n) \3 Y, R6 P8 T L
再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:0 y) m) T2 G1 s. [, m1 b/ l( f
& z: `" z8 e( z6 s. x( t; s. q3 t
' N# r% e( E; V; w- r+ f" J: o/ ]7 \' G4 Y: k* W
+ t8 J; `$ o% h$ s+ c" z1 ^
& c+ R6 A0 i7 u9 x$ P" ~6 Y发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。: P }+ A+ Z$ T( c1 ]4 K, k# x. K: f
. \9 R# z2 T5 E$ i0 s$ C! a% W
转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
1 h/ W3 h7 ~/ N0 ]) {- U
* s" z; i, W0 R3 r- F奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。& X9 y( U# Y" r, P/ Y. m/ D
% g2 r( I; f: i# U8 J+ Q+ [9 I
看这几个invite有啥特殊的地方?5 @. [- b4 X4 L, s$ {& z
9 Z$ w% O. a" p i7 W3 E, l
; B" m- K6 w3 I1 p/ }1 |( V$ L1 v5 [. W7 ^ {& t
显然不是我司的产品00-0e-5e打头的mac地址。
- H& `$ h8 m+ y* s8 B% t' |8 a$ H" \2 f& A5 L
对比正常呼叫的mac地址9 N2 L# V2 y, y/ O8 H/ c+ U
. G5 a; ]+ J8 ^8 g1 \" H+ }6 W( r
8 Y' X. N! r1 x0 W8 O4 }: ]' a% _- {* p
据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。& c6 h4 p, p0 ^* @2 J1 j
: c$ j, X+ Y' [2 S! I) i7 g) q- N
检查下面的iad有一个172.31.234.108的设备:
) a/ G. j- \2 Z6 a
l% [/ ]4 i, m) Z. x- D$ i3 a7 `; P/ i
( @5 E. K: M- d' }9 m0 Q让现场更改这个ip地址,防止和e1板冲突,后故障消除。; {: X% ~2 D2 [. M
- t w8 E! X7 {% o: t3 o, C! O% P5 g改天抓的包里:
! T4 V# j& g' [7 N- A
9 ]4 f+ f% i* r: c: S* B2 J8 k4 m9 Y& v: V* }3 s: `4 S1 Y3 c
" b* F/ l+ t% z改成了这个ip地址。
2 _' h6 e6 Q" Y: U$ F& v J, Y+ D+ p6 x% z
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
6 v/ Y" o' ?' t, _+ G
& n; [; O0 M/ H/ Y7 \4 K$ u. m4 f4 h7 B. X2 N0 i
( P) Q# ]5 e- `$ L Y
1 M1 T$ Q5 K- w: a- S+ c7 C
/ I5 r1 ^; [4 Q7 I( K# c" ^ h# n( A T+ G3 R e" `
9 a; c" y' f% X
; M1 t1 Q) F/ X& f3 n
, w4 a( }8 f* o& V) A5 w
/ J/ o1 z" [, {( ^% ^% X# S
0 y. Z0 {# W. I3 @! B5 k* `( D% @
* y- N1 z. O$ }3 R, u' N
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:# g$ n" p2 Y- M) \
& ~9 [5 x7 u& ?; Z5 U
& O8 l+ @9 ^/ L$ I! j7 X
7 r' m) f9 p3 p% y经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。# B1 R4 p$ p* D7 v, N: `3 Z4 W
% k0 N! B" E* o7 |* _/ G
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。0 \+ g5 o& q. P: `2 U; s
————————————————
& D0 Y- y& _3 l9 ?9 K# Z. t3 {3 A版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
/ c6 ^/ M* k# g* E# U原文链接:https://blog.csdn.net/wj31932/article/details/100057318
6 L8 z1 v1 G' E+ D2 {1 Z4 D$ E' |6 s6 N! T! R+ N U: H
|