公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。$ b8 ?4 R" r# P
4 V$ H: T& }7 t5 P/ _ 远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:
8 c v& u1 ~7 \- ~3 f' V& h& j' C, G# k
% c9 _8 F! `1 _- t3 D) M/ J6 z0 H$ [. ~, o. c' u7 s& O
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。
7 ^, c; A2 e! M6 V1 {- m7 V8 T; H' B6 Q% @3 S" l u, }: u
用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,8 r( Q4 [- F4 M) h- d( u
p7 y- H. {6 ?. J$ f# p" J+ q3 t4 @9 y/ ?0 F1 W/ t
8 [9 n2 V# C$ n4 f
是固定电话拨打手机,听一下是那方通话掉了?( y, w8 ^ M% v- G, u2 x) \
- e3 S3 ~4 i( u, j: V
( R+ ?# K z! `2 X
+ j9 P! Y6 Z5 U4 G$ |5 v X
听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。" g' A9 T, ]- c* Z
% m" ~- N' q; r. _* p+ `
但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?
& Z2 u z8 U- k' ~$ A! E. D9 Q6 P1 r9 c' R7 D% H0 E
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?& Y3 S5 s3 ^# o. ~" c1 J
5 n5 v$ u7 k* W/ S3 x" j8 q/ b7 A: t( k# k& s0 |
) q+ H9 A4 r2 i! z# m; ]7 ?# A因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。( X6 ]5 }8 I* a, I# y. H& X
4 r3 {) m' k" p
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。5 X& B1 @5 I: ]" a8 Z: ^
3 ]* `8 M5 {2 i" X7 V/ D1 v9 p0 L8 ]
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?
. {3 _+ [1 I ^2 t& q) f A
9 ]* q# I8 u) k, x% f再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:
. K8 J' A) _0 y. q" b6 {% V$ {$ l4 Q! {: W/ h& }
) ~& W" b( I G) [) o
* ]# A2 f j0 X1 W
5 R; n- b; C' n+ F5 J6 _
7 V6 Q \5 K; R$ Q; G! d
发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。# `2 G8 f: c5 h. b. q5 A
7 e3 U2 t' |2 x1 W, I) b
转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。6 B# O1 f8 C4 W( ~
% `% B! \! b1 y/ l2 X2 I5 E
奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。( n# C" C+ v7 x. [
& N- A0 J4 @0 L h看这几个invite有啥特殊的地方?
2 n4 J1 }6 s) i$ |! P2 g2 o2 N/ M
( N6 w. E) ~4 j1 u8 i4 ?0 ^' k- x# h( b2 a7 m. p$ X' e
; k/ V: e2 p% p# ~; j& [1 N
显然不是我司的产品00-0e-5e打头的mac地址。, b, V) ?6 a8 q/ e
3 V4 f. N# u) \: r2 c, O/ J对比正常呼叫的mac地址# L7 P( C1 B. f& U' q
( I4 C. O% _6 y( ~* D& o
- e& a- h! i7 f$ }
8 r1 B- O5 ]5 B1 k0 F据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。. l9 q0 K8 A. p% f1 a
3 L$ ]' q$ v/ ]! I; Z b: Q检查下面的iad有一个172.31.234.108的设备:9 ~) K3 ^# b" b/ _. A# ^5 C
# R9 C! \$ G' `$ ]' X/ I
2 `5 }1 E7 ^/ b2 \+ t& S! a8 C% b0 t, e4 a+ _8 R
让现场更改这个ip地址,防止和e1板冲突,后故障消除。8 n- ?* _' i8 E3 j
, v8 c0 W- }$ u, v2 O# a0 {改天抓的包里:* v" X8 S; K1 x1 Z
" V2 m( |7 A1 ]7 C6 ?" j! d1 j. t7 V" A2 P
) b0 r% C8 I" r K' N& z$ i% p3 C, L I. j# h2 D
改成了这个ip地址。
9 V- }* `- B4 z$ z1 Q. [8 f+ d- R2 m8 q1 S
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。& B. |5 Q- b" G
3 m/ F7 p. p, d/ V* w5 @7 Z1 u- X; e8 W, a K
0 o, r: S) C6 C, v8 E3 b% N
( J8 Z( K& e& N& d# [* f
% `# [. j% M& [2 d
& J2 l9 L* u) h1 n; ~3 ^8 B M* y; W$ E7 K2 R( B
: ^& ~. p6 l0 w) X" k, D7 Z6 a2 | s+ @
?& l; H$ [: V! U9 y4 O
) ]2 P; n) K, _8 l
$ m/ ^4 h0 C1 U9 D, S+ c# Z, ~ W, x" u
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:5 Y1 M9 S/ f, Y
6 c5 ?" q5 f, v3 B% h
' ]' d5 C2 J) E Z3 X- M Q2 g; [9 S4 Q
经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。; f! g' w8 U4 u+ e% Z# _4 Z
2 {. G3 ~9 T0 p8 h wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
$ n/ v$ P! q+ v5 a4 Q4 T |———————————————— q+ e/ h( C- I: ^; l7 F
版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ Y5 k& v E) ]" W/ g7 J
原文链接:https://blog.csdn.net/wj31932/article/details/100057318/ w- Y' m# `- v- l$ Y- Z
/ l/ @4 Q0 F+ u! Z% Z' V |