公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。
3 U) F& ]. M. W8 D x6 A1 P6 ~1 t' ^1 O' M/ m$ a2 T
远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:8 N5 w' J; D# L5 T1 g, j' N
8 Y' o# z: s3 O5 S2 M* f0 j0 {9 q: h
& I2 _9 F1 ]. q2 S6 `
9 z2 K. P" v" g, Q, m" d多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。
' l- Q0 T# Z0 H3 G
! s, Q( d0 P! u用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
N9 R* T7 D# I) W8 h8 g8 J$ z9 q, u& [, g* ^ Q! ^6 F
& y8 p# W. b3 U( U
; \6 Q. c* |; B+ y" b" ?8 R, u
是固定电话拨打手机,听一下是那方通话掉了?
' S" x* l6 d# E! n- \# g
) i9 }( @+ ~+ Y) d. }: f
% W+ h Y* E2 }5 E; h: D6 d+ M. e% ^- B' n2 ~ D
听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
8 \8 B1 R+ n3 |( b" p: I' x. @ t0 r9 ], i
但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?6 ^4 F& |' z }' H) V5 _; q2 [ z
3 S0 o) x2 c3 D; m
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?
, T3 k @. w2 q ]
% i& J, g$ Z( }# \# o+ O2 d1 L& j9 R6 A7 I W
( z; h2 q+ E4 E
因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。/ u1 c( R4 a4 e) }* z% s( u* H
: a- B1 | m) \( G d- V e& x; t
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。) U) L5 L6 ^$ M( b/ {# B
8 Y, I7 M6 T# F+ w没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?! A% ~ f" }/ C
; v M' q% r$ q2 m: b9 f再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:
( }* y7 f9 ^; e4 j9 w, C! F4 a6 R, P2 u; P
, `/ L t9 t4 V
. z# R0 S2 l3 a$ L; F, r
+ V9 u4 j* L- X9 Z: d I( I( ]& ^; N3 T- d7 h% T \
发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。
" u2 {5 S& R5 P* u) P- T3 w2 K+ G9 o# q. h7 e: {4 C
转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。& P3 d/ Z3 Z1 o p2 X( h+ e
4 h5 w' p1 S0 V
奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。
' s" ]1 V, a8 H2 b5 o K' e: Q
看这几个invite有啥特殊的地方?& X3 }- A% H! ^9 i
: ?! L" D I/ k: @
' |* D6 O5 ]9 v# i9 \% x4 t" A+ Y+ w4 N
显然不是我司的产品00-0e-5e打头的mac地址。8 a" z. s: M! A9 i( U% }
) Y, q1 P& t+ X+ c5 Z
对比正常呼叫的mac地址8 n* E+ y. [9 a9 f4 ?
; T/ l" `" Q( ~8 l- C
- V( t8 ~9 a' R! j9 t) |8 @
A% q# U0 T3 E1 l6 _5 D! V- C2 v据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。
& k' a/ A" u, L, |) f) I
& w$ R1 t1 Z; @. n) x) _5 [检查下面的iad有一个172.31.234.108的设备:9 z1 ]# X2 O+ [, U5 B0 }' F$ W) W
6 S' Y( V9 n1 X G) i7 \; S
m9 i2 }1 X: i1 T) V! f
5 A2 T; P; E9 T2 q4 b9 x让现场更改这个ip地址,防止和e1板冲突,后故障消除。3 }7 ?& t E$ e6 b
# z* b- C* f! `' ?: P; y" M改天抓的包里:5 U0 J( W3 g1 H
% \% |. j _9 @
% a, N: C7 Y n: O S% S) z- p1 f0 ^2 C1 q5 d( p* \& Q5 h3 g
改成了这个ip地址。
9 i, H4 z( O, w& o- q; Z+ }: S: }: `9 f1 I1 J* K5 D' k
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。0 L% y- F3 g+ b$ P
3 z! ]% V; M: z, t
7 C1 O# F8 M2 s0 }( X
( }+ t A" |4 W) v9 X/ `8 K" |2 \" \1 i1 A( H
5 p$ k" u; a G% G
- ^$ o4 c+ A$ F2 Y; ?" p6 |9 H% O/ y* [# W( ?
' n9 q' W G8 ~- c0 o& Y8 f* ~ Q/ o, m- m v& }8 l9 y
, N+ ~* G% N& \3 q# @9 W' w
8 |7 S! ]2 _! |' K, Y$ f
0 `" T6 L Z0 D3 p; S( [
! L5 y! u5 [# B( @; B, z3 S结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:' E6 I7 O0 A3 e8 e7 `
8 ^( y, A# t7 e4 G, b
5 f& F* N$ Q: O% f/ P3 e& ~& i; g$ j9 q) a2 i4 K
经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。
4 V8 n$ b- y1 O' A7 `( x+ p2 o
$ {6 L9 R. V: \, I1 G1 T wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
) V7 h* p% r& L* M————————————————) C$ \4 h9 x! U6 O. R0 |
版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。2 n3 J1 M; I+ P: {) Q, b! {
原文链接:https://blog.csdn.net/wj31932/article/details/1000573187 c/ i, V! \2 r+ |
9 S# o( _4 c3 p' i |