[sr-dev] What needs updating in Kamailio core/parser and modules for WebSockets

Peter Dunkley peter.dunkley at crocodile-rcs.com
Fri Jun 22 12:23:34 CEST 2012


Hi Daniel,

Thanks for the answers.

WebSockets will just use the TCP/TLS sockets and upgrade them when
necessary.  It seems the simplest way as the initial WebSocket request
is an HTTP GET.

Also, while I agree with Inaki that SIP outbound makes things simpler, I
am not planning on relying on that for WebSockets at the moment.  Not
only does Kamailio not support it yet, but I don't want to assume all
clients will either.  The URIs in Via headers and the Contact header in
SIP over WebSockets is just a random invalid one (because the client
can't be expected to put anything sensible in there).  However, I was
thinking that the existing support for received in Kamailio should mean
that responses just "do the right thing" (as all I need is the socket
source IP and port combination for the WebSocket module to find the
right connection).  Also I think I can use
nathelper:fix_nated_register(), nathelper:add_contact_alias(), and
nathelper:handle_ruri_alias() in the configuration file to make requests
get routed the the right place.

Thanks,

Peter

On Fri, 2012-06-22 at 12:14 +0200, Daniel-Constantin Mierla wrote:

> Hello,
> 
> 
> On 6/22/12 11:13 AM, Peter Dunkley wrote:
> 
> > 
> > Hi,
> > 
> > I am just trying to work out exactly what needs to be updated in the
> > Kamailio core/parser for WebSockets.
> > 
> > I already know that the Via: parser needs to be updated to
> > understand the WS and WSS transports, and the URI parser needs to be
> > updated to understand the the WS transport, but is there anything
> > else?
> > 
> > I'd appreciate it if anyone has any ideas about what else might need
> > changed (and where in the code), as my guessing at this could be a
> > bit hit-and-miss...
> 
> 
> indeed it might be hard to hit all at once, but it can be fixed as it
> goes on...
> 
> 
> > 
> > I don't plan to add a forward_ws() function to core because I don't
> > think it'll work (or at least not in all cases as servers cannot
> > initiate WebSocket connections).  But are there updates needed in
> > the following areas (and any ideas where in the code I should
> > look)? 
> >       * forward_no_connect() 
> >       * the proto core variable 
> >       * the snd_proto core variable 
> 
> 
> these are part of configuration file language, as special tokens --
> the grammar of the config file is handled in cfg.lex and cfg.y. Then
> the interpretation is in action.c, with fixup and helpers in
> route_struct.{c,h} and route.{c,h}, and it may go through other files.
> I can help with flex/yacc part if needed.
> 
> 
> 
> >       * Is a WS keyword (like SCTP/TCP/TLS/UDP) needed 
> 
> Yes, IMO, useful for detecting the incoming protocol
> 
> >       * Are the pseudo variables (for example, I know that the
> >         mutable variable $du needs to do the right thing as this is
> >         fundamental to being able to route requests),
> >         transformations, and selects that need to be updated 
> 
> 
> The $du is practically just returning/setting a string, the
> interpretation is done by internal relay/forward functions. There are
> some pv/selects that return the protocol, they need updates, but
> should be trivial once the core part of defining the protocol types
> (e.g., like PROTO_WS/PROTO_WSS) and updating the uri parser and socket
> structures.
> 
> Btw, there will be dedicated sockets to listen for ws/wss or the
> tcp/tls will be used and the connection type upgraded to ws/wss?
> 
> 
> >       * Are there any modules (rr, nathelper?) that need to be
> >         updated 
> 
> 
> There should be some helper functions that build URIs based on
> internal structures, where the protocol is used. Not sure all the
> modules use them or have own implementation. Perhaps searching on
> PROTO_TLS or another one will reveal the places where to add
> PROTO_WS/_WSS
> 
> Cheers,
> Daniel
> 
> 
> -- 
> Daniel-Constantin Mierla - http://www.asipto.com
> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio Advanced Training, Seattle, USA, Sep 23-26, 2012 - http://asipto.com/u/katu
> Kamailio Practical Workshop, Netherlands, Sep 10-12, 2012 - http://asipto.com/u/kpw


-- 
Peter Dunkley
Technical Director
Crocodile RCS Ltd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20120622/38995415/attachment.htm>


More information about the sr-dev mailing list