David Cunningham
2023-Feb-22 23:13 UTC
[asterisk-users] RTP address learning and timing problem
Hello, We have a system that interoperates with an external service, so that the basic call flow is: PSTN origination -> Asterisk A -> External service -> Asterisk B Initially the SDP from the external service tells the two Asterisks to send RTP directly to each other. Part way through the call the external service sends re-INVITEs both Asterisks to change the address for audio to itself, but this fails to work intermittently. The problem seems to be one of timing. If there's no RTP between the two re-INVITEs then it works fine, and both Asterisks send future RTP to the external service as instructed. The problem is if RTP is transmitted/received in the fraction of the second between the two re-INVITEs. If Asterisk A receives the re-INVITE first, and then receives RTP from Asterisk B (which hasn't yet received its re-INVITE), then it re-learns the media address of Asterisk B and sends audio there instead of the new address. Asterisk B gets the second re-INVITE with the new media address, but soon re-learns the media address of Asterisk A because it's getting RTP from it. Note we have "canreinvite = no" in sip.conf, but I don't think that's relevant to the problem. Can anyone suggest how to prevent this problem? Is it possible to turn off learning the media address per call or per peer? Thanks for your help. -- David Cunningham, Voisonics Limited http://voisonics.com/ USA: +1 213 221 1092 New Zealand: +64 (0)28 2558 3782 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20230223/b77b7173/attachment.html>
David Cunningham
2023-Feb-24 21:02 UTC
[asterisk-users] RTP address learning and timing problem
Hello, Does anyone know if one of the "strictrtp" options disables RTP learning? As far as I can tell from the documentation the values "no" and "seqno" are more permissive in allowing other sources rather than less, but I thought I'd check. Thanks. On Thu, 23 Feb 2023 at 12:13, David Cunningham <dcunningham at voisonics.com> wrote:> Hello, > > We have a system that interoperates with an external service, so that the > basic call flow is: > > PSTN origination -> Asterisk A -> External service -> Asterisk B > > Initially the SDP from the external service tells the two Asterisks to > send RTP directly to each other. Part way through the call the external > service sends re-INVITEs both Asterisks to change the address for audio to > itself, but this fails to work intermittently. The problem seems to be one > of timing. > > If there's no RTP between the two re-INVITEs then it works fine, and both > Asterisks send future RTP to the external service as instructed. > > The problem is if RTP is transmitted/received in the fraction of the > second between the two re-INVITEs. If Asterisk A receives the re-INVITE > first, and then receives RTP from Asterisk B (which hasn't yet received its > re-INVITE), then it re-learns the media address of Asterisk B and sends > audio there instead of the new address. Asterisk B gets the second > re-INVITE with the new media address, but soon re-learns the media address > of Asterisk A because it's getting RTP from it. > > Note we have "canreinvite = no" in sip.conf, but I don't think that's > relevant to the problem. > > Can anyone suggest how to prevent this problem? Is it possible to turn off > learning the media address per call or per peer? > > Thanks for your help. > > -- > David Cunningham, Voisonics Limited > http://voisonics.com/ > USA: +1 213 221 1092 > New Zealand: +64 (0)28 2558 3782 >-- David Cunningham, Voisonics Limited http://voisonics.com/ USA: +1 213 221 1092 New Zealand: +64 (0)28 2558 3782 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20230225/e3b20689/attachment.html>