Giter Site home page Giter Site logo

jss7's Introduction

Note

On 29 June 2023, Mobius Software LTD signed an agreement with Mavenir to assume development and support of the RestcommOne on prem products. For more details regarding open source / commercial differentiation, roadmap, licensing and other details please visit the Mobius Website.

RestComm Java SS7 Stack and Services

Join the chat at https://gitter.im/RestComm/jss7 FOSSA Status

Introduction

Open Source Java SS7 stack that allows Java apps to communicate with legacy SS7 communications equipment.

jSS7 provides an open source software solution implementing M3UA, SCCP, TCAP, CAMEL, MAP, ISUP protocols for a dedicated equipment (Dialogic) and also M3UA (SIGTRAN) over IP.

jss7's People

Contributors

abhayani avatar agafox avatar alerantappngin avatar ammendonca avatar anatolysatanovskiy-mobius avatar baranowb avatar bkrok avatar croufay avatar deruelle avatar faizann avatar gitter-badger avatar hubertzegota avatar ivelin avatar knosach avatar kostyantynnosach-mobius avatar lasithwaruna avatar mniemiec avatar mnowa avatar nhanth87 avatar normandesjr avatar oifayulian avatar okulikov avatar satanatoly avatar sergeylee avatar summanetworks avatar vetss avatar vinusaseedaran avatar vklidu avatar vmykhailiuk avatar yulianoifa-mobius avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jss7's Issues

SCCP doesn't respect point-code for incoming message

Suppose SCCP stack is configured with multiple rsp and SCCP Rule1 configured to use PC1 as primary and PC2 as secondary. Now if message received from PC2 and consumed by SCCP-User and replies back, the GT matches for Rule1, it will use PC1 for out going message instead of PC2.

We need to make a discussion firstly how it is better to achieve this task

Switch to SCTP library with netty support

We need to switch to SCTP library with netty support and update levels to reuse netty staff

  • m3ua level
  • map load tests
  • ss7 simulator
  • some unit tests where ManagementImpl class is used

Remove advertisement from GUI

When a user presses a menu link in GUI, an advertisment goes down and up before the user will be switched into the next topic. Let's remove it.

Problems of sending of SCCP management messages for networkID!=0

Now in JSS7 SCCP stack all management messages are processed without taking into account networkID value of SAP. (sccp routing rules are not taken into account.)

We have a problem when a generated outgouing a management message is sent via SccpRoutingControl.send(SccpMessageImpl message) method which takes SAP depending on networkID value. We need to create a simplified method for sending only sccp management messages without getting SAP with using of networkID.
We need to create a method SccpRoutingControl.sendManagementMessage(SccpDataMessageImpl message) and use it for SCCP routing messages sending.

Updating of management interface part after introducing of congestion control into SS7 stack

We need to update statistics / alarm management after introducing of SS7 congestion control.

Suggested updates:

  1. SCTP alarms - adding alarms in case of SCTP connection is congested (level 1 - minor, level 2 - major, level 3 - critical)

  2. TCAP stack: statistic counters:

  • max count of networkID areas that are not available
  • max count of networkID areas that are congested with level at least 1
  • max count of networkID areas that are congested with level at least 2
  • max count of networkID areas that are congested with level at least 3
  • max count of Executors that are congested with level at least 1
  • max count of Executors that are congested with level at least 2
  • max count of Executors that are congested with level at least 3
  • Memory congestion level (0-3)
  • max count of TcapUserParts that are congested with level at least 1
  • max count of TcapUserParts that are congested with level at least 2
  • max count of TcapUserParts that are congested with level at least 3

MWStatus can have 3 bytes length

MWStatus can have 3 bytes lenthg (one Bits Unused Indicator and two data bytes - up to 16 buts).

Current implementation accepts only 1 or 2 bytes that is wrong.

Also let us make it based on BitStringBase super class.
226 | 0000 0011 | MW Status Tag: 3
227 | 0000 0011 | Length: 3 octet(s)
228 | 0000 0000 | Bits Unused Indicator: 0
229 | ---- 0000 | Spare: 0
---0 ---- MNRG Set: Not Set
-1 ---- MCEF Set: Set
0- ---- MNRF Set: Not Set
0--- ---- SC-Address Not Included: Not Set
230 0000 0000 Spare: 0

SRI Response

I have a problem with SRIResponse: TCAP cannot decode exactly and unrecognize this input packet.
Here is log:
"200 ERROR org.mobicents.protocols.ss7.tcap.DialogImpl Rx : ReturnResultLast[invokeId=1, operationCode=OperationCode[OperationType=Local, data=22], parameter=Parameter[data=[........................], parameters=null, primitive=false, tag=3, tagClass=2, encodingLength=104]] but there is no corresponding Invoke"

Please show me where i'm wrong?

Congestion control

We need to introduce a congestion control into jss7 library.

We can use the following congestion levels:
0 - no congestion
1 - minor level (just warning, no traffic limitaton)
2 - major level (new incoming from a peer TCAP dialogs are rejected, user application must reduce outgoing traffic issuing only for high priority messages)
3 - critical level (all incoming from a peer TCAP messages are rejected, user application must avoid of message sending)

  1. we have to update "congestion" module to support several levels congestion. This module will provide MemoryCongestionMonitor for memory usage monitoring and ExecutorCongestionMonitor for monitoring of congestion in threads executing.

  2. congestion for outgoing messages:

  • sctp level must control the load of outgoing message buffer. After it becomes larger then a threadhold then SCTP Association must provide info for this
  • m3ua level must check at the each writing procedure the congestion state of SCTP association and then following procedure by MTP spec for issuing of MTP-STATUS indication to the upper level
  • m3ua level (and mtp stack) must provide a new listner method onMtp3EndCongestionMessage() which will be invoked when the congestion at SCTP part is gone
  • sccp level must care of MTP-STATUS indications and process them as for SCCP spec and issue
    PCSTATE indication to upper levels. Congestion level is calculated per DCP and per networkID.
  • sccp level must also calculate congestion and availability status for the whole networlId are and provide it for upper levels.
  • TCAP must keep the congestion level for outgoing messages and provide it to upper levels (MAP / CAP stacks and MAP / CAP users).
  • Stacks users must reduce traffic to a congested networkID / DPC

TCAPProvider provides methods for checking of congestion and availability status of networkId area:
FastMap<Integer, NetworkIdState> getNetworkIdStateList();
NetworkIdState getNetworkIdState(int networkId);

NetworkIdState:
public interface NetworkIdState {
boolean isAvailavle();
int getCongLevel();
}

  1. congestion for incoming messages:
  • MTP3 level has a management for threads that process incoming messages from a peer (ExecutorCongestionMonitor). We can monitor the congestion at this side and provide congestion level into TCAP level.
  • TCAP must have MemoryCongestionMonitor on board + get data from all MTP3 levels ExecutorCongestionMonitors + upper stacks may provide info to TCAP stack for their congestion level + may be SLEE congestion level. All this will generate the level of the "TCAP + upper stacks" congestion level
  • then this value is used at TCAP level for processing of incoming TCAP primitives.
    a) In case of level 2 TCAP will reject new dialogs with TC-PROVIDER-ABORT resource limitation error
    b) In case of level 3 TCAP will drop all incoming primitives
  1. we can think also to reuse same threads for processing of putgoing TCAP messages for uniform.

CLI bug - Exception after long input and the "up arrow" pressing

How to reproduce it:

  1. type a big command which is contained in several rows
    like
    smpp esme create test2 test2 127.0.0.1 -1 TRANSCEIVER SERVER password test esme-ton -1 esme-npi -1 esme-range 6667 source-range 6667 routing-range 6667 charging-enabled false networkid 1
  2. after response from the server - type "uip arrow"
    "up arrow"*
  3. the I can see:
    telscale(local)>Exception in thread "main" java.lang.NumberFormatException: For
    input string: "2B"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.
    java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.(Integer.java:677)
    at org.fusesource.jansi.AnsiOutputStream.write(AnsiOutputStream.java:120
    )
    at java.io.FilterOutputStream.write(FilterOutputStream.java:125)
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
    at java.io.PrintWriter.flush(PrintWriter.java:320)
    at org.jboss.jreadline.terminal.WindowsTerminal.write(WindowsTerminal.ja
    va:86)
    at org.jboss.jreadline.console.Console.drawLine(Console.java:711)
    at org.jboss.jreadline.console.Console.redrawLine(Console.java:697)
    at org.jboss.jreadline.console.Console.getHistoryElement(Console.java:47

at org.jboss.jreadline.console.Console.read(Console.java:392)
at org.jboss.jreadline.console.Console.read(Console.java:221)
at org.mobicents.ss7.management.console.ConsoleImpl.readLine(ConsoleImpl
.java:235)
at org.mobicents.ss7.management.console.CommandContextImpl.readLine(Comm
andContextImpl.java:290)
at org.mobicents.ss7.management.console.Shell.start(Shell.java:92)
at org.mobicents.ss7.management.console.Shell.main(Shell.java:58)
Для продолжения нажмите любую клавишу . . .
then ss7-cli terminates
and at the server side I can see
14:00:28,837 ERROR ShellServer IO Exception while operating
on ChannelSelectionKey. Client CLI connection will be closed now
java.io.IOException: ╙фрыхээ√щ їюёЄ яЁшэєфшЄхы№эю ЁрчюЁтры ёє∙хёЄтє■∙хх яюфъы■ўх
эшх
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:225)
at sun.nio.ch.IOUtil.read(IOUtil.java:193)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:359)
at org.mobicents.ss7.management.transceiver.ShellChannel.doRead(ShellCha
nnel.java:164)
at org.mobicents.ss7.management.transceiver.ChannelSelector.selectNow(Ch
annelSelector.java:116)
at com.telscale.ss7.management.console.ShellServer.perform(ShellServer.j
ava:186)
at org.mobicents.protocols.ss7.scheduler.Task.run(Task.java:108)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:615)
at java.lang.Thread.run(Thread.java:722)

2.1.0.FINAL

I have one problem and is:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error building POM (may not be this project's POM).

Project ID: org.mobicents.protocols.ss7:ss7-parent:pom:2.1.0.FINAL

Reason: Cannot find parent: org.mobicents:mobicents-parent for project: org.mobicents.protocols.ss7:ss7-parent:pom:2.1.0.FINAL for project org.mobicents.protocols.ss7:ss7-parent:pom:2.1.0.FINAL

This because no exist the 2.1.0.FINAL file, the question is, where do I get it?

MAP / CAP operation logging

We need to implement separate logging for a list of sent / received MAP / CAP messages.
The solution may be - any MAP / CAP error message, error / abort message will be logged into a single class log (DEBUG LEVEL) that later can be by using of different appender route this logging into a separate log file (we need to provide a separate example for it).

Each log record must contain one line with stricted fields structure for uniform (like we do for CDR).

here is the original request:
"Is it possible to have an additional log to show the ss7 requests we made to peer? This log should have each line indicate whether it's a SRI or Mt-ForwardSM, whether it's success or failure, an ID to correlate to message id in cdr log, etc.
We raise this request because one of our peers charge us based on the MSU usage. The implementation must also factor in latest features like SRI-drop and SRI response cache."

Parse Camel packet

Hello.

Could you please help me with you library? I have m3ua packet with camel packet inside. I've got it from pcap dump and it just a portion of bytes. How can I get a CAPMessage instance from it?
I've found how to get SccpMessage but don't know how to get Tcap and CAPMessage next.
Please help.

Multiple fragments in sccp

Hi.

Could you please tell me how to work with messages which contains multiple fragments in sccp.
SccpDataMessage.getData() returns data of first fragment. But how I get full data and create TCBeginMessage instance from it?

Thanks.

Expose M3UA statistics

telscale-jss7 M3UA should expose following statistics
Number of data packets transmitted through this association.
Number of ASP UP messages transmitted through this association.
Number of ASP UP ACK messages transmitted through this association.
Number of ASP DOWN messages transmitted through this association.
Number of ASP DOWN ACK messages transmitted through this association.
Number of ASP ACTIVE messages transmitted through this association.
Number of ASP ACTIVE ACK messages transmitted through this association.
Number of ASP INACTIVE messages transmitted through this association.
Number of ASP INACTIVE ACK messages transmitted through this association.
Number of ERROR messages transmitted through this association.
Number of NOTIFY messages transmitted through this association.
Number of DUNA messages transmitted through this association.
Number of DAVA messages transmitted through this association.
Number of DAUD messages transmitted through this association.
Number of SCON messages transmitted through this association.
Number of DUPU messages transmitted through this association.
Number of DRST messages transmitted through this association.
Number of BEAT messages transmitted through this association.
Number of BEAT ACK messages transmitted through this association.
Number of data packets received through this association.
Number of ASP UP messages received through this association.
Number of ASP UP ACK messages received through this association.
Number of ASP DOWN messages received through this association.
Number of ASP DOWN ACK messages received through this association.
Number of ASP ACTIVE messages received through this association.
Number of ASP ACTIVE ACK messages received through this association.
Number of ASP INACTIVE messages received through this association.
Number of ASP INACTIVE ACK messages received through this association.
Number of ERROR messages received through this association.
Number of NOTIFY messages received through this association.
Number of DUNA messages received through this association.
Number of DAVA messages received through this association.
Number of DAUD messages received through this association.
Number of SCON messages received through this association.
Number of DUPU messages received through this association.
Number of DRST messages received through this association.
Number of BEAT messages received through this association.
Number of BEAT ACK messages received through this association.
Number of data packets transmitted for this route

CLI hanging

Sometimes (possibly when we the CLI with no activity for some minutes) the following behaviour (No response from server) occurs:

telscale(192.168.118.128:3435)>sccp sap show
No response from server
telscale>disconnect
Already disconnected
telscale>exit
[fer@192 bin]$ ./ss7-cli.sh
version=6.2.5.GA-TelScale,name=TelScale CLI,prefix=telscale,vendor=TeleStax
telscale>connect 192.168.118.128 3435
No response from server
telscale(192.168.118.128:3435)>[fer@192 bin]$

so, after restarting the server...

[fer@192 bin]$ ./ss7-cli.sh
version=6.2.5.GA-TelScale,name=TelScale CLI,prefix=telscale,vendor=TeleStax
telscale>connect 192.168.118.128 3435
Connected to TelScale CLI 6.2.5.GA-TelScale TeleStax Authenticating against configured security realm
Username:admin
Password:*****
telscale(192.168.118.128:3435)>sccp sap show
key=1 mtp3Id=1, opc=2, ni=2, networkId=0, dpcList=[[key=1, firstDpc=1, lastDpc=1, firstSls=0, lastSls=255, slsMask=255], ]
key=2 mtp3Id=1, opc=9701, ni=2, networkId=1, dpcList=[[key=1, firstDpc=4501, lastDpc=4505, firstSls=0, lastSls=255, slsMask=255], ]
key=3 mtp3Id=1, opc=2301, ni=2, networkId=1, dpcList=[[key=1, firstDpc=2801, lastDpc=2805, firstSls=0, lastSls=255, slsMask=255], , [key=2, firstDpc=2918, lastDpc=2921, firstSls=0, lastSls=128, slsMask=254], , [key=3, firstDpc=3005, lastDpc=3010, firstSls=0, lastSls=255, slsMask=255], ]

telscale(192.168.118.128:3435)>

Let's try to test and fix it.

Docs: SCCP CLI show commands contains "id"

Docs and help files for CLI says that a proper command for SCCP objects showing is like:
sccp address show 1
but it must be like:
sccp address show id 1

We need to care of all SCCP objects.

Proper handling of Congestion Control

The JVM throws Out of Memory error when there are not sufficient resources, rather jSS7 should stop accepting more Dialogs.
Also there should be proper handling if CPU utilization goes beyond threshold.

GUI: adding of SCCP object modifying

We need to add apossibility to modify / update of SCCP objects in GUI interface to simplify SCCP stack configuring :

  • SAP
  • destination for SAP
  • sccp address
  • sccp rule
  • rsp
  • rss
  • lmr
  • Concerned Signaling Point Code

Alarms management update for sctp, m3ua and sccp

We need:
update sctp alarm management:
SctpManagementJmx.onAssociationStarted() и onAssociationStopped():
if (!ass.isConnected()) { -> if (!ass.isUp()) {
test: when stopping a connected association (stop asp) an alarm "SCTP association is down" must not occure
2. update m3ua alarm management:
onAspInactive(), onAspDown(),
onAsPending(), onAsInactive(), onAsDown()
when processing these events we need check a previous state and if it is not Actiove - not to generate an Alarm message
uncomment invocations of:
isStarted(), isStopped(), getAspFactory()
replace "getState()" -> "isUp()"
3. implement sccp alarms:
Remote SubSystem is down
Remote SignalPointCode is down
Remote SCCP is down
4. Make some tasting at a live stack

m3ua message decoding / encoding - reuse of netty ByteBuf

  1. MessageFactoryImpl.createMessage() reuse ByteBuf but lower levels decoding not use
  2. M3UAMessageImpl.encode(ByteBuf byteBuf) reuse ByteBuf but lower levels decoding not use

let's do that all messages reuse netty buffer ByteBuf to reduce of memory copying and more clear code.

SCCP should send SSC management messages if a a local SCCP user (TCAP or upper levels) is congested

Now SCCP stack sends SCCP mahagement messages in following cases:

  1. SSA / SSP to concerned nodes when a local SSN listener is registered / deregistered.
  2. SSA to a message originator when SST is received.
  3. SST in a procedure of SubSystemTest (after timeout is reached).
    (SubSystemTest is initiated when MTP_STATUS+SubSystem is unavailable, SSP received or when MTP-RESUME or SSA received and a RSP is marked as prohibitedWhenSpcResuming).
  4. SSP to a message originator when local SSN is unavailable.

We need to add the following case:
5) sending of SSC to an originator when a message is received from an SS7 peer and a local SCCP user (TCAP or upper levels) is congested.

Docs: Lack of capDialog.refuse() in CAP stack

"13.2. jSS7 Stack Sending a CAP request (InitialDPRequest as an example)" chapter mentions the "capDialog.refuse()" method for a dialog rejection.

capDialog (unlike mapDialog) does not have "capDialog.refuse()" method because it does not not allowed by a specification. We have to use "capDialog.abort(CAPUserAbortReason abortReason)" method to reject / abort the dialog and send back TC-UserAbort and close the dialog.

https://telestax.zendesk.com/tickets/32984

Provide jboss-beans.xml for a dialogic case

We need to provide in the release jboss-beans.xml for cases

  • dialogic
  • m3ua + dialogic

we have now the default case:

  • m3ua

we can provide it in may be "ss7/META-INF-templates"folder.

GUI: LMR creation not working

When attempting to create a LMR, an exception is thrown in the console ([ERROR] java.lang.IllegalArgumentException : No enum constant org.mobicents.protocols.ss7.sccp.LongMessageRuleType.LongMessagesForbidden) and the LMR creation obviously fails.
Moreover, at creation attempt, the text for the parameter is replaced by "Load Sharing Algorithm" (reminding the SCCP rule "loadsharing-algo" parameter). See image and error full stack trace attached below:
LMR_create_GUI_fullStackTrace_error.txt
jss7_gui_lmr_creation_loadsharingalgo_instead_of_lmrtype_

Docs: JAVA version in the manual

We need to specify in the manual (Installation Pre-Requisites) that the only supported JAVA version is JAVA7 (+Oralce/64 is prefered)

Too many warning messages if one of links is prohibited

If a SCCP link is prohibited than we will have for each message GT translation attempt a message in the log:

2016-03-16 12:55:01,218 WARN org.mobicents.protocols.ss7.sccp.impl.SccpRoutingControl Received SccpMessage=Sccp Msg [Type=-1 networkId=0 sls=214 incomingOpc=-1 incomingDpc=-1 outgoingDpc=-1 CallingAddress(pc=0,ssn=8,AI=18,gt=GlobalTitle0100Impl [digits=, natureOfAddress=INTERNATIONAL, numberingPlan=ISDN_TELEPHONY, translationType=0, encodingScheme=BCDEvenEncodingScheme[type=BCD_ODD, code=2]]) CalledParty(pc=0,ssn=8,AI=18,gt=GlobalTitle0100Impl [digits=****, natureOfAddress=INTERNATIONAL, numberingPlan=ISDN_TELEPHONY, translationType=0, encodingScheme=BCDEvenEncodingScheme[type=BCD_ODD, code=2]]) DataLen=197] for Translation but secondary Remote Signaling Pointcode = **** is prohibited

This message is not critical if we have two links for loadsharing for example. Let's make logging for example one message per aminute for one affected DPC.

Remove of "dialogiclinux" profile mentioning from the manual

JSS7 stack installation Guide - chapter "4.2.1. Release Source Code Building" contains the mention of:

The Default profile builds only the java source code. The other
two profiles "dahdilinux" and "dialogiclinux" compile relevant native modules in addition to
building the java source.

Now we do not need "dialogiclinux" profile because we reuse dialogi native lib (not mobicents) from 6.2.5 release.

Adding new configuring parameters into SCTP and SCCP stacks for congestion control

We need the new following extra parameters - OUTGOING message control part:
SCTP stack - Thresholds for outgoing congestion control:

  • sctp set cc_delaythreshold_1
  • sctp set cc_delaythreshold_2
  • sctp set cc_delaythreshold_3
  • sctp set cc_backtonormal_delaythreshold_1
  • sctp set cc_backtonormal_delaythreshold_2
  • sctp set cc_backtonormal_delaythreshold_3

If the delays between the time when an outgoing message was delivered for sending and the real sending time increases cc_delaythreshold_1 / 2 / 3 values (in seconds) then the congestion level will be increased to 1, 2, or 3.
If the delays between the time when an outgoing message was delivered for sending and the real sending time decreases cc_backtonormal_delaythreshold_1 / 2 / 3 values (in seconds) then the congestion level will be decreased to 0, 1, or 2.

SCCP stack:

  • sccp set cc_timer_a
  • sccp set cc_timer_d

settins values for SCCP Timer A and D values in milliseconds.
Timer A starts at next MTP-STATUS(cong) primitive coming. During this timer no more MTP-STATUS(cong) are accepted.
Timer D starts after last MTP-STATUS(cong) primitive coming. After end of this timer (without new coming MTP-STATUS(cong)) RSLM (the congestion level) will be reduced.

  • sccp set cc_algo <international | levelDepended>

Sets the algorithm of the congestion control at SCCP level for outgoing
messages.
Possible values are international or levelDepended.
international algorithm - only one level is provided by MTP3 level (in MTP-STATUS primitive). Each MTP-STATUS increases N / M levels.
international algorithm - MTP3 level (MTP-STATUS primitive) provides 3 levels of a congestion (1-3) and SCCP congestion will increase to the next level after MTP-STATUS next level increase (MTP-STATUS 1 to N up to 3, MTP-STATUS 2 to N up to 5, MTP-STATUS 3 to N up to 7).

  • sccp set cc_blockingoutgoungsccpmessages <false | true>

Sets the value of if outgoing SCCP messages will be blocked in congestion. (depending on message type, UDP messages from level N=6). true means that message will be blocken in the congestion case, false means not.

SS7 Simulator: adding auto UnstructuredSS response into USSD Client test

SS7 Simulator USSD Client task now have two modes:

  • manual
  • auto sending unstructuredSSRequest

Let's add the special option for both modes:

  • auto response to incoming UnstructuredSS requests with specified response string (or may be UssdBusy error)

Also we have to care of "Send UssdBusy error" button availibility when "auto sending unstructuredSSRequest" or "auto response to incoming UnstructuredSS requests" are on.

Bug in GUI - sctpExtraHostAddress list for SCTP server is not set as empty after empty String

If we are creating via GUI a new SCTP server if we leave "Extra Host Address" field empty sctpExtraHostAddress then extraHostAddresses will created with a single empty memebr, but must be empty.

To solve it we need to check in SctpManagementJmx.addSctpServer() method - check if the String extraHostAddresses value is null OR EMPTY and in both cases create an empty array.

We need to update both branches - master and netty-2 !!!

Big CLI response gives BufferOverflowException

This is an issue at SMSC GW side:
https://telestax.atlassian.net/browse/SMSC-88
When the response string is more than 8000 byte we have an Exception at server side in CLI.
in
org.mobicents.ss7.management.transceiver.ShellChannel :
we have hardcored length:
private ByteBuffer txBuffer = ByteBuffer.allocateDirect(8192);
We need increase this limit but it is better to make some flexible solutions like - if a respond String is too long we will split it and return a response part by part.

RoutingLabelFormat does not support ANSI_Sls5Bit

  1. org.mobicents.protocols.ss7.mtp.RoutingLabelFormat has two different values:
    ANSI_Sls8Bit
    ANSI_Sls5Bit
    But it support only one value in method:
    public static RoutingLabelFormat getInstance(String format)
    (only "ANSI" string value that corresponds to ANSI_Sls8Bit).
    We need to accept "ANSI_Sls8Bit" and "ANSI_Sls5Bit" and also have a back support for "ANSI" value.
  2. we need to find all places in mt3 and m3ua stackes and provide a proper code for both values processing.

Dialogic part NullPointerException

When DialogicMtp3UserPart has not yet started but there is a meesage from a Dialogic card, the we have such messages in the log:

2016-03-16 10:40:36,131 ERROR org.mobicents.ss7.hardware.dialogic.DialogicMtp3UserPart Error while reading data from the Dialogic card
java.lang.NullPointerException
at org.mobicents.ss7.hardware.dialogic.DialogicMtp3UserPart$MtpStreamHandler.run(DialogicMtp3UserPart.java:153)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Reason: "getMtp3TransferPrimitiveFactory()" is still null.

This does not affect on the stack workability but cinfuses uses. We have to make logs more grasfull.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.