12-28-2016 09:19 AM
CSCuy42107 Add a single-port RTP option to TSP
Symptom:
TAPI application uses Cisco RtpLib cannot play music / announcement. RTP packets are rejected by Cisco ISR4431 router. There is just silence not even a ring tone.
Conditions:
This occurs on certain newer Cisco routers. This worked fine with the 3925 router but stopped working with 4431. The gateway configuration is almost identical.
Further Problem Description:
RTPLib is enhanced with addition of a new API - EpOpenById_Symmetric(). This API should be used instead of EpOpenById() in order to deal with the problem.
How can I as an application developer decide if we should call EpOpenById_Symmetric() or EpOpenById()?
Is EpOpenById_Symmetric() also working with old routers?
Parameters for both functions are the same. But I have to call different functions for different TSP Version / router verson....
Looks not like a good implementation on Cisco side!
01-24-2019 02:38 AM
Hi Axel,
Do you know what this single port option actually does? We just upgraded our Cisco CUBE to ISR4k hardware and found that after the HW upgrade PSTN callers cannot hear Arc Voice Connect messages. The symptoms we noticed are:
* The SIP SDP and the CTI Traces showed that Arc should source RTP from a particular port
* The RTP was actually sent from a different port
* The new ISR4k hardware enforces the source port
It seems that the Cisco Media Driver (as used by Arc) and by consequence the RTPLib are at fault here. TAC diagnosed the problem as CSCuw83798 and it has been suggested that using a newer CM version would deliver the "CSCuy42107/Add a single-port RTP option" fix. It's not clear to me what this "Single Port" fix actually does.
Regards
James.
01-24-2019 03:02 AM
Hi James,
sorry, I am not aware of single-port Option.
best regards
Axel
03-01-2022 02:03 PM
We faced similar muted call issue in one of our customers environment with ISR4k/source port validation. We are in a process to switch from EpOpenById() to EpOpenById_Symmetric() to deal with the issue. Our application always opens inbound stream first to listen before starting the outbound stream to play audio. However, after switching to EpOpenById_Symmetric(), we encountered error (sometime 17101, sometimes no error code in getLastErr) in starting the outbound (second) stream in our test environment (no ISR4x etc). Below is the call sequence. Questions:
1. Would this error was caused by the fact that our environment does not support symmetric RTP (since we don't have ISR4x etc), Or
2. Something we did wrong in the code?
Thanks!
sw
// Sequence of calls
// After a call is connected:
Step 1: HANDLE hEpIn = EpOpenById_Symmetric (deviceId, ToApp, NULL); ///open inbound stream to detect voice, OK, Was using EpOpenById
// We also tried to call HANDLE hEp = EpOpenById_Symmetric(deviceId, Both, NULL)in the step and use hEp for both inbound and outbound, result is the same
Step 2: HANDLE hStreamIn = EpGetStreamHandle(hEpIn, STREAM_TYPE_AUDIO, ToApp); // get in stream handle, OK
Step 3: EpStreamOpen(hStreamIn, NULL) // open in stream OK
Step 4: EpStreamRead(hStreamIn, …) // start reading in stream, OK
// some time later (after voice in inbound steam is detected), open and start outbound stream while continue reading in stream:
Step 5: hEpOut = EpOpenById_Symmetric(deviceId, ToNwk, NULL); // OK. Was using EpOpenById
Step 6: HANDLE hStreamOut = EpGetStreamHandle(hEpOut, STREAM_TYPE_AUDIO, ToNwk); // OK
Step 7: if(!EpStreamStart(hStreamOut, NULL)) // FAILED
{
INT32 err=EpApiGetLastError(); // sometime got error code 17101 (in use), sometime got no error code though
}
// …
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide