Sip message delivery program

Information

  • Patent Application
  • 20080028082
  • Publication Number
    20080028082
  • Date Filed
    June 25, 2007
    18 years ago
  • Date Published
    January 31, 2008
    17 years ago
Abstract
A computer on which an SIP message delivery program is running stores records for respective entities of an SIP message that contains location information into a table in a storage device. Each record links virtual host identifying information to identify a virtual host that receives an SIP message only when the entities contain predetermined location information with the predetermined location information that is a content of the receipt condition. The computer receives an SIP message from an SIP server on a network, and searches the table for a record whose receipt condition in an entity matches location information in the corresponding entity in the received SIP message, for each of entities in a predetermined order. When a record is detected, the computer delivers the received SIP message to the virtual host that is distinguished by the virtual host identifying information included in the detected record.
Description

DESCRIPTION OF THE ACCOMPANYING DRAWINGS


FIG. 1 is a block diagram of a host device of an embodiment that executes the SIP message delivery program of the present invention,



FIG. 2 shows an example of a data structure of a distinguishment table included in the host device of FIG. 1,



FIG. 3 is a flowchart showing a host distinguishment process that is executed by the host device of FIG. 1, and FIG. 4 shows an example of an SIP message.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

There will now be described an embodiment of the present invention with reference to the accompanying drawings.



FIG. 1 is a block diagram of a host device 10 of the embodiment.


The host device 10 is a computer on which five SIP (Session Initiation Protocol) servers are implemented as virtual hosts. It is well known that the computer contains storage 10a, a CPU (Central Processing Unit) 10b, a DRAM (Dynamic Random Access Memory) 10c, a communication adapter 10d, and the like. The storage 10a is a memory device that stores various kinds of programs and data. The CPU 10b is a control device that executes various kinds of processes according to the programs stored in the storage 10a. The DRAM 10c is a memory device on which a workspace is developed when the CPU 10b executes various kinds of processes. The communication adapter 10d is a communication device that exchanges data with computers or relay devices on a network.


The storage 10a of the host device 10 stores basic software that provides many pieces of application software (not shown) with basic functions such as a data input/output management by the communication adapter 10d and a memory are a management in the storage 10a and the DRAM 10c. Further, the storage 10a stores a software group to implement five SIP servers 11 through 15. Further, the storage 10a stores a software group to implement an interface engine 16 described below. Still further, the storage 10a stores a software group to implement a host distinguishment module 17 concerning the present invention, and a distinguishment table 18 used by the host distinguishment module 17.


Each of the SIP servers 11 through 15 contains at least a proxy server, a redirection server, and a register server (not shown) to implement a function as an SIP server. Among these, the proxy server has a function that specifies a location of a session partner's user agent as a substitute of a user agent (an SIP client), and calls a session partner's user agent server. The redirection server has a function that acquires an address of the session partner from a location server (not shown) to notify the address to the user agent that requests the session. The register server has a function that makes a location server (not shown) register, change, and delete information about the user agent based on the request from the user agent (SIP client). Since the proxy server, the redirection server and the register server are well known, details thereof are not described here. Each of the SIP servers 11 through 15 performs signaling between the user agents by exchanging SIP messages with the user agents (the SIP clients) according to the SIP and manages inputting and cutting of sessions between the user agents.


The interface engine 16 receives SIP messages from the SIP server or the user agents on the network, and sends SIP messages to the SIP server or the user agent on the network. Receiving an SIP message from the SIP server or the user agent on the network or from any of the SIP servers 11 through 15, the interface engine 16 generates a process of the host distinguishment module 17 described below in order to judge whether the SIP message is directed to one of the SIP servers 11 through 15. And this interface engine 16 transmits the SIP message to the SIP server or the user agent on the network according to the SIP, when the process judged that the SIP message is not directed to any of the SIP servers 11 through 15. On the contrary, when the process judged that the SIP message is directed to one of the SIP servers 11 through 15, the interface engine 16 makes a thread that has a function to deliver the SIP message to the SIP server of destination and makes the thread deliver the SIP massage concerned to the SIP server.


Therefore, the interface engine 16 corresponds to the receiving function mentioned above.


The host distinguishment module 17 has a function to distinguish the destination of the SIP message that is received by the interface engine 16 in response to an instruction from the interface engine 16. The contents of the process of the host distinguishment module 17 (the CPU 10b that executes this module) will be mentioned below.


The distinguishment table 18 is used when the host distinguishment module 17 distinguishes the destination of the SIP message. FIG. 2 shows an example of the data structure of the distinguishment table 18. As shown in FIG. 2, the distinguishment table 18 has records as many as the SIP servers 11 through 15. Each record has fields of a “virtual host”, a “first condition”, a “second condition”, a “third condition”, and a “fourth condition”. The “virtual host” field stores virtual host identification information that is used to identify an individual SIP server from the SIP servers 11 through 15 that are virtual hosts. Each of the “first condition” field, the “second condition” field, the “third condition” field, and the “fourth condition” field stores location information in a form of a URI (Uniform Resource Identifier) as a condition of the SIP message that will be received by the SIP servers 11 through 15, or stores nothing.


As described below, if a URI defined in the “first condition” field is included in a “Route” header field (see FIG. 4) of the SIP message that is received by the interface engine 16, the SIP servers 11 through 15 corresponding to the record containing the URI become receipt destinations of the SIP message. When the “first condition” field is blank, the SIP servers 11 through 15 do not become the receipt destinations of the SIP message regardless of the value of the “Route” header field. When a URI defined in the “second condition” field is included in the starting line (see FIG. 4) of the SIP message as in the case of the “first condition” field, the corresponding SIP servers 11 through 15 become receipt destinations of the SIP message. If a URI that is defined in the “third condition” field is included in the “To” header field (see FIG. 4) of the SIP message, the corresponding SIP servers 11 through 15 become receipt destinations of the SIP message. If a URI that is defined in the “fourth condition” field is included in the “From” header field (see FIG. 4) of the SIP message, the corresponding SIP servers 11 through 15 become receipt destinations of the SIP message.


Therefore, the host device 10 that stores this distinguishment table 18 in the storage 10a has the above-mentioned storing function.


Next, contents of a process executed by the host distinguishment module 17 in the host device 10 will be described.


As mentioned above, the host distinguishment module 17 starts when the interface engine 16 receives the SIP message from either an SIP server or a user agent on the network, or one of the SIP servers 11 through 15.



FIG. 3 is a flowchart showing contents of the host distinguishment process.


In a first step S101 of the host distinguishment process, the host distinguishment module 17 (the CPU 10b that executes this module) receives the SIP message that is received by the interface engine 16 from the interface engine 16.


In the next step S102, the host distinguishment module 17 reads the distinguishment table 18 shown in FIG. 2 from the storage 10a.


In the next step S103, the host distinguishment module 17 reads the URI from the “Route” header field of the SIP message received from interface engine 16 in step S101, and searches the distinguishment table 18 of FIG. 2 for a record whose “first condition” field contains the read URI.


In the next step S104, the host distinguishment module 17 judges whether a record whose “first condition” field contains the URI in the “Route” header field of the SIP message has been detected. Then, the host distinguishment module 17 branches the process from step S104 to step S112, when the record concerned has been detected. On the other hand, when the record concerned has not been detected, the module advances the process to step S105.


In step S105, the host distinguishment module 17 reads the URI from the starting line of the SIP message received from the interface engine 16 in step S101, and searches the distinguishment table 18 of FIG. 2 for a record whose “second condition” field contains the read URI.


At the next step S106, the host distinguishment module 17 judges whether a record whose “second condition” field contains the URI in the starting line of the SIP message has been detected. Then, the host distinguishment module 17 branches the process from step S106 to step S112, when the record concerned has been detected. On the other hand, when the record concerned has not been detected, the module advances the process to step S107.


At the next step S107, the host distinguishment module 17 reads the URI from the “To” header field of the SIP message received from the interface engine 16 in step S101, and searches the distinguishment table 18 of FIG. 2 for a record whose “third condition” field contains the read URI.


At the next step S108, the host distinguishment module 17 judges whether a record whose “third condition” field contains the URI in the “To” header field of the SIP message has been detected. Then, the host distinguishment module 17 branches the process from step S108 to step S112, when the record concerned has been detected. On the other hand, when the record concerned has not been detected, the module advances the process to step S109.


In the next step S109, the host distinguishment module 17 URI reads the URI from the “From” header field of the SIP message received from the interface engine 16 in step S101, and searches the distinguishment table 18 of FIG. 2 for a record whose “fourth condition” field contains the read URI.


In the next step S110, the host distinguishment module 17 judges whether the record whose “fourth condition” field contains the URI in the “From” header field has been detected. Then, the host distinguishment module 17 branches the process from step S110 to step S112, when the record concerned has been detected. On the other hand, when the record concerned has not been detected, the module advances the process to step S111.


In step S111, since the record that contains the virtual host identification information could not be detected in the distinguishment table 18 of FIG. 2, the host distinguishment module 17 delivers the information that shows the virtual host identification information could not be detected to the interface engine 16 as a return value. Then, the host distinguishment module 17 finishes the host distinguishment process shown in FIG. 3.


On the other hand, in step S112, since the record that contains the virtual host identification information could be detected in the distinguishment table 18 of FIG. 2, the host distinguishment module 17 delivers the virtual host identification information included in the record to the interface engine 16 as a return value. Then, the host distinguishment module 17 finishes the host distinguishment process shown in FIG. 3.


Therefore, the CPU 10b that executes step S103, S105, S107, and S109 corresponds to the search function mentioned above, and the CPU 10b that executes steps S111 and S112 corresponds to the delivery function mentioned above.


Receiving information showing that the virtual host identification information is not detected from the host distinguishment module 17, the interface engine 16 returns the SIP message with no destination information to the transmitter according to the SIP message. Further, receiving the virtual host identification information from the host distinguishment module 17, the interface engine 16 makes a thread of the module that delivers the SIP message to the virtual host (SIP server), and delivers the virtual host identification information and the SIP message to the thread. The thread delivers the SIP message to the virtual host (SIP server) that is specified by the virtual host identification information received from the interface engine 16.


Next, the operations and effects of the host device 10 of the embodiment will be described.


For example, assuming that the interface engine 16 of the host device 10 of this embodiment receives an SIP message as shown in FIG. 4 from the SIP server on the network, the “Route” header field of the SIP message shown in FIG. 4 includes the same URI (sip:fujitsu.com) as the value in the “first condition” field of the record of the SIP server 11 in the distinguishment table 18 of FIG. 2, and its starting line includes the same URI (sip:shingo@fujitsu.com) as the value in the “second condition” field of the record of the SIP server 12 in the distinguishment table 18 of FIG. 2.


Receiving such an SIP message, the interface engine 16 generates the process of the host distinguishment module 17. The host distinguishment module 17 searches the respective entities in the SIP message using the URI in the “Route” header field as a search key for a record of which “first condition” field includes the same URI (step S103). Since a record of the SIP server 11 is detected as a result of the search, the host distinguishment module 17 delivers the virtual host identification information (0001) of the SIP server 11 to the interface engine 16 (step S104; YES, sep S112).


At the time, although the starting line of the SIP message includes the same URI (sip:shingo@fujitsu.com) as the value of the “second condition” field of the record of the SIP server 12 in the distinguishment table 18 of FIG. 2, the search using the URI in the starting line as a search key (step S105) is not executed (step S104; YES). Therefore, the virtual host identification information (0002) of the SIP server 12 is not delivered to the interface engine 16 as a return value. As a result, the SIP message is certainly passed to one virtual host (SIP server). Thus, according to the host device 10 of the embodiment, even if the SIP message directed to any of the SIP servers 11 through 15 as virtual hosts contains some receipt conditions for some of the SIP severs 11 through 15, only one virtual host that should receives the SIP message can be extracted, and the SIP message is delivered to the extracted virtual host.


Further, according to the host device 10 of the embodiment, even when any of the SIP servers 11 through 15 as the virtual hosts sends an SIP message, the interface engine 16 generates a process of the host distinguishment module 17 with respect to the SIP message in order to execute the host distinguishment process of FIG. 3.


As a result, when an SIP message is transmitted inside the host device 10, that is, when the SIP message is sent from one of the SIP servers 11 through 15 to another of the SIP servers 11 through 15, since the interface engine 16 is notified of virtual host identification information that shows an appropriate destination of the SIP message from the host distinguishment module 17, the SIP message is transmitted to the SIP server other than the transmitter by folding back inside the computer, which can avoid a leak of a message to the network through the communication device.

Claims
  • 1. An SIP message delivery program to deliver an SIP message that is sent to any of virtual hosts as SIP servers to a suitable virtual host, said program making a computer execute functions comprising: a storing function for storing records for respective entities of an SIP message that can contain location information into a table in a storage device, wherein each record links virtual host identifying information to identify a virtual host that receives an SIP message only when the entities contain predetermined location information with the predetermined location information that is a content of the receipt condition;a receiving function for receiving an SIP message from an SIP server on a network;a search function for searching said table for a record whose receipt condition in an entity matches location information in the corresponding entity in the SIP message received by the receiving function, for each of entities in a predetermined order; anda delivery function for delivering, when a record is detected by the search function by executing the search process for each of the entities in order, the SIP message received by the receiving function to the virtual host that is distinguished by the virtual host identifying information included in said detected record.
  • 2. The SIP message delivery program according to claim 1, wherein said receiving function receives an SIP message from any of said virtual hosts.
  • 3. The SIP message delivery program according to claim 1, wherein said delivery function delivers information showing the SIP message received by the receiving function cannot be accepted by any virtual hosts, when no record is detected while the search function executes the search process for each of the entities in order.
  • 4. The SIP message delivery program according to claim 1, wherein said storing function stores a record that links virtual host identification information with a receipt condition into a table in said storage device with respect to said entities in said SIP message, and wherein said entities includes a starting line, a field that stores location information to specify a location of a relay device, a field that stores location information to specify the location of a transmitter, and a field that stores location information to specify a location of a receiver.
  • 5. The SIP message delivery program according to claim 4, wherein said search function executes said search processes for the field that stores location information to specify a location of a relay device, the starting line, the field that stores location information to specify a location of a receiver, and the field that stores location information to specify a location of a transmitter, in this order.
  • 6. A computer readable medium that stores an SIP message delivery program to deliver an SIP message that is sent to any of virtual hosts as SIP servers to a suitable virtual host, said program making a computer execute functions comprising: a storing function for storing records for respective entities of an SIP message that can contain location information into a table in a storage device, wherein each record links virtual host identifying information to identify a virtual host that receives an SIP message only when the entities contain predetermined location information with the predetermined location information that is a content of the receipt condition;a receiving function for receiving an SIP message from an SIP server on a network;a search function for searching said table for a record whose receipt condition in an entity matches location information in the corresponding entity in the SIP message received by the receiving function, for each of entities in a predetermined order; anda delivery function for delivering, when a record is detected by the search function by executing the search process for each of the entities in order, the SIP message received by the receiving function to the virtual host that is distinguished by the virtual host identifying information included in said detected record.
  • 7. The computer readable medium according to claim 6, wherein said receiving function receives an SIP message from any of said virtual hosts.
  • 8. The computer readable medium according to claim 6, wherein said delivery function delivers information showing the SIP message received by the receiving function cannot be accepted by any virtual hosts, when no record is detected while the search function executes the search process for each of the entities in order.
  • 9. The computer readable medium according to claim 6, wherein said storing function stores a record that links virtual host identification information with a receipt condition into a table in said storage device with respect to said entities in said SIP message, and wherein said entities includes a starting line, a field that stores location information to specify a location of a relay device, a field that stores location information to specify the location of a transmitter, and a field that stores location information to specify a location of a receiver.
  • 10. The computer readable medium according to claim 6, wherein said search function executes said search processes for the field that stores location information to specify a location of a relay device, the starting line, the field that stores location information to specify a location of a receiver, and the field that stores location information to specify a location of a transmitter, in this order.
  • 11. An SIP message delivery device to deliver an SIP message that is sent to any of virtual hosts as SIP servers to a suitable virtual host, said device comprising: a storing section for storing records for respective entities of an SIP message that can contain location information into a table in a storage device, wherein each record links virtual host identifying information to identify a virtual host that receives an SIP message only when the entities contain predetermined location information with the predetermined location information that is a content of the receipt condition;a receiving section for receiving an SIP message from an SIP server on a network;a search section for searching said table for a record whose receipt condition in an entity matches location information in the corresponding entity in the SIP message received by the receiving section, for each of entities in a predetermined order; anda delivery section for delivering, when a record is detected by the search section by executing the search process for each of the entities in order, the SIP message received by the receiving section to the virtual host that is distinguished by the virtual host identifying information included in said detected record.
  • 12. The SIP message delivery device according to claim 11, wherein said receiving section receives an SIP message from any of said virtual hosts.
  • 13. The SIP message delivery device according to claim 11, wherein said delivery section delivers information showing the SIP message received by the receiving section cannot be accepted by any virtual hosts, when no record is detected while the search section executes the search process for each of the entities in order.
  • 14. The SIP message delivery device according to claim 11, wherein said storing section stores a record that links virtual host identification information with a receipt condition into a table in said storage device with respect to said entities in said SIP message, and wherein said entities includes a starting line, a field that stores location information to specify a location of a relay device, a field that stores location information to specify the location of a transmitter, and a field that stores location information to specify a location of a receiver.
  • 15. The SIP message delivery device according to claim 11, wherein said search section executes said search processes for the field that stores location information to specify a location of a relay device, the starting line, the field that stores location information to specify a location of a receiver, and the field that stores location information to specify a location of a transmitter, in this order.
  • 16. An SIP message delivery method to deliver an SIP message that is sent to any of virtual hosts as SIP servers to a suitable virtual host, said method making a computer execute procedures comprising: a storing procedure for storing records for respective entities of an SIP message that can contain location information into a table in a storage device, wherein each record links virtual host identifying information to identify a virtual host that receives an SIP message only when the entities contain predetermined location information with the predetermined location information that is a content of the receipt condition;a receiving procedure for receiving an SIP message from an SIP server on a network;a search procedure for searching said table for a record whose receipt condition in an entity matches location information in the corresponding entity in the SIP message received by the receiving procedure, for each of entities in a predetermined order; anda delivery procedure for delivering, when a record is detected by the search procedure by executing the search process for each of the entities in order, the SIP message received by the receiving procedure to the virtual host that is distinguished by the virtual host identifying information included in said detected record.
  • 17. The SIP message delivery method according to claim 16, wherein said receiving procedure receives an SIP message from any of said virtual hosts.
  • 18. The SIP message delivery method according to claim 16, wherein said delivery procedure delivers information showing the SIP message received by the receiving procedure cannot be accepted by any virtual hosts, when no record is detected while the search procedure executes the search process for each of the entities in order.
  • 19. The SIP message delivery method according to claim 16, wherein said storing procedure stores a record that links virtual host identification information with a receipt condition into a table in said storage device with respect to said entities in said SIP message, and wherein said entities includes a starting line, a field that stores location information to specify a location of a relay device, a field that stores location information to specify the location of a transmitter, and a field that stores location information to specify a location of a receiver.
  • 20. The SIP message delivery method according to claim 16, wherein said search procedure executes said search processes for the field that stores location information to specify a location of a relay device, the starting line, the field that stores location information to specify a location of a receiver, and the field that stores location information to specify a location of a transmitter, in this order.
Priority Claims (1)
Number Date Country Kind
2006-205297 Jul 2006 JP national