Method, system, and computer-readable medium for lock-free communication processing at a network node
By adopting lock-free communication processing method at the network node and using the assignment mechanism of multiple queues and partition keys, the problems of disorderly processing and competition at the network nodes are solved, efficient message processing is achieved and memory requirements are reduced.
Patent Information
- Application Number
- CN201980067964.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-10-16
- Filing Date
- 2019-09-30
- Publication Date
- 2025-03-11
- Estimated Expiration
- 2039-09-30
AI Technical Summary
At network nodes, traffic requests from multiple users can lead to unordered processing of messages and competition conditions, resulting in problems of interrupting services, existing lock-based mechanisms increase memory requirements and bring other problems with difficulty in diagnosis.
Using the lock-free communication processing method, by configuring multiple queues at the network node, each queue is accessed by multiple threads, receiving messages associated with mobile subscribers, assigning messages to the appropriate queue based on the partition key, and processing messages in the queue in a first-in-first-out order by a separate thread.
Effectively alleviate competition conditions and message processing errors, avoiding the memory requirements of deadlock, hunger and lock overhead caused by lock-based systems.
Smart Images

Figure CN112889029B_ABST
Abstract
Description
[0001] Priority claim
[0002] This application claims the benefit of priority to U.S. patent application Ser. No. 16 / 162,112, filed on Oct. 16, 2018, the disclosure of which is incorporated herein by reference in its entirety. Technical Field
[0003] The subject matter described herein relates to network communication processing. More specifically, the subject matter described herein relates to methods, systems, and computer-readable media for lock-free communication processing at a network node. Background Art
[0004] A network node may receive a large amount of traffic from multiple users. For example, in a telecommunications network, a policy and charging rules function (PCRF) server may receive multiple concurrent requests for policy rules associated with the same subscriber, for example, via multiple interfaces and / or various network nodes. In this example, there is a high probability that messages associated with these requests may be processed out of order and / or that multiple messages that are subordinate or related may be processed in parallel by different processors or nodes, because, for example, according to the 3GPP standard, it is generally impossible to guarantee that the network elements of the remote party will interact with the network elements in a strictly defined order. When messages are processed out of order or multiple messages related are not processed by the same node or processor, there will be a problem of interrupting service. For example, a race condition (e.g., a condition involving shared resources and / or timing of multiple threads that produces inaccurate results) may occur, which prevents subscribers from accessing the network or related services. One way to alleviate the traffic processing problem is to implement a lock mechanism for each call flow so that messages in a given call flow wait until a lock is available for the call flow, thereby preventing at least some out-of-order processing events. However, lock-based mechanisms increase memory (eg, lock contention overhead) requirements and can also cause other problems (eg, contention, deadlock, starvation, priority inversion, convoying, etc.) that are difficult to diagnose and resolve. Summary of the invention
[0005] Methods, systems, and computer-readable media for lock-free communication processing at a network node are disclosed. A method occurs at a first network node configured to add messages to a plurality of queues, wherein each queue in the plurality of queues is accessed by one of a plurality of threads. The method includes: receiving a first message associated with a first mobile subscriber; determining that the first message is associated with a first partition key; assigning the first message to a first queue in a plurality of queues based on the first partition key, wherein the first queue includes messages associated with the first mobile subscriber, and wherein the first queue is accessible to a first thread in a plurality of threads; and processing the messages of the first queue by the first thread in a first-in, first-out order.
[0006] A system includes a first network node. The first network node includes at least one processor and a memory. The first network node is configured to add messages to a plurality of queues, wherein each queue in the plurality of queues is accessed by one of a plurality of threads. The first network node is further configured to: receive a first message associated with a first mobile subscriber; determine that the first message is associated with a first partition key; based on the first partition key, assign the first message to a first queue in the plurality of queues, wherein the first queue includes messages associated with the first mobile subscriber, and wherein the first queue is accessible to a first thread in the plurality of threads; and process the messages of the first queue by the first thread in a first-in, first-out order.
[0007] The subject matter described herein can be implemented in software in combination with hardware and / or firmware. For example, the subject matter described herein can be implemented in software executed by a processor. In an example embodiment, the subject matter described herein can be implemented using a computer-readable medium having computer-executable instructions stored thereon, which control the computer to perform steps when executed by the processor of the computer. Example computer-readable media suitable for implementing the subject matter described herein include non-transient devices, such as disk memory devices, chip memory devices, programmable logic devices, and application-specific integrated circuits. In addition, the computer-readable medium implementing the subject matter described herein can be located on a single device or computing platform, or can be distributed on multiple devices or computing platforms.
[0008] As used herein, the term "node" refers to at least one physical computing platform including one or more processors and memory.
[0009] As used herein, the terms "functionality" or "module" may refer to software in combination with hardware and / or firmware to implement the features described herein. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] The subject matter described herein will now be explained with reference to the accompanying drawings, in which:
[0011] Figure 1is a diagram illustrating an example communication environment for lock-free communication processing at a network node;
[0012] Figure 2 is a diagram illustrating an example lock-free communication process involving routing nodes;
[0013] Figure 3 is a diagram illustrating an example communication environment for lock-free communication processing involving session identifiers;
[0014] Figure 4 is a diagram illustrating an example lock-free communication process at a policy engine; and
[0015] Figure 5 is a diagram illustrating an example process for lock-free communication processing at a network node. DETAILED DESCRIPTION
[0016] The subject matter described herein relates to methods, systems, and computer-readable media for lock-free communication processing at network nodes. In a telecommunications network, a mobile subscriber may initiate or trigger multiple simultaneous or concurrent requests to a network node via various nodes (e.g., Diameter Routing Agent (DRA), Policy and Charging Enforcement Function (PCEF) Server, Online Charging Function (OCF), Application Server (AS), Mobility Management Entity (MME), Home Subscriber Server (HSS), User Data Repository (UDR), etc.) and / or interfaces (e.g., Gx, Rx, Sh, S9, Sy, etc.). In order to prevent or mitigate race conditions or other message processing errors or problems (e.g., messages are processed out of order), various techniques or mechanisms may be used. An example technique for handling or mitigating race conditions involving simultaneous requests from the same mobile subscriber may include a lock mechanism based on a subscriber identifier. In this example, the lock mechanism based on a subscriber identifier may work at a component or hop-by-hop level rather than at an end-to-end level. That is, for each component in the component pipeline involved in processing a request (e.g., a Diameter endpoint, a Diameter backend, a Diameter balancer, a database plug-in component, a Diameter manager, a policy engine, and a return Diameter manager), a lock may be acquired, the request or a portion of the request may be processed by the component, and then the lock may be released. Although a subscriber identifier-based lock mechanism or other lock-based mechanisms may be used to help mitigate race conditions, such mechanisms do not guarantee data consistency or ordered processing (e.g., when considering that multiple components are intertwined in different threads), and multiple requests associated may be processed concurrently. Moreover, lock-based mechanisms generally increase memory (e.g., lock contention overhead) requirements and may also cause other problems that are difficult to diagnose and resolve (e.g., contention, deadlock, starvation, priority inversion, convoys, etc.).
[0017] According to some aspects of the subject matter described herein, techniques, methods, systems and / or mechanisms for lock-free communication processing at a network node are disclosed. For example, a network node according to aspects described herein may be configured to add a message to a plurality of queues, wherein each of the plurality of queues is accessed by one of a plurality of threads (e.g., each queue may be accessed by only a single thread). In this example, the network node may also be configured (e.g., via appropriate programming) to: receive a first message associated with a first mobile subscriber; determine that the first message is associated with a first partition key; based on the first partition key, assign the first message to a first queue in a plurality of queues, wherein the first queue includes messages associated with the first mobile subscriber, and wherein the first queue is accessible by a first thread in a plurality of threads; and the messages of the first queue are processed by the first thread in a first-in, first-out (FIFO) order.
[0018] Advantageously, by using lock-free communication processing techniques and / or systems, network nodes (e.g., signal transmission points) can effectively mitigate contention conditions and / or other processing issues while also avoiding problems associated with lock-based systems, such as deadlock, starvation, and / or lock overhead memory requirements.
[0019] Reference will now be made in detail to various embodiments of the subject matter described herein, examples of which are illustrated in the accompanying drawings. Throughout the drawings, the same reference numerals will be used wherever possible to refer to the same or like parts.
[0020] Figure 1 1 is a diagram illustrating an example communication environment 100 for lock-free communication processing at a network node. In some embodiments, the communication environment 100 may include one or more nodes associated with an evolved packet core (EPC) network, a long term evolution (LTE) network, an LTE advanced network, a Diameter network, a fourth generation (4G) network, a third generation (3G) network, and / or another network.
[0021] The communication environment 100 may include a routing node (RN) 104, a policy engine (PE) 108, and a plurality of other network nodes, such as user equipment (UE), HSS(s), MME(s), PCEF(s), AS(s), etc. For example, the various nodes in the environment 100 may communicate using Diameter and / or other protocols. Diameter is an authentication, authorization, and accounting protocol for computer networks. Diameter applications extend the base protocol by adding new commands and / or attributes, such as commands and attributes used with the Extensible Authentication Protocol (EAP). A typical Diameter packet includes a Diameter header and a variable number of attribute-value pairs (AVPs) for encapsulating information associated with a Diameter message.
[0022] RN 104 may represent any suitable one or more entities (e.g., software executed on at least one processor, one or more computing platforms, etc.) for receiving, processing, routing and / or discarding messages, such as Internet Protocol (IP) messages, Transmission Control Protocol (TCP) messages, Diameter messages, Hypertext Transfer Protocol (HTTP) messages, and other messages. For example, RN 104 may include or represent a multi-protocol routing agent (MRA), an IP router, an IP switch, an LTE signaling router, a Diameter signaling router, a Diameter proxy server, a Diameter agent, a Diameter routing agent, a Diameter relay agent, a Diameter translation agent, or a Diameter redirect agent. RN 104 may include functionality for processing and / or routing various messages. In some embodiments, such functionality may be included in one or more modules (e.g., a session routing module).
[0023] RN 104 may include functionality for receiving, processing and / or exchanging or routing various messages, and may include various communication interfaces 102 for communicating with various nodes, such as a third generation partnership project (3GPP) LTE communication interface and other (e.g., non-LTE) communication interfaces. Some example communication interfaces 102 for communicating with various nodes may include one or more of an IP interface, a TCP interface, a UDP interface, an HTTP interface, an RDP interface, an SCTP interface, an RTP interface, a Diameter interface, an LTE interface, and / or an IMS interface. Some example Diameter interfaces may include Gx, Rx, S9, Sd, Sx, Sy, and Sh.
[0024] In some embodiments, RN 104 may include hardware (e.g., processor and memory) and software for performing the functions described herein. The example processor of RN 104 may include at least one of a physical processor, a general-purpose microprocessor, a single-core processor, a multi-core processor, a field programmable gate array (FPGA) and / or an application-specific integrated circuit (ASIC). In some embodiments, RN 104 and / or related processors may execute software stored in one or more non-transient computer-readable media (such as random access memory (RAM) or data storage devices). For example, software may be loaded into a memory structure to be executed by the processor of RN 104. In this example, some processors or threads executed thereon may be configured to operate independently of other processors or threads executed thereon.
[0025] In some embodiments, RN 104 may include a partition key assigner (PKA) 106. PKA 106 may represent any suitable entity (e.g., software executed at one or more processors) for determining and / or assigning a partition key to a message and / or inserting a partition key in a message. For example, RN 104 may be configured via one or more instructions from a network operator to generate a partition key and insert a partition key in some or all messages to be routed or sent to a specific network node (e.g., PE 108). In this example, RN 104 may be configured to use a hash algorithm and / or subscriber-related information to generate a partition key for a message, wherein the partition key is a value (e.g., usable by PE 108 or a related entity) that can be used to determine how to assign a message to a message processing queue. Example subscriber-related information that may be used to generate a partition key may include a session identifier, a sequence number, an E.164 number, an international mobile subscriber identity (IMSI) and / or a mobile station integrated services digital network (MSISDN) number.
[0026] In some embodiments, as an alternative to the case where the partition key is a hash value, the partition key can be one or more subscriber-related identifiers with little modification. In such embodiments, PE 108 or a related entity may have to perform additional steps as described below to identify the appropriate queue for message processing. For example, in the case where the partition key does not easily map to a queue (e.g., the partition key is not a hash output but rather an IMSI or other subscriber-related identifier), PE 108 or a related entity can identify the appropriate queue by using a hash algorithm in which the partition key is input and where the hash algorithm is designed to output a value that uniquely identifies the queue at PE 108.
[0027] PE 108 may represent one or more suitable entities (e.g., one or more computing platforms or devices) for generating policy information and / or providing policy information to various nodes in environment 100. For example, PE 108 may be capable of receiving, processing, and responding to policy-related messages. In some embodiments, PE 108 may include a multimedia policy engine (MPE) and / or a policy and charging rules function (PCRF). For example, PE 108 may be part of a 3GPP policy charging control (PCC) architecture. In this example, the PCC element may provide access, resource, and quality of service (QoS) control.
[0028] In some embodiments, PE 108 may include hardware (e.g., processor and memory) and software for performing the functions described herein. Example processors of PE 108 may include at least one of a physical processor, a general-purpose microprocessor, a single-core processor, a multi-core processor, an FPGA, and / or an ASIC. In some embodiments, RN 104 and / or associated processors may execute software stored in one or more non-transitory computer-readable media (such as data storage device 114). For example, the software may be loaded into a memory structure for execution by a processor of PE 108. In this example, some processors or threads executed thereon may be configured to operate independently of other processors or threads executed thereon.
[0029] In some embodiments, PE 108 may include one or more processors that perform actions related to the policy. In some embodiments, PE 108 may be implemented in any suitable system of a distributed computing system or one or more computers. For example, PE 108 may be implemented on a computing platform including one or more processor blades, each blade implementing a PCRF or other function.
[0030] In operation, PE 108 can act in real time or near real time to determine policy rules in the mobile network. PE 108 can operate at the network core and access user information and other dedicated functions in a centralized manner. PE 108 can aggregate information to or from the mobile network, operation support system, and other sources in real time or near real time, which can be useful for creating rules and automatically making policy decisions for each user active on the mobile network. By using PE 108, the mobile network can provide a variety of services, QoS levels, and charging rules.
[0031] In some embodiments, PE 108 can provide the ability to manage both network and user policies in real time or near real time. For example, PE 108 can efficiently and dynamically route network communications and prioritize them. PE 108 can also provide a unified view of user context based on one or more of device, network, location, and billing data. For example, PE 108 can provide key inputs to revenue assurance and bandwidth management.
[0032] PE 108 may include, or be communicatively coupled to, component pipeline(s) 118. Component pipeline(s) 118 may represent any suitable entity(ies) (e.g., one or more computing platforms or devices) for processing policy-related requests or other messages and / or for performing related actions. In some embodiments, component pipeline(s) 118 may represent various modules or functions within PE 108 or communicatively coupled to PE 108. In some embodiments, component pipeline(s) 118 may represent nodes or functions external to PE 108. Component pipeline(s) 118 may include components that handle or process Diameter messages in a serial or chain-like clique. For example, a thread may process a Diameter request by sending the Diameter message to a first component for processing, the first component may process the Diameter message before sending the Diameter message to a second component for processing, and so on. In this example, different messages may require different components in component pipeline(s) 118, and the order of the required components may vary depending on the message being processed. Example components of the component pipeline(s) 118 may include a Diameter endpoint, a Diameter backend, a Diameter balancer, a database plug-in component, or a Diameter manager.
[0033] In some embodiments, PE 108 may include a load balancer 110, a plurality of queues 112 for message processing, and a data storage device 114. Load balancer 110 may represent any suitable entity (e.g., software executed at one or more processors) for distributing and / or assigning messages to one of the plurality of queues 112. For example, PE 108 or load balancer 110 may examine messages (e.g., messages from RN 104) received at an input / output (I / O) layer (e.g., at a single generic TCP or SCTP message queue) and may determine how to distribute these messages to queues 112 for further processing based on a scheduling algorithm (e.g., a load balancing algorithm) and / or message data. In this example, assuming that Diameter messages are sent via TCP or SCTP packets, PE 108 or load balancer 110 may extract these Diameter messages from the received packets before assigning them to queues 112.
[0034] The data storage device 114 may represent any suitable one or more entities for storing data associated with load balancing or scheduling message processing. In some embodiments, the data storage device 114 may include a data repository 116 (e.g., a data table or other data structure) for storing the association between the partition key and the assigned queue. For example, after the message is assigned to the queue and if the corresponding partition key is not yet in the data repository 116, the PE 108 or the load balancer 110 may update the data repository 116 to indicate that the partition key is associated with that queue. In this example, the PE 108 or the load balancer 110 may use the partition key from the received message as a lookup value to check the data repository 116 to determine whether the received message is already associated with the queue. In some embodiments, the data storage device 114 may also include additional data and / or a data repository for associating other message data, partition keys and / or queues. For example, the data storage device 114 may include a data repository 116 (e.g., a data table or other data structure) for storing the association between the associated identifier of the subscription and the assigned queue and / or the association between the associated identifier of the subscription and the assigned partition key.
[0035] In some embodiments, PE 108 and / or another network node can be configured (e.g., via appropriate programming) to perform lock-free communication processing or related aspects thereof. For example, PE 108 can be configured to execute multiple threads to process messages received via RN 104 and / or from various network nodes. In this example, each queue among queues 112 can be assigned to a single thread, where related messages (e.g., messages associated with a particular subscriber) are added to the same queue. Continuing with this example, by causing each thread to process messages from the thread's (one or more) corresponding queues in FIFO order, related multiple messages are processed in serial order. As such, lock-free communication processing can be achieved without the need for lock-based message processing techniques at PE 108, which alleviates race conditions and / or other message processing issues (e.g., messages are processed out of order).
[0036] In some embodiments, the example lock-free communication processing technique may involve multiple threads N for processing messages and multiple queues M for storing or saving messages for processing, wherein M and N both represent integers, and M is greater than or equal to N. In some embodiments, each thread can be configured to access the same number of queues. For example, assuming that M is equal to 10 and N is equal to 5, each thread can be assigned to utilize two different queues. In some embodiments, threads can be configured to access different numbers of queues. For example, assuming that M is equal to 10 and N is equal to 4, one thread can be assigned to utilize one queue, while the other threads can each be assigned three different queues.
[0037] In some embodiments, one or more scheduling algorithms may be used to assign messages to queues 112 for message processing at PE 108 or another network node. For example, a hybrid affinity-based and load-balanced scheduling algorithm may be used to assign messages to queues 112 at PE 108. In this example, the scheduling algorithm may use one or more keys (e.g., partition keys, subscriber-related identifiers, and / or message data) to identify related messages (e.g., messages associated with the same mobile subscriber or multiple messages that are part of the same session or process). If the received message is associated with a queue (e.g., the partition key stored in the message has been assigned to a queue), then the received message will be assigned to the same queue. As such, the scheduling algorithm may exhibit queue affinity for related messages. Continuing with this example, the scheduling algorithm may distribute messages that are not associated with queues among queues 112 (e.g., Diameter session creation requests from mobile subscribers who have just logged into the mobile network) (e.g., load balancing via one or more various algorithms, such as weighted round-robin or weighted minimum load). By using the above-mentioned hybrid affinity-based and load-balancing scheduling algorithm or a similar scheduling algorithm, multiple related messages can be assigned to the same queue, and unrelated messages can be assigned across all queues 112 (e.g., load balancing), thereby allowing multiple related messages within a queue to be processed sequentially in an expected order (e.g., FIFO order) while allowing multiple unrelated messages between queues to be processed concurrently (e.g., in parallel).
[0038] In some embodiments, the message may be processed by RN 104 or PKA 106 prior to being received by PE 108 or a related entity so that the message includes a partition key or other information that indicates an appropriate queue for message processing at PE 108. For example, RN or PKA 106 may receive a Diameter request message associated with a mobile subscriber and may determine the partition key based on an identifier associated with the subscriber (e.g., an IMSI or an E.164 number) in the Diameter request message. In this example, RN 104 or PKA 106 may add the partition key to the Diameter request message (e.g., in a header field or in an AVP).
[0039] In some embodiments, configuring lock-free communication processing at PE 108 or another network node may involve providing configuration information to various nodes in environment 100. For example, configuration information related to lock-free communication processing may be provided in a Diameter message or other message using one or more AVPs.
[0040] Tables 1 through 3 include example PartitionKey AVP data. Each table may include information about settings and / or keys associated with different nodes or scopes (e.g., usage). Table 1 includes PartitionKey AVP data that may be associated with common usages (e.g., usages that are not node-specific). Specifically, Table 1 provides the key names, descriptions, and default values for the following keys: a "Diameter.Partition.Enabled" key, a "Diameter.Partition.Stateless" key, a "Diameter.Partition.Applications" key, a "Diameter.Partition.Commands" key, and a "Diameter.Partition.Debug" key.
[0041]
[0042]
[0043] Table 1 - Partition Key AVP Data – Public Scope
[0044] Table 2 includes PartitionKey AVP data that may be associated with routing node usage (eg, by RN 104). Specifically, Table 2 provides the key name, description, and default value for the "Diameter.Partition.Enabled" key.
[0045]
[0046] Table 2 - Partition Key AVP Data – Routing Node Scope
[0047] Table 3 includes PartitionKey AVP data that may be relevant to policy engine (eg, PE 108) usage. Specifically, Table 3 provides key names, descriptions, and default values for the following keys: "Diameter.Partition.Applications" key, "Diameter.Partition.KeyTag" key, and "Diameter.Partition.BufferImpl" key.
[0048]
[0049]
[0050] Table 3 - Partition Key AVP Data – Policy Engine Scope
[0051] It will be recognized that Figure 1 is for illustrative purposes only and the above Figure 1The various nodes and / or modules, locations and / or functionality described may be changed, altered, added or removed.
[0052] Figure 2 is a diagram illustrating an example lock-free communication processing involving RN 104. In some embodiments, PE 108 may receive a Diameter message with a partition key or related AVP associated with a lock-free communication processing technique or system, and may assign the Diameter message to a queue based on these partition keys or related AVPs. In such an embodiment, the partition key or related AVP may be inserted into the Diameter message by RN 104 or a related entity (e.g., PKA 106) before PE 108 receives the Diameter message.
[0053] refer to Figure 2 , RN 104 may be able to receive Diameter messages from multiple nodes and via multiple communication interfaces 102. In some embodiments, RN 104 or PKA 106 may be configured to examine various information (e.g., IMSI, E.164 number, sequence number, etc.) in received Diameter messages and may use this information when tagging or marking the Diameter message with a partition key (e.g., by inserting the relevant AVP in the Diameter message before sending the Diameter message to PE 108). In such embodiments, PE 108 may use the partition key and / or a load balancing algorithm to determine which queue to assign the Diameter message to.
[0054] In step 2001, RN 104 may receive a Diameter message containing an IMSI or other subscriber-related identifier (e.g., an E.164 number). For example, the Diameter message may be received from an MME, an HSS, a PCEF, or another node.
[0055] In step 2002, RN 104 may determine a partition key associated with the subscriber-related identifier and insert the partition key into the Diameter message, or may tag the Diameter message so that PE 108 may determine the appropriate queue for receiving the Diameter message. For example, RN 104 or a related entity (e.g., PKA 106) may be configured by a network operator or other entity to use an identifier associated with a particular subscriber stored in a Diameter message as the basis for a partition key. In this example, RN 104 or a related entity may use the subscriber-related identifier in the Diameter message to determine the partition key. Continuing with this example, the partition key may be determined by a hashing algorithm so that Diameter messages containing the same subscriber-related identifier are always assigned to the same queue among multiple queues for message processing.
[0056] In step 2003, RN 104 may send a Diameter message including the partition key to PE 108 for processing.
[0057] In step 2004, PE 108 may receive the Diameter message and may determine an appropriate queue for the Diameter message based on the partition key and / or the load balancing algorithm. For example, PE 108 may attempt to determine whether a previous Diameter message associated with the partition key has been assigned a queue by querying data repository 116. In this example, if the partition key has been assigned to a queue, PE 108 may add the Diameter message to the queue. Continuing with this example, if the partition key has not been assigned to a queue, PE 108 may use a load balancing algorithm (e.g., a weighted round-robin method, a random method, a least connections method, etc.) to select a queue for the Diameter message and may add this queue assignment result to data repository 116 for subsequent use.
[0058] In step 2005 , PE 108 may add the Diameter message to the queue determined in step 2004 .
[0059] In some embodiments, threads associated with processors of PE 108 may process messages in the queue in FIFO order or some other order (eg, order based on priority).
[0060] It will be recognized that Figure 2The foregoing description is for illustrative purposes only, and different and / or additional messages, nodes, and / or actions may be used. It will also be appreciated that the various messages and / or actions described herein may occur in a different order or sequence. For example, in an embodiment where PE 108 performs PKA functionality, PE 108 or a related entity may receive a Diameter message that lacks a partition key, and upon receipt may use the IMSI or other message data to determine a partition key and / or an appropriate queue for processing.
[0061] Figure 3 is a diagram illustrating an example communication environment 300 for lock-free communication processing involving session identifiers. In some embodiments, communication environment 300 may be similar to communication environment 100 and may include PE 108, RN 104, and / or other network nodes described above. For example, communication environment 300 may include one or more nodes associated with an EPC network, an LTE network, an LTE Advanced network, a Diameter network, a 4G network, a 3G network, and / or another network.
[0062] The communication environment 300 may include a server 302. The server 302 may represent any suitable one or more entities (e.g., software executed on at least one processor, one or more computing platforms, etc.) capable of communicating with the PE 108 via the RN 104 or directly (e.g., without traversing the RN 104). For example, the server 302 may be an application server, a user data repository (UDR), or an online charging system (OCS). In some embodiments, communication between the PE 108 and the server 302 may utilize one or more Diameter interfaces (e.g., Gx, Rx, S9, Sd, Sx, Sy, or Sh) and / or other interfaces.
[0063] In some embodiments, PE 108 can communicate with server 302 by receiving and / or sending Diameter messages or other messages that lack a partition key and / or lack an IMSI or E.164 number. In such embodiments, PE 108 or a related entity (e.g., load balancer 110) can utilize a data repository 304 containing associations between session identifiers and partition keys. For example, PE 108 can receive or generate a message that does not have a partition key or an associated partition key tag (e.g., IMSI). In this example, PE 108 or a related entity can query data repository 304 to identify the partition key associated with the message by using a session identifier associated with the message. If a partition key associated with the session identifier is found, PE 108 or a related entity can add the message to a queue corresponding to the partition key. If a partition key associated with the session identifier is not found, PE 108 or a related entity can add the message to a queue determined by a load balancing algorithm (e.g., a least used algorithm or a round-robin algorithm).
[0064] It will be recognized that Figure 3 is for illustrative purposes only and the above Figure 3 The various nodes and / or modules, locations and / or functions described may be changed, altered, added or removed.
[0065] Figure 4 is a diagram illustrating an example lock-free communication processing at PE 108. In some embodiments, PE 108 may originate and / or send a Diameter message without a partition key or related AVP associated with a lock-free communication processing technique or system. In such embodiments, PE 108 or a related entity may be configured to determine whether other message-related data (e.g., a session identifier) may indicate an appropriate queue to use.
[0066] refer to Figure 4 , PE 108 can communicate with OCS 400 via a Diameter Sy interface and / or other interfaces. OCS 400 can represent any suitable entity for monitoring policy usage and / or related charging information. For example, OCS 400 can maintain a policy counter for indicating how much spending or credit is left for a user or related device. In this example, PE 108 or another entity can send a Diameter request (e.g., a spending limit request (SLR) message or an spending status notification request (SNR) message) to OCS 400. Continuing with this example, OCS 400 can respond with a Diameter message indicating the requested overhead information (e.g., a spending limit answer (SLA) message or an overhead status notification answer (SNR) message).
[0067] In step 4001, PE 108 may determine a partition key associated with a session identifier. For example, PE 108 or a related entity may access data repository 304 and identify a partition key based on the session identifier. In this example, the session identifier may be associated with a flow for which PE 108 is to query OCS 400 for charging information.
[0068] In step 4002 , PE 108 may generate a Diameter Sy request (eg, a Diameter SNR message) associated with the session identifier, and may add the Diameter Sy request to a queue corresponding to the partition key determined in step 4001 .
[0069] In step 4003, PE 108 may send the Diameter Sy request to OCS 400 for processing.
[0070] In step 4004 , OCS 400 may generate a Diameter Sy reply (eg, a Diameter SNA message) and send the Diameter Sy reply to PE 108 , eg, directly or via RN 104 .
[0071] In step 4005, PE 108 may determine the partition key associated with the session identifier in the Diameter Sy reply.
[0072] In step 4006 , PE 108 may add the Diameter Sy reply to the queue corresponding to the partition key determined in step 4005 .
[0073] In some embodiments, threads associated with processors of PE 108 may process messages in the queue of step 4006 in FIFO order or some other order.
[0074] In some embodiments, PE 108 may include a partition key in a Diameter Sy request (e.g., within a related AVP), and OCS 400 may be configured to include the partition key in a Diameter Sy reply. In such embodiments, PE 108 or a related entity may inspect the message to determine the partition key and the corresponding queue to use, e.g., instead of querying data store 304 using a session identifier.
[0075] It will be recognized that Figure 4The foregoing description is for illustrative purposes only, and different and / or additional messages, nodes, and / or actions may be used. It will also be appreciated that the various messages and / or actions described herein may occur in a different order or sequence. For example, when communicating with other nodes (e.g., HSS, application server, and / or UDR), a similar data repository lookup involving a session identifier may be performed.
[0076] Figure 5 is a diagram illustrating an example process 500 for lock-free communication processing at a network node. In some embodiments, the example process 500 or portions thereof described herein may be performed at or by a PE 108, a RN 104, and / or one or more modules or nodes.
[0077] Referring to example process 500, a first message associated with a first mobile subscriber may be received at step 502. For example, a Diameter Credit Control Request (CCR) message may be sent from PCEF to PE 108 via RN 104. In this example, the Diameter CCR message may include an IMSI associated with a particular subscriber.
[0078] In step 504, it may be determined that the first message is associated with a first partition key. For example, PE 108 or a related entity may examine a Partition AVP in a Diameter message that contains a partition key indicating to which of a plurality of queues the message should be assigned.
[0079] In some embodiments, determining that the first message is associated with a partition key may include querying a data structure (e.g., data repository 304) containing an association between a session identifier and a partition key using the session identifier as a lookup value. For example, in the event that a message is generated or received without a partition key or an associated tag (e.g., IMSI), PE 108 or a related entity may query data repository 304 to determine whether the session identifier is associated with a partition key. In this example, if the session identifier is associated with a partition key, then PE 108 or a related entity may assign and / or add the message to a queue corresponding to the partition key. Continuing with this example, if the session identifier is not associated with a partition key, then PE 108 or a related entity may assign and / or add the message to a queue determined by a load balancing algorithm (e.g., a least used algorithm or a round-robin algorithm).
[0080] In some embodiments, the first message may include a Diameter message, a Diameter Gx message, a Diameter S9 message, a Diameter Sh message, a Diameter Sx message, a Diameter Sy message, a Diameter Rx message, a Diameter CCR message, or a Diameter Revalidation Request (RAR) message.
[0081] In step 506, the first message may be assigned to a first queue of the plurality of queues based on the first partition key, wherein the first queue includes messages associated with the first mobile subscriber and wherein the first queue is accessible to a first thread of the plurality of threads. For example, at an input / output level, PE 108 may receive a message including a partition key associated with the first queue, and as such, PE 108 may assign and add the message to the first queue, wherein the message may be processed in a FIFO manner.
[0082] In step 508, the messages of the first queue may be processed by the first thread in FIFO order. For example, the thread may be executing on a processor of PE 108. In this example, the thread may be configured to access one of the plurality of queues to obtain messages for processing, wherein the thread processes messages from the queues in a FIFO manner.
[0083] In some embodiments, after, before, or concurrently with processing messages in the first queue by the first thread, the network node (e.g., PE 108) may be configured to: receive a second message associated with a second mobile subscriber; determine that the second message is not associated with a partition key or a corresponding queue; assign the second message to a second queue among a plurality of queues using a load balancing algorithm, wherein the second queue is accessible to a second thread among a plurality of threads; and process the messages in the second queue in FIFO order by the second thread.
[0084] In some embodiments, the first partition key may be determined using an identifier associated with the subscriber stored in the first message. For example, the identifier associated with the subscriber may include a session identifier, a sequence number, an E.164 number, an IMSI, or an MSISDN.
[0085] In some embodiments, the first partition key may be stored in the first message by the second network node before the first message is received by the first network node. In some embodiments, the first network node may include a PCRF, an MPE, or a PE 108. In some embodiments, the second network node may include a RN 104, such as an MRA and / or a DRA. For example, RN 104 may determine the partition key of the message and may insert the partition key into a header portion of the message before routing or forwarding the message to PE 108.
[0086] It will be appreciated that while some aspects of the subject matter described herein have been discussed with reference to network nodes related to Diameter (e.g., RN 104 and PE 108), various other network nodes may utilize some aspects of the subject matter described herein. For example, any network node that receives multiple messages from a user or subscriber may use the features, mechanisms, and / or techniques described herein to perform lock-free communication processing.
[0087] It should be noted that the PE 108, RN 104, and / or functionality described herein may constitute a special purpose computing device, such as a telecommunications network node. In addition, the PE 108, RN 104, and / or functionality described herein may improve the technical field of communication processing. For example, by using lock-free communication processing techniques and / or systems, network nodes (e.g., signal transmission points) may effectively mitigate contention conditions and / or other processing issues while also avoiding issues associated with lock-based systems, such as deadlock, starvation, and / or lock overhead memory requirements.
[0088] It will be understood that various details of the subject matter described herein may be changed without departing from the scope of the subject matter described herein. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.
Claims
1. A method for lock-free communication processing at a network node, the method comprising: The following operations are performed at a first network node for performing lock-free communication processing and configured to add a message to a plurality of queues, wherein each queue of the plurality of queues is accessed by one of a plurality of threads: receiving a first message associated with a first mobile subscriber; determining that the first message is associated with a first partition key, wherein the first partition key is determined using an identifier associated with the subscriber, and wherein the first partition key is inserted into the first message by the second network node before the first message is received by the first network node; assigning a first message to a first queue of the plurality of queues based on a first partition key, wherein the first queue includes messages associated with a first mobile subscriber, and wherein the first queue is accessible to a first thread of the plurality of threads; as well as Messages in a first queue are processed in a first-in, first-out order using a first thread, wherein the processing includes processing first messages of the first queue in a serial manner using a plurality of downstream nodes.
2. The method of claim 1, comprising: receiving a second message associated with a second mobile subscriber; determining that the second message is not associated with the partition key or the corresponding queue; assigning, using a load balancing algorithm, a second message to a second queue of the plurality of queues, wherein the second queue is accessible to a second thread of the plurality of threads; as well as The messages in the second queue are processed by the second thread in a first-in, first-out order.
3. The method according to claim 1 or claim 2, wherein: Determining that the second message is not associated with the partition key includes querying a data structure containing an association between the session identifier and the associated partition key using the session identifier as a lookup value.
4. The method according to claim 1 or claim 2, wherein: The first message includes a Diameter message.
5. The method of claim 1 or claim 2, wherein: The first message includes a Diameter Gx message, a Diameter S9 message, a Diameter Sh message, a Diameter Sx message, a Diameter Sy message, a Diameter Rx message, a Diameter credit control request message, or a Diameter reauthentication request message.
6. The method of claim 1 or claim 2, wherein: An identifier associated with the subscriber is in the first message.
7. The method of claim 1, wherein: Subscriber-related identifiers include session identifiers, sequence numbers, E.164 numbers, International Mobile Subscriber Identity (IMSI), or Mobile Station Integrated Services Digital Network (MSISDN) numbers.
8. The method of claim 1, wherein: The second network node includes a multi-protocol routing proxy or a Diameter routing proxy.
9. The method of claim 1 or claim 2, wherein: The first network node comprises a policy and charging rules function, a multimedia policy engine or a policy engine.
10. A system for performing lock-free communication processing at a network node, the system comprising: A first network node, configured to perform lock-free communication processing and comprising: at least one processor; and Memory, wherein the first network node is configured to add the message to a plurality of queues, wherein each queue of the plurality of queues is accessed by one of the plurality of threads, wherein the first network node is further configured to: receiving a first message associated with a first mobile subscriber; determining that the first message is associated with a first partition key, wherein the first partition key is determined using an identifier associated with the subscriber, and wherein the first partition key is inserted into the first message by the second network node before the first message is received by the first network node; assigning a first message to a first queue of the plurality of queues based on a first partition key, wherein the first queue includes messages associated with a first mobile subscriber, and wherein the first queue is accessible to a first thread of the plurality of threads; and Messages in a first queue are processed in a first-in, first-out order using a first thread, wherein the processing includes processing first messages of the first queue in a serial manner using a plurality of downstream nodes.
11. The system of claim 10, wherein: The first network node is further configured to: receiving a second message associated with a second mobile subscriber; determining that the second message is not associated with the partition key or the corresponding queue; assigning, using a load balancing algorithm, a second message to a second queue of the plurality of queues, wherein the second queue is accessible to a second thread of the plurality of threads; as well as The messages in the second queue are processed by the second thread in a first-in, first-out order.
12. A system as claimed in claim 10 or claim 11, wherein: The first network node is further configured to query a data structure containing an association between the session identifier and the relevant partition key using the session identifier as a lookup value.
13. A system as claimed in claim 10 or claim 11, wherein: The first message includes a Diameter message.
14. A system as claimed in claim 10 or claim 11, wherein: The first message includes a Diameter Gx message, a Diameter S9 message, a Diameter Sh message, a Diameter Sx message, a Diameter Sy message, a Diameter Rx message, a Diameter credit control request message, or a Diameter reauthentication request message.
15. The system of claim 10 or claim 11, wherein: An identifier associated with the subscriber is in the first message.
16. The system of claim 10, wherein: Subscriber-related identifiers include session identifiers, sequence numbers, E.164 numbers, International Mobile Subscriber Identity (IMSI), or Mobile Station Integrated Services Digital Network (MSISDN) numbers.
17. The system of claim 10, wherein: The second network node includes a multi-protocol routing proxy or a Diameter routing proxy.
18. The system of claim 10 or claim 11, wherein: The first network node comprises a policy and charging rules function, a multimedia policy engine or a policy engine.
19. A non-transitory computer-readable medium comprising computer-executable instructions embodied in the non-transitory computer-readable medium, the computer-executable instructions, when executed by at least one processor of a first network node, causing the first network node to perform the method of any one of claims 1-9.
20. A computer program product comprising computer executable instructions which, when executed by at least one processor of a first network node, cause the first network node to perform the method according to any one of claims 1 to 9.
Citation Information
Patent Citations
System and method for managing VoLTE session continuity information using logical scalable units
US20160191363A1
Method and system for providing efficient receive network traffic distribution that balances the load in multi-core processor systems
US20170318082A1