Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Congestion control #26

Closed
vetss opened this issue Jan 7, 2016 · 4 comments
Closed

Congestion control #26

vetss opened this issue Jan 7, 2016 · 4 comments
Assignees

Comments

@vetss
Copy link
Contributor

vetss commented Jan 7, 2016

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.
@deruelle deruelle added this to the 3.0.0 milestone Jan 18, 2016
@deruelle deruelle modified the milestone: 3.0.0 Jan 18, 2016
@vetss
Copy link
Contributor Author

vetss commented Feb 15, 2016

this task "1) we have to update "congestion" module" was implemened by:
b0cd244
7b07465
265f369

@vetss
Copy link
Contributor Author

vetss commented Feb 15, 2016

this task "2) congestion for outgoing messages:" was implemented by:
8217353
45c2701
c988f31
19fd53b
8c30ae0
0747c17
ea3955f
0e7c567
a13425d
b5ddb1d
3d9d14a
2bc776d
44baaee
26628cf
1590900
ff57b48
ffad05e
cb25caa

@vetss vetss modified the milestones: 3.1.0, 3.0.0 Mar 13, 2016
@vetss
Copy link
Contributor Author

vetss commented Apr 20, 2016

this task "3) congestion for incoming messages:" was implemented by:

f899567
dc8334f
483868d
062ef72

vetss added a commit to vetss/jss7 that referenced this issue Apr 23, 2016
vetss added a commit to vetss/jss7 that referenced this issue Jan 26, 2017
vetss added a commit to vetss/jss7 that referenced this issue Jan 26, 2017
…d test

MapServiceUssdClient for load testing as USSD Client
@vetss
Copy link
Contributor Author

vetss commented Feb 6, 2017

Multithreading test:
a7d0c62

SergeyLee pushed a commit to SergeyLee/jss7 that referenced this issue Feb 9, 2017
SergeyLee pushed a commit to SergeyLee/jss7 that referenced this issue Feb 9, 2017
…d test

MapServiceUssdClient for load testing as USSD Client
@vetss vetss modified the milestones: Sergey-8.0-sprint1, 8.0.0 Jul 23, 2017
@vetss vetss closed this as completed Aug 1, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants