公司售出的一套ippbx,下联iad,通过sip协议对接e1板卡,e1板通过dss1协议对接公网联通的程控交换机,反馈呼出电话接通后有一段时间被叫听不到声音,但过一段时间能恢复。还有问题是拨号后听到“您说拨打的用户现在不方便接听,请稍后再拨”。# E) ^0 \4 D% ]
9 |/ g/ x* h6 w/ R6 C3 ^ 远程登录上去抓包,没有抓到现象,用户反馈是偶发现象,为此登录ippbx启动远程抓包服务器,用wireshark对远程设备进行抓包,启动多文件抓包方法。如下图:
9 l1 M4 \! A! h9 s. S7 X& L+ u
" p3 [" w. s6 x
+ Q) @, l( |" N) U( M/ h' n5 z
多文件抓包,每个包50M,进行预过滤,过滤udp port 5060 or udp portrange 10000-65500的sip消息和rtp流消息。
5 M, k! V N# S; v' x4 E
U+ E7 a" }. X" {用户反馈发生故障后,记录了用户的号码和主被叫号码和发生大概时间。找到对应时间的抓包,对抓包进行分析发现,
; v/ W8 q9 e# L# v0 A/ K( r' N
5 ]) w: x8 P: G! B2 v0 p, F0 P' t: Q, w0 H
/ ?' z7 S1 m7 ]8 b6 S9 D( ~是固定电话拨打手机,听一下是那方通话掉了?
# a8 @9 J1 N8 o R8 D e) I% ^1 b
& Q! w- U, w9 x, J2 g
0 G" ?3 ?$ S4 l: v2 h3 t, k5 A2 T5 f7 n# w3 `
听到反馈的这次呼叫被叫说一段时间他听不到主机的声音,被叫的声音主叫听听着正常。被叫侧一段时间出现单通。
0 v Y4 a: O9 C, W& B& r8 G7 C& }" y+ M( K
但单独听主叫发给被叫的声音,是连续的,没有中断,是e1板没有发出还是对方手机网络或者传输中间环节造成了单通?1 L) P9 ?& i3 j0 W6 _% _+ @* L, U d
% n+ {) e( K4 {) R( e
据此无法判断哪里故障,因为可能e1版有问题,或者手机网络有问题,或者中间经过节点出现了问题?
$ v) |* |, Y% b+ G0 m5 f8 K# [+ ]+ t! Q8 D- \
/ A2 `2 B6 H; A" ]
- J' F$ E; d& I8 Z" g6 z因为用户仅反馈都是拨打手机出现的问题,无法确定是否是e1板发出的包有丢的还是对方手机网络的问题。
4 y2 O U+ r1 H/ _$ x2 f2 S& C5 {, h4 a2 i! q
觉得e1板硬件出问题,应该出去的所以呼叫都会有问题,现在反馈的仅仅是拨打手机出问题。
" d5 v6 {0 c& t
* ]4 Y; G& ?* a/ H没有头绪,不知道怎么查找,因为e1发出的码流无法抓取监听,不能确定e1发出的有没问题?5 |4 E6 u2 t/ N, o$ A( W
3 Y6 C4 ^! Q# B' s( C3 I
再去查看拨出“听到无法接通“”提示音的问题,发现下面现象:
! c" k( D6 w0 W' g+ n8 S. _$ C1 Z* t" U; Q
. ?! g# ]; v2 e6 p: N" l' Y: `& h0 v1 n' o
/ u/ e4 x n* c
8 H7 o- q5 R5 J1 `+ R8 }发现是转给e1板的呼叫没有收到后向消息,等超时后,ippbx给iad放音,释放了呼叫。
1 D, O( f9 a0 ?, m
{& F% B& _3 z转给e1板的消息没有应答,100trying没有收到,5秒超时,ippbx直接给下面的iad放音了,暂时无法接通。
* q; ?: u. I% Y/ c, _0 I7 k& b( l0 P7 d% S' t
奇怪为什么e1板回invite的响应呢?要么没收到,要么收到了没回?这两种情况。
; ^9 ^" A$ M( `1 n+ x; D/ L/ U L, H& m8 e- {9 Z
看这几个invite有啥特殊的地方?4 ]& \( L5 \9 H/ @' F
# k* N$ m$ U; K7 ^. ^/ y7 S8 D" i" n: q8 [+ ]3 ]
+ [0 x0 O' E0 @- r# j- b
显然不是我司的产品00-0e-5e打头的mac地址。
' P# p: J& z" b& Q" M/ m. a8 r* r) {/ g6 [
对比正常呼叫的mac地址3 c. i6 b- L% T
& v6 z2 R% P% V- Q6 N% m" F. A6 V8 S2 d6 n
& K# g% f' B' ?7 p
据此,判断环境中存在两个172.31.234.108的ip地址,造成ippbx把invite消息发给了错误的mac地址,导致e1板没有收到这个invite消息,所以没有响应。当时没有抓arp包,应该是这个设备发出的查询172.31.234.220的mac地址,或者ippbx发出查询172.31.234.108的mac地址,这个冲突的设备回了,导致ippbx的mac地址被更新,导致的故障。! J7 i* d1 j) v3 v/ ~4 x# j
- x u9 y7 n3 E7 S8 Y- }& e
检查下面的iad有一个172.31.234.108的设备:5 m( C+ v1 b& ^
3 ^* Y8 m& _) s ^; k5 O0 |
/ T4 \7 R' A1 k) R. `/ }* ?! i7 v( e, C
让现场更改这个ip地址,防止和e1板冲突,后故障消除。8 x7 @7 y6 l, m* Y# U
- _" P! U+ Z' M8 q, g0 D- K1 c
改天抓的包里:
6 k# {) @+ \! Q% w' H
( D* E0 Y& i! q# `+ S0 O; v) u: \# g- P/ g8 F
1 D+ r% l/ a' ^. F7 E
改成了这个ip地址。
2 e/ z- Q& D n+ F$ ^. r' l+ I: l& |0 }/ {& R- B" {+ u* \2 a
回头再去看单通的问题,发现单通的时间段里,消息发给了错误的mac地址。
7 W& U- X# W; f h' s7 y( h- k" s( A
* J8 q* Q$ G p* V& j; L0 \2 B
$ S6 q5 @& R8 c5 V/ A' a9 d$ B2 c% b6 r. K U, {9 A
* I$ m% E, J1 ?* N7 f8 Q1 X4 z
6 n' a2 p0 v q+ X: f _, \1 | y
9 a+ ^ I$ R' w) s% B* \) l E5 ?4 \9 t3 ^7 c6 m2 z0 K7 u7 I
n# I( I, T. h8 }6 N1 @5 y
) {) ?) w1 p% [" k, o5 P* l# O; v% ^. K+ J1 |" e* J
( I5 ?: l! ^1 V结论:ip冲突导致单通和呼叫不通,arp单播消息导致mac地址被更改为错误的,导致ip层消息发给错误的地方,导致奇怪现象的发生。改天抓的包如下:" S# _" i# C N U
2 O4 A5 h' |* N$ A* Q$ [/ P
+ i5 Y, B9 U% A7 [" f
; a) J, @+ F _# K6 C经验:不是下面那个拨叫不通听提示音的问题,还发现不了是ip冲突,以后遇到此类文件,还真得注意了,抓包要抓arp和sip协议和rtp协议和icmp协议(rtp发错地方会有icmp的提示),这样好排查故障。) t9 T. L4 M8 P( A6 k
9 y) s& \/ s8 c6 N. p" \. h0 f
wireshark里的ctrl+f可以快速找到字符串和16进制串,查找rtp的ssrc可以确定一个方向的语音流。sip contains 号码可以快速找到对应的通话流程包。
3 t# f0 s& L- W/ b————————————————
% v4 U2 M1 k S' [. u版权声明:本文为CSDN博主「wj31932」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
9 H( d3 Y1 U6 Y% O* E& C; z原文链接:https://blog.csdn.net/wj31932/article/details/100057318
. s' r& A# }6 K, n, M0 _
6 n( g' S! q- n- L8 o( e |