# Patent

## Title
Systems and methods for optimizing application data delivery over third party networks

## Abstract

Aspects of the present disclosure generally relate to systems and methods for managing and optimizing end-to-end communication sessions involving the delivery of application data (e.g., audio data, audio/video data, electronic file download data, etc.) over third party networks using an optimized communication system (OCS), as described herein. Embodiments of the disclosed system enable optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of communication sessions. In one example, the system provides a real-time or close to real-time evaluation of network conditions, e.g., network congestion, nodes best-suited for application data transfer, etc., and other factors associated with geographically diverse and unpredictable routing infrastructure characteristics of the Internet to enable optimized communication sessions.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part application and claims the benefit of and priority under 35 U.S.C. §120 to U.S. patent application Ser. No. 13/592,035, filed Aug. 22, 2012, and entitled “Systems and Methods for Optimizing Application Data Delivery Over Third Party Networks,” which in turn claims benefit under 35 U.S.C. §119(e) of U.S. Provisional Patent Application Ser. No. 61/526,119, filed Aug. 22, 2011, and entitled “Application Optimized Data Transport Over Third Party Networks”, both of which are incorporated herein by reference as if set forth herein in their entireties.
In addition, this application is related to and incorporates by reference herein the following U.S. patent applications:
U.S. patent application Ser. No. 13/840,493, filed Mar. 15, 2013, entitled “Systems and Methods for Optimizing Application Data Delivery Over Third Party Networks;”
U.S. patent application Ser. No. 13/841,774, filed Mar. 15, 2013, entitled “Systems and Methods for Optimizing Application Data Delivery Over Third Party Networks;”
U.S. patent application Ser. No. 13/841,929, filed Mar. 15, 2013, entitled “Systems and Methods for Optimizing Application Data Delivery Over Third Party Networks;”
the disclosures of which are incorporate by reference as if the same were fully set forth herein.


TECHNICAL FIELD
The present systems and methods relate generally to electronic communication systems, and more particularly to managing end-to-end (i.e., from an originating source to a terminating destination) communication sessions involving delivery of application data (e.g., audio (voice) data, audio/video data, electronic file downloads, etc.) over one or more third party networks. Embodiments of the disclosed system provide and maintain optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of communication sessions.
BACKGROUND
Over the last few years, significant changes have taken place in the telephony industry. Traditionally, phone calls were made over dedicated telephone circuits over the Public Switched Telephone Network (PSTN). In the PSTN world, a “line” is an electrical circuit that is set up and provided to a customer for a phone call. Such a circuit remains in place for the duration of a phone call. The circuits typically connect an on-premise Private Branch Exchange (PBX) system at a home or other facility to a telephone company switch. Generally, a discrete circuit is needed for each potential phone call that may occur at any given time. Thus, for example, if a commercial enterprise requires the ability to handle up to 100 calls at any given time, then that enterprise will need 100 circuits.
With the advent of Voice over Internet Protocol (VoIP) technology, many people and businesses are switching to VoIP phone systems. VoIP telephones can communicate with conventional telephones, and vice-versa. In a VoIP call, a speaker's speech is digitized at the originating end and is transmitted as small bundles of data (called “packets”) over the Internet. At the receiving end, the packets are reassembled into a signal audible to the human ear. Although the name VoIP includes the word “voice”, VoIP technologies are used for transporting not just audio or voice data, but video (multimedia) data, file download data, and other types of data. The advantages of VoIP solutions over traditional telephone systems include reduced equipment and phone services cost, useful communication-related features, and the ability to integrate a person's phone with other computing devices.
Typically, VoIP calls share a data network with other computing devices as VoIP calls are carried over the Internet. However, the Internet is a large collection of networks owned and operated by different and unrelated third parties, thus making it very difficult to control the path of individual data packets. For example, packets can be lost, delayed, or corrupted as they travel from a source to a destination hopping through intermediate computer nodes. If one or more intermediate computer networks (or nodes) are down (for example, due to disaster, natural calamities, routine maintenance, or some other unpredictable reason), the packets may need to be re-routed through some other computer networks (or nodes). To summarize, the geographically diverse and unpredictable routing infrastructure of the Internet poses significant problems for routing VoIP packets and other data transfer communications.
Furthermore, different applications (and their associated data) that leverage VoIP systems often have unique and diverse requirements/characteristics. For example, a VoIP connection (or other data transfer connection or protocol) can be used for transferring a voice call (i.e., audio data) for a call-based application, and also for downloading large files for a web download application. However, the requirements for these two different applications are frequently different. For example, because web browsing experiences are not significantly affected by connection delays, a 150 millisecond delay (for example) may pass unnoticed to a user downloading large files as long as the download speed is sufficient. That is, such a user would still receive their requested information quickly as long as the download speeds are acceptable, and a small delay at the beginning of the download would be virtually imperceptible. However, a 150-millisecond delay in transferring voice (audio data) during a call would be extremely frustrating to users, and could even result in interference with natural speech progression or an “echo”. Thus, applications utilizing VoIP systems or other data transfer systems may have unique requirements that are not provided by conventional, non-optimized VoIP systems.
Generally speaking, a VoIP system comprises three parts: at least one on-premise PBX system, a VoIP service over computer networks, and one or more VoIP-compatible devices (e.g., telephones) installed at a premise. Conventional VoIP systems typically offer a solution that takes a segmented approach by addressing a specific portion of these three above-mentioned parts. For example, some VoIP systems specialize in the PBX system but do not address the VoIP service. Other systems offer VoIP service but not the on-premise PBX system(s). Consequently, such approaches suffer from limited flexibility, features, and reliability, and are usually affected by network congestion and delays.
Therefore, there is a long-felt but unresolved need for a system or method that unifies the on-premise PBX systems, VoIP service, and VoIP-compatible devices so as to provide an end-to-end optimized delivery of application data over data networks. The system should be sophisticated to include monitoring and management functionalities, and adjust communication session parameters to assure the best possible transmission quality. For example, the system should provide (a real-time or close to real-time) evaluation of network conditions, e.g., which networks are congested, affected by weather conditions, preferable for transmission of certain data types, and other factors associated with the geographically diverse and unpredictable routing infrastructure of the Internet. The system should be able to optimally adapt for a wide variety of applications that leverage the VoIP connection.
Additionally, the system should be easily scalable, i.e., users or consumers of the system should be able to order as many lines as they expect to need during peak times. Also, in the event of seasonal or unexpected VoIP traffic increases, the system should be able to provision extra VoIP circuits “on the fly” to handle such increases. Moreover, the system should be able to provide notification (along with relevant recommendations) to a user if anomalies in the network are detected, e.g., in the event of a degrading local area or wide area network connection. The system should be reliable, flexible, and easy to use, and yet provide users with a variety of useful communication-related features (e.g., automatic attendants, multi party conferencing, unlimited voice mail, etc.) in addition to cost savings.
BRIEF SUMMARY OF THE DISCLOSURE
Briefly described, and according to one embodiment, aspects of the present disclosure generally relate to systems and methods for managing and optimizing end-to-end communication sessions involving the delivery of application data (e.g., audio (voice) data, audio/video data, electronic file download data, etc.) over third party networks using an optimized communication system (OCS), as described herein. Embodiments of the disclosed system provide and maintain optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of communication sessions. In one example, the system provides (a real-time or close to real-time) evaluation of the network conditions, e.g., which networks are congested, and other factors associated with geographically diverse and unpredictable routing infrastructure characteristics of the Internet. For the purposes of this disclosure, it will be generally understood that communication sessions utilize VoIP technologies and other data and information transfer technologies and protocols (as will occur to one of ordinary skill in the art) for transporting audio (voice) data, audio/video data, electronic file download data, etc. unless specifically stated otherwise.
Aspects of the disclosed system enables monitoring and managing all aspects of communication sessions that originate or terminate via various communication devices (e.g., phones, computers, audio/video conferencing equipment and the like). In one embodiment, the disclosed system utilizes a distributed architecture comprising a plurality of nodes, specifically, on-premise devices (e.g., installed at different geographical facilities) and off-premise servers that are operatively connected via one or more third party communication networks. Communication sessions proceed through communication session routes (or simply “routes”) that are determined to be optimal by the OCS by monitoring network conditions and utilizing various business rules, wherein the routes proceed through one or more OCS nodes, as well as non-OCS nodes.
In one aspect, by monitoring network conditions in real time and non-real time, the OCS and its associated distributed architecture provides Quality of Service (QoS) guarantees by configuration, prioritization, and shaping of network traffic so as to provide and maintain optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of certain types of communication sessions. In other aspects, system administrators, users of the OCS, and even software installed in the on-premise devices can specify business rules comprising various criteria that generally govern requirements of communication sessions. Examples of such criteria include a bandwidth requirement, a maximum tolerable packet loss rate, one or more allowable applications, number of active on-premise devices simultaneously engaged in communication sessions, a maximum tolerable delay in data transfer such as a voice transfer, a maximum tolerable jitter, a minimum video frame rate, allowable geographical location of intermediate nodes, etc. Aspects of the OCS, including (but not limited to) the distributed architecture of the OCS, monitoring of network conditions, applications of various business rules to the outcomes of monitoring network conditions, and several other concepts will be better understood from the discussions that follow herein.
These and other aspects, features, and benefits of the claimed invention(s) will become apparent from the following detailed written description of the preferred embodiments and aspects taken in conjunction with the following drawings, although variations and modifications thereto may be effected without departing from the spirit and scope of the novel concepts of the disclosure.



BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings illustrate one or more embodiments and/or aspects of the disclosure and, together with the written description, serve to explain the principles of the disclosure. Wherever possible, the same reference numbers are used throughout the drawings to refer to the same or like elements of an embodiment, and wherein:
FIG. 1A illustrates an exemplary communication session via possible communication paths between a source and a destination node.
FIG. 1B illustrates an exemplary environment in which an embodiment of the disclosed optimized communication system (“OCS”) is utilized.
FIG. 2A illustrates an exemplary system architecture of the OCS, according to one embodiment of the present disclosure.
FIG. 2B illustrates an exemplary system architecture of the OCS, according to an alternate embodiment of the present disclosure.
FIG. 3 is an exemplary schematic showing an OCS directory including various types of information pertaining to communication nodes and communication sessions.
FIG. 4 is a flowchart showing high-level, computer-implemented method steps illustrating overall OCS processes performed by various software modules of the OCS, according to one embodiment of the present system.
FIG. 5A is a flowchart showing an exemplary computer-implemented optimal path identification process, according to one embodiment of the present system.
FIG. 5B is a flowchart showing an exemplary computer-implemented optimal path identification process, according to an alternate embodiment of the present system.
FIG. 6 is a flowchart showing an exemplary computer-implemented connection establishment (i.e., communication session establishment) process, according to one embodiment of the present system.
FIG. 7 is an exemplary representation of an optimized list of communication nodes, according to one embodiment of the present system.
FIG. 8 is an exemplary database schema showing OCS data fields and variables, according to one embodiment of the present system.
FIG. 9 is an exemplary screenshot showing an OCS management interface, according to one embodiment of the present system.



DETAILED DESCRIPTION
Prior to a detailed description of the disclosure, the following definitions are provided as an aid to understanding the subject matter and terminology of aspects of the present systems and methods, are exemplary, and not necessarily limiting of the aspects of the systems and methods, which are expressed in the claims. Whether (or not) a term is capitalized is not considered definitive or limiting of the meaning of a term. As used in this document, a capitalized term shall have the same meaning as an uncapitalized term, unless the context of the usage specifically indicates that a more restrictive meaning for the capitalized term is intended. However, the capitalization or lack thereof within the remainder of this document is not intended to be necessarily limiting unless the context clearly indicates that such limitation is intended.
DEFINITIONS/GLOSSARY
Asset: electrical or electronic equipment that is connected to an IT infrastructure and that enables or is related to electronic communications (e.g., communication sessions). Examples of assets include, but are not limited to, VoIP phones, mobile phones, fax machines, conventional Plain Old Telephony System (POTS) phones, smartphones, cordless phones, conference room speaker phones, computers, Bluetooth-enabled phones, laptops, audio/video conferencing equipment, electronic gaming equipment, printers, copiers, tablet computers, or more generally, any kind of network communication device. Generally synonymous with communication asset.
Business Rule: an instruction or set of instructions or specific criteria indicating one or more actions to be taken with respect to optimizing communication sessions for a given node or nodes, and/or obtaining information that enables optimization of communication sessions involving the delivery of application data over third party networks. In one aspect, business rules define information needed to optimize certain communication sessions, ways to obtain such information, how to process such information, path and/or node ranking methodologies, and include other similar types of information. Such actions dictated by business rules may be associated with satisfaction of a set of communication session criteria or conditions. Business rules generally include at least one condition and one corresponding action, but may include a variety of conditions and/or sets of actions. Business rules are generally predetermined and/or created by system administrators or system users, or created on the fly by proprietary learning algorithms operating on communication nodes, and the like.
Call: generally synonymous with communication session (referenced below).
Communication Session: an electronic transfer of data via one or more third party networks. Generally includes transfer through a series of communication nodes. A communication session generally comprises data packets (both signaling and data packets, or simply one of the same) passed through a communication protocol and generally relating to one or more of the following non-exhaustive application types: audio only; audio and video; audio and data; or audio, video, and data over a digital medium. Generally synonymous with connection.
Communication Session Criteria: generally relates to criteria (conditions) and characteristics that are used as factors or determining criteria to optimize individual communication sessions or classes of communication sessions. Examples of communication session criteria include, but are not limited to, bandwidth requirements, a maximum tolerable packet loss rate, one or more allowable applications, number of active on-premise devices simultaneously engaged in communication sessions, a maximum tolerable delay in voice, a maximum tolerable jitter, a minimum video frame rate, allowable geographical locations of intermediate nodes, etc. Generally, the communication session criteria may impact business rules, and vice versa.
Communication Session Parameter: information pertaining to and defining a specific communication session, such as the destination node for the communication session, the communication session type, an originating asset of the communication session, communication session criteria corresponding to or preferable for the specific communication session, etc.
Communication Session Type: a predetermined class or categorization of communication sessions. Examples of communication session types include, but are not limited to, voice-based sessions, video-based sessions, multimedia-based sessions, file download sessions, email sessions, and the like.
Condition: sometimes synonymous with communication session criteria.
Facility: an abstraction that represents a collection of one or more assets housed together, typically within an organization. For example, a facility may include a hospital, university, airport, a commercial business, a business unit, a factory, a laboratory, a data center or some other similar site, and may also include one or more buildings (or floors inside a building) that house assets.
IP: abbreviation for Internet Protocol (IP). Generally refers to a communication protocol for delivering any kind of electronic digital data across communication networks.
IT Infrastructure: a set of technology components, processes, data, and systems that are normally shared by users with technical and managerial competence at an organization.
Jitter: an undesired deviation from true periodicity of an assumed periodic signal in a communication session. Jitter tends to impact the quality of a voice-related or a video-related communication session.
Network: as used generally herein, a network is a system of interconnected computing devices, nodes, and/or assets. In one example, a network includes the Internet that is a global system of interconnected computers that use the standard Internet protocol suite to serve users worldwide with an extensive range of information resources and services. It will be understood that the term Internet in reality is actually a network of networks consisting of millions of private, public, academic, business, and government networks, of local to global scope, that are linked by a broad array of electronic, wireless and optical technologies. As referred to herein, nodes generally connect to networks, and networks may comprise one or more nodes.
Network Edge Device: represents a general purpose computer, dedicated PBX server, network attached component device, or other specific computing device or server that operates OCS software, is capable of being managed and/or controlled by the OCS, and generally includes an operative connection to one or more assets. Network edge devices are generally identified with several attributes, for example, a device identifier, a device type, a network address, a location, etc. Network edge devices are usually self-contained, compact, energy-efficient nodes running proprietary OCS software from flash memory or a Solid State Drive (SSD) that provide QoS guarantees to communication traffic associated with assets. As described herein, network edge devices are generally responsible for collecting network measurements such as packet loss, round trip times, transfer speed, and jitter, and interact with applications running on assets and associated IT Infrastructures. Generally, network edge devices are operatively connected to OCS server modules to exchange optimal routing information on a periodic or continual basis.
Network Event: a network occurrence that warrants modification of an otherwise optimized communication session path for a given communication session. Examples of network events include, but are not limited to, power outages, node failures, communication tower failures or damage, natural disasters impacting nodes or groups of nodes, routine or unscheduled maintenance associated with nodes, terrorist attacks, and virtually any other event or occurrence affecting an otherwise optimized communication node or route.
Node: any type of IP-enabled device that connects to a network and enables communication sessions. As referred to herein, nodes can be OCS-nodes (also referred to herein as OCS-compliant nodes) or non-OCS nodes (non-OCS-compliant nodes). Non-limiting examples of OCS nodes include network edge devices, provisioning servers, route servers, media proxy servers, statistics servers, etc. Examples of non-OCS nodes include PSTN nodes (i.e., nodes that are maintained by third party communication providers), PBX nodes (i.e., nodes that are connected to a PBX), etc. Generally synonymous with communication node.
Non-OCS-Compliant Node: a node that is generally not capable of being controlled, managed, or manipulated by an embodiment of the OCS. Examples of non-OCS-compliant nodes include, but are not limited to, PSTN nodes, PBX nodes, and any other node maintained by an independent third party.
OCS-compliant node: a node operated and/or managed, or capable of being controlled, managed, or manipulated by an embodiment of the OCS.
Optimized Communication System (OCS): a system constructed as described in this document that manages, monitors, and optimizes the end-to-end delivery of network traffic over third party networks so as to reduce or eliminate delay, jitter, latency, packet loss, and other such factors that are typically associated with IP-based communication traffic. Generally, embodiments of the OCS employ a distributed architecture comprising network edge devices installed inside a facility and OCS server modules located exterior to a facility.
Optimized Communication System (OCS) Directory: a directory comprising information identifying characteristics relating to nodes. Non-limiting examples of such information include (but are not limited to) IP addresses of the respective nodes, a type of classification of such nodes, and a type of application data (audio/video/data) the respective node handles.
Packet: a discrete unit of data that is routed between an origin (source node) and a destination (termination or destination node) on the Internet or any other packet-switched network.
Packet Switching: generally synonymous with the methods involved in sending and receiving data over one or more network paths between a source (origin) and a destination. Packets can be sent in order yet be received in a different order—only to be arranged in the correct order in a fraction of a second. Packets are subjected to various network conditions, e.g., packets can be delayed, lost, or can also be corrupted while being transported from an origin to a destination.
Premise: generally synonymous with facility (referenced above).
Private Branch Exchange (PBX): a private telephone network used within a facility with users sharing a certain number of outside lines for making telephone calls external to the PBX.
Plain Old Telephone System (POTS): a representation of the world's collection of interconnected voice-oriented public telephone networks, usually referring to both commercial and government-owned telephone networks.
Public Switched Telephone Network (PSTN): generally synonymous with POTS (referenced above).
Real Time Protocol (RTP): an application-layer protocol for the real-time transport of data such as audio and video data. Generally, RTP is equipped to handle the characteristics of IP routing, such as missing packets and out-of-sequence aggregation of packets.
Session Initiation Protocol (SIP): an application layer control (signaling) protocol for setting up, modifying, and disconnecting communication sessions involving one or more participants, such as two-party (unicast), or multi-party sessions comprising one or more media streams. SIP generally does not handle the actual transmission of the application data or media streams. Usually, a protocol such as RTP (referenced above) actually delivers the application data or media streams. SIP is similar to the HTTP or SMTP protocols in that a SIP message comprises headers and a message body. SIP can generally be regarded as the enabler protocol for telephony and Voice over IP (VoIP) services.
VoIP: abbreviation for Voice-Over-Internet-Protocol. Generally refers to a family of Internet technologies, communication protocols, and transmission technologies for delivery of voice, multimedia data, or generally any kind of application data over Internet Protocol (IP) networks. As used herein, VoIP is not restricted purely to voice or audio communication sessions, but can relate to virtually any type of data communication sessions.
Overview
For the purpose of promoting an understanding of the principles of the present disclosure, reference will now be made to the embodiments illustrated in the drawings and specific language will be used to describe the same. It will nevertheless, be understood that no limitation of the scope of the disclosure is thereby intended; any alterations and further modifications of the described or illustrated embodiments and any further applications of the principles of the disclosure as illustrated therein are contemplated as would normally occur to one skilled in the art to which the disclosure relates. All limitations of scope should be determined in accordance with and as expressed in the claims.
Aspects of the present disclosure generally relate to systems and methods for managing and optimizing end-to-end communication sessions involving the delivery of application data (e.g., audio (voice) data, audio/video data, electronic file download data, etc.) over third party networks using an optimized communication system (OCS), as described herein. Embodiments of the disclosed system provide and maintain optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of communication sessions. In one example, the system provides (a real-time or close to real-time) evaluation of the network conditions, e.g., which networks are congested, and other factors associated with geographically diverse and unpredictable routing infrastructure characteristics of the Internet. For the purposes of this disclosure, it will be generally understood that communication sessions utilize VoIP technologies and other data and information transfer technologies and protocols (as will occur to one of ordinary skill in the art) for transporting audio (voice) data, audio/video data, electronic file download data, etc. unless specifically stated otherwise. Also, the terms “call”, “connection”, and “communication session” are generally synonymous and used broadly to relate to the delivery of any kind of application data (not just audio data).
Aspects of the disclosed system enable monitoring and managing of all aspects of communication sessions that originate or terminate via various communication devices (e.g., phones, computers, audio/video conferencing equipment and the like). In one embodiment, the disclosed system utilizes a distributed architecture comprising a plurality of nodes, specifically, on-premise devices (e.g., installed at different geographical facilities) and off-premise servers that are operatively connected via one or more third party communication networks. Communication sessions proceed through communication session routes that are determined to be optimal by the OCS by monitoring network conditions and utilizing various business rules, wherein the routes proceed through one or more OCS nodes, as well as non-OCS nodes. Examples of OCS nodes include IVR servers 120, voice mail servers 122, network edge devices 106, and other devices described in more detail herein.
In one aspect, by monitoring network conditions in real time and non-real time, the OCS and its associated distributed architecture provides Quality of Service (QoS) guarantees by configuration, prioritization, and shaping of network traffic so as to provide and maintain optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of certain types of communication sessions. In other aspects, system administrators, users of the OCS, and even software installed in the on-premise devices can specify business rules comprising various criteria that generally govern requirements of communication sessions. Examples of such criteria include a bandwidth requirement, a maximum tolerable packet loss rate, one or more allowable applications, number of active on-premise devices simultaneously engaged in communication sessions, a maximum tolerable delay in data transfer such as a voice transfer, a maximum tolerable jitter, a minimum video frame rate, allowable geographical location of intermediate nodes, etc. Aspects of the OCS, including (but not limited to) the distributed architecture of the OCS, monitoring of network conditions, applications of various business rules to the outcomes of monitoring network conditions, and several other concepts will be better understood from the discussions that follow herein.
Referring now to the figures, FIG. 1A illustrates one or more hypothetical communication paths between a source and a destination node. It will be understood that in a distributed networking infrastructure such as the Internet, communication sessions (and messages/data communicated therein) pass through such hypothetical communication paths, usually involving one or more geographically distributed nodes that act as intermediary forwarder nodes between a source and a destination.
As shown in FIG. 1A, a hypothetical map of the United States of America 100A indicates an exemplary original communication path 10 between a source node and a destination node. The original communication path 10 comprises intermediary (forwarder) nodes such as node 1, node 3, node 4, node 5, and node 7. Also shown in FIG. 1A is an exemplary optimized communication path 20 comprising node 2, node 3, node 4, node 6, node 8, and node 9. It will be understood that one or more of these nodes can be associated with a plurality of data communication networks that are maintained and/or managed by different communication companies (a/k/a third party networks), as is characteristic of the Internet.
For purposes of discussion, original communication path 10 is considered to be a non-optimized communication path, i.e., the path is determined semi-randomly by operators of the communication networks and nodes through which the communication session travels. A path as suggested by path 10 is a traditional path that would result of aspects of the OCS (as described herein) were not implemented or used. Accordingly, communication path 10 may or may not be an optimal path for an underlying communication session depending on the session criteria associated with each particular communication session. For example, certain nodes may be better suited for handling certain types of communication traffic (e.g., based on bandwidth, transfer speeds, sophistication of technology/hardware, etc.), and it would be desirable for nodes that are best-suited to handle certain types of communication sessions to process such sessions.
In contrast, hypothetical communication path 20 is intended to represent an optimized path. As shown, the communication session utilizing path 20 originates from the same source node and ends at the same ultimate destination node as communication sessions utilizing path 10. However, the nodes utilized during the communication session vary somewhat based on the criteria identified with the particular communication session. Specifically, if the particular communication session is a VoIP call (for example), then nodes better suited to handle that type of data traffic should be used for the session.
Additionally, it will be appreciated that one or more of these networks or nodes can be heavily congested with traffic, or temporarily disabled for maintenance reasons, or experiencing different environmental (e.g., natural disasters) and local factors that result in less-than-optimal communication session performance. In these instances, an otherwise optimal communication path may require on-the-fly re-routing (which can be done in real-time on a node-by-node basis, if desired). In the hypothetical example shown in FIG. 1A, it is illustrated that node 10 is struck by lightning (an unpredictable environmental factor), whereby communication sessions involving node 10 will presumably incur delays or even worse, will fail. Thus, even though node 10 may have been considered an originally-optimal node for transferring of the particular communication session at issue, it would be preferable to re-route the communication session around node 10 to avoid delays or other issues. Thus, according to aspects as disclosed in herein, an automated, self-discovering, end-to-end optimized architecture (such as the Optimized Communication System 110 as disclosed later herein) can consider real time conditions of the nodes and accordingly modify communication paths to accommodate such conditions. In this particular example, the communication session is routed through node 3 (which may have originally been considered less-than-optimal) to avoid the significantly poor performance of node 10. Examples of the types of intelligent call routing and path determination as described above will be described in greater detail in the remainder of the present disclosure.
Exemplary Embodiment
Now referring to FIG. 1B, an overview 100 of an embodiment of an optimized communication system (OCS) 110 is shown in an exemplary environment, constructed and operated in accordance with various aspects of the present disclosure. According to one embodiment, the OCS includes an Internet Protocol (IP)-based communication system architecture that provides users with an end-to-end, fully managed and monitored system for transporting audio/video traffic and other data over third party networks.
For purposes of discussions and explanations herein, it will be understood that a stream of incoming and/or outgoing communication sessions associated with network edge devices 106 may be referred to as “application data traffic”, “media traffic”, “communication traffic”, or simply “traffic”, at various places in this disclosure.
According to one aspect, the OCS 110 integrates (via network edge devices 106) with a plurality of assets 104 housed in facilities 102 for providing communication sessions (i.e., both incoming and outgoing) associated with the assets 104, e.g., communication session between assets 104 and assets 116 as shown in FIG. 1B. It will be understood that a communication session between communicating assets can be in a two-party manner, or can involve other assets in a multi-party manner, e.g., in a multi-party conference call. In the example illustrated in FIG. 1B, it is assumed that the OCS 110 handles both incoming and outgoing communication sessions for the assets 104, but not for the assets 116 (as assets 116 are non-OCS enabled). As represented in FIG. 1B, it is assumed for exemplary purposes that communication sessions in connection with assets 104 are managed and operated by the OCS, e.g., where such assets are geographically distributed across multiple facilities. However, for exemplary purposes, it is assumed that communication sessions in connection with assets 1116 are neither managed nor operated by the OCS. However, in alternate embodiments, it is possible that the OCS 110 handles communication sessions for both types of asset 104 and 116, e.g., as described in detail in connection with FIGS. 4, 5, and 6. Also, it will be understood that in alternate embodiments the assets 116 are not limited by connection to a switched telephone network, e.g., PSTN 118, as shown in FIG. 1B. For example, in such embodiments, an asset 116 can be connected directly (i.e., without PSTN 118) to an IP network, such as network 108.
In FIG. 1B, two exemplary facilities 102A and 102B are shown. But it will be understood that this is for illustrative purposes only. According to aspects of this disclosure, assets are not necessarily tied to facilities, no relation necessarily exists between various facilities, and facilities can be located in different geographical locations. Communication sessions involving assets 104 located in such facilities occur via one or more network(s) 108 and are typically associated with one or more of the following, e.g., a Web-deployed service with client/service architecture, a cellular data network, a cloud-based system, etc. Moreover, as will be understood and appreciated, various networking components (not shown in FIG. 1B) like routers, switches, hubs etc., are typically involved in the communication sessions. Although not shown in FIG. 1B, it will also be further understood that communication sessions may include one or more secure networks, and/or gateways/firewalls that provide information security from unwarranted intrusions and cyber attacks.
As shown, for example in FIG. 1B, an asset 104 may comprise a VoIP phone, a mobile phone, a fax machine, a conventional Plain Old Telephony System (POTS) phone, a smartphone, a cordless phone, a conference room speaker phone, a computer, a Bluetooth-enabled phone, a laptop, audio/video conferencing equipment, electronic gaming equipment, a printer, or more generally, any kind of network communication device. Further, in many facilities, analog overhead paging systems are utilized. Such legacy systems (including existing T1 and/or POTS trunks) can be integrated with the OCS 110 via adapters (not shown in the drawings). As will be understood, there is no limitation imposed on the number of assets, asset types, brands, vendors and manufacturers, etc. that may be used in connection with embodiments of the present disclosure.
According to one embodiment, and as shown in FIG. 1B, the OCS 110 comprises one or more network edge devices 106 (which may comprise “nodes,” as also described herein) installed in relation (e.g., physically on-premise) to a facility and one or more remotely located OCS server modules 112 (e.g., a collection of computer servers or nodes that provide a suite of hosted services to create a complete, feature-rich communication system as will be discussed further in this disclosure) and one or more OCS databases 117 for storing data associated with providing communication sessions. In another embodiment, network edge devices 106 are operatively connected to the OCS server modules 112 via one or more third party network(s) 108, such as the Internet. As referred to herein, network edge devices and OCS server modules are generally referred to herein as “nodes”. Thus, assets 104 are managed and controlled by the OCS via network edge devices 106 and OCS server modules. In contrast and for purposes of illustration, asset 116 is intended to represent an asset that is not managed and controlled by the OCS.
According to one aspect, network edge devices 106 are generally used to gather information about the assets 106, servers 120, 122, and conditions of the networks 108 in a periodic manner to assess characteristics of potential communication paths and network conditions. It will be appreciated by one skilled in the art that because of the complex interconnections of a large number of networks with varying network characteristics and the way information is routed therein (e.g., according to a guarantee-less paradigm of the Internet protocol), quality of communication sessions occurring via the networks 108 is generally unpredictable and unreliable. For example, some nodes may be down or damaged, some nodes may have faster computational capabilities over other nodes, some nodes encounter more network congestion than other nodes, etc. Embodiments of the presently-disclosed OCS, among other things, are used to monitor the quality of networks 108 to provide reliable and optimized communication sessions between assets, as will be better understood from the discussions that follow herein. Specifically, and in one embodiment, the OCS monitors and collects real-time and historical network characteristics, applies business rules related to the network characteristics, evaluates various communication session routes/paths, and if necessary modifies communication routes to account for application of business rules and real-time network characteristics.
In a conventional system, an outgoing communication session will travel from asset 104 via one or more networks 108, through the IP-PSTN gateways 114 where IP traffic is converted into telephony traffic, and is finally delivered to asset 116 or another asset 104. The reverse happens for an incoming communication session.
On the other hand, in an OCS environment, a network edge device 106 routes communication traffic (both incoming and outgoing) in an optimized and efficient manner based on a variety of conditions and characteristics relating to the particular communication session. For example, if an incoming session requests a call attendant, then such a session may be routed to an IVR server 120. In another example, if the incoming session requests a voice mail, then such a session is routed to a voice mail server 122. However, if the incoming session requests an incoming voice data transfer to be initiated, then in one embodiment, the network edge device 106 determines one or more optimal communication session nodes through which the voice data transfer will be routed. Such a determination depends on various factors—geographical proximity of the voice server to the network edge device, computing capabilities of the communication session node through which the voice call will be set up, and various such factors that will occur to one skilled in the art (and described herein).
According to one aspect, network edge devices 106 are usually self-contained, compact, energy-efficient nodes operating proprietary OCS software from flash memory or Solid State Drives. These devices may be general-purpose or specialty computers, dedicated PBX servers, or other computing devices that perform (among other things) the functionalities of the OCS, as described herein. According to another aspect and as shown in FIG. 1B, an on-premise network edge device 106 sits between the network 108 (e.g., the Internet) and an IT infrastructure 107, and manages (e.g., as described in FIGS. 4, 5, and 6) the communication traffic (i.e., both incoming and outgoing) between the local IT infrastructure 107 of the facility and the network 108. This methodology enables the on-premise network edge device to provide Quality of Service (QoS) information (e.g., for purposes of traffic shaping, configuration, prioritization, and monitoring functionalities, as will be discussed later herein) associated with assets 104. This optimization is often dictated by a plurality of business rules defined by OCS users, administrators, or pre-stored within the OCS. For example, such business rules might dictate that time-sensitive voice traffic is given greater priority over data traffic. This may result in more reliable media traffic, including (but not necessarily limited to) clearer, intelligible voice calls with negligible (less than 150 milliseconds) or no delay, or better quality rendering of audio/video data with no distortion, etc.
According to an embodiment, network edge devices (or more generally nodes) receive information relating to a plurality of network nodes via an OCS directory (e.g., as shown in FIG. 3), and also receive business rules that dictate optimization criteria. In one embodiment, information in the OCS directory is collected by aspects of the OCS server module 112, and provided to network edge devices 106 or other nodes wherein such information is utilized for determining optimal communication session routes in combination with business rules, as will be better understood from the discussions in connection with FIGS. 4, 5, and 6. Generally, business rules are policies/criteria that govern various aspects of communication sessions. Examples of such criteria include a bandwidth requirement, a maximum tolerable packet loss rate, one or more allowable applications, number of active on-premise devices simultaneously engaged in communication sessions, a maximum tolerable delay in voice data transfers, a maximum tolerable jitter, a minimum video frame rate, allowable geographical locations of intermediate nodes, etc. Business rules are usually defined by OCS users or system administrators, and are typically stored in the nodes.
It will be further understood that the terms “networks” or “networks 108” as used herein generally include any kind of computer-enabled (e.g., IP-enabled) digital network for transporting traffic associated with communication sessions. Usually, such networks are offered as commoditized services and include a plurality of one or more third party sub-networks that are usually owned by third party network providers or third party carriers). Such sub-networks can be hard-wired or wireless (cellular, optical fiber, Wi-Fi, WiMax, proprietary networks, etc.), as will occur to one skilled in the art. Examples of third party network providers include entities such as LEVEL (3) COMMUNICATIONSTM, COX COMMUNICATIONSTM, COMCASTTM, VERIZONTM, AT&TTM, etc. It will be understood by one skilled in the art that networks 108 can further include PSTN nodes such as IP-PSTN gateways 114 at the boundary of IP networks, and PSTN 118 for conversions between traditional switched telephony (PSTN) traffic and IP traffic.
In one embodiment, outgoing communication traffic (generated via the assets 104) is passed from network edge devices 106 to the networks 108 (i.e., specifically, the carriers or third party providers whose network connections are deemed to be optimum by the OCS 110 based on a variety of criteria such as high bandwidth, reduced delay, reduced latency, etc.). Incoming traffic to a facility 102 is directed to network edge devices 106 for eventual delivery to specific assets 104. Alternately, incoming traffic may be re-directed to an automated attendant, call queues, voicemail, an off-premise phone (e.g., a user's mobile phone or home phone). An exemplary OCS process showing steps involved in handling individual incoming and outgoing communication sessions is described in connection with FIG. 6.
According to yet another aspect, the assets 104 are connected to the network edge devices 106 via Ethernet cables (or the like) in the IT infrastructure 107. In one embodiment, the network edge devices 106 usually include a managed Ethernet switch to provide electrical power to run the assets 104 using Power over Ethernet (PoE). This allows assets 104 to receive electrical power from the same Ethernet cable that connects the asset to the IT infrastructure 107. Consequently, there is no need for an AC power outlet and telephone power transformer that are conventionally required for powering assets (like telephones) at a facility. In one aspect, VLAN technology is used to keep voice and data separated on two different “Virtual LANs” that share the same physical LAN cable.
As will be described in greater detail herein, it will be understood that OCS embodiments provide the functionality of determining and enabling optimal communication session routes for incoming and outgoing communication sessions associated with various applications (e.g., voice-based applications, video-based applications, multimedia-based applications, file download applications, email applications, etc.). Such communication session routes/paths may comprise a plurality of intermediate and/or forwarder nodes via networks 108, as will occur to one skilled in the art. Once an optimal communication session route is established (with or without intermediate nodes), data associated with the respective application is routed along this optimal communication session route from the source to the destination (see, e.g., FIG. 1A). It will be understood and appreciated that the intermediate nodes can be OCS-compliant nodes, or nodes that are maintained/operated by third party communication providers, e.g., PSTN nodes.
The discussions above in association with FIG. 1B merely provide an overview of an embodiment of the present system for an Internet Protocol (IP)-based communication system architecture that provides users with an end-to-end, fully managed and monitored system for transporting application data over third party networks, and is not intended to limit in any way the scope of the present disclosure. According to an alternate aspect (not shown herein), an on-premise network edge device 106 can connect to multiple networks 108 for added reliability and failover protection, e.g., an on-premise network edge device 106 can connect to a pre-existing POTS trunk. In another embodiment, intercom calls between assets 104 at the same or different facilities are routed over networks 108 without involving any OCS resources. In yet another embodiment (not shown herein), network edge devices are servers in a datacenter with multiple available routes to route communication sessions, e.g., using multiple available networks 108. In yet another embodiment, network edge devices are not required to be physically installed at facilities or in relative proximity to assets; instead, such network edge devices can be virtually managed/operated within an intelligent asset itself, or via existing virtual servers relating to the facility, etc. Various architectural details of an embodiment of the disclosed OCS will be described next in greater detail.
FIG. 2A and FIG. 2B illustrate exemplary system architectures 200A and 200B respectively of embodiments of the OCS 110 involving various modules and system components. The functions and operations of these exemplary modules and system components are described in greater detail below. As shown in FIG. 2A, the OCS 110, in one aspect, includes a distributed architecture comprising a plurality of nodes, specifically, installed in relation (e.g., physically on-premise) to a facility and off-premise (e.g., remotely located from the facility) servers that are operatively connected via one or more third party communication networks. Generally, communication sessions proceed through communication session routes (or simply routes or paths) involving OCS nodes as well as non-OCS nodes, wherein the OCS determines which routes are optimal by monitoring network conditions, examining historical information, and implementing business rules. Examples of OCS nodes include IVR servers 120, voice mail servers 122, network edge devices 106, route servers 20, media proxy servers 222, and others. Examples of non-OCS nodes include PSTN nodes such as PSTN gateways 114, and PSTN 118. (An alternate embodiment of OCS architecture is shown in FIG. 2B wherein the networks 108 do not include PSTN nodes, such as IP-PSTN gateways 114 or PSTN 118.)
In the disclosed embodiment in FIG. 2A, the OCS 110 integrates (via network edge devices 106) with a plurality of assets 104 housed in facilities 102A and 102B for transporting communication traffic associated with the assets 104, e.g., between assets 104 and assets 116. In the illustrated example, it is assumed that the OCS 110 handles both incoming and outgoing communication traffic for the assets.
According to one embodiment (and as shown in FIG. 1B), the OCS 110 includes one or more OCS server modules 112 and one or more OCS databases 117. In one example, an OCS server module 112 comprises a plurality of constituent servers that provide various communication-related services such as (but are not limited to) voice mail, multi-party conferencing, automated attendant, ring groups, and other such services. Network edge devices 106 are operatively connected to the OCS server modules 112 via one or more third party network(s) 108, such as the Internet. The OCS database 117, for example, stores information needed by the OCS, such as an OCS directory (shown exemplarily in connection with FIG. 3) comprising information identifying nodes that are known and/or capable of being controlled or managed by the OCS.
Additionally, according to one aspect, information relating to assets 104 and conditions of the networks 108 is gathered by OCS nodes (e.g., one or more constituent servers in the OCS server module 112), and passed on to the statistics server 218 for analysis. After such analysis is complete, such information is provisioned to the network edge devices 106. The constituent servers in the OCS server module 112 typically gather information relating to assets 104 and conditions of the networks 108 in a periodic manner, e.g., every few minutes, seconds, hours, or some other pre-determined time-interval.
According to one embodiment, an OCS server module 112 comprises a collection of constituent servers, e.g., a provisioning server 216, a statistics server 218, a route server 220, and a media proxy server 222. Such constituent servers execute functionalities associated with the OCS server module 112. Examples of such functionalities include implementation of an optimal path identification module 224 (explained in connection with FIG. 5A and FIG. 5B), and a new connection establishment module 226 (explained in connection with FIG. 6).
In one embodiment, the provisioning server 216 maintains a list of business applications (e.g., voice communications, video communications, multimedia communications, Internet browsing sessions, etc.), their specific requirements, and a list of potential next-hop nodes, e.g., as described in FIG. 3. The provisioning server 216 is also used for general administrative and management purposes. The statistics server 218 is generally responsible for the collection and storage of information associated with network conditions, such as packet loss rate, round trip times, transfer speeds, etc. The statistics server 218 is also usually responsible for assimilating reports involving various statistics and analytics. Route servers 220 function to facilitate communications between nodes, and in one embodiment, function similarly to generic SIP proxy servers. For example, network edge devices 106 can communicate with route servers 220, which in turn can communicate with other nodes (such as conference servers, IVR servers, etc.). In one embodiment, route servers 220 may be involved in modifying parameters of communication sessions, e.g., as explained in FIG. 6. Media Proxy Servers 222 generally serve as intermediary connections between two communicating entities, and perform functionalities, for example, as described in FIG. 5B.
In one aspect, multiple (redundant) OCS server modules 112 (or, generally OCS nodes) are deployed at different geographical locations, typically co-located with the gateways 114 of one or more third party network providers. For example, in one aspect, a plurality of route servers and media proxy servers are deployed throughout various networks 108. Such geographical proximities of the OCS server module 112 (and its components) and the gateways 114 belonging to one or more third party carriers provide better audio/video quality by virtually eliminating latency and enabling the most efficient handling of such traffic. According to one aspect, the OCS server module 112 (typically, remotely located from facilities 102) also provides centralized management of communication services, and yet a distributed approach in association with the network edge devices 106 at the facilities 102. The distributed approach reduces the amount of traffic load on the IT infrastructure 107 at the facilities 102. Further, in one embodiment, features such as interactive voice response, music on hold, voicemail and other such features are stored at the OCS server module(s) 112.
In one embodiment, the OCS server module 112 is in communication with the network edge devices 106, and in the event that an OCS system failure renders the OCS server modules 112 non-operational, the network edge devices 106 at the facilities 102 have the capability to automatically switchover and utilize other third party carriers (or third party providers) and possibly the on-premise analog telephone connection (at the facility) to maintain the ability to send and receive calls. Generally, third party providers include PSTN nodes such as IP-PSTN gateways 114 at the boundary of IP networks, and PSTN 118 for conversions between traditional switched telephony (PSTN) traffic and IP traffic.
In another scenario, if anything (such as a lengthy power failure or a natural disaster) were to ever happen at the facility that makes the networks 108 connected to the network-edge devices 106 non-operational, the OCS server modules 106 will mimic the pre-existing IT infrastructure 107 so as to reroute calls to a backup phone line or even to users' cell phones when their extension at the facility is dialed.
Further, in the exemplary embodiment shown in FIG. 2A, the OCS server module 112 also includes an exemplary optimal path identification module 224 and a new connection establishment module 226. According to one aspect, the optimal path identification module 224 (explained in greater detail in connection with FIG. 5A and FIG. 5B) is implemented at an OCS node (e.g., network edge device 106) and generally relates to generating a determination of optimized communication paths for communication sessions. According to another aspect, the new connection establishment module 226 is implemented in an OCS node for establishing new outgoing and receiving new incoming communication sessions.
It will be understood and appreciated that the specific modules and databases in FIG. 2 are shown for illustrative purposes only, and embodiments of the present system are not limited to the specific architecture shown. In one alternate example, functionalities of the provisioning server 216, statistics server 218, route server 220, and media proxy server 222 can be combined into a single or even multiple server module(s), possibly with other types of functionalities as will occur to one of ordinary skill in the art. Even further, various other types of information can be stored in the OCS databases 118, and are not limited to the ones described herein. In many scenarios, one or more servers can share the same data, as will occur to one skilled in the art.
Now referring to FIG. 2B, an alternate embodiment of OCS architecture 200B is shown, wherein the networks 108 do not include PSTN nodes, such as IP-PSTN gateways 114 or PSTN 118. The alternate embodiment comprises only OCS-compliant nodes that generally provide any communication-related functionalities, even in the absence of the PSTN nodes. Also, it will be understood that no restrictions are imposed on the number of OCS server modules, including number of IVR servers 120, voice mail servers 122, and other types of nodes utilized within embodiments of the OCS 110. The description and functionalities of various other elements shown in FIG. 2B are similar to that mentioned in FIG. 2A, and is therefore not repeated herein for the sake of brevity.
Moving to the description of FIG. 3, an exemplary schematic of an OCS directory 310 is shown, according to one embodiment of the present disclosure. According to one aspect, the OCS directory provides a “picture” of the geography and routing infrastructure of the networks 108 operated and maintained by a plurality of third party service providers/carriers. In one embodiment, such a picture is evaluated on the basis of metrics such as link quality, round trip times, jitter, packet loss rate, bandwidth, geographical location of nodes, and other metrics.
In one example, an OCS directory (e.g., the OCS directory 310) comprises information identifying nodes that are known and/or capable of being controlled or managed by the OCS. In one embodiment, the nodes include source nodes, (e.g., network edge devices), destination nodes, and nodes that are potential next-hop relays. Examples of information that is maintained for each node includes (but is not limited to) IP addresses of the respective nodes, types of classifications of such nodes, and type(s) of application data (audio/video/data) each respective node handles. Generally, classification (or “class” or “forking class”) of nodes is a way of associating a predefined communication-related feature such as voice mail, interactive voice response (IVR), conference calling, and other such features with one or more servers, such as a voice mail server 122, an IVR server 120, a conference server (not shown herein), etc. In one embodiment, the classification is predefined by OCS users and/or system administrators. In other embodiments, classifications are performed based on the computing capabilities of nodes, the number of nodes of a given class that are already pre-existing in a given geographical area, and so on. In yet other embodiments, classifications can be based on having a same number of nodes in every class.
As shown in FIG. 3, an OCS directory generally comprises a list of nodes wherein each node has relevant information associated therewith such as a node ID (e.g., Node 1, Node 2, Node 3, etc.), a geographical location (e.g., Chicago, Atlanta, Dallas, etc.) associated with a node, an IP address for a respective node (e.g., 10.2.22.5), a class (IVR, voice mail, etc.), and a type of application data (e.g., audio, video, web data etc.) that a respective node can handle (or is optimized to handle). For example, a node (e.g., Node 8 in Atlanta) is associated with three (3) classes, such as conference, IVR, and voicemail. Even further, Node 8 handles audio and video application data.
According to one embodiment, and as shown in FIG. 3, the OCS directory is maintained and updated by the provisioning server 216. As will occur to one of ordinary skill, periodic can be every hour, minute, virtually continuously, etc. Information in the OCS directory is shared with network edge devices 106, or other nodes (route server, statistics server, etc.) that may require the information, wherein such information is utilized for determining optimal communication session routes in combination with business rules, as will be better understood from the discussions in connection with FIGS. 4, 5, and 6. In many scenarios the OCS directory is provided to other OCS servers and system components by the provisioning server periodically, while in other scenarios, a plurality of network edge devices 106A, 106B, and 106C, or other nodes request the OCS directory from the provisioning server (or, from the node maintaining the OCS directory). Information in the OCS directory is utilized by the network edge devices 106A, 106B, and 106C, or other nodes for determining optimal communication session routes, e.g., as explained in optimal path identification process in FIGS. 5A and 5B.
According to another embodiment, information in the OCS directory can pertain to nodes that are OCS nodes (also referred to herein as OCS-compliant nodes), or alternately, nodes can be owned and operated by third party communication providers, e.g., PSTN nodes. It will be understood that the description of the OCS directory given above is for exemplary purposes only. Various other information attributes, and even other types of communication data (e.g., file download data, email data, software update data, and others) can be stored in the OCS directory, as will occur to one skilled in the art.
Turning now to FIG. 4, an exemplary flowchart representing high-level OCS processes 400 performed by an embodiment of the OCS 110 is shown. Details of steps performed by individual software and/or hardware components are explained in FIGS. 5A, 5B, and 6. As will be understood and appreciated, the steps of the process 400 shown in FIG. 4 may operate concurrently and continuously. Accordingly, the steps shown in FIG. 4 are generally asynchronous and independent, computer-implemented, tied to particular machines (including various modules and engines of the OCS nodes), and not necessarily performed in the order shown. In one embodiment, aspects of the OCS process 400 are performed at a network edge device 106. In other embodiments, aspects of the OCS process 400 are performed by various other OCS modules and system components in conjunction with network edge devices 106.
At a high level, the processes described and shown in FIG. 4 relate to identifying an optimal path or route for particular communication sessions, and then implementing the steps to carry out those communication sessions via the determined optimal paths. The OCS process in FIG. 4 starts at sub-process 500A (or, alternately sub-process 500B), in which an OCS node performs an optimal path identification process that is described in detail in FIG. 5A (or, alternately in FIG. 5B). In one embodiment, the optimal path identification process is performed periodically (every few minutes, seconds, or according to some other predetermined time interval), irrespective of whether the OCS node is processing a request for an outgoing communication session or accepting a request for an incoming communication session. If an OCS node wishes to establish an outgoing communication session or accept a request for an incoming communication session, then the OCS process 400 initiates sub-process 600 (described in greater detail in connection with FIG. 6).
Now referring to FIG. 5, (consisting of FIG. 5A or in alternate embodiments FIG. 5B), a flowchart is shown illustrating computer-implemented steps performed in an exemplary optimal path identification process 500A (or in alternate embodiments 500B). It will be recalled that an optimal path identification process 500 is generally a sub-process arising out of the high-level OCS process 400 described earlier in FIG. 4. It will be also recalled from the earlier discussions that embodiments of the disclosed OCS manage and enable optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of communication sessions. Such functionalities (among others) are generally performed by an optimal path (or route) identification process 500.
As will be better understood from the discussions that follow, in one example, the system 110 enables evaluation of communication routes/paths from each respective facility 102 (or even each asset 104 and/or network edge device 106 within a facility). Because each facility has different requirements and preferences (e.g., physical location, bandwidth availability, network transfer speed, quality of hardware, typical communication types, etc.) and because each type of communication generally requires optimization of different communication session criteria (e.g., reduce latency, improve packet loss, maximize transfer speed, improve communication reliability, etc.), each network edge device 106 generally determines optimized communication paths (routes) from or to each specific facility and/or asset. Said another way, each network edge device 106 assesses an optimal path for each given communication session from the particular edge device's “perspective” of the Internet. Thus, aspects of the process 500 assess historical and real time (or virtually real-time) evaluations of the network conditions (e.g., which networks are congested, which nodes are responding in a more efficient manner, etc.), predetermined business rules defining communication session criteria, and other factors associated with geographically diverse and unpredictable routing infrastructure characteristics of various networks 108.
In one embodiment, the steps mentioned in connection with FIG. 5 are performed by a network-edge device 106. In other embodiments, such steps are performed by other servers or modules of the OCS 110, such as a provisioning server, a statistics server, a route server, a media proxy server, or any other OCS-compliant device. In one embodiment, the setup/establishment of the OCS includes automatically (or even manually) populating the OCS directory with information pertaining to nodes existing in available communication networks 108. In an exemplary embodiment, information pertaining to the nodes that are owned, managed, or capable of being controlled by the OCS is entered by OCS personnel or by automated means. Information pertaining to nodes that are maintained/operated by third party communication providers (e.g., PSTN nodes) can be obtained in several ways. In one aspect, if the network topology does not change with network conditions, then information pertaining to such nodes is passed on directly by the third party communication providers. Such information, for instance, can be passed on by third party communication providers to the entity that owns and operates the OCS. In another aspect, the actual end point node for the application data or media stream is allocated dynamically at the time of setup of a communication session. Such dynamic addresses are extracted by the entity that collects and records these addresses in the OCS directory 310, and consequently the OCS directory 310 is updated. In one exemplary embodiment, if new nodes are introduced during the setup of a communication session, then the OCS directory 310 is updated with the addresses and communication types (or more generally, information) of such new nodes. If however, no new nodes are introduced during the setup of a communication session, then the OCS directory is not usually updated.
Generally, process 500A relates to determination of optimized communication paths for a given node (e.g., network edge device 106). Additionally, FIG. 5B relates to further optimization of communication paths in which a network event is identified warranting modification of the otherwise optimized path for a given communication session. It will be understood that because FIG. 5B describes steps in an alternate embodiment of FIG. 5A, many of the steps in FIG. 5B are repeated in a similar manner to those shown in FIG. 5A. Also, for the sake of explanation and easy understanding, the steps in FIG. 5A are labeled with the suffix “A” and generally numbered as 502A, 504A, 506A, and so on. Similarly, the steps in FIG. 5B are labeled with the suffix “B” and generally numbered as 502B, 504B, 506B, and so on.
Starting at step 502A in FIG. 5A, a node (e.g., network edge device 106) receives information relating to the OCS directory (e.g., the OCS directory 310) and various business rules used to optimize communication sessions. In one embodiment, the information at step 502A is received at the node from some other node (e.g., the provisioning server 216). An exemplary schematic showing an OCS directory (usually comprising a list of potential nodes and information relating to such nodes that is used to optimize the communication sessions) was explained earlier in connection with FIG. 3. Also, generally speaking, business rules (or communication session criteria) relate to policies/criteria that govern various aspects of a communication session, such as a bandwidth requirement, a maximum tolerable packet loss rate, one or more allowable applications, number of active on-premise devices simultaneously engaged in communication sessions, a maximum tolerable delay in voice, a maximum tolerable jitter, a minimum video frame rate, allowable geographical locations of intermediate nodes, etc. Business rules are usually set by OCS users, defined by system administrators, created on-the-fly via proprietary system algorithms, and/or are predetermined policies stored in the node.
At step 504A, the node processes the received business rules by performing functionality dictated by (or otherwise associated with) the rules. According to one embodiment, the business rules define information needed to optimize certain communication sessions, ways to obtain such information, how to process such information, path and/or node ranking methodologies, and include other similar types of information. For example, such functionality governed by the business rules may dictate that the node analyze connectivity to one or more potential nodes listed in the OCS directory using Internet Control Messaging Protocol (ICMP) messages, historic Real Time Control Protocol (RTCP) data, and/or communication session protocol-specific messaging (e.g., SIP options). It will be understood that an example of a communication session protocol is the Session Initiation Protocol (SIP).
Generally, business rules are created by an OCS user or system administrator in relation to accomplishing various evaluations (both current and over time) of network conditions, e.g., which networks are congested, which nodes have failed, which are the best nodes for certain types of communication sessions, etc., and other factors associated with geographically diverse and unpredictable routing infrastructure characteristics of the Internet. Such evaluations, in OCS embodiments, are utilized to determine optimal communication session routes as packets proceed through one or more intermediate nodes in the Internet. For example, rules may be used to determine the bandwidth of a network connection, limit the bandwidth to certain applications if enough bandwidth is not available, determine the round-trip delay upon transmission of a set of predetermined control packets, etc. In many scenarios, rules can have mutual interdependencies. For example, such a business rule might indicate that if the packet loss rate is greater than 10%, execution of other rules is to be aborted.
Next, at step 506A, the node assimilates information based on processing business rules. In other words, a node can process multiple business rules, and each rule can involve more than one function. (An example of a business rule with multiple functions is given at the end of the description of FIG. 5B.) Further, many business rules require combination of many different information types and individual items of information to enable prioritization of communication nodes and routes. Consequently, at step 506A, the node assimilates (aggregates) the outcomes resulting from processing the business rules. (An exemplary list of prioritized communication nodes will be discussed in connection with FIG. 7.)
From the assimilated outcomes of step 506A, the node generates (at step 510A) and thereafter stores (at step 512A) a prioritized list of nodes that can be used in subsequent communication sessions. In one embodiment, the prioritized list of nodes represent potential preferred “next-hop” nodes for a variety of communication types and specific communication sessions emanating to or received at the node (network edge device). As will be understood and appreciated, the prioritized list of nodes is generated based on evaluation of the outcome (information) of the business rules, which might include information indicating current network conditions (e.g., which networks are congested), the associated delays for each node and/or route, packet loss rates, and jitter, etc., and other factors associated with geographically diverse and unpredictable routing infrastructure characteristics of networks 108.
Thus, conventionally, in a non-OCS environment, communication sessions are handed off to the network without determining whether the intermediate nodes in the network are capable of handling such sessions or not. In contrast, according to the presently-disclosed OCS methodology, communication sessions are routed to nodes that optimize the characteristics desired for each particular communication session. For example, if the next-hop node is the final destination node, the step of generating prioritized nodes (e.g., via processing various rules) can potentially take place in multiple locations in a repetitive manner, if needed. In one aspect, a prioritized list of nodes is generated at the node wherein the communication session originates. In another aspect, a prioritized list of nodes is generated at the next-hop node in an ongoing communication session. According to aspects as disclosed herein, the list of prioritized nodes is generated in the light of various other factors, e.g., real time network conditions, node outage(s), and the like. Therefore, it will be appreciated that a predetermined list of prioritized nodes can be overruled, or otherwise modified based on several factors.
In addition, it will be understood that the process described in connection with FIG. 5A (and as will be described in connection with FIG. 5B) can occur periodically and frequently. Specifically, the process by which communication paths and corresponding nodes are prioritized can operate every minute, every ten minutes, every hour, or the like. In some embodiments, for the sake of processing requirements and computational efficiency, the process 500 may only be performed once per day or week, etc. In other embodiments, the process may occur virtually continuously.
It will be even further appreciated that this methodology of generating a prioritized list of nodes (comprising potential next-hop nodes) helps eliminate communication session routes that have been impacted by communication failures (e.g., communication tower problems due to disaster, natural calamities, or routine maintenance, or some other unpredictable reason).
Now moving to FIG. 5B, an alternate exemplary optimal path identification process 500B is illustrated, according to an alternate embodiment of the present disclosure. As referenced above, the process 500B shown in FIG. 5B relates to further optimization of communication paths in which a network event is identified warranting modification of the otherwise optimized path for a given communication session. Among other aspects, the alternate embodiment shows extra steps 550, 552, and 556 associated with handling network issues for a set of additional relay nodes (e.g., media proxy servers 222) in addition to other OCS nodes. Generally, these additional relay nodes are geographically distributed in different locations and serve to avoid network events (e.g., communication tower or node problems due to natural disaster, unexpected outages, routine maintenance, or any other unpredictable and current reason affecting incoming and outgoing communication sessions). As recited previously, some steps in FIG. 5B are similar to ones with corresponding numbers explained in FIG. 5A, and have been repeated herein to accommodate the alternate embodiment. Hence, the details of such steps are not repeated in the description of FIG. 5B, for the sake of brevity.
Moving directly to step 504B, after receiving the OCS directory information and the relevant business rules, the node processes the business rules by performing functionality dictated by (or associated with) the rules. Then, from step 504B, the process enters steps 550, 552, and 556, as will be better understood from the discussions that follow herein. After step 556, the OCS process merges with step 506B, and continues to execute in a similar manner as described previously in FIG. 5A.
At step 550, the OCS determines whether or not a network event (e.g., issues relating to network connectivity or quality) is detected based on various network checks dictated by the business rules. If no issues are detected (e.g., all available or relevant communication nodes in various networks 108 are operating in a typical or expected manner), then step 506B is performed by the node, and process 500B continues in a similar manner as process 500A described previously in FIG. 5A.
If, however, a network event is detected, the OCS branches off to step 552, and assimilates information based on detection of network issues. In one example, a network event is detected if a node (i.e., a next-hop OCS-node or a next-hop non-OCS node) fails or takes too long to respond to a control packet or ICMP ping. In another example, third party carriers inform the OCS if one or more non-OCS nodes are down.
Next, the process moves to step 556, wherein the node generates a list of prioritized relay nodes (e.g., media proxy servers 222), based on information relating to the one or more identified network events. In one embodiment, the prioritized relay nodes that are deployed act as replicas (substitutes) of nodes that otherwise would have been optimal. In other embodiments, the prioritized relay nodes are those that meet some network characteristic or condition of the nodes affected by the network event. For example, if an otherwise optimized node is impacted by a network event (e.g., a communication tower is destroyed due to a violent windstorm), then the OCS may identify relay nodes (media proxy servers/nodes 222) in relative geographical proximity to the affected nodes. Or, if other relay nodes are capable of handling the same communication types, bandwidth requirements, transfer speeds, computing capabilities, etc. of the affected node, then those nodes may be substituted as relay nodes to enable the communication session to avoid the network event. It will be understood that more than one OCS node may be affected, in which case, the OCS may identify one or more relay nodes to address and avoid the network event.
After step 556, the OCS process 500B merges with step 506B, and continues in a similar manner to the corresponding process steps described in FIG. 5A. Additionally, at step 510B, the node (e.g., network edge device 106) creates a list of prioritized nodes, including the list of prioritized relay nodes (created earlier in step 556). Generally, the list of prioritized relay nodes is reconciled with the list of otherwise prioritized nodes to determine optimized communication paths for certain communication session criteria. For example, a given prioritized relay node may or may not be utilized in a subsequent communication session depending on the specifics of that session (e.g., the optimized path for the communication session may not suggest transfer through an impacted network node or area). Generally, the list of prioritized nodes (including the list of prioritized relay nodes) is stored (at step 512B) in one or more OCS databases, and the process ends thereafter.
In many OCS embodiments, such a prioritized list of nodes, for example, can be used by the OCS server modules 112 (and other OCS nodes) for determining the placement of additional relay nodes in different geographical locations. In one exemplary embodiment, relay nodes are RTP proxies or SIP proxies that are distributed in different geographical locations for redundancy purposes. Before continuing further in this disclosure, for purposes of explanation and illustration, an example of a business rule and associated processing is described below.
In a hypothetical scenario, an organization may have a facility that has 5 phones (i.e., assets 104) within the facility, and the phones each have a 160 Kbps bandwidth requirement. Thus, a first business rule may be to determine whether the one or more networks 108 connected to the facility are able to provide necessary bandwidth for these phones. If the outcome of the first business rule states that enough bandwidth is not available, then a second business rule may be to determine whether the OCS 110 (via the IT Infrastructure 107) needs to limit the bandwidth being consumed by other services on the identified bandwidth connection. An additional business rule may be to determine which nodes (both OCS-compliant and non-OCS-compliant) are geographically closest to the given facility (e.g., the closest conference call servers, voice mail servers, interactive voice response servers, etc.). Accordingly, a fourth business rule may be to send 50 control packets to each of the closest nodes to receive return packets indicating various types of information. Based on the outcomes associated with the 50 control packets, a fifth business rule could be to analyze various network attributes (e.g., determine the variation) in the delivery of the 50 control packets. This information can all be used (along with a multitude of other rules and the results of the same) to prioritize and optimize the nodes for transmitting communication sessions.
Generally, business rules are associated with characteristics of communication sessions, or gathering information relating to communication sessions. Also, in several OCS embodiments, the business rules can be weighted so that certain factors can be emphasized more than others. For example, for a facility with high call volume or large amounts of data transfer, business rules associated with bandwidth connection may be given the highest weight and priority over other rules. In another example, a business rule can indicate if packet loss is greater than 10%, abort processing other business rules. It will be understood that the discussions in connection with FIG. 5A and FIG. 5B are for purposes of illustration only. It will occur to one skilled in the art that OCS embodiments can have various other business rules and associated processing steps. Further, in many scenarios, the selection between FIG. 5A and FIG. 5B is dependent on business rules pre-specified by OCS users and system administrators, or even based on automated decisions taken by the OCS (i.e., OCS nodes).
After nodes (and, consequently, paths) have been optimized by a given node (e.g., a given network edge device 106), the node may receive an indication that a system user wishes to initiate a communication session. As will be understood and appreciated (and as explained above), the steps in processes 500A and 500B are operating on a continuous and periodic basis, and thus the resulting prioritized lists of nodes are continually changing based upon updates to network conditions, business rules, and the like. Thus, as will be understood and appreciated by one of ordinary skill in the art, the steps of processes 500 and 600 (described in greater detail below) operate asynchronously and on an ongoing basis.
Referring to FIG. 6, a connection establishment process 600 (also referred to herein as a “communication establishment process”) is shown, as performed by an OCS-node for establishing outgoing and receiving incoming communication sessions, according to one embodiment of the present system. It will be recalled that a connection establishment process 600 is generally a sub-process arising out of the high-level OCS node process 400 described earlier in connection with FIG. 4. As will be understood, in various embodiments a node can be a network edge device 106, a provisioning server 216, a statistics server 218, a route server 220, a media proxy server 222, or any other device capable of performing the functionalities of the OCS. Although nodes can generally comprise any generic IP-enabled device, it will be understood that the OCS processes (e.g., as described in FIGS. 4, 5, 6, and other drawings herein) will generally be executed at those nodes that are OCS-compliant.
Starting at step 602, a node receives parameters indicating the request to start a communication session. Examples of such parameters include (but are not limited to) a source address field (usually 64 bits long), a destination address field (usually 64 bits long), an indication corresponding to an incoming or an outgoing communication session, a type of communication, and optional fields that are implementation-specific. Typically, a node receives such parameters by parsing the information in one or more received SIP packets, such SIP packets either originating at the node (when the node is the originator of the communication, i.e., a source node), or in other scenarios, received from another node that acts as an upstream node. In those scenarios, the present node acts a relay or forwarder (or the ultimate destination node).
Thus, at step 604, the node determines, based on the communication session parameters, whether or not the request for a communication session is for an outgoing session or an incoming session. Generally, an outgoing communication session is one in which the present node (i.e., the node performing the steps illustrated in FIG. 6) is the source node, or some other downstream or routing node that is not the ultimate destination of the communication session. In other embodiments, if the present node is not the source node, but is making a decision to potentially re-route or modify a communication session, then the present node may also be handling an outgoing communication session. Alternatively, an incoming communication session (i.e., not an outgoing session) is one in which the present node is the ultimate destination node for the communication, or if the present node is not the ultimate destination, is receiving the communication from an upstream node that is not OCS-compliant. Other examples of outgoing and incoming communication sessions will occur to one of ordinary skill in the art.
In what follows next, steps involved in processing a request for an incoming communication session will be described. If the node determines at step 604 that the request is for an incoming session, then the node enters step 606, otherwise, the node enters step 650. In many OCS embodiments, if the request for an incoming communication session is from an upstream node that is OCS-compliant, then the node simply accepts the request. Specifically, if an upstream node is OCS-compliant, then it is assumed that the node optimized its communication paths prior to transmitting the communication, and thus downstream communication modification may be unnecessary. In other embodiments, however, if downstream communication modification is desired (even for source and/or relay nodes that are OCS-compliant), then the received communication may be treated as an outgoing communication session. Assuming an embodiment, however, in which downstream communication modification is not desired, at step 606, the node determines whether the upstream node is an OCS-compliant node or not. If so, then at step 608, the node accepts the communication request, and the process terminates thereafter. Even in the embodiment in which downstream modification is not desired, some aspects of the present system may still perform a validation check to ensure that a sending node is a preferred node. In those situations, the steps of FIG. 6 relating to incoming sessions may be performed as if the upstream node is not OCS-compliant.
At step 606, if the receiving (present) node determines that the upstream node is not an OCS-compliant node, then at step 610 the node retrieves a predetermined list of nodes from the local database. It will be appreciated that according to aspects of this disclosure, the OCS provides functionality to nodes to accept/process requests from non-OCS compliant nodes that are preferred, based on predetermined criteria. Information identifying such preferred, non-OCS compliant nodes are usually provided in the predetermined list of nodes, described above. Correspondingly, the node performs a validation (at step 612) of whether or not information relating to the upstream node is present in the predetermined list, e.g., the validation process determines if the upstream node is a preferred node or not. If information relating to the upstream node is present in the predetermined list (i.e., the upstream node is one of a handful of predetermined, preferred nodes that are not OCS-compliant), then the node accepts (at step 608) the request for the incoming communication session.
If, at step 612, the node determines that information relating to upstream node is not present in the predetermined list (i.e., the upstream node is not a preferred node), the node next determines (at step 614) if all nodes in the predetermined list have been checked to be a potential upstream node. As will be understood, in one aspect, the OCS enables nodes to choose a potential upstream node (e.g., in a round-robin manner or in some other manner) from the predetermined list of potential upstream nodes. If the node determines (at step 614) that all nodes in the predetermined list of potential upstream nodes have not been checked to be a potential upstream node (i.e., there are still nodes remaining in the list through which the incoming communication session could be routed), them the node rejects (at step 616) the upstream node whose information was validated in step 612. Next, the node transmits (at step 618) a message (typically an error message comprising a SIP error code 503) to the upstream node indicating failure of the request for the incoming communication session. When the upstream node receives the error message indicating connection failure, the upstream node generally attempts the communication via another node (or path), in which case the process reverts back to step 612.
At step 614, if the OCS determines all nodes in the predetermined list have been checked to be potential upstream nodes, but the upstream node never attempted the communication via a preferred node, then the process 600 loops back to step 608, thereby accepting the request for a communication session from the upstream node in a non-optimized manner, and consequently the process for seeking a preferred node stops.
In what follows next, steps involved in processing a request for an outgoing communication session will be described, beginning with the branch of process 600 starting with step 650. Specifically, it will be discussed that a number of decision steps are implemented at the beginning of this OCS-node process. These decision steps determine various conditions in an OCS-node implemented outgoing communication process. It will be further understood from the following discussions that in one embodiment, a node (or, equivalently an OCS-node) requests, forwards, transmits, and/or establishes communication sessions to a downstream node that may or may not be OCS-compliant. At step 650, the OCS-node determines whether the OCS-node is a source node (i.e., originator of a communication session) or not. If yes, then the process moves to step 654, and further determines whether the downstream node is an OCS-compliant node or not. However, if the node is not a source node, then the process determines (at step 652) whether the upstream node is an OCS-compliant node or not. If the upstream node is not an OCS-compliant node, the process moves to step 654. If the upstream node is an OCS-compliant node and/or the downstream node is not an OCS-compliant node, then the node next determines (at step 656) whether the downstream node is a destination node or not. If the downstream node is not a destination node, the process moves to step 658 wherein the OCS-node retrieves a pre-created (as explained earlier in connection with FIG. 5A and FIG. 5B) list of prioritized nodes from a local OCS-node database. Next, at step 660 the node sets the downstream node based on information in the prioritized list, and then moves to step 664. According to one aspect, setting the downstream node to a different node entails the node assigning the downstream node as a node in the list of prioritized nodes.
However, if at step 656, the node determines that the downstream node is indeed a destination node, then at step 662, the node sets the downstream node as the destination and then moves to step 664. At step 664, the node modifies parameters of the requested communication session to the downstream node. For example, the node modifies the packet by changing the address in the header of the SIP packet received at earlier step 602 to the newly assigned downstream node. In SIP, this can be achieved by using an X header or URI parameter, for example. It will occur to one skilled in the art that the parameters of the requested communication session are usually set by the application protocol. Thus, modifications of parameters of the requested communication session enable the communication session to proceed through a communication session route that is optimized, as described above. Finally, at step 666, the node establishes an outgoing communication session with the downstream node, and the OCS process exits thereafter.
FIG. 7 illustrates an exemplary representation of a prioritized list of communication nodes 310′, according to one embodiment of the present disclosure. As mentioned previously, aspects of the present OCS 110 enable ranking or prioritization of nodes for various types and aspects of communication sessions, based on a variety of criteria and factors. In the exemplary, non-limiting list 310′ shown in FIG. 7, the OCS directory 310 (as originally shown in FIG. 3) has been updated with a new column representing a priority or ranking of the nodes originally included in the list. The priority may be relevant to each class of node, or based on geographical location of the nodes, or based on the preferred communication type that can be handled by the node, or may be an overall ranking of all nodes, or any other ranking methodology as will occur to one of ordinary skill in the art.
As shown in the example in FIG. 7, the nodes for each class of communication have been separately ranked. Thus, as shown, node 1 is the most optimized node for IVR communications, whereas node 3 is the second most optimized node for such classes of communications, and node 7 is the third most optimized node. As mentioned previously, the lists and or ranking of the nodes (similar to the representation of the nodes shown in FIG. 7 (and earlier in FIG. 3)) are generally updated frequently and/or continuously as new information is obtained within the OCS, new business rules are developed, network events occur, etc. As shown in FIG. 7, in one embodiment, the prioritized list of communication nodes 310′ is updated and maintained by network edge devices 106. However, as recited in various places in this disclosure, in alternate embodiments, OCS nodes (e.g., route servers 220, statistics servers 218, and other OCS nodes) can also maintain and update the prioritized list of communication nodes 310′.
As will be further understood and appreciated, the prioritized list shown in FIG. 7 will generally be prioritized with respect to each respective network edge device. Stated another way, because the “perspective” of the network or Internet is different depending upon each node's specific position within the network (and based on the rules associated with the node and the types of communications each node handles), the list will likely vary for each specific network edge device.
Although not shown herein, it will be understood that various data attributes associated with the above-described process can be stored in OCS-node databases, as will occur to one skilled in the art. Also, in many OCS embodiments, the downstream node is a route server (e.g., a SIP proxy server or a back-to-back user agent (B2BUA)). Although not shown explicitly, it will be understood that the steps in FIG. 6 (as well as steps in other flowcharts mentioned herein) can be repeated at a plurality of nodes, until a communication session route is established, as will occur to one skilled in the art. Once an optimal communication session route is established (with or without intermediate nodes), the application data (audio/video/data) is routed along this optimal communication session route, from the source to the destination. It will be understood and appreciated that the intermediate nodes can be OCS nodes or nodes that are maintained/operated by third party communication providers.
Now referring to FIG. 8, an exemplary OCS database schema 800 is shown illustrating exemplary data types that may be stored in an OCS database 117. In one embodiment, OCS databases 117 store various data attributes related to communication sessions (involving one or more third party communication networks) and the nodes that are used to route such sessions. In one embodiment, such sessions can be in real time or virtually real time, or alternately pre-determined beforehand. As shown in FIG. 8, the database schema comprises the following exemplary columns or data fields: node ID column 810, IP address column 820, type column 830, hostname column 840, weight column 850, timeout column 860, and region column 870.
The node column 810 identifies a unique node that can be used for OCS communication sessions, wherein such a unique node can be either OCS compliant or non-OCS compliant. The IP address column 820 specifies a unique IP address associated with a respective node. It will be recalled from the previous discussions herein that the OCS typically classifies nodes with a type of classification and a type of application data (e.g., audio/video/data). Information pertaining to classification of nodes and corresponding types are included in the type column 830 of database schema 800. A hostname column 840 specifies an electronic (network) label to a node. In several OCS embodiments, business rules can be weighted so that certain factors can be emphasized more than others. For example, at a facility with high call volume or large amounts of data transfer, business rules associated with bandwidth connection may be given the highest weight and priority over other rules. A weight column 850 can be used to specify weights associated with certain nodes.
In many scenarios, nodes may be unreachable or can be unresponsive in the event of network failures and outages. In such scenarios, the OCS 110 limits the time to ping a respective node. This value is usually specified as a predetermined value in the timeout column 860 in schema 800. Additionally, in many OCS embodiments, the region column 870 specifies a geographical location of a respective node. For illustration purposes, it is shown in FIG. 8 that a node with node ID 1 and identified with a hostname vid1.com is located in Atlanta and associated with a video application type. Further, it is also indicated that node ID 1 has an IP address of 10.68.2.22 and has a weight (e.g., for potential weighting of the use of that particular node in communication session applications) of 600 with a time out of 10 seconds.
It will be understood by one of ordinary skill in the art that the exemplary database schema 800 presented herein is for illustrative purposes only, and embodiments of the present system are not limited to data, information, and fields in the specific data tables shown. Additionally, the OCS in alternate embodiments can comprise various other data tables (and databases), as will occur to one skilled in the art.
FIG. 9 illustrates an exemplary screenshot 900 of an OCS administrator management interface, as viewed on an electronic device (e.g., computer, laptop, tablet PC, smart phone, or any other device capable of accessing the Internet). Such an interface can be used to control the activities and performance of various nodes involved in communication sessions. As shown in FIG. 9, examples of attributes associated with OCS nodes include a class attribute 910, a hostname attribute 920, an IP attribute 930, an enabled attribute 940, an application attribute 950, a type attribute 960, a weight attribute 970, an options attribute 980, and an edit communication session attribute 990. Other communication session attributes are listed in regions 990a-990h of screenshot 900.
As mentioned previously, according to aspects of the present disclosure, a class attribute 910 (also called a “classification” or “forking class”) of nodes enables association of a predefined communication-related feature such as voice mail, interactive voice response (IVR), conference calling, etc. with one or more OCS (or, even non-OCS compliant) nodes. A hostname attribute 920 specifies an electronic (network) label to a node. An IP attribute 930 indicates an IP address associated with each specific node. An enabled attribute 940 (usually associated with a binary yes/no) indicates if a node is active (e.g., reachable and responsive) and accepting communication sessions involving the OCS 110. An application attribute 950 specifies whether the type of application is real time or non-real time. A type attribute 960 specifies whether the application that a respective node handles is audio, video, or data.
In an exemplary OCS embodiment, a weight attribute 970 specifies a relative weighting factor for a particular node. As described above, certain business rules can include weights relating to communication sessions, but nodes themselves may also include global weights to influence communication sessions. For example, if it is determined that a given node is highly optimal for a certain kind of network traffic, then that node may be weighted more than another similar node. An options attribute 980 generally enables an OCS system administrator or other personnel to edit or delete parameters of nodes, as shown with an edit node parameters attribute 990. In one embodiment, exemplary sub-attributes 990a-990h enables OCS system administrators to edit and modify various parameters of nodes that will subsequently impact communication sessions. Thus, regions 990a-990h in screenshot 900 correspond to class, hostname, IP, internal IP, application type, weight, region (geographical location), and timeout sub-attributes respectively. Exemplary functionalities of most of these respective sub-attributes have been explained previously and hence are not discussed further herein. The region and timeout sub-attributes (shown in regions 990g and 990h in screenshot 900) respectively correspond to a geographical location where a node is located, and a time to ping a respective node before a timeout.
As illustrated exemplarily in the first row in FIG. 9, a class attribute 910 indicates “voicemaill”, a hostname attribute 920 indicates “acd1.example.com”, an IP attribute indicates “10.1.2.142”, an internal IP attribute indicates “10.1.2.142,” an enabled attribute 930 indicates a “yes”, an application attribute 930 indicates “real time”, a type attribute 940 indicates “voice”, and a weight attribute indicates “100”. Exemplary sub-attributes indicated in regions 990a-990h indicate “RMT (Rich Media Transfer)”, “acd1.example.com”, “10.1.2.142”, “real time video”, “100”, “1”, and “60” respectively. It will be understood that the displayed interface shown in FIG. 9 is for illustrative purposes only. In alternative embodiments, the interface can comprise other attributes, sub-attributes, buttons, menu bars, tabs, or any other digital interface features as will occur to one skilled in the art.
Aspects of the present disclosure generally relate to systems and methods for managing and optimizing end-to-end communication sessions involving the delivery of application data (e.g., audio (voice) data, audio/video data, electronic file download data, etc.) over third party networks using an optimized communication system (OCS), as described herein. Embodiments of the disclosed system provide and maintain optimal quality (e.g., reduced delay, packet loss, jitter, etc.) of communication sessions. In one example, the system provides (a real-time or close to real-time) evaluation of the network conditions, e.g., which networks are congested, and other factors associated with geographically diverse and unpredictable routing infrastructure characteristics of the Internet.
Accordingly, it will be understood that various embodiments of the present system described herein are generally implemented as a special purpose or general-purpose computer including various computer hardware as discussed in detail below. Embodiments within the scope of the present invention also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media which can be accessed by a general purpose or special purpose computer, or downloadable through communication networks. By way of example, and not limitation, such computer-readable media can comprise physical storage media such as RAM, ROM, flash memory, EEPROM, CD-ROM, DVD, or other optical disk storage, magnetic disk storage or other magnetic storage devices, any type of removable non-volatile memories such as secure digital (SD), flash memory, memory stick etc., or any other medium which can be used to carry or store computer program code in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer, or a mobile device.
When information is transferred or provided over a network or another communication connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such a connection is properly termed and considered a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device such as a mobile device processor to perform one specific function or a group of functions.
Those skilled in the art will understand the features and aspects of a suitable computing environment in which aspects of the invention may be implemented. Although not required, the inventions are described in the general context of computer-executable instructions, such as program modules or engines, as described earlier, being executed by computers in networked environments. Such program modules are often reflected and illustrated by flow charts, sequence diagrams, exemplary screen displays, and other techniques used by those skilled in the art to communicate how to make and use such computer program modules. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types, within the computer. Computer-executable instructions, associated data structures, and program modules represent examples of the program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represent examples of corresponding acts for implementing the functions described in such steps.
Those skilled in the art will also appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, networked PCs, minicomputers, mainframe computers, and the like. The invention is practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination of hardwired or wireless links) through a communication network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
An exemplary system for implementing the inventions, which is not illustrated, includes a general purpose computing device in the form of a conventional computer, including a processing unit, a system memory, and a system bus that couples various system components including the system memory to the processing unit. The computer will typically include one or more magnetic hard disk drives (also called “data stores” or “data storage” or other names) for reading from and writing to. The drives and their associated computer-readable media provide nonvolatile storage of computer-executable instructions, data structures, program modules, and other data for the computer. Although the exemplary environment described herein employs a magnetic hard disk, a removable magnetic disk, removable optical disks, other types of computer readable media for storing data can be used, including magnetic cassettes, flash memory cards, digital video disks (DVDs), Bernoulli cartridges, RAMs, ROMs, and the like.
Computer program code that implements most of the functionality described herein typically comprises one or more program modules may be stored on the hard disk or other storage medium. This program code, as is known to those skilled in the art, usually includes an operating system, one or more application programs, other program modules, and program data. A user may enter commands and information into the computer through keyboard, pointing device, a script containing computer program code written in a scripting language or other input devices (not shown), such as a microphone, etc. These and other input devices are often connected to the processing unit through known electrical, optical, or wireless connections.
The main computer that effects many aspects of the inventions will typically operate in a networked environment using logical connections to one or more remote computers or data sources, which are described further below. Remote computers may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically include many or all of the elements described above relative to the main computer system in which the inventions are embodied. The logical connections between computers include a local area network (LAN), a wide area network (WAN), and wireless LANs (WLAN) that are presented here by way of example and not limitation. Such networking environments are commonplace in office-wide or enterprise-wide computer networks, intranets and the Internet.
When used in a LAN or WLAN networking environment, the main computer system implementing aspects of the invention is connected to the local network through a network interface or adapter. When used in a WAN or WLAN networking environment, the computer may include a modem, a wireless link, or other means for establishing communication sessions over the wide area network, such as the Internet. In a networked environment, program modules depicted relative to the computer, or portions thereof, may be stored in a remote memory storage device. It will be appreciated that the network connections described or shown are exemplary and other means of establishing communication sessions over wide area networks or the Internet may be used.
In view of the foregoing detailed description of preferred embodiments of the present invention, it readily will be understood by those persons skilled in the art that the present invention is susceptible to broad utility and application. While various aspects have been described in the context of a preferred embodiment, additional aspects, features, and methodologies of the present invention will be readily discernable from the description herein, by those of ordinary skill in the art. Many embodiments and adaptations of the present invention other than those herein described, as well as many variations, modifications, and equivalent arrangements and methodologies, will be apparent from or reasonably suggested by the present invention and the foregoing description thereof, without departing from the substance or scope of the present invention. Furthermore, any sequence(s) and/or temporal order of steps of various processes described and claimed herein are those considered to be the best mode contemplated for carrying out the present invention. It should also be understood that, although steps of various processes may be shown and described as being in a preferred sequence or temporal order, the steps of any such processes are not limited to being carried out in any particular sequence or order, absent a specific indication of such to achieve a particular intended result. In most cases, the steps of such processes may be carried out in a variety of different sequences and orders, while still falling within the scope of the present inventions. In addition, some steps may be carried out simultaneously.

## Claims

1. In an optimized communication system (©CS) including operative connections through one or more networks to a plurality of communication nodes for enabling communication sessions via the one or more networks, a method for optimizing incoming communication sessions, comprising the steps of:
receiving an indication at a particular communication node of an incoming communication session, wherein the indication includes information identifying a sending node;
upon determination that the sending node is not an OCS-compliant node, retrieving a predetermined list of preferred communication nodes from a local communication node database;
parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes upon determination that the sending node is present in the predetermined list of preferred communication nodes, accepting the incoming communication session from the sending node; and
parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes, wherein the parsing takes into account a communication session type associated with each node.

2. The method of claim 1, wherein the indication includes parameters defining the incoming communication session.

3. The method of claim 1, wherein the sending node comprises a source node that originated the incoming communication session.

4. The method of claim 1, wherein the sending node comprises a relay node that did not originate the incoming communication session.

5. The method of claim 1, wherein the OCS includes an OCS server module for performing various functionalities of the OCS.

6. The method of claim 5, wherein the preferred communication nodes are managed by the OCS server module.

7. The method of claim 5, wherein the preferred communication nodes are not managed by the OCS server module.

8. The method of claim 1, wherein the preferred communication nodes are selected from the group comprising: route nodes, media proxy nodes, provisioning nodes, statistics nodes, relay nodes, communication-type-defined nodes.

9. The method of claim 1, wherein the predetermined list of preferred communication nodes is defined by one or more of the following: an ©CS administrator, a local user of the particular communication node, automatically by the particular communication node, automatically by an ©CS server module.

10. The method of claim 1, wherein the particular communication node comprises a network edge device.

11. The method of claim 1, wherein the step of parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes takes into account network characteristic information corresponding to the preferred communication nodes.

12. The method of claim 1, wherein the particular communication node is operatively connected to one or more communication assets for enabling communication sessions through the one or more networks with other communication assets.

13. The method of claim 1, wherein the one or more networks comprise the Internet.

14. An optimized communication system (OCS) including operative connections through one or more networks to a plurality of communication nodes for enabling communication sessions via the one or more networks, comprising:
a local communication node database for storing a predetermined list of preferred communication nodes; and
a particular communication node operatively coupled to the local communication node database and comprising a processor operative to:
receive an indication at the particular communication node of an incoming communication session, wherein the indication includes information identifying a sending node;
upon determination that the sending node is not an OCS-compliant node, retrieve the predetermined list of preferred communication nodes from the local communication node database;
parse the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes; and
upon determination that the sending node is present in the predetermined list of preferred communication nodes, accept the incoming communication session from the sending node;
parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes, wherein the parsing takes into account a communication session type associated with each node.

15. The system of claim 14, wherein the indication includes parameters defining the incoming communication session.

16. The system of claim 14, wherein the sending node comprises a source node that originated the incoming communication session.

17. The system of claim 14, wherein the sending node comprises a relay node that did not originate the incoming communication session.

18. The system of claim 14, wherein the preferred communication nodes are managed by a central OCS server.

19. The system of claim 14, wherein the preferred communication nodes are not managed by a central OCS server.

20. The system of claim 14, wherein the preferred communication nodes are selected from the group comprising: route nodes, media proxy nodes, provisioning nodes, statistics nodes, relay nodes, communication-type-defined nodes.

21. The system of claim 14, wherein the predetermined list of preferred communication nodes is defined by one or more of the following: an ©CS administrator, a local user of the particular communication node, automatically by the particular communication node, automatically by an ©CS server module.

22. The system of claim 14, wherein the particular communication node comprises a network edge device.

23. The system of claim 14, wherein the step of parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes takes into account a communication session type associated with each node.

24. The system of claim 14, wherein the step of parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes takes into account network characteristic information corresponding to the preferred communication nodes.

25. The system of claim 14, wherein the particular communication node is operatively connected to one or more communication assets for enabling communication sessions through the one or more networks with other communication assets.

26. The system of claim 14, wherein the one or more networks comprise the Internet.

27. In an optimized communication system (OCS) including operative connections through one or more networks to a plurality of communication nodes for enabling communication sessions via the one or more networks, a method for optimizing incoming communication sessions, comprising the steps of:
receiving an indication at a particular communication node of an incoming communication session, wherein the indication includes information identifying a sending node;
upon determination that the sending node is not an OCS-compliant node, retrieving a predetermined list of preferred communication nodes from a local communication node database;
parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes;
upon determination that the sending node is not present in the predetermined list of preferred communication nodes, determining whether the incoming communication session has been attempted through all preferred communication nodes in the predetermined list of communication nodes;
upon determination that the incoming communication session has not been attempted through all preferred communication nodes in the predetermined list of communication nodes, rejecting the incoming communication session,
whereby the incoming communication session is received at the particular communication node via a second sending node; and
parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes, wherein the parsing takes into account a communication session type associated with each node.

28. The method of claim 27, further comprising the steps of:
determining whether the second sending node is present in the predetermined list of preferred communication nodes; and
upon determination that the second sending node is present in the predetermined list of preferred communication nodes, accepting the incoming communication session from the second sending node.

29. The method of claim 27, wherein the step of rejecting the incoming communication session comprises sending an error message to the sending node.

30. The method of claim 27, wherein the indication includes parameters defining the incoming communication session.

31. The method of claim 27, wherein the sending node comprises a source node that originated the incoming communication session.

32. The method of claim 27, wherein the sending node comprises a relay node that did not originate the incoming communication session.

33. The method of claim 27, wherein the OCS includes an OCS server module for performing various functionalities of the OCS.

34. The method of claim 33, wherein the preferred communication nodes are managed by the OCS server module.

35. The method of claim 33, wherein the preferred communication nodes are not managed by the OCS server module.

36. The method of claim 27, wherein the preferred communication nodes are selected from the group comprising: route nodes, media proxy nodes, provisioning nodes, statistics nodes, relay nodes, communication-type-defined nodes.

37. The method of claim 27, wherein the predetermined list of preferred communication nodes is defined by one or more of the following: an ©CS administrator, a local user of the particular communication node, automatically by the particular communication node, automatically by an ©CS server module.

38. The method of claim 27, wherein the particular communication node comprises a network edge device.

39. The method of claim 27, wherein the step of parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes takes into account network characteristic information corresponding to the preferred communication nodes.

40. The method of claim 27, wherein the particular communication node is operatively connected to one or more communication assets for enabling communication sessions through the one or more networks with other communication assets.

41. The method of claim 27, wherein the one or more networks comprise the Internet.

42. In an optimized communication system (©CS) including operative connections through one or more networks to a plurality of communication nodes for enabling communication sessions via the one or more networks, comprising:
a local communication node database for storing a predetermined list of preferred communication nodes; and
a particular communication node operatively coupled to the local communication node database and comprising a processor operative to:
receive an indication at the particular communication node of an incoming communication session, wherein the indication includes information identifying a sending node;
upon determination that the sending node is not an OCS-compliant node, retrieve the predetermined list of preferred communication nodes from the local communication node database;
parse the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes;
upon determination that the sending node is not present in the predetermined list of preferred communication nodes, determine whether the incoming communication session has been attempted through all preferred communication nodes in the predetermined list of communication nodes; and
upon determination that the incoming communication session has not been attempted through all preferred communication nodes in the predetermined list of communication nodes, reject the incoming communication session,
whereby the incoming communication session is received at the particular communication node via a second sending node;
parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes, wherein the parsing takes into account a communication session type associated with each node.

43. The system of claim 42, wherein the processor is further operative to:
determine whether the second sending node is present in the predetermined list of preferred communication nodes; and
upon determination that the second sending node is present in the predetermined list of preferred communication nodes, accept the incoming communication session from the second sending node.

44. The system of claim 42, wherein the processor is further operative to:
determine whether the second sending node is present in the predetermined list of preferred communication nodes; and
upon determination that the second sending node is not present in the predetermined list of preferred communication nodes, check one or more additional nodes to determine of the one or more additional nodes are in the predetermined list of preferred communication nodes.

45. The system of claim 44, wherein the processor is further operative to:
upon determination that none of the one or more additional nodes are in the predetermined list of preferred communication nodes, accept the incoming communication session from any node.

46. The system of claim 42, wherein the step of rejecting the incoming communication session comprises sending an error message to the sending node.

47. The system of claim 42, wherein the indication includes parameters defining the incoming communication session.

48. The system of claim 42, wherein the sending node comprises a source node that originated the incoming communication session.

49. The system of claim 42, wherein the sending node comprises a relay node that did not originate the incoming communication session.

50. The system of claim 42, wherein the OCS includes an OCS server module for performing various functionalities of the OCS.

51. The system of claim 50, wherein the preferred communication nodes are managed by the OCS server module.

52. The system of claim 50, wherein the preferred communication nodes are not managed by the ©CS server module.

53. The system of claim 42, wherein the preferred communication nodes are selected from the group comprising: route nodes, media proxy nodes, provisioning nodes, statistics nodes, relay nodes, communication-type-defined nodes.

54. The system of claim 42, wherein the predetermined list of preferred communication nodes is defined by one or more of the following: an ©CS administrator, a local user of the particular communication node, automatically by the particular communication node, automatically by an ©CS server module.

55. The system of claim 42, wherein the particular communication node comprises a network edge device.

56. The system of claim 42, wherein the step of parsing the predetermined list of preferred communication nodes to determine whether the sending node is present in the predetermined list of preferred communication nodes takes into account network characteristic information corresponding to the preferred communication nodes.

57. The system of claim 42, wherein the particular communication node is operatively connected to one or more communication assets for enabling communication sessions through the one or more networks with other communication assets.

58. The system of claim 42, wherein the one or more networks comprise the Internet.