« Previous - Version 63/215 (diff) - Next » - Current version
Adrian Georgescu, 11/13/2009 10:23 pm


= Developer Guide =

<acronym title="WikiStart, Sip*, depth=2">TOC</acronym>

The main goal of this library is to provide a simple to use API to create real-time communications applications between end-points based on SIP protocol.

Prerequisites

To use the library and the concepts described below you must be familiar with Python programming language and SIP call flows from [http://www.tech-invite.com/Ti-sip-CF3665.html RFC 3665]. Understanding of TCP/IP networking in general and real time application development in particular are strongly recommended.

Instructions for installing the library are found [wiki:SipInstallation here].

Middleware

To develop your application you should use the middleware API that is event-driven, non-blocking and hides the complexity and the interactions of the lower level SIP, SDP, RTP, ICE, MSRP, XCAP and related protocols.
With a minimal amount of coding you can create a rich client application for setting up audio, instant messaging, file transfer and desktop sharing sessions.

  • [wiki:SipMiddlewareApi Middleware API] - middleware suitable for developing interactive user interfaces (e.g. GUI)
  • [wiki:SipConfigurationAPI Configuration API] - used for managing the settings used by the middleware

=== Sample code ===

The middleware API is used by the command line tools used for [wiki:SipTesting testing the library]. The command line tools are the best example for how to use the library.

Components

If you wish to develop your own middleware and/or application while having control over the underlying protocol layers yourself, you can use the following APIs that provides granular control over their respective components:

  • [wiki:SipSessionApi Session API] - The high-level API for SIP sessions
  • [wiki:SipStreamsApi Streams API] - The high-level API for Media Streams based on RTP and MSRP transports
  • [wiki:SipPresenceApi Presence API] - The API for payloads carried within SIP signaling used for publication, subscription and notifications of SIP events
  • [wiki:SipCoreApiDocumentation SIP Core API] - The low-level API for the SIP, RTP, ICE and audio engine (cross platform sound-card abstraction, codecs)
  • [wiki:SipMSRPApi MSRP API] - The low-level API for Message Session Relay Protocol (MSRP) and its relay extension
  • [wiki:SipXCAPApi XCAP API] - The low-level API for XCAP document manipulation used for storage of buddy lists and presence policy documents

You may use for example the above components API to create a SIP application server, something the high level middleware was not designed for.

TCP/IP ports

To use a SIP application you need access to a TCP/IP network (e.g. the Internet). The library uses the following ports when active:

'''Local port''' '''Direction''' '''Remote port''' '''Protocol''' '''Description''' '''Allocation''' '''Setting'''
1xport >1024 In/Out Typically 5060 set in DNS UDP [wiki:SipCoreApiDocumentation#Engine SIP over UDP] At start Global.sip.local_udp_port
1xport >1024 In/Out Typically 5060 set in DNS TCP [wiki:SipCoreApiDocumentation#Engine SIP over TCP] At start Global.sip.local_tcp_port
1xport >1024 In/Out Typically 5061 set in DNS TCP [wiki:SipCoreApiDocumentation#Engine SIP over TLS] At start Global.sip.local_tls_port
2xport >1024 In/Out Random negotiated in SDP UDP [wiki:SipCoreApiDocumentation#RTPTransport RTP/RTCP stream] Per session Global.rtp.port_range
1xport >1024 In/Out Typically 2855 negotiated in SDP TCP [wiki:SipMSRPApi#transport.MSRPTransport MSRP stream] Per session Global.msrp.local_port
1xport >1024 Out Typically 443, configured TCP [wiki:SipXCAPApi XCAP requests] Per request