openser from an asterisk pov

Upload: webdesign-webmasters

Post on 14-Apr-2018

223 views

Category:

Documents


0 download

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

    [email protected]