Sponsor: VoiceMeUp - Corporate & Wholesale VoIP Services

VoIP Mailing List Archives
Mailing list archives for the VoIP community
 SearchSearch 

[asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk


 
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> Asterisk Users
View previous topic :: View next topic  
Author Message
ohjelmistoarkkitehti a...
Guest





PostPosted: Mon Aug 11, 2014 3:45 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

Hello,


I'm trying to get calls working between websocket clients and sip clients. For clients I have sip.js based clients on chrome, Zoipers and a Grandstream phone. Challenge here is I'd like to have Kamailio and rtpengine to handle the bridging between different rtp profiles but Asterisk changes them in the sdp bodies along the way. I'm using Asterisk 11.11.0.


Is there a way to configure Asterisk to ignore the rtp profile but allow calls to pass with either of those profiles (even though clients might answer with 488 which would be caught and handled by Kamailio and rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and the second goal is to be able to add peers to the db table with similar data, as in no different values based on what kind of client wants to register. I'd like to allow the user to register using which ever client they choose (in this case one of the 3 I mentioned). 


Previously I had problems like 'rejecting secure audio stream without encryption details', no audio or BYE messages sent immediately after call has begun etc, but according to sip.js documentation (http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf and force_avp affect the way Asterisk handles the rtp profiles and now my calls do work ok but I'd need to move the rtp profile handling to rtpengine.


Here's my sip.conf:


bindport = 5070 ;Kamailio is at port 5060, and it's always used as outbound proxy
bindaddr = PU.BL.IC.IP
tcpenable = yes
limitonpeers = yes
rtcachefriends = yes
rtupdate=yes
tos_sip=cs3
tos_audio=ef
realm = testers.com
autodomain=no
domain=testers.com


allowexternaldomains=no
allowguest=no
;avpf=yes ;
encryption=yes
transport=ws,wss,udp
icesupport=yes
srvlookup=yes
nat=force_rport,comedia
videosupport=yes
directmedia=no




And here's the way I've defined my websocket peer to my sippeers table:


            id: 4
          name: 660
        ipaddr: PU.BL.IC.IP
          port: 5060
    regseconds: 1407744248
   defaultuser: 660
   fullcontact: sip:660@PU.BL.IC.IP:5060
     regserver:
     useragent:
        lastms: 0
          host: dynamic
          type: friend
       context: default
          deny: 0.0.0.0/0.0.0.0
        permit: PU.BL.IC.IP
        secret: NULL
     md5secret: NULL
          avpf: yes
     force_avp: yes
    icesupport: yes
   directmedia: yes
    encryption: yes
           nat: force_rport,comedia
     callgroup: NULL
   pickupgroup: NULL
      language: NULL
      disallow: NULL
         allow: NULL
        setvar: NULL
      callerid: NULL
      amaflags: NULL
  videosupport: no
maxcallbitrate: NULL
       mailbox: NULL
      regexten: NULL
    fromdomain: testers.com
      fromuser: NULL
       qualify: NULL
     defaultip: NULL
 outboundproxy: PU.BL.IC.IP
 contactpermit: NULL
   contactdeny: NULL
      fullname: NULL
    cid_number: NULL
   callingpres: NULL
  mohinterpret: NULL
    mohsuggest: NULL
  hasvoicemail: NULL
  subscribemwi: NULL
       vmexten: NULL
  rtpkeepalive: NULL
directrtpsetup: yes
    dtlsenable: yes
    dtlsverify: no
dtlsprivatekey: /etc/asterisk/keys/asterisk.pem
     dtlssetup: actpass
  dtlscertfile: /etc/asterisk/keys/asterisk.pem
    dtlscafile: /etc/asterisk/keys/ca.crt
     sippasswd: md5ofmypwd
          rpid: NULL
        domain: testers.com
    sippasswd2: NULL






This is how all other clients are currently defined:


            id: 7
          name: 771
        ipaddr: PU.BL.IC.IP
          port: 5060
    regseconds: 1407748788
   defaultuser: 771
   fullcontact: sip:771@PU.BL.IC.IP:5060
     regserver:
     useragent:
        lastms: 0
          host: dynamic
          type: friend
       context: default
          deny: 0.0.0.0/0.0.0.0
        permit: PU.BL.IC.IP
        secret: NULL
     md5secret: NULL
          avpf: no
     force_avp: NULL
    icesupport: NULL
   directmedia: yes
    encryption: NULL
           nat: force_rport,comedia
     callgroup: NULL
   pickupgroup: NULL
      language: NULL
      disallow: NULL
         allow: NULL
        setvar: NULL
      callerid: NULL
      amaflags: NULL
  videosupport: NULL
maxcallbitrate: NULL
       mailbox: NULL
      regexten: NULL
    fromdomain: testers.com
      fromuser: NULL
       qualify: NULL
     defaultip: NULL
 outboundproxy: PU.BL.IC.IP
 contactpermit: NULL
   contactdeny: NULL
      fullname: NULL
    cid_number: NULL
   callingpres: NULL
  mohinterpret: NULL
    mohsuggest: NULL
  hasvoicemail: NULL
  subscribemwi: NULL
       vmexten: NULL
  rtpkeepalive: NULL
directrtpsetup: NULL
    dtlsenable: NULL
    dtlsverify: NULL
dtlsprivatekey: NULL
     dtlssetup: NULL
  dtlscertfile: NULL
    dtlscafile: NULL
     sippasswd: 27e13af7c596313350986c58c9d24946
          rpid: NULL
        domain: testers.com
    sippasswd2: NULL




cheers,
Olli
Back to top
paul.belanger at polyb...
Guest





PostPosted: Mon Aug 11, 2014 5:56 pm    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote:

Hello,

I'm trying to get calls working between websocket clients and sip clients.
For clients I have sip.js based clients on chrome, Zoipers and a Grandstream
phone. Challenge here is I'd like to have Kamailio and rtpengine to handle
the bridging between different rtp profiles but Asterisk changes them in the
sdp bodies along the way. I'm using Asterisk 11.11.0.

Is there a way to configure Asterisk to ignore the rtp profile but allow
calls to pass with either of those profiles (even though clients might
answer with 488 which would be caught and handled by Kamailio and
rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and
the second goal is to be able to add peers to the db table with similar
data, as in no different values based on what kind of client wants to
register. I'd like to allow the user to register using which ever client
they choose (in this case one of the 3 I mentioned).

Previously I had problems like 'rejecting secure audio stream without
encryption details', no audio or BYE messages sent immediately after call
has begun etc, but according to sip.js documentation
(http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf
and force_avp affect the way Asterisk handles the rtp profiles and now my
calls do work ok but I'd need to move the rtp profile handling to rtpengine.

We are successfully using kamailio / rtpengine with websockets and
asterisk 1.8. First question is why are you duplicating registrations
within asterisk? Secondly, why are you using websockets in asterisk?

Without knowing more about your use case, I'll tell you how we did it.
Like I said, kamailio is responsible for our SIP/ws subscribers and
registrations. Once within kamailio we simply dispatch traffic to
asterisk via SIP/udp. RTP is handled by rtpengine (using rtproxy-ng)
and that is basically it.

No special configuration is needed for asterisk (in fact 1.8 has no
support for RTP/SAVPF) so we rewrite SDP on 488. Then setup a
kamailio peer and away you go.

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
Back to top
ohjelmistoarkkitehti a...
Guest





PostPosted: Tue Aug 12, 2014 3:17 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

Hello,

Thank You Paul for your reply,


The registrations in my setup are not duplicated, the 'secret' field in the realtime table is empty, which causes Asterisk to not authenticate requests from my Kamailio. Kamailio handles registrations, and also routes the traffic to Asterisk using dispatcher. Also, all peers have the Kamailio ip:port as outbound proxy so all traffic goes through Kamailio.


Looks like version 11.11 works differently, I'll try to revert back to a previous version, and see if that works. I know at least the 'force_avp' field is new to 11.11 so it's safe to assume there's some difference between versions in rtp profile handling. 


It would be good to know how to handle this scenario in the new versions as well, I'll probably need to upgrade ahead anyway.


Thanks,
Olli





2014-08-12 1:56 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote:
On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote:

Hello,

I'm trying to get calls working between websocket clients and sip clients.
For clients I have sip.js based clients on chrome, Zoipers and a Grandstream
phone. Challenge here is I'd like to have Kamailio and rtpengine to handle
the bridging between different rtp profiles but Asterisk changes them in the
sdp bodies along the way. I'm using Asterisk 11.11.0.

Is there a way to configure Asterisk to ignore the rtp profile but allow
calls to pass with either of those profiles (even though clients might
answer with 488 which would be caught and handled by Kamailio and
rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and
the second goal is to be able to add peers to the db table with similar
data, as in no different values based on what kind of client wants to
register. I'd like to allow the user to register using which ever client
they choose (in this case one of the 3 I mentioned).

Previously I had problems like 'rejecting secure audio stream without
encryption details', no audio or BYE messages sent immediately after call
has begun etc, but according to sip.js documentation
(http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf
and force_avp affect the way Asterisk handles the rtp profiles and now my
calls do work ok but I'd need to move the rtp profile handling to rtpengine.


We are successfully using kamailio / rtpengine with websockets and
asterisk 1.8. First question is why are you duplicating registrations
within asterisk?  Secondly, why are you using websockets in asterisk?

Without knowing more about your use case, I'll tell you how we did it.
Like I said, kamailio is responsible for our SIP/ws subscribers and
registrations.  Once within kamailio we simply dispatch traffic to
asterisk via SIP/udp.  RTP is handled by rtpengine (using rtproxy-ng)
and that is basically it.

No special configuration is needed for asterisk (in fact 1.8 has no
support for RTP/SAVPF) so we rewrite SDP on 488.  Then setup a
kamailio peer and away you go.

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users
Back to top
ohjelmistoarkkitehti a...
Guest





PostPosted: Tue Aug 12, 2014 6:57 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

Okay, tried reverting to Asterisk 11.10.2. I didn't change the realtime table yet, but now when calling from websocket client to another websocket client, cli says:


WARNING[30620][C-00000000]: chan_sip.c:11056 process_sdp_a_dtls: Unsupported fingerprint hash type 'sha-2' received on dialog '36ns50nk1fo04pu3m7lf'

WARNING[30620][C-00000000]: chan_sip.c:10509 process_sdp: Rejecting secure audio stream without encryption details: audio 10640 RTP/SAVPF 111 103 104 0 8 106 105 13 126



This many times, until the forking capacity of Kamailio has been reached and call fails. The clients are running on chrome, and calls have worked before... I wonder if I should revert further back and/or change or remove some realtime table fields?


cheers,
Olli



2014-08-12 11:17 GMT+03:00 Olli Heiskanen <ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)>:
Quote:
Hello,

Thank You Paul for your reply,


The registrations in my setup are not duplicated, the 'secret' field in the realtime table is empty, which causes Asterisk to not authenticate requests from my Kamailio. Kamailio handles registrations, and also routes the traffic to Asterisk using dispatcher. Also, all peers have the Kamailio ip:port as outbound proxy so all traffic goes through Kamailio.


Looks like version 11.11 works differently, I'll try to revert back to a previous version, and see if that works. I know at least the 'force_avp' field is new to 11.11 so it's safe to assume there's some difference between versions in rtp profile handling. 


It would be good to know how to handle this scenario in the new versions as well, I'll probably need to upgrade ahead anyway.


Thanks,
Olli





2014-08-12 1:56 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote:
On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote:

Hello,

I'm trying to get calls working between websocket clients and sip clients.
For clients I have sip.js based clients on chrome, Zoipers and a Grandstream
phone. Challenge here is I'd like to have Kamailio and rtpengine to handle
the bridging between different rtp profiles but Asterisk changes them in the
sdp bodies along the way. I'm using Asterisk 11.11.0.

Is there a way to configure Asterisk to ignore the rtp profile but allow
calls to pass with either of those profiles (even though clients might
answer with 488 which would be caught and handled by Kamailio and
rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and
the second goal is to be able to add peers to the db table with similar
data, as in no different values based on what kind of client wants to
register. I'd like to allow the user to register using which ever client
they choose (in this case one of the 3 I mentioned).

Previously I had problems like 'rejecting secure audio stream without
encryption details', no audio or BYE messages sent immediately after call
has begun etc, but according to sip.js documentation
(http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf
and force_avp affect the way Asterisk handles the rtp profiles and now my
calls do work ok but I'd need to move the rtp profile handling to rtpengine.


We are successfully using kamailio / rtpengine with websockets and
asterisk 1.8. First question is why are you duplicating registrations
within asterisk?  Secondly, why are you using websockets in asterisk?

Without knowing more about your use case, I'll tell you how we did it.
Like I said, kamailio is responsible for our SIP/ws subscribers and
registrations.  Once within kamailio we simply dispatch traffic to
asterisk via SIP/udp.  RTP is handled by rtpengine (using rtproxy-ng)
and that is basically it.

No special configuration is needed for asterisk (in fact 1.8 has no
support for RTP/SAVPF) so we rewrite SDP on 488.  Then setup a
kamailio peer and away you go.

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users





Back to top
paul.belanger at polyb...
Guest





PostPosted: Tue Aug 12, 2014 9:41 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

On Tue, Aug 12, 2014 at 4:17 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote:
Hello,

Thank You Paul for your reply,

The registrations in my setup are not duplicated, the 'secret' field in the
realtime table is empty, which causes Asterisk to not authenticate requests
from my Kamailio. Kamailio handles registrations, and also routes the
traffic to Asterisk using dispatcher. Also, all peers have the Kamailio
ip:port as outbound proxy so all traffic goes through Kamailio.

That is your issue, stop using chan_sip with realtime (using data from
kamailio). The only SIP peer asterisk should know of is kamailio, and
your webrtc clients should be anonymous SIP users. This way, Asterisk
doesn't even need to deal with websockets and RTP/SAVPF (this is what
kamailio and rtpengine) is for.

In your current setup, you are bypassing the functionality of
rtpengine and not even leveraging it.

Quote:
Looks like version 11.11 works differently, I'll try to revert back to a
previous version, and see if that works. I know at least the 'force_avp'
field is new to 11.11 so it's safe to assume there's some difference between
versions in rtp profile handling.

It would be good to know how to handle this scenario in the new versions as
well, I'll probably need to upgrade ahead anyway.



--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
Back to top
ohjelmistoarkkitehti a...
Guest





PostPosted: Wed Aug 13, 2014 3:35 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

Hi,

Wow, thanks Paul, realizing the problem makes a lot of sense. 


So I setup Kamailio as a peer, but if I disable chan_sip module completely, I can't do it in sip.conf like I'd otherwise assume to do. I tried to rebuild Asterisk without chan_sip, but I guess that's not quite the way to go? Asterisk stopped sending back any sip messages so either there is a configuration means on how to do this or I'm doing something wrong with my current setup. My next thought was to compile Asterisk normally and set rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent) 
which I guess says Asterisk does not know where to send the message. 


The inner workings of Asterisk is a bit beyond me, if you don't mind giving advice on how to proceed I'd be most grateful.


cheers,
Olli



2014-08-12 17:40 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote:
On Tue, Aug 12, 2014 at 4:17 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote:
Hello,

Thank You Paul for your reply,

The registrations in my setup are not duplicated, the 'secret' field in the
realtime table is empty, which causes Asterisk to not authenticate requests
from my Kamailio. Kamailio handles registrations, and also routes the
traffic to Asterisk using dispatcher. Also, all peers have the Kamailio
ip:port as outbound proxy so all traffic goes through Kamailio.


That is your issue, stop using chan_sip with realtime (using data from
kamailio).  The only SIP peer asterisk should know of is kamailio, and
your webrtc clients should be anonymous SIP users.  This way, Asterisk
doesn't even need to deal with websockets and RTP/SAVPF (this is what
kamailio and rtpengine) is for.

In your current setup, you are bypassing the functionality of
rtpengine and not even leveraging it.

Quote:
Looks like version 11.11 works differently, I'll try to revert back to a
previous version, and see if that works. I know at least the 'force_avp'
field is new to 11.11 so it's safe to assume there's some difference between
versions in rtp profile handling.

It would be good to know how to handle this scenario in the new versions as
well, I'll probably need to upgrade ahead anyway.




--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Back to top
paul.belanger at polyb...
Guest





PostPosted: Wed Aug 13, 2014 12:08 pm    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote:
Hi,

Wow, thanks Paul, realizing the problem makes a lot of sense.

So I setup Kamailio as a peer, but if I disable chan_sip module completely,
I can't do it in sip.conf like I'd otherwise assume to do. I tried to
rebuild Asterisk without chan_sip, but I guess that's not quite the way to
go? Asterisk stopped sending back any sip messages so either there is a
configuration means on how to do this or I'm doing something wrong with my
current setup. My next thought was to compile Asterisk normally and set
rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP'
(cause 20 - Subscriber absent)
which I guess says Asterisk does not know where to send the message.

The inner workings of Asterisk is a bit beyond me, if you don't mind giving
advice on how to proceed I'd be most grateful.

I think you are still mis-understanding me. I'll try to be clearer.

From the POV of asterisk, you do still need chan_sip, however the only
peer asterisk needs to be away of it Kamailio. All other peers will
be stored within kamailio. This was the reason for my comment about
realtime sip, you don't need it.

Then, within kamailio, you'll need to invoke rtpengine using
(rtpproxy-ng with kamailio 4.1) to rewrite the sdp for the invite to
asterisk. You'll use the rtpproxy_offer and rtp_answer functions to
remove ICE when calls originate from webrtc clients. Since you are
not using a websocket in asterisk, it will just be a SIP over udp, the
need for ICE and SAVPF is not needed.

What you are trying to do is pretty complicated, it took me about 2
weeks to get everything setup properly. There is good information[1]
on the web, you just need to google for it.

[1] http://www.slideshare.net/crocodilertc/webrtc-websockets

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
Back to top
ohjelmistoarkkitehti a...
Guest





PostPosted: Wed Aug 13, 2014 12:39 pm    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

Aaa now I understood better, thanks! 


That's the instruction I used originally to write my Kamailio config, but I wasn't sure on how the sdp was supposed to be altered at which places in the whole SIP flow. I was thinking the original INVITE with the original sdp would go all the way to the receiving client, which return 488, which Kamailio would pick up and use rtpengine to alter the sdp at that point. 


So I'll need to alter the sdp every time before sending it to the Asterisk servers altogether and so avoid all the hassle I've been having with Asterisk.


cheers,
Olli



2014-08-13 20:07 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote:
On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote:
Hi,

Wow, thanks Paul, realizing the problem makes a lot of sense.

So I setup Kamailio as a peer, but if I disable chan_sip module completely,
I can't do it in sip.conf like I'd otherwise assume to do. I tried to
rebuild Asterisk without chan_sip, but I guess that's not quite the way to
go? Asterisk stopped sending back any sip messages so either there is a
configuration means on how to do this or I'm doing something wrong with my
current setup. My next thought was to compile Asterisk normally and set
rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP'
(cause 20 - Subscriber absent)
which I guess says Asterisk does not know where to send the message.

The inner workings of Asterisk is a bit beyond me, if you don't mind giving
advice on how to proceed I'd be most grateful.


I think you are still mis-understanding me.  I'll try to be clearer.

From the POV of asterisk, you do still need chan_sip, however the only
peer asterisk needs to be away of it Kamailio.  All other peers will
be stored within kamailio.  This was the reason for my comment about
realtime sip, you don't need it.

Then, within kamailio, you'll need to invoke rtpengine using
(rtpproxy-ng with kamailio 4.1) to rewrite the sdp for the invite to
asterisk.  You'll use the rtpproxy_offer and rtp_answer functions to
remove ICE when calls originate from webrtc clients.  Since you are
not using a websocket in asterisk, it will just be a SIP over udp, the
need for ICE and SAVPF is not needed.

What you are trying to do is pretty complicated, it took me about 2
weeks to get everything setup properly.  There is good information[1]
on the web, you just need to google for it.

[1] http://www.slideshare.net/crocodilertc/webrtc-websockets

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Back to top
ohjelmistoarkkitehti a...
Guest





PostPosted: Fri Aug 15, 2014 9:41 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

Hello,

After having thought this through a bit I have some thoughts I'd like to share.


In this case where the rtp profile is RTP/AVP Asterisk accepts and handles the call normally. If a webrtc client calls a sip client, or even another webrtc client, rtpengine is needed to step in (in my setup most of the clients would indeed be webrtc, but some of them might be sip). I think it would be better to use RTP/SAVPF throughout the process if both clients are webrtc (or otherwise speak RTP/SAVPF), but currently there is no way to accomplish this? 


Is it possible to configure Asterisk to only accept the RTP/SAVPF profile, and send 488 to all others? If it's not possible to force Asterisk to ignore rtp profiles (thus allowing the sdp be handled by rtpengine entirely), I'd prefer to use RTP/SAVPF or RTP/SAVP in the communication between Kamailio and Asterisk servers and use rtpengine to bridge to RTP/AVP and RTP/AVPF only if the client cannot speak securely. 


I'd very much like to hear opinions and thoughts on these. 


cheers,
Olli













2014-08-13 20:39 GMT+03:00 Olli Heiskanen <ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)>:
Quote:

Aaa now I understood better, thanks! 


That's the instruction I used originally to write my Kamailio config, but I wasn't sure on how the sdp was supposed to be altered at which places in the whole SIP flow. I was thinking the original INVITE with the original sdp would go all the way to the receiving client, which return 488, which Kamailio would pick up and use rtpengine to alter the sdp at that point. 


So I'll need to alter the sdp every time before sending it to the Asterisk servers altogether and so avoid all the hassle I've been having with Asterisk.


cheers,
Olli



2014-08-13 20:07 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote:
On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote:
Hi,

Wow, thanks Paul, realizing the problem makes a lot of sense.

So I setup Kamailio as a peer, but if I disable chan_sip module completely,
I can't do it in sip.conf like I'd otherwise assume to do. I tried to
rebuild Asterisk without chan_sip, but I guess that's not quite the way to
go? Asterisk stopped sending back any sip messages so either there is a
configuration means on how to do this or I'm doing something wrong with my
current setup. My next thought was to compile Asterisk normally and set
rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP'
(cause 20 - Subscriber absent)
which I guess says Asterisk does not know where to send the message.

The inner workings of Asterisk is a bit beyond me, if you don't mind giving
advice on how to proceed I'd be most grateful.


I think you are still mis-understanding me.  I'll try to be clearer.

From the POV of asterisk, you do still need chan_sip, however the only
peer asterisk needs to be away of it Kamailio.  All other peers will
be stored within kamailio.  This was the reason for my comment about
realtime sip, you don't need it.

Then, within kamailio, you'll need to invoke rtpengine using
(rtpproxy-ng with kamailio 4.1) to rewrite the sdp for the invite to
asterisk.  You'll use the rtpproxy_offer and rtp_answer functions to
remove ICE when calls originate from webrtc clients.  Since you are
not using a websocket in asterisk, it will just be a SIP over udp, the
need for ICE and SAVPF is not needed.

What you are trying to do is pretty complicated, it took me about 2
weeks to get everything setup properly.  There is good information[1]
on the web, you just need to google for it.

[1] http://www.slideshare.net/crocodilertc/webrtc-websockets

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users







Back to top
paul.belanger at polyb...
Guest





PostPosted: Fri Aug 15, 2014 10:49 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

On Fri, Aug 15, 2014 at 10:41 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote:
Hello,

After having thought this through a bit I have some thoughts I'd like to
share.

In this case where the rtp profile is RTP/AVP Asterisk accepts and handles
the call normally. If a webrtc client calls a sip client, or even another
webrtc client, rtpengine is needed to step in (in my setup most of the
clients would indeed be webrtc, but some of them might be sip). I think it
would be better to use RTP/SAVPF throughout the process if both clients are
webrtc (or otherwise speak RTP/SAVPF), but currently there is no way to
accomplish this?

Is it possible to configure Asterisk to only accept the RTP/SAVPF profile,
and send 488 to all others? If it's not possible to force Asterisk to ignore
rtp profiles (thus allowing the sdp be handled by rtpengine entirely), I'd
prefer to use RTP/SAVPF or RTP/SAVP in the communication between Kamailio
and Asterisk servers and use rtpengine to bridge to RTP/AVP and RTP/AVPF
only if the client cannot speak securely.

I'd very much like to hear opinions and thoughts on these.

Again, I'll only share my experiences, but we do the complete
opposite. Traffic between kamailio and asterisk is only RTP/AVP since
the version of asterisk we are using does not support RTP/SAVPF (1.Cool.
However, if you want RTP/SAVPF then honestly, you should just
completely remove rtpengine from the picture since newer version of
asterisk support both RTP/AVP and RTP/SAVPF (asterisk 12+).

What I think you should do is go back to the basics, and document
everything you want to do. Right now you have too many pieces in the
puzzle and making the setup complicated. Like I said before, this is
a complex setup and you need to start some place. Here is a diagram
of what we do.

webrtc (RTP/SAVPF) -> kamailio -> rtpengine -> asterisk (RTP/AVP)

This way, only RTP/AVP is in the core of our network. Rtpengine is on
the edge (where it belongs), proxing rtp traffic. And, for us, we
keep RTP/SAVPF outside of asterisk since support for it has been
recently added. I also believe there are some open issue with dtls +
srtp too.

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
Back to top
ohjelmistoarkkitehti a...
Guest





PostPosted: Fri Aug 15, 2014 11:18 am    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

Thanks Paul, I appreciate your thoughts.

I understand your way, it's logical in your environment. I prefer to use LTS versions of Asterisk so I'm guessing what I want to do is not quite possible with Asterisk 11.


I'd prefer my setup to work like this in different cases.


webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- webrtc (rtp/savpf)
sip (rtp/avp) -- kamailio -- rtpengine (rtp/savpf) -- asterisk -- kamailio -- rtpengine (rtp/avp) -- sip (rtp/avp)
webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- rtpengine (rtp/avp) -- sip (rtp/avp)


... essentially, using RTP/AVP only when the client does not speak securely.


It appears I'll have to try out the RTP/AVP way until there is an Asterisk that can accomplish this without having to use peer-specific settings. Down-side to this is that rtpengine needs resources from the server for webrtc clients even though both ends speak the same profile.


It's not so complicated now that I know more on what Asterisk supports and how it handles the sdp, I just needed to learn by doing, testing and asking. I must be a bit ahead of my time for going for a RTP/SAVPF within my architecture, but using RTP/AVP is not such a bad option as srtp is on its way anyway in future Asterisk versions and the rtp flowing between Kamailio and users' networks are far more important than internal rtp traffic.


cheers,
Olli









2014-08-15 18:48 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote:
On Fri, Aug 15, 2014 at 10:41 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote:
Hello,

After having thought this through a bit I have some thoughts I'd like to
share.

In this case where the rtp profile is RTP/AVP Asterisk accepts and handles
the call normally. If a webrtc client calls a sip client, or even another
webrtc client, rtpengine is needed to step in (in my setup most of the
clients would indeed be webrtc, but some of them might be sip). I think it
would be better to use RTP/SAVPF throughout the process if both clients are
webrtc (or otherwise speak RTP/SAVPF), but currently there is no way to
accomplish this?

Is it possible to configure Asterisk to only accept the RTP/SAVPF profile,
and send 488 to all others? If it's not possible to force Asterisk to ignore
rtp profiles (thus allowing the sdp be handled by rtpengine entirely), I'd
prefer to use RTP/SAVPF or RTP/SAVP in the communication between Kamailio
and Asterisk servers and use rtpengine to bridge to RTP/AVP and RTP/AVPF
only if the client cannot speak securely.

I'd very much like to hear opinions and thoughts on these.


Again, I'll only share my experiences, but we do the complete
opposite.  Traffic between kamailio and asterisk is only RTP/AVP since
the version of asterisk we are using does not support RTP/SAVPF (1.Cool.
However, if you want RTP/SAVPF then honestly, you should just
completely remove rtpengine from the picture since newer version of
asterisk support both RTP/AVP and RTP/SAVPF (asterisk 12+).

What I think you should do is go back to the basics, and document
everything you want to do.  Right now you have too many pieces in the
puzzle and making the setup complicated.  Like I said before, this is
a complex setup and you need to start some place.  Here is a diagram
of what we do.

webrtc (RTP/SAVPF) -> kamailio -> rtpengine  -> asterisk (RTP/AVP)

This way, only RTP/AVP is in the core of our network. Rtpengine is on
the edge (where it belongs), proxing rtp traffic.  And, for us, we
keep RTP/SAVPF outside of asterisk since support for it has been
recently added. I also believe there are some open issue with dtls +
srtp too.

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Back to top
paul.belanger at polyb...
Guest





PostPosted: Fri Aug 15, 2014 2:25 pm    Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin Reply with quote

On Fri, Aug 15, 2014 at 12:17 PM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote:
Thanks Paul, I appreciate your thoughts.

I understand your way, it's logical in your environment. I prefer to use LTS
versions of Asterisk so I'm guessing what I want to do is not quite possible
with Asterisk 11.

I'd prefer my setup to work like this in different cases.

webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- webrtc (rtp/savpf)
sip (rtp/avp) -- kamailio -- rtpengine (rtp/savpf) -- asterisk -- kamailio
-- rtpengine (rtp/avp) -- sip (rtp/avp)
webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- rtpengine
(rtp/avp) -- sip (rtp/avp)

... essentially, using RTP/AVP only when the client does not speak securely.

It appears I'll have to try out the RTP/AVP way until there is an Asterisk
that can accomplish this without having to use peer-specific settings.
Down-side to this is that rtpengine needs resources from the server for
webrtc clients even though both ends speak the same profile.

It's not so complicated now that I know more on what Asterisk supports and
how it handles the sdp, I just needed to learn by doing, testing and asking.
I must be a bit ahead of my time for going for a RTP/SAVPF within my
architecture, but using RTP/AVP is not such a bad option as srtp is on its
way anyway in future Asterisk versions and the rtp flowing between Kamailio
and users' networks are far more important than internal rtp traffic.

Fair enough, I won't be able to help moving forward. We opted for
only using RTP/AVF with asterisk because how new the code for RTP/AVPF
and dtls-strp handling is. And since RTP/AVF has been around since
the start, it is pretty stable. And this is the primary reason people
are using rtpengine with asterisk to start. So, in your setup listed
above, rtpengine is not needed, since newer versions of asterisk
support both. Adding it in will just complicate your setup.

--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
Back to top
Display posts from previous:   
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> Asterisk Users All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group

VoiceMeUp - Corporate & Wholesale VoIP Services