Session initiation protocol stack optimisation
Abstract
Apparatus comprising a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, characterised in that the apparatus is configured, for a Session Initiation Protocol message to be sent, to include in the message a pointer or pointers to one or more header fields of the message.

Term
1.2 yearsto projected expiry
Projected expiry 17 December 2027, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
15 claims: 5 independent, 10 dependent
- 1Apparatus comprising a Session Initiation Protocol agent (9) arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, characterised in that the apparatus is configured, for a Session Initiation Protocol message to be sent, to include (10) in the message a pointer or pointers to one or more header fields of the message.
- 7Apparatus comprising a Session Initiation Protocol agent (9) arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, characterised in that the apparatus is configured, for a received Session Initiation Protocol message, to identify (10) a pointer or pointers contained within or prefixed to the message, to locate a header field or fields within the message using the pointer(s), and to handle the message according to the located header field(s).
- 8A method of handling Session Initiation Protocol messages within a communications network, characterised in that the method comprises, at a sending Session Initiation Protocol agent, including (400) in or prefixing to the message a pointer or pointers to one or more header fields of the message, sending (500) the message to a peer Session Initiation Protocol agent and, upon receipt of the message at the peer agent, locating (800) a header field or fields within the message using the pointer(s), and handling (900) the message according to the located header field(s).
- 9A method of operating a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, characterised in that the method comprises, for a Session Initiation Protocol message to be sent, including (400) in the message a pointer or pointers to one or more header fields of the message.
- 15A method of operating a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, characterised in that the method comprises, for a received Session Initiation Protocol message, identifying a pointer or pointers contained within or prefixed to the message, locating (800) a header field or fields within the message using the pointer(s), and handling (900) the message according to the located header field(s).
Independent claims11
35 paragraphs, as filed
Technical Field
0001The present invention relates to a method and apparatus for optimising the handling of Session Initiation Protocol messages within the Session Initiation Protocol stack at network nodes.
Background
0002The Session Initiation Protocol (SIP) is a text-based protocol specified by the Internet Engineering Task Force (IETF) in RFC 3261, similar to Hypertext Transfer Protocol (HTTP) and Simple Mail Transfer Protocol (SMTP), for initiating interactive communication sessions between users. Such sessions include voice, video, chat, interactive games, and virtual reality. A key objective in the development of SIP was simplicity and the reuse of existing Internet mechanisms. Not only is SIP text based (where individual characters are encoded using the 8-bit UCS/Unicode Transformation Format (UTF-8) character set), at least the header portions of SIP messages are essentially human readable to simplify the message creation and debugging processes.
0003SIP messages are handled by SIP agents. A SIP agent may be present at a user terminal or at a network-based node, in particular at SIP proxies and SIP Application Servers (ASs). A particular SIP agent receiving a SIP message might in some cases only need to look at one or a small number of fields within a SIP message in order to handle a message, for example it may only need to look at the "To" field which contains a destination SIP address.
0004The human readable format of SIP message headers makes the parsing of messages at network nodes incorporating a SIP agent, a computationally difficult process. Parsing involves searching and interpreting the header for particular text strings, e.g. in order to identify the address or Universal Resource Identifier (URI) of the called party (e.g. "sip:bob@biloxi.com"). The problem is compounded by the fact that SIP does not specify a field order within the SIP header. Parsing is a particular problem in communication networks such as the IP Multimedia Subsystem (IMS) specified by 3GPP for the provision of multimedia services to mobile subscribers, where a message may pass though a large number of SIP nodes and be parsed separately at each, e.g. at a Call Session Control Function (CSCF) or SIP Application Server (AS). On some occasions it may even be necessary to parse a message multiple times within the same node (e.g. at different components within the node). This could be the case, for example, where multiple SIP servlets within multiple application server instances are deployed at the same node. It might also be the case when a SIP agent is implemented using components written in different programming languages (e.g. C++ and Java), so that the components cannot reuse each others parsing result. This could easily happen when third party software is used, or during other integration activities. In any case, the computational overhead introduced by handling messages within the SIP stack can be considerable, giving rise to resource problems particularly at nodes handling a high volume of SIP message traffic.
Summary
0005It is an object of the present invention to reduce the processing overhead associated with the handling of SIP messages at a SIP node. This object is achieved by introducing into a SIP message, or appending thereto, data which is in a machine-friendly format and which is either a translation of one or more text-based fields or points to the relevant fields.
0006According to a first aspect of the present invention there is provided apparatus comprising a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, characterised in that the apparatus is configured, for a Session Initiation Protocol message to be sent, to include in the message a pointer or pointers to one or more header fields of the message.
0007According to a second aspect of the present invention there is provided apparatus comprising a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, <b>characterised in that</b> the apparatus is configured, for a received Session Initiation Protocol message, to identify a pointer or pointers contained within or prefixed to the message, to locate a header field or fields within the message using the pointer(s), and to handle the message according to the located header field(s).
0008According to a third aspect of the present invention there is provided a method of handling Session Initiation Protocol messages within a communications network, <b>characterised in that</b> the method comprises, at a sending Session Initiation Protocol agent, including in or prefixing to the message a pointer or pointers to one or more header fields of the message, sending the message to a peer Session Initiation Protocol agent and, upon receipt of the message at the peer agent, locating a header field or fields within the message using the pointer(s), and handling the message according to the located header field(s).
0009According to a fourth aspect of the present invention there is provided a method of operating a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, the method comprising, for a Session Initiation Protocol message to be sent, including in the message a pointer or pointers to one or more header fields of the message.
0010According to a fifth aspect of the present invention there is provided a method of operating a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, the method comprising, for a received Session Initiation Protocol message, identifying a pointer or pointers contained within or prefixed to the message, locating a header field or fields within the message using the pointer(s), and handling the message according to the located header field(s).
0011The pointer or pointers may have a structured data format. The pointer or pointers may each comprise a location and a data size. The pointer or pointers may be included in the Session Initiation Protocol message header, in front of the text-based header fields. Alternatively, the pointer or pointers may be prefixed to the Session Initiation Protocol message.
0012There is also provided apparatus comprising a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, wherein the apparatus is configured, for a Session Initiation Protocol message to be sent, to translate one or more header fields of the message into an alternative format and to include the translated field(s) within or prefixed to the message, whilst retaining the untranslated field(s) in the Session Initiation Protocol header. It will be appreciated that a SIP node receiving such a message does not have to perform the computationally intensive process of parsing all text fields of the message in order to identify information required to handle the message. The relevant information is easily extracted using the machine-friendly header.
0013The translated fields may have a structured format, i.e. the fields have a fixed (byte) size and a fixed location. This makes it relatively easy for a processor at a receiving SIP node to identify a relevant field without having to parse large portions of the message. If so, the apparatus may be configured to translate one or more header fields from an unstructured textual format into a structured data format. In addition, the apparatus may be configured to further translate the structured data format into a structured textual format.
0014The translated field(s) may be included within a payload of the message. For example, the translated field(s) may be included within a separate multipart body. Alternatively, the translated field(s) may be included within a message header field. As a further alternative, the message can be prefixed with the translated field(s). If so, the message with prefix may be sent to a non-standard Session Initiation Protocol port.
0015The apparatus may be configured to translate one or more of the following message header fields: From; To; Max-Forwards; Call-ID; Cseq; Date.
0016There is also provided apparatus comprising a Session Initiation Protocol agent arranged to send and receive Session Initiation Protocol messages to and from peer Session Initiation Protocol agents, wherein the apparatus is configured, for a received Session Initiation Protocol message, to identify a translated header field(s) data portion within or prefixed to the message and to handle the message according to that data without reference to a corresponding untranslated header field(s) also contained within the received Session Initiation Protocol message.
0017There is further provided a method of handling Session Initiation Protocol messages within a communications network, wherein the method comprises, at a sending Session Initiation Protocol agent, translating one or more header fields of a Session Initiation Protocol message into a translated format, including the translated data in the message or prefixing it to the message whilst retaining the untranslated field(s) in the Session Initiation Protocol header, sending the message to a peer Session Initiation Protocol agent and, upon receipt of the message at the peer agent, handling the message according to the translated data without reference to the corresponding untranslated header field(s).
Brief Description of the Drawings
0018<ul id="ul0001" list-style="none" compact="compact"><li><figref idref="f0001">Figure 1</figref> illustrates schematically various SIP header fields;</li><li><figref idref="f0001">Figure 2</figref> shows an exemplary SIP header;</li><li><figref idref="f0002">Figure 3</figref> illustrates schematically an exemplary machine readable header abstract for incorporation within a SIP message;</li><li><figref idref="f0003">Figure 4</figref> illustrates schematically a simplified IMS network architecture;</li><li><figref idref="f0004">Figure 5</figref> illustrates schematically a SIP node embodying the present invention;</li><li><figref idref="f0005">Figure 6</figref> is a flow diagram illustrating a process for handling messages to be sent from a SIP node; and</li><li><figref idref="f0006">Figure 7</figref> is a flow diagram illustrating a process for handling messages received at a SIP node.</li></ul>
Detailed Description
0019A Session Initiation Protocol (SIP) message contains a number of header fields and optionally a body containing the payload (which might conform to the Session Description Protocol). Whilst some of these fields are optional, others are mandatory (typically dependent on the type of SIP request). All of the header fields are encoded in a human-readable form and some even allow for multiple different encodings (e.g. timestamps).
0020According to the conventional approach, even though SIP proxies (which help route requests to a user's current location, authenticate and authorize users for services, implement provider call-routing policies, and provide features to users) and services may use only a fraction of the available header fields, it remains necessary to parse the complete header as the recipient does not necessarily know what the message contains and where various components are located. It is proposed here to modify/extend the SIP message to include certain "essential" header information in a machine-friendly fashion, in addition to the usual text format data. For example, some header fields, such as variable length strings, may be represented by a pointer in machine-friendly form to the location and size of the actual textual data. Rather than being unstructured, as is the case for the normal SIP header fields, the pointer is structured, e.g. the data components have a fixed size and position or fields are preceded by a tag and field length identifier, e.g. Type, Length, Value/Abstract Syntax Notation One (TLV/ASN.1 format).
0021<figref idref="f0001">Figure 1</figref> illustrates a number of header fields that might be contained within a SIP message header including From, To, Max-Forwards, Call-ID, Cseq, and Date fields. <figref idref="f0001">Figure 2</figref> illustrates an exemplary SIP message containing entries in each of these fields. The From and To fields both contain a SIP Universal Resource Identifier (URI) and a "friendly" display name: both might be relevant for a SIP agent and so both will be made accessible through a machine-friendly abstract in the form of an offset/length pair (two 16-bit numbers). <figref idref="f0002">Figure 3</figref> illustrates an example machine-friendly abstract structure for inclusion within a SIP message, broken into separate bytes, where the size of the abstract is 22 (or 24) bytes.
0022The SIP abstract may be included within a SIP message as a separate body part, in addition to any SDP body part. The possibility of so-called multipart message bodies within a SIP message containing a single SIP header is provided for in IETF RFC2045. If the original message contains only a non-multipart body, the abstract is included as the first part in a new multipart body. In order to further accelerate the locating of the abstract within a SIP message, an extra header field (e.g. X-AbstractOffset) can be included within the header. This defines the byte offset of the abstract within the message. This new header field should be included as the first header field to minimise the resources required to parse the message. The extra header is of course optional, and can be specified in the relevant SIP standard. An advantage of this approach is that it is backwards compatible with existing SIP messages. A disadvantage is that, as SIP agents are not required to support multi-part bodies, not all SIP agents will be able to support these messages.
0023An alternative approach involves including the SIP abstract within an extra header field (X-Abstract). Since not all characters are allowed in the field (e.g. carriage return and line feed characters), it must be encoded with some encoding mechanism (e.g. Base64). A SIP agent receiving a SIP message constructed according to this approach needs to first parse the header to identify the extra header field and then pass the contents of the field through an appropriate decoder to recover the abstract. Although a parsing step is required, this is significantly less complex than having to parse the header for multiple header fields. An advantage of this approach is that it is fully backwards compatible with existing SIP messages, so that any SIP agent will be able to parse it. It does however add extra computation cost in terms of the encoding process.
0024In a still further alternative approach, the SIP abstract is prefixed to the SIP message, i.e. placed at the head of the message. It is therefore directly accessible without any parsing effort. Since the message format is not backwards compatible (SIP agents must be aware of each other's capabilities for dealing with the abstract), an additional port number can be defined and at which a SIP agent expects to receive these enveloped SIP messages. The normal SIP port number can still be available in a SIP compatible manner.
0025It will be readily appreciated that the approach described here reduces the computational cost of parsing SIP messages on many occasions. This is particularly the case when only a few basic header fields need to be processed at a node before forwarding the unmodified message (as is typical in many SIP proxies or services). The approach impacts only on the parsing and construction of SIP messages. The actual handling of the content is not affected. This means that all existing software for using SIP messages is not affected, as long as the parsing code and message generating code are separated from the message handling code (which is often the case). If this is indeed the case, the message handling code is unaffected by the change.
0026It will be appreciated that messages incorporating the new machine-friendly abstract can still be handled by nodes containing only legacy parsing and message generating code. As the messages still retain the text-format SIP header fields, the message can be parsed in the conventional way. The machine-friendly abstract is ignored by the legacy code.
0027<figref idref="f0003">Figure 4</figref> illustrates a simple IMS network comprising a number of peer SIP agents (i.e. agents which communicate at a common protocol layer). A first client terminal (i.e. a terminal which obtains services from the IMS network) Client1 1 is able to establish a (multimedia or other) call to a second client terminal Client2 2. On Client1's side of the IMS network, SIP messages pass through Proxy-Call Session Control Function, P-CSCF 3, Serving-Call Session Control Function, S-CSCF 4, and Interrogating-Call Session Control Function, I-CSCF 5 SIP proxies. In some cases messages are routed through one or more SIP ASs 6. Messages may also pass through further SIP proxies and ASs on the Client2 side of the IMS network 7.
0028<figref idref="f0004">Figure 5</figref> illustrates schematically a SIP node comprising a SIP agent 9, translation means 10, and SIP message modifier 11. Considering Client1 as the sending SIP node, the translation means 10 translates relevant portions of the header to create the machine-readable abstract, whilst the SIP message modifier 11 incorporates the translated information into the SIP message to be sent. The translation means 10 also operates on incoming SIP messages to recover relevant header data from any machine-readable abstract contained within the message, and passes the data to the relevant applications. Similar functions may be implemented at Client2 and at the network nodes. In the case where the message is modified/extended to include a machine-friendly pointer to relevant fields of the SIP header, the translation means is responsible for generating these pointers (i.e. behaves as a pointer generation means).
0029<figref idref="f0005">Figures 6</figref> and <figref idref="f0006">7</figref> are flow diagrams illustrating methods for handling messages to be sent from a SIP node and for handling messages received at a SIP node respectively.
0030It will be appreciated by the person of skill in the art that various modifications may be made to the above described embodiments without departing from the scope of the present invention. According to one modification, a node sending a SIP message may include both a translation of one or more SIP header fields and a pointer or pointers to untranslated fields.
7 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7
15 members in 5 offices
Priority claims7
| Document | Office | Kind | Date |
|---|---|---|---|
| 07857722 | European Patent Office (EPO) | A | |
| 07857722 | European Patent Office (EPO) | A | |
| 2007064092 | European Patent Office (EPO) | W | |
| 2007064092 | European Patent Office (EPO) | W | |
| 07857722 | – | – | – |
| EP20070857722 | – | – | – |
| WO2007EP64092 | – | – | – |
Members15
| Document | Office | Kind | |
|---|---|---|---|
| WO2009077003A1 | World Intellectual Property Organization (WIPO) | A1 | |
| EP2232818A1 | European Patent Office (EPO) | A1 | |
| US2011016185A1 | United States of America | A1 | |
| EP2290898A2This record | European Patent Office (EPO) | A2 | |
| EP2290898A3 | European Patent Office (EPO) | A3 | |
| EP2232818B1 | European Patent Office (EPO) | B1 | |
| AT556526T | Austria | T | |
| ATE556526T1 | Austria | T1 | |
| ES2387135T3 | Spain | T3 | |
| EP2290898B1 | European Patent Office (EPO) | B1 | |
| US8838705B2 | United States of America | B2 | |
| US2014369357A1 | United States of America | A1 | |
| US10075372B2 | United States of America | B2 | |
| US2019014045A1 | United States of America | A1 | |
| US10855585B2 | United States of America | B2 |
65 legal events, as 9 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Amendment of ipc main classPREVIOUS MAIN CLASS: H04L0029060000R079 | R079 | DE | |
| Fee paymentPLFP | PLFP | FR | |
| Fee paymentPLFP | PLFP | FR | |
| Fee paymentPLFP | PLFP | FR | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| No opposition filed against granted patent, or epo opposition proceedings concluded without decisionGrantedR097 | R097 | DE | |
| Patent lapsedLapsedMM4A | MM4A | IE | |
| No opposition filedOpposition26N | 26N | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Patent ceasedCeasedPL | PL | CH | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Discontinued in the netherlands as no translation has been filedVDEP | VDEP | NL | |
| Invalidated european patentMG4D | MG4D | LT | |
| Deletion acc. to par. 5 (withdrawal of the translation of the ep patent)MK05 | MK05 | AT | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Dpma publication of mentioned ep patent grantGrantedR096 | R096 | DE | |
| European patents granted designating irelandGrantedFG4D | FG4D | IE | |
| Reference to at number (ep patent validated in austria)REF | REF | AT | |
| European patent takes effect as a national patent in ch/liEP | EP | CH | |
| Divisional application: reference to earlier applicationAC | AC | EP | |
| Designated contracting statesAK | AK | EP | |
| European patent grantedGrantedFG4D | FG4D | GB | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| First examination report despatched17Q | 17Q | EP | |
| Request for examination filed17P | 17P | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAX | AX | EP | |
| Divisional application: reference to earlier applicationAC | AC | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAX | AX | EP | |
| Search report despatchedORIGINAL CODE: 0009013PUAL | PUAL | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 2290898
- Publication, DOCDB
- 2290898
- Publication, EPODOC
- EP2290898
- Application
- 10180772
- Application, DOCDB
- 10180772
- Application, EPODOC
- EP20100180772
Titles3
- German
- Stapeloptimierung für ein Sitzungsstartprotokoll
- English
- Session initiation protocol stack optimisation
- French
- Optimisation de la pile du protocole d'initiation de session
Classification
- CPC, 5
- H04L65/1104
- H04L69/22
- H04L65/104
- H04L69/08
- H04L45/74
- IPC, 2
- H04L29 06
- H04L45 74
Designated states2
- Contracting states, 1
- Türkiye
- Extension states, 1
- Serbia