"Fossies" - the Fresh Open Source Software Archive

Member "opensips-3.0.1/modules/sngtc/README" (1 Oct 2019, 7493 Bytes) of package /linux/misc/opensips-3.0.1.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "README": 3.0.0_vs_3.0.1.

    1 sngtc Module
    2      __________________________________________________________
    3 
    4    Table of Contents
    5 
    6    1. Admin Guide
    7 
    8         1.1. Overview
    9         1.2. How it works
   10         1.3. Dependencies
   11 
   12               1.3.1. OpenSIPS Modules
   13               1.3.2. External Libraries or Applications
   14 
   15         1.4. Exported Functions
   16 
   17               1.4.1. sngtc_offer()
   18               1.4.2. sngtc_callee_answer([listen_if_A],
   19                       [listen_if_B])
   20 
   21               1.4.3. sngtc_caller_answer()
   22 
   23    2. Contributors
   24 
   25         2.1. By Commit Statistics
   26         2.2. By Commit Activity
   27 
   28    3. Documentation
   29 
   30         3.1. Contributors
   31 
   32    List of Tables
   33 
   34    2.1. Top contributors by DevScore^(1), authored commits^(2) and
   35           lines added/removed^(3)
   36 
   37    2.2. Most recently active contributors^(1) to this module
   38 
   39    List of Examples
   40 
   41    1.1. sngtc_offer usage
   42    1.2. sngtc_callee_answer usage
   43    1.3. sngtc_caller_answer usage
   44 
   45 Chapter 1. Admin Guide
   46 
   47 1.1. Overview
   48 
   49    The Sangoma transcoding module offers the possibility of
   50    performing voice transcoding with the D-series transcoding
   51    cards manufactured by Sangoma. The module makes use of the
   52    Sangoma Transcoding API in order to manage transcoding sessions
   53    on the dedicated equipment. For the cards in the network to be
   54    detected, the Sangoma SOAP server must be up and running
   55    (sngtc_server daemon).
   56 
   57 1.2. How it works
   58 
   59    The module performs several modifications in the SDP body of
   60    SIP INVITE, 200 OK and ACK messages. In all transcoding
   61    scenarios, the UAC performs early SDP negotiation, while the
   62    UAS does late negotiation. This way, OpenSIPS becomes
   63    responsible for intersecting the codec offer and answer,
   64    together with the management of transcoding sessions on the
   65    Sangoma cards.
   66 
   67    This scenario brings about a couple of restrictions:
   68      * UACs MUST only perform early SDP negotiation
   69      * UASs MUST support late SDP negotiation (rfc 3261
   70        requirement)
   71 
   72    Since the sngtc_node library performs several memory
   73    allocations with each newly created transcoding session, the
   74    module uses a dedicated process, responsible for the management
   75    of the above-mentioned sessions. The sangoma_worker process
   76    communicates with the OpenSIPS UDP receivers through a series
   77    of pipes.
   78 
   79 1.3. Dependencies
   80 
   81 1.3.1. OpenSIPS Modules
   82 
   83    The following modules must be loaded before this module:
   84      * dialog.
   85 
   86 1.3.2. External Libraries or Applications
   87 
   88    The following libraries or applications must be installed
   89    before running OpenSIPS with this module loaded:
   90      * sngtc_node library - download from Sangoma, unpack, make,
   91        make install (required in order to compile this module).
   92      * sngtc_server up and running (required in order for this
   93        module to properly work).
   94 
   95 1.4. Exported Functions
   96 
   97 1.4.1.  sngtc_offer()
   98 
   99    The function strips off the SDP offer from a SIP INVITE, thus
  100    asking for another SDP offer from the opposite endpoint (late
  101    negotiation).
  102 
  103    The following error codes may be returned:
  104      * -1 - SDP parsing error
  105      * -3 - internal error / no more memory
  106 
  107    The function can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
  108 
  109    Example 1.1. sngtc_offer usage
  110 ...
  111         if (is_method("INVITE")) {
  112                 t_newtran();
  113                 create_dialog();
  114                 sngtc_offer();
  115         }
  116 ...
  117 
  118 1.4.2.  sngtc_callee_answer([listen_if_A], [listen_if_B])
  119 
  120    Handles the SDP offer from 200 OK responses, intersects both
  121    offers with the capabilities of the transcoding card and
  122    creates a new transcoding session on the card only if
  123    necessary. It then rewrites the 200 OK SDP so that it contains
  124    the information resulted from the codec intersection.
  125 
  126    Parameters explained:
  127 
  128    Since the D-series transcoding cards are connected through
  129    either a PCI slot or simply an Ethernet connector, they cannot
  130    be assigned global IPs. Consequently, the module will write the
  131    local, private IP of the card in the SDP answers sent to each
  132    of the endpoints. Since this will not work with non-local UAs,
  133    the optional parameters force the RTP listen interface for each
  134    UA. This way, the script writer can enforce a global IP for the
  135    incoming RTP (which can be port forwarded to a transcoding
  136    card).
  137      * listen_if_A (string) - the interface where the UAC (the
  138        caller) will send RTP after the call is established (IP
  139        from the 'c=' SDP line(s))
  140      * listen_if_B (string) - the interface where the UAS (the
  141        callee) will send RTP after the call is established (IP
  142        from the 'c=' SDP line(s))
  143 
  144    The following error codes may be returned:
  145      * -1 - SDP parsing error
  146      * -2 - failed to create transcoding session
  147      * -3 - internal error / no more memory
  148 
  149    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
  150 
  151    Example 1.2. sngtc_callee_answer usage
  152 ...
  153 onreply_route[1] {
  154         if ($rs == 200)
  155                 sngtc_callee_answer("11.12.13.14", "11.12.13.14");
  156 }
  157 ...
  158 
  159 1.4.3.  sngtc_caller_answer()
  160 
  161    Attaches an SDP body to the caller's ACK request, so that it
  162    matches the late SDP negotiation done by the UAS.
  163 
  164    The following error codes may be returned:
  165      * -3 - internal error / no more memory
  166 
  167    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
  168 
  169    Example 1.3. sngtc_caller_answer usage
  170 ...
  171         if (has_totag()) {
  172                 if (loose_route()) {
  173                         ...
  174                         if (is_method("ACK"))
  175                                 sngtc_caller_answer();
  176                 }
  177                 ...
  178         }
  179 ...
  180 
  181 Chapter 2. Contributors
  182 
  183 2.1. By Commit Statistics
  184 
  185    Table 2.1. Top contributors by DevScore^(1), authored
  186    commits^(2) and lines added/removed^(3)
  187      Name DevScore Commits Lines ++ Lines --
  188    1. Liviu Chircu (@liviuchircu) 33 14 2076 59
  189    2. Razvan Crainea (@razvancrainea) 8 6 12 9
  190    3. Bogdan-Andrei Iancu (@bogdan-iancu) 8 5 28 63
  191    4. Vlad Patrascu (@rvlad-patrascu) 6 4 28 28
  192    5. Peter Lemenkov (@lemenkov) 3 1 1 1
  193 
  194    (1) DevScore = author_commits + author_lines_added /
  195    (project_lines_added / project_commits) + author_lines_deleted
  196    / (project_lines_deleted / project_commits)
  197 
  198    (2) including any documentation-related commits, excluding
  199    merge commits. Regarding imported patches/code, we do our best
  200    to count the work on behalf of the proper owner, as per the
  201    "fix_authors" and "mod_renames" arrays in
  202    opensips/doc/build-contrib.sh. If you identify any
  203    patches/commits which do not get properly attributed to you,
  204    please submit a pull request which extends "fix_authors" and/or
  205    "mod_renames".
  206 
  207    (3) ignoring whitespace edits, renamed files and auto-generated
  208    files
  209 
  210 2.2. By Commit Activity
  211 
  212    Table 2.2. Most recently active contributors^(1) to this module
  213                      Name                   Commit Activity
  214    1. Razvan Crainea (@razvancrainea)     Aug 2015 - Sep 2019
  215    2. Vlad Patrascu (@rvlad-patrascu)     May 2017 - Apr 2019
  216    3. Bogdan-Andrei Iancu (@bogdan-iancu) Oct 2014 - Apr 2019
  217    4. Liviu Chircu (@liviuchircu)         Aug 2013 - Jun 2018
  218    5. Peter Lemenkov (@lemenkov)          Jun 2018 - Jun 2018
  219 
  220    (1) including any documentation-related commits, excluding
  221    merge commits
  222 
  223 Chapter 3. Documentation
  224 
  225 3.1. Contributors
  226 
  227    Last edited by: Vlad Patrascu (@rvlad-patrascu), Liviu Chircu
  228    (@liviuchircu), Peter Lemenkov (@lemenkov).
  229 
  230    Documentation Copyrights:
  231 
  232    Copyright © 2013 www.opensips-solutions.com