Professional Documents
Culture Documents
0
Operator Course
Exercises Book
Reference: exercises_MCO_3.0.docx
Version: 12
Status: ISSUED
Release Date: 25.06.2021
COMMERCIAL-IN-CONFIDENCE
MCO 3.0 Operator Course Exercises Book
Copyright © Mavenir 2021. All rights reserved. This document is protected by international copyright law and may not be reprinted,
reproduced, copied or utilised in whole or in part by any means including electronic, mechanical, or other means without the prior written
consent of Mavenir.
Whilst reasonable care has been taken by Mavenir to ensure the information contained herein is reasonably accurate, Mavenir shall not,
under any circumstances be liable for any loss or damage (direct or consequential) suffered by any party as a result of the contents of this
publication or the reliance of any party thereon or any inaccuracy or omission therein. The information in this document is therefore
provided on an “as is” basis without warranty and is subject to change without further notice and cannot be construed as a commitment
by Mavenir.
The products mentioned in this document are identified by the names, trademarks, service marks and logos of their respective companies
or organisations and may not be used in any advertising or publicity or in any other way whatsoever without the prior written consent of
those companies or organisations and Mavenir.
E & OE
Table of Contents
Table of Contents ............................................................................................................. 3
List of Figures 6
Document Version History ................................................................................................ 6
1. MCO Lab Overview .................................................................................................... 8
1.1. SMSC, Router, Firewall and IPSMGW - Different exercises for MCO roles ........................................... 8
1.2. SMSC, Router, Firewall - Lab layout and connections. .......................................................................... 8
1.3. IPSMGW - Lab layout and connections. ................................................................................................ 8
1.4. Web Browser and Guacamole - Training Lab Preferred Access from the Internet ............................... 9
1.5. SMSC, Router, Firewall - Emulators..................................................................................................... 12
1.6. Identifying windows ............................................................................................................................ 13
1.7. IPSMGW - Emulators ........................................................................................................................... 14
1.8. Getting familiar with VI editor ............................................................................................................ 16
List of Figures
Figure 1-1 MCO SMSC, Router and Firewall Training Laboratory Architecture ...................................................... 8
Figure 1-2 MCO IPSMGW Training Laboratory Architecture .................................................................................. 9
Figure 1-3 option 2a: IPSMGW Emulator scripts running in one window. ........................................................... 15
Figure 1-4 option 2b: IPSMGW Emulator scripts running on different windows. ................................................ 16
Figure 3-1 Call flow Store and Forward ................................................................................................................ 25
Figure 3-2 Call flow MO Proxy .............................................................................................................................. 26
Document control
Owner: Walter van den Barselaar Title: Trainer
Approved by: Title:
Approved by: Title:
Please only follow the roles that are covered in your MCO training course.
XMSBAF
IP: 172.21.12.6 MCO
IP: 172.21.12.7
MSC PC: 301 M3UA PC: 701
MSC SCTP port: 7777 SCA: 420111111111
SCTP port: 17024
XMS HTTPS port: 443 SMPP port: 9000, 9001
Figure 1-1 MCO SMSC, Router and Firewall Training Laboratory Architecture
XMSBAF
IP: 172.21.12.6
1.4. Web Browser and Guacamole - Training Lab Preferred Access from
the Internet
To access the training VMs from the internet, run Firefox or Chrome on your
computer. Internet Explorer may cause keyboard issues for some keys.
4. When the login is successful, you will see a windows desktop in your web browser.
5. Connect via Putty and SSH to the virtual machines:
You can copy/paste between your system and the Windows Desktop via the Guacamole side bar.
1. Press Ctrl-Alt-Shift to show the Guacamole side bar on the left side of
your Windows desktop in your web browser.
2. On your laptop, copy the XMS URL from the PDF version of this
document.
3. Now go back to your browser and paste the XMS URL in the Clipboard
box of the Guacamole side bar.
4. Press Ctrl-Alt-Shift again to hide the Guacamole side bar in your web
browser.
5. In the windows desktop inside your browser start Firefox and paste the
XMS URL into the address bar.
2. This opens a pull-down menu with the option to logout . This allows you to
resume your windows session later.
a. Tip: The pull-down menu also presents the option to disconnect
. This allows you to Reconnect. Use this to correct the screen
scaling of the Windows desktop. This is required when you change the size of your browser
window on your laptop. Otherwise, you will see black borders in the browser window on your
laptop.
3. When the training finishes, you may choose to Logout from the Windows desktop before logging out from
Guacamole.
baf> help
submit some message: submit [originator] [recipient] [text]
example: submit 1.1.111222333 1.1.444555666 test
note: parameters are optional. you can ommit them if you don't care
scenario example:
@set sri_err 27
submit
submit
@set sri_err 0
alert
SMPP> help
to connect: @ctrl tcp connect <ip> <port>
xmsbaf# ssh to the XMSBAF server using Putty or any other terminal
application and logged in as root user
MCO> cml
baf> start_baf_fr
smpp> start_smpp
1.6.2. IPSMGW
Prompt Command that you ran in that window
For convenience there is a sixth script that can start all simulators in one window.
1. First, connect via ssh to the XMSBAF server using Putty or any other Putty application:
IP address: 172.21.12.6
User/Password: root/root
2. Now we have two options: 2a and 2b from which you must choose. You cannot choose both
options!
a. In one window, run the script that starts all simulator scripts.
Putty window (1): xmsbaf# ./emu.sh
Figure 1-3 option 2a: IPSMGW Emulator scripts running in one window.
• Use your left mouse button to change keyboard focus from one simulator to the other.
In some cases you may lose the ability to change keyboard focus from one simulator to
the other.
In that case terminate all simulators type Control-a \ and confirm by typing y <enter>.
Now execute step 2a and changing focus using the mouse will work again.
b. Skip this item if you chose to execute option 2a!
As alternative option, in different windows, run the different simulator scripts. Use the
image (Figure 1-4) below as an example:
Putty window (1): xmsbaf# ./smsc.sh
Putty window (2): xmsbaf# ./hlr.sh
Putty window (3): xmsbaf# ./msc.sh
Putty window (4): xmsbaf# ./ims.sh
Putty window (5): xmsbaf# ./hss.sh
Figure 1-4 option 2b: IPSMGW Emulator scripts running on different windows.
3. After you ran the scripts, you can type help for more information about script usage.
If you are not familiar with the VI editor, use the link below and follow the first three topics:
http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Editors/ViIntro.html
• Exit CML:
MCO> .exit
• Show status:
MCO> monitor.processes.show
or
@m
• You do not have to type the complete command. Using the Tab key on your keyboard
you can have the command completed. When multiple commands share the same
characters, the screen will flash and/or a sound will play. In that case, when you press
the Tab key a second time, CML will show you all possibilities. The following sequence
will create the monitor.processes.show command. When you see [Tab] you should
press the Tab key on your keyboard (the key above the Caps Lock key).
m[Tab][Tab]o[Tab][Tab]n[Tab].[Tab][Tab]p[Tab].[Tab][Tab]sh[Tab]
• The command line interface keeps a history of the commands that you typed. You can
get to the command history by pressing <arrow-up> key on your keyboard. Pressing
<arrow-up> multiple times show you the older commands. You can ue press <arrow-
down> to go back to the more recent commands. Try it by pressing the <arrow-up> key
followed by the <enter> key. You will see that it repeats the monitor.processes.show
command from the previous exercise step:
<arrow-up><enter>
• Try with other classes, like sol, smpp, etc. Use the textbook or the Operator Manual
for reference.
• Disable logs:
MCO> .nolog
Now try the start command again and notice that no event logs are displayed.
MCO> monitor.processes.start instance=restgw-00
MCO> .log
MCO> monitor.processes.stop instance=restgw-00
• Audit-log checking:
MCO> audit.log.show count=10
See also /var/opt/mco/audit.log
MCO> #tail -19 /var/opt/mco/audit.log
2.3.1. Task
Backup MCO configuration to backup directory created in the mco user home directory.
2.3.2. Solution
As mco, create backup directory:
$ mkdir /home/mco/backup
$ /opt/mco/cluster/scripts/backup_config.sh /home/mco/backup
Note the default storage location for backups is a separate file system mounted on /backup.
2.4.1. Task
On mco system start the REST gateway and then using REST API accomplish following actions:
2.4.2. Solution
• Login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
• Show status:
$ curl -g -X GET "http://127.0.0.1:8080/v1/monitor/processes"
• Try with other classes, like sol, smpp, etc. Use the textbook or the Operator Manual
for reference.
$ vi /tmp/primary_routing_conf_rules.cnf
Type :q to exit the vi editor without making changes.
$ curl -g -X PUT "http://127.0.0.1:8080/v1/primary_routing_conf/rules/data" --data-binary @/tmp/primary_routing_conf_rules.cnf
3. SOL Exercises
3.1. SS7oIP configuration
3.1.1. Task
From CML verifying the SS7oIP configuration. Match the values you find in the configuration files with
the laboratory diagram in chapter 1 MCO Lab Overview.
3.1.2. Solution
From CML verifying the SS7oIP configuration. Match the values you find in the configuration files with
the laboratory diagram in chapter 1 MCO Lab Overview.
• Some files are defined per
• Login to MCO via ssh instance. For those files, the
IP address: 172.21.12.7 global file will be empty.
User/Password: mco/mco • Some files are defined only
• Open CML interface:
$ cml globally, so the instance file
• Check the Application Server Groups (ASG) configuration: will be empty.
MCO> ssp_conf.ssp_asg_enabled.get
MCO> ssp_conf.ssp_asg_enabled.get /class=sol /instance=sol-00
MCO> ssp_conf.ssp_asg_file.checkout /show
MCO> ssp_conf.ssp_asg_file.checkout /show /class=sol /instance=sol-00
3.2.1. Task
Check the SS7 AF configuration:
• default_network_domain
• network_domains
• conversion_profiles
• conversion rules of a conversion_profile
• default_conv_profile
• map_version_profiles
• map_version rules of a map_version_profile
3.2.2. Solution
• Check the SS7 AF configuration: The training lab does not
MCO> ss7_conf.default_network_domain.get
have any conversion profile
MCO> ss7_conf.network_domains.show
MCO> ss7_conf.conversion_profiles.show configured.
MCO> ss7_conf.conversion_profiles[<name>].conversion_rules.show
MOC> ss7_conf.default_conv_profile.get
MCO> ss7_conf.map_version_profiles.show
MCO> ss7_conf.map_version_profiles[mapVerProfile0].map_version_rules.show
3.3.1. Task
Check the SS7 linkset status:
• SCTP association
• Signalling gateway processes
3.3.2. Solution
• Check the SS7 linkset status:
MCO> ssp.assoc_stat.show
MCO> ssp.sgp_stat.show
3.4.1. Task
• De-activate the association between MCO node and SGP-0.
• Restart SOL on MCO node and see that the association is always established after
restart.
The IPSMGW training lab has
3.4.2. Solution SGP-MSC and SGP-HLR
instead of SPG-0 configured.
• De-activate the association between MCO node and SGP-0:
MCO> ssp.sgp_stat.show
MCO> ssp.assoc_link.disable name=SGP-0 /instance=sol-00
MCO> ssp.sgp_stat.show
• Restart SOL on MCO node and see that the association is always established after
restart:
MCO> monitor.processes.restart instance=sol-00
MCO> ssp.sgp_stat.show
3.5.1. Task
• Verify MO Router configuration to route a MO-SM (MO-FW-SM MAP operation) to a
desired SMSC (profiles, destination table).
3.5.2. Solution
• Verify MO Router configuration to route a MO-SM (MO-FW-SM MAP operation) to a
desired SMSC:
MCO> mortr_conf.profiles.show
+=====================================================+
|name |primary |backup |
+-----------------+-----------------+-----------------+
|SIP_SMSC |SIP_SMSC_P | |
+=====================================================+
[MNGR] registered modules: 0340 24.011 amqp camel cmd diameter dns gti gtp ifx
kafka latency ldap m2pa m3ua map map_ansi mtp2 mtp3 null pcap sccp sctp sctp2
sip smpp tcap tcap_ansi tcap_trx tcp tcp_old telesvc ucp udp x0340
type help to get help
HH:MM:SS.XXXXXX|INFO| sctp| listening on port 7777
HH:MM:SS.XXXXXX|INFO| sctp| new connection from 172.21.12.7:17024
HH:MM:SS.XXXXXX|INFO| m3ua| ASP UP
HH:MM:SS.XXXXXX|INFO| m3ua| ASP ACTIVE
HH:MM:SS.XXXXXX|INFO| m3ua| rc=7024
baf>
The BAF tool emulates the GSM MSC and HLR. It connects to the MCO with SCTP
and M3UA.
In CML you now see events that show that the association is established.
| INFO | ssp.ASSOCI_UP | MMM DD HH:MM:SS XX | sol:sol-00.XXXX | SSP:
Association (0) established for SGP-0 (0) |
| INFO | ssp.SGP_RK | MMM DD HH:MM:SS XX | sol:sol-00. XXXX |
State: Inactive, correlation: SGP_RK, info: SGP-0 (0) is waiting for activation
for RK-ITU (0) |
| INFO | ssp.SGP_ASP | MMM DD HH:MM:SS XX | sol:sol-00. XXXX |
State: Up, correlation: SGP_ASP, info: ASP is up for SGP-0 (0) |
| INFO | ssp.SGP_RK | MMM DD HH:MM:SS XX | sol:sol-00. XXXX |
State: Active, correlation: SGP_RK, info: SGP-0 (0) is active for RK-ITU (0) |
| INFO | class_sol.SS7_STATE | MMM DD HH:MM:SS XX | sol:sol-00. XXXX |
Instance state ssp.0 changed from ACTIVATED to ACTIVE |
• Now you can simulate GSM traffic on the MCO. The command submit will cause BAF
to originate a MO_FW_SM from MSC towards the MCO in Store & Forward message
mode.
baf> submit
------------------------------------------------------------------------
HH:MM:SS |S| Map.op: mofwsm ; 0340.op: submit
originator: 1.1.420111222333
recipient: 1.1.420444222333
text(ud): test text
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = mo-resp
sccp.cgpa= NI:INT RI:GT GTI:4 PC:701 SSN:8 TT:0 NPI:1 ES:2 NAI:4
ADDR:3110000008
sccp.cdpa= NI:INT RI:GT GTI:4 PC:301 SSN:8 TT:0 NPI:1 ES:2 NAI:4
ADDR:3112345678
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = sri
sccp.cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
sccp.cdpa= NI:INT RI:GT GTI:4 PC:- SSN:6 TT:0 NPI:1 ES:2 NAI:4
ADDR:420444222333
map.msisdn=1.1.420444222333
------------------------------------------------------------------------
HH:MM:SS |S| SRI-SM response
map.op: sri-resp
map.nnn: 1.1.420999888777 map.imsi: 204691234567
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = mtfwsm
sccp.cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
sccp.cdpa= NI:INT RI:GT GTI:4 PC:- SSN:8 TT:0 NPI:1 ES:2 NAI:4
ADDR:420999888777
map.imsi= 204691234567
map.sca= 1.1.420111111111
map.smrpui=040C9124101122323300001210625104004009F4F29C0EA297F174
0340.TPDU = mtfwsm
------------------------------------------------------------------------
HH:MM:SS |S| MT-FWSM response tcap.error: 0
*************************
** incoming MT details **
*************************
oa = 1.1.420111222333
pid=0 dcs=0 udl=9
ud = test text
• Now send another message and provide arguments to submit to specify an originator
address, recipient address and message text. Use the help command to learn which
syntax to use.
baf> help
3.7.1. Task
• Set the correct message mode for MO Proxy call flow.
• Activate the new configuration.
• Submit a message from baf and you will see that the message is forwarded as
MOFWSM.
• Change back the configuration for the next exercise.
• Activate the new configuration.
3.7.2. Solution
• To set the correct call flow the MO_PROXY message mode must be set:
MCO ifxb_conf.rules.checkout /edit
--
! operations from network Insert hash # to comment out the rule
#Rule_set MO_FWSM_IND { Rule MO_IND Actions SEND_IFX_TRIGGER(SF) }
…
• Submit a message and you will see that the message is forwarded as MOFWSM.
baf> submit
------------------------------------------------------------------------
HH:MM:SS |S| Map.op: mofwsm ; 0340.op: submit
originator: 1.1.420111222333
recipient: 1.1.420444222333
text(ud): test text
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = mofwsm
sccp.cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
sccp.cdpa= NI:INT RI:GT GTI:4 PC:- SSN:8 TT:1 NPI:1 ES:2 NAI:4 ADDR:3110000008
map.msisdn=1.1.420111222333
map.sca= 1.1.420111111111
map.smrpui=01000C91244044223233000009F4F29C0EA297F174
------------------------------------------------------------------------
HH:MM:SS |S| MO-FWSM response
da = 1.1.420444222333
pid=0 dcs=0 udl=9
ud = test text
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = mo-resp
sccp.cgpa= NI:INT RI:GT GTI:4 PC:301 SSN:8 TT:0 NPI:1 ES:2 NAI:4
ADDR:3112345678
sccp.cdpa= NI:INT RI:GT GTI:4 PC:301 SSN:8 TT:0 NPI:1 ES:2 NAI:4
ADDR:3112345678
4.1.1. Task
• From CML verify the primary routing rules.
4.1.2. Solution
• Login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
• Open CML interface:
$ cml
• Verify the routing rules:
MCO> primary_routing_conf.rules.checkout /show
4.2.1. Task
• From CML verify Backup Routing rules.
4.2.2. Solution
• From CML verify Backup Routing rules.:
MCO> backup_routing_conf.rules.checkout /show
Rule_set IPSMGW
{
Rule FALLBACK
Conditions B_NETWORK_TYPE eq GSMoIP
Actions SET_DEST_PLMN(GSM)
}
Eval_on BACKUP_ROUTING { IPSMGW }
4.3.1. Task
• From CML check existing ESMEs.
• Activate hint mode in CML.
• Add new ESME:
o Name: SMPP_TRAIN
o Password: pooky
o Type: SALA
o Mode: normal
o LA number:1234
4.3.2. Solution
• Login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
• Open CML interface:
$ cml
• Next exercise is to configure a new LA. First check the ESMEs that already exist and
then create a new one:
MCO> smpp_gw_conf.esmes.show
>> / smpp_gw_conf.esmes.show :
+================================================================================================+=====
|name |password |type |mode |remote_smsc |lasn | ...
+---------------------------------+-----------+------+-----------+-------------------------+-----+-----
|SMPP_TEST |pooky |sala |normal | |910 | ...
+================================================================================================+=====
MCO> .hint
Cparam activation hints enabled.
Note: For the configuration change to take effect, you need to perform the
following activation steps.
Activation steps: Reopen the affected connection. If the connection is used in
SET_DEST_LA command, restart SLC.
Note: The SMPP_TRAIN application does not connect to MCO now. In this case you are
not required to take action to have the configuration change to take effect.
Reopen the connection can be done like this:
MCO> smpp_gw.sessions.close esme=SMPP_TRAIN
4.4. SMSC - Testing the Delivery Layer - AOMT (A2P), Store, Retry, Alerts
• Be sure that your CML (Putty window 1) is running. If not, start it:
Start a new Putty window and login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
Open CML interface:
Putty window (1): $ cml
• Be sure that your BAF GSM tool (Putty window 2) is running. If not, start it:
Start a new Putty window and login to XMSBAF via ssh
IP address: 172.21.12.6
User/Password: root/root
Start BAF GSM:
Putty window (2): xmsbaf# cd baf
[MNGR] registered modules: 0340 24.011 amqp camel cmd diameter dns gti gtp ifx
kafka latency ldap m2pa m3ua map map_ansi mtp2 mtp3 null pcap sccp sctp sctp2
sip smpp tcap tcap_ansi tcap_trx tcp tcp_old telesvc ucp udp x0340
HH:MM:SS.XXXXXX|INFO| tcp2| Established connection to 172.21.12.7:9000
SMPP>
The BAF tool now emulates a SMPP ESME (large account). It connects to the MCO
with TCP.
To open the SMPP session we need to send an SMPP Bind towards the MCO. The
command bind will cause BAF to send a SMPP Bind for the existing SMPP_TEST
towards the MCO in transceiver mode.
• Now you can simulate SMPP traffic on the MCO. The command submit will cause BAF
to originate a SUBMIT_SM towards MCO.
SMPP>
(Putty window 2)
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = sri
sccp.cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
sccp.cdpa= NI:INT RI:GT GTI:4 PC:- SSN:6 TT:0 NPI:1 ES:1 NAI:4 ADDR:777666555
map.msisdn=1.1.777666555
------------------------------------------------------------------------
HH:MM:SS |S| SRI-SM response
map.op: sri-resp
map.nnn: 1.1.420999888777 map.imsi: 204691234567
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = mtfwsm
sccp.cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
sccp.cdpa= NI:INT RI:GT GTI:4 PC:- SSN:8 TT:0 NPI:1 ES:2 NAI:4 ADDR:420999888777
map.imsi= 204691234567
map.sca= 1.1.1234567890
map.smrpui=24099133434455F50000121062611411400CEEB09E1C9683C4617D580E
0340.TPDU = mtfwsm
------------------------------------------------------------------------
HH:MM:SS |S| MT-FWSM response tcap.error: 0
*************************
** incoming MT details **
*************************
oa = 1.1.333444555
pid=0 dcs=0 udl=12
ud = nazdar bazar
• If you want to have your messages stored, stop the GSM BAF by pressing <control-c>:
Putty window (2): baf> ^C
xmsbaf#
• Send a new SMPP SUBMIT_SM using the submit command in the SMPP BAF
session.
Putty window (3): SMPP> submit
HH:MM:SS |S| Submit src:1.1.333444555 dst:1.1.777666555 text:nazdar
bazar
HH:MM:SS |R| Submit_resp status:0x0 [Ok]
message_id:74EC7B917196E761831E00000000730B
You may want to use the /wide option to see all columns.
With the command .nolog you can suppress the events regarding the association being
down.
[MNGR] registered modules: 0340 24.011 amqp camel cmd diameter dns gti gtp ifx
kafka latency ldap m2pa m3ua map map_ansi mtp2 mtp3 null pcap sccp sctp sctp2
sip smpp tcap tcap_ansi tcap_trx tcp tcp_old telesvc ucp udp x0340
type help to get help
HH:MM:SS.XXXXXX|INFO| sctp| listening on port 7777
HH:MM:SS.XXXXXX|INFO| sctp| new connection from 172.21.12.7:17024
HH:MM:SS.XXXXXX|INFO| m3ua| ASP UP
HH:MM:SS.XXXXXX|INFO| m3ua| ASP ACTIVE
HH:MM:SS.XXXXXX|INFO| m3ua| rc=7024
• Send an alert to the MCO to trigger the retry of the delivery to the mobile:
*************************
** incoming MT details **
*************************
oa = 1.1.333444555
pid=0 dcs=0 udl=12
ud = nazdar bazar
(Putty window 3)
SMPP>
HH:MM:SS |R| Deliver src:1.1.777666555 dst:1.1.333444555
text:id:E6BB8A31F05FEB61947400000000F007 sub:001 dlvrd:001 submit date:2101261704
done date:2101261704 stat:DELIVRD err:000 text:nazdar bazar
HH:MM:SS |S| Deliver_resp status:0x0 [Ok]
4.5.1. Task
Route traffic from SMPP_TRAIN ESME to SMPP_TEST ESME
Hint:
Putty window (4): SMPP_TRAIN> submit 1.1.910
4.5.2. Solution
• Login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
• Open CML interface:
$ cml
• If you want to send messages from a LA to another LA (A2A or Application to
Application), first we have to understand how MCO is routing messages. Verify the
routing rules:
MCO> primary_routing_conf.rules.checkout /show
Rule_set LASN
{
Rule LA_ROUTING
Conditions B_AIM_NAME not present,
ADDR_LENGTH(B_ADDR) ge 3,
ADDR_LENGTH(B_ADDR) le 6
Actions APPLY_LASN This rule routes
}
Rule_set RARR messages to LA
{
Rule RANGE_ROUTING
Conditions B_AIM_NAME not present,
ADDR_LENGTH(B_ADDR) ge 3,
ADDR_LENGTH(B_ADDR) le 6
Actions APPLY_RARR
}
Rule_set DEFAULT This rule routes
{
Rule DEFAULT messages to GSM
Conditions B_AIM_NAME not present
Actions SET_DEST_PLMN(GSM)
}
Eval_on PRIMARY_ROUTING { LASN, RARR, DEFAULT }
• Make sure that the two ESMEs SMPP_TEST and SMPP_TRAIN that you created in
the previous exercise exist:
MCO> smpp_gw_conf.esmes.show
>> / smpp_gw_conf.esmes.show :
+=========================================================================+=====
|name |password |type |mode |remote_smsc |lasn | ...
+-----------+-----------+------+-----------+------------------------+-----+-----
|SMPP_TEST |pooky |sala |normal | |910 | ...
|SMPP_TRAIN |pooky |sala |normal | |1234 | ...
+=========================================================================+=====
• Keep CML (Putty 1), the GSM BAF tool (Putty 2) and the SMPP BAF tool (Putty 3)
open, start a new Putty window (Putty 4) and ssh to the BAF server server (root/root):
Putty window (4): xmsbaf# cd baf
Putty window (4): xmsbaf# ./start_smpp
Putty window (4): SMPP> @ctrl cmd set_prompt SMPP_TRAIN
Putty window (4): SMPP_TRAIN> @set system_id SMPP_TRAIN
Putty window (4): SMPP_TRAIN> bind
4.6.1. Task
• Verify the retry schemes using CML.
• Check the levels for a retry scheme of your choice.
• Check retry profiles.
•
4.6.2. Solution
• The retry mechanism consists of retry schemes and retry profiles. Verify the retry schemes by CML:
MCO> scheduler_conf.retry_schemes.show
>> / scheduler_conf.retry_schemes.show :
+=====================================================================================+
|# |id |description |levels |priority |
+---+-------------------------+-------------------------------------+-------+---------+
| 0 |SCHEME_T_DEFAULT |Default retry scheme |... |1 |
| 1 |SCHEME_P_PERMANENT_ERROR |Default handling of permanent errors |... |0 |
| 2 |SCHEME_T_BARRED |Default handling for T_BARRED |... |1 |
....
....
|19 |SCHEME_P_APP_NW_PERM |Default handling for P_APP_NW_PERM |... |0 |
|20 |SCHEME_T_V5_DEFAULT |Temporary error - retry the queue |... |0 |
+=====================================================================================+
• The Levels sub-table describes associated retry actions. Check the levels for a specific retry scheme:
MCO> scheduler_conf.retry_schemes[SCHEME_T_SYSTEM].levels.show
>> / scheduler_conf.retry_schemes[SCHEME_T_SYSTEM].levels.show :
+==========================================+
|# |level |period |attempts |action |
+--+---------+---------+---------+---------+
|0 |1 |5m |1 |retry |
|1 |2 |15m |1 |retry |
|2 |3 |1h |72 |retry |
|3 |4 |6h |0 |retry |
+==========================================+
• A retry profile determines mapping of an error code (resulting from an outgoing attempt) to a retry
scheme:
MCO> scheduler_conf.retry_profiles.show
>> / scheduler_conf.retry_profiles.show :
+=======================================================================================================+
|# |id |description |priority |busy_sme_timeout |retry_new_msg |status_map |error_map |
+--+---+------------------------------+---------+-----------------+--------------+-----------+----------+
|0 |0 |Default retry profile 0 |0 |85 |yes |... |... |
|1 |1 |SMSC V5 similar retry profile |0 |85 |yes |... |... |
+=======================================================================================================+
MCO> scheduler_conf.retry_profiles[0].error_map.show
>> / scheduler_conf.retry_profiles[0].error_map.show :
+==============================================+
|# |error |scheme |
+----+---------------+-------------------------+
| 0 |P_UNKNOWN |BY_STATUS |
| 1 |P_GPRS_UNKNOWN |BY_STATUS |
| 2 |T_UNIDENTIFIED |SCHEME_T_ABSENT_DETACHED |
....
....
|179 |L_NO_RECEIVER |SCHEME_L_NO_RECEIVER |
|180 |L_NO_AIM |SCHEME_L_NO_AIM |
+==============================================+
4.9.1. Task
• Start Remote SMSC simulator
• Configure Remote SMSC.
• Send MO traffic to Remote SMSC.
• Send AO traffic to Remote SMSC.
• Send MT traffic from Remote SMSC.
• Investigate available counters.
• Investigate SDRs
4.9.2. Solution
• Keep CML (Putty 1), the GSM BAF tool (Putty 2) and the SMPP BAF tool (Putty 3) open, start a new
Putty window (Putty 4) and use ssh to connect to the BAF server (root/root). Start the SMPP SMSC
simulator:
Putty window (4):
xmsbaf# cd baf
xmsbaf# cp -p start_smpp start_smpps
xmsbaf# vi start_smpps
LD_LIBRARY_PATH=/root/baf /root/baf/baf /root/baf/scripts/smpps.lua
:wq
xmsbaf# ./start_smpps
baf> @ctrl cmd set_prompt SMSC1
SMSC1>
The SMPP SMSC simulator does not show received SMPP messages in detail.
Optional, you can enable verbose output:
SMSC1> @set verbose 1
Note that the exercise example output below does not contain this verbose output.
*************************
** incoming MT details **
*************************
oa = 1.1.333444555
pid=0 dcs=0 udl=12
ud = nazdar bazar
• To see statistics for all ISR LAs, use the following command:
MCO> smpp_gw.esmes.show mode=ISR
>> smpp/smpp-00 smpp_gw.esmes.show :
+======================================================================================+====
|esme |mode |sessions_used |req_in |req_out |bind_tx_used |bind_rx_used |bind_trx_used |...
+-----+-----+--------------+-------+--------+-------------+-------------+--------------+----
• After you performed Exercise 5.1, repeat sending ISR traffic and investigate the SDRs. Look for the
infoISR flag in the MSG_FLAGS field.
4.9.3. Task
• Make(break) Remote SMSC simulator stop sending Delivery Reports back to MCO.
• Send AO traffic to Remote SMSC.
• Confirm that MCO is waiting for the Delivery Report from the Remote SMSC
4.9.4. Solution
• Keep CML (Putty 1), the GSM BAF tool (Putty 2), the SMPP BAF tool (Putty 3) and the SMPP SMSC
BAF tool (Putty 4) open.
• Change the SMPP SMSC simulator script by commenting out sending the delivery report.
Putty window (4):
SMSC1> ^C
xmsbaf# vi /root/baf/scripts/smpps.lua
-- if m:get_param('smpp.reg') == '1' then
-- delivery_receipt(m)
-- end
:wq
xmsbaf# ./start_smpps
baf> @ctrl cmd set_prompt SMSC1
SMSC1>
• Send AO traffic to Remote SMSC and notice that no delivery report gets delivered.
Putty window (3)
SMPP> submit 1.1.200
HH:MM:SS |S| Submit src:1.1.333444555 dst:1.1.200 text:nazdar bazar
HH:MM:SS |R| Submit_resp status:0x0 [Ok] message_id:AEAAECE638D5EB619FD500000000CE13
• Look in the message store and confirm that MCO waits for the delivery response from ISR1.
Putty window (1)
MCO> fms.msg.show recip=1.1.200 /wide
>> kernel/kernel-00 fms.msg.show :
==============<table item>================
id: xxxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxxxxx
orig: 1.1.333444555
recip: 1.1.200
sme: 1.1.200
dst_aim: ISR1
submit_time: YYYY-MM-DD HH:MM:SS.000+0200
scheduled_time: never
expiry_time: YYYY-MM-DD HH:MM:SS.000+0200
last_delivery_time: YYYY-MM-DD HH:MM:SS.000+0200
final_time: never
priority: 0
importance: 0
text: ***
content: ***
udh: ***
suspend_time: never
nr_suspended: 0
await_receipt: yes
isr_id: 012345
5. SLC Exercises
5.1. SMSC, IPSMGW - SDR Function
SLC applies on each message a (per-message) configurable sequence of functions. SDR function is used
to create SDR records. It is always executed as the last one in the sequence (even if the message is
blocked) and cannot be disabled.
5.1.1. Task
• Find out which current SDR streams are enabled using CML.
• Show the current state of the CSV_SM SDR stream.
• Enable the CSV_SM SDR stream.
• Modify SDR RBDL rules to create SDR files for CSV_SM stream and activate the new
configuration.
• Submit a SMS and check the results.
• Check if the created SDR files are stored on the disk.
• Inspect the content of a stored SDR file.
• Decode a stored SDR file using csv_decode.py script.
• Check the statistics of the sdr application function.
5.1.2. Solution
• Login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
• Open CML interface:
$ cml
• View the current SLC SDR streams configuration to see which streams are enabled:
MCO> sdr_conf.streams#avro.show
• Modify and save the SDR RBDL: Insert exclamation mark ! to comment out the
MCO> sdr_conf.rules.checkout /edit
action PASS_ON
Rule_set DO_SM_SDR
{
Rule SM_SDR
! Actions PASS_ON
Remove ! to uncomment the
Actions CREATE_SDR(CSV_SM) action CREATE_SDR
}
MCO> sdr.config.reload
| INFO | mco.AF_RELOAD_OK | MMM DD HH:MM:SS XX | slc:slc-
00.XXXX | SDR AF has been reloaded successfully |
MCO> sdr.config.reload>> slc/slc-00 sdr.config.reload :
OK
• On MCO node, quit CML and check the results on the recently created SDR file:
MCO> .exit
[mco@mco1:~]$ ls -la /sdr/*.curr
-rw-rw-rw-. 1 mco mco 5321 MMM DD HH:MM /sdr/CSVSM_mco1.localdomain_<file_creation_time>.csv.curr
STAT_DATA(): N/A
A_LAI(): N/A
PARENT_MSG_STATUS(): N/A
SYSTEM_NAME(): MCO-SMSC-A
================== /sdr/CSVSM_mco1.localdomain_<file_creation_time>.csv.curr -
END - ====================
MCO> @sdr.oam
>> slc/slc-00 sdr.asn_records_total.get = 0
>> slc/slc-00 sdr.csv_records_total.get = 4
....
....
>> slc/slc-00 sdr.rules.show :
+======================================+=====
|stage |rule_set |rule |applied | ...
+----------+----------+-------+--------+-----
|IN_SEG |DO_SM_SDR |SM_SDR |1 | ...
|IN_MSG |DO_SM_SDR |SM_SDR |1 | ...
|IN_MSG |DO_BT_SDR |SM_SDR |1 | ...
....
....
|FINAL_SEG |DO_SM_SDR |SM_SDR |1 | ...
|FINAL_MSG |DO_SM_SDR |SM_SDR |1 | ...
|FINAL_MSG |DO_BT_SDR |SM_SDR |1 | ...
....
....
+======================================+=====
>> slc/slc-00 sdr.stats.extended_show :
+==========================================================================================================+=====
|name |records |records_buff |records_failed |records_total |files |open_time |status | ...
+-------+--------+-------------+---------------+--------------+------+-----------------------------+-------+-----
|CSV_SM |4 |0 |0 |4 |1 |YYYY-MM-DD HH:MM:SS.XXX+TTTT |UP | ...
+==========================================================================================================+=====
IPSMGW
In the IPSMGW lab you do not see 4 SDRs (records) but 6 SDRs in the statistics for
the CSV_SM stream.
After you completed or repeated another exercise, please try to map the generated SDRs with the use
case of that exercise.
In case of exercise 6, please try to find the messages where the blocking profile changed the sequence
of the message (the blocking profile rejected the message).
The square around the pencil will turn red when edit mode is enabled.
To switch to the MCO application menu, click on the MCO application in the navigation bar.
To switch to the Selector page, click on the Selectors page item in the navigation bar.
To create a new selector, click on the + Add selector button on the top right corner of the work area.
To name the new selector, in the right bar click in the Name field and type SMPP_TEST. To describe the
new selector, click in the Description field and type Selects SMPP_TEST originating traffic. To add the
selector's condition, press the + Append condition button.
To select traffic originating from the SMPP_TEST large account, for the condition, choose A_AIM_NAME
from the pull-down menu. For the value, type SMPP_TEST.
To switch to the Antiflood page, click on the Antiflood page item in the navigation bar.
To enable the Antiflood feature, press the ON button in the top right corner of the main area.
To confirm enabling the Antiflood feature, press the Continue button in the pop-up window in the main
area.
To create a new antiflood profile, press the + Add profile button in the main area.
To name the new profile, type SHAPE in the Name field in the right bar. To create the new profile, press
the Add Profile button in the right bar.
To apply the Antiflood profile on traffic that originates from the SMPP_TEST large account, in the
Selectors table, press the Apply checkbox on the right side of the SMPP_TEST selector. To let the
selector ignore traffic that does not originate from the SMPP_TEST large account, press the SKIP button
right to the label Fallback action: in the right bar.
To reject traffic that fails to pass the rate profile, press the REJECT button in the Block method section.
To be able to configure profile parameters, click on the > symbol in front of Profile settings to reveal the
settings.
To allow 5 message submissions in 1 minute, type in the Limit field the value 5, msg per to 1, the unit to
minutes and Burst to 5.
To be able to fingerprint profile parameters, click on the > symbol in front of Fingerprints to reveal the
settings.
baf>
map operation = sri
cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
cdpa= NI:INT RI:GT GTI:4 PC:- SSN:6 TT:0 NPI:1 ES:1 NAI:4 ADDR:777666555
msisdn=1.1.777666555
map operation = mtfwsm
cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
cdpa= NI:INT RI:GT GTI:4 PC:- SSN:8 TT:0 NPI:1 ES:2 NAI:4 ADDR:420999888777
imsi= 123456766666
sca= 1.1.1234567890
smrpui=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
TPDU = deliver
oa = 1.1.333444555
pid=0 dcs=0 udl=12
ud = nazdar bazar
• Submit 1 more message. Now the submission fails and no SRI and MTFWM is
received.
SMPP> submit
HH:MM:SS |S| Submit src:1.1.333444555 dst:1.1.777666555 text:nazdar
bazar
HH:MM:SS |R| Submit_resp status:0x45 [Unknown status]
The other graphs in the main area show msgs/sec. When you send more messages quickly after each
other (type quickly arrow up and enter multiple times), these graphs will also show a spike.
6.4.1. Task
• Configure MCO to block messages exceeding the maximum allowed number of
submitted messages (1 message per 60 seconds, for simulation reason).
6.4.2. Solution
• Login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
• Open CML interface:
$ cml
• Configure the rules to block messages exceeding the maximum allowed number of
submitted messages (1 message per 60 seconds, for simulation reason). Enable the
Antiflood feature and add new simple rate profile as the following example:
MCO> afl_conf.enabled.set value=yes
>> / afl_conf.enabled.set :
OK
MCO> afl_conf.simple_rate_profiles.show
>> / afl_conf.simple_rate_profiles.show :
+==========================================================================+
|name |active |fingerprint |rate |time |burst |
+---------------------+-------+------------+---------+-----------+---------+
|FAIR_USE |yes |${A_ADDR} |10 |900 |5 |
+==========================================================================+
Rule_set SHAPE_CLI_AFTER
{
Rule SHAPE_BLOCK
Conditions BLACKLISTED(SHAPE_CLI) eq TRUE
• Modify the FAIR_USE blocking profile from detect to reject messages above the
allowed limit:
MCO> rbdl_conf.block_profiles.modify name=FAIR_USE method=reject
MCO> afl.config.reload
| INFO | mco.AF_RELOAD_OK | MMM DD HH:MM:SS XX | slc:slc-
00.XXXX | AFL AF has been reloaded successfully |
MCO> afl.config.reload>> slc/slc-00 afl.config.reload :
OK
baf>
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = sri
sccp.cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
sccp.cdpa= NI:INT RI:GT GTI:4 PC:- SSN:6 TT:0 NPI:1 ES:1 NAI:4
ADDR:777666555
map.msisdn=1.1.777666555
------------------------------------------------------------------------
HH:MM:SS |S| SRI-SM response
map.op: sri-resp
map.nnn: 1.1.420999888777 map.imsi: 204691234567
------------------------------------------------------------------------
HH:MM:SS |R| Map.op = mtfwsm
sccp.cgpa= NI:INT RI:SSN GTI:0 PC:701 SSN:8 TT:- NPI:- ES:- NAI:- ADDR:-
sccp.cdpa= NI:INT RI:GT GTI:4 PC:- SSN:8 TT:0 NPI:1 ES:2 NAI:4
ADDR:420999888777
map.imsi= 204691234567
map.sca= 1.1.1234567890
map.smrpui=24099133434455F50000123052616371400CEEB09E1C9683C4617D580E
0340.TPDU = mtfwsm
------------------------------------------------------------------------
HH:MM:SS |S| MT-FWSM response tcap.error: 0
*************************
** incoming MT details **
*************************
oa = 1.1.333444555
pid=0 dcs=0 udl=12
• Submit 1 more message. Now the submission fails and no SRI and MTFWM is
received.
SMPP> submit
HH:MM:SS |S| Submit src:1.1.333444555 dst:1.1.777666555 text:nazdar
bazar
HH:MM:SS |R| Submit_resp status:0x45 [Unknown status]
6.6.1. Task
• Check the Antiflood MCO counters
6.6.2. Solution
• Check the antiflood MCO counters.
MCO> @afl.oam
>> slc/slc-00 afl.req_block.get = 2
....
....
>> slc/slc-00 afl.req_block_reject.get = 1
.....
.....
>> slc/slc-00 afl.stats.show :
+===========================================================================+
|name |applied |blacklisted |det_per_sec |susp_per_sec |bl_per_sec |
+----------+--------+-------------+-------------+-------------+-------------+
|FAIR_USE |2 |0 |0 |0 |0 |
|SHAPE_CLI |2 |1 |0 |0 |0 |
+===========================================================================+
Choose between third party registration database (REDIS, HSS) for PAG:
MCO> diam_gw_conf.orig_host.get
MCO> diam_gw_conf.orig_realm.get
MCO> diam_gw_conf.channels[HSS_CHANNEL].connections.show
Please see exercise 9.3 Capturing network traffic for more instructions how to analyse traces with
Wireshark.
The xmsbaf server also has tshark tool installed, for local trace, without the need to retrieve the file
from the server. It can be useful for simple analysis. For example, you can try:
Next to the network traces, you may also want to evaluate the SDRs. If you skipped the SDR Function
exercise, you need to execute it first to enable SDR generation.
8.1. MO SIP
In this exercise, you will simulate messages originated from SIP (IMS domain) to the SMSC (GSM).
smsc>
HH:MM:SS |R| MO msisdn=1.1.703222444 sca=1.1.701222222
HH:MM:SS |S| MO-resp
yes
Notice that the MCO acts as SMSC and IP-SM-GW in this exercise.
msc> mo 1.1.703012345
msc> mo 1.1.703012345
HH:MM:SS |S| MO oa=1.1.703111222 da=1.1.703012345
HH:MM:SS |R| MO-resp
hss>
HH:MM:SS |R| User-Data-Request
public identity=sip:703012345@localdomain;user=phone
ims>
HH:MM:SS |R| RP-DATA MESSAGE
HH:MM:SS |S| SIP_RESP MESSAGE 200 OK
HH:MM:SS |S| RP-ACK MESSAGE
HH:MM:SS |R| SIP_RESP MESSAGE 202 Accepted
What kind of request the HSS received? What was the response for that request?
HSS received a User-Data-Request for a public identity. It responded with the S-CSCF name of the IMS
emulator and user state as online.
8.3. MO GSM – MT SIP with fall back to GSM (Fail: SIP user not registered)
You will simulate messages submit from the GSM domain to a SIP user (which is not registered to IMS).
In this case, based on the current MCO configuration, MT messages are delivered to GSM instead.
msc> mo 1.1.703012345
msc> mo 1.1.703012345
HH:MM:SS |S| MO oa=1.1.703111222 da=1.1.703012345
HH:MM:SS |R| MO-resp
HH:MM:SS |R| MT imsi=7777703012345 sca=1.1.700123456
HH:MM:SS |S| MT-resp
hlr>
HH:MM:SS |R| SRI msisdn=1.1.703012345
HH:MM:SS |S| SRI-resp imsi=7777703012345 nnn=1.1.702000002
ims>
Note that if you already sent an mo earlier, the MCO may use its SRI cache and will not send an SRI to
the HLR again. If you want to see the SRI sent, try with another MSISDN like mo 1.1.7036543210.
What kind of request HSS received? What was the response for that request?
HSS received a User-Data-Request for a public identity. It responded with the user state as offline.
Did the SIP user receive the SM? If not, did the GSM user receive the message?
No, the SIP user did not get the SM. Instead, the GSM user received the message.
8.4. MT GSM from SMSC to SIP User with fall back to GSM (Fail: SIP user not
registered)
In the previous exercise, you have sent a MO SMS from GSM. In the next exercise, you will originate a
MT SMS from the SMSC to a SIP user that is not registered on the IMS.
msc>
HH:MM:SS |R| MT imsi=7777703111222 sca=1.1.701222222
HH:MM:SS |S| MT-resp
hlr>
HH:MM:SS |R| SRI msisdn=1.1.703111222
HH:MM:SS |S| SRI-resp imsi=7777703111222 nnn=1.1.702000002
hss>
HH:MM:SS |R| User-Data-Request
public identity=sip:703111222@localdomain;user=phone
ims>
What kind of request HSS received? What was the response for that request?
HSS received a User-Data-Request for a public identity. It responded with the user state as offline.
Did the SIP user receive the SM? If not, did the GSM user receive the message?
No, the SIP user did not get the SM. Instead, the GSM user received the message.
hlr>
HH:MM:SS |R| SRI msisdn=1.1.703111222
HH:MM:SS |S| SRI-resp imsi=7777703111222 nnn=1.1.702000002
ims>
HH:MM:SS |R| RP-DATA MESSAGE
HH:MM:SS |S| SIP_RESP MESSAGE 200 OK
HH:MM:SS |S| RP-ACK MESSAGE
HH:MM:SS |R| SIP_RESP MESSAGE 202 Accepted
Yes
Why is the nnn 1.1.702000002 that the HLR sent not the same as 1.1.700123456 the SMSC receives?
The MCO acts as home router and replaces the nnn with its own GT to intercept the MT.
9. MCO Troubleshooting
9.1. Service and Process Troubleshooting
9.1.1. Task
• Check if processes are running using CML.
• Check MCO status from bash.
9.1.2. Solution
• Login to MCO via ssh
IP address: 172.21.12.7
User/Password: mco/mco
• Open CML interface:
$ cml
• Check if processes are running in CML:
MCO> monitor.processes.show
9.2.1. Task
• Check installed MCO version.
• Generate file with all possible information about MCO.
• Investigate the generated file.
9.2.2. Solution
• Check which MCO version is installed.
# rpm -q mco
• Create file to attach to support ticket (as user MCO!) :
$ /opt/mco/cluster/scripts/collect_info.sh
• Investigate the generated file.
$ cd /tmp
$ tar xvzf /tmp/mco-collect-info*
9.3.1. Task
• Capture one message submit and delivery using tcpdump and analyse the file with
Wireshark. Check the content of each message.
Hint: You need to be logged in as user root.
9.3.2. Solution
• If you want to check the content of each message, try to run tcpdump and analyse the
file with Wireshark. You need to be logged in as user root.
# tcpdump -i any -w /tmp/dump.cap -s0
SMSC, Router or Firewall - Follow this IPSMGW - Follow this column if you are
column if you are in the SMSC, Router in the IPSMGW training only!
or Firewall training!
To simulate traffic in the SOL component, To simulate traffic in the SOL component,
use the XMSBAF server. Be sure that your use the XMSBAF server. Be sure that your
GSM BAF is running. If not, start it like MSC and HLR are running. If not, start it
this: like this:
A. Keep CML open, start a new Putty 1. Keep CML open, start a new Putty
window and ssh to the BAF server window and ssh to the BAF server
(root/root). (root/root).
B. Next type: 2. Next type:
xmsbaf# cd baf xmsbaf# ./msc.sh
xmsbaf# ./start_baf_fr 3. In another window start the HLR
script.
xmsbaf# ./hlr.sh
Now you can simulate GSM traffic on the Now you can simulate traffic on the MCO.
MCO. The command submit will cause The command mo will cause MSC to
BAF to originate a MO_FW_SM from MSC originate a MO_FW_SM from MSC
towards the MCO in Store & Forward towards the MCO. Check the results.
message mode. 4. Be sure that MSC and HLR scripts are
C. baf> submit running.
5. On the MSC window, send a MO-SM:
msc> mo 1.1.703012345
• By expanding the packet in the bottom section, you can see the individual fields that
are part of the packet. With right mouse click on a field, you can create or expand your
filter for further investigation. The possibilities of Wireshark are outside the scope of this
training.
9.4.1. Task
• Check if SOL is running on all nodes.
• Perform SOL health-check for *no_mem, *sys_error and *timeout counters.
• Check SSP AF.
• Check SS7 AF.
9.4.2. Solution
• Check if SOL is running on all nodes:
MCO> monitor.processes.show class=sol
• SOL health-check(*):
MCO> @sol_af_state.oam
MCO> @sol_no_mem.oam
MCO> @sol_sys_error.oam
MCO> @sol_timeout.oam
• SSP AF Status:
MCO> ssp.assoc_stat.show
MCO> ssp.addr_stat.show
MCO> ssp.sgp_stat.show
MCO> ssp.asp_stat.show
• SS7 AF Status:
MCO> @ss7.oam
9.5.1. Task
Use Trace Server to trace SOL. The trace server is a process that can be used for gathering of debugging
outputs from one or more processes running on a node or cluster.
9.5.2. Solution
Use Trace Server to trace SOL. The trace server is a process that can be used for
gathering of debugging outputs from one or more processes running on a node or cluster.
• After configure and enable the trace server, you have to enable the debug mode and
set the debug filters for tracing a specific component:
MCO> debug.enabled.get
MCO> debug.enabled.set value=yes /class=sol
>> sol/sol-00 debug.enabled.set :
OK
| WARNING | debug.DEBUG_ON | MMM DD HH:MM:SS XX | sol:sol-
00.XXXXX | Debugging is ON. |
• Run a trace server. To run a trace server in the direct mode, just invoke the echos (as
MCO user) and check the results:
$ echos
• You can also write trace to file using the following script:
$ /opt/mco/bin/echos_to_file.sh
• More tracing information can be acquired by tracing specific interfaces. Try tcpdump
and check ifx, sccp, smpp and sctp protocols:
# tcpdump -i any -w /tmp/dump.cap -s0
• In the bash shell on the xmsbaf node issue the following command to get every 5
seconds a timestamp and the output of the monitor.process.show command printed on
screen:
xmsbaf ~# counter_monitor monitor.processes.show 5 1
20.06.2018 14:26:10
>> monitor/monitor-00 monitor.processes.show :
+=============================================================================================================+
|id |class |instance |state |reason |starts |uptime |pid |
+-------+-------------+-----------------+-------------+-------------------------+-------+-------------+-------+
|1 |orion |orion-00 |RUNNING |AUTO_START |1 |656971 |1526 |
|2 |oamzoo |cfggw-00 |RUNNING |AUTO_START |1 |656971 |1527 |
|3 |snmpifxag |snmpifxag-00 |RUNNING |AUTO_START |1 |656971 |1528 |
|4 |pusa |pusa-00 |RUNNING |AUTO_START |1 |656971 |1529 |
|5 |restgw |restgw-00 |DISABLED |MANUAL_STOP |0 |0 |0 |
|6 |ice |ice-00 |DISABLED |MANUAL_STOP |0 |0 |0 |
|7 |xms |xms-00 |RUNNING |AUTO_START |1 |656971 |1530 |
|8 |stats |stats-00 |RUNNING |AUTO_START |2 |656954 |1707 |
|9 |pgw |pgw-00 |DISABLED |MANUAL_STOP |0 |0 |0 |
+=============================================================================================================+
20.06.2018 14:26:14
>> monitor/monitor-00 monitor.processes.show :
+=============================================================================================================+
|id |class |instance |state |reason |starts |uptime |pid |
+-------+-------------+-----------------+-------------+-------------------------+-------+-------------+-------+
|1 |orion |orion-00 |RUNNING |AUTO_START |1 |656975 |1526 |
|2 |oamzoo |cfggw-00 |RUNNING |AUTO_START |1 |656975 |1527 |
|3 |snmpifxag |snmpifxag-00 |RUNNING |AUTO_START |1 |656975 |1528 |
|4 |pusa |pusa-00 |RUNNING |AUTO_START |1 |656975 |1529 |
|5 |restgw |restgw-00 |DISABLED |MANUAL_STOP |0 |0 |0 |
|6 |ice |ice-00 |DISABLED |MANUAL_STOP |0 |0 |0 |
|7 |xms |xms-00 |RUNNING |AUTO_START |1 |656975 |1530 |
|8 |stats |stats-00 |RUNNING |AUTO_START |2 |656958 |1707 |
|9 |pgw |pgw-00 |DISABLED |MANUAL_STOP |0 |0 |0 |
+=============================================================================================================+
^C
• In the bash shell to get an overview of the command line parameters type:
$ cml --help
• To call cml with a specific command, provide it as argument like this:
$ cml monitor.processes.show
• Once you login, you can view the MCO monitoring page only.
Now click on the XMS Application to switch to the XMS Application page
• Notice that the buttons to stop and start and the Explorer page are missing.
• Login as local user using ssh and notice that you skip the bash prompt and go straight
into the OAM command line interface.
login as: wb
--- Unauthorised access prohibited ---
This is a closed-access system. If you do not have permission
to access this system, then log off now. If you remain logged
on
you consent to monitoring of your actions.
wb@172.21.12.6's password:
Last login: Fri Nov 3 18:01:55 2017 from 10.29.251.60
,-.
/ | `. __..-,O
: | --''_..-'.'
| . .-' `. '.
: . .`.'
| `. / ..
| `. ' .
`, `. |
,|,`. `-.|
'.|| ``-...__..-`
| |
|__|
/||V
//||\\
// || \\
__//__||__\\__
'----mavenir---' oam
OAM>
• When you try to make a modification, like restart a process you will get the
UNAUTHORIZED error.
OAM> monitor.processes.restart class=stats
>> orion/orion monitor.processes.restart :
UNAUTHORIZED
• Now exit from the command line interface and see that your SSH connection is
terminated.
OAM> .exit
Tip: if you want to change the group after you created the account you can using the usermod
command. For example:
# usermod --groups administration wb
# cml access.config.reload
Use section 3.1, the textbook or the XMS Operation Manual for reference.
Question: what additional rights does this account have compared to the "wb" account from section
3.1?
OAM> access_conf.roles[monitoring].rights.show
OAM> access_conf.roles[administration].rights.show
For MCO the same steps need to be repeated on all MCO nodes.
Click on the plus sign next to Dashboards in the left Navigation bar to create a new dashboard:
Type a name for the new dashboard and click on the button "Create Dashboard".
Type as title XMS CPU user system waitio, select as Type Line chart, type as Unit name %,
set Time scale to 5 min, type as Y-axis fixed minimum value 0, type as Y-axis fixed maximum value
100.
Type as Legend key "xms cpu user", select as Managed element "XMS", as Measurement "sysinfo.cpu",
type as Column name "user", select as Row name "cpu".
Fill in the fields for the second measurement. Type as Legend key "xms cpu waitio", select as Managed
element "XMS", as Measurement "sysinfo.cpu", type as Column name "waitio", select as Row name
"cpu".
Fill in the fields for the third measurement. Type as Legend key "xms cpu system", select as Managed
element "XMS", as Measurement "sysinfo.cpu", type as Column name "system", select as Row name
"cpu".
Choose widget type "Counter", type as title "XMS CPU user", type as Unit name "%", type as Legend key
"xms cpu user", select as Managed element "XMS", type as Measurement "sysinfo.cpu", select as Class
and instance "monitor - All instances", type as Column name "user", select as Row name "cpu" and click
on the button "Create Widget".
Click on the three small horizontal lines to open the pull-down menu. Next click on the "Copy this
widget" menu item.
Click on the three small horizontal lines to open the pull-down menu. Next click on the "Edit this
widget" menu item.
Click on the Type and change "Line chart" into "Area chart".
Copy the Area chart, change the type to Pie chart and add a fourth measurement "xms cpu idle":
Add a new widget, choose widget type "Table", type as title "XMS CPU", select as Managed element
"XMS", select as Measurement "sysinfo.cpu", Click and untag the tick boxs "lwm", "cpu", "state",
"hwm", "hostname", type for Number of lines to display "1" and click the button "Create Widget".
Click on the widget header and drag each widget to its place.
Task for this exercise is to find out why and make it show the graph.
Hint: The disk layout of the deployed MCO in the training lab does not follow the required structure
written in the MCO Installation manual. There are two ways to solve it. One: change the widget
(recommended for this exercise). Two: change the disk layout.
• First start the CLI on the xmsbaf node with the instruction to enable this feature. From
the bash shell on the xmsbaf node type the command:
cml --enable_spoa
• Notice that the prompt now looks different
• To see which clusters with their products are available issue the cluster command:
local_cluster:OAM> .cluster
• To select a specific cluster provide its name:
local_cluster:OAM> .cluster MCO-SMSC-A
• Now issue an command and see that it goes to this cluster:
MCO-SMSC-A:MCO> monitor.processes.show
• By adding additional clusters commands also go to multiple clusters
MCO-SMSC-A:MCO> .cluster + XMS
• Now issue an command again and notice that you now get two answers.
SPOA> monitor.processes.show
• It is also possible to prefix any command with the cluster name like this:
SPOA> XMS:monitor.processes.show
Question: what has changed to the log events that are printed on the screen?
Now it is your job to solve the problem. Note that this scenario assumes you are trained in Linux
administration. Ask your trainer for explanation if you do not understand some of steps.
• Login with SSH to the XMS node that has the problem.
• Now first validate that indeed the disk is (almost) full.
xmsbaf ~# df -h /var/log
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/lvm01-varlog.vol 997M 997M 20K 100% /var/log
• Find out with files consume most disk space.
xmsbaf ~# ls -Ssh1 /var/log | head
total 568M
251M messages
131M daemon.log
8.0M messages-20171108.gz
8.0M daemon.log-20171108.gz
7.5M messages.2.gz
7.5M daemon.log.2.gz
6.1M messages-20171109.gz
6.1M daemon.log-20171109.gz
• Because the disk is 100% full we need to make room before we can run logrotate.
Therefor we move the archived log files to the /tmp filesystem.
mkdir /tmp/var_log_full_issue
mv /var/log/*.gz /tmp/var_log_full_issue
• Now we run logrotate manually to enforce house keeping for the syslog files.
/usr/sbin/logrotate -f /etc/logrotate.d/syslog
• Verify that the disk has room again:
xmsbaf ~# df -h /var/log
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/lvm01-varlog.vol 997M 433M 564M 44% /var/log
• Verify that the alarm is cleared:
17.1.1. Task
• Setup MCO to block all messages which have word “apple” in the content.
17.2.1. Task
• Setup MCO to block messages which content contains the word “balloon” and its variants like
“ball00n”, etc. and is send in volumes higher than 3 messages per minute for more than 2
minutes. The sender should be blocked for 3 minutes.
• Add custom parameter A_GT to be saved with the blacklist record. Check if it is stored with the
BL.
18.1.1. Task
Setup MCO to be able to send (for subscribers in specific address group) and receive SMS over
Diameter.
xmsbaf# cd baf/scripts
xmsbaf# LD_LIBRARY_PATH=/root/baf /root/baf/baf /root/baf/scripts/sgd.lua
▪ Listens on port 8001
xmsbaf# cd baf/scripts
xmsbaf# LD_LIBRARY_PATH=/root/baf /root/baf/baf /root/baf/scripts/s6c.lua
18.2.1. Task
Modify the configuration to send (for subscriber from certain address group) message to “MME” in MO
proxy mode.
19.1.1. Task
Setup MCO to be able to apply IR to messages for subscriber from a specific address group. The
order of the network is GSM, 4G, SMPP_TEST.
19.2.1. Task
Modify the behaviour of baf HLS and baf HSS(S6c) to send errors back to MCO explore IR behaviour.
Appendix A
To access the training VMs from the Internet, run OpenVPN on your computer:
3. Trainer will provide the vpn-xxxxxxxx.zip file containing the OpenVPN client with valid certificates.
4. Unzip de file.
5. On \OpenVPNPortable directory you will find the OpenVPNPortable.exe file.
6. Right click the executable file and chose “Run as administrator”.
7. OpenVPN will start establishing connection to training lab network.
8. When the connection is successfully established, the client window is closed, and you see a message next
to your computer’s clock: “vpn-acision-GTT is now connected”.
9. Connect via Remote Desktop Connection to the assigned Student X (see table below) virtual machine with
password the same as the username:
10. If step 7 was successful, now continue with section 1.2 step 4 and further inside the Remote Desktop
Connection session. Do not execute the remainder of this appendix.
11. If step 7 failed, you can continue with steps 12 and 13.
12. Connect via ssh to the assigned Student X (see table below) virtual machine with password the same as
the username:
13. Connect via Firefox or Chrome to the assigned Student X (see table below) XMS virtual machine:
Lab 1 Lab 2
Student MCO Node 1 XMS and BAF Windows MCO Node 1 XMS and BAF Windows
Number Desktop Desktop
1 172.31.212.17 172.31.212.16 172.31.210.12 172.31.12.17 172.31.12.16 172.31.10.12
2 172.31.212.27 172.31.212.26 172.31.210.22 172.31.12.27 172.31.12.26 172.31.10.22
3 172.31.212.37 172.31.212.36 172.31.210.32 172.31.12.37 172.31.12.36 172.31.10.32
4 172.31.212.47 172.31.212.46 172.31.210.42 172.31.12.47 172.31.12.46 172.31.10.42
5 172.31.212.57 172.31.212.56 172.31.210.52 172.31.12.57 172.31.12.56 172.31.10.52
6 172.31.212.67 172.31.212.66 172.31.210.62 172.31.12.67 172.31.12.66 172.31.10.62
7 172.31.212.77 172.31.212.76 172.31.210.72 172.31.12.77 172.31.12.76 172.31.10.72
8 172.31.212.87 172.31.212.86 172.31.210.82 172.31.12.87 172.31.12.86 172.31.10.82
9 172.31.212.97 172.31.212.96 172.31.210.92 172.31.12.97 172.31.12.96 172.31.10.92
10 172.31.212.107 172.31.212.106 172.31.210.102 172.31.12.107 172.31.12.106 172.31.10.102
11 172.31.212.117 172.31.212.116 172.31.210.112 172.31.12.117 172.31.12.116 172.31.10.112
12 172.31.212.127 172.31.212.126 172.31.210.122 172.31.12.127 172.31.12.126 172.31.10.122
The trainer informs you of your student number and to use Lab 1 or Lab 2.