Building Telephony Systems with OpenSER
eBook - ePub

Building Telephony Systems with OpenSER

Flavio E. Goncalves

Share book
  1. 324 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Building Telephony Systems with OpenSER

Flavio E. Goncalves

Book details
Book preview
Table of contents
Citations

About This Book

In Detail

OpenSER is a flexible, free open-source VoIP server based on the Session Initiation Protocol (SIP), an application-layer control (or signaling) protocol for creating, modifying, and terminating sessions with one or more participants, including internet telephone calls, multimedia distribution, and multimedia conferences.
 
Engineered to power IP telephony infrastructures up to large scale, OpenSER is written in pure C for Linux/Unix-like systems with architecture-specific optimizations to offer high performance; it is able to handle 4 million users on a single processor server. The server keeps track of users, sets up VoIP sessions, relays instant messages, and creates space for new plug-in applications.

It can be used on systems with limited resources as well as on carrier-grade servers, scaling up to thousands of call setups per second. It is customizable, being able to feature as fast load balancer; SIP server flavors: registrar, location server, proxy server, redirect server; gateway to SMS/XMPP; or advanced VoIP application server.

This book teaches how to develop a fast and flexible Session Initiation Protocol (SIP) server using OpenSER and shows how OpenSER can be used to implement features not available in Asterisk PBX.

Approach

This book is a well illustrated, step-by-step guide to building a SIP based network using OpenSER.

Who this book is for

This book is for readers who want to understand how to build a SIP provider from scratch using OpenSER. Telephony and Linux experience will be helpful but is not essential. Readers need not have prior knowledge of OpenSER.

Frequently asked questions

How do I cancel my subscription?
Simply head over to the account section in settings and click on “Cancel Subscription” - it’s as simple as that. After you cancel, your membership will stay active for the remainder of the time you’ve paid for. Learn more here.
Can/how do I download books?
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
What is the difference between the pricing plans?
Both plans give you full access to the library and all of Perlego’s features. The only differences are the price and subscription period: With the annual plan you’ll save around 30% compared to 12 months on the monthly plan.
What is Perlego?
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, we’ve got you covered! Learn more here.
Do you support text-to-speech?
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Is Building Telephony Systems with OpenSER an online PDF/ePUB?
Yes, you can access Building Telephony Systems with OpenSER by Flavio E. Goncalves in PDF and/or ePUB format, as well as other popular books in Informatik & Informationstechnologie. We have over one million books available in our catalogue for you to explore.

Information

Year
2008
ISBN
9781847193735

Building Telephony Systems with OpenSER

Flavio E. Goncalves


Table of Contents

Building Telephony Systems with OpenSER
Credits
About the Author
About the Reviewers
Preface
What This Book Covers
What You Need for This Book
Who This Book Is For
Conventions
Reader Feedback
Customer Support
Downloading the Example Code for the Book
Errata
Questions
1. Introduction to SIP
SIP Basics
SIP Proxy in the Context of a VOIP Provider
SIP Operation Theory
SIP Registration Process
Server Operating as a SIP Proxy
Server Operating as a SIP Redirect
Basic Messages
SIP Dialog Flow
SIP Transactions and Dialogs
The RTP Protocol
Codecs
DTMF-Relay
Real Time Control Protocol (RTCP)
Session Description Protocol (SDP)
The SIP Protocol and the OSI Model
The VoIP Provider "Big Picture"
SIP Proxy
User, Administration, and Provisioning Portal
PSTN Gateway
Media Server
Media Proxy or RTP Proxy for Nat Traversal
RADIUS Accounting
CDRTool Rating
Monitoring Tools
Where You Can Find More Information
Summary
2. The SIP Express Router
Where Are We?
What is the SIP Express Router?
What Software to Use, SER or OpenSER?
Usage Scenarios
OpenSER Architecture
Core and Modules
Sections of the File openser.cfg
Sessions, Dialogs, and Transactions
openser.cfg Message Processing
SIP Proxy—Expected Behavior
Stateful Operation
Differences between Strict Routing and Loose Routing
Understanding SIP and RTP
Summary
3. OpenSER Installation
Hardware Requirements
Software Requirements
Lab—Installing Linux for OpenSER
Downloading and Installing OpenSER v1.2
Lab—Running OpenSER at the Linux Boot
OpenSER v1.2 Directory Structure
Configuration Files (etc/openser)
Modules (/lib/openser/modules)
Binaries (/sbin)
Log Files
Startup Options
Summary
4. OpenSER Standard Configuration
Where Are We?
Analyzing the Standard Configuration
Using the Standard Configuration
Routing Basics
Transactions and Dialogs
Initial and Sequential Requests
Routing in a Context of a Transaction
Routing in the Context of a Dialog
Lab—Tracking a Complete Dialog
Lab—Running Stateless
Lab—Disabling record-route
Summary
5. Adding Authentication with MySQL
Where Are We?
The AUTH_DB Module
The REGISTER Authentication Sequence
Register Sequence (Packets Captured by ngrep)
Register Sequence Code Snippet
The INVITE Authentication Sequence
INVITE Sequence Packet Capture
Digest Authentication
WWW-Authenticate Response Header
The Authorization Request Header
QOP—Quality of Protection
Installing MySQL Support
openser.cfg File Analysis
The Openserctl Shell Script
Openserctl Resource File
Openserctlrc File
Using OpenSER with Authentication
Enhancing the Script
Managing Multiple Domains
Alternative Routes
Register Requests (route[2])
Non-Register Requests (route[3])
Managing Calls Coming from Our Domain
Inbound-to-Inbound—route[10]
Inbound-to-Outbound—route[11]
Outbound-to-Inbound—route[12]
Outbound-to-Outbound—route[13]
The Functions check_to() and check_from()
Using Aliases
Handling CANCEL requests and retransmissions
Full Script with All the Resources Above
Lab—Enhancing the Security
Lab—Using Aliases
Summary
6. Building the User Portal with SerMyAdmin
SerMyAdmin
Lab—Installing SerMyAdmin
Basic Tasks
Registering a New User
Approving a New User
User Management
Domain Management
Interface Customization
Summary
7. Connectivity to the PSTN
Where Are We?
Requests Sent to the Gateway
Requests Coming From the Gateway
openser.cfg Inspection
Lab—Using Asterisk as a PSTN Gateway
Asterisk Gateway (sip.conf)
Cisco 2601 Gateway
Using LCR (Least Cost Routes)
The LCR Module
Configuration Diagram
VoIP Provider Dial Plan
The LCR Table
The Gateways Table
The Gateway Groups Table
Adding, Removing, and Showing LCR and Gateways
Openserctl LCR-Related Commands.
Notes:
Examples:
Lab—Using the LCR Feature
lcr Gateway Groups
lcr Gateways
lcr Routes
Securing re-INVITES
Blacklists and "473/Filtered Destination" messages
Summary
8. Call Forward and Voice Mail
Call Forwarding
Pseudo-Variables
AVP (Attribute-Value Pair) Overview
AVPOPS Module Loading and Parameters
Implementing Blind Call Forwarding
Lab—Implementing Blind Call Forwarding
Implementing Call Forward on Busy or nanswered
Inspecting the Configuration File
Lab—Testing the Call Forward Feature
Summary
9. SIP NAT Traversal
NAT Types
Full Cone
Restricted Cone
Port Restricted Cone
Symmetric
NAT Firewall Table
Solving the SIP NAT Traversal Challenge
Implementing a Far-End NAT Solution
RFC3581 and the force_rport() Function
Solving the Traversal of RTP Packets
Handling REGISTER Requests behind NAT
Determining if the Client is behind NAT
Handling INVITE Messages behind NAT
Handling the Responses
MediaProxy Installation and Configuration
Installing MediaProxy
openser.cfg Analysis
Modules Loading
Modules' Parameters
Register Message Processing
Invite Message Processing
BYE and CANCEL Message Processing
RE-INVITE Message Handling
Reply Message Handling
Routing Script
Invite Diagram
Packet Sequence
Lab Using MediaProxy for NAT Traversal
Implementing a Near-End NAT Solution
Why STUN Does Not Work with Symmetric NAT Devices
Comparing STUN with TURN (Media Relay Server)
ALG—Application Layer Gateways
ICE (Interactive Connection Establishment)
Summary
10. OpenSER Accounting and Billing
Objectives
Where Are We?
VoIP Provider Architecture
Accounting Configuration
LAB—Accounting using MySQL
openser.cfg Analysis
Accounting using RADIUS
Installation of FreeRADIUS and CDRTool
Packages and Dependencies
Create and Configure the Database for the Radius server
Configuration of the FreeRADIUS Server
Configure the ...

Table of contents