公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。
! Y5 w5 l4 N, L% G
) G" V9 ~7 v, m1 k 远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:
) r; u* c2 P8 d" T" K4 i
M7 C9 V/ n( Z" ?% I( E# x' l0 G( U3 t8 G9 ~& Y6 H2 G! U' n+ [
% e* D- t" _7 X# k
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。' Q- G' a/ Y5 d/ z6 Y
; U/ d/ J: o! v6 f用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
. p _8 m6 o q
' f' Q( {+ X4 ]& B$ J
5 P+ F% F3 H8 g. p% _8 h, ]4 _; y# B, Z! `7 Q" ]7 l4 L2 }
是固定电话拨打手机,听一下是那方通话掉了?, n( t7 z$ E# H* D2 n& C0 l8 a7 X: k
. p/ Z$ @1 [, B
0 r3 `, b U- M8 J8 U' O" A
0 c; C) N+ W. X I听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。; l4 D0 |6 P7 T2 R9 s6 k
' `) s4 O. [8 o9 @但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?0 c3 Q! {8 m; w+ I- s f
' W* R: e- }+ p+ K据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?! u; s! L" h8 x
( K- F5 i* W7 c2 @) N7 a( H8 d
- g8 Q; ~6 @- e1 `
( u. T& Y2 \6 F( N- D1 a4 P因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。) M8 }* H/ [" d
$ S T( x! ?# P3 |
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
( q( i" v; x; Q: l' p
' Y. b1 K7 w9 y/ M2 e' ^没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?
" _5 g% q5 H4 ]# h2 {& z: M
|- ~3 \, H& g1 J' @- [再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:" _ d/ @) w# a5 R
& k$ M7 z0 l8 {
* ]/ i, J# v% B- [! ?) y9 @2 @3 t) k1 H4 l+ Z2 Z- o5 X$ [
" J: M: m+ g! @% W& P5 w- E
. k, R( {8 |# t! q' E9 V发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。
6 M) `9 [: G8 _8 d/ W6 m* M# a# l ^( U( k/ W7 A/ A% h4 ^3 H
转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
6 Z/ {0 E4 y9 d& ^: a) D5 v' k2 _* b" W
奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。& n$ ]3 v& H. b! B+ y8 K
- k5 X+ A# p' y/ s& F6 R: y
看这几个invite有啥特殊的地方?" r8 V/ G& h) H0 d4 a- i
3 S) Q k7 g# r1 a: g, c
* C8 U, I# S6 K; ~/ l9 e
6 P% J* v: X; d. L; v
显然不是我司的产品00-0e-5e打头的mac地址。0 N/ w8 r0 B8 w7 u
5 N6 k v7 p" J" m3 F4 d q
对比正常呼叫的mac地址
: i/ I. ?* ^* g: Z; x" V( x9 b3 ]$ y( x( h' ?! d- n
* I6 o- h7 j% a9 y
7 u% X5 J) W, Y; n h据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。% z" T2 Y4 j, d" n
# _$ _4 r% q. J: l
检查下面的iad有一个172.31.234.108的设备:7 k# q( j5 a& m! }/ s6 q1 M1 V/ U' h M
- a! E, m. r9 Q) A) E7 k* c+ h
2 a7 w O3 G8 h* ^3 p- ~! |
让现场更改这个ip地址,防止和e1板冲突,后故障消除。# h" {5 f; H* O
$ {+ C* m% P: k改天抓的包里: [# k1 D: ]: |! ?8 i/ A
r" R3 ?: ~' d. r. |" d- {
5 a* W5 g N9 l ^" V; w2 |9 U9 `
改成了这个ip地址。
5 h2 A: b9 ^2 v6 D& }# A+ ]( N8 p5 ?7 d+ y
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
& Q5 |/ w1 Z' M7 h( y- [; B* @" m1 K1 T; ]9 y3 x
8 u3 P% m5 K. X2 L
3 Z& Z- B( ?; J1 a5 M
( m- H: V; T: E& f4 g7 W5 }: w& e; o& \+ K% |
, d5 W6 U- i9 n0 W
1 G( c: v! E1 b- [
+ C1 }' b) n+ [- j% S! O: h% `; r* O
$ B" o9 L- O1 J: t6 w
" R6 g# f$ w' Q7 Q+ n7 D# N @
# b1 S$ |# x: W9 [7 z5 X, L6 V4 m
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:# m# Z+ n" _# R
! R( T! M7 S, }+ ]0 Z
5 ?4 i% t7 d5 o+ Z1 G! N
) _% N8 s$ @ ?& ?. y w经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。
. ^2 F+ L: C; c, b8 o
1 K1 b* M2 d. @& O- [ wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。4 z% t% |6 ?3 b0 j! I
————————————————
* K2 a$ E3 \; ^0 n- Z/ d/ Z/ v版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。9 Z0 ^2 G3 l3 X/ u5 l
原文链接:https://blog.csdn.net/wj31932/article/details/100057318
) `7 _" e6 u5 U: {# v6 T' e% E4 r: L. R7 C
|