METHODS, SYSTEMS, AND COMPUTER READABLE MEDIA FOR DISTRIBUTING SIGTRAN CONNECTIONS AMONG SIGNAL TRANSFER POINT (STP) MESSAGE PROCESSORS
20200177508 ยท 2020-06-04
Inventors
Cpc classification
H04M7/066
ELECTRICITY
H04L61/103
ELECTRICITY
International classification
Abstract
A method for distributing Sigtran connections among signal transfer point (STP) message processors includes providing a connection load balancer as a front end to plural message processors of an STP. The method further includes publishing, by the connection load balancer, an Internet protocol (IP) address to SS7 peers. The method further includes initializing the message processors of the STP to listen on the IP address published by the connection load balancer. The method further includes receiving, at the connection load balancer, a Sigtran message addressed to the IP address. The method further includes determining, by the connection load balancer, whether the Sigtran message is an initial message for a Sigtran connection or a subsequent message for a Sigtran connection and whether the Sigtran connection has been assigned to one of the message processors. The method further includes forwarding the message to one of the message processors or dropping the message based on whether the message is an initial message or a subsequent message and based on whether the connection has been assigned to one of the message processors.
Claims
1. A method for distributing Sigtran connections among signal transfer point (STP) message processors, the method comprising: providing a connection load balancer as a front end to plural message processors of an STP; publishing, by the connection load balancer, an Internet protocol (IP) address to SS7 peers; initializing the message processors of the STP to listen on the IP address published by the connection load balancer; receiving, at the connection load balancer, a Sigtran message addressed to the IP address; determining, by the connection load balancer, whether the Sigtran message is an initial message or a subsequent message for a Sigtran connection; determining, by the connection load balancer, whether the Sigtran message is for a Sigtran connection to which one of the message processors has been assigned; and forwarding the message to one of the message processors or dropping the message based on whether the message is an initial message or a subsequent message and whether the Sigtran message is for a Sigtran connection to which one of the message processors has been assigned.
2. The method of claim 1 wherein the message processors comprise physical message processors of a physical STP.
3. The method of claim 1 wherein the message processors comprise virtual message processors of a virtual STP.
4. The method of claim 1 comprising associating the IP address with loopback interface of the message processors.
5. The method of claim 1 wherein publishing the IP address to the SS7 peers includes broadcasting, by the connection load balancer, gratuitous address resolution protocol (ARP) or Internet control management protocol version 6 (ICMPv6) neighbor discovery messages that associate the IP address with a medium access control (MAC) address of the connection load balancer.
6. The method of claim 1 wherein the Sigtran message is an initial message for a Sigtran connection to which one of the message processors has not been assigned and wherein the method further comprises assigning one of the message processors to the Sigtran connection for which the initial message is intended to initiate establishment using a load balancing algorithm.
7. The method of claim 6 wherein assigning one of the message processors to the Sigtran connection using a load balancing algorithm includes a maintaining a group count for each of the message processors, where the group count is indicative of a number of Sigtran connections assigned to each message processor, calculating, for each message processor, a group count difference between the group count for the message processor and a lowest group count of the message processors, and including, as connection distribution candidates, message processors having a group count difference that is less than a link distribution threshold.
8. The method of claim 1 comprising detecting failure and reconnection of one the message processors and, in response, using the reconnected message processor as a candidate for Sigtran connection distribution.
9. The method of claim 1 wherein whether the message is an initial message or a subsequent message includes determining that the message is a subsequent message associated with a Sigtran connection, determining whether one of the message processors has been assigned to the connection includes determining that one of the message processors has been assigned to the connection and wherein forwarding or dropping the message includes forwarding the message to the message processor assigned to the connection.
10. The method of claim 1 comprising forwarding egress traffic from the message processors of the STP to the SS7 peers in a manner that bypasses the connection load balancer.
11. A system for distributing Sigtran connections among signal transfer point (STP) message processors, the system comprising: a signal transfer point (STP) including a plurality of message processors for routing Sigtran messages received on Sigtran connections; a connection load balancer that operates as a front end to the message processors of the STP, wherein: the connection load balancer is configured to publish an Internet protocol (IP) address to SS7 peers; the message processors are initialized to listen on the IP address published by the connection load balancer; the connection load balancer is configured to receive a Sigtran message addressed to the IP address, determine whether the Sigtran message is an initial message or a subsequent message for a Sigtran connection, determine whether the Sigtran message is for a Sigtran connection to which one of the message processors has been assigned, and forward the message to one of the message processors or drop the message based on whether the message is an initial message or a subsequent message and whether the Sigtran message is for a Sigtran connection to which one of the message processors has been assigned.
12. The system of claim 11 wherein the message processors comprise physical message processors of a physical STP.
13. The system of claim 11 wherein the message processors comprise virtual message processors of a virtual STP.
14. The system of claim 11 wherein the IP address is associated with a loopback interface of the message processors.
15. The system of claim 11 wherein the connection load balancer is configured to broadcast gratuitous address resolution protocol (ARP) or Internet control management protocol version 6 (ICMPv6) neighbor discovery messages that associate the IP address with a medium access control (MAC) address of the connection load balancer.
16. The system of claim 11 wherein the connection load balancer determines that the Sigtran message is an initial message for a Sigtran connection to which one of the message processors has not been assigned and assigns one of the message processors to the Sigtran connection for which the initial message is intended to initiate establishment using a load balancing algorithm.
17. The method of claim 6 wherein the connection load balancer is configured to maintain a group count for each of the message processors, where the group count is indicative of a number of Sigtran connections assigned to each message processor, and wherein the connection load balancer is further configured to calculate, for each message processor, a group count difference between the group count for the message processor and a lowest group count of the message processors, and include, as connection distribution candidates, message processors having a group count difference that is less than a link distribution threshold.
18. The system of claim 11 wherein the connection load balancer is configured to detect failure and reconnection of one the message processors and, in response, using the reconnected message processor as a candidate for Sigtran connection distribution.
19. The system of claim 11 wherein the message processors are configured to forward egress traffic from the STP to the SS7 peers in a manner that bypasses the connection load balancer.
20. A non-transitory computer readable medium having stored thereon executable instructions that when executed by a processor of a computer control the computer to perform steps comprising: providing a connection load balancer as a front end to plural message processors of an STP; publishing, by the connection load balancer, an Internet protocol (IP) address to SS7 peers; initializing the message processors of the STP to listen on the IP address published by the connection load balancer; receiving, at the connection load balancer, a Sigtran message addressed to the IP address; determining, by the connection load balancer, whether the Sigtran message is an initial message or a subsequent message for a Sigtran connection; determining, by the connection load balancer, whether the Sigtran message is for a Sigtran connection to which one of the message processors has been assigned; and forwarding the message to one of the message processors or dropping the message based on whether the message is an initial message or a subsequent message and whether the Sigtran message is for a Sigtran connection to which one of the message processors has been assigned.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0024] The subject matter described herein will now be explained with reference to accompanying drawings of which:
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
DETAILED DESCRIPTION
[0036] Methods, systems, and computer readable media for distributing Sigtran connections among STP processors are disclosed.
[0037] Multi-homed SCTP associations 110 and 112 each have endpoints on two different message processors of STP 100. Accordingly, when one of message processors 102.sub.1-102.sub.N fails, traffic can be automatically switched to the other message processor associated with the multi-homed connection or association. However, the remaining path of the SCTP association will operate at reduced capacity. When a message processor becomes available, either after failure or during a scale up operation, new links have to be configured with an IP address for the new message processor. Such configuration can be labor or processor intensive for remote STP peers.
[0038]
[0039] Another issue with the scenario illustrated in
[0040]
[0041] As with the examples illustrated in
[0042] Even though the example illustrated in
[0043] As used herein, the term Sigtran connection will be used to refer to a connection established between SS7 endpoints over an IP network to carry Sigtran traffic. An example of a Sigtran connection is an SCTP association.
[0044] Each message processor 102.sub.1-102.sub.N also configures itself to listen to the IP addresses published by connection load balancer 150. For example, message processor 102.sub.1 may listen on IP addresses IP-STP-a and IP-STP-b. Configuring a message processor to listen may include executing sockets a listen command on a given IP address and port.
[0045] Connection load balancer 150 addresses at least some of the problems described above. By exposing only one set public IP addresses used to connect to STP message processors and continuing to use the same set of IP addresses despite message processors being taken into and out of service, changes in STP message processors will not require manual reconfiguration of links and linksets. STP 100 can scale up or scale down without changing the public IP address information. Changes in configuration will be transparent to SS7 peers 104 because new message processors will use IP addresses from the existing set of IP addresses published by connection load balancer 150. In
[0046] Connection load balancer 150 may also balance Sigtran connections among SS7 message processors 102.sub.1-102.sub.N. If message processing capacity at STP 100 is lost or decreases, connection load balancer 150 may redistribute links among available SS7 message processors and thereby avoids service disruption with remote SS7 peer 104. Similarly, if processing capacity is added at STP 100, connection load balancer 150 may rebalance Sigtran connections among available message processors in a manner that is transparent to remote SS7 peers.
[0047]
[0048] A subsequent message is a message, such as an SCTP cookie-echo message, selective acknowledgement (SACK), heartbeat, heartbeat ACK or a data message, that is sent after an initial message for an SCTP association. If the message is determined to be and initial message, connection load balancer 150 may assign the message to one of message processors 102.sub.1-102.sub.N using a load balancing algorithm, which will be described in detail below. If the message is determined to be a subsequent message associated with a Sigtran connection, connection load balancer 150 will route the message to the message processor 102.sub.1-102.sub.N previously assigned to the Sigtran connection. If the message is a subsequent message and no message processor has been assigned to the Sigtran connection, connection load balancer 150 may drop the message.
[0049]
[0050]
[0051]
[0052] After initialization, Sigtran connections can be distributed among processors at STP 100 using a load balancing algorithm.
[0053] In step C2, border gateway 156 queries its MAC table for the MAC address corresponding to IP address IP-STP-a. In this example, border gateway 156 locates the address MAC-a, which corresponds to an interface of connection load balancer 150. Accordingly, border gateway 156 forwards the message to connection load balancer 150.
[0054] In step C3, connection load balancer 150 applies a connection distribution or load balancing algorithm to determine which STP message processor should receive the connection request. In this example, it is assumed that message is sent, as a result of the load balancing algorithm, to message processor 102.sub.i. In one example, connection load balancer 150 may perform load balancing based on the following parameters in the algorithm. For each message processor, the connection load balancer 150 may maintain a group count. A group count represents the number of links from a remote peer that land on a given message processor. Initially, the group count will be set to 0 for all message processors. Each time a new Sigtran connection is assigned to a message processor, the group count is incremented. Another parameter that may be used in the load balancing algorithm is the link distribution threshold, which is valid across a linkset. The link distribution threshold is configurable value set by the user to define a threshold difference between group counts above which a message processor will not be considered for load balancing. For example, the link distribution threshold may be set to 4. When connection load balancer 150 receives a new Sigtran connection request, connection load balancer 150 determines the group count of each message processor 102.sub.1, 102.sub.i, and 102.sub.N. Connection load balancer 150 then identifies the message processor with the lowest group count and adds the link distribution threshold to the lowest group count. Any message processor having a group count that is greater than the sum of the lowest group count and link distribution threshold will not be considered for load balancing. Any message processor having a group count that is less than the sum of the lowest group count and the link distribution threshold will be considered as a connection distribution candidate. For example, if the group counts of message processors 102.sub.1, 102.sub.i, and 102.sub.N are 1, 3, and 4, respectively, and the link distribution threshold value is 2, then only the message processors 102.sub.1 and 102.sub.i will be considered as candidates for connection distribution.
[0055] Once the group of candidates for connection distribution is identified, connection load balancer 150 may select from one of the candidates, e.g., using a random selection algorithm, and forward the connection request to the assigned message processor (see step C4). Connection load balancer 150 may also create an entry in its association database that associates the Sigtran connection with the assigned message processor. An example of parameters that may be stored in the association database is as follows: [0056] {R-IP-x, R-IP-y, R-Port-->STP-MP-i}
In this example, R-IP-x and R-IP-y are IP addresses of the SS7 peer that sends an SCTP INIT message to connection load balancer 150. More than one IP address may be used for a single peer because the peer implements SCTP multi-homing. R-Port is the SCTP port number used by the sending node in the SCTP INIT message. STP-MP-i is an identifier used by connection load balancer 150 for the STP message processor assigned to the connection.
[0057] After a record such as that illustrated above is created by connection load balancer 150, subsequent messages, such as SCTP data or control messages sent over the same SCTP association, will be forwarded to the same STP message processor. For example, when an SCTP data or control message (also referred to as chunks) arrives at connection load balancer 150, connection load balancer 150 may perform a lookup in its association database using the source IP addresses and SCTP port number in the message. In this example, it is assumed that the source IP addresses are R-IP-x and R-IP-y and the source port is R-Port. Accordingly, connection load balancer 150 will locate the matching entry from the example above and forward the SCTP data message to the assigned STP message processor STP-MP-i.
[0058] It should also be noted that if an SCTP INIT message is received a connection load balancer 150 and a connection has already been established with one of the STP message processors, connection load balancer 150 will forward the message to the assigned message STP message processor. The SCTP association state machine on the assigned message processor will handle out of state messages, such as INIT messages for which a connection has already been established. Continuing with the above example, if an SCTP INIT message is received with source IP addresses R-IP-x and R-IP-y and a source SCTP port of R-Port, and connection load balancer locates a matching entry in its association database, connection load balancer 150 will forward the INIT message to the assigned message processor. The assigned message processor may receive the INIT message, and depending on the current state of the SCTP association state machine, process or drop the INIT message.
[0059] Returning to
[0060]
[0061] In step D2, border gateway 156 queries its MAC table using the IP addresses IP-STP-a and IP-STP-b from message and identifies the MAC addresses from connection load balancer 150. Border gateway 156, in step D2, forwards the Sigtran message to connection load balancer 150.
[0062] In step D3, connection load balancer 150 queries its association database to determine whether the received message is associated with Sigtran connection that has already been assigned to a message processor of STP 100. As stated above, the association database is to a database maintained by connection load balancer 150 to keep track of assignments of Sigtran connections (SCTP associations) to STP message processors. Parameters used in the association database to associate a Sigtran connection with a message processor may include source IP addresses and source ports. In this example, it is determined that messages with remote IP address R-IP-x on port P1 are associated with STP message processor STP-MP-i. In step D4, connection load balancer 150 forwards the message to message processor STP-MP-i. In step D5, message processor STP-MP-i accepts the data (or other subsequent) message and sends responses directly to the remote peer over the same SCTP association via the border gateway without passing through connection load balancer 150. Subsequent messages received by connection load balancer 150 for which no association entry is found in the association database are dropped.
[0063]
[0064]
[0065] STP 100 includes message processors 102.sub.1-102.sub.N. Each message processor includes Ethernet interfaces 106A and 106B respectively connecting to networks a and b. Each message processor 102.sub.1-102.sub.N may also include a processor 158 and an SS7/Sigtran function 159. SS7/Sigtran function 159 may perform SS7 functions, such as routing messages based on point codes and Sigtran functions, such as setting up multi-homed SCTP associations with remote peers. Each message processor 102.sub.1-102.sub.N may be a physical message processor or a virtual message processor. As physical message processors, each message processor 102.sub.1-102.sub.N may be a printed circuit board that is connected to other printed circuit boards in STP 100 through a communications medium 162, such as a bus or backplane. As virtual entities, each message processor 102.sub.1-102.sub.N may represent a virtual machine that runs on a hypervisor on cloud computing hardware. Thus, the subject matter described herein includes distributing connections among real or virtual message processors in a real or virtual STP.
[0066]
[0067] In step 202, message processors of the STP are configured with the IP addresses as an alias on the loopback interface. The message processors are also configured to listen on the IP addresses. The loopback interface is used so that the message processors will not broadcast ICMPv6 neighbor discovery or ARP messages concerning the IP addresses.
[0068] In step 204, a Sigtran message is received at the connection load balancer. The Sigtran message may be an SCTP message, such as an SCTP control or data chunk. The SCTP message may carry an SS7 over M3UA payload or other SS7 over Sigtran payload.
[0069] In step 206, it is determined whether the message is an initial message or a subsequent message. Determining whether the message is an initial message or a subsequent message may include examining the SCTP chunk type field of the message. The chunk type field carries a code that identifies the type of SCTP message. The value 0x01 indicates that the chunk type is INIT or initiation. The chunk type 0x00 indicates that the chunk type is data, or that the message carries data for the applications using the SCTP connection. Other chunk types of interest may include 0x0a, identifying a cookie echo message, which is part of the handshake procedure for establishing an SCTP association.
[0070] If the message is determined to an initial message in step 206, control proceeds to step 206A, where it is determined whether a message processor has been assigned to the connection. Determining whether a message processor has been assigned to the connection may include querying the association database maintained by connection load balancer 150 using the source IP addresses and source SCTP port in the message. If a matching record is located in the association database, then it is determined that a message processor has been assigned to the connection. If a record is not located in the association database, then it is determined that a message processor has not been assigned to the connection.
[0071] If the message is an initial message and a message processor has been assigned to the connection, control proceeds to step 208 where the message is forwarded to the message processor assigned to the connection. The SCTP association state machine on the assigned message processor will handle out of state messages, such as an INIT message for which a connection has already been established. If the message is an initial message and a message processor has not been assigned to the connection, control proceeds to step 210 where the Sigtran connection for which the initial message is intended to initiate establishment is assigned to one of the message processors and results in SCTP/Sigtran connection establishment between the assigned message processor and the remote SS7 peer. SCTP connection establishment involves the sending of an INIT acknowledgment message from the assigned message processor to the SS7 peer. The SS7 peer then sends a cookie-echo message to the assigned message processor via the connection load balancer. The connection load balancer treats the cookie-echo, data, and other non-INIT messages received from the SS7 peer over the SCTP association as subsequent messages for the SCTP association.
[0072] Assigning the Sigtran connection to one of the message processors may include applying the load balancing algorithm described above to identify connection distribution candidates based on group counts which indicate relative loading of the message processors with Sigtran connections, and then selecting one of the connection distribution candidates using a selection algorithm. Because the load balancing algorithm identifies connection distribution candidates with similar Sigtran connection loadings, the selection algorithm may be any suitable selection algorithm, such as random selection, round robin selection, etc. Once a message processor is selected, the final step associated with assigning the Sigtran connection to the message processor includes creating a record in the association database maintained by connection load balancer 150 that associates the source IP addresses and source SCTP port number from the message with the assigned STP message processor. After the connection is assigned to one of the STP message processors, control proceeds to step 210 where the message is forwarded to the assigned message processor.
[0073] Returning to step 206, if the message is determined to be a subsequent message, control proceeds to step 206B where it is determined whether a message processor has been assigned to the Sigtran connection with which the subsequent message is associated. As stated above, examples of subsequent messages include SCTP data and control messages (other than INIT messages). Determining whether a message processor has been assigned to the subsequent message may includes performing a lookup in the association database maintained by connection load balancer 150 using the source IP addresses and source SCTP port number in the message. If a match is located in the database, the connection may be determined to be assigned to one of the message processors. If a match is not located in the association database, the connection may be determined not to be assigned to one of the message processors.
[0074] If the message is a subsequent message for a Sigtran connection for which no STP message processor has been assigned, control proceeds to step 207B where the message is discarded. If the message is a subsequent message for a Sigtran connection for which a message processor has been assigned, control proceeds to step 210 where the message is forwarded to the message processor previously assigned to the Sigtran connection.
[0075] Thus, using the steps described herein, real and virtual STP message processors can be seamlessly added to or removed from a network without requiring remote nodes to be reconfigured with new IP addresses. The connection load balancer also balances loading of message processors in the STP. The subject matter described herein can be used to distribute messages among real or virtual STP message processors.
[0076] It will be understood that various details of the presently disclosed subject matter may be changed without departing from the scope of the presently disclosed subject matter. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.