Overload protection for SIP servers
First Claim
1. A method for operating a server a session initiation protocol (SIP) server having a maximum capacity for servicing requests, the method-comprising steps of:
- a) receiving a plurality of requests for an SIP message session, wherein said plurality of requests comprise;
session initiation requests, session modification requests, and requests for binding a user to an address;
b) classifying each request according to a value, wherein said classifying step comprises;
b.1) running a classification algorithm at run time, the classification algorithm comprising steps of;
b.2) receiving a rule set, each rule comprising headers and conditions, wherein the rules with a numerically higher priority value have precedence over the rules with a numerically lower priority value and wherein a first matching rule will be applied for the rules with a same priority value, and the rules are sorted in decreasing order of priority such that a matching process can be stopped after a first matching rule is found; and
wherein headers are classified as one of;
simple headers, pseudo-headers, and derived headers, and wherein, in conjunction with user-defined derived headers, the user is allowed to specify complex data types comprising structures and complex data variables associated with arrays, pointers, and scalars;
b.3) creating a condition table by taking a union of all conditions in the rules;
b.4) creating a header table by extracting a common set of headers from the condition table;
b.5) extracting the relevant headers from the header table;
b.6) determining a matching rule;
b.7) creating a bit vector table;
b.8) selecting the matching rule according to data in the bit vector table; and
b.9) applying the matching rule to place the request in an appropriate queue from among a plurality of queues comprising a high priority queue, a medium priority queue, and a low priority queue; and
wherein said value of the request is based upon a plurality of message types, the message types comprising;
register message;
presence subscription and notification;
bye messages;
specific destinations;
source of the message;
whether the message belongs to a session-in-progress;
whether the message belongs to a new session setup; and
within a message, retransmission of a message vs. the first instance the message is being sent;
c) determining a priority for handling the request according to the value, such that requests with higher values are assigned higher priorities;
d) placing each request in one of multiple queues according to its priority value; and
e) dropping the requests with the lowest priority when the plurality of requests are received at a rate that exceeds the maximum capacity.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for operating a server having a maximum capacity for servicing requests comprises the following steps: receiving a plurality of requests; classifying each request according to a value; determining a priority for handling the request according to the value, such that requests with higher values are assigned higher priorities; placing each request in one of multiple queues according to its priority value; and dropping the requests with the lowest priority when the plurality of requests are received at a rate that exceeds the maximum capacity. The server operates according to a session initiation protocol.
Classifying each request comprises running a classification algorithm. The classification algorithm comprising steps of: receiving a rule set, each rule comprising headers and conditions; creating a condition table by taking a union of all conditions in the rules; creating a header table by extracting a common set of headers from the condition table; extracting the relevant headers from the header table; determining a matching rule; creating a bit vector table; selecting the matching rule according to data in the bit vector table; and applying the rule to place the message in the appropriate queue.
163 Citations
1 Claim
-
1. A method for operating a server a session initiation protocol (SIP) server having a maximum capacity for servicing requests, the method-comprising steps of:
-
a) receiving a plurality of requests for an SIP message session, wherein said plurality of requests comprise;
session initiation requests, session modification requests, and requests for binding a user to an address;b) classifying each request according to a value, wherein said classifying step comprises; b.1) running a classification algorithm at run time, the classification algorithm comprising steps of; b.2) receiving a rule set, each rule comprising headers and conditions, wherein the rules with a numerically higher priority value have precedence over the rules with a numerically lower priority value and wherein a first matching rule will be applied for the rules with a same priority value, and the rules are sorted in decreasing order of priority such that a matching process can be stopped after a first matching rule is found; and
wherein headers are classified as one of;
simple headers, pseudo-headers, and derived headers, and wherein, in conjunction with user-defined derived headers, the user is allowed to specify complex data types comprising structures and complex data variables associated with arrays, pointers, and scalars;b.3) creating a condition table by taking a union of all conditions in the rules; b.4) creating a header table by extracting a common set of headers from the condition table; b.5) extracting the relevant headers from the header table; b.6) determining a matching rule; b.7) creating a bit vector table; b.8) selecting the matching rule according to data in the bit vector table; and b.9) applying the matching rule to place the request in an appropriate queue from among a plurality of queues comprising a high priority queue, a medium priority queue, and a low priority queue; and
wherein said value of the request is based upon a plurality of message types, the message types comprising;
register message;
presence subscription and notification;
bye messages;
specific destinations;
source of the message;
whether the message belongs to a session-in-progress;
whether the message belongs to a new session setup; and
within a message, retransmission of a message vs. the first instance the message is being sent;c) determining a priority for handling the request according to the value, such that requests with higher values are assigned higher priorities; d) placing each request in one of multiple queues according to its priority value; and e) dropping the requests with the lowest priority when the plurality of requests are received at a rate that exceeds the maximum capacity.
-
Specification