[Soc-coordination] Status report, week 2 - Enabling free multimedia real-time communications (RTC) with Debian

Catalin Usurelu catalin.usurelu5 at gmail.com
Sat Jun 29 00:17:05 UTC 2013


Hello,

This week hasn't gone exactly as I planed. I underestimated the amount of
research that I had to do and how many new things I had to learn/relearn.
This is probably normal for a beginner like me and I can say I learned many
things and I want to learn even more.

The difficulties I had were related to the fact that database lookups need
to be asynchronous and I had to find a way to make it work. At first I
looked over how repro and reTurn implement multithreading (platform
independent) so I can reuse the code or at least get an idea on how
everything works. I realized how hard it is to get to know a new codebase,
and considering the fact that I haven't used multithreading much (had only
some experience in Java) I had to learn how to use POSIX threads and ASIO
(still learning this one).

Also, some observations on how the authentication mechanism should be
implemented: TURN response messages have a MESSAGE-INTEGRITY attribute that
has to be calculated (based on the H(A1) key; H(A1) =
MD5(username:realm:password) each time we send a response. So, in order to
reduce the number of lookups and improve performance, we should cache this
information. Other SIP products such as Kamailio also store two variations
of the H(A1), one where the username is normal and another that contains
the realm (username at domain), so this suggests that user agents might send
the username in 2 forms. But I'm not sure yet if I need to check anything
for this. The RFC's for STUN (5389) and TURN (5766) were not really helpful
in this regard.

I also started a github repo [1] where I will commit the code.

With Daniel's help regarding multi-threading (what information I should
search for and how I should proceed) and other questions related to the
project I am confident I will be able to find solutions and make up for the
lost time spent learning.

So, what I've done this week:
- continued familiarising myself with the reSIProcate codebase and how I
could reuse code for the project.
- learned POSIX threads and started learning ASIO
- started learning autotools (I didn't have time in the past and I will
need it)
- continued studying other TURN implementations so I get a better idea on
how thing should be done

For the following week (actually starting tomorrow), I will continue with
adding support for MySQL to reTurn and if I manage to finish, start looking
on implementing LDAP and getting familiar with the RADIUS implementation of
repro (and possibly other related technologies that implement RADIUS).

Kind regards,
Catalin

[1] https://github.com/catalinusurelu/resiprocate
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/soc-coordination/attachments/20130628/399c192f/attachment.html>


More information about the Soc-coordination mailing list