Summary: | ASTERISK-19179: RTP inactivity SIP / ooh323 wont work | ||
Reporter: | TSAREGORODTSEV Yury (tsarik) | Labels: | |
Date Opened: | 2012-01-10 17:50:49.000-0600 | Date Closed: | 2012-06-19 18:31:20 |
Priority: | Critical | Regression? | |
Status: | Closed/Complete | Components: | Addons/chan_ooh323 Channels/chan_sip/General |
Versions: | 10.0.0 | Frequency of Occurrence | |
Related Issues: | |||
Environment: | Also same bug in 1.8.8.0, 1.8.8.1, 10.0.0, 10.1.0-r1 versions. | Attachments: | ( 0) 19179-ooh323-2.patch ( 1) 19179-ooh323-ast10.patch ( 2) ASTERISK-19179-1.patch |
Description: | Asterisk won't to disconnect calls due to rtp inactivity: when asterisk stop receive incoming OR outgoing RTP packets will not changed during anytime before other party hangup this call. same situation in both protocols (sip, ooh323). Its mean if RTP still going in one of directions - asterisk will not disconnect this call. Peer Call ID Duration Recv: Pack Lost ( %) Jitter Send: Pack Lost ( %) Jitter 85.195.000.2 463380552@8 00:03:22 0000009787 0000000000 ( 0.00%) 0.0000 0000012789 0000000000 ( 0.00%) 0.0001 | ||
Comments: | By: Alexander Anikin (may213) 2012-01-10 23:00:50.008-0600 I think this is not a channel driver but RTP core trouble, but will do some checking. By: TSAREGORODTSEV Yury (tsarik) 2012-01-11 11:01:00.427-0600 I really can't understand in which cases its works...... I spent 17 hours non stop - and no results. For sure all RTP media going thru asterisk. I got one result for OUTGOING calls by sip. When asterisk not getting RTP in this case - he interrupt call. But for that I did changes in chan_sip.c: string: 26029: lastrtptx to lastrtprx 26030: lastrtptx to lastrtprx 26043: lastrtprx to lastrtptx (in 2 places) 26044: lastrtprx to lastrtptx 26055: lastrtprx to lastrtptx In result its work only this way (outgoing call from asterisk by SIP if asterisk dont get RTP from calling party). If called party stops send RTP asterisk still handle call. I understand that what I did its incorrect but now its working somehow, in one direction :((( By: Alexander Anikin (may213) 2012-01-13 10:55:13.575-0600 Yury, there are two points which perhaps are issues. 1st - rtp timeout check in the channel driver but not rtp core (could be better to move this to rtp core) And only SIP channel driver check rtp timeout now but not OOH323. 2nd - SIP channel driver check timeout for every packet per rtp session (rtp and rtcp). I don't know what kind of checking is more correct - both type of packets or rtp only. Idea of this checking is to check link loss as i think and from this point of view it is right to check all packets. I attach patch that change way of checking per rtp packets only but i'm not sure that it will come to mainline. OOH323 don't check any rtp timeouts now and i'll produce patch few later here. By: TSAREGORODTSEV Yury (tsarik) 2012-01-13 17:25:33.300-0600 Alexander, thank your for help. OOH323 has implementation you also can find in configs rtptimeout option. I will check this patch and will let you know soon results. By: Alexander Anikin (may213) 2012-01-13 17:34:54.035-0600 Yury, I known about options in config ;) But they only affect to the rtp instance settings but rtp instance don't proccess these completely. Patch for ooh323 will be soon. By: Alexander Anikin (may213) 2012-01-13 17:40:31.991-0600 Yury, patch for ooh323 here also. It is for asterisk 10 but must be clean for 1.8 Please test this patch. By: TSAREGORODTSEV Yury (tsarik) 2012-01-13 17:54:49.465-0600 Alex :) thank you so much :) how everybody used asterisk before? :) because RTP timeout very important function... By: TSAREGORODTSEV Yury (tsarik) 2012-01-13 17:59:35.544-0600 F..K :) in sip channel other problem, if call is SIP <-> SIP in any case * send P2P packets and dont do media proxy. I tried already to change everything - directmedia (old canreinvite), directrtpsetup. In any case if both sides have same codec and same protocol asterisk trying to redirect all media directly between points..... should i open new ticket bug for that? but for calls h323 <-> sip and for h323 <-> h323 i will test today and let you know results. By: TSAREGORODTSEV Yury (tsarik) 2012-01-13 21:13:17.865-0600 Results are: H323 -> doesn't work SIP -> doesn't work By: Alexander Anikin (may213) 2012-01-14 04:40:30.174-0600 Yury, I think that sip channel driver establish local rtp bridge between both legs of call if you disable directmedia. If directmedia enabled asterisk sip driver try to establish remote bridge between sip peers directly. You can disable rtp bridging by enabling jitterbuffer in sip.conf, just put jbforce=yes and jbimpl=adaptive in [general] section of sip.conf By: Alexander Anikin (may213) 2012-01-14 07:24:09.143-0600 Yury, corrected patch for ooh323 uploaded, pls try. It tested and work in my environment. By: TSAREGORODTSEV Yury (tsarik) 2012-01-16 14:36:47.652-0600 Alexander, if it is possible please add me on skype: tsarik-108 or icq: 622719210 I have some interesting offer for you :) By: Joshua C. Colp (jcolp) 2012-01-24 11:37:50.010-0600 I've put a patch in to fix rtptimeout support on 1.8 for SIP, so that should now be resolved (and I've tested all versions to confirm it). As this is now a solely a chan_ooh323 issue I will be moving on. A few notes though: 1. The memset in the patch is not needed, calloc zeroes the memory already. 2. lastrtptx is used in places where lastrtprx should be used. By: Alexander Anikin (may213) 2012-01-24 16:39:15.030-0600 Joshua, patch without memset uploaded, lastrtptx was on wrong place in 1st version of patch (2nd patch had same filename), i just removed 1st. But i have two common things about processing rtp timeout: 1. I'm not sure that checking timeout on rtp packets only (without rtcp packets as per attached patches) is more correct than checking both types of packets. 2. I think it would be better to implement checking of timeouts in the asterisk rtp engine and not in channel drivers that perform signalling. By: Joshua C. Colp (jcolp) 2012-01-25 10:24:58.861-0600 1. If RTP OR RTCP is received from the other side it is still alive. 2. Ideally yes but that would be an improvement for trunk only, not a bug fix. By: Alexander Anikin (may213) 2012-01-26 02:12:51.297-0600 Original request from user for this issues is to check RTP packets only without checking RTCP (as i understand this request opposite side stop send voice but continue send rtcp) Attached patches works according this request so they aren't bug fix for a while (except ooh323 don't have any rtp timeout checking now) I think there is need to implement rtp timeouts in the rtp engine with configurable option how to check timeouts - with or without rtcp. By: Alexander Anikin (may213) 2012-06-19 18:20:21.032-0500 It's time to close this issue. Patch for ooh323 goes to all supported version as bug fix documented option rtptimeout with checking only rtp packets. RTCP packets are not an indication of live voice from a side that send they. Moving rtp timeouts to rtp core and improvements of rtp timeouts in another channel drivers is subject for separate issue and could be will open this later. By: Dmitry Melekhov (slesru) 2012-09-13 01:16:35.035-0500 Hello! I guess something is wrong in this patch. I have call disconnections on rtp inactivity on dahdi-ooh323 calls with asterisk 10.7.0 on 61 seconds , but never on ooh323-dahdi. So I just set rtptimeout to 0, will know soon does it help or not. |