Monday, February 18, 2019

读书笔记 - Building Telephony Systems with OpenSIPS (2nd Edition)

Chapter 2: Introducing OpenSIPS

Understanding OpenSIPS

OpenSIPS is an open source, multipurpose SIP server that is able to perform a large set of SIP related functions, such as SIP Registrar, SIP proxy, IM server, Presence server, Redirect server, SIP load balancer or SIP dispatcher, SIP B2BUA, Call Queuing System, SIP IP gateway, SIP media controller, SIP app server, and many others.

OpenSIPS is translated into a huge throughput actively measured up to 60K calls per second, 1.5 million concurrent calls, 5 million registered users, and 1 million TCP connections, all in a single OpenSIPS instance running on a mid-level server.

OpenSIPS is mainly about processing and handling the SIP traffic. It does not have media capabilities (handling RTP) at all, but it can control external media engines.

Usage scenarios for OpenSIPS

The ingress component is also called Session Border Controller (SBC). It is a component sitting on the edge of the network and controlling the traffic crossing in and out of your network. (e.g. Nat traversal, security filter, SIP validation, load balancer, dialog aware, HA). It must address two important issues:
  1. Scalability: The ingress component concentrates a huge volume of traffic from the endpoints
  2. Security: The ingress component is in direct contact with endpoints and so it is more exposed to attacks, floods, or other security issues
OpenSIPS is the perfect platform to build core services such as Hosted PBX services. It offers a rich feature set and an ability to mix everything together via a flexible routing script. Modules such as permissions, ratelimit and dialog allow OpenSIPS to route, partition, and limit the SIP traffic to more than 10K SIP trunks on a single instance.

The egress side of a SIP platform is typically responsible for interfacing the platform with 3rd-party SIP services such as termination providers (PSTN and IP gateway). It may also be responsible for interacting with other 3rd-party service providers for services like LNP or CNAM. Similar to the ingress side, the egress side controls the IP and SIP layers of traffic, such as performing network bridging, SIP protocol conversion, NAT traversal, or media handling (pinning, transcoding, and recording). Act as OpenSIPS router, it can provide LCR, prefix routing, LNP server, GW controller, and Topology hiding in SIP network.

The OpenSIPS design

Architecturally speaking, OpenSIPS is formed out of two logical components: the core and modules.

The core is the application itself and it provides the low-level functionalities of OpenSIPS, the definition of various interfaces, and some generic resources.

The modules are shared libraries, loaded on demand at startup time. Each module implements a well-defined functionality for a specific routing algorithm or authentication method. There are two types of modules:
  1. Modules providing functionalities and functions directly for the routing script
  2. Modules implementing a core-defined interface
The core provides the following features:
  • The SIP transport layer
  • The SIP message parser and builder
  • The routing script parser and interpreter
  • The memory and locking manager
  • The core script functions and script variables
  • The SQL interface definition
  • The NoSQL interface definition
  • The AAA interface definition
  • The management interface
  • The events interface
  • The statistics interface
This concludes end of chapter 2 in this book.

No comments:

Post a Comment