The subject matter of this application relates generally to methods and apparatuses, including computer program products, for sharing the status of S-CSCF nodes across a plurality of I-CSCF nodes in a communications network.
As communications networks become larger in scale, it becomes desirable to distribute processing across the network, as any point of centralization generally becomes a bottleneck. Load balancing and status monitoring across nodes in such networks becomes a greater challenge. For example, in Internet Protocol Multimedia Subsystem (IMS) networks, control elements such as interrogating call session control function (I-CSCF) nodes are generally centralized. In order to scale this logical function, it is desirable to distribute the processing to multiple points in the network, however doing so has the effect of making load management in the network a more complex function. In addition, as the intelligence to make decisions about allocating, routing and admitting sessions to nodes is distributed to more and more elements, the ability for any one node to make optimal decisions is diminished.
This diminished decision-making ability results from having distributed logic across many nodes because any particular node generally has a narrower view of the overall load and health of the network. In many of the currently-existing network types and configurations, nodes are reduced to making resource decisions based on their individual experience of the sessions that they encounter. The nodes have little or no information about the load or health of the other nodes in the network. In other currently-existing network types, nodes are able to communicate load and availability information with their immediate peers, thereby enhancing the set of data available to a particular node for decision making.
In contrast, some networks have a highly centralized control element for allocation, routing, and administration decisions. Generally, these networks can control load distribution and resource allocation more efficiently than a network with highly distributed control logic because the resource decisions are made at a single node that has a very expansive view of the network status. However, such centralized networks have issues related to congestion of the decision making process as all of the session traffic has to be processed by the centralized control element. This centralized control approach limits scaling and can give rise to overloading difficulties.
Therefore, what is required is a technique to distribute control logic to multiple I-CSCF in IMS networks, but also to have the I-CSCFs sufficiently aware of the network status of other nodes, such as serving call session control function (S-CSCF) nodes, such that the I-CSCF nodes still make optimal resource decisions. What is further required is a technique for each I-CSCF in the network to communicate partial views of network status to other I-CSCFs in an efficient and scalable fashion such that any one I-CSCF can eventually obtain a complete view of the network status of all S-CSCFs in the network without encountering the scalability and load issues associated with conducting a mass broadcast of the status information to every other I-CSCF.
The invention, in one aspect, features a method for sharing the status of S-CSCF nodes across a plurality of I-CSCF nodes in a communications network. The method includes monitoring, at a first I-CSCF node of the plurality of I-CSCF nodes, the status of one or more S-CSCF nodes connected to the first I-CSCF node. The one or more S-CSCF nodes connected to the first I-CSCF node include a subset of the S-CSCF nodes in the network. The method also includes monitoring, at a second I-CSCF node of the plurality of I-CSCF nodes, the status of one or more S-CSCF nodes connected to the second I-CSCF node. The one or more S-CSCF nodes connected to the second I-CSCF node include a subset of the S-CSCF nodes in the network. The method also includes transmitting, from the first I-CSCF node to the second I-CSCF node, the monitored status of the one or more S-CSCF nodes connected to the first I-CSCF node.
The invention, in another aspect, features a system for sharing the status of S-CSCF nodes across a plurality of I-CSCF nodes in a communications network. The system includes a first I-CSCF node of the plurality of I-CSCF nodes configured to monitor status of one or more S-CSCF nodes connected to the first I-CSCF node. The one or more S-CSCF nodes connected to the first I-CSCF node include a subset of the S-CSCF nodes in the network. The first I-CSCF node is further configured to transmit the monitored status of the one or more S-CSCF nodes connected to the first I-CSCF node to a second I-CSCF node of the plurality of I-CSCF nodes. The second I-SCSF node is configured to monitor status of one or more S-CSCF nodes connected to the second I-CSCF node. The one or more S-CSCF nodes connected to the second I-CSCF node include a subset of the S-CSCF nodes in the network.
The invention, in another aspect, features a computer program product, tangibly embodied on a computer readable storage medium, for sharing the status of S-CSCF nodes across a plurality of I-CSCF nodes in a communications network. The computer program product includes instructions operable to cause a data processing apparatus to monitor, at a first I-CSCF node of the plurality of I-CSCF nodes, the status of one or more S-CSCF nodes connected to the first I-CSCF node. The one or more S-CSCF nodes connected to the first I-CSCF node include a subset of the S-CSCF nodes in the network. The computer program product also includes instructions operable to cause the data processing apparatus to monitor, at a second I-CSCF node of the plurality of I-CSCF nodes, the status of one or more S-CSCF nodes connected to the second I-CSCF node. The one or more S-CSCF nodes connected to the second I-CSCF node include a subset of the S-CSCF nodes in the network. The computer program product also includes instructions operable to cause the data processing apparatus to transmit, from the first I-CSCF node to the second I-CSCF node, the monitored status of the one or more S-CSCF nodes connected to the first I-CSCF node
In some embodiments, any of the above aspects can include one or more of the following features. In some embodiments, at least one S-CSCF node in the first subset of the S-CSCF nodes is also in the second subset of S-CSCF nodes in the network. In some embodiments, the monitored status of the one or more S-CSCF nodes connected to the first I-CSCF node is transmitted from the first I-CSCF node to a third I-CSCF node of the plurality of I-CSCF nodes. In some embodiments, the monitored status of the one or more S-CSCF nodes connected to the first I-CSCF node is transmitted from the second I-CSCF node to a third I-CSCF node of the plurality of I-CSCF nodes. In some embodiments, at least one of the one or more S-CSCF nodes connected to the second I-CSCF node is also monitored by the first I-CSCF node. In some embodiments, the monitored status of each of the one or more S-CSCF nodes connected to the first I-CSCF node includes an identification attribute associated with a time, a duration or both of an event occurring at the one or more S-CSCF nodes. In some embodiments, the identification attribute comprises at least one of a timestamp, a hash value, and an identification number.
In some embodiments, monitoring the status of one or more S-CSCF nodes connected to the first I-CSCF node includes active probing of the one or more S-CSCF nodes by the first I-CSCF node. In some embodiments, monitoring the status of one or more S-CSCF nodes connected to the first I-CSCF node includes passive analysis of traffic received from the one or more S-CSCF nodes by the first I-CSCF node.
In some embodiments, the monitored status of the one or more S-CSCF nodes connected to the second I-CSCF node is received at the first I-CSCF node from the second I-CSCF node, and the monitored status of the one or more S-CSCF nodes connected to the second I-CSCF node is stored at the first I-CSCF node. In some embodiments, the first I-CSCF node stores the monitored status of the one or more S-CSCF nodes connected to the second I-CSCF node in a data structure located at the first I-CSCF node.
In some embodiments, the monitored status of one or more S-CSCF nodes connected to the third I-CSCF node is received at the first I-CSCF node from a third I-CSCF node of the plurality of I-CSCF nodes, and the monitored status of the one or more S-CSCF nodes connected to the third I-CSCF node is stored at the first I-CSCF node. In some embodiments, a service request from a remote device is received at the first I-CSCF node, and the service request is routed by the first I-CSCF node one of the S-CSCF nodes in the network, wherein the routing is based on the monitored status of the S-CSCF nodes. In some embodiments, the monitored status of the one or more S-CSCF nodes connected to the third I-CSCF node is transmitted from the first I-CSCF node to the second I-CSCF node.
In some embodiments, an update to the monitored status of the one or more S-CSCF nodes connected to the second I-CSCF node is received at the first I-CSCF node from the second I-CSCF node, and the update to the monitored status of the one or more S-CSCF nodes connected to the second I-CSCF node is stored at the first I-CSCF node. In some embodiments, an update to the monitored status of the one or more S-CSCF nodes connected to the second I-CSCF node is received at the first I-CSCF node from the third I-CSCF node, an identification attribute of the update received from the third I-CSCF node is compared at the first I-CSCF node with an identification attribute of the update received from the second I-CSCF node, and the update received from the third I-CSCF node is discarded at the first I-CSCF node if the identification attribute of the update received from the third I-CSCF node and the identification attribute of the update received from the second I-CSCF node match. In some embodiments, the second I-CSCF node transmits the update based on a change in the monitored status of the one or more S-CSCF nodes connected to the second I-CSCF node.
In some embodiments, the connection between the first I-CSCF node and the second I-CSCF node is monitored at the first I-CSCF node. In some embodiments, the connection between the first I-CSCF node and the second I-CSCF node is unidirectional from the first I-CSCF node and the second I-CSCF node. In some embodiments, the directionality of the connection between the first I-CSCF node and the second I-CSCF node is preconfigured at the first I-CSCF node, the second I-CSCF node, or both.
In some embodiments, a failure of the connection between the first I-CSCF node and the second I-CSCF node is detected at the first I-CSCF node, and an indication of the failure of the connection between the first I-CSCF node and the second I-CSCF node is transmitted from the first I-CSCF node to a third I-CSCF node, wherein the connection between the first I-CSCF node and the third I-CSCF node is unidirectional from the first I-CSCF node to the third I-CSCF node. In some embodiments, the connection between the first I-CSCF node and the third I-CSCF node is updated at the third I-CSCF node to be bidirectional, and the monitored status of one or more S-CSCF nodes connected to the third I-CSCF node is transmitted from the third I-CSCF node to the first I-CSCF node.
In some embodiments, the connection between the first I-CSCF node and the second I-CSCF node is defined by an IP address of the second I-CSCF node stored at the first I-CSCF node. In some embodiments, the connection between the first I-CSCF node and the second I-CSCF node is defined by an IP address of the first I-CSCF node discovered by the second I-CSCF node upon receiving a connection request from the first I-CSCF node. In some embodiments, the discovery of the IP address of the first I-CSCF node by the second I-CSCF node is based on a packet received from the first I-CSCF node. In some embodiments, the IP address of the first I-CSCF node is stored in a source address field of the packet received from the first I-CSCF node. In some embodiments, the packet received from the first I-CSCF node is the first packet in a handshake routine associated with the connection request.
In some embodiments, the connection between the first I-CSCF node and each one of the one or more S-CSCF nodes connected to the first I-CSCF node is defined by an IP address of each one of the one or more S-CSCF nodes stored at the first I-CSCF node. In some embodiments, the connection between the first I-CSCF node and each one of the one or more S-CSCF nodes connected to the first I-CSCF node is defined by an IP address of each one of the one or more S-CSCF nodes discovered by the first I-CSCF node upon starting up the first I-CSCF node.
In some embodiments, the plurality of I-CSCF nodes in the communications network are arranged in a flat chain structure, a ring structure, a hierarchical structure, a full mesh structure, or one or more partial mesh structures. In some embodiments, the monitored status of the one or more S-CSCF nodes connected to the first I-CSCF node includes at least one of workload data, availability data, traffic congestion data, and control data.
Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating the principles of the invention by way of example only.
The advantages of the invention described above, together with further advantages, may be better understood by referring to the following description taken in conjunction with the accompanying drawings. The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention.
In some embodiments, the IMS 102 includes any number of application servers 104a-d, S-CSCF nodes 106a-d, and I-CSCF nodes 108a-d. While
In some embodiments, the application servers 104a-d host and execute services in response to requests for service from a remote user. For example, the application servers 104a-d can provide VoIP calling services to a subscriber base. The application servers 104a-d can communicate with the S-CSCF nodes 106a-d using, for example, Session Initiation Protocol (SIP). For example, a “subscriber” can be an individual user, a group of users, a business, a corporation, or an entity that can access the service provider's network. One of ordinary skill in the art will understand that the techniques described herein are not limited to application on network traffic initiated or provided by a particular configuration of subscribers or users.
The S-CSCF nodes 106a-d comprise the signaling layer of the IMS 102. In some embodiments, the S-CSCF nodes 106a-d perform a variety of functions, such as session control. For example, the S-CSCF nodes 106a-d can interface to a Home Subscriber Server (HSS) (not shown) to retrieve subscription-related information (e.g., subscriber profiles), authentication and authorization information, and the subscriber's location and IP information. In some embodiments, the S-CSCF nodes 106a-d provide additional functionality including but not limited to SIP registrations, message inspection, routing services (e.g., ENUM lookups), and network policy enforcement.
The I-CSCF nodes 108a-d comprise the control layer of the IMS 102. In some embodiments, the I-CSCF nodes 108a-d communicate with remote servers over a network (e.g., network 120) and receive requests from subscribers to the network 120. For example, the I-CSCF nodes 108a-d can receive a request for SIP registration from a remote subscriber. Based on the request, the I-CSCF nodes 108a-d can query the HSS for registration status of the subscriber. The HSS returns, to the I-CSCF nodes 108a-d, either of (a) an S-CSCF node if the subscriber is already registered, (b) a list of S-CSCF nodes that are considered as candidate S-CSCF nodes, or (c) subscriber capabilities. In the case of (b), the I-CSCF nodes 108a-d select an S-CSCF node from the list, retrieve an address of the selected S-CSCF node, and assign the address to the registration request in order to forward the request to the assigned S-CSCF node 106a-d. In the case of (c), the I-CSCF nodes 108a-d match the capabilities returned by the HSS with the capabilities of the S-CSCF nodes, and select the optimal S-CSCF node based on the capability match. Because the I-CSCF nodes 108a-d are aware of the load and availability characteristics of each S-CSCF node in the network 120, these techniques provide the advantage of enabling the I-CSCF nodes 108a-d to select an S-CSCF node with, for example, the lightest workload from the list of S-CSCF nodes that match the required capabilities.
In addition, the I-CSCF nodes 108a-d monitor the load and availability status of the S-CSCF nodes 106a-d. The I-CSCF nodes 108a-d receive continuous feedback from the S-CSCF nodes 106a-d as to their actual load and availability status. Examples of such monitoring include the use of an IP “ping” to test if the S-CSCF nodes 106a-d respond, inferring the load and availability status of the S-CSCF nodes 106a-d based on the variation in response times, and the Address Reachability Service (ARS) from Sonus Networks, Inc. of Westford, Mass., which is suited to SIP based applications such as an IMS network.
In some embodiments, the application servers 104a-d, S-CSCF nodes 106a-d, and I-CSCF nodes 108a-d are hardware or software modules (e.g., implemented on a processor or other computing device) that are located on a single physical machine (e.g., a server). In some embodiments, the application servers 104a-d, S-CSCF nodes 106a-d, and I-CSCF nodes 108a-d comprise separate physical machines connected via a communications network (e.g., LAN, Internet).
In some embodiments, the input traffic flow 110 and the output traffic flow 115 include a series of packets, which are units of data formatted for transmission over a communications network. A packet generally includes metadata and a payload. The packet metadata includes attributes related to the packet (e.g., arrival information, destination information, origin information, encoding protocols, or structure of information in the packet). The payload includes the user data to be transmitted. In some embodiments, the input traffic flow 110 and the output traffic flow 115 comprise a single physical and/or logical connection between the IMS 102 and the communications network 120.
One or more of the packets in the traffic flows 115, 120 can include an event. In some embodiments, the event is associated with the signaling protocol of the traffic flows 115, 120. For example, the event can be an SIP REGISTER request or an SIP INVITE request. Events in the traffic flows 115, 120 can be related to each other, for example, on the basis of their sequence in the traffic flows 115, 120. In some embodiments, the event is associated with the media content (e.g., media type, encoding protocol, etc.) of the traffic flows 115, 120. For example, the event can be based on a particular codec used by the subscriber's equipment or network.
As shown in
As shown in
As shown in
As shown in
I-CSCF node 502 is also connected to node 516, but node 502 can only receive status information from node 516. The configuration 500 of I-CSCF nodes 502-516 shown in
from their monitoring activities with two downstream peer I-CSCF nodes. For example, I-CSCF node 504 is connected to nodes 506 and 508 via a unidirectional connection from 504 to 506 and 508, respectfully. Therefore, nodes 506 and 508 are considered to be downstream from node 504. It should be understood that the downstream ratio of 1:2 as shown in
Continuing with
In some embodiments, further enhancements are made to the downstream sharing technique to improve its efficiency and fault tolerance.
Sharing of Configuration and Status Information at Start-up Time
In some embodiments, when the IMS (e.g., IMS 102 in
Loop Prevention
Another enhancement present in some embodiments is loop prevention. For example, I-CSCF nodes 502-516 can include a loop prevention processing function. Generally, loop prevention solves the complexity of transmission of duplicate status information messages between I-CSCF nodes 502-516. Continuing with the example presented above, node 504 transmits S-CSCF status information learned from its monitoring activities to nodes 506 and 508. Node 506 transmits S-CSCF status information learned from node 504 and monitored by node 506 to node 508. According to this sequence of events, node 508 receives S-CSCF status information monitored by node 504 twice—once from node 504 and once from node 506. Unless node 508 recognizes the duplicate status information, that information can be propagated by node 508 twice to its downstream peer I-CSCF nodes (e.g., nodes 510 and 512). Therefore, it is desirable to stop propagation of duplicate status information messages for an increase in efficiency and reduction of traffic load.
In some embodiments, each I-CSCF node (e.g., nodes 108a-d, nodes 208a-d, nodes 308a-d, node 502) maintains a table or other similar data structure of the current status for each of the S-CSCF nodes for which the I-CSCF node has received status information. For example, the table can identify the individual S-CSCF nodes by an identification number. The status maintained in the table can also include a timestamp of the last received status update message for the individual S-CSCF nodes. To accomplish this, each I-CSCF node (e.g., node 502) can, for example, include a timestamp with each status information update message that the node 502 originates via its direct monitoring activities before transmitting the update message to the node's 502 downstream I-CSCF peers (e.g., nodes 504 and 506). A downstream I-CSCF node 504 compares the timestamp of the status update message for a particular S-CSCF node received from the peer I-CSCF node 502 with the timestamp stored in the table for the same S-CSCF node. If the downstream I-CSCF node 504 determines that the timestamps match, the node 504 determines that a duplicate message has been received and drops the message, preventing further propagation.
Longest Path and Isolation
In some embodiments, the techniques described herein are further enhanced to resolve complexities associated with (i) the longest path that a particular status information message must travel among the I-CSCF nodes, and (ii) isolation of an I-CSCF node due to an unforeseen failure (e.g., hardware failure, network connection failure).
A) Longest Path
When the S-CSCF status information must pass through multiple I-CSCFs in order to reach all destinations, it is important to consider the longest path the message must take before each I-CSCF node receives the status information because with each additional hops the message must travel, the time required to transmit the message to all I-CSCF nodes increases. A longer transmission time can lead to a delay between the time that the status of the S-CSCF node changed (e.g., an increase in congestion at the S-CSCF node) and the time that the furthest I-CSCF node from the I-CSCF node that originated the status message receives the message. A significant delay can lead to faulty decision making by the furthest I-CSCF node. For example, the furthest I-CSCF node can continue to allocate sessions to an S-CSCF node that had reported an overload condition because the furthest I-CSCF node is not aware of the overload until the furthest I-CSCF node receives the status update.
As shown in
B) Isolation
The failure of connections between I-CSCF nodes can result in isolation of an I-CSCF node from its peers due to the unidirectional configuration of the connections. Using
C) Enhancements to Resolve the Longest Path and Isolation Complexities
In some embodiments, the longest path and isolation complexities are resolved by modifying the directionality of the connections between the I-CSCF nodes.
As shown in
The bidirectional I-CSCF node configuration 600 shown in
In addition, the bidirectional I-CSCF node configuration 600 eliminates the complexity of I-CSCF nodes becoming isolated due to connection or equipment failure. Because each I-CSCF node 602-612 is connected to a plurality of other nodes in a bidirectional configuration, each node 602-612 receives all status updates from the other nodes—even if the receiving node only has one connection available.
As described above, each I-CSCF node (e.g., node 602) in the configuration 600 transmits status updates to all of the I-CSCF nodes to which the node 602 is connected, resulting in the creation and transmission of an increased number of duplicate status messages. The increased number of duplicates results in additional processing and communication load on the network.
In some embodiments, the techniques and configuration 600 of
In some embodiments, the I-CSCF nodes 602-612 can determine whether their peer nodes are upstream or downstream using a variety of methods. For example, the I-CSCF nodes 602-612 can be preconfigured by storing a network structure at each of the nodes 602-612. At start-up time, the nodes 602-612 initialize the connections to each other with an understanding of which peer nodes are upstream and downstream. In another example, an I-CSCF node can broadcast the network structure to each of the other nodes 602-612 at start-up time.
In yet another example, each of the nodes 602-612 is configured with the IP addresses for a plurality of downstream nodes (e.g., node 604 is configured with the IP addresses of nodes 606 and 608). At start-up time, the nodes 602-612 each establish connections to their respective configured downstream nodes. In addition, the nodes 602-612 receive connection requests from a plurality of additional nodes considered to be ‘upstream’ from the receiving node (e.g., node 604 receives connection requests from nodes 602 and 612). The effect of a node receiving connection requests from upstream nodes is that the receiving node has learned of the existence of the upstream nodes and associated connections, and can leverage the upstream connections in execution of the techniques described herein.
For example, if node 604 receives S-CSCF status information from upstream nodes 602 and 612, node 604 passes the status information on to its downstream nodes 606 and 608. Conversely, if node 604 receives S-CSCF status information from downstream nodes 606 and 608, node 604 passes the status information on to its upstream nodes 602 and 612. There can be exceptions to this directionally-aware technique, including the following:
The directionally-aware technique described above provides an advantage of improving the efficiency of status message transmission because as the status messages are originated and transmitted in one direction by the originating I-CSCF node, the messages continue to travel in that direction without generating duplicates sent back to upstream I-CSCF nodes. The directionally-aware technique, however, reintroduces the isolation complexity as an I-CSCF node can be connected to other I-CSCF nodes in only one direction. Depending on which I-CSCF node originates the status update message, an I-CSCF node with reduced connectivity to its peers may not be connected in the correct direction that the message is communicated in from the originating I-CSCF node and may not receive the message.
In some embodiments, the bidirectional node configuration 600 of
As shown in
When I-CSCF node 712 receives the notification message from node 710, node 712 converts the unidirectional connection between nodes 710 and 712 into a bidirectional connection 730a. The bidirectional connection 730a is shown as dotted lines in
An advantage of the adaptive directionality technique is efficiency in the number of status messages transmitted between the I-CSCF nodes 702-712. Only one connection 730a to node 712 is switched from unidirectional to bidirectional, leaving connections between node 712 and other I-CSCF nodes (e.g., nodes 702, 708) as unidirectional and resulting in fewer status message transmissions than if all of the connections between node 712 and other I-CSCF nodes in the network switched to bidirectional. Another advantage of the adaptive directionality technique is the elimination of the complexity of I-CSCF nodes becoming isolated due to connection or equipment failure. Because any I-CSCF node (e.g., node 710) that loses connectivity to I-CSCF nodes in a single direction (e.g., upstream or downstream) retain a viable connection to at least one other I-CSCF node, each node 702-712 receives all status updates from the other nodes—even if the receiving node only has one connection available.
The above-described techniques can be implemented in digital and/or analog electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The implementation can be as a computer program product, i.e., a computer program tangibly embodied in a machine-readable storage device, for execution by, or to control the operation of, a data processing apparatus, e.g., a programmable processor, a computer, and/or multiple computers. A computer program can be written in any form of computer or programming language, including source code, compiled code, interpreted code and/or machine code, and the computer program can be deployed in any form, including as a stand-alone program or as a subroutine, element, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one or more sites.
Method steps can be performed by one or more processors executing a computer program to perform functions of the invention by operating on input data and/or generating output data. Method steps can also be performed by, and an apparatus can be implemented as, special purpose logic circuitry, e.g., a FPGA (field programmable gate array), a FPAA (field-programmable analog array), a CPLD (complex programmable logic device), a PSoC (Programmable System-on-Chip), ASIP (application-specific instruction-set processor), or an ASIC (application-specific integrated circuit), or the like. Subroutines can refer to portions of the stored computer program and/or the processor, and/or the special circuitry that implement one or more functions.
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital or analog computer. Generally, a processor receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and/or data. Memory devices, such as a cache, can be used to temporarily store data. Memory devices can also be used for long-term data storage. Generally, a computer also includes, or is operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. A computer can also be operatively coupled to a communications network in order to receive instructions and/or data from the network and/or to transfer instructions and/or data to the network. Computer-readable storage mediums suitable for embodying computer program instructions and data include all forms of volatile and non-volatile memory, including by way of example semiconductor memory devices, e.g., DRAM, SRAM, EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and optical disks, e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memory can be supplemented by and/or incorporated in special purpose logic circuitry.
To provide for interaction with a user, the above described techniques can be implemented on a computer in communication with a display device, e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse, a trackball, a touchpad, or a motion sensor, by which the user can provide input to the computer (e.g., interact with a user interface element). Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, and/or tactile input.
The above described techniques can be implemented in a distributed computing system that includes a back-end component. The back-end component can, for example, be a data server, a middleware component, and/or an application server. The above described techniques can be implemented in a distributed computing system that includes a front-end component. The front-end component can, for example, be a client computer having a graphical user interface, a Web browser through which a user can interact with an example implementation, and/or other graphical user interfaces for a transmitting device. The above described techniques can be implemented in a distributed computing system that includes any combination of such back-end, middleware, or front-end components.
The components of the computing system can be interconnected by transmission medium, which can include any form or medium of digital or analog data communication (e.g., a communication network). Transmission medium can include one or more packet-based networks and/or one or more circuit-based networks in any configuration. Packet-based networks can include, for example, the Internet, a carrier internet protocol (IP) network (e.g., local area network (LAN), wide area network (WAN), campus area network (CAN), metropolitan area network (MAN), home area network (HAN)), a private IP network, an IP private branch exchange (IPBX), a wireless network (e.g., radio access network (RAN), Bluetooth, Wi-Fi, WiMAX, general packet radio service (GPRS) network, HiperLAN), and/or other packet-based networks. Circuit-based networks can include, for example, the public switched telephone network (PSTN), a legacy private branch exchange (PBX), a wireless network (e.g., RAN, code-division multiple access (CDMA) network, time division multiple access (TDMA) network, global system for mobile communications (GSM) network), and/or other circuit-based networks.
Information transfer over transmission medium can be based on one or more communication protocols. Communication protocols can include, for example, Ethernet protocol, Internet Protocol (IP), Voice over IP (VOIP), a Peer-to-Peer (P2P) protocol, Hypertext Transfer Protocol (HTTP), Session Initiation Protocol (SIP), H.323, Media Gateway Control Protocol (MGCP), Signaling System #7 (SS7), a Global System for Mobile Communications (GSM) protocol, a Push-to-Talk (PTT) protocol, a PTT over Cellular (POC) protocol, and/or other communication protocols.
Devices of the computing system can include, for example, a computer, a computer with a browser device, a telephone, an IP phone, a mobile device (e.g., cellular phone, personal digital assistant (PDA) device, laptop computer, electronic mail device), and/or other communication devices. The browser device includes, for example, a computer (e.g., desktop computer, laptop computer) with a World Wide Web browser (e.g., Microsoft® Internet Explorer® available from Microsoft Corporation, Mozilla® Firefox available from Mozilla Corporation). Mobile computing device include, for example, a Blackberry®. IP phones include, for example, a Cisco® Unified IP Phone 7985G available from Cisco Systems, Inc, and/or a Cisco® Unified Wireless Phone 7920 available from Cisco Systems, Inc.
Comprise, include, and/or plural forms of each are open ended and include the listed parts and can include additional parts that are not listed. And/or is open ended and includes one or more of the listed parts and combinations of the listed parts.
One skilled in the art will realize the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The foregoing embodiments are therefore to be considered in all respects illustrative rather than limiting of the invention described herein.