SIP Proxy Server PartySIP and osippartysip Based on oSIP open source Library
**************************************** **************************************** **************************************** ***
Author: EasyWave time: 2014.09.14
Category: Linux application-SIP Proxy Server PartySIP Declaration: reprinted, please keep the link
NOTE: If any error occurs, please correct it. These are my Learning Log articles ......
**************************************** **************************************** **************************************** ***
I. Introduction to PartySIP Proxy Server
PartySIP is the implementation of a SIP proxy server. The SIP protocol is a Session Initiation Protocol that is described by RFC2543 (which will soon be updated). PartySIP is a modular application that is added and deleted through plug-ins, partySIP and its plug-ins can be used as "SIP registration", "SIP redirect server", and "SIP stateful Proxy Server ". PartySIP is a SIP server based on oSIP. It implements Registration Service, redirection, locating, transaction status/non-state machine. The idea is the same as that of the eXosip framework, except that the functions of the modules are different.
Ii. Official website of PartySIP Proxy Server
The official website of the PartySIP proxy server is shown in:
Open source Web site: http://www.nongnu.org/partysip/partysip.html
Iii. Introduction to oSIP open source Library
OSIP is small and flexible. It is compiled based on standard C and can be used in any POSIX-supporting system. Therefore, it can be widely used in embedded systems. The main features of the oSIP protocol stack are listed below:
- Open source library developed in pure C language.
- Supported Operating Systems: Solaris, HP unix, RTOS VxWorks, Windows, GNU/Linux, and POSIX compatible systems.
- Supported RFC standards: RFC 3261, RFC 2327, RFC 3264, RFC 3263, and RFC 3311.
- Supported transmission protocols: TCP and UDP.
- Supports single-thread and multi-thread programming.
- The modules are loosely coupled and highly independent.
- High compatibility, and can communicate with multiple SIP protocol stacks.
OSIP mainly provides APIs for parsing SIP/SDP messages and state machines for transaction processing. It does not provide high-level APIs for SIP session control. You can use oSIP to develop the User Agent, IPsoft-phone and SIP Proxy. Structure Diagram for oSIP:
When building a SIP application, the application models corresponding to different application types are not the same. Based on the research and practice of oSIP, the general application model of oSIP in POSIX-compatible systems is provided, as shown in:
Iv. Introduction to PartySIP program code
The main function of PartySIP consists of the following parts:
- Command Line Parsing
- The configuration file reads psp_config_load ();
- Core code initialization: the transaction state/stateless processing psp_core_init () mentioned in the sip protocol; starts a thread.
- The registered user information is read to the memory, and the information processing can be replaced by the database, so the function can be modified or removed as needed;
- Processing Module loading. The related function main_load_plugins () is loaded according to the plugins and plugins_config of the configuration file. The parameters are the global variables stored in psp_config.c during the operation:
Static config_element_t * elements = NULL;
Static config_element_t * sub_elements = NULL;
- Psp_core_start () starts the resolv thread that processes the received sip signaling, the underlying network packet organization thread tlp, And the sip transaction processing thread sfp.
- Main Process Management Function main_run (), processing user input parameters
Partysip parameter analysis is not important for program modification. It is suggested that the parsing process can be proposed to process exit operations of the entire program.
V. Transplantation of PartySIP
For the transplantation of PartySIP, continue to follow this blog ......
Osip protocol stack parsing Sip protocol package
Yes. Use this method to parse and obtain an osip_message_t struct.
How to Learn about sip, eXosip/osip hope to give some suggestions
1. First understand the sip protocol itself
2. Read exosip and osip documents.
3. Download and compile exosip and osip source code
4. Write a demo