The subject matter of this application is generally related to telecommunications. In addition, the subject matter of this application generally relates to performing queries in a logic routing grid or cascading logic routing grid.
Telecommunication providers provide the service of routing calls among other services. Each provider may select from several carriers to route a call to a particular destination. When a routing path is selected or constructed based on cost, this is referred to as least-cost routing. In order to select the least expensive method for routing a call, a telecommunications service provider will perform queries on static information known by that provider. Based on the query results, routing instructions are constructed. Currently, only one node, or component, can he queried at any time and only static data is available at the query initiating node. Since the capabilities and routing paths vary between constructing of routing instructions, there is a need for dynamic querying based on changing information at the query transmitting node. There is also a need to query beyond one node or component to provide for more accurate routing cost calculations and routing paths and faster, more efficient routing.
The present disclosure relates generally to performing cascading routing queries in a logic routing grid. In an embodiment, the logic routing grid comprises a plurality of interconnected nodes, wherein each node has at least one capability. Each node may have capabilities that differ from other nodes. Further, the capabilities of the nodes are accessible by at least one of the nodes, such as a first root node that is adjacent to: the nodes. The method includes selecting, at the first root node, one or more nodes to process a query. The selection of nodes is based on the capabilities of the nodes and parameters of the query. Once the nodes are selected, a first root node transmits the query from the first root node to at least one of the one or more selected nodes. Upon completing the processing of the query by the one or more selected nodes, a response is received at the first root node from at least one of the one or more selected nodes. The response includes specifications for routing data. Based on the response, the first root node forms routing instructions based on the specifications for routing data received in the response.
In an additional embodiment, the query is performed in a cascading logic routing grid. The cascading logic routing grid comprises a plurality of interconnected nodes and at least one root node. Each node has at least one capability, such that the capabilities vary among the nodes. Further, the capabilities of the nodes are accessible by one or more root nodes adjacent to the nodes. In addition, a subset of the capabilities comprises information defining logical connections between the nodes. The method includes selecting, at a first root node, a first logical connection of one or more nodes to process a query. The selection is based on the capabilities of the nodes, the logical connections between the nodes, and parameters of the query. Once the nodes have been selected, a query is transmitted from the first root node to at least one of the one or more nodes in the first logical connection. Upon completion of processing the query, a response is received at the first node from at least one of the one or more nodes in the first logical connection, the response comprising a plurality of specifications for routing data. Based on the specifications of the response, routing instructions are formed at the first root node.
In yet another embodiment, a logic routing grid for performing routing queries is provided. The logic routing grid comprises an array of interconnected nodes and at least one root node, such that the root node is configured to initiate and resolve queries. Each node is associated with respective capabilities, and the capabilities vary among the nodes. Each of the nodes comprises a communication interface configured to communicate with other nodes and root nodes. Each node also comprises an engine configured to process queries. Each of the root nodes comprises an analyzer configured to analyze the capabilities of the nodes and parameters of a query to select one or more nodes for processing the query. A database configured to store capabilities associated with adjacent nodes is an additional component in each root node. In addition, each root node comprises a communication interface configured to transmit the query to at least one of the one or more selected nodes and to receive a response from at least one of the one or more selected nodes, such that the response comprises specifications for routing data. Each of the root nodes also comprises a compiler configured to form routing instructions based on the specifications for routing data received in the response.
The foregoing summary and the following detailed description are better understood when read in conjunction with the appended drawings. Representative examples are shown in the drawings. However, it is understood that the examples are not limited to the specific methods and instrumentalities depicted herein. In the drawings:
It will be appreciated that the following description is intended to refer to specific examples of structure selected for illustration in the drawings and is not intended to define or limit the disclosure, other than in the appended claims.
The present disclosure provides methods and systems for routing and processing queries in a logic routing grid or cascading logic routing grid. Notably, the methods and systems provide means to query second tier (or higher) nodes removed from the initiating node. As a result, the querying node is able to construct routing instructions based on dynamic information. Further, the processing of the query across several nodes increases the speed of processing the query and receiving a query response.
By way of an overview, the available MTA jurisdictions include interstate, intra-state, local, and international. If a call is a cellular call, then the call would be within an intra or inter-MTA jurisdiction. If a call is a landline call, then the call would fall into the interstate, intra-state, local, or international jurisdictions.
One or more of the nodes, such as node 110, may be a root node comprising a communication interface 111, a database 113 an analyzer 114, a compiler 115, and optionally storage 116. The communication interface 111 is configured to allow for communication between root node 110, for example, and other nodes 120, 130, 140. Such examples of communication include transmitting a query from root node 110 to node 120 and receiving a response from node 120 at root node 110. A node may communicate using SCCP (Signaling Connection Control Part) User Adaption (SUA) Layer Protocol or Session Initiation Protocol (SIP), for example, when querying or communicating with other nodes.
As shown in
With further reference to
In addition, the nodes 110, 120, 130, 140 may optionally include a routing engine for processing queries received at a node 110, 120, 130, 140. Further, each node 110, 120, 130, 140 may include storage 116 for storing data at a respective node that may be retrieved in response to a query, for example.
The nodes 110, 120, 130, 140 may also be interconnected. For example, node 140 has a logic connection to nodes 120 and 130 as illustrated in
Each node 110. 120, 130, 140 has at least one capability, such as specifying available routing paths to and from that node, type of data stored at the node, location of data stored at the node, resources available for the node, carriers associated with the node, and whether the node is acting as a root node or a leaf node (i.e., nodes 120, 130, 140) for a particular query. The available capabilities may vary for each node 110, 120, 130, 140. In addition, the capabilities available for a particular node 110, 120, 130, 140 are accessible by other adjacent nodes or subsets 400, 460. Further, a subset 400, 460 of nodes may have its own capabilities. The subset capabilities account for the capabilities of the nodes 410, 420, 430, 440, and 461, 462, 463, 464, 465 within the subsets 400, 460. The capabilities may also specify how the subsets 400, 460 are logically connected to another node. For example, subset 460 is logically connected to root node 110 through logic connection A and subset 400 is connected to root node 110 through logic connection B which may be specified in the capabilities of the subset 400, 460. Thus, root node 110 may have knowledge of the subset 460 as represented by stored data in adjacent node 465 of the subset 460, without having direct knowledge of the capabilities of other nodes within the subset 460. In addition, cascading logic routing grids may be constructed from the connection information provided in the capabilities of a node.
Referring to
As one example for a query, a node acts as a routing engine that receives a query from a root node requesting routing options for establishing and maintaining a communication session. The query may include signaling information that includes information related to the communication session. The node processes the query by identifying, through the use of parameters of the signaling information, carriers or nodes that are capable of handling the communication session. Further processing of the query may include the node ordering the identified carriers according to the cost each carrier charges for the communication session. The ordering of the carriers in a list based on cost constitutes a response to the query, which is provided to the root node.
By way of an example, a query may be directed to determining whether a looping condition exists to decide whether to stop routing a call that is looping. When calls are routed, a call looping condition may occur when the call is handed off to a subsequent service provider that is unaware of the path taken by the call to reach said subsequent service provider. As a result, the subsequent service provider may route the call back through a prior service provider that has already processed and forwarded the call. In this manner, the call may continue to be routed and re-routed indefinitely amongst several providers without ever reaching its destination, resulting in unnecessary routing and usage of network resources.
In order to stop a looping condition, a query containing the looping condition inquiry for a looped call is sent from root node 110, for example, to adjacent node 120, which may be a routing server. Node 120 extracts the calling and called number pair from the query and compares the calling and called number pair against a database of recent calls within the node 120 to determine whether the number of appearances of the calling and called number pair has reached a predetermined threshold. If the calling and called number pair has appeared a sufficient number of times to meet the predetermined threshold, a release message is returned to root node 110 as a query response to stop routing the call. If the calling and called number pair has not met the predetermined threshold of appearances, a response is returned to the root node 110 that a looping condition has not been detected and that the root node 110 should continue to route the call according to least cost routing table stored at the root node 110, for example.
By way of another example, a query may be directed to determining the jurisdiction of a call and routing that call appropriately. The root node 110, for example, is loaded with normal least cost routing information. Another node, such as one of nodes 120, 130, for example, is loaded with routing information for intra-MTA calls. In this example, node 120 is loaded with the routing formation for intra-MTA calls. If the call is a cellular call, then the root node 110 may forward the query to intra-MTA routing node, i.e., the node 120. If the call is determined to be an intra-MTA call, then node 120 will return a query response with appropriate routing instructions to node 110. If the call is an inter-MTA call, node 120 will return a continue response to the query that allows the root node 110 to make a routing decision based on the jurisdiction determination for the call. The jurisdiction may be interstate, intra-state, local, or international.
Now turning to
Since the processing of the query may be distributed across several nodes, root node 110 may distribute the processing of a query over nodes 120 and 130, or over a subset 400, 460 of nodes, for example, using SIP or SUA as illustrated in
In some implementations, the location of data in storage 116 of a node 110, 120, 130, 140 may also determine how the processing of a query is distributed across nodes 110, 120, 130, 140. Such distribution is based on the location of the data stored among nodes 110, 120, 130, 140 in their respective storage 116.
Further, querying one node may prompt that node to query another node adjacent to it. For example, root node 110 may select node 130 to perform the query. Upon receiving the query, node 130 may then select adjacent node 140 to perform the query although node 140 was not selected by root node 110. Transferring the processing of the query from node 130 to node 140 on the processing of a query may be due to unavailable resources for processing the query at the selected node or the ability of another node or nodes or process the query more quickly than the selected node.
Once root node 110 has selected at least one of adjacent nodes 120, 130 to perform the query, root node 110 transmits the query to at least one of the adjacent nodes 120, 130 selected to perform the query through the communication interface 111 (S620).
Once the query is processed, root node 110 will receive a response from at least one or more of the selected nodes 120, 130 that received the query (S630). The response may contain specifications for routing data based on the results of the query. The root node 110 will form routing instructions based on the specifications for routing data received in the query response (S640). Constructing routing instructions may also include updating existing routing instructions based on the query response. The compiler 115 may construct the routing instructions, for example. Root node 110, or any of the nodes 120, 130, 140 that processed one or more portions of the query, may filter the available carriers to those which are capable of executing the routing instructions as specified in the query. The filtering of carriers may also be performed by the compiler 115, for example.
Although the system and methods have been described in connection with specific forms thereof, it will be appreciated that a wide variety of equivalents may be substituted for the specified elements described herein without departing from the spirit and scope of this disclosure as described in the appended claims.