rtp port changed in REPLY's SDP after announcement

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

rtp port changed in REPLY's SDP after announcement

Marco Hierl

Dear all,

 

I want to play an early announcement before connecting a call. The announcement can be heard by the caller, but the callee can't hear the caller after the call is connected!

 

To be more precise:

The openSIPS proxy receives a call from an external interconnection partner (public IP on external interface) and sends it on to an announcement server (private IP on internal interface).

After REPLY 183 the announcement starts and the caller can hear the announcement. It finishes with REPLY603 that comes to the openSIPS failure route. Some stuff is done (e.g. changing R-URI),

a new t_relay will be done and an INVITE is send to the callee (public IP on external interface). The callee sends 200ok, it's forwarded to the caller, that sends ACK like usual.

But the caller does not send RTP to the IP/PORT indicated in the 200OK.

 

The interconnection partner said that the problem is, that the RTP port in REPLY 183 is different to that in REPLY200 (not allowed, see RFC6337).  (just to mention: the to-tag is different too)

I'm using openSIPS 2.3 and in order to overcome the issue with internal and external addresses and also to keep the rtp streams I'm using rtpengine 5.4 (on a different machine)

 

 

Is the change of the RTP Port allowed in this way? If not, what I can do better? Or is it a fault from rtp-engine, should it keep the first port?

Any help is very appreciated!

 

 

I tried to make a picture... maybe it helps a bit to understand what I was not able to explain above...

 

 

No From       To         Message

1 external   ownProxy   Request:  INVITE sip:+[hidden email];user=phone

2 ownProxy   external   Status:   100 Giving a try

                                                   rtpengine_offer(external internal replace-session-connection ICE=remove trust-address replace-origin)

 3                                                 to   announcement server  Request: INVITE sip:ANNC@mediaserver:5060;user=phone |

 4                                                 from announcement server  Status: 100 Trying |

 5                                                 from announcement server  Status: 183 Session Progress |

                                                                             o=root 1135152900 1135152900 IN IP4 mediaserver

                                                                             m=audio 13788 RTP/AVP 8 101

                                                   rtpengine_answer(internal external replace-session-connection ICE=remove trust-address replace-origin)

 6 ownProxy   external   Status:   183 Session Progress

                                       o=root 1135152900 1135152900 IN IP4 ownProxy

                                       m=audio 23024 RTP/AVP 8 101

                                      

 < ========== ANNOUNCEMENT ========= >                                          

 7                                                 from announcement server  Status: 603 Declined

 

                                                   openSIPS failure route

                                                   and rtpengine_offer(external external replace-session-connection ICE=remove trust-address replace-origin)

                                                   and new t_relay

 8                                                 to   callee   Request: INVITE sip:bob@externalcarrier:5060;user=phone

9                                                 from callee   Status: 100 Trying

10                                                 from callee   Status: 200 OK

                                                                         o=- 239036129 823630844 IN IP4 10.0.203.7

                                                                         m=audio 1044 RTP/AVP 8 101

                                                   rtpengine_answer(external external replace-session-connection ICE=remove trust-address replace-origin)

 

11 ownProxy   external   Status:   200 OK

                                       o=- 239036129 823630844 IN IP4 ownProxy

                                       m=audio 23056 RTP/AVP 8 101     

                                             

 < ==========    RTP from B to A is ok,   A send NO RTP to B   ========= >                                          

 

12 external   ownProxy   Request:  ACK sip:ownProxy;did=5db.a2833e17

13 external   ownProxy   Request:  BYE sip:ownProxy;did=5db.a2833e17

14 ownProxy   external   Status:   200 OK

 

    

     

version: opensips 2.3.0 (x86_64/linux)

flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT

ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535

poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.

git revision: fe0ebcb45

main.c compiled on 09:02:02 Sep 14 2017 with gcc 6.3.0

 

rtpengine version 5.4.0.0+0~mr5.4.0.0 git-master-a9d55c6

 

 

 

Thanks and best regards!!!

  Marco

 

  

  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: rtp port changed in REPLY's SDP after announcement

Bogdan-Andrei Iancu-2
Hello Marco,

Did the interconnection partner mentioned the chapter/paragraph in RFC6337 where the restriction on the port is mentioned (I was not able to find it on a quick scan) ? it is the first time I hear about anything like this.

Now, if you use rtpproxy (I do not know about rtpengine) on your side and you do rtpproxy_offer only once (when getting the call from the carrier) , you can do rtpproxy_answer multiple time (during the serial forking). In this case, the RTP IP:port towards the carrier will never change, but the RTP callee leg will be changed.

Best regards,
Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com
On 11/21/2017 11:07 AM, Marco Hierl wrote:

Dear all,

 

I want to play an early announcement before connecting a call. The announcement can be heard by the caller, but the callee can't hear the caller after the call is connected!

 

To be more precise:

The openSIPS proxy receives a call from an external interconnection partner (public IP on external interface) and sends it on to an announcement server (private IP on internal interface).

After REPLY 183 the announcement starts and the caller can hear the announcement. It finishes with REPLY603 that comes to the openSIPS failure route. Some stuff is done (e.g. changing R-URI),

a new t_relay will be done and an INVITE is send to the callee (public IP on external interface). The callee sends 200ok, it's forwarded to the caller, that sends ACK like usual.

But the caller does not send RTP to the IP/PORT indicated in the 200OK.

 

The interconnection partner said that the problem is, that the RTP port in REPLY 183 is different to that in REPLY200 (not allowed, see RFC6337).  (just to mention: the to-tag is different too)

I'm using openSIPS 2.3 and in order to overcome the issue with internal and external addresses and also to keep the rtp streams I'm using rtpengine 5.4 (on a different machine)

 

 

Is the change of the RTP Port allowed in this way? If not, what I can do better? Or is it a fault from rtp-engine, should it keep the first port?

Any help is very appreciated!

 

 

I tried to make a picture... maybe it helps a bit to understand what I was not able to explain above...

 

 

No From       To         Message

1 external   ownProxy   Request:  INVITE <a class="moz-txt-link-freetext" href="sip:+49xxx@us.de;user=phone">sip:+49xxx@...;user=phone

2 ownProxy   external   Status:   100 Giving a try

                                                   rtpengine_offer(external internal replace-session-connection ICE=remove trust-address replace-origin)

 3                                                 to   announcement server  Request: INVITE <a class="moz-txt-link-freetext" href="sip:ANNC@mediaserver:5060;user=phone">sip:ANNC@mediaserver:5060;user=phone |

 4                                                 from announcement server  Status: 100 Trying |

 5                                                 from announcement server  Status: 183 Session Progress |

                                                                             o=root 1135152900 1135152900 IN IP4 mediaserver

                                                                             m=audio 13788 RTP/AVP 8 101

                                                   rtpengine_answer(internal external replace-session-connection ICE=remove trust-address replace-origin)

 6 ownProxy   external   Status:   183 Session Progress

                                       o=root 1135152900 1135152900 IN IP4 ownProxy

                                       m=audio 23024 RTP/AVP 8 101

                                      

 < ========== ANNOUNCEMENT ========= >                                          

 7                                                 from announcement server  Status: 603 Declined

 

                                                   openSIPS failure route

                                                   and rtpengine_offer(external external replace-session-connection ICE=remove trust-address replace-origin)

                                                   and new t_relay

 8                                                 to   callee   Request: INVITE <a class="moz-txt-link-freetext" href="sip:bob@externalcarrier:5060;user=phone">sip:bob@externalcarrier:5060;user=phone

9                                                 from callee   Status: 100 Trying

10                                                 from callee   Status: 200 OK

                                                                         o=- 239036129 823630844 IN IP4 10.0.203.7

                                                                         m=audio 1044 RTP/AVP 8 101

                                                   rtpengine_answer(external external replace-session-connection ICE=remove trust-address replace-origin)

 

11 ownProxy   external   Status:   200 OK

                                       o=- 239036129 823630844 IN IP4 ownProxy

                                       m=audio 23056 RTP/AVP 8 101     

                                             

 < ==========    RTP from B to A is ok,   A send NO RTP to B   ========= >                                          

 

12 external   ownProxy   Request:  ACK <a class="moz-txt-link-freetext" href="sip:ownProxy;did=5db.a2833e17">sip:ownProxy;did=5db.a2833e17

13 external   ownProxy   Request:  BYE <a class="moz-txt-link-freetext" href="sip:ownProxy;did=5db.a2833e17">sip:ownProxy;did=5db.a2833e17

14 ownProxy   external   Status:   200 OK

 

    

     

version: opensips 2.3.0 (x86_64/linux)

flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT

ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535

poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.

git revision: fe0ebcb45

main.c compiled on 09:02:02 Sep 14 2017 with gcc 6.3.0

 

rtpengine version 5.4.0.0+0~mr5.4.0.0 git-master-a9d55c6

 

 

 

Thanks and best regards!!!

  Marco

 

  

  



_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: rtp port changed in REPLY's SDP after announcement

Marco Hierl

Hi Bogdan,

 

no, he did not say anything yet, but I expect that it is paragraph 3.2:

 

“A UAS cannot send a new offer in the reliable

provisional response, so the UPDATE method is the only method for a

UAS to update an early session.”

 

(I’m not quite sure if this really fits to our situation, because the UAS itself changed.)

 

 

According to your suggestion:

I used “rtpengine_offer(external internal…” to adjust the SDP the first time. So I get an internal IP in the INVITE to the announcement. And this will be seen in the 2nd INVITE to the callee if I do NOT make “rtpengine_offer(external external” to the INVITE to the callee. But the callee has public IP and I need to use the external interface.

 

 

Thanks for your help!

  Marco

 

 

 

 

 

Von: Bogdan-Andrei Iancu [mailto:[hidden email]]
Gesendet: Dienstag, 21. November 2017 11:10
An: OpenSIPS users mailling list; Marco Hierl
Betreff: Re: [OpenSIPS-Users] rtp port changed in REPLY's SDP after announcement

 

Hello Marco,

Did the interconnection partner mentioned the chapter/paragraph in RFC6337 where the restriction on the port is mentioned (I was not able to find it on a quick scan) ? it is the first time I hear about anything like this.

Now, if you use rtpproxy (I do not know about rtpengine) on your side and you do rtpproxy_offer only once (when getting the call from the carrier) , you can do rtpproxy_answer multiple time (during the serial forking). In this case, the RTP IP:port towards the carrier will never change, but the RTP callee leg will be changed.

Best regards,

Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com

On 11/21/2017 11:07 AM, Marco Hierl wrote:

Dear all,

 

I want to play an early announcement before connecting a call. The announcement can be heard by the caller, but the callee can't hear the caller after the call is connected!

 

To be more precise:

The openSIPS proxy receives a call from an external interconnection partner (public IP on external interface) and sends it on to an announcement server (private IP on internal interface).

After REPLY 183 the announcement starts and the caller can hear the announcement. It finishes with REPLY603 that comes to the openSIPS failure route. Some stuff is done (e.g. changing R-URI),

a new t_relay will be done and an INVITE is send to the callee (public IP on external interface). The callee sends 200ok, it's forwarded to the caller, that sends ACK like usual.

But the caller does not send RTP to the IP/PORT indicated in the 200OK.

 

The interconnection partner said that the problem is, that the RTP port in REPLY 183 is different to that in REPLY200 (not allowed, see RFC6337).  (just to mention: the to-tag is different too)

I'm using openSIPS 2.3 and in order to overcome the issue with internal and external addresses and also to keep the rtp streams I'm using rtpengine 5.4 (on a different machine)

 

 

Is the change of the RTP Port allowed in this way? If not, what I can do better? Or is it a fault from rtp-engine, should it keep the first port?

Any help is very appreciated!

 

 

I tried to make a picture... maybe it helps a bit to understand what I was not able to explain above...

 

 

No From       To         Message

1 external   ownProxy   Request:  INVITE <a href="sip:&#43;49xxx@us.de;user=phone">sip:+49xxx@...;user=phone

2 ownProxy   external   Status:   100 Giving a try

                                                   rtpengine_offer(external internal replace-session-connection ICE=remove trust-address replace-origin)

 3                                                 to   announcement server  Request: INVITE <a href="sip:ANNC@mediaserver:5060;user=phone">sip:ANNC@mediaserver:5060;user=phone |

 4                                                 from announcement server  Status: 100 Trying |

 5                                                 from announcement server  Status: 183 Session Progress |

                                                                             o=root 1135152900 1135152900 IN IP4 mediaserver

                                                                             m=audio 13788 RTP/AVP 8 101

                                                   rtpengine_answer(internal external replace-session-connection ICE=remove trust-address replace-origin)

 6 ownProxy   external   Status:   183 Session Progress

                                       o=root 1135152900 1135152900 IN IP4 ownProxy

                                       m=audio 23024 RTP/AVP 8 101

                                      

 < ========== ANNOUNCEMENT ========= >                                          

 7                                                 from announcement server  Status: 603 Declined

 

                                                   openSIPS failure route

                                                   and rtpengine_offer(external external replace-session-connection ICE=remove trust-address replace-origin)

                                                   and new t_relay

 8                                                 to   callee   Request: INVITE <a href="sip:bob@externalcarrier:5060;user=phone">sip:bob@externalcarrier:5060;user=phone

9                                                 from callee   Status: 100 Trying

10                                                 from callee   Status: 200 OK

                                                                         o=- 239036129 823630844 IN IP4 10.0.203.7

                                                                         m=audio 1044 RTP/AVP 8 101

                                                   rtpengine_answer(external external replace-session-connection ICE=remove trust-address replace-origin)

 

11 ownProxy   external   Status:   200 OK

                                       o=- 239036129 823630844 IN IP4 ownProxy

                                       m=audio 23056 RTP/AVP 8 101     

                                             

 < ==========    RTP from B to A is ok,   A send NO RTP to B   ========= >                                          

 

12 external   ownProxy   Request:  ACK <a href="sip:ownProxy;did=5db.a2833e17">sip:ownProxy;did=5db.a2833e17

13 external   ownProxy   Request:  BYE <a href="sip:ownProxy;did=5db.a2833e17">sip:ownProxy;did=5db.a2833e17

14 ownProxy   external   Status:   200 OK

 

    

     

version: opensips 2.3.0 (x86_64/linux)

flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT

ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535

poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.

git revision: fe0ebcb45

main.c compiled on 09:02:02 Sep 14 2017 with gcc 6.3.0

 

rtpengine version 5.4.0.0+0~mr5.4.0.0 git-master-a9d55c6

 

 

 

Thanks and best regards!!!

  Marco

 

  

  




_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

 


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: rtp port changed in REPLY's SDP after announcement

Bogdan-Andrei Iancu-2
Hi Marco,

If I understand correctly, you *NEED* to do get different SDP's in the 2 INVITE branches as the first branch going to the media server needs to have a private IP, while the second branch going to the calle needs to have a public IP, right ?

Regards,
Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com
On 11/21/2017 12:49 PM, Marco Hierl wrote:

Hi Bogdan,

 

no, he did not say anything yet, but I expect that it is paragraph 3.2:

 

“A UAS cannot send a new offer in the reliable

provisional response, so the UPDATE method is the only method for a

UAS to update an early session.”

 

(I’m not quite sure if this really fits to our situation, because the UAS itself changed.)

 

 

According to your suggestion:

I used “rtpengine_offer(external internal…” to adjust the SDP the first time. So I get an internal IP in the INVITE to the announcement. And this will be seen in the 2nd INVITE to the callee if I do NOT make “rtpengine_offer(external external” to the INVITE to the callee. But the callee has public IP and I need to use the external interface.

 

 

Thanks for your help!

  Marco

 

 

 

 

 

Von: Bogdan-Andrei Iancu [[hidden email]]
Gesendet: Dienstag, 21. November 2017 11:10
An: OpenSIPS users mailling list; Marco Hierl
Betreff: Re: [OpenSIPS-Users] rtp port changed in REPLY's SDP after announcement

 

Hello Marco,

Did the interconnection partner mentioned the chapter/paragraph in RFC6337 where the restriction on the port is mentioned (I was not able to find it on a quick scan) ? it is the first time I hear about anything like this.

Now, if you use rtpproxy (I do not know about rtpengine) on your side and you do rtpproxy_offer only once (when getting the call from the carrier) , you can do rtpproxy_answer multiple time (during the serial forking). In this case, the RTP IP:port towards the carrier will never change, but the RTP callee leg will be changed.

Best regards,

Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com

On 11/21/2017 11:07 AM, Marco Hierl wrote:

Dear all,

 

I want to play an early announcement before connecting a call. The announcement can be heard by the caller, but the callee can't hear the caller after the call is connected!

 

To be more precise:

The openSIPS proxy receives a call from an external interconnection partner (public IP on external interface) and sends it on to an announcement server (private IP on internal interface).

After REPLY 183 the announcement starts and the caller can hear the announcement. It finishes with REPLY603 that comes to the openSIPS failure route. Some stuff is done (e.g. changing R-URI),

a new t_relay will be done and an INVITE is send to the callee (public IP on external interface). The callee sends 200ok, it's forwarded to the caller, that sends ACK like usual.

But the caller does not send RTP to the IP/PORT indicated in the 200OK.

 

The interconnection partner said that the problem is, that the RTP port in REPLY 183 is different to that in REPLY200 (not allowed, see RFC6337).  (just to mention: the to-tag is different too)

I'm using openSIPS 2.3 and in order to overcome the issue with internal and external addresses and also to keep the rtp streams I'm using rtpengine 5.4 (on a different machine)

 

 

Is the change of the RTP Port allowed in this way? If not, what I can do better? Or is it a fault from rtp-engine, should it keep the first port?

Any help is very appreciated!

 

 

I tried to make a picture... maybe it helps a bit to understand what I was not able to explain above...

 

 

No From       To         Message

1 external   ownProxy   Request:  INVITE <a href="sip:+49xxx@us.de;user=phone" moz-do-not-send="true">sip:+49xxx@...;user=phone

2 ownProxy   external   Status:   100 Giving a try

                                                   rtpengine_offer(external internal replace-session-connection ICE=remove trust-address replace-origin)

 3                                                 to   announcement server  Request: INVITE <a href="sip:ANNC@mediaserver:5060;user=phone" moz-do-not-send="true">sip:ANNC@mediaserver:5060;user=phone |

 4                                                 from announcement server  Status: 100 Trying |

 5                                                 from announcement server  Status: 183 Session Progress |

                                                                             o=root 1135152900 1135152900 IN IP4 mediaserver

                                                                             m=audio 13788 RTP/AVP 8 101

                                                   rtpengine_answer(internal external replace-session-connection ICE=remove trust-address replace-origin)

 6 ownProxy   external   Status:   183 Session Progress

                                       o=root 1135152900 1135152900 IN IP4 ownProxy

                                       m=audio 23024 RTP/AVP 8 101

                                      

 < ========== ANNOUNCEMENT ========= >                                          

 7                                                 from announcement server  Status: 603 Declined

 

                                                   openSIPS failure route

                                                   and rtpengine_offer(external external replace-session-connection ICE=remove trust-address replace-origin)

                                                   and new t_relay

 8                                                 to   callee   Request: INVITE <a href="sip:bob@externalcarrier:5060;user=phone" moz-do-not-send="true">sip:bob@externalcarrier:5060;user=phone

9                                                 from callee   Status: 100 Trying

10                                                 from callee   Status: 200 OK

                                                                         o=- 239036129 823630844 IN IP4 10.0.203.7

                                                                         m=audio 1044 RTP/AVP 8 101

                                                   rtpengine_answer(external external replace-session-connection ICE=remove trust-address replace-origin)

 

11 ownProxy   external   Status:   200 OK

                                       o=- 239036129 823630844 IN IP4 ownProxy

                                       m=audio 23056 RTP/AVP 8 101     

                                             

 < ==========    RTP from B to A is ok,   A send NO RTP to B   ========= >                                          

 

12 external   ownProxy   Request:  ACK <a href="sip:ownProxy;did=5db.a2833e17" moz-do-not-send="true">sip:ownProxy;did=5db.a2833e17

13 external   ownProxy   Request:  BYE <a href="sip:ownProxy;did=5db.a2833e17" moz-do-not-send="true">sip:ownProxy;did=5db.a2833e17

14 ownProxy   external   Status:   200 OK

 

    

     

version: opensips 2.3.0 (x86_64/linux)

flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT

ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535

poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.

git revision: fe0ebcb45

main.c compiled on 09:02:02 Sep 14 2017 with gcc 6.3.0

 

rtpengine version 5.4.0.0+0~mr5.4.0.0 git-master-a9d55c6

 

 

 

Thanks and best regards!!!

  Marco

 

  

  




_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

 



_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: rtp port changed in REPLY's SDP after announcement

Marco Hierl

Hi Bogdan,

 

yes, that’s correct!

 

Best regards

  Marco

 

Von: Bogdan-Andrei Iancu [mailto:[hidden email]]
Gesendet: Mittwoch, 22. November 2017 16:15
An: Marco Hierl; OpenSIPS users mailling list
Betreff: Re: AW: [OpenSIPS-Users] rtp port changed in REPLY's SDP after announcement

 

Hi Marco,

If I understand correctly, you *NEED* to do get different SDP's in the 2 INVITE branches as the first branch going to the media server needs to have a private IP, while the second branch going to the calle needs to have a public IP, right ?

Regards,

Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com

On 11/21/2017 12:49 PM, Marco Hierl wrote:

Hi Bogdan,

 

no, he did not say anything yet, but I expect that it is paragraph 3.2:

 

“A UAS cannot send a new offer in the reliable

provisional response, so the UPDATE method is the only method for a

UAS to update an early session.”

 

(I’m not quite sure if this really fits to our situation, because the UAS itself changed.)

 

 

According to your suggestion:

I used “rtpengine_offer(external internal…” to adjust the SDP the first time. So I get an internal IP in the INVITE to the announcement. And this will be seen in the 2nd INVITE to the callee if I do NOT make “rtpengine_offer(external external” to the INVITE to the callee. But the callee has public IP and I need to use the external interface.

 

 

Thanks for your help!

  Marco

 

 

 

 

 

Von: Bogdan-Andrei Iancu [[hidden email]]
Gesendet: Dienstag, 21. November 2017 11:10
An: OpenSIPS users mailling list; Marco Hierl
Betreff: Re: [OpenSIPS-Users] rtp port changed in REPLY's SDP after announcement

 

Hello Marco,

Did the interconnection partner mentioned the chapter/paragraph in RFC6337 where the restriction on the port is mentioned (I was not able to find it on a quick scan) ? it is the first time I hear about anything like this.

Now, if you use rtpproxy (I do not know about rtpengine) on your side and you do rtpproxy_offer only once (when getting the call from the carrier) , you can do rtpproxy_answer multiple time (during the serial forking). In this case, the RTP IP:port towards the carrier will never change, but the RTP callee leg will be changed.

Best regards,


Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com

On 11/21/2017 11:07 AM, Marco Hierl wrote:

Dear all,

 

I want to play an early announcement before connecting a call. The announcement can be heard by the caller, but the callee can't hear the caller after the call is connected!

 

To be more precise:

The openSIPS proxy receives a call from an external interconnection partner (public IP on external interface) and sends it on to an announcement server (private IP on internal interface).

After REPLY 183 the announcement starts and the caller can hear the announcement. It finishes with REPLY603 that comes to the openSIPS failure route. Some stuff is done (e.g. changing R-URI),

a new t_relay will be done and an INVITE is send to the callee (public IP on external interface). The callee sends 200ok, it's forwarded to the caller, that sends ACK like usual.

But the caller does not send RTP to the IP/PORT indicated in the 200OK.

 

The interconnection partner said that the problem is, that the RTP port in REPLY 183 is different to that in REPLY200 (not allowed, see RFC6337).  (just to mention: the to-tag is different too)

I'm using openSIPS 2.3 and in order to overcome the issue with internal and external addresses and also to keep the rtp streams I'm using rtpengine 5.4 (on a different machine)

 

 

Is the change of the RTP Port allowed in this way? If not, what I can do better? Or is it a fault from rtp-engine, should it keep the first port?

Any help is very appreciated!

 

 

I tried to make a picture... maybe it helps a bit to understand what I was not able to explain above...

 

 

No From       To         Message

1 external   ownProxy   Request:  INVITE <a href="sip:&#43;49xxx@us.de;user=phone">sip:+49xxx@...;user=phone

2 ownProxy   external   Status:   100 Giving a try

                                                   rtpengine_offer(external internal replace-session-connection ICE=remove trust-address replace-origin)

 3                                                 to   announcement server  Request: INVITE <a href="sip:ANNC@mediaserver:5060;user=phone">sip:ANNC@mediaserver:5060;user=phone |

 4                                                 from announcement server  Status: 100 Trying |

 5                                                 from announcement server  Status: 183 Session Progress |

                                                                             o=root 1135152900 1135152900 IN IP4 mediaserver

                                                                             m=audio 13788 RTP/AVP 8 101

                                                   rtpengine_answer(internal external replace-session-connection ICE=remove trust-address replace-origin)

 6 ownProxy   external   Status:   183 Session Progress

                                       o=root 1135152900 1135152900 IN IP4 ownProxy

                                       m=audio 23024 RTP/AVP 8 101

                                      

 < ========== ANNOUNCEMENT ========= >                                          

 7                                                 from announcement server  Status: 603 Declined

 

                                                   openSIPS failure route

                                                   and rtpengine_offer(external external replace-session-connection ICE=remove trust-address replace-origin)

                                                   and new t_relay

 8                                                 to   callee   Request: INVITE <a href="sip:bob@externalcarrier:5060;user=phone">sip:bob@externalcarrier:5060;user=phone

9                                                 from callee   Status: 100 Trying

10                                                 from callee   Status: 200 OK

                                                                         o=- 239036129 823630844 IN IP4 10.0.203.7

                                                                         m=audio 1044 RTP/AVP 8 101

                                                   rtpengine_answer(external external replace-session-connection ICE=remove trust-address replace-origin)

 

11 ownProxy   external   Status:   200 OK

                                       o=- 239036129 823630844 IN IP4 ownProxy

                                       m=audio 23056 RTP/AVP 8 101     

                                             

 < ==========    RTP from B to A is ok,   A send NO RTP to B   ========= >                                          

 

12 external   ownProxy   Request:  ACK <a href="sip:ownProxy;did=5db.a2833e17">sip:ownProxy;did=5db.a2833e17

13 external   ownProxy   Request:  BYE <a href="sip:ownProxy;did=5db.a2833e17">sip:ownProxy;did=5db.a2833e17

14 ownProxy   external   Status:   200 OK

 

    

     

version: opensips 2.3.0 (x86_64/linux)

flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT

ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535

poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.

git revision: fe0ebcb45

main.c compiled on 09:02:02 Sep 14 2017 with gcc 6.3.0

 

rtpengine version 5.4.0.0+0~mr5.4.0.0 git-master-a9d55c6

 

 

 

Thanks and best regards!!!

  Marco

 

  

  





_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

 

 


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: rtp port changed in REPLY's SDP after announcement

Bogdan-Andrei Iancu-2
Marco,

In this is case it exclusively depends on the rtpengine if it updates or creates a new session when you call the "offer" for the second time. If the existing session (created for the first branch) will be updated on the second "offer", the port in the replies (towards caller) will not change, right ?

But, based on your tests, I assume it does change the port send to caller after the second offer :( .

Again, this depends on the media relay implementation, it is not something to be controlled by OpenSIPS.

As a simple alternative, move your media server on the public network, so you will not need a second offer. For the second branch, you will simply do a second answer.

Regards,
Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com
On 11/22/2017 06:37 PM, Marco Hierl wrote:

Hi Bogdan,

 

yes, that’s correct!

 

Best regards

  Marco

 

Von: Bogdan-Andrei Iancu [[hidden email]]
Gesendet: Mittwoch, 22. November 2017 16:15
An: Marco Hierl; OpenSIPS users mailling list
Betreff: Re: AW: [OpenSIPS-Users] rtp port changed in REPLY's SDP after announcement

 

Hi Marco,

If I understand correctly, you *NEED* to do get different SDP's in the 2 INVITE branches as the first branch going to the media server needs to have a private IP, while the second branch going to the calle needs to have a public IP, right ?

Regards,

Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com

On 11/21/2017 12:49 PM, Marco Hierl wrote:

Hi Bogdan,

 

no, he did not say anything yet, but I expect that it is paragraph 3.2:

 

“A UAS cannot send a new offer in the reliable

provisional response, so the UPDATE method is the only method for a

UAS to update an early session.”

 

(I’m not quite sure if this really fits to our situation, because the UAS itself changed.)

 

 

According to your suggestion:

I used “rtpengine_offer(external internal…” to adjust the SDP the first time. So I get an internal IP in the INVITE to the announcement. And this will be seen in the 2nd INVITE to the callee if I do NOT make “rtpengine_offer(external external” to the INVITE to the callee. But the callee has public IP and I need to use the external interface.

 

 

Thanks for your help!

  Marco

 

 

 

 

 

Von: Bogdan-Andrei Iancu [[hidden email]]
Gesendet: Dienstag, 21. November 2017 11:10
An: OpenSIPS users mailling list; Marco Hierl
Betreff: Re: [OpenSIPS-Users] rtp port changed in REPLY's SDP after announcement

 

Hello Marco,

Did the interconnection partner mentioned the chapter/paragraph in RFC6337 where the restriction on the port is mentioned (I was not able to find it on a quick scan) ? it is the first time I hear about anything like this.

Now, if you use rtpproxy (I do not know about rtpengine) on your side and you do rtpproxy_offer only once (when getting the call from the carrier) , you can do rtpproxy_answer multiple time (during the serial forking). In this case, the RTP IP:port towards the carrier will never change, but the RTP callee leg will be changed.

Best regards,


Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com

On 11/21/2017 11:07 AM, Marco Hierl wrote:

Dear all,

 

I want to play an early announcement before connecting a call. The announcement can be heard by the caller, but the callee can't hear the caller after the call is connected!

 

To be more precise:

The openSIPS proxy receives a call from an external interconnection partner (public IP on external interface) and sends it on to an announcement server (private IP on internal interface).

After REPLY 183 the announcement starts and the caller can hear the announcement. It finishes with REPLY603 that comes to the openSIPS failure route. Some stuff is done (e.g. changing R-URI),

a new t_relay will be done and an INVITE is send to the callee (public IP on external interface). The callee sends 200ok, it's forwarded to the caller, that sends ACK like usual.

But the caller does not send RTP to the IP/PORT indicated in the 200OK.

 

The interconnection partner said that the problem is, that the RTP port in REPLY 183 is different to that in REPLY200 (not allowed, see RFC6337).  (just to mention: the to-tag is different too)

I'm using openSIPS 2.3 and in order to overcome the issue with internal and external addresses and also to keep the rtp streams I'm using rtpengine 5.4 (on a different machine)

 

 

Is the change of the RTP Port allowed in this way? If not, what I can do better? Or is it a fault from rtp-engine, should it keep the first port?

Any help is very appreciated!

 

 

I tried to make a picture... maybe it helps a bit to understand what I was not able to explain above...

 

 

No From       To         Message

1 external   ownProxy   Request:  INVITE <a href="sip:+49xxx@us.de;user=phone" moz-do-not-send="true">sip:+49xxx@...;user=phone

2 ownProxy   external   Status:   100 Giving a try

                                                   rtpengine_offer(external internal replace-session-connection ICE=remove trust-address replace-origin)

 3                                                 to   announcement server  Request: INVITE <a href="sip:ANNC@mediaserver:5060;user=phone" moz-do-not-send="true">sip:ANNC@mediaserver:5060;user=phone |

 4                                                 from announcement server  Status: 100 Trying |

 5                                                 from announcement server  Status: 183 Session Progress |

                                                                             o=root 1135152900 1135152900 IN IP4 mediaserver

                                                                             m=audio 13788 RTP/AVP 8 101

                                                   rtpengine_answer(internal external replace-session-connection ICE=remove trust-address replace-origin)

 6 ownProxy   external   Status:   183 Session Progress

                                       o=root 1135152900 1135152900 IN IP4 ownProxy

                                       m=audio 23024 RTP/AVP 8 101

                                      

 < ========== ANNOUNCEMENT ========= >                                          

 7                                                 from announcement server  Status: 603 Declined

 

                                                   openSIPS failure route

                                                   and rtpengine_offer(external external replace-session-connection ICE=remove trust-address replace-origin)

                                                   and new t_relay

 8                                                 to   callee   Request: INVITE <a href="sip:bob@externalcarrier:5060;user=phone" moz-do-not-send="true">sip:bob@externalcarrier:5060;user=phone

9                                                 from callee   Status: 100 Trying

10                                                 from callee   Status: 200 OK

                                                                         o=- 239036129 823630844 IN IP4 10.0.203.7

                                                                         m=audio 1044 RTP/AVP 8 101

                                                   rtpengine_answer(external external replace-session-connection ICE=remove trust-address replace-origin)

 

11 ownProxy   external   Status:   200 OK

                                       o=- 239036129 823630844 IN IP4 ownProxy

                                       m=audio 23056 RTP/AVP 8 101     

                                             

 < ==========    RTP from B to A is ok,   A send NO RTP to B   ========= >                                          

 

12 external   ownProxy   Request:  ACK <a href="sip:ownProxy;did=5db.a2833e17" moz-do-not-send="true">sip:ownProxy;did=5db.a2833e17

13 external   ownProxy   Request:  BYE <a href="sip:ownProxy;did=5db.a2833e17" moz-do-not-send="true">sip:ownProxy;did=5db.a2833e17

14 ownProxy   external   Status:   200 OK

 

    

     

version: opensips 2.3.0 (x86_64/linux)

flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT

ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535

poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.

git revision: fe0ebcb45

main.c compiled on 09:02:02 Sep 14 2017 with gcc 6.3.0

 

rtpengine version 5.4.0.0+0~mr5.4.0.0 git-master-a9d55c6

 

 

 

Thanks and best regards!!!

  Marco

 

  

  





_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

 

 



_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: rtp port changed in REPLY's SDP after announcement

Marco Hierl

Hi Bogdan,

 

the port keep changing even when using the “offer” only once. As soon as the incoming port is changing, the rtpengine will also change it on the outgoing site. BUT there is an option called “port-latching” that will do the job! Maybe it’s worth to update the documentation for rtpengine module?

 

thanks a lot for your help!

 

Best regards

  Marco

 

 

Von: Bogdan-Andrei Iancu [mailto:[hidden email]]
Gesendet: Mittwoch, 22. November 2017 18:16
An: Marco Hierl; OpenSIPS users mailling list
Betreff: Re: AW: AW: [OpenSIPS-Users] rtp port changed in REPLY's SDP after announcement

 

Marco,

In this is case it exclusively depends on the rtpengine if it updates or creates a new session when you call the "offer" for the second time. If the existing session (created for the first branch) will be updated on the second "offer", the port in the replies (towards caller) will not change, right ?

But, based on your tests, I assume it does change the port send to caller after the second offer :( .

Again, this depends on the media relay implementation, it is not something to be controlled by OpenSIPS.

As a simple alternative, move your media server on the public network, so you will not need a second offer. For the second branch, you will simply do a second answer.

Regards,

Bogdan-Andrei Iancu
  OpenSIPS Founder and Developer
  http://www.opensips-solutions.com

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users