公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。: i7 T6 X- O( A
0 a1 V+ Z% _, F
远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:
4 e n% x) A( s! e% C: S c% n8 z, r' m; Z) s+ l0 D& z, v
6 \* ^& j5 T f" J1 b
( a4 G9 J0 L( O4 s% k' W& r% [多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。 {$ N1 s* B5 K7 k2 b! D
7 C6 Z8 u2 e/ V+ _用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
7 v: L* A" r6 C' J& Q
2 Z( S2 C9 G$ u4 ^) ]0 }5 j0 d+ _- @* \( k& @9 t r; n/ m
6 I# I/ }& H$ u0 q是固定电话拨打手机,听一下是那方通话掉了?
/ `$ M1 Z1 ~$ p% I4 r8 J, i& p8 M9 b1 g( l' w* K X8 S
3 r7 y8 u, c5 O/ F5 Z7 L$ \
( w% ?5 ]+ L# ] G听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
1 o8 m4 i6 ~ H* U' l0 N* _5 I9 y% G' Y
但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?
& B7 U" C5 L* H) W) i) G5 ]: Y
. M6 U$ u1 w" ~4 M4 ^" Q, Z据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?9 K# t3 v9 S3 O( F4 d; a
( k" O) ^" c% A: k
, L3 s7 _' P+ q' T. r+ ~" I. A& ^( Z
因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。7 S- _: |8 B- U, A
9 n3 R2 B; @* G3 V& b觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
& \& L6 E# j7 S- a) B: [+ I/ K/ B! |$ H
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?. j( ]! ~& d D4 U
: C8 R, }/ q( c7 r% c! v' K i再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:
& \5 i8 A+ ~! j) j( \. Z4 K: g" c; l" _0 R# n' c
" D7 a$ M6 c3 e2 N0 U3 d
+ Q7 T4 c' }" A+ B% V
3 a. V# G8 G5 ?$ k6 F% \% d9 k/ r- C, Q. h7 H6 K2 `' N$ ]) m
发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。
6 g+ I. V5 l4 V% d3 ~
6 J4 a* |+ u: s' f# l3 \$ m( y. h转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。' p8 H1 q: V% J
! }, {! V! O' _: A1 L) X! d) w! a# m3 L奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。
+ E1 a9 [7 D) f/ j1 ~8 e7 E
: p' E# L( O4 ]$ }: p, Q/ r4 G看这几个invite有啥特殊的地方?
. t0 M5 l+ [0 U' x: L* X" \- _) {" c' C% t( g
7 X- l! M: a1 W
: t1 ?: Z* u. T, ?) E% e2 `
显然不是我司的产品00-0e-5e打头的mac地址。0 w [" M* v" `5 E
6 ?! n& m/ x3 W. v$ A! G对比正常呼叫的mac地址3 A5 l# H* [; W$ u5 `/ X
( U1 @! d5 n' d) ]; ~9 Y, u8 ?6 w6 s9 R+ H( E" N: r
7 B, w$ j9 Q/ `8 q% }据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。2 P- _; y% s/ q6 m% Y$ b, h$ {! ]
* W" y" o3 I4 f/ }4 k9 Y( @; T
检查下面的iad有一个172.31.234.108的设备: O0 T& u$ n' H
b2 L3 p7 H/ r
2 a# z* n( c2 L! r5 n# r
: D% s; O, T) D6 y3 a
让现场更改这个ip地址,防止和e1板冲突,后故障消除。
! h6 v! a& S" ^& c; _+ ?7 y) Z
4 e3 Y* F6 o7 A% F5 b改天抓的包里:
. V$ v4 V) w: i* _, H4 N5 S9 z) V4 |1 z
2 i, l- F8 u2 Y7 [+ S6 c& \' m4 R
% G+ _& R1 q6 X; b; g' M/ ]
改成了这个ip地址。
* t! l' `9 y2 Z% [4 ~% t o
! u8 s. c0 V/ d2 ?回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
, g, i! B& l6 j; D2 E# {8 n3 q7 a ]
$ b4 R2 d; q, L! }! P: f5 R" l6 B6 a y C9 l6 w4 z% [; b) j4 v1 d
* d j J* Y5 O6 n. Y
" c! \% l% ^; E6 c" c; d; R& r9 k: y3 K5 z" L
$ b+ t; @4 m' Q
4 c7 R& U; a8 C
$ \3 o) a, I6 m0 R9 u9 L/ x T0 I, \8 `) u
. z, K8 R) H7 C& K& J. G. b; l
! h: S" p& y! {/ _
2 R1 X' f: @2 |7 A- k3 s# U7 a# A
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:
6 ]% w4 n& g9 Z' Z$ f B' q% i- m' g! s2 T
+ c' w2 E& @2 m4 l9 F
0 ~: p* Z+ Z* g4 Y3 v! C: D
经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。 f# O b- D) u+ d# _8 v
* ^$ b2 k& ^/ a+ g c
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。1 F0 X; l, ` ~; q- g
————————————————; n4 @: B2 ^. I2 S
版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- p6 E! |% b6 Q C# T: u原文链接:https://blog.csdn.net/wj31932/article/details/100057318; ^' U+ Y9 c9 e: e6 [! k" [
# G, a+ J, O2 h- M( g% E6 \+ I/ [ |