US7644165B2 - Method and apparatus for SIP messaging - Google Patents
Method and apparatus for SIP messaging Download PDFInfo
- Publication number
- US7644165B2 US7644165B2 US11/141,546 US14154605A US7644165B2 US 7644165 B2 US7644165 B2 US 7644165B2 US 14154605 A US14154605 A US 14154605A US 7644165 B2 US7644165 B2 US 7644165B2
- Authority
- US
- United States
- Prior art keywords
- sip
- zone
- message
- block structure
- header
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related, expires
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 11
- 238000004891 communication Methods 0.000 claims description 14
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000013459 approach Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010521 absorption reaction Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Definitions
- This invention relates generally to communication systems. While the invention is particularly directed to the transmission of data in communication systems and will be thus described with specific reference thereto, it will be appreciated that the invention may have usefulness in other fields and applications.
- SIP Session Initiation Protocol
- IP Internet Protocol
- RFC 3261-SIP Session Initiation Protocol
- SIP only provides the method for dealing with sessions, it has to work alongside other protocols and standards, which provide the level of service required by real-time communication. To facilitate proper communication, SIP has to provide a range of features and functions to establish a session.
- SIP Session Description Protocol
- SIP has well-defined messages that are used for communication.
- a message can either be a request or a response message.
- request and response SIP messages are built from the same three components: start lines, headers and the body.
- the start line is the beginning of every SIP message. It is first used to identify the type of message and the protocol. Depending on the message type the start line is either a request-line for requests or a status-line for responses.
- a request-line includes a request URL, which is used to identify the requested party. This line can be rewritten by proxies, although the ‘To’ field later on cannot.
- a status-line holds the numeric status-code and the text version.
- SIP headers contain a list of fields that are used to identify message attributes. The body conveys the mechanics of a connection. It is common for the body to hold protocol information such as SDP, and only the receiving client can understand what the body means.
- the IP Multimedia Subsystem is an IP multimedia and telephony core network that is defined by 3GPP and 3GPP2 standards and organizations based on IETF Internet protocols. IMS is access independent, as it supports IP-to-IP session over wireline IP, 802.11, 802.15, CDMA, packet data along with GSM/EDGE/UMTS and other packet data applications. IMS is a standardized reference architecture that consists of session control, connection control and an applications services framework along with subscriber and services data.
- an incoming SIP message is entirely parsed, and a multitude of internal objects are allocated from the memory by the SIP stack to represent the contained information in an internal format (i.e., “decoded” format).
- the initial SIP message buffer is, in general, lost, and it is very costly to copy or build a new SIP message from an old one, which are very desirable capabilities for SIP.
- the present invention contemplates a new and improved method and apparatus that resolves the above-referenced difficulties and others.
- the embodiments disclosed herein define a method and apparatus for encoding a SIP message into an internal binary format so that it can be treated much more efficiently by both the SIP stack layers and the application.
- the invention addresses various SIP processing performances issues such as: parsing of the whole SIP message, when only a few headers are actually useful to understand; multiple allocation/de-allocation of memory blocks for a single SIP message; inefficient copying of SIP messages, very often used to reply, or proxy a SIP message; similar objects represented differently in the SIP stack and in the SIP application, or even inside the SIP stack itself, between its internal layers, making multiple copy and transcoding required; and a message format that does not allows it to be shared between boards with no preprocessing at each side.
- the new SIPia message (where “ia” refers to Interface Application) is an accurate representation of an actual SIP message. Any element of information present in a conventional SIP message can be formatted in the improved SIPia message.
- SIPia message typically use only one memory buffer to handle any sort of SIP message. For this reason, this SIPia message may be called a “mono-block” structure. It allows each SIP header's raw text from the original SIP message to be directly referred within the SIPia mono-block (in the table of content), with no additional copy. Only SIP headers that are “used” by the application, or by some SIP stack layer (using the API), are parsed to form a “decoded” header object. The header parsing is made “on demand” at the moment header is accessed. Headers not used are not decoded and are left in text format with no additional processing needed.
- SIPia messages use multiple pointers to store and retrieve the information that is in there. These pointers are all differential pointers, i.e., the content of a pointer gives the distance in bytes (signed offset) between its own location, and the object that it points to. This allows any SIPia message to be duplicated using a standard memory block copy instruction (like “malloc”) and to be sent to a remote board with no further encoding. Normal pointers could not be understood by another CPU.
- a method of processing a SIP message in a communications network comprises receiving a SIP message from the outside, wherein the SIP message includes a plurality of headers and text; allocating a new mono block structure, the structure including a plurality of zones; reading the SIP message; creating at least one header descriptor in a zone in the mono block structure; copying the SIP message to an initial SIP raw text zone in the mono block structure; and pre-parsing the initial SIP raw text zone.
- pre-parsing the initial SIP raw text zone includes updating the corresponding header descriptor in the mono block structure for each header that is recognized; pointing a raw text pointer to the corresponding SIP text stored in the initial SIP raw text zone of the mono block structure; storing the actual length of the SIP text in the header descriptor; and leaving a pointer to the decoded portion of the text empty.
- a method of creating a SIP message in a communications network comprises allocating a mono block structure, the mono block structure including a management information memory zone, a table of content, an initial raw text zone, and a free zone; creating at least one header descriptor in the table of content; creating a string in the free zone that represents raw text for each header; binding the raw text to the corresponding header descriptor in the table of content; and marking each header to show that it has not been parsed.
- an apparatus for processing a SIP message in a communications network includes a management information memory zone, a table of content, an initial SIP raw text message zone, a dynamic objects zone, a free zone, and a set of differential pointers.
- FIG. 1 is a block diagram of a SIP stack suitable for implementing aspects of the invention
- FIG. 2 shows a SIPia message according to aspects of the invention
- FIG. 3 is a flow chart showing a method of processing a SIP message according to the invention.
- FIG. 4 is a flow chart showing a method of pre-parsing a SIP message
- FIG. 5 shows an alternative embodiment of the SIPia message wherein an elementary object has been modified
- FIG. 6 shows yet another embodiment of the SIPia message
- FIG. 7 is a flow chart showing a method of creating a SIPia message
- FIG. 8 shows the flow of a SIPia message across the layers of a SIP stack
- FIG. 9 shows the flow of a SIPia message between applications.
- FIG. 1 provides a block diagram of a SIP stack 10 comprising five layers for proxy applications—a call layer 12 , a proxy dialog layer 14 , a proxy layer 16 , a transaction layer 18 , and a transport layer 20 —and four layers for user agent (UA) applications—a UA call layer 22 , a UA dialog layer 24 , the transaction layer 18 and the transport layer 20 .
- FIG. 1 shows the arrangement of these layers.
- the present invention focuses on the call and proxy dialog functionality. However, it is helpful to understand the commonality of the transport and transaction layers for both proxy and user agent applications, as well as the existence of the proxy layer 16 —a middle layer that performs SIP routing decisions.
- the three bottom layers follow the descriptions found in RFC 3261.
- the blocks on the left will be used by proxy applications, while the blocks on the right will be used by user agent applications.
- Applications that take both roles could make use of this stack instantiating both blocks.
- a 3GPP S-CSCF behaves as a SIP proxy to establish and teardown calls and behaves as a user agent to notify a P-CSCF of network-centered events.
- the stack allows two or more 3GPP IMS control functions to coexist in the same application.
- the IMS control functions can share the transport and transaction layers 18 , 20 , and instantiate their own proxy, proxy dialog and call layers, such that each IMS control function can configure these layers to its needs.
- the transaction layer 18 handles SIP messages and timers to support SIP transactions.
- a SIP transaction (RFC 3261, chapter 17) represents the message exchange between two adjacent SIP elements.
- a transaction is a container abstraction that collects the appropriate SIP messages. SIP transactions are intended to shield upper layers from the complexity of exchanging one request and one or more responses.
- proxies should create two transactions for each request message. Whenever a request arrives to a proxy, a server transaction must be created. This server transaction represents the exchange between the sender and the proxy. Whenever the request is forwarded to the next SIP hop, a second transaction must be created. This second transaction is called a client transaction. The client transaction represents the message exchange between the proxy and the SIP element.
- the transaction layer 18 is responsible for handling low-level forking using information retrieved from DNS servers. This layer poses queries to DNS for NAPTR, SRV, and A records, in order to get the IP address of the next hop. If two or more addresses are returned, this layer should process them serially.
- the proxy layer 16 should implement the standard behavior on how to route SIP messages (RFC 3261, chapter 16). This layer is responsible for routing related issues such as checking max-forwards, loop detection, spiraling, etc. Similar to the transaction layer 18 , the proxy layer 16 must implement forking. Unlike DNS-based forking, a target set specified by an upper layer can fork a request to two or more destinations. The target set contains potential addresses. The application must specify how the target set must be processed—serial or parallel (RFC 3261, pages 43-44). In the event parallel forking has been specified, this layer should summarize all responses and forward a response message to the next layer. Each new incoming SIP request should create a request data structure.
- This data structure contains all the related transactions and a dynamic target set modified by redirection responses. Typically, there will be two transactions for every request, a server transaction and a client transaction. However, forking functionality forces us to support one or more client transactions.
- the proxy layer 16 disposes of the completed transactions. This layer will inform its upper layer that the request has ended when all its transactions have completed.
- the proxy dialog layer 14 handles SIP dialogs for a dialog stateful proxy.
- RFC 3261 includes remarks for dialog creating and termination (see chapter 12).
- a SIP proxy dialog bundles one or more requests. That is, a proxy dialog is a container of SIP requests.
- a proxy dialog is created with the arrival of an INVITE or any dialog creation message.
- the proxy dialog state should include early dialog, calling, proceeding, and terminating. These values summarize the state of all the transactions involved in the proxy dialog layer 14 .
- a dialog includes the list of route entries. The proxy dialog 14 will dispose of all the completed requests. It must inform the upper layer when all the requests have been completed.
- the call layer 12 is responsible for managing information about calls, i.e., SIP sessions.
- a call is a collection of one or more dialogs. Since SIP sessions are multiparty, a call can have two or more dialogs. Typically, calls will have one dialog, but two or more legs should be supported.
- calls have a state that summarizes the states of all of its dialogs (RFC 3261, chapters 12 and 13).
- FIG. 1 also shows an application layer 26 .
- Applications must instantiate and configure all the needed layers.
- Each layer has a set of default parameter values that can be overridden by the application.
- the application should be able to specify a set of ports to be opened by the transport protocol.
- Applications can override the set of timers used by the transaction layer.
- the proxy layer 16 can be configured to run the loop detection algorithm and the set of domain names.
- the application 26 can specify the number of layers that will be needed.
- the stack allows applications to establish how many layers starting from the transport layer 20 are needed. This bottom-up approach enables applications to use only the functionality dictated by the problem domain. For instance, a stateless proxy could instantiate the transport layer 20 only, a transaction stateful proxy application will instantiate up to the proxy layer 16 , while an S-CSCF is expected to instantiate the entire stack, including the call layer 22 .
- the transport layer 20 and the transaction layer 18 can be shared. However, the application should instantiate one or more of the upper layers for each IMS control function. For example, an application may need to implement an S-CSCF and an I-CSCF. The former is a call stateful proxy while the latter is a transaction stateful proxy. The former needs to instantiate all three upper layers: the proxy layer 16 , the proxy dialog layer 14 , and the call layer 22 . In contrast, the latter control function requires the proxy layer 16 and possibly the proxy dialog layer 14 .
- Incoming SIP messages generally flow from the lower layers to the upper layers, while outgoing messages flow in the opposite direction.
- the transport layer gets the SIP message possibly from the wire, creating a SIPia message binary structure.
- Each layer has two components, a manager and a domain abstraction.
- Each manager has an XXXPostMessage( ) function that receives a SIP message as one of its parameter. The manager will retrieve the appropriate abstraction for this message and post the message to the abstraction. This message flow is used for incoming messages when low-level abstractions have not yet been created. For example, a newly arrived BYE message has no corresponding transaction abstraction.
- the transport layer 20 will post the message to the transaction manager, and, in turn, it posts the message to the proxy manager since no transaction has been allocated. Since the new BYE message has no associated request, the proxy manager will post the message to the proxy dialog manager. This manager will find a matching dialog and post the message to this proxy dialog abstraction.
- Each layer abstraction has two post functions that will be invoked depending on the direction for the message.
- YYYPostFromLo and YYYPostFromHi functions allow application and other layers to send messages directly to an YYY abstraction.
- a YYYPostFromLo function is invoked by the previous layer, while a YYYPostFromHi function is called by the next layer.
- Applications can modify this message flow such that the user-defined functions can examined each message as they are forwarded to the following layer. Any combination of these two message flows is also possible.
- the proxy dialog manager will invoke the ProxyDialogPostFromLo with the newly arrived BYE message.
- Upper layers like the application layer 26 can create a brand new SIP message, create a response from an incoming message, or create a message to be forwarded to the next SIP hop. These messages can be posted to any lower layer. Typically, the message will be posted to the next lower layer. However, applications should be able to post messages to any layer. In this way, applications can send messages to a particular transaction without going through any call, proxy dialog, or request abstractions. This flexibility allows applications to have a fine grain control over the entire stack.
- the corresponding layer must inform the next (upper) layer of the new state.
- the transaction abstraction will inform the corresponding request abstraction that the transaction has been completed.
- the request will inform the corresponding proxy dialog abstraction that the request has been completed.
- the proxy dialog 14 will inform the appropriate call abstraction that the dialog has been established.
- the call abstraction will notify the application that the call has an established dialog.
- each abstraction will inform its parent abstraction that needs to be removed.
- the transaction abstraction can indicate the next layer of the need of its removal either because of a transaction timeout or transaction completed. According to the standards, the latter should be issued only after the retransmission grace period.
- SIPia-based applications can implement two or more functional sets.
- a number of applications need to play several roles simultaneously.
- a 3GPP IMS S-CSCF is both a call stateful proxy and a notification server.
- Multi-functional applications need to instantiate one transport layer and one transaction layer. It is important to point out that a transport layer can support one or more ports and one or more transport protocols, in addition to these two layers, the application will need to instantiate one stack of upper layers for each functional set.
- applications implementing an S-CSCF will instantiate the proxy layer 16 , the proxy dialog layer 14 , and the call layer 12 for the call stateful functionality and at least the user agent dialog layer 24 for the notification server functionality. If this application also needs to support BGCF functionality, it will need to at least instantiate a second proxy layer.
- the application needs to register each functional set with the transaction layer 18 , which acts as a demultiplexer, distributing the messages to the appropriate upper layer instance.
- the transaction layer 18 acts as a demultiplexer, distributing the messages to the appropriate upper layer instance.
- Applications should register each functional set and their associated (protocol, port) list. In this way, external SIP-compliant applications can address a particular functional set by forwarding the SIP message to any one protocol and port pair in this list.
- DNS servers can be populated to store the triplets (protocol, IP address, and port) for every functional set. Standard-based SIP applications can retrieve this information from the DNS server.
- FIG. 1 also includes IP 28 and an SIPia BUS 30 .
- the SIPia BUS 30 is a software platform that utilizes SIP routing rules.
- the SIPia BUS 30 enables SIP servers (not shown) to communicate with each other in a highly efficient manner utilizing the SIPia BUS transport.
- the SIPia BUS 30 also communicates with a SIP port (not shown) for sending and receiving messages to other boards via the Internet.
- the SIP stack 10 described above can be configured to run in active or passive mode.
- An active layer is defined as having one or more threads running exclusively for its abstractions, while a passive layer does not have a single thread assigned to it.
- Applications can instruct the layer to run in either mode by setting on the layer manager the number of threads.
- applications have the flexibility to configure all, some, one, or none of the layers to be active.
- the application can specify the size of a queue as well.
- An active layer will place all messages arriving to the layer in the corresponding queue. If the message is posted from a higher or a lower layer, the message will be appended to the message queue.
- the queue elements retain the origin of the message, i.e., messages come from a higher or a lower layer.
- the application can configure all layers to be active. In this case, each layer has its own set of queues and set of threads. The messages are queued at each layer.
- processor support for operating system threads e.g., Intel's “hyperthreading” and Sun's “high throughput processors”
- applications with a high thread count will benefit from this hardware.
- FIG. 2 shows a SIPia message (or mono-block structure) 40 including at least four sections (or zones), namely, a management information memory zone 42 (fixed length), a table of content (TOC) 44 (fixed length), an initial SIP raw text message zone 46 (variable length), a dynamic objects zone 48 (variable length), and a free area zone 49 (variable length).
- a management information memory zone 42 fixed length
- a table of content (TOC) 44 fixed length
- an initial SIP raw text message zone 46 variable length
- a dynamic objects zone 48 variable length
- free area zone 49 free area zone
- the management information memory zone 42 handles some administrative information about the message dynamic structure. For example, this zone provides an offset pointer 50 to the free memory area 49 of the SIPia memory mono-block 40 . That is, this is where new embedded decoded objects are created, soon to become part of the dynamic objects zone 48 . It is not expected that memory is to be recovered and made available again when object are deleted within a SIPia message. Each time an object is created, the offset pointer 50 is incremented with respect to the length of the new object, so that this pointer always points to the free area 49 .
- the management information memory zone 42 also provides a via zone (not shown). This is a set of pointers or indexes to all the SIPia stack layers sessions that have been traversed so far, such as transaction index, proxy dialog index, call index, and user index. It allows any layers (in particular, the application) to be able to address all the involved sessions.
- the management information memory zone 42 also provides other management information, as necessary. For example, it may provide the total length of the mono-block 40 (to know when no more dynamic objects can be created and/or the mono-block has to be extended), the compatibility version (in the event the SiPia message “evolves,” to know whether it can be safely understood by the recipient or not), or a compression indicator (indicates whether the message should be compressed before to be sent or not).
- the management information memory zone 42 has a fixed size and is allocated in any SIPia messages.
- the TOC 44 is a static table that contains the header descriptors. Header descriptors are empty (filled with zeros) when the header is not present in the message. It may not be present because it was not found by the first pass parsing (for a SIP message received), or because it is not yet created by the application (for a SIP message created by the application).
- First pass parsing refers to the very first parsing made by the transport layer 20 for each received SIP message from outside, only to (a) identify which headers are there and where and (b) populate the TOC table 44 accordingly.
- the “decoded” headers are not built from this first pass parsing, except for some headers that the transport layer 20 would need to know about.
- each header descriptor in the TOC 44 contains information about headers that have been identified during the first pass parsing operation.
- the corresponding header descriptor is updated: its status is set to “Not Parsed” and the pointer to the raw text part that describes this header is updated.
- FIG. 2 shows a first pointer 52 to the decoded header H 1 , a second pointer 54 to the raw text header H 1 , a third pointer 56 to the decoded header H 2 , and a fourth pointer 58 to the raw text header H 2 . If several headers of the same type are recognized, the container is actually a list object, which points to one header container for each of the recognized headers of the same type.
- the TOC memory zone 44 has a fixed size and is allocated in all SIPia messages.
- the initial SIP raw text zone 46 is a variable size memory zone. When a SIP message is received from outside, the text received is directly placed in the initial SIP raw text memory zone 46 . The first pass parsing will recognize in it the different SIP headers and bind each relevant text portion to each SIP header in the TOC 44 .
- the dynamic object zone 48 is made up of two types of objects, namely, (a) groups of elementary decoded objects 60 , 62 that represent decoded headers and (b) strings 64 that represent some SIP text (although there is no text shown in FIG. 2 ).
- the “free area” 49 At the end of the allocated objects is the “free area” 49 , where new objects can be allocated.
- the first example involves the situation where a new SIP message is received from the outside.
- the SIP message contains only two headers.
- the SIP message will likely have more than two headers.
- the following process ( 70 ) occurs.
- a new SIP message is received from the outside ( 72 ).
- a SIPia message mono-block structure is allocated (i.e., some memory is claimed from the system) so that the incoming data can be stored in the initial raw text zone 46 ( 74 ).
- the SIP message is read from the IP socket 28 and at least one header descriptor is created in the TOC 44 ( 76 ).
- the raw text of each header is copied directly in the initial raw text zone 46 ( 78 ).
- First pass parsing is then invoked, i.e., the initial raw text zone 46 is pre-parsed ( 80 ).
- the following sub-steps relate to the concept of “pre-parsing.”
- the corresponding header descriptor is updated ( 82 ). Its raw text pointer points to the corresponding original SIP text stored in the initial raw text zone 46 ( 84 ).
- the actual length of the text is also stored in the descriptor ( 86 ).
- the pointer to the decoded part is left empty ( 88 ), as the information inside the header is not parsed.
- TCP streaming protocol
- the frame received contains the current SIP message plus a part of the next SIP message. That fact can only be realized after the frame is pre-parsed.
- the raw text corresponding the next SIP message is removed from the current SIPia mono-block message, while a new SIPia message is allocated to re-locate this raw text that were removed.
- the current SiPia message is forwarded to the transaction layer 18 . If the next SIPia message is complete (i.e., has all the data), it is also forwarded to the transaction layer 18 . Otherwise, it is put on hold, waiting for the next frame to get the remaining data.
- the raw text associated with a header descriptor still represents accurately the header.
- No header serialization an operation that consists of generating the SIP raw text from a decoded object
- the header descriptor would “forget” the corresponding associated raw text. It would have to be regenerated to form a real SIP message.
- the SIPia message structure minimizes optimally the number of operations required for parsing and serialization.
- the second example involves the situation where a SIP message is received from the outside and is modified.
- FIG. 5 shows essentially the same SIPia message 40 as in FIG. 2 , except for the fact that the user (i.e., an element that is “using” the SIPia message at that moment) has modified the elementary object Xb.a in the header H 1 .
- the new header Xb.a′ is bigger, i.e., it will not fit back in its previous location.
- the zone now includes text 98 .
- the header is an object, which is made up of several “child objects,” and those “child-objects” can also be made of objects themselves. Headers are a hierarchy of objects, with a top down structure. Each “parent” object points (using a differential pointer) to its “child” objects.
- the header H 1 has one child, object X
- object X has two children, objects Xa and Xb
- object Xb has two children, objects Xb.a and Xb.b
- object Xb.b has a unique child, object Xb.b.a.
- the user wants to modify the object Xb.a, which is accessed though the SiPia message API, using the following “path” hierarchy: H 1 ⁇ X ⁇ Xb ⁇ Xb.a.
- the object Xb.a is to be replaced by a different object Xb.a′, which is slightly bigger, and which contains itself two strings “blablabla” and “are you sure.”
- the user replaces the object Xb.a by the object Xb.a′ in the object X.b.
- the object Xb.a′ is created in the free area 49 .
- the user creates the two text strings 98 (in the same free area 49 ), and inserts the two strings in the new object Xb.a′. Everything is done using the SIPia message API.
- the object X.b.a′ would have reused the space used by the object Xb.a. In this example, it is bigger, so it will not fit, and it is created in the free area 49 . Again, this is invisible to the user and is managed by the SIPia message API.
- a new mono block SIPia message 100 is generated “from scratch.” This may happen, for example, when the SIP application initiates a new call. This may happen also when the call is originated by a non-SIP element (like an SS 7 -based entity) and must be converted to SIP. In this example, the user generates the serialized text for each header. Another possibility would have been to create the decoded objects instead and let the SIP stack serialize them when the SIP message needs to be sent outside.
- the SIPia message 100 includes a management information zone 102 , a TOC zone 104 , and a dynamic objects zone 106 .
- the SIPia message 100 contains four headers, H 1 , H 2 , H 3 , and H 4 , in the TOC zone 104 at this point. Initially, the dynamic objects zone 106 would actually be empty, because the four headers H 1 , H 2 , H 3 , and H 4 would have just been “declared” to the SIPia message 100 .
- the SIPia message 100 also includes a free area zone 108 .
- a first pointer 110 points to “free area” in the free zone 108 .
- a second pointer 112 points to the raw text for header H 1
- a third pointer 114 points to the raw text for header H 2
- a fourth pointer 116 points to the raw text for header H 3
- a fifth pointer 118 points to the raw text for header H 4 .
- a new SiPia message mono-block structure is allocated ( 132 ), and at least one header descriptor is created in the TOC 104 ( 134 ).
- the user creates the header H 1 “raw text” in the free zone 108 of the mono block 100 ( 136 ) and binds it to its corresponding header descriptor in the TOC 104 ( 138 ).
- the length of this string is also updated in the header descriptor ( 140 ).
- the header H 1 is marked as “Not Parsed” ( 142 ). Steps 136 , 138 , 140 and 142 are repeated for each of the remaining headers—in this case, H 2 , H 3 and H 4 .
- the user could have created in the free zone 108 the decoded object H 1 , its elementary objects, and binds decoded object H 1 to the corresponding header descriptor H 1 .
- the header descriptor would point to a decoded object, and not to a raw text object, as in the previous case, and the header would be marked as “Parsed.”
- FIG. 8 shows the flow of a SIPia message 200 across the SIP stack 10 of FIG. 1 .
- FIG. 8 also includes applications A and B.
- a SIP text message is received by the transport layer 20 from the outside via IP 28 ( 202 ).
- the transport layer 20 allocates the SIPia message 200 ( 204 ).
- the transport layer 20 stores the received SIP text message on the newly allocated SIPia message structure.
- the transport layer 20 pre-parses the SIP message, determining the SIP headers that are present in the message.
- the transport layer 20 posts the message to the transaction layer 18 ( 206 ).
- the transaction layer parses some more fields that are necessary at this layer ( 208 ), such as the Request URL, “Via,” “Route,” “Cseq,” Headers, etc.
- the SIPia message 200 is then received by the proxy layer ( 210 ).
- the proxy layer still needs to parse more fields ( 212 ), such as the “To” and “From” headers.
- the SIPia message is received by the application ( 214 ).
- the application will probably need more information and parse more fields ( 216 ), such as “Caller-ID.” This depends on the role of the application and the type of application.
- the SiPia message 200 is never reformatted or copied.
- the same SIPia API is used throughout the entire SIP server.
- FIG. 9 is a block diagram showing the flow of the SIPia message 200 between applications A and B.
- Application A sends the SIPia message 200 to application B ( 218 ), where it first goes to the proxy layer 16 .
- the proxy layer 16 analyzes a few fields of the SIPia message 200 ( 220 ), which has already been parsed, and then forwards it to the transaction layer 18 ( 222 ).
- the transaction layer 18 also analyzes a few fields ( 224 ), and then forwards it to the transport layer 20 ( 226 ).
- the transport layer 20 analyzes the destination and decides, in this case, that the next component is on the same host ( 228 ).
- the SIPia BUS 30 loops back the SIPia message 200 ( 230 ).
- the transport layer 20 forwards the message to the transaction layer 18 ( 232 ); the transaction layer 18 forwards it to the proxy layer 16 ( 234 ); and the proxy layer 16 forwards it to application B ( 236 ).
- Application B again needs to access the already parsed SIPia message data ( 238 ).
- each layer uses its own SIP structure to process it. This would require each layer to first “translate” the incoming message to its own format, process it, and then send it to the next layer that would have to do the same thing.
- each layer (including the application) would have used its own memory buffer. Thus, each layer would need to then allocate a new memory buffer for each incoming message, and release it when it is sent to the next layer.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Telephonic Communication Services (AREA)
- Communication Control (AREA)
Abstract
Description
-
- On demand parsing (no need to parse the whole SIP message).
- Single mono-block structure (no need for multiple allocation/de-allocation of memory blocks).
- Efficient copying and modification of SIP messages by using differential pointers.
- Single SIPia message format from the low SIP layers to the application.
- Sharing the SIPia message “as is” with other boards (similar to word/bit encoding).
- Full API encapsulation to isolate the user from the internal message structure.
Claims (16)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/141,546 US7644165B2 (en) | 2005-05-31 | 2005-05-31 | Method and apparatus for SIP messaging |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/141,546 US7644165B2 (en) | 2005-05-31 | 2005-05-31 | Method and apparatus for SIP messaging |
Publications (2)
Publication Number | Publication Date |
---|---|
US20060268857A1 US20060268857A1 (en) | 2006-11-30 |
US7644165B2 true US7644165B2 (en) | 2010-01-05 |
Family
ID=37463276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/141,546 Expired - Fee Related US7644165B2 (en) | 2005-05-31 | 2005-05-31 | Method and apparatus for SIP messaging |
Country Status (1)
Country | Link |
---|---|
US (1) | US7644165B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060209775A1 (en) * | 2005-03-15 | 2006-09-21 | Lg Electronics Inc. | SIP message and processing method thereof in mobile communication system |
US20120089746A1 (en) * | 2001-12-07 | 2012-04-12 | Hitachi, Ltd. | Address translator, message processing method and equipment |
US9203687B2 (en) | 2012-08-06 | 2015-12-01 | International Business Machines Corporation | Providing access to message headers |
US12068948B2 (en) | 2022-05-19 | 2024-08-20 | Oracle International Corporation | Systems and methods for identifying connection protocols in a server computing environment |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272378B (en) * | 2007-03-23 | 2011-05-11 | 国际商业机器公司 | Method and system for processing conversation start-up protocol message |
EP2232818B1 (en) * | 2007-12-17 | 2012-05-02 | Telefonaktiebolaget L M Ericsson (publ) | Session initiation protocol stack optimisation |
DE602008006018D1 (en) * | 2008-03-31 | 2011-05-19 | Mitsubishi Electric Corp | Handling received data messages of a text-based protocol |
US8285858B2 (en) * | 2009-06-23 | 2012-10-09 | Avaya Inc. | Signaling using binary form of SIP messages |
US8108556B2 (en) * | 2009-06-23 | 2012-01-31 | Avaya Inc. | Mechanisms for temporal building and parsing SIP messages |
US8874793B2 (en) * | 2009-11-30 | 2014-10-28 | Qualcomm Innovation Center, Inc. | Methods and apparatus for improving header compression |
US20130212298A1 (en) * | 2011-12-14 | 2013-08-15 | Metaswitch Networks Ltd. | Sip message processing |
WO2023225219A2 (en) * | 2022-05-19 | 2023-11-23 | Oracle International Corporation | Systems and methods for header processing in a server computing environment |
CN119547410A (en) * | 2022-05-19 | 2025-02-28 | 甲骨文国际公司 | System and method for header processing in a server computing environment |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040148395A1 (en) * | 2001-10-11 | 2004-07-29 | Henning Schulzrinne | Network telephony appliance and system supporting wireless internet telephony |
US20050175032A1 (en) * | 2004-02-09 | 2005-08-11 | Eung-Moon Yeom | Processing session initiation protocol signaling in voice/data integrated switching system |
US20050188110A1 (en) * | 2004-01-20 | 2005-08-25 | Mike Hollatz | IP ACD using buffer server |
US20050223104A1 (en) * | 2002-05-31 | 2005-10-06 | Pekka Pessi | Protocol engine application interface |
US20060165060A1 (en) * | 2005-01-21 | 2006-07-27 | Robin Dua | Method and apparatus for managing credentials through a wireless network |
US20060176805A1 (en) * | 2005-02-08 | 2006-08-10 | Michael Peters | Method of providing fault tolerance in a sip based contact handling environment |
US20070133440A1 (en) * | 2004-03-18 | 2007-06-14 | Sebastien Bouat | Session initiation protocol (sip) |
US20070291734A1 (en) * | 2005-05-27 | 2007-12-20 | Medhavi Bhatia | Methods and Apparatus for Multistage Routing of Packets Using Call Templates |
-
2005
- 2005-05-31 US US11/141,546 patent/US7644165B2/en not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040148395A1 (en) * | 2001-10-11 | 2004-07-29 | Henning Schulzrinne | Network telephony appliance and system supporting wireless internet telephony |
US20050223104A1 (en) * | 2002-05-31 | 2005-10-06 | Pekka Pessi | Protocol engine application interface |
US20050188110A1 (en) * | 2004-01-20 | 2005-08-25 | Mike Hollatz | IP ACD using buffer server |
US20050175032A1 (en) * | 2004-02-09 | 2005-08-11 | Eung-Moon Yeom | Processing session initiation protocol signaling in voice/data integrated switching system |
US20070133440A1 (en) * | 2004-03-18 | 2007-06-14 | Sebastien Bouat | Session initiation protocol (sip) |
US20060165060A1 (en) * | 2005-01-21 | 2006-07-27 | Robin Dua | Method and apparatus for managing credentials through a wireless network |
US20060176805A1 (en) * | 2005-02-08 | 2006-08-10 | Michael Peters | Method of providing fault tolerance in a sip based contact handling environment |
US20070291734A1 (en) * | 2005-05-27 | 2007-12-20 | Medhavi Bhatia | Methods and Apparatus for Multistage Routing of Packets Using Call Templates |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089746A1 (en) * | 2001-12-07 | 2012-04-12 | Hitachi, Ltd. | Address translator, message processing method and equipment |
US8601161B2 (en) * | 2001-12-07 | 2013-12-03 | Hitachi, Ltd. | Address translator, message processing method and equipment |
US9088525B2 (en) | 2001-12-07 | 2015-07-21 | Hitachi, Ltd. | Address translator, message processing method and equipment |
US20060209775A1 (en) * | 2005-03-15 | 2006-09-21 | Lg Electronics Inc. | SIP message and processing method thereof in mobile communication system |
US9203687B2 (en) | 2012-08-06 | 2015-12-01 | International Business Machines Corporation | Providing access to message headers |
US9203686B2 (en) | 2012-08-06 | 2015-12-01 | International Business Machines Corporation | Providing access to message headers |
US9356990B2 (en) | 2012-08-06 | 2016-05-31 | International Business Machines Corporation | Providing access to message headers |
US9558253B2 (en) | 2012-08-06 | 2017-01-31 | International Business Machines Corporation | Providing access to message headers |
US12068948B2 (en) | 2022-05-19 | 2024-08-20 | Oracle International Corporation | Systems and methods for identifying connection protocols in a server computing environment |
US12095658B2 (en) | 2022-05-19 | 2024-09-17 | Oracle International Corporation | Systems and methods for client-server connection abstraction in a server computing environment |
US12149439B2 (en) | 2022-05-19 | 2024-11-19 | Oracle International Corporation | Systems and methods for router abstraction in a server computing environment |
US12231326B2 (en) | 2022-05-19 | 2025-02-18 | Oracle International Corporation | Systems and methods for header processing in a server computing environment |
Also Published As
Publication number | Publication date |
---|---|
US20060268857A1 (en) | 2006-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9794332B2 (en) | Method and apparatus for load balancing in network based telephony application | |
US8874762B2 (en) | Session initiation protocol adaptor | |
US7945685B2 (en) | Controlled relay of media streams across network perimeters | |
US7185094B2 (en) | Media session framework using a control module to direct and manage application and service servers | |
US7496672B2 (en) | Method and apparatus for a SIP client manager | |
US7644165B2 (en) | Method and apparatus for SIP messaging | |
US8234360B2 (en) | System for processing messages to support network telephony services | |
US8881167B2 (en) | Load balancing in network based telephony applications | |
US20090287846A1 (en) | Method and Apparatus for Load Balancing in Network Based Telephony Based On Call Length | |
US20020156900A1 (en) | Protocol independent control module | |
US8850051B2 (en) | Methods, systems, and computer program products for transaction-based internet protocol (IP) telephony call processing | |
JP5085781B2 (en) | Method and system for characterizing heterogeneous communication nodes | |
CN101390362B (en) | Client for networked communication device and method for establishing media session | |
US20090067419A1 (en) | Transmission control apparatus and method | |
US20070220148A1 (en) | Managing parallel requests in a communications environment supporting serial and parallel request handlers | |
JP4695457B2 (en) | System and method for collecting and distributing party identification data | |
US8503429B2 (en) | Processing requests and generating responses in session initiation protocol (SIP) | |
US20050144326A1 (en) | Compartment handling for signaling compression | |
US7949772B2 (en) | Protocol engine application interface | |
CN111901689A (en) | Streaming media data transmission method and device, terminal equipment and storage medium | |
US20060294248A1 (en) | Automatic server configuration based on user agent | |
WO2001035594A2 (en) | Telecommunications control protocol processing | |
KR20100055289A (en) | Method of transmitting a sip message |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LUCENT TECHNOLOGIES INC., NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BESSIS, THIERRY;CORTES, MAURICIO;ESTEBAN, JAIRO O.;REEL/FRAME:016911/0013;SIGNING DATES FROM 20050712 TO 20050819 |
|
AS | Assignment |
Owner name: ALCATEL-LUCENT USA INC., NEW JERSEY Free format text: MERGER;ASSIGNOR:LUCENT TECHNOLOGIES INC.;REEL/FRAME:023489/0373 Effective date: 20081101 Owner name: ALCATEL-LUCENT USA INC.,NEW JERSEY Free format text: MERGER;ASSIGNOR:LUCENT TECHNOLOGIES INC.;REEL/FRAME:023489/0373 Effective date: 20081101 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.) |
|
AS | Assignment |
Owner name: OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:043966/0574 Effective date: 20170822 Owner name: OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP, NEW YO Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:043966/0574 Effective date: 20170822 |
|
AS | Assignment |
Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ALCATEL LUCENT;REEL/FRAME:044000/0053 Effective date: 20170722 |
|
FEPP | Fee payment procedure |
Free format text: 7.5 YR SURCHARGE - LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: M1555) |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552) Year of fee payment: 8 |
|
AS | Assignment |
Owner name: BP FUNDING TRUST, SERIES SPL-VI, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:049235/0068 Effective date: 20190516 |
|
AS | Assignment |
Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:OCO OPPORTUNITIES MASTER FUND, L.P. (F/K/A OMEGA CREDIT OPPORTUNITIES MASTER FUND LP;REEL/FRAME:049246/0405 Effective date: 20190516 |
|
AS | Assignment |
Owner name: OT WSOU TERRIER HOLDINGS, LLC, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:056990/0081 Effective date: 20210528 |
|
AS | Assignment |
Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:TERRIER SSC, LLC;REEL/FRAME:056526/0093 Effective date: 20210528 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20220105 |