[asterisk-dev] [Code Review] Add a configurable termination threshold to strictrtp's learning mode.

jrose reviewboard at asterisk.org
Mon Jan 16 14:28:13 CST 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1663/
-----------------------------------------------------------

(Updated Jan. 16, 2012, 2:28 p.m.)


Review request for Asterisk Developers, Kevin Fleming, Matt Jordan, and jcolp.


Changes
-------

Addresses reviews by Mark and Matt. Adds back the ability to change the probation requirement.  Documents this change and the options associated with it in rtp.conf and CHANGES.

Also, good news, Kinsey verified that the last version of the patch appears to fix the failing fax tests.


Summary
-------

The purpose of this patch is to resolve some problems that can occur with peers using a mix of directmedia=yes and no occuring between multiple asterisk servers when strictrtp is enabled in rtp.conf.  When attempting to set the strictrtppeer during a reinvite, res_rtp_asterisk will ignore the requested sockaddr and instead set learning mode. Prior to this patch, learning mode would simply set the sockaddr owning the next related RTP packet received and then exit learning mode.  Now, learning mode will track how many times a particular socket address sent rtp packets without being interrupted by another socket address until it reaches the learning mode hit threshold value (set in rtp.conf) and then resume closed mode.


Diffs (updated)
-----

  /branches/1.8/CHANGES 350939 
  /branches/1.8/configs/rtp.conf.sample 350939 
  /branches/1.8/res/res_rtp_asterisk.c 350939 

Diff: https://reviewboard.asterisk.org/r/1663/diff


Testing
-------

I tested this against two scenarios with the following configurations... always with strictrtp=yes

s1
Phone 1 <-- DirectMedia=yes --> Asterisk 1 <-- DirectMedia=Yes --> Asterisk 2 <-- DirectMedia=No --> Phone 3

and

s2
Phone 1 <-- DirectMedia=yes --> Asterisk 1 <-- DirectMedia=Yes --> Phone 2
and then doing a blind transfer with:
Phone 2 <-- DirectMedia=yes --> Asterisk 1 <-- DirectMedia=Yes --> Asterisk 2 <-- DirectMedia=No --> Phone 3

Prior to this test, in s1 there would be one way audio from phone 3 to phone 1 because RTP coming from phone 1 would be rejected by Asterisk 2.

In s2, audio would work normally from phone 1 to phone 2, but after the transfer the result would be the same with one way audio from phone 3 to phone 1 due to rejected
packets from phone 1.


After this patch is applied, both of these scenarios worked as expected as long as I used a threshold above 3.  Phones 1 and 3 were polycom SP430s while Phone 2 was a Grandstream GXP-2020.


Thanks,

jrose

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120116/eabf5499/attachment.htm>


More information about the asterisk-dev mailing list