cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1777
Views
0
Helpful
3
Replies

Question regarding Cisco RtpLib change of EpOpenById / EpOpenById_Symmetric

Axel Becker
Level 1
Level 1

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!

3 Replies 3

j.a.m.e.s
Level 3
Level 3

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.

Hi James,

sorry, I am not aware of single-port Option.

best regards

 

Axel

sigmundwu
Level 1
Level 1

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                    

                     }

// …