openser from an asterisk pov
TRANSCRIPT
-
7/29/2019 OpenSER From an Asterisk POV
1/72
OpenSER
-
7/29/2019 OpenSER From an Asterisk POV
2/72
OpenSER
from an asterisk point of view
-
7/29/2019 OpenSER From an Asterisk POV
3/72
What is OpenSER?
-
7/29/2019 OpenSER From an Asterisk POV
4/72
OpenSER is:
-
7/29/2019 OpenSER From an Asterisk POV
5/72
OpenSER is:
- a SIP proxy
-
7/29/2019 OpenSER From an Asterisk POV
6/72
OpenSER is:
- a SIP proxy
- a SIP registrar
-
7/29/2019 OpenSER From an Asterisk POV
7/72
OpenSER is:
- a SIP proxy
- a SIP registrar- a SIP router
-
7/29/2019 OpenSER From an Asterisk POV
8/72
OpenSER is:
- a SIP proxy
- a SIP registrar- a SIP router- a SIP redirect server
-
7/29/2019 OpenSER From an Asterisk POV
9/72
OpenSER is:
- a SIP proxy
- a SIP registrar- a SIP router- a SIP redirect server- a SIP application server
-
7/29/2019 OpenSER From an Asterisk POV
10/72
OpenSER is not:
-
7/29/2019 OpenSER From an Asterisk POV
11/72
OpenSER is not:
- a B2BUA (back to back user agent)
-
7/29/2019 OpenSER From an Asterisk POV
12/72
OpenSER is not:
- a B2BUA (back to back user agent)- a media server
-
7/29/2019 OpenSER From an Asterisk POV
13/72
OpenSER is not:
- a B2BUA (back to back user agent)- a media server- a soft phone
-
7/29/2019 OpenSER From an Asterisk POV
14/72
OpenSER architecture:
-
7/29/2019 OpenSER From an Asterisk POV
15/72
OpenSER architecture:
two main logical components
-
7/29/2019 OpenSER From an Asterisk POV
16/72
OpenSER architecture:
core modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
17/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
18/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
19/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
transport layer
modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
20/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
transport layer
database interface
modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
21/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
transport layer
database interface synch/lock mechanism
modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
22/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
transport layer
database interface
synch/lock mechanism
management interface
modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
23/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
transport layer
database interface
synch/lock mechanism
management interface
script variables
modules (plug-ins)
-
7/29/2019 OpenSER From an Asterisk POV
24/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
transport layer
database interface
synch/lock mechanism
management interface
script variables
modules (plug-ins)
SIP protocol (tm)
-
7/29/2019 OpenSER From an Asterisk POV
25/72
OpenSER architecture:
core
parsers (SIP/SDP/conf)
memory system
transport layer
database interface
synch/lock mechanism
management interface
script variables
modules (plug-ins)
SIP protocol (tm)
features
-
7/29/2019 OpenSER From an Asterisk POV
26/72
OpenSER architecture:
core
module 1
module 2
module n
-
7/29/2019 OpenSER From an Asterisk POV
27/72
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
28/72
OpenSER configuration:
openser.cfg
-
7/29/2019 OpenSER From an Asterisk POV
29/72
OpenSER configuration:
openser.cfg (three blocks)
-
7/29/2019 OpenSER From an Asterisk POV
30/72
OpenSER configuration:
global options
-
7/29/2019 OpenSER From an Asterisk POV
31/72
OpenSER configuration:
global options
modules:loading and parameters
-
7/29/2019 OpenSER From an Asterisk POV
32/72
OpenSER configuration:
global options
modules:loading and parameters
routing
-
7/29/2019 OpenSER From an Asterisk POV
33/72
OpenSER configuration:
global options
-
7/29/2019 OpenSER From an Asterisk POV
34/72
OpenSER configuration:
global options
- listen interfaces
-
7/29/2019 OpenSER From an Asterisk POV
35/72
OpenSER configuration:
global options
- listen interfaces
# UDP supportlisten=udp:10.10.10.10:5060
-
7/29/2019 OpenSER From an Asterisk POV
36/72
OpenSER configuration:
global options
- listen interfaces
# TCP supportlisten=tcp:10.10.10.10:5070
-
7/29/2019 OpenSER From an Asterisk POV
37/72
OpenSER configuration:
global options
- listen interfaces
# TLS support (port 5061)listen=tls:10.10.10.10
-
7/29/2019 OpenSER From an Asterisk POV
38/72
OpenSER configuration:
global options
- listen interfaces
- logging
-
7/29/2019 OpenSER From an Asterisk POV
39/72
OpenSER configuration:
global options
- listen interfaces
- logging
# logging leveldebug=3
O SER fi i
-
7/29/2019 OpenSER From an Asterisk POV
40/72
OpenSER configuration:
global options
- listen interfaces
- logging
# syslog enabledlog_stderr=no
O SER fi ti
-
7/29/2019 OpenSER From an Asterisk POV
41/72
OpenSER configuration:
global options
- listen interfaces
- logging
# syslog enabledlog_stderr=no
log_facility=LOG_LOCAL3
O SER fi ti
-
7/29/2019 OpenSER From an Asterisk POV
42/72
OpenSER configuration:
global options
- listen interfaces
- logging
# syslog enabledlog_stderr=no
log_facility=LOG_LOCAL3log_name=oser
O SER fi ti
-
7/29/2019 OpenSER From an Asterisk POV
43/72
OpenSER configuration:
global options
- listen interfaces
- logging- number of processes
O SER fi ti
-
7/29/2019 OpenSER From an Asterisk POV
44/72
OpenSER configuration:
global options
- listen interfaces
- logging- number of processes
fork=yes
O SER fi ti
-
7/29/2019 OpenSER From an Asterisk POV
45/72
OpenSER configuration:
global options
- listen interfaces
- logging- number of processes
fork=yes
children=6 # UDP listeners
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
46/72
OpenSER configuration:
global options
- listen interfaces
- logging- number of processes
fork=yes
children=6 # UDP listenerstcp_children=5 #TCP listeners
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
47/72
OpenSER configuration:
global options
- listen interfaces
- logging- number of processes- protocol control
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
48/72
OpenSER configuration:
global options
- listen interfaces
- logging- number of processes- protocol control
disable_tcp=yes
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
49/72
OpenSER configuration:
global options
- listen interfaces
- logging- number of processes- protocol control
disable_tcp=yesdisable_tls=yes
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
50/72
OpenSER configuration:
global options
# Please refer to the Core CookBook at http://www.openser.org/dokuwiki/doku.php# for a explanation of possible statements, functions and parameters.#
####### Global Parameters #########
debug=3log_stderror=nolog_facility=LOG_LOCAL0
fork=yes
children=4
disable_tcp=yes
listen=udp:192.168.1.2:5060
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
51/72
OpenSER configuration:
modules (loading and parameters)
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
52/72
OpenSER configuration:
modules (loading and parameters)
- path location
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
53/72
OpenSER configuration:
modules (loading and parameters)
- path location
mpath=/usr/lib/openser/modules
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
54/72
OpenSER configuration:
modules (loading and parameters)
- path location
- module loading
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
55/72
OpenSER configuration:
modules (loading and parameters)
- path location
- module loading
mpath=/usr/lib/openser/modulesloadmodule tm.so
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
56/72
OpenSER configuration:
modules (loading and parameters)
- path location
- module loading
loadmodule /usr/lib/openser/modules/tm.so
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
57/72
OpenSER configuration:
modules (loading and parameters)
- path location
- module loading- module parameters
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
58/72
OpenSER configuration:
modules (loading and parameters)
- path location
- module loading- module parametersmodparam(tm,T1_timer,700)
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
59/72
OpenSER configuration:
modules (loading and parameters)
####### Modules Section ########
# set module path
mpath="/usr/local/lib/openser/modules/"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "mi_fifo.so"modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
60/72
OpenSER configuration:
routing
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
61/72
Ope S co gu a o
routing
- request route: route[n] {...}
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
62/72
p g
routing
- request route: route[n] {...}- provisional reply route: onreply_route[m] {...}
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
63/72
p g
routing
- request route: route[n] {...}- provisional reply route: onreply_route[m] {...}- failure reply route: failure_route[p] {...}
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
64/72
p g
routing
- request route: route[n] {...}- provisional reply route: onreply_route[m] {...}- failure reply route: failure_route[p] {...}- request branch route: branch_route[q] {...}
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
65/72
p g
routing
- request route: route[n] {...}- provisional reply route: onreply_route[m] {...}- failure reply route: failure_route[p] {...}- request branch route: branch_route[q] {...}- error route: error_route {...}
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
66/72
p g
routing
####### Routing Logic ########route{
if (loose_route()) { # mark routing logic in requestappend_hf("P-hint: rr-enforced\r\n");
t_relay();exit;;};if (!uri==myself) { # mark routing logic in request
append_hf("P-hint: outbound\r\n");t_relay();exit;
};if (uri==myself && is_method("INVITE")) {lookup(location);t_relay();exit;
};}
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
67/72
Read from the network
SIP message call flow
Message parsing
route on_reply_route/failure_route
Processing (core/module functions)
Send to network
SIP request SIP reply
OpenSER configuration:
-
7/29/2019 OpenSER From an Asterisk POV
68/72
http://openser.org/http://openser.org/docs/http://openser.org/dokuwiki/doku.php
http://old.iptel.org/ser/doc/seruser/seruser.html
OpenSER/asterisk integration
http://openser.org/http://openser.org/docs/http://openser.org/dokuwiki/doku.phphttp://old.iptel.org/ser/doc/seruser/seruser.htmlhttp://old.iptel.org/ser/doc/seruser/seruser.htmlhttp://openser.org/dokuwiki/doku.phphttp://openser.org/docs/http://openser.org/ -
7/29/2019 OpenSER From an Asterisk POV
69/72
OpenSER
asteriskasterisk
asterisk
- registrar/dispatcher for asterisk farm
location db
OpenSER/asterisk integration
-
7/29/2019 OpenSER From an Asterisk POV
70/72
OpenSERasterisk
asterisk
asterisk
- SIP router for asterisk farm
carrier 1
carrier 2
carrier 3
high # of channelshigh cps rate
low # of channelslow cps rate
high # of channelsmedium cps rate
OpenSER/asterisk integration
-
7/29/2019 OpenSER From an Asterisk POV
71/72
OpenSERasterisk
asterisk
asterisk
- SIP router for asterisk farm
carrier 1
carrier 2
carrier 3
national
international
911
Q&A
-
7/29/2019 OpenSER From an Asterisk POV
72/72
Thank you