Preface

Document Conventions

This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.

In PDF and paper editions, this manual uses typefaces drawn from the Liberation Fonts set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default.

Typographic Conventions

Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.

Mono-spaced Bold

Used to highlight system input, including shell commands, file names and paths. Also used to highlight key caps and key-combinations. For example:

To see the contents of the file my_next_bestselling_novel in your current working directory, enter the cat my_next_bestselling_novel command at the shell prompt and press Enter to execute the command.

The above includes a file name, a shell command and a key cap, all presented in Mono-spaced Bold and all distinguishable thanks to context.

Key-combinations can be distinguished from key caps by the hyphen connecting each part of a key-combination. For example:

Press Enter to execute the command.

Press to switch to the first virtual terminal. Press to return to your X-Windows session.

The first sentence highlights the particular key cap to press. The second highlights two sets of three key caps, each set pressed simultaneously.

If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in Mono-spaced Bold. For example:

File-related classes include filesystem for file systems, file for files, and dir for directories. Each class has its own associated set of permissions.

Proportional Bold

This denotes words or phrases encountered on a system, including application names; dialogue box text; labelled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:

Choose System > Preferences > Mouse from the main menu bar to launch Mouse Preferences. In the Buttons tab, click the Left-handed mouse check box and click Close to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).

To insert a special character into a gedit file, choose Applications > Accessories > Character Map from the main menu bar. Next, choose Search > Find from the Character Map menu bar, type the name of the character in the Search field and click Next. The character you sought will be highlighted in the Character Table. Double-click this highlighted character to place it in the Text to copy field and then click the Copy button. Now switch back to your document and choose Edit > Paste from the gedit menu bar.

The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in Proportional Bold and all distinguishable by context.

Note the menu:>[] shorthand used to indicate traversal through a menu and its sub-menus. This is to avoid the difficult-to-follow 'Select from the Preferences ▸ ] sub-menu in the menu:System[ menu of the main menu bar' approach.

Mono-spaced Bold Italic or Proportional Bold Italic

Whether Mono-spaced Bold or Proportional Bold, the addition of Italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:

To connect to a remote machine using ssh, type ssh username@domain.name at a shell prompt. If the remote machine is example.com and your username on that machine is john, type ssh john@example.com.

The mount -o remount file-system command remounts the named file system. For example, to remount the /home file system, the command is mount -o remount /home.

To see the version of a currently installed package, use the rpm -q package command. It will return a result as follows: package-version-release.

Note the words in bold italics above —username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system.

Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:

When the Apache HTTP Server accepts requests, it dispatches child processes or threads to handle them. This group of child processes or threads is known as a server-pool. Under Apache HTTP Server 2.0, the responsibility for creating and maintaining these server-pools has been abstracted to a group of modules called Multi-Processing Modules (MPMs). Unlike other modules, only one module from the MPM group can be loaded by the Apache HTTP Server.

Pull-quote Conventions

Two, commonly multi-line, data types are set off visually from the surrounding text.

Output sent to a terminal is set in Mono-spaced Roman and presented thus:

books        Desktop   documentation  drafts  mss    photos   stuff  svn
books_tests  Desktop1  downloads      images  notes  scripts  svgs

Source-code listings are also set in Mono-spaced Roman but are presented and highlighted as follows:

package org.jboss.book.jca.ex1;

import javax.naming.InitialContext;

public class ExClient
{
   public static void main(String args[])
       throws Exception
   {
      InitialContext iniCtx = new InitialContext();
      Object         ref    = iniCtx.lookup("EchoBean");
      EchoHome       home   = (EchoHome) ref;
      Echo           echo   = home.create();

      System.out.println("Created Echo");

      System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
   }

}

Notes and Warnings

Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.

Note

A note is a tip or shortcut or alternative approach to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier.

Important

Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring Important boxes won’t cause data loss but may cause irritation and frustration.

Warning

A Warning should not be ignored. Ignoring warnings will most likely cause data loss.

Provide feedback to the authors!

If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you! Please submit a report in the the {this-issue.tracker.ur}, against the product Restcomm smpp-extensions` `, or contact the authors.

When submitting a bug report, be sure to mention the manual’s identifier: Restcomm smpp-extensions

If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily.

1. Introduction

1.1. Restcomm smpp-extensions

Restcomm smpp-extensions is extensions to cloudhopper smpp stack with adding of management for ESMEs and ESME clusters with CLI and GUI access.

The Open Source Software gives you the flexibility to understand the readily available source code and customise the product for your Enterprise needs.

This guide provides details on configuring and using the platform and information regarding the supported protocols and compliant standards. For installation instructions, please refer to the Installation Guide published along with this.

1.2. Implemented Protocols and Standards Compliance

Restcomm smpp-extensions is a software based implementation of the SMPP protocol.

SMPP stack supports versions of SMPP 3.3, 3.4 and 5.0.

1.3. Major Features of Restcomm smpp-extensions

Java-based

Restcomm smpp-extensions is based on JAVA. It is robust and reliable and can be installed on any Operating System that supports Java (JDK 7).

Open Source

The Software is open-source, giving you the freedom the understand the code and customise it to your enterprise needs. It is supported by a vibrant Open source community.

Standalone or JSLEE RA

You can use it as a standalone library or make use of JSLEE RA (Resource Adaptors) that come with it to manage the Stack and develop applications effectively.

Easy Configuration and Management

Restcomm smpp-extensions comes with an efficient Command Line Interface (CLI) tool allowing you to completely configure the Stack at run-time and manage it using simple commands rather than do everything manually. Restcomm smpp-extensions also comes with a Graphical User Interface that will allow you to configure, monitor and manage the Stack through a convenient user-friendly interface.

Scalability

Restcomm smpp-extensions is easily scalable with a configurable load-balancing architecture.

Technical Specifications

Restcomm smpp-extensions is not restricted by any license or Transaction Per Second model. The only restricting factor is memory + CPU capacity of the host servers.

2. Architecture

2.1. Logical Design

We usually use Restcomm smpp-extensions as it is displayed in a picture below. We need to deploy Cloudhopper SMPP stack and SMPP-Extensions under a JBOSS or WildFly server and then an SMPP RA must be separately deployed.

SMPP extensions schema

For more details regarding installation, please refer to the Restcomm smpp-extensions Installation Guide.

2.2. Directory Structure

The top-level directory is named {path} and immediately below this are sub-directories named docs, oam, schell, jboss5 and wildfly. All the functional modules of the Stack reside in the jboss5 and wildfly folders.

|- restcomm-smpp-extensions-7.1.0-SNAPSHOT
		|- _docs

		|- oam

		|- shell

		|- jboss5
				|+ restcomm-smpp-server

		|- wildfly
				|+ commons
				|+ restcomm-smpp-server
				|+ template

The following is a description of the important services and libraries that make up Restcomm smpp-extensions

docs

All relevant documentation for Restcomm smpp-extensions .

oam

GUI WEB Management module

shell

This holds the Command Line Interface (CLI) module to manage the Restcomm smpp-extensions .

jboss5

This folder contains the core protocol libraries that will be used by end applications as well as by the smpp-extensions deployed in JBoss AS.

wildfly

This folder contains the core protocol libraries that will be used by end applications as well as by the smpp-extensions deployed in WildFly AS.

2.3. Functional Blocks

The major functional modules of the smpp-extensions are:

  1. smpp-extensions [dir: restcomm-jboss5 and restcomm-wildfly]

  2. Shell [dir: shell]

  3. GUI [dir: oam]

The following sub-sections discuss in detail about the functionality of these individual components.

2.3.1. Shell - Comman Line Interface

Shell is a Command Line Interface (CLI) tool that will allow you to manage different aspects of Restcomm smpp-extensions in an interactive manner. It connects to different instances of Restcomm smpp-extensions which manages SMPP server settings and a list of ESMEs . Usually Shell will be invoked from a remote machine(remote to Linksets and application protocols).

2.3.2. Graphical User Interface

The Graphical User Interface will allow you to manage different aspects of Restcomm smpp-extensions through a convenient user-friendly interface. You can launch the GUI in any Web Browser and manage the Stack instance efficiently using the GUI operations.

3. Running

You must ensure that you follow the steps outlined in the Restcomm smpp-extensions Installation Guide to install the Components. As explained in the Installation Guide, you may install smpp-extensions as as a JBoss AS or a WildFly AS and install SMPP RA. Once installed, you can run the different Components as described in the sections below.

3.1. Running Restcomm smpp-extensions

Procedure: Start smpp-extensions and SMPP RA
  1. Pre-requisite: You must have smpp-extensions deployed in the JBoss Application Server as explained in the Installation Guide.

  2. All you have to do to start the Service is start the JBoss AS. This will automatically start the smpp-extensions and SMPP RA. To start the JBoss Server you must execute the run.sh (Unix) or run.bat (Microsoft Windows) startup script in the <jboss_install_directory>/bin folder (on Unix or Windows).

  3. Result: If the service started properly you should see following lines in the Unix terminal or Command Prompt depending on your environment:

    2018-01-04 17:42:54,731 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/admin-console
    2018-01-04 17:42:54,762 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (main) Initializing Mojarra (1.2_12-b01-FCS) for context '/admin-console'
    2018-01-04 17:42:55,711 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/
    2018-01-04 17:42:55,807 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/jmx-console
    2018-01-04 17:42:55,901 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/jolokia
    2018-01-04 17:42:55,931 INFO  [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/jolokia]] (main) jolokia-agent: No access restrictor found at classpath:/jolokia-access.xml, access to all MBeans is allowed
    2018-01-04 17:42:56,778 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/restcomm-slee-management
    2018-01-04 17:42:59,273 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/slee-management-console
    2018-01-04 17:42:59,291 INFO  [org.mobicents.slee.container.management.console.server.ManagementConsole] (main) Mobicents Management Console initialized
    2018-01-04 17:42:59,760 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/smpp-management
    2018-01-04 17:43:03,269 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installing DeployableUnitID[url=file:/E:/JavaT/jboss_smpp/server/default/deploy/smpp-server-ra-du-7.0.0-SNAPSHOT.jar/]
    2018-01-04 17:43:03,624 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed LibraryID[name=library-smpp-server,vendor=library-smpp-server,version=1.0]
    2018-01-04 17:43:03,624 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.DATA_SM_RESP,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,625 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.SUBMIT_MULTI_RESP,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,625 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.DELIVER_SM,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,625 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.SUBMIT_SM_RESP,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,625 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.DELIVER_SM_RESP,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,625 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.DATA_SM,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,625 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.SUBMIT_MULTI,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,626 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.SUBMIT_SM,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,626 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.REQUEST_TIMEOUT,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,626 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.SEND_PDU_STATUS,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,626 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed EventTypeID[name=org.restcomm.slee.resource.smpp.RECOVERABLE_PDU_EXCEPTION,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,635 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed ResourceAdaptorTypeID[name=SMPPServerResourceAdaptorType,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,639 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed ResourceAdaptorID[name=SMPPServerResourceAdaptor,vendor=org.restcomm,version=1.0]
    2018-01-04 17:43:03,639 INFO  [org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl] (main) Installed DeployableUnitID[url=file:/E:/JavaT/jboss_smpp/server/default/deploy/smpp-server-ra-du-7.0.0-SNAPSHOT.jar/]
    2018-01-04 17:43:03,935 INFO  [org.mobicents.slee.container.management.ResourceManagement] (main) Created Resource Adaptor Entity SmppServerRA for ResourceAdaptorID[name=SMPPServerResourceAdaptor,vendor=org.restcomm,version=1.0] Config Properties: []
    2018-01-04 17:43:04,191 INFO  [org.restcomm.smpp.EsmeManagement] (main) Loading ESME configuration from E:\JavaT\jboss_smpp\server\default\data\SmppManagement_esme.xml
    2018-01-04 17:43:04,247 INFO  [org.restcomm.smpp.SmppManagement] (main) Started SmppManagement
    2018-01-04 17:43:04,280 INFO  [org.restcomm.smpp.SmppServerManagement] (main) Loading SMPP Server Properties from E:\JavaT\jboss_smpp\server\default\data\SmppManagement_smppserver.xml
    2018-01-04 17:43:04,421 INFO  [org.restcomm.smpp.SmppServerManagement] (main) Starting SMPP server...
    2018-01-04 17:43:04,437 INFO  [com.cloudhopper.smpp.impl.DefaultSmppServer] (main) SmppManagement started at 127.0.0.1:2776
    2018-01-04 17:43:04,437 INFO  [org.restcomm.smpp.SmppServerManagement] (main) SMPP server started
    2018-01-04 17:43:04,438 INFO  [org.restcomm.smpp.SmppServerOpsThread] (Thread-21) SmppServerOpsThread started.
    2018-01-04 17:43:04,481 INFO  [org.restcomm.smpp.SmppClientOpsThread] (Thread-22) SmppClientOpsThread started.
    2018-01-04 17:43:04,482 INFO  [javax.slee.RAEntityNotification[entity=SmppServerRA].SmppServerResourceAdaptor] (main) Activated RA Entity SmppServerRA
    2018-01-04 17:43:04,483 INFO  [org.mobicents.slee.container.management.ResourceManagement] (main) Activated RA Entity SmppServerRA
    2018-01-04 17:43:04,756 INFO  [org.mobicents.slee.container.management.ResourceManagement] (main) Bound link between RA Entity SmppServerRA and Name SmppServerRA
    2018-01-04 17:43:05,019 INFO  [org.restcomm.smpp.oam.SmppShellExecutor] (main) Started SmppShellExecutor SmppManagement
    2018-01-04 17:43:05,023 INFO  [org.restcomm.ss7.management.console.ShellServer] (main) Starting SS7 management shell environment
    2018-01-04 17:43:05,027 INFO  [org.restcomm.ss7.management.console.ShellServer] (main) ShellExecutor listening at /127.0.0.1:3435
    2018-01-04 17:43:05,058 INFO  [org.apache.coyote.http11.Http11Protocol] (main) Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
    2018-01-04 17:43:05,069 INFO  [org.apache.coyote.ajp.AjpProtocol] (main) Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
    2018-01-04 17:43:05,075 INFO  [org.jboss.bootstrap.microcontainer.ServerImpl] (main) JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 45s:714ms
  4. If you are starting smpp-extensions for the first time, smpp-extensions is not configured. You need to use the Shell Client to connect to smpp-extensions . Using CLI you can configure how service interacts with SMPP network. You can also use the GUI to achieve the same. Once configured, the state and configuration of SMPP is persisted which stands server re-start.

Procedure: Stop smpp-extensions Service and SMPP RA
  1. To stop the smpp-extensions service and SMPP RA, you must shut down the JBoss Application Server. To shut down the server(s) you must execute the shutdown.sh -s (Unix) or shutdown.bat -s (Microsoft Windows) script in the <jboss_install_directory>/bin directory (on Unix or Windows).

  2. If the Service stopped properly, you will see the following three lines as the last output in the Unix terminal or Command Prompt:

    [Server] Shutdown complete
    Halting VM

3.2. Running the Shell`Shell`

3.2.1. Start the Shell Client

Shell client can be started with following command from $JBOSS_HOME/bin :

[$] ./ss7-cli.sh

Once console starts, it will print following like information:

version=6.2.8.493,name={this-platform} CLI,prefix={this-folder},vendor=TeleStax
{this-folder}>

The ss7-cli script supports the following options

Usage: SS7 [OPTIONS]
Valid Options
-v           Display version number and exit
-h           This help screen

3.2.2. Connect to Managed Instance

Shell needs to connect to managed instance. Command to connect has following structure:

connect <IP> <PORT>
Example 1. Connect to remote machine
mobicents>connect 10.65.208.215 3435

mobicents(10.65.208.215:3435)>
Host IP and port are optional, if not specified, shell will try to connect to 127.0.0.1:3435

3.2.3. Disconnect

Command to disconnect has following structure:

ss7 discconnect
Example 2. Disconnect
mobicents(10.65.208.215:3435)>ss7 disconnect

Bye
mobicents>

3.2.4. Authentication and Audit Logs

3.2.4.1. Security

Security is a fundamental requirement of any Telecom application. You must control access to your SMPP network and restrict who is allowed to access what and perform what operations.

Restcomm smpp-extensions CLI Security is based on the JBoss Security Framework. The JBoss Security framework provides support for a role-based declarative security model as well as integration of custom security via a security proxy layer. The default implementation of the declarative security model is based on Java Authentication and Authorization Service (JAAS) login modules and subjects.

Procedure: Enable Security
  1. Add a new parameter named “securityDomain” to the "ShellExecutor" bean in the configuration file jboss-5.1.0.GA/server/default/deploy/restcomm-ss7-service/META-INF/jboss-beans.xml and save the changes.

    <property name="securityDomain">java:/jaas/jmx-console</property>
  2. Configure the security domain in the file jboss-5.1.0.GA/server/default/conf/login-config.xml following the instructions in the JBoss Admin Guide.

  3. Create entries for user id and password in the file [path]_ jboss-5.1.0.GA/server/default/conf/props/jmx-console-users.properties_ for every user allowed to access the CLI.

Procedure: Disable Security
  1. Delete all configurations created as mentioned above and remove the parameter “securityDomain” from the "Shell Executor" bean defined in jboss-5.1.0.GA/server/default/deploy/restcomm-ss7-service/META-INF/jboss-beans.xml.

If you would like to read more about the JBoss Security Framework, please refer to the JBoss Admin Guide available in their website.

3.2.4.2. Audit Configuration

If security is enabled then you can log the operations performed by every user.

Procedure: Enable Audit
  1. Add a new appender to the file jboss-5.1.0.GA/server/default/conf/jboss-log4j.xml as below:

    <appender name="AUDIT" class="org.jboss.logging.appender.DailyRollingFileAppender">
    	<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
    	<param name="File" value="${jboss.server.log.dir}/audit.log"/>
    	<param name="Append" value="true"/>
    	<param name="DatePattern" value="'.'yyyy-MM-dd"/>
    	<layout class="org.apache.log4j.PatternLayout">
    		<param name="ConversionPattern" value="%d %-5p [%c] (%t:%x) %m%n"/>
    	</layout>
    </appender>
  2. Add a new category to the file jboss-5.1.0.GA/server/default/conf/jboss-log4j.xml as below:

    <category name="org.jboss.security.audit.providers.LogAuditProvider" additivity="false">
    	<priority value="TRACE"/>
    	<appender-ref ref="AUDIT"/>
    </category>

When security and audit is enabled, a sample audit log looks like this:

2012-11-28 22:17:27,005 TRACE [org.jboss.security.audit.providers.LogAuditProvider] (pool-19-thread-8:) [Success]message=login success;principal=admin;
2012-11-28 22:17:47,659 TRACE [org.jboss.security.audit.providers.LogAuditProvider] (pool-19-thread-1:) [Info]response=Successfully added client Association=SCTPAssoc1;principal=admin;command=sctp association create SCTPAssoc1 CLIENT 127.0.0.1 2775 127.0.0.1 2776;
2012-11-28 22:18:06,773 TRACE [org.jboss.security.audit.providers.LogAuditProvider] (pool-19-thread-3:) [Success]message=logout success;principal=admin;

3.2.5. Command-line Completion

Restcomm smpp-extensions Shell supports Command-line completion (Tab Completion) allowing you to type the first (or first few) character(s) of the comand and press tab to fill in the rest of the command. As soon as you enter the CLI (by executing the ss7-cli.sh script) you can make use of this feature to view all possible commands.

When you first enter CLI and press the "tab" key, CLI will display all operations permitted in that context. Once you connect to a managed instance and while staying connected if you press the "tab" key it will display all other commands allowed.

mobicents> [tab key press]
history  connect  exit
mobicents>connect 10.65.208.215 3435
mobicents(10.65.208.215:3435)> [tab key press]
smpp        history     disconnect

If you enter the first few characters of a command and press "tab", CLI will automatically fill in the rest of the command or display all possible commands if there is more than one command beginning with the characters entered by you.

mobicents(10.65.208.215:3435)>smpp [tab key press]
esme        smppserver        --help
mobicents(10.65.208.215:3435)>sctp

In addition, help files are also available for every command using the --help option. The help files provide details of the command including possible parameters and examples of usage if applicable.

mobicents(10.65.208.215:3435)>smpp smppserver set port --help
Name
        smpp smppserver set port

SYNOPSIS
        smpp smppserver set port <port>

DESCRIPTION
        This command is used to set the port that the SMPP Server is listening t
o for
        incoming bind request.

        If unspecified, the default port is 2776.

        You must restart the SMPP Server for the new value to take effect.

SEE ALSO
        smpp esme create

mobicents(10.65.208.215:3435)>

3.3. Running the Graphical User Interface

Open a Web Browser and navigate to http://localhost:8080/smpp-management/. The window will look similar to the figure below. The GUI is divided into three sections:

  • A left panel listing the management units (SMPP server and ESMEs). You can click on any of these to select and navigate to the specific management unit.

  • A main panel displaying the currently selected management unit. At the top of this panel you will find a bread crumb trail providing links back to each previous page that you navigated through in order to get to the current page. The main view is categorized into multiple tabs to manage different aspects of the selected layer.

  • A bottom panel displaying the log data. You can clear the log anytime by clicking on the trash icon at the top right corner of this panel. You can also minimize or maximize this panel to suit your needs.

GUI services
Figure 1. GUI - Services

3.3.1. Connect to a new Instance

You can connect to a new instance by entering the IP:Port values and the login credentials in the top left corner of the GUI. However please note that this feature is not available in this release but will be fully functional in the next release.

3.3.2. Authentication

Restcomm smpp-extensions GUI Management Security is based on the JBoss Security Framework. This is explained in [_security].

4. Configuring of server settings

4.1. Configuring jboss-beans.xml for JBoss 5.1 AS

Configuration is done through an XML descriptor file named jboss-beans.xml located at $JBOSS_HOME/server/profile_name/deploy/restcomm-smpp-service/META-INF, where profile_name is the name of the server profile.

4.1.1. Configuring SmppManagement

You must configure SmppManagement service as a base SMPP service.

Scroll down to the section for SmppManagement in the jboss-beans.xml file and define the properties to suit your requirements.

	<bean name="SS7Clock" class="org.restcomm.protocols.ss7.scheduler.DefaultClock">
	</bean>

	<bean name="SS7Scheduler" class="org.restcomm.protocols.ss7.scheduler.Scheduler">
		<property name="clock">
			<inject bean="SS7Clock" />
		</property>
	</bean>

    <!-- ==================================================================== -->
    <!-- SMPP -->
    <!-- SmppManagement is managing SMPP part -->
    <!-- ==================================================================== -->
    <bean name="SmppManagement" class="org.restcomm.smpp.SmppManagement">
        <constructor factoryClass="org.restcomm.smpp.SmppManagement"
            factoryMethod="getInstance">
            <parameter>SmppManagement</parameter>
        </constructor>
        <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="org.restcomm.smpp:name=SmppManagement",exposedInterface=org.restcomm.smpp.SmppManagementMBean.class,registerDirectly=true)</annotation>
        <property name="persistDir">${jboss.server.data.dir}</property>
    </bean>
org.restcomm.protocols.ss7.scheduler.Scheduler

DefaultClock and Scheduler are service beans that are needed for SmppManagement service.

org.restcomm.smpp.SmppManagement

This SmppManagement Management Bean is created by a factory class SmppManagement. A constructor argument of SmppManagement Management Bean is a String. This is a productName parameter.

This XML file is stored in the path specified by the property persistDir. For example, in the above case, when Restcomm SmppManagement is started, files named SmppManagement_esme.xml and SmppManagement_smppserver.xml will be created at $JBOSS_HOME/server/profile_name/data directory. The other properties of the Stack are defined below:

persistDir

As explained above

4.1.2. Configuring ShellExecutor and SmppShellExecutor

ShellExecutor is responsible for listening incoming CLI commands. Received commands are executed on local resources to perform actions like ESME creation and SmppManagement stack management. If an SS7 library is used along with SMPP lib then you will need only one ShellExecutor class configured for both services.

    <!-- ==================================================================== -->
    <!-- Shell Service -->
    <!-- ==================================================================== -->
    <!-- Define Shell Executor -->
	<bean name="ShellExecutor" class="com.mobicents.ss7.management.console.ShellServer">
		<constructor>
			<parameter>
				<inject bean="SS7Scheduler" />
			</parameter>
			<parameter>
				<list class="javolution.util.FastList" elementClass="org.restcomm.ss7.management.console.ShellExecutor">
					<inject bean="SmppShellExecutor" />
				</list>
			</parameter>
		</constructor>

		<property name="address">${jboss.bind.address}</property>
		<property name="port">3435</property>
		<property name="securityDomain">java:/jaas/jmx-console</property>
	</bean>

    <bean name="SmppShellExecutor" class="org.restcomm.smpp.oam.SmppShellExecutor">
        <property name="smppManagement">
            <inject bean="SmppManagement" />
        </property>
    </bean>

By default ShellExecutor listens at jboss.bind.address and port 3435. (This is used when you use CLI access after running of ss7-cli command). You may set the address property to any valid IP address that your host is assigned. The shell commands are exchanged over TCP/IP.

To understand JBoss bind options look at Installation_And_Getting_Started_Guide

SmppShellExecutor is a CLI command processor for SmppManagement.

4.2. Configuring beans for WildFly 5.1 AS

For working under a WildFly server we need to deploy:

  • org.restcomm.ss7.commons module that contains a base code for CLI interface

  • org.restcomm.smpp.bootstrap module that contains SMPP server staff

org.restcomm.ss7.commons module is used also for SS7 library. If you use SMPP library along with SS7 library you need to deploy this module only once.

$JBOSS_HOME/standalone/configuration/standalone.xml file (or other appropriate config if you use another profile) must contain a dscription of org.restcomm:smpp-extensions subsystem.

Below is a default example of a subsystem description:

        <subsystem xmlns="urn:org.restcomm:smpp-extensions:1.0">
            <mbean name="SS7Clock" type="SS7Clock"/>
            <mbean name="SS7Scheduler" type="SS7Scheduler"/>
            <mbean name="SmppManagement" type="SmppManagement"/>
            <mbean name="SmppShellExecutor" type="SmppShellExecutor"/>
            <mbean name="ShellExecutor" type="ShellExecutor">
                <property name="address" type="String" value="127.0.0.1"/>
                <property name="port" type="int" value="3436"/>
                <property name="securityDomain" type="String" value="jmx-console"/>
            </mbean>
        </subsystem>

ShellExecutor has properies for configuring. By default ShellExecutor listens at jboss.bind.address and port 3435. (This is used when you use CLI access after running of ss7-cli command). You may set the address property to any valid IP address that your host is assigned and the port property for a needed port. The shell commands are exchanged over TCP/IP.

5. Configuring as a Standalone library

If you intend to use the Stack as a standalone library without using JBoss Application Server or JSLEE RAs, then you must make your own implementation of classes that was implemented at SMPP RA level.

For this case you need to implement org.restcomm.smpp.SmppSessionHandlerInterface (it is implemented at SMPP RA), set it to SmppManagement before starting of SmppManagement stack.

6. Managing Restcomm smpp-extensions

Restcomm smpp-extensions comes with a convenient user-friendly Graphical User Interface (GUI) and a Command Line Interface (CLI) that will allow you to configure, monitor and manage the Stack. While the CLI tool allows complete configuration and control of the Stack, the GUI-based management enhances the usability of the platform and gives you the ability to create different SMPP configurations and manage the platform dynamically. This chapter will explain how to manage the Stack effectively using both the GUI and the CLI.

6.1. SMPP Server Settings

6.1.1. View SMPP Server Details

6.1.1.1. Using GUI
Procedure: View SMPP Server Details using the GUI
  1. In the GUI SMPP Server Management Console, click on 'SMPP Server' in the left panel.

  2. The main panel will display the existing SMPP Server details (SmppServerManagement beans).

  3. You can view the current Session details of the SMPP Server by clicking on the row corresponding to the name of the SMPP Server (SmppManagement in this case).

6.1.2. Edit SMPP Server Properties

6.1.2.1. Using CLI

You can edit the properties of the SMPP Server by issuing appropriate commands for every property as described below:

Name
	smpp smppserver set port

SYNOPSIS
	smpp smppserver set port <port>

DESCRIPTION
	This command is used to set the port that the SMPP server is listening to for
	incoming bind request.

	If unspecified, the default port is 2776.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set bindipaddress

SYNOPSIS
	smpp smppserver set bindipaddress <ip-address>

DESCRIPTION
	This command is used to set the IP for SMPP server.
	The SSMPP server will use this ip for listening incoming bind request from SMPP client.

	If unspecified, the default value is 0.0.0.0, that means SMPP server will listen on all interfaces.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set bindtimeout

SYNOPSIS
	smpp smppserver set bindtimeout <bind-timeout>

DESCRIPTION
	This command is used to set a value for bind-timeout in milli-seconds.
	Once the TCP socket is established, the SMPP server will wait for the time period
	specified by the parameter bind-timeout in milli-seconds, for the peer to send a
	bind request, after which it will kill the TCP socket.

	If unspecified, the default value is 5000 milli-seconds.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set writetimeout

SYNOPSIS
	smpp smppserver set writetimeout <bind-timeout>

DESCRIPTION
	This command is used to set a value for write-timeout in milli-seconds.
	This parameter sets a timeout which occurs when we can not properly sent
	a message into TCP channel.

	If unspecified, the default value is 0 (no timeout).

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set systemid

SYNOPSIS
	smpp smppserver set systemid <system-id>

DESCRIPTION
	This command is used to set the value for system-id. This is the 'system-id'
	included in the Bind response.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set autonegotiateversion

SYNOPSIS
	smpp smppserver set autonegotiateversion <true/false>

DESCRIPTION
	This command is used to specify if auto-negotiate-version is enabled or not.
	If it is set to 'true' and a Bind is received with version <= 3.3 for
	interface version, then it is normalized to version 3.3. If a Bind is received
	with version >= 3.4 for interface version, it is normalized to version 3.4.

	The default value is true.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set interfaceversion

SYNOPSIS
	smpp smppserver set interfaceversion <interface-version>

DESCRIPTION
	This command is used to specify the SMPP version that the Server supports.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set maxconnectionsize

SYNOPSIS
	smpp smppserver set maxconnectionsize <max-connection-size>

DESCRIPTION
	This command is used to specify the maximum number of connections/sessions this
	Server is expected to handle.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set defaultwindowsize

SYNOPSIS
	smpp smppserver set defaultwindowsize <defaultwindowsize>

DESCRIPTION
	This command is used to specify the default window size for this Server.
	The window size is the amount of unacknowledged requests that are permitted to be
	outstanding/unacknowledged at any given time. If more requests are added, the
	underlying stack will throw an exception.

	The default value is 100.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set defaultwindowwaittimeout

SYNOPSIS
	smpp smppserver set defaultwindowwaittimeout <default-window-wait-timeout>

DESCRIPTION
	This command is used to specify the default-window-wait-timeout for this Server
	in milli-seconds.
	The window wait timeout is the time within which the connection to remote SMPP
	Server should be established.

	The default value is 30000 milli seconds.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set defaultrequestexpirytimeout

SYNOPSIS
	smpp smppserver set defaultrequestexpirytimeout <default-request-expiry-timeout>

DESCRIPTION
	This command is used to specify the default-request-expiry-timeout for the Server
	in milli-seconds. The request expiry timeout is the time to wait for an end-point
	to respond to before it expires.

	The default value is 30000 milli seconds.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set defaultwindowmonitorinterval

SYNOPSIS
	smpp smppserver set defaultwindowmonitorinterval <default-window-monitor-interval>

DESCRIPTION
	This command is used to specify the default-window-monitor-interval for the Server
	in milli-seconds. This is the time between executions of monitoring the window for
	requests that expire. It is recommended that this value, generally, either matches
	or is half the value of 'request-expiry-timeout'. Therefore, in the worst case
	scenario, a request could take upto 1.5 times the 'requestExpiryTimeout' to
	clear out.

	The default value is 15000 milli seconds.

	You must restart the SMPP Server for the new value to take effect.
Name
	smpp smppserver set defaultsessioncountersenabled

SYNOPSIS
	smpp smppserver set defaultsessioncountersenabled <true/false>

DESCRIPTION
	This command is used to set the parameter 'defaultsessioncountersenabled' value
	to true or false.
	When this is enabled, SMPP server exposes the statistics for SMPP connections.

	The default value is true.

	You must restart the SMPP Server for the new value to take effect.
6.1.2.2. Using GUI
Procedure: Edit SMPP Server Properties using GUI
  1. In the GUI Management Console for SMPP server, click on 'SMPP Server' in the left panel.

  2. The main panel will display the existing SMPP Server details.

  3. You can edit the properties of the SMPP Server by launching the edit window. You can achieve this by clicking on the blue coloured 'edit' button at the end of the row. The edit window will display all SMPP properies as shown in the figure below. For more details of these parameters please refer to the descriptions of the CLI commands for the same in the preceding section.

    GUI SMSC GW SMPP EDIT
    Figure 2. SMPP Server - GUI - Restcomm smpp-extensions
  4. To edit any property, click on the edit icon of the row corresponding to the property. This action will display an editable text field for the property as shown in the figure above. Adjacent to the editable text field, you will find a 'tick' icon and a 'x' icon. To accept the newly entered value for the property, you must click on the 'tick' icon. To discard the change and stop the editing of the property, you must click on the 'x' icon.

    SMPP Server can be setup for SSL so every incoming connection request should first do SSL hand-shake. Settingup SSL is only possible from GUI.

  5. You must click on the button 'Apply Changes' at the top of the window to save your settings. If there is an error in setting the value, then you will find the details of the error in the Management Console Log section below.

6.1.3. Start SMPP Server

6.1.3.1. Using GUI
Procedure: Start SMPP Server using GUI
  1. In the GUI Management Console for SMPP Server, click on 'SMPP Server' in the left panel.

  2. The main panel will display the existing SMPP Server details.

  3. You can start the SMPP Server by clicking on the 'Start' icon lit green in the row corresponding to the SmppManagement unit. This icon will be enabled only if the SMPP server is currently stopped.

  4. This action will start the SMPP Server.

  5. If there is an error in starting the SMPP Server, then you will find the details of the error in the Management Console Log section below.

6.1.4. Stop SMPP Server

6.1.4.1. Using GUI
Procedure: Stop SMPP Server using GUI
  1. In the GUI Management Console for SMPP Server, click on 'SMPP Server' in the left panel.

  2. The main panel will display the existing SMPP Server details.

  3. You can stop the SMPP Server by clicking on the 'Stop' icon lit red in the row corresponding to the SmppManagement unit. This icon will be enabled only if the SMPP server is currently running.

  4. This action will stop the SMPP Server.

  5. If there is an error in stopping the SMPP Server, then you will find the details of the error in the Management Console Log section below.

6.1.5. Reset Counters for SMPP Server

6.1.5.1. Using GUI
Procedure: Reset Counters for SMPP Server using GUI
  1. In the GUI Management Console for SMPP Server, click on 'SMPP Server' in the left panel.

  2. The main panel will display the existing SMPP Server details.

  3. You can view the current Session details of the SMPP Server by clicking on the row corresponding to the name of the SMPP Server (SmppManagement in this case).

  4. This action will display the current session details of the SMPP Server. If you scroll to the bottom, you will find a button named 'Reset Counters'. Click on it if you wish to reset all counters for SMPP Server.

  5. If there is an error resetting the counters, then you will find the details of the error in the Management Console Log section below.

6.2. External Short Messaging Entities (ESMEs)

Restcomm smpp-extensions can now act as ESME (initiate bind to remote SMPP Server - Client type ESME) or can also act as SMPP Server (accept bind from remote ESME - Server type ESME). While defining an ESME (SMPP connection), you can optionally pass the Cluster name. If it is not passed, cluster name is same as ESME name. As the name suggests, its now possible to group different ESMEs in the same cluster. This is useful only when SMS is suppose to be routed out of Restcomm smpp-extensions to ESME. If there are multiple ESME’s in a cluster, the load is shared in a round robin fashion to send out SMS. In case if one of the ESME is in UNBOUND state, the next BOUND smpp connection (within same cluster) will be used.

When we use SMPP server for Telestax SMSC GW then the current algo for routing is the following. We have two steps:

  • 1 step - selecting ESME cluster for delivering. Each cluster can contain one or more ESME. The idea of cluster usage is to have load sharing between nodes (ESMEs) inside a cluster and/or if some cluster node is unbound then SMSC GW will send messages to another cluster. SMSC GW selects the first cluster that ESME(s) fits to the conditions:

    • bindType==transiever or receiver (for SERVER type) or transmitter (for CLIENT type)

    • the ESME is not the ESME from which the message has come to SMSC GW

    • networkID of a message == networkID of an ESME

    • dest address, ton and npi of a message fit to routing address, ton and npi of ESME. The fact if this ESME is bound or not is not taken into account at this step

  • 2 step - selecting of ESME in the cluster:

    • selecting of ESME in the cluster that is bound (and not stopped) now. If all ESMEs are not bound in the cluster then the message will be dropped (temporary delivery failure)

In order to this algo works properly we need to specify same "routing-ton", "routing-npi" and "routing-range" parameters for all ESMEs in a cluster.

Below diagram explains the load-balancing between SMPP connections

smsc SMPP Loadbalancing
Figure 3. SMPP Load Balancing

You can define multiple ESMEs, each with a unique name but the same systemId and declare their host-ip and port values as -1 (only for SMPP type Server). The SMPP server will now accept multiple incoming BIND requests from any IP and any port as far as the systemId and Password matches.

Alternatively, if you declare a real value for host-ip (say for example 10.199.7.23) and port as -1, the SMPP Server will accept as many BINDS as ESMEs defined from the specified IP but any port as far as the systemId and Password matches.

6.2.1. Create new ESME

6.2.1.1. Using CLI

You can configure a new ESME by issuing the command ` smpp esme create` with appropriate parameters as described below.

Name
	smpp esme create

SYNOPSIS
	smpp esme create name <systemId> <host-ip> <port> <SmppBindType>
	<SmppSession.Type> password <password> networkid <networkid>
	split-long-messages <true | false> system-type <sms | vms | ota >
	interface-version <3.3 | 3.4 | 5.0> esme-ton <esme address ton>
	esme-npi <esme address npi> esme-range <esme address range>
	cluster-name <clusterName> window-size <windowSize>
	connect-timeout <connectTimeout> request-expiry-timeout <requestExpiryTimeout>
	client-bind-timeout <clientBindTimeout> window-monitor-interval <windowMonitorInterval>
	window-wait-timeout <windowWaitTimeout> counters-enabled <true | false>
	enquire-link-delay <30000> enquire-link-delay-server <0> link-drop-server <0> charging-enabled <true | false>
	source-ton <source address ton> source-npi <source address npi>
	source-range <source address range> routing-ton <routing address ton>
	routing-npi <routing address npi> routing-range <routing address range>
	smppencodingforgsm7 <ServerDefault|Utf8|Unicode|Gsm7>
	smppencodingforucs2 <ServerDefault|Utf8|Unicode|Gsm7> incomingdcsautodetect <false|true>
	detrule <det rule name>
	ratelimit-second <ratelimitsecond> ratelimit-minute <ratelimitminute>
	ratelimit-hour <ratelimithour> ratelimit-day <ratelimitday>
	national-language-single-shift <national-language-single-shift>
	national-language-locking-shift <national-language-locking-shift>
	min-message-length <min-message-length value>
	max-message-length <max-message-length value>

DESCRIPTION
	This command is used to configure a new ESME.

PARAMETERS

	Standard Parameters

	Name			- A unique name for this ESME configuration. You can
				  define as many ESMEs as you want as far as the name is
				  unique and the combination of
				  SystemId:host-ip:port:SmppBindType is unique.

	System Id		- This is used to identify an ESME or an SMPP server at bind
				  time. An 'ESME system_id' identifies the ESME or ESME
				  agent to the SMPP Server. The 'SMPP system_id' provides an
				  identification of the SMPP Server to the ESME. You can define
				  multiple ESMEs, each with a unique name but the same
				  <literal>systemId<literal> to allow anonymous incoming
				  binds and multiple binds from the same IP depending on
				  the values specified for host-ip and port.

	host-ip	& port		- If the SMPP Server is acting as an ESME, the BIND request will
				  be sent to the configured IP and Port. If the SMPP Server is
				  acting as a Server, it will accept incoming BIND
				  requests from the specified IP and Port.
				  If the port is unknown, you must pass '-1' as wild
				  character.

				  When you define multiple ESMEs with the same systemId,if
				  host-ip and port values are -1 (for SMPP type Server),
				  the SMPP Server will accept multiple incoming BIND requests
			          from any IP:port as long as the systemId and password
				  match.

				  When you define multiple ESMEs with the same systemId,if
				  host-ip is a real value (a specific IP) and port value
				  is -1, the SMPP Server will accept as many BINDS as ESMEs
				  defined from the specified IP but any port as long as
				  the systemId and password match.

	SmppBindType 		- Possible values: TRANSCEIVER, TRANSMITTER or RECEIVER.
				  If the SMPP Server is acting as an ESME, it will initiate
				  corresponding bind. If the SMPP Server is acting as a Server,
				  it will accept corresponding bind from a remote ESME.

	SmppSession.Type 	- Possible values: SERVER or CLIENT.
				  If the value is 'SERVER', the SMPP Server acts as a Server
				  listening for incoming SMPP binds.
				  If the value is 'CLIENT', the SMPP Server will initiate
				  SMPP bind to a remote Server.

	Optional Parameters

	Password	    - It is used by the SMPP Server to authenticate the identity of
				  the binding ESME. The Service Provider may require
				  ESME’s to provide a password when binding to the SMPP Server.

	networkId       - indicates virtual subnetwork that this ESME belongs. SMS
	                flows within same netwrokId, unless changed using mproc
	                (this is for multi-tenancy support). If this parameter is
                    skipped - networkId will be set to "0" when ESME creation.
                    If you do not use multi-tenancy support - set this value
                    to 0 or skip.

	split-long-messages - long messages will be split before sending to this
				  ESME destination. Default value is false.

	system-type     - Default value is null.
				  This is used to categorize the type of ESME that is
				  binding to the SMPP Server.

	interface-version	- Default value is 3.4.

				  It is used to indicate the version of the SMPP protocol.

				  It is set in 'SMPPServer Settings'.

	esme-ton 		- Defines ESME TON. If the SMPP Session Type is CLIENT,
				  this TON will be used in the BIND request. If the SMPP
				  Session Type is SERVER, the incoming BIND request should
				  have the same TON as configured here. If the configured
				  value is null (-1), SMPP Server will ignore it in both cases.

	esme-npi 		- Defines ESME NPI. If the SMPP Session Type is CLIENT,
				  this NPI will be used in the BIND request. If the SMPP
				  Session Type is SERVER, the incoming BIND request should
				  have the same NPI as configured here. If the configured
				  value is null (-1), SMPP Server will ignore it in both cases.

	esme-range 		- Defines ESME Address Range. If the SMPP Session Type is
				  CLIENT, this Address Range will be used in the BIND
				  request. If the SMPP Session Type is SERVER, the
				  incoming BIND request should have the same Address Range
				  as configured here. If the configured value is
				  null (-1), SMPP Server will ignore it in both cases.

	cluster-name 		- If it is not specified then its same as the name.
				  It is possible to group different SMPP connections
				  together by specifying the same cluster-name.
				  All the SMPP connection's that are capable of sending
				  out SMS are candidates for grouping.

	window-size 		- Default value is 1.
				  The window size is the amount of unacknowledged requests
				  that are permitted to be outstanding/unacknowledged at
				  any given time. If more requests are added, the
				  underlying stack will throw an exception.

				  This value is set only when ESME is defined as Client
				  side. For Server side this value is taken from the
				  'SMPP Server Settings'.

	connect-timeout		- Default value is 10000 milli seconds.
				  This parameter is used to specify the time within which
				  the connection to a remote SMPP Server server should be
				  established.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

	request-expiry-timeout	- Default value is -1 (disabled).
				  This parameter is used to specify the time to wait in
				  milli seconds for an endpoint to respond to before it
				  expires.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

	client-bind-timeout  - Default value is 5000 milli seconds.
				  This parameter is used to specify the length of time
				  to wait for a bind response when the client connecting.
				  This is useful only when ESME is defined as Client Side.

	window-monitor-interval	- Default value is -1 (disabled).
				  This parameter is used to specify the time between
				  executions of monitoring the window for requests that
				  expire. It is recommended that this value, generally,
				  either matches or is half the value of
				  'request-expiry-timeout'. Therefore, in the worst case
				  scenario, a request could take upto 1.5 times the
				  'requestExpiryTimeout' to clear out.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

	window-wait-timeout 	- Default value is 60000 milli seconds.
				  This parameter is used to specify the time to wait
				  until a slot opens up in the 'sendWindow'.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

	counters-enabled 	- Default value is true.
				  When this is enabled, SMPP Server exposes the statistics for
				  SMPP connections.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

	enquire-link-delay	- Default value is 30000 milli seconds.
				  When SMPP Server connects to a remote server as CLIENT, it
				  sends an 'ENQUIRE_LINK' after every configured
				  enquire-link-delay.

				  0 means disabled. SMPP Server will not send ENQUIRE_LINK.

	enquire-link-delay-server - Default value is 0 milli seconds.
				  When SMPP Server connects to a remote server as SERVER, it
				  sends an 'ENQUIRE_LINK' after every configured
				  enquire-link-delay-server.

				  0 means disabled. SMPP Server will not send ENQUIRE_LINK.

	link-drop-server - Default value is 0 milli seconds means disabled.
				  When SMPP Server connects to a remote server as SERVER, if it
				  isn't received any data after configured link-drop-server,
				  it will drop the esme session.

				  0 means disabled, SMPP Server will not drop smpp session.

				  If enquire-link-delay-server is enabled then link-drop-server
				  always disabled.

	charging-enabled	- Flag to enable or disable charging for every SMS
				  arriving from SIP.

	source-ton		- Every SMS coming into the SMPP Server via this ESME should have
				  the same 'source_addr_ton' as the value configured here.

				  If this configured value is null(-1) or not null and
				  matches, the SMPP Server will compare the
				  'source_addr_npi' and 'source_addr_range' as explained
				  below.

				  If it doesn't match, the SMPP Server will reject this SMS with
				  an error code '0x0000000A' indicating
				  Invalid Source Address.

	source-npi		- Every SMS coming into the SMPP Server via this ESME should have
				  the same 'source_addr_npi' as the value configured here.
				  configured here.

				  If this configured value is null(-1)
				  or not null and matches, the SMPP Server will compare the
				  'source_addr_range' as below.

				  If it doesn't match, the SMPP Server will reject this
				  SMS with an error code '0x0000000A' indicating
				  Invalid Source Address.

	source-range		- Every SMS coming into the SMPP Server via this ESME should have
				  the same 'source_addr_range' as the value configured
				  here.This is a regular java expression and
				  default value is ^[0-9a-zA-Z]*.

				  If it matches, the SMPP Server will accept the incoming SMS
				  and process further.

				  If it doesn't match, the SMPP Server will reject this
				  SMS with an error code '0x0000000A' indicating
				  Invalid Source Address.

	routing-ton		- The DefaultSmsRoutingRule will try to match the
				  'dest_addr_ton' of outgoing SMS with the value
				  configured here. If this configured value is null(-1)
				  or not null and matches, the SMPP Server will compare the
				  'dest_addr_npi' and 'destination_addr' as explained
				  below. If it doesn't match, the SMPP Server will select the
				  next ESME in the list for matching routing rule.

				  DefaultSmsRoutingRule will consider ESME for routing
				  only if
				  1) SmppBindType is TRANSCEIVER
				  2) SmppBindType is RECEIVER and
				  SmppSession.Type is SERVER
				  3) SmppBindType is TRANSMITTER and
				  SmppSession.Type is CLIENT

	routing-npi		- The DefaultSmsRoutingRule will try to match the
				  'dest_addr_npi' of outgoing SMS with the value
				  configured here. If this configured value is null(-1)
				  or not null and matches, the SMPP Server will compare the
				  'destination_addr' as below. If it doesn't match, the
				  SMPP Server will select the next ESME in the list for matching
				  routing rule.

				  DefaultSmsRoutingRule will consider ESME for routing
				  only if
				  1) SmppBindType is TRANSCEIVER
				  2) SmppBindType is RECEIVER and
				  SmppSession.Type is SERVER
				  3) SmppBindType is TRANSMITTER and
				  SmppSession.Type is CLIENT

	routing-range		- The DefaultSmsRoutingRule will try to match the
				  'destination_addr' of outgoing SMS with the value
				  configured here. This is a regular java expression and
				  default value is ^[0-9a-zA-Z]*. If it matches, the SMPP Server
				  will send the SMS out over this SMPP connection. If it
				  doesn't match, the SMPP Server will select the next ESME in
				  the list for matching routing rule.

				  DefaultSmsRoutingRule will consider ESME for routing
				  only if
				  1) SmppBindType is TRANSCEIVER
				  2) SmppBindType is RECEIVER and
				  SmppSession.Type is SERVER
				  3) SmppBindType is TRANSMITTER and
				  SmppSession.Type is CLIENT

	smppencodingforgsm7 - Encoding Scheme at SMPP side for GSM7 encoding (DCS=0)
				  Possible values are <ServerDefault|Utf8|Unicode|Gsm7>
				  Default value is "ServerDefault" that means that a server level
				  Encoding Scheme will be used for this ESME.

	smppencodingforucs2 - Encoding Scheme at SMPP side for UCS2 encoding (DCS=8)
				  Possible values are <ServerDefault|Utf8|Unicode|Gsm7>
				  Default value is "ServerDefault" that means that a server level
				  Encoding Scheme will be used for this ESME.

	incomingdcsautodetect - if we set this parameter to true then for all incoming
	              messages DCS autodetection will be done. When all characters of
	              a message belongs to GSM7 character set then DCS is set to 0,
	              if not - to 8.
	              Default value is false, no auto detection is performed.

	detRule             - A name of a rule for DLR error code translation
	              "null" means that no rule is defined and no translation will
	              be done.

    ratelimit_second    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one second.

    				If the ESME sends more messages (per second)
    				than the maximum limit specified by 'ratelimit_second',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	ratelimit_minute    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one minute.

    				If the ESME sends more messages (per minute)
    				than the maximum limit specified by 'ratelimit_minute',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	ratelimit_hour    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one hour.

    				If the ESME sends more messages (per hour)
    				than the maximum limit specified by 'ratelimit_hour',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	ratelimit_day    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one day.

    				If the ESME sends more messages (per day)
    				than the maximum limit specified by 'ratelimit_day',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	national-language-single-shift - National language single shift table can be
	                configured for messages that have come via SMPP (ESME) that
	                do not have UDHs inside and have GSM7 encoding (DCS==0). The
	                default GSM data coding table is mostly used. Possible values:
                       = 0  : default GSM data coding table
                       = 13 : urdu (arabic) national language shift table
                       = 1  : the national language locking shift value must be
                              obtained from the option national-language-single-shift
                              that is defined at SMPP Server general level.


	national-language-locking-shift - National language locking shift table can be
	                configured for messages that have come via SMPP (ESME) that
	                do not have UDHs inside and have GSM7 encoding (DCS==0). The
	                default GSM data coding table is mostly used. Possible values:
                       = 0  : default GSM data coding table
                       = 13 : urdu (arabic) national language shift table
                       = 1  : the national language locking shift value must be
                              obtained from the option national-language-locking-shift
                              that is defined at SMPP Server general level.


	min-message-length    - This paramter is used to specify the minimum
					message length (in characters) acceptable to
					the SMPP Server, for messages coming from this ESME.

					If an incoming message length is less than the
					min-message-length it will be rejected by SMPP Server.

					The default value for this parameter is "-1" and it
					implies "no limitations". Any other negative value
					also implies "no limitations".

	max-message-length    - This paramter is used to specify the maximum
					message length (in characters) acceptable to
					the SMPP Server, for messages coming from this ESME.

					If an incoming message length is more than the
					max-message-length it will be rejected by SMPP Server.

					The default value for this parameter is "-1" and it
					implies "no limitations". Any other negative value
					also implies "no limitations".

EXAMPLES
	smpp esme create test test 127.0.0.1 -1 TRANSCEIVER SERVER password yyyy esme-range 6667
6.2.1.2. Using GUI
Procedure: Create new ESME using GUI
  1. In the GUI Management Console for SMPP Server, click on 'ESMEs' in the left panel.

  2. The main panel will display the existing ESMEs (if any), one each in a row with corresponding actions (start, stop, delete, update) for each row. Below this you will find the button 'Create ESME'.

  3. You can create a new ESME by launching the 'Create ESME' window by clicking on the blue coloured 'Create ESME' button. The 'Create ESME' window will display all ESME paramters that must be defined by you. For more details of these parameters please refer to the descriptions of the CLI commands for the same in the preceding section.

  4. Enter appropriate values for all the parameters and then click on the 'Create' button at the bottom of this 'Create ESME' window. This action will create a new ESME with parameters as defined by you.

  5. If there is an error in defining the ESME, then you will find the details of the error in the Management Console Log section below.

6.2.2. Modify ESME

6.2.2.1. Using CLI

You can modify an existing ESME by issuing the command smpp esme modify with appropriate parameters as described below.

Name
	smpp esme modify

SYNOPSIS
	smpp esme modify <name> password <Specify new password> networkid <networkid>
	split-long-messages <true | false> esme-ton <esme address ton>
	esme-npi <esme address npi> esme-range <esme address range> window-size <windowSize>
	connect-timeout <connectTimeout> request-expiry-timeout <requestExpiryTimeout>
	client-bind-timeout <clientBindTimeout> window-monitor-interval <windowMonitorInterval>
	window-wait-timeout <windowWaitTimeout> counters-enabled <true | false>
	enquire-link-delay <30000> enquire-link-delay-server <0> link-drop-server (0)
	charging-enabled <true | false>
	source-ton <source address ton> source-npi <source address npi>
	source-range <source address range> routing-ton <routing address ton>
	routing-npi <routing address npi> routing-range <routing address range>
	smppencodingforgsm7 <ServerDefault|Utf8|Unicode|Gsm7>
	smppencodingforucs2 <ServerDefault|Utf8|Unicode|Gsm7> incomingdcsautodetect <false|true>
	detrule <det rule name>
	ratelimit-second <ratelimitsecond> ratelimit-minute <ratelimitminute>
	ratelimit-hour <ratelimithour> ratelimit-day <ratelimitday>
	national-language-locking-shift <national-language-locking-shift>
	national-language-single-shift <national-language-single-shift>
	min-message-length <min-message-length value>
	max-message-length <max-message-length value>

DESCRIPTION
	This command is used to modify the settings of an existing ESME configuration.

PARAMETERS

	Standard Parameters

	Name			- The name of the ESME that is being modified.

	Optional Parameters

	Password		- Specify the new password.
				  It is used by the SMPP Server to authenticate the identity of
				  the binding ESME. The Service Provider may require
				  ESMEs to provide a password when binding to the SMPP Server.

				  The new value takes effect when SMPP is restarted.

	networkId       - indicates virtual subnetwork that this ESME belongs. SMS
	                flows within same netwrokId, unless changed using mproc
	                (this is for multi-tenancy support). If this parameter is
                    skipped - networkId will be set to "0" when ESME creation.
                    If you do not use multi-tenancy support - set this value
                    to 0 or skip.

	split-long-messages - long messages will be split before sending to this
				  ESME destination. Default value is false.

	esme-ton 		- Specify new ESME TON.
				  If the SMPP Session Type is CLIENT,
				  this TON will be used in the BIND request. If the SMPP
				  Session Type is SERVER, the incoming BIND request should
				  have the same TON as configured here. If the configured
				  value is null (-1), SMPP Server will ignore it in both cases.

				  The new value takes effect when SMPP is restarted.

	esme-npi 		- Specify new ESME NPI.
				  If the SMPP Session Type is CLIENT,
				  this NPI will be used in the BIND request. If the SMPP
				  Session Type is SERVER, the incoming BIND request should
				  have the same NPI as configured here. If the configured
				  value is null (-1), SMPP Server will ignore it in both cases.

				  The new value takes effect when SMPP is restarted.

	esme-range 		- Specify ESME Address Range.
				  If the SMPP Session Type is
				  CLIENT, this Address Range will be used in the BIND
				  request. If the SMPP Session Type is SERVER, the
				  incoming BIND request should have the same Address Range
				  as configured here. If the configured value is
				  null (-1), SMPP Server will ignore it in both cases.

				  The new value takes effect when SMPP is restarted.

	window-size 		- Specify new window size.
				  Default value is 1.
				  The window size is the amount of unacknowledged requests
				  that are permitted to be outstanding/unacknowledged at
				  any given time. If more requests are added, the
				  underlying stack will throw an exception.

				  This value is set only when ESME is defined as Client
				  side. For Server side this value is taken from the
				  'SMPP Server Settings'.

				  The new value takes effect when SMPP is restarted.

	connect-timeout		- Default value is 10000 milli seconds.
				  This parameter is used to specify the time within which
				  the connection to a remote SMPP Server should be
				  established.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

				  The new value takes effect when SMPP is restarted.

	request-expiry-timeout	- Default value is -1 (disabled).
				  This parameter is used to specify the time to wait in
				  milli seconds for an endpoint to respond to before it
				  expires.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

				  The new value takes effect when SMPP is restarted.

	client-bind-timeout  - Default value is 5000 milli seconds.
				  This parameter is used to specify the length of time
				  to wait for a bind response when the client connecting.
				  This is useful only when ESME is defined as Client Side.

				  The new value takes effect when SMPP is restarted.

	window-monitor-interval	- Default value is -1 (disabled).
				  This parameter is used to specify the time between
				  executions of monitoring the window for requests that
				  expire. It is recommended that this value, generally,
				  either matches or is half the value of
				  'request-expiry-timeout'. Therefore, in the worst case
				  scenario, a request could take upto 1.5 times the
				  'requestExpiryTimeout' to clear out.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

				  The new value takes effect when SMPP is restarted.

	window-wait-timeout 	- Default value is 60000 milli seconds.
				  This parameter is used to specify the time to wait
				  until a slot opens up in the 'sendWindow'.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

				  The new value takes effect when SMPP is restarted.

	counters-enabled 	- Default value is true.
				  When this is enabled, SMPP Server exposes the statistics for
				  SMPP connections.

				  This is useful only when ESME is defined as Client Side.
				  For Server side this value is taken from the
				  the 'SMPP Server Settings'.

				  The new value takes effect when SMPP is restarted.

	enquire-link-delay	- Default value is 30000 milli seconds.
				  When SMPP Server connects to a remote server as CLIENT, it
				  sends an 'ENQUIRE_LINK' after every configured
				  enquire-link-delay.

				  0 means disabled. SMPP Server will not send ENQUIRE_LINK.

				  The new value takes effect immediately.

    enquire-link-delay-server - Default value is 0 milli seconds.
				  When SMPP Server connects to a remote server as SERVER, it
				  sends an 'ENQUIRE_LINK' after every configured
				  enquire-link-delay-server.

				  0 means disabled. SMPP Server will not send ENQUIRE_LINK.

				  The new value takes effect immediately.

	link-drop-server - Default value is 0 milli seconds.
				  When SMPP Server connects to a remote server as SERVER, if it
				  isn't received any data after configured link-drop-server,
				  it will drop the esme session.

				  0 means disabled, SMPP Server will not drop smpp session.

				  If enquire-link-delay-server is enabled then link-drop-server
				  always disabled.

  				  The new value takes effect immediately.


	charging-enabled	- Flag to enable or disable charging for every SMS
				  arriving from SIP.

				  The new value takes effect immediately.

	source-ton		- Every SMS coming into the SMPP Server via this ESME should have
				  the same 'source_addr_ton' as the value configured here.

				  If this configured value is null(-1) or not null and
				  matches, the SMPP Server will compare the
				  'source_addr_npi' and 'source_addr_range' as explained
				  below.

				  If it doesn't match, the SMPP Server will reject this SMS with
				  an error code '0x0000000A' indicating
				  Invalid Source Address.

				  The new value takes effect immediately.

	source-npi		- Every SMS coming into the SMPP Server via this ESME should have
				  the same 'source_addr_npi' as the value configured here.
				  configured here.

				  If this configured value is null(-1)
				  or not null and matches, the SMPP Server will compare the
				  'source_addr_range' as below.

				  If it doesn't match, the SMPP Server will reject this
				  SMS with an error code '0x0000000A' indicating
				  Invalid Source Address.

				  The new value takes effect immediately.

	source-range		- Every SMS coming into the SMPP Server via this ESME should have
				  the same 'source_addr_range' as the value configured
				  here.This is a regular java expression and
				  default value is ^[0-9a-zA-Z]*.

				  If it matches, the SMPP Server will accept the incoming SMS
				  and process further.

				  If it doesn't match, the SMPP Server will reject this
				  SMS with an error code '0x0000000A' indicating
				  Invalid Source Address.

				  The new value takes effect immediately.

	routing-ton		- The DefaultSmsRoutingRule will try to match the
				  'dest_addr_ton' of outgoing SMS with the value
				  configured here. If this configured value is null(-1)
				  or not null and matches, the SMPP Server will compare the
				  'dest_addr_npi' and 'destination_addr' as explained
				  below. If it doesn't match, the SMPP Server will select the
				  next ESME in the list for matching routing rule.

				  DefaultSmsRoutingRule will consider ESME for routing
				  only if
				  1) SmppBindType is TRANSCEIVER
				  2) SmppBindType is RECEIVER and
				  SmppSession.Type is SERVER
				  3) SmppBindType is TRANSMITTER and
				  SmppSession.Type is CLIENT

				  The new value takes effect immediately.

	routing-npi		- The DefaultSmsRoutingRule will try to match the
				  'dest_addr_npi' of outgoing SMS with the value
				  configured here. If this configured value is null(-1)
				  or not null and matches, the SMPP Server will compare the
				  'destination_addr' as below. If it doesn't match, the
				  SMPP Server will select the next ESME in the list for matching
				  routing rule.

				  DefaultSmsRoutingRule will consider ESME for routing
				  only if
				  1) SmppBindType is TRANSCEIVER
				  2) SmppBindType is RECEIVER and
				  SmppSession.Type is SERVER
				  3) SmppBindType is TRANSMITTER and
				  SmppSession.Type is CLIENT

				  The new value takes effect immediately.

	routing-range		- The DefaultSmsRoutingRule will try to match the
				  'destination_addr' of outgoing SMS with the value
				  configured here. This is a regular java expression and
				  default value is ^[0-9a-zA-Z]*. If it matches, the SMPP Server
				  will send the SMS out over this SMPP connection. If it
				  doesn't match, the SMPP Server will select the next ESME in
				  the list for matching routing rule.

				  DefaultSmsRoutingRule will consider ESME for routing
				  only if
				  1) SmppBindType is TRANSCEIVER
				  2) SmppBindType is RECEIVER and
				  SmppSession.Type is SERVER
				  3) SmppBindType is TRANSMITTER and
				  SmppSession.Type is CLIENT

				  The new value takes effect immediately.

	smppencodingforgsm7 - Encoding Scheme at SMPP side for GSM7 encoding (DCS=0)
				  Possible values are <ServerDefault|Utf8|Unicode|Gsm7>
				  Default value is "ServerDefault" that means that a server level
				  Encoding Scheme will be used for this ESME.

	smppencodingforucs2 - Encoding Scheme at SMPP side for UCS2 encoding (DCS=8)
				  Possible values are <ServerDefault|Utf8|Unicode|Gsm7>
				  Default value is "ServerDefault" that means that a server level
				  Encoding Scheme will be used for this ESME.

	incomingdcsautodetect - if we set this parameter to true then for all incoming
	              messages DCS autodetection will be done. When all characters of
	              a message belongs to GSM7 character set then DCS is set to 0,
	              if not - to 8.
	              Default value is false, no auto detection is performed.

	detRule             - A name of a rule for DLR error code translation
	              "null" means that no rule is defined and no translation will
	              be done.

    ratelimit_second    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one second.

    				If the ESME sends more messages (per second)
    				than the maximum limit specified by 'ratelimit_second',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	ratelimit_minute    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one minute.

    				If the ESME sends more messages (per minute)
    				than the maximum limit specified by 'ratelimit_minute',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	ratelimit_hour    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one hour.

    				If the ESME sends more messages (per hour)
    				than the maximum limit specified by 'ratelimit_hour',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	ratelimit_day    - This parameter is used to specify a maximum limit
    				of messages that the SMPP Server will accept from this ESME
    				during any one day.

    				If the ESME sends more messages (per day)
    				than the maximum limit specified by 'ratelimit_day',
					these additional messages will be rejected by the
					SMPP Server along with an error code - "throttled".

					The default value for this parameter is "0" and it
					implies "no restrictions". If this parameter is not
					specified it implies "no restrictions".

	national-language-single-shift - National language single shift table can be
	                configured for messages that have come via SMPP (ESME) that
	                do not have UDHs inside and have GSM7 encoding (DCS==0). The
	                default GSM data coding table is mostly used. Possible values:
                       = 0  : default GSM data coding table
                       = 13 : urdu (arabic) national language shift table
                       = 1  : the national language locking shift value must be
                              obtained from the option national-language-single-shift
                              that is defined at SMPP Server general level.


	national-language-locking-shift - National language locking shift table can be
	                configured for messages that have come via SMPP (ESME) that
	                do not have UDHs inside and have GSM7 encoding (DCS==0). The
	                default GSM data coding table is mostly used. Possible values:
                       = 0  : default GSM data coding table
                       = 13 : urdu (arabic) national language shift table
                       = 1  : the national language locking shift value must be
                              obtained from the option national-language-locking-shift
                              that is defined at SMPP Server general level.

	min-message-length    - This paramter is used to specify the minimum
					message length (in characters) acceptable to
					the SMPP Server, for messages coming from this ESME.

					If an incoming message length is less than the
					min-message-length it will be rejected by SMPP Server.

					The default value for this parameter is "-1" and it
					implies "no limitations". Any other negative value
					also implies "no limitations".

	max-message-length    - This paramter is used to specify the maximum
					message length (in characters) acceptable to
					the SMPP Server, for messages coming from this ESME.

					If an incoming message length is more than the
					max-message-length it will be rejected by SMPP Server.

					The default value for this parameter is "-1" and it
					implies "no limitations". Any other negative value
					also implies "no limitations".

EXAMPLES
	smpp esme modify test password yyyy
6.2.2.2. Using GUI
Procedure: Modify an existing ESME using GUI
  1. In the GUI Management Console for SMPP Server, click on 'ESMEs' in the left panel.

  2. The main panel will display the existing ESMEs (if any), one each in a row with corresponding actions (start, stop, delete, update) for each row.

  3. You can update an existing by launching the 'ESME <name> properties' window by clicking on the blue coloured 'Update ESME' button. The 'ESME <name> properties' window will display all ESME paramters that can be updated by you. For more details of these parameters please refer to the descriptions of the CLI commands for the same in the preceding section.

    ESME can be setup for SSL so every connection request should first do SSL hand-shake. Settingup SSL is only possible from GUI. After creating the ESME, users can edit property and enable SSL.

    Only CLIENT ESME’s (one that sends BIND request) can be enabled for SSL.
  4. Update appropriate values for all the parameters and then click on the 'Close' button. This action will modify a new ESME with parameters as defined by you.

  5. If there is an error in defining the ESME, then you will find the details of the error in the Management Console Log section below.

6.2.3. View ESME Details

6.2.3.1. Using CLI

You can view the details of all or concrete configured ESMEs by issuing the command smpp esme show as described below.

Name
	smpp esme show

SYNOPSIS
	smpp esme show <esmeName>

PARAMETERS
	esmeName		- Name of the ESME to show.
	This parameter is optional. All ESMEs will be displayed in case of
	no esmeName is specified.

DESCRIPTION
	This command is used to list all configured ESMEs.
6.2.3.2. Using GUI
Procedure: View ESME using the GUI
  1. In the GUI Management Console for SMPP Server, click on 'ESMEs' in the left panel.

  2. The main panel will display the existing ESMEs (if any), one each in a row with corresponding actions (start, stop, delete) for each row.

  3. You can view the details of an ESME by clicking on the row corresponding to the ESME. All relevant details of the ESME will be displayed in an expanded format.

6.2.4. Delete an existing ESME

6.2.4.1. Using CLI

You can delete any ESME by issuing the command smpp esme delete with appropriate parameters as described below.

Name
	smpp esme delete

SYNOPSIS
	smpp esme delete <esmeName>

DESCRIPTION
	This command is used to delete an existing ESME.

PARAMETERS
	esmeName		- Name of the ESME to be destroyed.
6.2.4.2. Using GUI
Procedure: Delete ESME using the GUI
  1. In the GUI Management Console for SMPP Server, click on 'ESMEs' in the left panel.

  2. The main panel will display the existing ESMEs (if any), one each in a row with corresponding actions (start, stop, delete) for each row.

  3. To delete an existing ESME click on the delete icon marked 'x' in red, for the row corresponding to the ESME. You can delete an ESME only if it is stopped.

6.2.5. Start ESME

6.2.5.1. Using CLI

You can start an ESME by issuing the command smpp esme start with appropriate parameters as described below.

Name
	smpp esme start

SYNOPSIS
	smpp esme start <esmeName>

DESCRIPTION
	This command is used to start an existing ESME.

PARAMETERS
	esmeName		- Name of the ESME to be started.
6.2.5.2. Using GUI
Procedure: Start ESME using the GUI
  1. In the GUI Management Console for SMPP Server, click on 'ESMEs' in the left panel.

  2. The main panel will display the existing ESMEs (if any), one each in a row with corresponding actions (start, stop, delete) for each row.

  3. To start an existing ESME click on the start icon lit in green, for the row corresponding to the ESME. You can start an ESME only if it is currently stopped.

6.2.6. Stop ESME

6.2.6.1. Using CLI

You can stop an ESME by issuing the command smpp esme stop with appropriate parameters as described below.

Name
	smpp esme stop

SYNOPSIS

DESCRIPTION
	This command is used to stop an already running ESME.

PARAMETERS
	esmeName		- Name of the ESME to be stopped.
6.2.6.2. Using GUI
Procedure: Stop ESME using the GUI
  1. In the GUI Management Console for SMPP Server, click on 'ESMEs' in the left panel.

  2. The main panel will display the existing ESMEs (if any), one each in a row with corresponding actions (start, stop, delete) for each row.

  3. To stop an ESME click on the stop icon lit in red, for the row corresponding to the ESME. You can stop an ESME only if it is currently running.

6.2.7. Other ESME Operations

6.2.7.1. Using GUI

You can perform more operations in the GUI for any configured ESME. You can enable/disable Log Bytes and Log Pdu, dump window and reset counters.

Procedure: Other ESME Operations using the GUI
  1. In the GUI Management Console for SMPP Server, click on 'ESMEs' in the left panel.

  2. The main panel will display the existing ESMEs (if any), one each in a row with corresponding actions (start, stop, delete) for each row.

  3. You can view the details of an ESME by clicking on the row corresponding to the ESME. All relevant details of the ESME will be displayed in an expanded format.

  4. At the bottom of this expanded display you will find 6 buttons allowing you to perform the operations DisableLogBytes, DisableLogPdu, DumpWindow, EnableLogBytes, EnableLogPdu and ResetCounters.

Appendix A: Revision History