[OpenSIPS-Users] Opensips as SIP Proxy and WebRTC Media Gateway

Bogdan-Andrei Iancu bogdan at opensips.org
Mon Jul 3 06:08:42 EDT 2017


Hi Alex,

As suspected, the ACK is not properly routed  - see the retransmissions 
of the 200OK + ACK. SImply based on the logs I cannot see what the 
problem is - probably some missing fix_nated_contact() for the replies 
coming from the WS party.

Please make a pcap capture + opensips log (level 4) and send them to me 
*offlist* !

Best regards,

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

OpenSIPS Bootcamp 2017, Houston, US
   http://opensips.org/training/OpenSIPS_Bootcamp_2017.html

On 06/30/2017 05:37 PM, Alex Megalokonomos wrote:
> I have attached the debug log so you get a fuller picture. I hope 
> that's ok
>
> (Incoming call to WS client 694 is the WS extension...610 is my normal 
> desk phone which is connected to OmniPCX) (10.0.1.63-> OpenSIPS 
> ,10.0.1.200-> OmniPCX)
>
>
>
> On Fri, Jun 30, 2017 at 5:20 PM, Bogdan-Andrei Iancu 
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
>     Good, there is some progress :).
>
>     On the incoming calls, if the WS get's the call, we can park the
>     part with the auth (it seems your opensips script is accepting
>     calls from unknown sources...we can address this security hole later.
>
>     So, if a call drop after 30 secs it usually means there is no ACK.
>     Can you make a mgrep capture on OpenSIPS to grab the whole call
>     flow ? (grab 5060 and 80 ports)
>
>     Regards,
>
>     Bogdan-Andrei Iancu
>        OpenSIPS Founder and Developer
>        http://www.opensips-solutions.com <http://www.opensips-solutions.com>
>
>     OpenSIPS Bootcamp 2017, Houston, US
>        http://opensips.org/training/OpenSIPS_Bootcamp_2017.html
>     <http://opensips.org/training/OpenSIPS_Bootcamp_2017.html>
>
>     On 06/30/2017 04:52 PM, Alex Megalokonomos wrote:
>>     I think I set up uac_registrant correctly.
>>     I can dial out from a ws client and the ws extension rings from
>>     outside calls.
>>     However:  a) on incoming calls, when ws client accepts, there is
>>     no sound and the line is dropped after 30 secs or so
>>     b) on outgoing calls, when the called extension accepts the ws
>>     client immediately responds with 401 Unauthorised and then BYE
>>     b) I believe is what you mentioned here "In OpenSIPS, when
>>     receiving calls, you need to authorize (by IP) the calls from
>>     OmniPCX "
>>     How do I do this?
>>     and a) seems to be rtp proxy related since I see the following
>>     errors in the logs¨
>>     ERROR:rtpengine:rtpe_function_call: proxy replied with error:
>>     Unknown call-id
>>     and
>>     no matching transaction
>>     On Fri, Jun 30, 2017 at 2:27 PM, Bogdan-Andrei Iancu
>>     <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>>
>>         I checked the script you mentioned and it does not help you -
>>         it has only UDP (no WS), it is really basic and it does not
>>         handle any REGISTER stuff, which is the trickiest - see
>>         https://blog.opensips.org/2016/12/13/how-to-proxy-sip-registrations/
>>         <https://blog.opensips.org/2016/12/13/how-to-proxy-sip-registrations/>
>>         or
>>         https://blog.opensips.org/2016/12/20/mid-registrar-scalable-registration-and-call-forking/
>>         <https://blog.opensips.org/2016/12/20/mid-registrar-scalable-registration-and-call-forking/>
>>         Maybe you can start with handling REGISTERs - what you need
>>         (on top of the script from the WSS tutorial) is to add this
>>         uac_registrant, to have the WS extensions registered into
>>         OmniPCX with a contact URI pointing back to OpenSIPS IP:
>>         http://www.opensips.org/html/docs/modules/2.3.x/uac_registrant.html
>>         <http://www.opensips.org/html/docs/modules/2.3.x/uac_registrant.html>
>>         Let me know if you get stuck in this first step. Regards,
>>
>>         Bogdan-Andrei Iancu
>>            OpenSIPS Founder and Developer
>>            http://www.opensips-solutions.com
>>         <http://www.opensips-solutions.com>
>>
>>         OpenSIPS Bootcamp 2017, Houston, US
>>            http://opensips.org/training/OpenSIPS_Bootcamp_2017.html
>>         <http://opensips.org/training/OpenSIPS_Bootcamp_2017.html>
>>
>>         On 06/30/2017 12:22 PM, Alex Megalokonomos wrote:
>>>         Hello Bogdan,
>>>         First of all, thanks for your time.
>>>         Unfortunately my SIP/OpensSIPS skills are what I've managed
>>>         to learn in the last couple of days. I am a programmer but
>>>         I've never had to work on SIP stuff before.
>>>         Frankly to me, both solutions sound equally difficult since
>>>         I have no idea where to start. (And to be honest, I expected
>>>         the first to be simpler)
>>>         I found this
>>>         https://blog.voipxswitch.com/2015/03/27/kamailio-basic-sip-proxy-all-requests-setup/
>>>         <https://blog.voipxswitch.com/2015/03/27/kamailio-basic-sip-proxy-all-requests-setup/>
>>>         and tried to port the config to OpenSIPS since from what I
>>>         understand Kamailio and OpenSIPS share a common codebase to
>>>         an extent but was unsuccesful.
>>>         In your second scenario,  I am not interested in WS->WS
>>>         calls so that auth part is not an issue.
>>>         So I guess I need the uac_registrar, authorize by IP and
>>>         usrloc parts.
>>>         Any relevant documentation to get me started since I'm still
>>>         not clear on what I need to change?
>>>         Best regards,
>>>         Alex
>>>         On Fri, Jun 30, 2017 at 11:29 AM, Bogdan-Andrei Iancu
>>>         <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>>>
>>>             Hi Alex, To make a kind of WS<>UDP gateway you need a
>>>             complete rework of the script presented in the tutorial,
>>>             as it is a completely different SIP scenario. Not sure
>>>             what are your SIP/OpenSIPS skills. But, there is a
>>>             simpler alternative . Instead of a GW, you can make
>>>             OpenSIPS as a sub-server for the WS extensions:
>>>             Registration handling: 1) WS extensions register only
>>>             with OpenSIPS (as right now) - authentication is done by
>>>             OpenSIPS 2) OpenSIPS registers the 3 extensions into
>>>             OmniPCX using the uac_registrar By this, we simply add
>>>             the uac_registration and you achieve kind of decoupled 2
>>>             steps registration (with a minimum change in the cfg)
>>>             Inbound calls: 1) OmniPCX will send all the calls (from
>>>             other extensions) for the WS extension to OpenSIPS (due
>>>             the registration via uac_registrar) - this is default
>>>             behavior , so nothing to change 2) In OpenSIPS, when
>>>             receiving calls, you need to authorize (by IP) the calls
>>>             from OmniPCX - and as the current script does, you will
>>>             handle them via the local opensips usrloc -> calls are
>>>             sent to WS extension Outbound calls: 1) when you receive
>>>             a call from a WS extension, you have to check if the
>>>             call is for a local extension (on opensips) or for an
>>>             extension in OmniPCX 2) if call is local (WS to WS) you
>>>             will do authentication for the call 3) if the call is to
>>>             be sent to OmniPCX, simply send the call to OmniPCX
>>>             without auth - the auth will be done by OmniPCX as for
>>>             any other extension Hopefully this will work for you :)
>>>             Best regards,
>>>
>>>             Bogdan-Andrei Iancu
>>>                OpenSIPS Founder and Developer
>>>                http://www.opensips-solutions.com
>>>             <http://www.opensips-solutions.com>
>>>
>>>             OpenSIPS Bootcamp 2017, Houston, US
>>>                http://opensips.org/training/OpenSIPS_Bootcamp_2017.html
>>>             <http://opensips.org/training/OpenSIPS_Bootcamp_2017.html>
>>>
>>>             On 06/29/2017 11:54 AM, Alex Megalokonomos wrote:
>>>>             Hello Bogdan,
>>>>             Yes, a gateway from WS to UDP (as well as DTLS-SRTP to
>>>>             RTP in order for it to work) is exactly what we're
>>>>             looking for.
>>>>             Unfortunately our Alcatel OmniPCX call center  is a
>>>>             proprietary system that only allows for a limited
>>>>             number of SIP extensions (served from what appears to
>>>>             be an outdated customised  Kamailio 3.2.2 from what I
>>>>             can tell from the headers.
>>>>             For our normal internal office use it all works fine.
>>>>             However we have 3 customer support lines that are
>>>>             currently routed to 3 extensions via OmniPCX.
>>>>             We want to integrate these to our custom web-based CRM
>>>>             and the best way for us to do it is to use something
>>>>             like SIP js to handle and log calls, identify calling
>>>>             parties, bring up customer details etc.
>>>>             Since the kamailio version inside OmniPCX does not
>>>>             support ws/webrtc we are looking to set up Opensips in
>>>>             exactly the way you described as a gateway/proxy for
>>>>             everything in order to convert the UDP-only sip
>>>>             extensions to ws+ webRTC capable ones.
>>>>             I have used this tutorial
>>>>             http://www.opensips.org/Documentation/Tutorials-WebSocket-2-1
>>>>             <http://www.opensips.org/Documentation/Tutorials-WebSocket-2-1>
>>>>             to get what I assume is half the work (for RTP
>>>>             proxying)  but I havent figured out the rest yet.
>>>>             Best regards,
>>>>             Alex
>>>>             On Thu, Jun 29, 2017 at 11:43 AM, Bogdan-Andrei Iancu
>>>>             <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>>>>
>>>>                 Hi Alex, First, some questions regarding the
>>>>                 desired topology:     1) the WS end-points should
>>>>                 register in OpenSIPS or all the way into Kamailio ?
>>>>                     2) also, the calls from the WS end-points
>>>>                 should be all the time sent to Kamailio ? More or
>>>>                 less, what I'm asking is : is OpenSIPS suppose to
>>>>                 act as a gateway from WS to UDP , but pass all the
>>>>                 resulting traffic to Kamailio ? Regards,
>>>>
>>>>                 Bogdan-Andrei Iancu
>>>>                    OpenSIPS Founder and Developer
>>>>                    http://www.opensips-solutions.com
>>>>                 <http://www.opensips-solutions.com>
>>>>
>>>>                 OpenSIPS Bootcamp 2017, Houston, US
>>>>                    http://opensips.org/training/OpenSIPS_Bootcamp_2017.html
>>>>                 <http://opensips.org/training/OpenSIPS_Bootcamp_2017.html>
>>>>
>>>>                 On 06/28/2017 12:47 PM, Alex Megalokonomos wrote:
>>>>>                 Hello,
>>>>>                 We have the following scenario: our office call
>>>>>                 center is an Alcatel OmniPCX Office setup.
>>>>>                 This handles most of our needs and also provides 4
>>>>>                 SIP extensions.
>>>>>                 These are provided by what appears to be a
>>>>>                 Kamailio SIP server v 3.2.2 (no webrtc or
>>>>>                 websockets support)
>>>>>                 What we would like to do is set up an OpenSIPS
>>>>>                 instance to handle WebRTC and proxy everything to
>>>>>                 this Kamailio SIP server.
>>>>>                 The idea is to allow a web client (using sip js or
>>>>>                 something similar) to register / make / receive
>>>>>                 calls as one of the Kamailio extensions.
>>>>>                 I think half of the configuration is this :
>>>>>                 http://www.opensips.org/Documentation/Tutorials-WebSocket-2-1
>>>>>                 <http://www.opensips.org/Documentation/Tutorials-WebSocket-2-1>
>>>>>                 which I've already completed and indeed, clients
>>>>>                 can register to opensips and chat/make calls over
>>>>>                 websockets between them.
>>>>>                 How do I go about proxying
>>>>>                 registrations/invites/etc to the kamailio server
>>>>>                 instead?
>>>>>                 best regards
>>>>>
>>>>>                 _______________________________________________
>>>>>                 Users mailing list
>>>>>                 Users at lists.opensips.org
>>>>>                 <mailto:Users at lists.opensips.org>
>>>>>                 http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>                 <http://lists.opensips.org/cgi-bin/mailman/listinfo/users>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20170703/f18c6e93/attachment-0001.html>


More information about the Users mailing list