公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。$ t# X# N* L/ O5 Q! G4 _5 [
4 c/ d) ?8 Y, c
远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:
, d6 s& t8 H3 k: M7 F+ t# [5 A& L+ Y: k& y. ~
" P6 o/ A9 C' _# ?" A$ N
- S+ Y; g; t# n
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。. M5 _- X6 g; N' `+ w! l- y
$ m, O9 R; V: Z; u. `/ a+ z/ E用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
$ J I% ]- k) H6 U" I4 v) o, r i0 C6 R+ ?* q
" y" T! k7 S" A ]% K' G% f' U- t
3 Y3 @ [) m2 q0 f( G4 X; p) L是固定电话拨打手机,听一下是那方通话掉了?
! g- ?4 A5 V* [2 s
, C; @7 o$ g! \) {4 `) ? Y' P7 ?% y7 ]0 x1 I i
7 S$ w; b0 N/ T8 V: v听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
" A( [ G3 M: P) F+ q; u' s
( p$ d9 E& e0 U8 q9 y但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?
4 m5 V; ]3 |# A+ Q' ^' o ?+ x# k3 V' K. u2 \8 m
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?
- w, H3 O# F" y- h/ F9 q+ ~, L7 h# `* R! V" n5 k Q
$ N% V R8 x N" q
" R* x/ I& U& [. x因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。
; c, U# o2 F& K/ B+ E$ F( P6 `) D; k5 S
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
1 z' q9 c. `6 A3 k8 D- z' `8 T% ?
没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?9 \0 `( H4 E4 ]; a3 ?9 Q0 z
7 j# I `# ~: h8 C* f& V
再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:5 O! {1 R4 v R' G" E8 B; p
3 o3 `+ l0 n4 Y+ ^0 [
& O/ t1 F. X0 q$ H" r( g
2 B9 o2 W$ n0 m7 ^# g+ X7 _) |
4 Z6 F; j6 ?4 h3 P0 x: L& b! D2 f
: h& Z/ q( B2 T6 h* \4 W- t# j发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。
% { W+ L0 }8 i \. S
! Z# z8 |+ i, ~' X! I转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。8 v& N% j$ x, i0 |
& \, A |6 P4 f" @7 J奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。. b4 T4 p/ c4 d9 v
5 E5 N2 C3 `+ A j
看这几个invite有啥特殊的地方?
! d4 K8 z4 W6 Z) i0 N& c, s Q! a% l D+ t3 g
, Q3 N. ~) A2 ?) p2 ?" \7 }" X5 D* }3 S2 ]+ u1 N3 {
显然不是我司的产品00-0e-5e打头的mac地址。7 A8 d/ l4 f! R9 G
6 s: D0 a* d# n/ u7 X* x& J0 K4 A
对比正常呼叫的mac地址
4 s3 h2 F" w) B6 U
$ J) w7 K V, g9 \. D* m* X0 s0 ]
5 Z; b X* \' C3 d n据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。
! h/ J. y( q! {% q, c# @
7 @/ I6 W/ N& w Q4 B检查下面的iad有一个172.31.234.108的设备:
/ }. u* |/ g9 g0 M
9 U y! ]' S' V. u0 M% M* C
- h0 j4 P* I' C5 r/ [: V
+ ?) r1 G! r7 {/ G# S v6 U, H/ b让现场更改这个ip地址,防止和e1板冲突,后故障消除。6 C6 \ X( T$ m( M$ j/ f4 ?6 w8 @" ]
/ \8 F6 _; b, @( m- g改天抓的包里:! G( z/ u) R, D9 x3 Q+ x* z
( g, M( a. ~; r6 f
7 S( W9 F7 n& X# y' \
( w7 X. M% c' p8 R+ C7 I5 D改成了这个ip地址。* a+ M5 Y# m4 f% u3 r3 F c$ W
9 {! O) |; Z, `# h9 t回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
# H! j8 t: ~0 u( n6 Z& C- d- f4 |' W' F) @$ x+ B( u* i7 {; F% ]
* s. u4 x: }2 v" U7 Y' h! A i
* l4 q) U. f2 ?3 Q
3 v: J7 |. n- P, G4 q1 N5 e7 Y( p, O/ J0 N* M/ T$ C* Q
4 n; ?- Z, H$ E1 c0 {
7 c4 X' g0 m K* @' K* ^8 i
2 b& q L9 j6 d# O, I$ H( f o% m' [
' [+ M1 A8 i0 B6 E* o- ~/ x& u% B1 X/ w8 { s
& B6 v7 v0 b- b' W9 [ v: p* t# ^; [& M5 T8 [6 C1 Q( F
8 N1 s% c( ]3 \( l4 v
结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:
" f7 a- Y& U, o2 P: [& h2 j4 J: `% k+ N( @) Y
2 z/ N/ @9 v ` W: u9 \2 V* Y5 p1 z0 U
经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。: l. H6 c7 N( D9 d/ C" |
& B( l& f8 P. h' o0 ]: [ wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
2 v+ h8 M7 D: ^, S, ^$ k————————————————4 u3 b: `4 ^* z1 J. @) p
版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。! A$ W1 S' Q: s/ ]$ Z( y
原文链接:https://blog.csdn.net/wj31932/article/details/100057318
2 c6 K( H+ I( M" Z/ V; y6 J! J/ e k3 S" b" y. L
|