公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。
5 c3 G! H) _- `" g1 T
8 m2 ~6 w# ]$ K0 W6 ?/ y/ x e 远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:, k. @4 F: L: e3 }7 L
+ E" X, l7 ~- A0 j7 A0 H7 ]& F
+ S+ ~8 N% m2 `3 t. S5 n: ?' U1 }! W: p! M+ m2 f- c' i3 j
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。4 v- ~7 s3 j: K* y: `0 I
* f7 i2 h# E6 o$ q4 ?5 {用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,8 ~( t+ g3 `" u( T1 h3 s
# O6 i& [9 p4 Y7 m c5 K4 o2 C2 S l2 y9 v9 P
) F) @) ~2 F% E4 a# @是固定电话拨打手机,听一下是那方通话掉了?# ~2 e/ q) G4 b7 ? ~. I
~! F1 H8 h7 Y! y
& ~* @$ v, z+ N. {" I% h
& d& g+ i( q$ g$ {) f) r5 {
听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
- H5 W+ \$ S5 l3 G. V# X
) x) B, [/ T% `但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?5 g3 d) d- @. [7 Z1 j8 w. c8 |
9 {! Y% z3 F7 k3 t
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?& W- o0 N, Y1 R8 w5 n0 s: x
9 g( }& r( }5 {6 }- G, [8 m
8 h( d1 q* ]3 f8 H: u) j5 {
/ ?4 ]. V0 |+ k" k% s: h; `3 \% j
因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。
. T0 q8 _3 Z6 O7 o4 d+ H y- r- O
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
8 e" }& G$ ~' {) A9 ]# i+ t- {- ]. {* I+ L% D+ I0 e" c( F
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?
) t" E7 T5 O9 d! |! C
8 |$ E3 d7 O/ v5 m/ W再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:
! `( x, [% n* l0 I: l7 y3 v l7 R; e6 J( o" u2 {2 l3 u/ Q
4 k$ m0 j2 z9 d- V, X4 [
) F8 O3 Y, D" G$ W- Z: J4 g/ c& K) B1 L7 U* u0 F
( D2 `/ {! |: m- _+ l" X' \# b& |; I
发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。
6 I. n( H. a5 _; N. v
' G6 u" a$ g; ]2 F" e转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
* F0 \! ?- N; E7 H1 ?* h5 `- b. \$ M! A% E! q! W
奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。
$ d" f5 J7 w! @( g; t$ U s' x3 }9 c' B/ y) I+ w' ]; r5 Y
看这几个invite有啥特殊的地方?- k* d% \: Z) P ]' u
7 w* D( w+ e" G' p/ a" q
: @2 ^, [0 b" Y/ N' l
% I' R+ b: C* R0 }9 e显然不是我司的产品00-0e-5e打头的mac地址。
) N" ?% K0 U" ^
; `0 ]$ E3 T) d7 S0 E) v对比正常呼叫的mac地址+ E2 y: R) R* X/ M$ X3 u( P/ e
/ |4 `" n# L \8 s! {* i& m. t
$ N" w c5 o ]4 v1 _8 |& k. u5 P4 G
4 \- i, A% n/ g3 Z& ?据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。
* O( x$ t7 T/ F! {- _: b; N$ y; s. _9 o& A; X9 e
检查下面的iad有一个172.31.234.108的设备:( `8 ^8 }0 S! R
0 g- y: V, N6 h8 M! o
3 K" }9 X. O. D2 d0 Y8 U' q
! E+ K- V+ y2 i. h! M2 m让现场更改这个ip地址,防止和e1板冲突,后故障消除。
1 g. e; f# ]2 |5 w4 [6 Y+ f' p' K/ p9 H, n
改天抓的包里:
* ]# v. d4 |5 z$ l) h
6 `. A+ Q' q3 q$ \ r& e* q& x2 D
8 S4 U5 g, B" ^' Q' \6 d: H# O/ ]/ r# d f5 ^9 Z+ }7 x
改成了这个ip地址。
0 K/ p9 t0 p+ r; M; K: `5 ~7 \; B# B
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
5 n1 J p" }) y4 Q$ J" K" y7 R# n8 ]4 V5 \0 J
" n! l, p- s% A/ z R5 ?/ P# j8 q0 f( e
! m8 e' q6 L; {9 a
4 T. {( f: E8 {5 B, `3 j
1 x# F8 b1 n( e% O2 z3 a
- x) Y1 q/ f3 r8 D3 q; ] f& j2 U- ?$ T
. l0 M4 B4 t+ i1 s% P
- Q: q5 A5 e, N1 t$ m+ J
4 _' y: D4 p( r1 S6 C: a
5 A6 O, Q. [% z, F* H
$ i t j$ s# |' @1 X7 [4 d结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:
1 o/ u! Y) U% T, }4 E1 s$ A4 p9 y. p7 n" i' Z; ?( p
9 o$ v' C/ i6 w _! S, l0 D5 d
L8 x& E+ s }/ W经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。
3 d. m c0 }& h4 d' t0 O0 S5 q* F; R4 I7 [- ]+ p2 k9 V
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
/ \0 _% F3 y8 r$ r: e) i3 O2 A————————————————+ D% N$ [* X. a7 z S
版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
, F! A) L+ C1 H+ {) ~2 s原文链接:https://blog.csdn.net/wj31932/article/details/1000573181 [- l3 o( A( W8 Y1 s/ k
6 q7 f/ {9 q0 t4 E |