reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
The reSIProcate SIP Stack library (resip)

Quick Start

Resip's Fundamental Design

The resip stack plays the role of the UAC/UAS core, and the app plays the role of the Transaction User (or TU), both as described in RFC 3261. For the unfamiliar, the TU sends and receives SIP messages from the core, while the core handles details like retransmissions, timeouts, and interactions with the transport layer. The UAS/UAC core will also inform the TU when transactions end.

Most applications do not write a TU directly; they use the Dialog Usage Manager, which is a TU that manages dialogs, registrations, subscriptions and authentication for them.

Resip's Other Responsibilities

In addition to satisfying the duties of the UAS/UAC core, resip provides additional functionality, such as:

  • SIP message parsing : Resip supplies parse-code for all the core SIP grammar elements (this parse code is fairly liberal, and does not do deep validation).
  • SIP message construction : Resip supplies code for constructing SIP messages according to the rules in RFC 3261.
  • RFC 3263 DNS logic : The resip stack carries out all RFC 3263 DNS lookup logic for you. This is actually a non-trivial task, if you haven't read 3263.
  • Other RFC support : Wherever possible, resip provides code that implements all MUST and SHOULD-level requirements from supported RFCs (a lot of this code lives in resip::Helper).

The Big Picture

The basic anatomy of a SIP application running on top of the resip stack is as follows. You have:

These are all connected together through a combination of message-passing, and direct function calls (usually reserved for stuff like configuration).

Usage

The Internals

The resip stack can be broken down into the following large components:

Here's a description of the typical flow: