<html>
<head>
    <base href="https://wiki.asterisk.org/wiki">
            <link rel="stylesheet" href="/wiki/s/en/2171/18/9/_/styles/combined.css?spaceKey=TOP&amp;forWysiwyg=true" type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://wiki.asterisk.org/wiki/display/TOP/Component+Overview">Component Overview</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://wiki.asterisk.org/wiki/display/~khunt">Ken Hunt</a>
    </h4>
        <br/>
                         <h4>Changes (1)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >Configuration, for any component that requires configuration, is based on a push model, where the component that needs to be configured publishes a configuration-specific interface. This allows tremendous flexibility in how configuration is performed for specific deployments. We have created python configurators for each component that supports configuration, both to serve as examples and for testing purposes.  <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >For more information on configuration, including links to all of the existing configurators, visit the <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">[Configuration (Users)]</span> <span class="diff-added-words"style="background-color: #dfd;">[Asterisk SCF Component Configuration]</span> page. <br></td></tr>
            <tr><td class="diff-unchanged" > <br>h2. Other libraries <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h1><a name="ComponentOverview-Introduction"></a>Introduction </h1>

<p>This section describes each of the components of the Asterisk SCF. In Asterisk SCF terminology, a component is a deployable software package (typically implemented as a shared library or DLL) which provides functionality to some or all of the rest of the Asterisk SCF system. Asterisk SCF components are typically implemented as IceBox services. The components are further divided into the Primary Functional Components and the State Replicator Components. </p>

<h1><a name="ComponentOverview-PrimaryFunctionalComponents"></a>Primary Functional Components</h1>

<p>The table below lists the primary components of Asterisk SCF from a functional point of view. The name of the library (shared library, or Windows DLL) is shown, as well as whether the component provides a configuration interface, and whether or not the component supports replication. The binary name will have a suffix of .so on Linux systems, and .dll (or d.dll, for debug versions) on Windows.</p>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> <b>Component</b> </th>
<th class='confluenceTh'> <b>Binary name</b> </th>
<th class='confluenceTh'> <b>Configuration</b> </th>
<th class='confluenceTh'> <b>Replicated</b> </th>
<th class='confluenceTh'> <b>Role</b> </th>
</tr>
<tr>
<td class='confluenceTd'> <a href="/wiki/display/TOP/SIP+Session+Gateway+Design" title="SIP Session Gateway Design">SIP Session Gateway</a> </td>
<td class='confluenceTd'> SIPSessionGateway </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> Provides connectivity between Asterisk SCF and SIP <br/>
devices and systems. Provides SIP Registrar functionality, <br/>
SIP authentications and manages SIP connections.</td>
</tr>
<tr>
<td class='confluenceTd'> <a href="/wiki/display/TOP/Basic+Routing+Service+Design" title="Basic Routing Service Design">Basic Routing Service</a> </td>
<td class='confluenceTd'> BasicRoutingService</td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> Maintains a registry of endpoint locators to <br/>
facilitate system-wide endpoint lookup. Provides routing and<br/>
connection operations for session communications.</td>
</tr>
<tr>
<td class='confluenceTd'> <a href="/wiki/display/TOP/Bridge+Service+Design" title="Bridge Service Design">Bridge Service</a> </td>
<td class='confluenceTd'> BridgeService </td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> Bridges endpoints for session communications.</td>
</tr>
<tr>
<td class='confluenceTd'> Media Format Generic </td>
<td class='confluenceTd'> mediaformatgeneric </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> Provides a conversion between SDP and<br/>
Asterisk SCF Format object.</td>
</tr>
<tr>
<td class='confluenceTd'> Media Operations Core </td>
<td class='confluenceTd'> MediaOperationsCore</td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> Implements a variety of media operations.</td>
</tr>
<tr>
<td class='confluenceTd'> Media RTP PJMEDIA</td>
<td class='confluenceTd'> MediaRTPPJMEDIA </td>
<td class='confluenceTd'> yes</td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> Wraps RTP endpoints for the rest of the <br/>
Asterisk SCF system. Implemented using PJMEDIA.</td>
</tr>
<tr>
<td class='confluenceTd'> Media Transport UDPTL </td>
<td class='confluenceTd'> MediaTransportUDPTL </td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> Wraps UDPTL endpoints for the rest of the <br/>
Asterisk SCF system.</td>
</tr>
<tr>
<td class='confluenceTd'> <a href="/wiki/display/TOP/Service+Locator+Design" title="Service Locator Design">Service Locator</a> </td>
<td class='confluenceTd'> ServiceLocator </td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> Presents a flexible mechanism for components to<br/>
register the services that they provide the Asterisk SCF system, and to find<br/>
services they depend on.</td>
</tr>
<tr>
<td class='confluenceTd'> <a href="/wiki/display/TOP/Logging+Service+Design" title="Logging Service Design">Logging Service</a> </td>
<td class='confluenceTd'> LoggingService </td>
<td class='confluenceTd'> yes </td>
<td class='confluenceTd'> no </td>
<td class='confluenceTd'> Provides a simple logging mechanism.</td>
</tr>
</tbody></table>
</div>


<h2><a name="ComponentOverview-StateReplicatorComponents"></a>State Replicator Components</h2>

<p>The state replicator components run as IceBox services, just as the primary functional components. Their role is simply to replicate the state of an active component to a standby component. The state replicators replicate state in real-time to make failover possible as soon as a fault in a functional component is detected. Note that several of the components don't have state that needs to be replicated. </p>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> <b>State replicator</b> </th>
<th class='confluenceTh'> <b>Binary</b> </th>
</tr>
<tr>
<td class='confluenceTd'> SIP State Replicator </td>
<td class='confluenceTd'> SIPStateReplicator </td>
</tr>
<tr>
<td class='confluenceTd'> Routing State Replicator </td>
<td class='confluenceTd'> BasicRoutingStateReplicator </td>
</tr>
<tr>
<td class='confluenceTd'> Bridging State Replicator </td>
<td class='confluenceTd'> BridgeReplicator </td>
</tr>
<tr>
<td class='confluenceTd'> Media Operations Core </td>
<td class='confluenceTd'> MediaOperationStateReplicator </td>
</tr>
<tr>
<td class='confluenceTd'> Media RTP State Replicator </td>
<td class='confluenceTd'> RTPStateReplicator </td>
</tr>
<tr>
<td class='confluenceTd'> Media Transport UDPTL State Replicator </td>
<td class='confluenceTd'> UdptlStateReplicator </td>
</tr>
<tr>
<td class='confluenceTd'> Service Locator </td>
<td class='confluenceTd'> ServiceLocatorStateReplicator </td>
</tr>
</tbody></table>
</div>



<h2><a name="ComponentOverview-Configurationutilities"></a>Configuration utilities</h2>

<p>Configuration, for any component that requires configuration, is based on a push model, where the component that needs to be configured publishes a configuration-specific interface. This allows tremendous flexibility in how configuration is performed for specific deployments. We have created python configurators for each component that supports configuration, both to serve as examples and for testing purposes. </p>

<p>For more information on configuration, including links to all of the existing configurators, visit the <a href="/wiki/display/TOP/Asterisk+SCF+Component+Configuration" title="Asterisk SCF Component Configuration">Asterisk SCF Component Configuration</a> page. </p>

<h2><a name="ComponentOverview-Otherlibraries"></a>Other libraries</h2>

<p>There are a variety of other library modules created, including unit test drivers and utility libraries. </p>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> <b>Library</b> </th>
<th class='confluenceTh'> <b>Binary</b> </th>
<th class='confluenceTh'> <b>Role</b> </th>
</tr>
<tr>
<td class='confluenceTd'> Asterisk SCF API </td>
<td class='confluenceTd'> astscf-api </td>
<td class='confluenceTd'> This library is generated by the slice compiler from the Asterisk SCF slice definitions. </td>
</tr>
<tr>
<td class='confluenceTd'> Ice Utilities for C++ </td>
<td class='confluenceTd'> ASTSCFIceUtilCpp </td>
<td class='confluenceTd'> A heavily-used collection of C++ utilities built for Asterisk SCF.</td>
</tr>
<tr>
<td class='confluenceTd'> Ice Utility Test Driver </td>
<td class='confluenceTd'> ASTSCFIceUtilCppTest </td>
<td class='confluenceTd'> A unit test driver for the Ice Utilities for C++ </td>
</tr>
<tr>
<td class='confluenceTd'> Bridge Service Component Test </td>
<td class='confluenceTd'> BridgeComponentTest </td>
<td class='confluenceTd'> Test driver for component-level testing of the bridge service. </td>
</tr>
<tr>
<td class='confluenceTd'> Collections Test </td>
<td class='confluenceTd'> CollectionsTest </td>
<td class='confluenceTd'> Unit tests for the collections defined in Ice Utilities for C++ </td>
</tr>
<tr>
<td class='confluenceTd'> Logging Client </td>
<td class='confluenceTd'> LoggingClient </td>
<td class='confluenceTd'> Utility used by clients of the logging service. </td>
</tr>
<tr>
<td class='confluenceTd'> Media Operations Core Tests </td>
<td class='confluenceTd'> MediaOperationsCoreTest </td>
<td class='confluenceTd'> Test driver for the Media Operations Core component. </td>
</tr>
<tr>
<td class='confluenceTd'> Media RTP PJMEDIA Test </td>
<td class='confluenceTd'> MediaRTPPJMEDIATest </td>
<td class='confluenceTd'> Test driver for Media RTP PJMEDIA. </td>
</tr>
<tr>
<td class='confluenceTd'> Media RTP PJMEDIA Ice Test </td>
<td class='confluenceTd'> MediaRTPPJMEDIAIceTest </td>
<td class='confluenceTd'> Test driver for Media RTP PJMEDIA using NAT traversal via ICE. </td>
</tr>
<tr>
<td class='confluenceTd'> Media RTP PJMEDIA IPV6 Test </td>
<td class='confluenceTd'>  MediaRTPPJMEDIATestV6 </td>
<td class='confluenceTd'> Test the Media RTP PJMEDIA component over IPV6. </td>
</tr>
<tr>
<td class='confluenceTd'> Media Transport UDPTL Test </td>
<td class='confluenceTd'> MediaTransportUDPTLTest </td>
<td class='confluenceTd'> Test driver for Media Transport UDPTL. </td>
</tr>
<tr>
<td class='confluenceTd'> Media Transport UDPTL Ice Test </td>
<td class='confluenceTd'>MediaTransportUDPTLIceTest </td>
<td class='confluenceTd'> Test driver for Media Transport UDPTL using NAT traversal via ICE. </td>
</tr>
<tr>
<td class='confluenceTd'> Media Transport UDPTL IPV6 Test </td>
<td class='confluenceTd'>  MediaTransportUDPTLTestV6 </td>
<td class='confluenceTd'> Test the Media Transport UDPTL component over IPV6. </td>
</tr>
<tr>
<td class='confluenceTd'> Routing Test </td>
<td class='confluenceTd'> RoutingTest </td>
<td class='confluenceTd'> Tests the Routing Service. </td>
</tr>
<tr>
<td class='confluenceTd'> Service Locator Test </td>
<td class='confluenceTd'> service_locator_test </td>
<td class='confluenceTd'> Unit test driver for the Service Locator. </td>
</tr>
</tbody></table>
</div>


    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=TOP">Stop watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action">Change email notification preferences</a>
</div>
        <a href="https://wiki.asterisk.org/wiki/display/TOP/Component+Overview">View Online</a>
        |
        <a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=19009606&revisedVersion=4&originalVersion=3">View Changes</a>
                |
        <a href="https://wiki.asterisk.org/wiki/display/TOP/Component+Overview?showComments=true&amp;showCommentArea=true#addcomment">Add Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>