[sr-dev] rtpproxy-ng

Daniel-Constantin Mierla miconda at gmail.com
Thu Jul 11 12:45:09 CEST 2013


On 7/10/13 9:50 PM, Richard Fuchs wrote:
> On 07/10/13 14:28, Daniel-Constantin Mierla wrote:
>
>> It was not about 'do it yourself', but commodity for average users to
>> deal with it ...
>
>> It's again about existing tools/storage systems -- they have built-in to
>> access json as an object/variable, no need to parse yourself and build a
>> custom/own query language. Just for example, iirc, at some point I saw a
>> patch/presentation that MariaDB can do optimized searching withing json
>> object by matching with dedicated functions (as well as capability of
>> setting just a value inside json docs).
>
>> That will required development in all these systems, both can be seen as
>> serialization mechanisms, but their structure is different, so existing
>> json functions in one system cannot be reused.
>
>> You implemented and it was your decision, so I don't have anything
>> against using bencode in this case -- in the light of requests for
>> comments you asked for, I tried to figure out if parsing faster bencoded
>> strings pays off when balancing with the need to interact with/from
>> different components in a complete operational platform.
>
> I think all those cases that you mention are outside of the scope of a 
> control protocol between a SIP proxy and an RTP proxy. I don't see an 
> average user having much interest in the details of the protocol and 
> they probably wouldn't find the contents any more interesting if they 
> were in JSON format.

My focus in the discussion was related to the query -- getting 
statistics of the sessions, which can be very useful to humans. But also 
I meant post-processing -- polling those statistics, save them to a 
backend and then generate reports when needed.

Similar is the way we have the control protocol in kamailio, e.g., 
'kamctl stats' just displays what is sent back by kamailio.

> Apart from that, there's no reason why an RTP proxy shouldn't be able 
> to export stats or what not via a different protocol and/or in another 
> format. But I don't think this specific protocol is the place to think 
> about interaction with other existing systems, since those almost 
> certainly wouldn't be able to speak the protocol anyway, even if it 
> uses JSON encoding, no matter how you design it. Unless you go above 
> and beyond and make it HTTP-based or some such...
>
> Since you asked for specific numbers comparing the performance, here 
> are some. I took the "offer" command example from the mediaproxy-ng 
> docs, which isn't all that complex, with an average sized SDP body, 
> and ran it in a tight decode-encode-free loop. I increased the number 
> of loop iterations until I got a measurable run time. I did this for 
> both the bencode and the equivalent JSON representation, where the 
> encode step each encoded back to the original format. Using the json-c 
> library, I got a runtime of 18.9 seconds, while with bencode it runs 
> in 2.3 seconds. This is further reduced to 1.6 seconds when the "print 
> as string" encoding step is skipped and the bencode representation 
> instead is put into an iovec array, which the rtpproxy-ng module does. 
> In the grand scheme of things this may or may not make a difference, 
> but why go slower if you can go faster...
Going faster is good as long as the overall impact is not actually 
making the overall integration/system more complex.

Anyhow, I wanted to see if there were any strong technical arguments for 
using bencode or just more like a preference.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda




More information about the sr-dev mailing list