PROVISIONAL RESPONSE HANDLING IN SIP CALLS

Various embodiments of the present technology generally relate to systems and methods for provisional response handling in session initiation protocol (SIP) calls, to maintain performance during directed denial of service (DDoS) attacks or bursts of response messages. A proxy server for SIP calls may initiate processing of a first SIP response, receive a second SIP response, and add the second SIP response to a message queue. The proxy server may then receive a third SIP response having a response identifier, compare the response identifier to responses in the message queue, and drop the third SIP response based on the response identifier matching a response in the message queue.

TECHNICAL FIELD

Various embodiments of the present technology generally relate to the handling of provisional session initiation protocol (SIP) responses within a network, such as between communication devices. More specifically, embodiments of the present technology relate to systems and methods for handling a large number of provisional responses within a selected period of time.

BACKGROUND

Mobile or internet communications can be used to connect remote systems and devices, allowing for distributed and efficient processing, resource use, and intercommunication. The Session Initiation Protocol (SIP) is a signaling protocol that may be used for initiating, maintaining, modifying, and terminating communication sessions between communication devices. An example embodiment of SIP is defined in Internet Engineering Task Force's (IETF) Request for Comments (RFC) 2543. SIP can be used for communication sessions that include voice, video, and messaging applications, such as mobile phone calling over voice over internet protocol (VOIP), voice over long-term evolution (VOLTE), internet telephony, and private IP telephone systems. Examples of SIP-based communications may include telephone calls, video conferencing, instant messaging, content sharing, and other forms of unified communications.

SIP may be based on request and response transactions, which may include a SIP request and at least one response. The request-response sessions may occur between SIP user agents or user equipment, with a user agent client (UAC) issuing requests and a user agent server (UAS) responding to the requests. A single user agent may act as both UAC and UAS for different transactions (e.g., a telephone device initiating a call or receiving a call), or may even act as both UAC and UAS within a single transaction. SIP responses typically comprise three-digit integer response codes, such as 1XX (provisional or informational), 2XX (success), 3XX (redirection), 4XX (client error), 5XX (server error), and 6XX (global failure).

A Proxy Call Session Control Function (P-CSCF) or Session Border Controller (SBC) (generally referred to as a SIP session proxy, SIP proxy, or proxy server) may include a SIP proxy that is a first point of contact for user agents in a mobile network, with all requests and responses to and from the user agents passing through the P-CSCF. The P-CSCF may receive requests from a UAC and process and forward them to the UAS, and receive responses from the UAS and process and forward them to the UAC. During a call, if a UAS sends multiple messages (e.g., provisional 1XX responses, and particularly those in the 18X range) in response to a SIP INVITE request in quick succession, the P-CSCF/SBC may queue the incoming responses without checking if they are retransmissions or different messages. The queuing mechanism may work fine when the incoming responses are limited before the final answer (e.g., 200 OK) comes. However, when the P-CSCF/SBC receives a burst of 18X responses, indicating a possible distributed denial of service (DDoS) attack, the queue may become full with potentially duplicative or useless responses. When the queue becomes full, further responses may be dropped and lost, even if those responses are new or useful. Accordingly, there exists a need for a solution to reliably handle bursts of provisional responses in SIP calls.

The information provided in this section is presented as background information and serves only to assist in any understanding of the present disclosure. No determination has been made and no assertion is made as to whether any of the above might be applicable as prior art with regard to the present disclosure.

BRIEF SUMMARY OF THE INVENTION

Various embodiments herein relate to systems, methods, and computer-readable storage media for performing provisional response handling in SIP calls. In an embodiment, a proxy server for session initiation protocol (SIP) calls may comprise one or more processors, and a memory having stored thereon instructions. The instructions, upon execution, may cause the one or more processors to initiate processing of a first SIP response, receive a second SIP response, and add the second SIP response to a message queue. The instructions may further cause the one or more processors to receive a third SIP response having a response identifier, compare the response identifier to responses in the message queue, and drop the third SIP response based on the response identifier matching a response in the message queue.

In some embodiments, the proxy server may add the third SIP response to the message queue based on the response identifier not matching a response in the message queue. The proxy server may receive the first SIP response from a user agent server (UAS), finish processing the first SIP response, forward the first SIP response to a user agent client (UAC), and retrieve a next response from a head of the message queue to process. According to some embodiments, the response identifier includes a Session Description Protocol (SDP) value. In some examples, the proxy server may start a queue timer when the first SIP response is received, and based on the queue timer being active, compare response identifiers for received responses to the responses in the message queue. The proxy server may further monitor for a trigger event for the message queue, and when the trigger event occurs, start a queue timer and drop all received responses while the queue timer is active. In some embodiments, the trigger event comprises a selected number of SIP responses received within a selected period of time. In another example, the trigger event comprises a threshold capacity of the message queue being reached.

In an alternative embodiment, a method may comprise operating a proxy server for session initiation protocol (SIP) calls, including initiating processing of a first SIP response, monitoring for a trigger event for a message queue used to store SIP responses received while another SIP response is being processed, starting a queue timer when the trigger event occurs, and dropping all received responses while the queue timer is active.

In an alternative embodiment, a memory device may store instructions that, when executed, cause a processor to perform a method comprising operating a proxy server for session initiation protocol (SIP) calls, including initiating processing of a first SIP response, receiving a second SIP response, and adding the second SIP response to a message queue used to store SIP responses received while another SIP response is being processed. The method may further comprise receiving a third SIP response having a response identifier, and comparing the response identifier to responses in the message queue. The method may include adding the third SIP response to the message queue when the response identifier does not match a response in the message queue, and dropping the third SIP response when the response identifier does match a response in the message queue. The method may also comprise monitoring for a trigger event for the message queue, starting a queue timer when the trigger event occurs, and dropping all received responses while the queue timer is active.

DETAILED DESCRIPTION

In the following detailed description of certain embodiments, reference is made to the accompanying drawings which form a part hereof, and in which are shown by way of illustration of example embodiments. It is also to be understood that features of the embodiments and examples herein can be combined, exchanged, or removed, other embodiments may be utilized or created, and structural changes may be made without departing from the scope of the present disclosure. The following description and associated figures teach the best mode of the invention. For the purpose of teaching inventive principles, some aspects of the best mode may be simplified or omitted.

In accordance with various embodiments, the methods and functions described herein may be implemented as one or more software programs running on a computer processor or controller. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays, and other hardware devices can likewise be constructed to implement the methods and functions described herein. Methods and functions may be performed by modules or nodes, which may include one or more physical components of a computing device (e.g., logic, circuits, processors, etc.) configured to perform a particular task or job, or may include instructions that, when executed, can cause a processor to perform a particular task or job, or any combination thereof. Further, the methods described herein may be implemented as a computer readable storage medium or memory device including instructions that, when executed, cause a processor to perform the methods.

FIG.1is a diagram of a system100configured for provisional response handling in session initiation protocol (SIP) calls, in accordance with certain embodiments of the present disclosure. The example system100may include an internet or other mobile network utilizing the SIP signaling protocol, although the present disclosure may apply to other communication networks. The system100may include a User Agent Client (UAC)102, a Proxy Call Session Control Function (P-CSCF) or Session Border Controller (SBC) (generally referred to as a SIP session proxy, but for simplicity referred to herein as P-CSCF)104, and User Agent Server (UAS)106. Components of system100may communicate by exchanging SIP requests and SIP responses via network connectivity components114.

Network connectivity components114may comprise components that enable communication over communication links, such as network cards, ports, radio frequency (RF) modules, telecommunications channels, cell towers, processing circuitry and software, or other communication components. Network connectivity components114may include metallic, wireless, cellular, or optical links, using various communication formats and protocols. In some examples, network connectivity components114may simply be referred to as a “network” by which systems or modules are connected or communicate.

UAC102and UAS106may each include a device, system, or module that operates as a client-side component for initiating or responding to SIP requests, to establish and participate in a communication session. UAC102and UAS106may include mobile devices such as cell phones, tablets, or modems, or other devices such as desktop computers, laptop computers, servers, set-top boxes, etc. In the examples herein, the UAC102may include a component that initiates a SIP request to a UAS106. The SIP signaling protocol specification defines a number of possible requests; in the examples herein, an “INVITE” request may be issued by the UAC102to invite the UAS106to join a communication session. The UAS106may ultimately receive the INVITE request, and send one or more responses back to the UAC102. The UAS106may be an application with which a user interacts, so upon receipt of a SIP request, some form of notification from the UAS106to the user might take place.

Prior to ultimate success or failure to establish a communication session, the UAS106may send one or more provisional responses (e.g., 18X) indicating a status of an attempt to establish a session. Some example 1XX provisional responses may include:180Ringing—Destination user agent received INVITE, and is alerting user of call.181Call is Being Forwarded—A UAS106can optionally send this response to indicate a call is being forwarded.182Queued—Indicates that the destination was temporarily unavailable, so the UAS106has queued the call until the destination is available. A server106may send multiple182responses to update progress of the queue.183Session Progress—This response may be used to send extra information for a call which is still being set up.199Early Dialog Terminated—Can be used to indicate to upstream SIP entities (including the UAC102) that an early dialog has been terminated.

P-CSCF104may be a proxy server that acts as an intermediary that can service requests or forward them to other UASs106or UACs102for servicing. Each message from UAC102or UAS106may be routed to P-CSCF104. The P-CSCF104may process each message, such as adding or removing its own identifier or address to the message, determining the destination user agent to which to forward the message, querying a location service such as a lightweight directory access protocol (LDAP) directory service, performing name mapping, or other operations. In some examples, messages may be routed through more than one proxy server104before arriving at the destination user agent.

As discussed herein, a UAS106may send multiple responses (e.g., provisional 18X responses) back to the UAC102via the P-CSCF104within a selected (generally short) time period. If the P-CSCF104is still processing a previous response when it receives a next response, it may add the next response to a message queue for processing in turn, so that each response may be forwarded to the UAC102. If too many responses are received too quickly, the message queue may fill up and additional responses may be dropped or lost. Bursts of responses may fill the message queue with duplicative or unhelpful responses, which can potentially result in the loss of more important or new responses. Such a barrage or burst of responses may occur as part of a distributed denial of service (DDoS) attack or other malicious activity, for example if a malicious actor gets control of the UAS106. This burst of responses can negatively impact communications or P-CSCF104operation within a system100(which may include additional components attempting to communicate or function).

To address bursts of SIP responses, the P-CSCF104may implement a provisional response handling system, such as via a provisional response module108. Each response from UAS106may include a Session Description Protocol (SDP) identifier. The SDP protocol may be a declaration, by a media endpoint, of its receiving specifications and capabilities, and may typically describe which IP Address is prepared to receive the incoming media stream, which port number is listening for the incoming media stream, what media type the endpoint is expecting to receive (typically audio), which protocol the endpoint is expecting to exchange information in, which compression encoding the endpoint is capable of decoding (codec), or other details. Provisional responses from a same UAS106may typically share a same SDP, although in some examples a single device can provide different SDP values in its responses. For example, changing the type of a call, or location of a receiver, etc. can result in changing the SDP. The P-CSCF104may use SDP data in the responses (or some other response identifier), a temporal proximity of responses, or both to filter out bursts of useless responses or DDoS attacks. An example of handling a disruptive burst of SIP responses is discussed further in regard toFIG.2.

FIG.2is a diagram200of a system configured for provisional response handling in SIP calls, in accordance with certain embodiments of the present disclosure. In particular,FIG.2may illustrate a process flow by which a P-CSCF204handles the receipt, processing, and forwarding of SIP requests and responses in a SIP session. The diagram200may include a UAC202, P-CSCF204, and a UAS206. The components of diagram200may correspond to the components discussed in regard toFIG.1.

The UAC202may send an invite request to P-CSCF204, which may process and forward the invite to UAS206. In response, the UAS206may send a first 18X provisional SIP response having a first SDP value, SDP1, to P-CSCF204. The P-CSCF204may begin to process the first 18X message, at208. While the processing208is occurring, further received 18X responses may be added to a message queue210, to be processed and forwarded to UAC202in turn.

A burst of 18X responses may be received at the P-CSCF204from the UAS206, which may have a same or different SDPs (e.g., all having SDPs1and2), and those responses may all be queued, at212. However, the message queue210may then become full. Further SDPs may then be dropped and lost, at214. The dropping of responses may include the loss of new SDPs3and4. At this point, the first 18X message may finish processing from208, and may be forwarded to UAC202. The queued 18X messages may be removed from the message queue210and processed one-by-one, being retransmitted to UAC202, including the duplicate messages with the same SDP (e.g., a queue full of SDP1 and SPD2 responses). However, the response for SDP3 and SDP4 may never be forwarded to UAC202. Accordingly, an improved implementation is described in regard toFIG.3.

FIG.3is a diagram300of a system configured for provisional response handling in SIP calls, in accordance with certain embodiments of the present disclosure. In particular,FIG.3may illustrate a process flow by which a P-CSCF304may selectively exclude SIP responses from being queued to improve performance. Responses added to the message queue may be depicted with a check mark, while responses excluded or dropped from the message queue may be depicted with an “X”. The diagram300may include a UAC302, P-CSCF304, and UAS306. The components of diagram300may correspond to the components discussed in regard toFIGS.1and2.

As withFIG.2, a UAC302may issue an “invite” request, which is forwarded from P-CSCF304to UAS306. In response, UAS306may issue a first response having a provisional code 18X and a first SDP value, SDP1, which P-CSCF304may begin processing, at308. A queue timer may also be started at this point, which may optionally be used for controlling or mediating responses to add to the queue.

The queue timer may be a selected duration that counts down until it expires or ends, and during which time the P-CSCF304may modify its operations or how it handles incoming responses from UAS306. For example, the timer may be active during the window when 18X responses may be received (e.g., starting when a first 18X response is received and ending when a “200-OK” or other response indicating that the call has connected or failed). If the queue timer ends and another 18X response is received, the timer may be restarted. While the timer is active, the P-CSCF304may compare incoming responses to responses already stored to a message queue, and may drop or discard responses that appear duplicative (e.g., based on SDP values of the responses). In another example, if a certain number of 18X responses are received while the timer is running, it may cause the P-CSCF304to begin selectively excluding certain responses (e.g., duplicative responses) from the message queue. In another example, receiving a certain number of 18X responses within a selected time frame may cause the queue timer to start, and the P-CSCF304may exclude certain responses from the message queue the entire time the timer is running. In yet another example, no queue timer may be used, and the P-CSCF304may selectively exclude certain responses from the message queue at all times or based on other triggers. Other embodiments of employing a queue timer are also possible. The timer may be prematurely ended, the message queue may be emptied, or both upon certain triggers, such as receiving a 200-OK response or other response indicating the end of the 18X or provisional response period. For the purposes of the example ofFIG.3, the P-CSCF304may selectively exclude provisional responses sharing an SDP value with a response already in the message queue while the queue timer is active.

At point310, the message queue may be empty while the first provisional response, with an SDP1 value, is currently being processed at the P-CSCF304. Within a selected period of sending the first provisional response or receiving the INVITE message, the UAS306may issue a burst of additional 18X responses to the P-CSCF304. The selected period may include, e.g., a selected number of milliseconds, a selected number of processor clock ticks or other processing cycles, a functional or operational window (such as after an INVITE message and before a “200-OK” message), or some other duration delineation. The UAS306may issue an 18X response with the value of SDP1. The P-CSCF304may compare the SDP value of the response with SDP values for any responses currently in the message queue310. Because the initial SDP1 response is being processed and is not in the message queue310, the current SDP1 response may be added to the queue, reflected by the check mark inFIG.3. The next response may have the value of SDP2, which also does not match any response in the message queue, and may therefore be added to the queue.

At this point312, the message queue now includes 18X responses having SDP values of SDP1 and SDP2. Additional provisional 18X responses in the burst having values of SDP1 and SDP2 are subsequently dropped, indicated by an “X” mark inFIG.3.

At314, the P-CSCF204has finished processing the first 18X SDP1 response, and forwards it to UAC302. Additional queued responses may be retrieved and processed one-by-one, starting with the first response in the message queue-currently another SDP1 response, at316. The message queue only includes an SDP2 response, so that the next 18X SDP2 response received from UAS306is dropped. The next 18X response may have an SDP value of SDP3, which does not match any messages in the queue, and therefore the response is added to the queue. At318, the queue now includes responses having SDP values of SDP2 and SDP3.

At320, the example queue timer completes or ends. Afterward, a next 18X response is received at the P-CSCF304from UAS306, having an SDP value of SDP1. The SDP1 response may be added to the message queue. Based on implementation, the SDP1 response may be added to the queue because the queue does not currently have an SDP1 response, or because the queue timer is not currently active. For example, if the incoming response had the value of SDP2, and a response in queue318already had the SDP2 value, the incoming response may still be added to the queue because the timer is not currently active, according to certain embodiments. In other embodiments, responses with duplicative SDP values may be dropped from the queue regardless of the que timer status.

Receiving a next 18X response after the timer has completed may cause the P-CSCF304to restart the queue timer, at322. At point324, the message queue now includes responses having SDP values of SDP2, SDP3, and SDP1. The incoming burst of response from UAS306having any of those SDP values are therefore dropped. However, an incoming response with a new value of SD5 does not match any responses in queue324and therefore gets added to the queue. At this point, the processing of the latest 18X response completes (the first SDP1 retrieved from the queue at316), and is returned to UAC302.

A next response is retrieved from the head of the queue for processing, being an SDP2 response, at326. At328, the message queue now includes responses having SDP values of SDP3, SDP1, and SDP5. Accordingly, a next response from UAS306, having an SDP3 value, is dropped, but the next response having an SDP2 value is added to the queue. At point330, the queue now includes responses having SDP values of SDP3, SDP1, SDP5, and SDP2. The processing of responses at the P-CSCF304may continue as described. According to the depicted embodiment, the number of responses added to the message queue, and the number of duplicative responses being processed and forwarded to UAC302, has been greatly reduced relative to the embodiment ofFIG.2. The example ofFIG.3may improve overall performance of the P-CSCF304, and limit or eliminate the number of potentially useful and non-duplicative messages that get dropped from the message queue.FIG.4depicts another example embodiment of provisional response handling.

FIG.4is a diagram400of a system configured for provisional response handling in SIP calls, in accordance with certain embodiments of the present disclosure. In particular,FIG.4may illustrate a process flow by which a P-CSCF404may selectively exclude SIP responses from being queued to improve performance. Responses added to the message queue may be depicted with a check mark, while responses excluded or dropped from the message queue may be depicted with an “X”. The diagram400may include a UAC402, P-CSCF404, and UAS406. The components of diagram400may correspond to the components discussed in regard toFIGS.1and2.

While the embodiment ofFIG.3depicted a P-CSCF dropping incoming responses that have a duplicative SDP value with responses already in a message queue, that embodiment still allowed in responses having different SDP values. However, in some situations a UAS406may be configured to send out responses with a wide range of SDP values as part of a DDoS attack or similar performance-disrupting operation. By sending out responses with many different SDP values, the P-CSCF404performance may still be disrupted if only responses with duplicative SDP values are dropped, as in system300. Accordingly, the system400may be configured to drop all provisional responses when a selected number of responses are received within a selected period of time, regardless of whether the responses have same or different SDP values. In the example ofFIG.4, the P-CSCF404may only start the queue timer after a selected number of responses are received within a selected period of time, and all responses may be dropped while the queue timer is active.

In some examples, the embodiments ofFIGS.3and4may be combined. For example, the P-CSCF404may automatically compare incoming 18X responses to those already included in a message queue, and may drop all responses that have duplicative SDP values, without any associated timer being active. However, if a certain number of responses (or, e.g., a certain number of responses with different SDP values) are received within a selected period of time, the P-CSCF404may start a timer. While the timer is active, all incoming 18X responses may be dropped, regardless of whether their SDP value matches a response already in the queue. This example embodiment would prevent both duplicative responses from being queued, and also prevent the P-CSCF404from being overwhelmed by responses with different SDP values.

Turning now to the process flow ofFIG.4, a UAC402may issue an “invite” request, which is forwarded from P-CSCF404to UAS406. In response, UAS406may issue a first response having a provisional code 18X and a first SDP value, SDP1, which P-CSCF404may begin processing, at408. The UAS406may continue to send a burst of 18X responses to P-CSCF404, with some or all of the responses having different SDP values (e.g., SDP1 through SDP6). Each (or non-duplicative) response may be added to a message queue, resulting in a queue with responses having SDP values from SDP1 to SDP6, at410.

The P-CSCF404may monitor a number of responses received in a period of time (e.g., a selected actual time duration, a number of processor cycles, or other duration), or a queue fill threshold. For example, when a selected number “X” of 18X responses are received within a selected period of time “Y”, the P-CSCF404may start a queue timer, at412. In another example, if the P-CSCF404determines that the queue is, e.g., 80% full, the P-CSCF404may start the queue timer. The amount of responses, the time within which the responses are received, or the queue fill threshold may be configurable settings for the P-CSCF404. As described above, the queue timer may count down or decrement until it expires or ends. While the queue timer is active, the P-CSCF404may be configured to drop all incoming responses from UAS406(or only selected types of responses, such as 18X responses). Accordingly, the next received response having an SDP value of SDP1 may be dropped, even though there is no response with SDP1 in the queue410.

At414, the P-CSCF404may finish processing the initial 18X response, and forward the response to UAC402. A next received response, having the SDP3 value, may be dropped because the queue timer is still active. Meanwhile, at416, the P-CSCF404may retrieve the next response (SDP2) from the head of the message queue for processing. The current state418of the message queue may accordingly include responses having SDP values of SDP3, SDP4, SDP5, and SDP6. The continuing burst of response from UAS406may include SDP2, SDP8, and SDP9, all of which may be dropped because the queue timer is still active. This may occur even though none of SDP2, SDP8, and SDP9 are duplicative with responses in the queue416.

At420, the queue timer may complete or expire. After the timer expires, additional responses from UAS406may be received. The P-CSCF404may monitor the incoming responses over time to determine whether to restart the timer. The incoming responses may include a first response having an SDP1 value, which may be added to the queue because the timer is not active and the SDP value is not duplicative with other responses in the queue418. A second SDP1 response may also be received, which may be dropped for being duplicative with the SDP1 response that was just added to the queue. A next response may have an SDP8 value, which may also be added to the queue for not being duplicative with an existing queue entry. Accordingly, the queue at422may include responses with SDP values of SDP3, SDP4, SDP5, SDP6, SDP1, and SDP8.

As the burst of responses received after the timer expired at420may include “X” 18X responses received in “Y” time, the P-CSCF404may restart the queue timer at424. Alternately, the P-CSCF404may determine whether the message queue is still over a selected threshold full when the timer expires, and restarts the timer as soon as it is determine the queue is the selected percentage or amount full. Accordingly, the subsequently received response (SDP2 and SDP5) may be dropped, regardless of whether they are duplicative with existing responses in the queue422. The P-CSCF404may complete processing the current response and forward it to UAC402, and retrieve a next response from the head of the queue, as appropriate. A method for provisional response handling is described in regard toFIG.5.

FIG.5depicts a flowchart500of an example method for provisional response handling in SIP calls, in accordance with certain embodiments of the present disclosure. In particular, the method ofFIG.5depicts an example process for selectively dropping or not queuing provisional SIP responses that have a duplicative session description protocol (SDP) identifier or value with responses in a message queue. The method may be performed by a proxy call session control function (P-CSCF), such as P-CSCF ofFIGS.1-4or provisional response module (PRM)108ofFIG.1.

The method may start at502, and then may include receiving a first provisional or 18X response as part of a SIP communication session (e.g., after forwarding an invitation request from a UAC to a UAS), at504. The method may optionally include starting a queue timer based on receiving a provisional response when the timer is not active. In some embodiments, the queue timer may be started when the P-CSCF determines that a message or response queue has reached a selected threshold (e.g., a percentage full or a number of responses queued), rather than whenever a provisional response is received. The selective discarding or dropping of responses may optionally only be performed when the timer is active (and therefore potentially when message queue is becoming too full). The method may include processing the received 18X response, at506.

At508, a determination may be made whether the current 18X response processing operation has been completed. If it has, a determination may be made whether the message or response queue is empty, at510. If it is, then all response processing has been completed, and the method may end, at514. However, if the queue is not empty, the method may include retrieving a next 18X response from the head of the queue, at512, and processing the response, at506.

If processing of the current 18X response is not complete, at508, the method may include determining whether a next 18X response has been received, at516. If not, the method may include continuing to process the current 18X response, at506. However, if a next 18X response has been received, the method may include determining whether the queue timer is still running, at518. If not, the method may include restarting the queue timer, at520.

When the queue timer is running (from518or520), the method may include determining whether the most recently received 18X response (from516) has an SDP value that is the same as a response already in the message queue, at522. If not, the method may include queueing the received 18X into the message queue, at524. However, if the SDP value of the received 18X response does match one from the queue, the method may include dropping the 18X response without queueing it, at526. After queueing or dropping the most recent 18X response, the method may include continuing to process the current 18X response, at506.

As described herein, maintaining a timer may be optional for selectively discarding 18X responses that have duplicative SDP values with responses in the queue. However, the timer provides extensible solution options for provisional response handling in SIP calls. Another example of provisional response handling employing a queue timer is described in regard toFIG.6.

FIG.6depicts a flowchart600of an example method for provisional response handling in SIP calls, in accordance with certain embodiments of the present disclosure. In particular, the method ofFIG.6depicts an example process for selectively dropping or not queuing provisional SIP responses that have a duplicative session description protocol (SDP) identifier or value with responses in a message queue. The method may be performed by a proxy call session control function (P-CSCF), such as P-CSCF ofFIGS.1-4or provisional response module (PRM)108ofFIG.1.

The method may start at602, and then may include receiving a first provisional or 18X response as part of a SIP communication session (e.g., after forwarding an invitation request from a UAC to a UAS), at604. The method may include processing the received 18X response, at606.

At608, a determination may be made whether the current 18X response processing operation has been completed. If it has, a determination may be made whether the message or response queue is empty, at610. If it is, then all response processing has been completed, and the method may end, at614. However, if the queue is not empty, the method may include retrieving a next 18X response from the head of the queue, at612, and processing the response, at606.

If processing of the current 18X response is not complete, at608, the method may include receiving one or more additional 18X responses, at616. When a new response is received, the method may include determining whether a queue timer is active, at618. The queue timer may comprise a default or configured amount of time that may count down until it expires, and which may adjust or influence what SIP responses, if any, are queued while the timer is active. If the timer is active, the method may include dropping the one or more additional 18X responses, at620. The 18X responses may be dropped whether or not the SDP values for the responses match SDP values of responses already in a message queue. In another embodiment, the method may include dropping only responses that have an SDP value that matches an SDP value from the message queue. After dropping the one or more 18X responses, the method may include continuing to process a current 18X response, at606.

If the queue timer was not active, at618, the method may include queueing the one or more additional 18X responses. In some examples, all of the 18X responses received while the timer is inactive may be queued. In other embodiments, duplicative 18X responses, or those having an SDP value the same as a response already in the queue, may be dropped rather than queued.

Once the one or more additional 18X responses have been queued (or dropped) at622, the method may include determining whether a trigger has been reached, such as whether a selected number of 18X responses have been received within a selected period of time or duration, at624. In another example, the trigger may be whether the message queue has reached a capacity threshold (e.g., 50% full) or selected number of queued responses. The selected number of received responses, the selected time period over which the number of received responses is checked, the selected queue capacity threshold, or the selected number of queued responses may be preconfigured or fixed, or may be configurable (e.g., via a command line interface for a P-CSCF). If the trigger has been reached, the method may include starting the queue timer, at626. The duration of the queue timer may similarly be preconfigured or fixed, or configurable. Once the queue timer has been started at626, or if the trigger has not been reached at624, the method may include continuing to process the current 18X response, at606. An example computing system configured to perform the operations and processes described herein is shown inFIG.7.

FIG.7illustrates an apparatus700including a computing system701that is representative of any system or collection of systems in which the various processes, systems, programs, services, and scenarios disclosed herein may be implemented. For example, computing system701may be an example of UAC102, UAS106, P-CSCF/SBC104, or PRM108ofFIG.1. Examples of computing system701include, but are not limited to, server computers, desktop computers, laptop computers, routers, web servers, cloud computing platforms, and data center equipment, as well as any other type of physical or virtual server machine, physical or virtual router, container, communications network equipment, and any variation or combination thereof.

Computing system701may be implemented as a single apparatus, system, or device or may be implemented in a distributed manner as multiple apparatuses, systems, or devices. Computing system701may include, but is not limited to, processing system702, storage system703, software705, communication interface system707, and user interface system709. Processing system702may be operatively coupled with storage system703, communication interface system707, and user interface system709.

Processing system702may load and execute software705from storage system703. Software705may include and implement a provisional response handling process706, which may be representative of any of the operations for monitoring SIP call responses (e.g., provisional 18X responses) for frequency, content, identifiers, or other factors, and determining when to queue responses and when to selectively drop responses to improve system performance, as discussed with respect to the preceding figures. When executed by processing system702to perform provisional response handling, software705may direct processing system702to operate as described herein for at least the various processes, operational scenarios, and sequences discussed in the foregoing implementations. Computing system701may optionally include additional devices, features, or functionality not discussed for purposes of brevity.

In some embodiments, processing system702may comprise a micro-processor and other circuitry that retrieves and executes software705from storage system703. Processing system702may be implemented within a single processing device but may also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing system702may include general purpose central processing units, graphical processing units, application specific processors, and logic devices, as well as any other type of processing device, combinations, or variations thereof.

In addition to computer readable storage media, in some implementations storage system703may also include computer readable communication media over which at least some of software705may be communicated internally or externally. Storage system703may be implemented as a single storage device but may also be implemented across multiple storage devices or sub-systems co-located or distributed relative to each other. Storage system703may comprise additional elements, such as a controller, capable of communicating with processing system702or possibly other systems.

Software705(including provisional response handling process1006among other functions) may be implemented in program instructions that may, when executed by processing system702, direct processing system702to operate as described with respect to the various operational scenarios, sequences, and processes illustrated herein.

In general, software705may, when loaded into processing system702and executed, transform a suitable apparatus, system, or device (of which computing system701is representative) overall from a general-purpose computing system into a special-purpose computing system customized to implement the systems and processes as described herein. Indeed, encoding software705on storage system703may transform the physical structure of storage system703. The specific transformation of the physical structure may depend on various factors in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the storage media of storage system703and whether the computer-storage media are characterized as primary or secondary storage, as well as other factors.

While some examples provided herein are described in the context of internet-based or 5G communication networks operated in a cloud environment, it should be understood the systems and methods described herein are not limited to such embodiments, and may apply to a variety of other communication networks and resource discovery request environments and their associated systems. As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method, computer program product, and other configurable systems. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more memory devices or computer readable medium(s) having computer readable program code embodied thereon.