# doubango - Open source 3GPP NGN/IMS framework for embedded systems
cross-platform and open source 3GPP NGN/IMS framework for embedded devices such as Android, Symbian, iPhone, Windows Mobile or uLinux.
Keywords: doubango, 3GPP NGN/IMS framework, open source, SIP, RFC 3261, 3GPP TS 24.229, VoIP, MMTel, IPTV, 4G, LTE, XCAP, MSRP, IPSec, SigComp

doubango
News
October 16, 2010
blah blah blah blah blah blah blah blah .
Read More
September 27, 2010
blah blah blah blah blah blah blah blah .
Read More
Framework
Features
Getting Started
Blog
Developement
Tutorials
API reference
Source code
Building doubango
Nightly builds
Release notes
Issue tracker
Welcome to doubango project!
cross-platform, open source 3GPP NGN/IMS framework for embedded systems

doubango is an experimental cross-platform, open source 3GPP NGN/IMS framework for embedded systems (it also works on Windows XP/Vista/7, Mac OS X and unix-like systems). It is fully written in ANSI C.
The framework has been carefully designed to efficiently work on embedded systems with limited memory and low computing power and to be extremely portable.

Supported Systems

SIP/IMS Stack
The SIP/IMS stack (RFC 3261) implements 3GPP TS 24.229 Rel-9 and can be used to develop VoIP applications targeting embedded systems, desktop computers, laptops, tablet PCs or handheld PCs.
You can also use the stack to develop IM clients (Both Page Mode and Session Mode) using SIMPLE protocol. Almost all SIP methods are supported (INVITE, MESSAGE, REFER, UPDATE, INFO ...) and the stack could be easily extended to implement any missing or custom method.
The Stack contains both MMTel and PoC extensions to allow developing rich multimedia applications.
The transport layer offers possibilities to use UDP, TCP, TLS or SCTP protocols.

Networking
To ease portability, doubango framework contains several platform independent network stacks such as HTTP/HTTPS(RFC 2616), DHCPv6(RFC 3315 and many othes), DHCPv4(RFC 2131 and many others) or DNS(RFC 1034, 1035 and many others).

- HTTP/HTTPS: used in conjunction with the XCAP stack and for SIP content indirection.

- DHCPv4/DHCPv6: used for Proxy-CSCF discovery (RFC 3319 and RFC 3361), Geoconf (RFC 3825), Civic Addresses Configuration Information (RFC 4676), Emergency call, ...

- DNS: used for Proxy-CSCF discovery (NAPTR), to locate SIP Servers (RFC 3263), to support E.164 numbers (RFC 2916), ...

All these stacks are part of tinyNET

Signaling Compression (SigComp)
SIP messages can be compressed using SigComp (RFC 3320) which is natively supported through tinySigComp.

Security
All SIP messages can be protected using IPSec or TLS with or without security agreement mechanism (RFC 3329).
IPSec is natively supported through tinyIPSec and TLS through openssl.

NAT Traversal
NAT traversal is a key feature for any VoIP application and allows media (RTCP/RTP) and signaling (SIP) packets to traverse NATs.
Symmetric Response Routing (RFC 3581) is used by default for SIP signaling and either STUN2 (RFC 5389) or ICE (draft-ietf-mmusic-ice-19) can be used at media layer.
ICE makes use of STUN protocol and its extension, traversal Using Relay NAT (TURN) which is natively supported by tinyNET.

XCAP with OMA extensions
XCAP (RFC 4825) is used to remotely manage your contacts (resource-lists), avatars (oma_status-icon), pres-rules, poc-settings, rls-services ...
Only the engine (HTPP stack with support for basic/digest authentication and the URL generator) is provided and it's up to you to parse the returned XCAP/XML messages.
XCAP is natively supported through tinyXCAP.

MSRP with OMA SIMPLE IM extensions
MSRP (RFC 4975 and RFC 5547) is used for Large message transfer and for either Image Sharing (GSMA IR.79) and File transfer.
MSRP is natively supported through tinyMSRP.

SDP Offer-Answer
The media layer contains a complete SOA (SDP Offer-Answer) framework with MMTel and PoC extensions to develop Multimedia telephony applications without having to read hundreds of technical specifications. The SOA machine is designed as per RFC 3264 and draft-ietf-sipping-sip-offeranswer-12.

The media framework uses GStreamer for audio/video transport. You don't need to understand how GStreamer works in order to develop your application but it is up to you to compile it for your target platform. GStreamer is known to work on Windows, Mac OS X, Android, Symbian (S60) and many other systems.