Embodiments of the present invention relate generally to communications technology and, more particularly, relate to apparatuses, methods and computer program products for enabling the provision of routing for message signaling.
Communication devices are becoming increasingly ubiquitous in the modern world. In particular, mobile communication devices seem to be popular with people of all ages, socio-economic backgrounds and sophistication levels. Accordingly, users of such devices are becoming increasingly attached to their respective mobile communication devices. Whether such devices are used for calling, emailing, sharing or consuming media content, gaming, navigation or various other activities, people are more connected to their devices and consequently more connected to each other and to the world at large.
Due to advances in processing power, memory management, application development, power management and other areas, communication devices, such as computers, mobile telephones, cameras, personal digital assistants (PDAs), media players and many others are becoming more capable. Furthermore, many such devices are becoming capable of performing tasks associated with more than one of the above listed devices and other tasks as well. Thus, for example, users of such devices often have a robust capacity to generate, consume and share content as well as to communicate with each other.
Various communication networks and protocols have developed to support the communication devices described above. Many of these networks and protocols are utilized in the context of the provision of various different services to the users of such devices. As an example, the Internet protocol (IP) multimedia subsystem (IMS) is an architectural framework for delivering Internet services to users of mobile communication devices. However, IMS is merely one example of a number of alternative and overlapping technologies designed to provide wireless or wired access to services. A continued effort is likely to be made to improve the capabilities and respective efficiencies of these technologies. Thus, for example, improvements in support of overlap dialing may be desirable.
A method, apparatus and computer program product are therefore provided that may enable routing of message signaling. Thus, support for overlap dialing in an architecture such as, for example, IMS may be provided.
In one exemplary embodiment, a method of providing routing of message signaling is provided. The method may include receiving an indication of a signaling message including at least a partially dialed number, determining whether the dialed number is an incomplete number or a complete number associated with a user identity of a terminating user, forwarding, in response to a determination that the dialed number is the complete number, the signaling message to a call session control function associated with a location of the terminating user, and delaying forwarding of the signaling message until the dialed number is the complete number in response to a determination that the dialed number is the incomplete number.
In another exemplary embodiment, a computer program product for providing routing of message signaling is provided. The computer program product may include at least one computer-readable storage medium having computer-executable program code portions stored therein. The computer-executable program code portions may include a first program code instructions, second program code instructions, third program code instructions and fourth program code instructions. The first program code instructions may be for receiving an indication of a signaling message including at least a partially dialed number. The second program code instructions may be for determining whether the dialed number is an incomplete number or a complete number associated with a user identity of a terminating user. The third program code instructions may be for forwarding, in response to a determination that the dialed number is the complete number, the signaling message to a call session control function associated with a location of the terminating user. The fourth program code instructions may be for delaying forwarding of the signaling message until the dialed number is the complete number in response to a determination that the dialed number is the incomplete number.
In another exemplary embodiment, an apparatus for providing routing of message signaling is provided. The apparatus may include a processor that may be configured to receive an indication of a signaling message including at least a partially dialed number, determine whether the dialed number is an incomplete number or a complete number associated with a user identity of a terminating user, forward, in response to a determination that the dialed number is the complete number, the signaling message to a call session control function associated with a location of the terminating user, and delay forwarding of the signaling message until the dialed number is the complete number in response to a determination that the dialed number is the incomplete number.
In yet another exemplary embodiment an apparatus for providing routing of message signaling is provided. The apparatus may include means for receiving an indication of a signaling message including at least a partially dialed number, means for determining whether the dialed number is an incomplete number or a complete number associated with a user identity of a terminating user, means for forwarding, in response to a determination that the dialed number is the complete number, the signaling message to a call session control function associated with a location of the terminating user, and means for delaying forwarding of the signaling message until the dialed number is the complete number in response to a determination that the dialed number is the incomplete number.
In another exemplary embodiment, a method of providing routing of message signaling is provided. The method may include receiving an indication of a signaling message including a partially dialed number, determining an identity of an entity configured to perform a digit collection service regarding detection of a complete number, and providing an identity of the entity to a provider of the indication.
In another exemplary embodiment, a computer program product for providing routing of message signaling is provided. The computer program product may include at least one computer-readable storage medium having computer-executable program code portions stored therein. The computer-executable program code portions may include a first program code instructions, second program code instructions, and third program code instructions. The first program code instructions may be for receiving an indication of a signaling message including a partially dialed number. The second program code instructions may be for determining an identity of an entity configured to perform a digit collection service regarding detection of a complete number. The third program code instructions may be for providing an identity of the entity to a provider of the indication.
In another exemplary embodiment, an apparatus for providing routing of message signaling is provided. The apparatus may include a processor that may be configured to receive an indication of a signaling message including a partially dialed number, determine an identity of an entity configured to perform a digit collection service regarding detection of a complete number, and provide an identity of the entity to a provider of the indication.
Having thus described the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
Some embodiments of the present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments of the invention are shown. Indeed, various embodiments of the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like reference numerals refer to like elements throughout. As used herein, the terms “data,” “content,” “information” and similar terms may be used interchangeably to refer to data capable of being transmitted, received and/or stored in accordance with embodiments of the present invention. Moreover, the term “exemplary”, as used herein, is not provided to convey any qualitative assessment, but instead merely to convey an illustration of an example. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention.
As discussed above, support for overlap dialing may be desirable in architectures supporting the provision of access to Internet services in a context where multiple access technologies may be used for network access, such as IMS. Some embodiments of the present invention will be described below in relation to a solution for improving signal routing in such a context. Although an exemplary embodiment will be described below in the context of IMS, it should be appreciated that embodiments may also be practiced in the context of other architectures as well.
There are currently several proposals for handling of overlap signaling within IMS. One such proposal is referred to as the “in-dialog” method. According to the in-dialog method, an entity within a network (e.g., an application server (AS)) may collect dialed numbers that arrive in various signaling messages (e.g., session initiation protocol (SIP) messages such as INVITE or INFO). The AS may then route a corresponding message forward once it is able (e.g., once the end of dialing is reached). In this regard, a problem may occur at the terminating side when the AS needs to be contacted. It may typically be assumed that an incoming INVITE request with an incomplete number is routed to a serving call session control function (S-CSCF), which may apply IMS filter criteria and send the request to the AS using normal IMS filtering. At this moment, however, the terminating user is not identified by the address in the INVITE request (e.g., the request uniform resource identifier (URI) may show an incomplete number) and therefore the S-CSCF does not know which filter criteria (which are bound to specific user profiles) to apply. Furthermore, it may not be clear to an interrogating CSCF (I-CSCF) of the architecture as to which of the S-CSCFs to route the incoming request, due to the incomplete number in the request URI. Thus, for example, the request may end up at a S-CSCF that does not serve the terminating user that is ultimately identified after all of the numbers identifying the user have been collected. Accordingly, once the end of dialing is reached, it may be possible for the AS to send the request to the S-CSCF that serves the user. However, efforts at call routing prior to the completion of dialing may lead to inefficiencies in relation to usage of network resources.
Accordingly, embodiments of the present invention may provide a mechanism by which routing may be delayed until a S-CSCF that serves the terminating user is clearly identified. As such, for example, a digit analyzing AS may be provided to allow requests to be initially analyzed by the digit analyzing AS, as allowed by IMS procedures when public service identity (PSI) based routing is employed.
Referring now to
The IMS layer 30 may include various functions for providing IMS session signaling to enable access to the services or applications of the service/application layer 40. In an exemplary embodiment, the IMS layer 30 may include various call session control functions (CSCFs) such as, for example, one or more S-CSCFs (e.g., S-CSCF 32) and one or more I-CSCFs (e.g., I-CSCF 34).
The S-CSCF 32 may be embodied at a node such as a SIP server and is located in a home network of a user. Thus, for example, various S-CSCFs may be located in various home networks for respective different users. The S-CSCF 32 may be in communication with services or applications of the service/application layer 40 (e.g., a home subscriber server (HSS) such as HSS 42) to download or upload user profiles. The S-CSCF 32 may be configured to handle SIP registrations and bind user location (e.g., user IP address) to a SIP address. The S-CSCF 32 may also be configured to decide to which application servers of the service/application layer 40 a given SIP message is to be forwarded in order to receive corresponding services.
The I-CSCF 34 may be employed to serve as a forwarding point for SIP packets. In this regard, for example, the I-CSCF 34 may be embodied at a server or other node configured to, among other things, communicate with the service/application layer 40 (e.g., the HSS 42) via an interface (e.g., a Diameter Cx interface) in order to query the HSS 42 to receive the user location in order to route a SIP request to the correct S-CSCF (e.g., the S-CSCF of the user's location).
The service/application layer 40 may perform services and include applications accessible to users via lower layers. In an exemplary embodiment, the service/application layer 40 may include the HSS 42, a subscriber location function (SLF) 44, and one or more application servers (e.g., AS 46). The HSS 42 may include a master user database for use by network entities that handle calls. The HSS 42 may store user profiles, provide information regarding user location and/or perform user authentication and authorization. If multiple HSSs are used, the SLF 44 may also be employed to map user addresses. Various different identities may typically be used to identify users such as international mobile subscriber identity (IMSI), temporary mobile subscriber identity (TMSI), international mobile equipment identity (IMEI), mobile station integrated services digital network (MSISDN) number (e.g., user telephone number), IP multimedia private identity (IMPI), IP multimedia public identity (IMPU), and/or the like. In an exemplary embodiment, the HSS 42 (and/or the SLF 44) may use IMPI and/or IMPU, which may be URIs. However, some embodiments may include the provision of a new type of address that may be configured as “incomplete number”, for use as described in greater detail below.
The application servers host and execute various services. Thus, the application servers may provide users with access to the services via interface with the S-CSCF 32. The application servers can typically operate in various different modes dependent upon the service being provided. For example, the AS 46, which is an example of an application server, may be configured to enable operation in a SIP proxy mode, a SIP user agent mode, or a SIP back-to-back user agent (SIP B2BUA) mode. An exemplary embodiment of the present invention will now be described in greater detail in reference to
The I-CSCF 34 may route the request to the AS 46 (e.g., a B2BUA AS) identified by the HSS 42. The AS 46 may include a digit collector 52 and a digit manager 54. The digit collector 52 may be configured to perform digit (or other character) analysis until an end of dialing is recognized. Once the digit collector 52 recognizes that the AS 46 has received a complete number, the AS 46 (e.g., via the digit manager 54) may query the HSS 42 (or the SLF 44) via Sh-pull procedures as described, for example, in 3GPP TS 29.328 and 3GPP TS 29.329. In this regard, for example, the AS 46 may provide a Sh query via the Sh interface (e.g., interface between the AS and HSS) to find out the S-CSCF serving the terminating user. The HSS 42 may provide a response to the Sh query identifying the S-CSCF 32. The AS 46 may then forward the request with the complete number to the corresponding S-CSCF (e.g., S-CSCF 32). The S-CSCF 32 may thereafter provide services based on terminating filter criteria for the terminating user.
The processor 70 may be embodied in a number of different ways. For example, the processor 70 may be embodied as various processing means such as a processing element, a coprocessor, a controller or various other processing devices including integrated circuits such as, for example, an ASIC (application specific integrated circuit), an FPGA (field programmable gate array), a hardware accelerator, and/or the like. In an exemplary embodiment, the processor 70 may be configured to execute instructions stored in the memory device 76 or otherwise accessible to the processor 70. Meanwhile, the communication interface 74 may be embodied as any device or means embodied in either hardware, software, or a combination of hardware and software that is configured to receive and/or transmit data from/to a network and/or any other device or module in communication with the apparatus. In this regard, the communication interface 74 may include, for example, an antenna and/or supporting hardware and/or software for enabling communications with a wired or wireless communication network. In fixed environments, the communication interface 74 may alternatively or also support wired communication. As such, the communication interface 74 may include a communication modem and/or other hardware/software for supporting communication via cable, digital subscriber line (DSL), universal serial bus (USB) or other mechanisms. In an exemplary embodiment, the communication interface 74 may be configured to enable communication with various other functions or devices including, for example, the HSS 42 (e.g., via the Sh interface), the S-CSCF 32, the I-CSCF 34, and/or the like.
The user interface 72 may be in communication with the processor 70 to receive an indication of a user input at the user interface 72 and/or to provide an audible, visual, mechanical or other output to the user. As such, the user interface 72 may include, for example, a keyboard, a mouse, a joystick, a touch screen, a display, a microphone, a speaker, or other input/output mechanisms. In an exemplary embodiment in which the apparatus is embodied as a server, access point or some other network devices, the user interface 72 may be limited, or eliminated.
In an exemplary embodiment, the processor 70 may be embodied as, include or otherwise control the digit collector 52 and the digit manager 54. The digit collector 52 and the digit manager 54 may each be any means such as a device or circuitry embodied in hardware, software or a combination of hardware and software that is configured to perform the corresponding functions of the digit collector 52 and the digit manager 54, respectively, as described below. However, in some embodiments, the functions of both the digit collector 52 and the digit manager 54 may be performed by a single entity configured to perform the corresponding functions of both the digit collector 52 and the digit manager 54.
The digit collector 52 may be configured to receive incoming numbers (or groups of characters) and determine whether or not such numbers are complete. As indicated above, the digit collector 52 may perform the determination by any of various mechanisms such as, for example, by recognizing an end of dialing. In an exemplary embodiment, the digit collector 52 may include a configured address for available application servers based at least in part on the incomplete number provided. The digit collector 52 may be further configured to provide the number received along with an indication of whether the number is complete or incomplete to the digit manager 54.
The digit manager 54 may be configured to interface with (or direct the AS 46 to interface with) a respective other server or function based on whether a dialed number received in association with a request is complete or incomplete. For example, if the dialed number is incomplete, the digit manager 54 may be configured to delay communication of a query to the HSS 42 to determine an S-CSCF to which the request is to be forwarded until the dialed number is complete. Accordingly, once the digit manager 54 receives an indication of a determination made by the digit collector 52 that the dialed number is complete, the digit manager 54 may be configured to communicate the Sh query to the HSS 42 to enable a determination regarding to which S-CSCF the request is to be forwarded. After receiving a response from the HSS 42 identifying the S-CSCF 32 of the terminating user, the digit manager 54 may be configured to communicate (or direct the AS 46 to communicate) the request to the identified S-CSCF 32.
Accordingly, embodiments of the present invention may provide for improved overlap dialing response without impacting existing S-CSCF implementation while avoiding inclusion of unnecessary nodes in a call chain. Furthermore, embodiments of the present invention may provide that only one instance of S-CSCF (e.g., the one that serves the terminating user) is in the call chain to reduce processing load.
Accordingly, blocks or steps of the flowchart support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that one or more blocks or steps of the flowchart, and combinations of blocks or steps in the flowchart, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
In this regard, one embodiment of a method for providing signaling message routing as provided in
In some embodiments, the method may include further optional operations, an example of which is shown in dashed lines in
In an exemplary embodiment, the signaling message may be a SIP signaling message or a request URI. Furthermore, the receipt of the indication of the signaling message may, in some cases, include receiving the indication at an application server within an IMS core network that is selected based on the incomplete number. In some instances, determining whether the dialed number is the complete number may include recognizing an end of dialing with respect to the dialed number.
In an exemplary embodiment, an apparatus for performing the method above may include a processor (e.g., the processor 70) configured to perform each of the operations (100-140) described above. The processor may, for example, be configured to perform the operations by executing stored instructions or an algorithm for performing each of the operations. Alternatively, the apparatus may include means for performing each of the operations described above. In this regard, according to an exemplary embodiment, examples of means for performing operations 100 to 140 may include, for example, respective ones of the digit collector 52, the digit manager 54, or the processor 70.
Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Moreover, although the foregoing descriptions and the associated drawings describe exemplary embodiments in the context of certain exemplary combinations of elements and/or functions, it should be appreciated that different combinations of elements and/or functions may be provided by alternative embodiments without departing from the scope of the appended claims. In this regard, for example, different combinations of elements and/or functions than those explicitly described above are also contemplated as may be set forth in some of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.