System and method for providing communication platform metadata

Information

  • Patent Grant
  • 12166651
  • Patent Number
    12,166,651
  • Date Filed
    Monday, November 28, 2022
    2 years ago
  • Date Issued
    Tuesday, December 10, 2024
    2 months ago
Abstract
A system and method that includes executing communication processes in an application platform, which comprises on behalf of outside entities, negotiating communications between a set of internal resources and at least one external resource using at least a first communication protocol and a second protocol; capturing internal log information during execution of the application platform; receiving a request to access log information by an outside entity; synthesizing the internal log information of the first protocol and at least a second protocol into a unified communication report; and transmitting the unified communication report.
Description
TECHNICAL FIELD

This invention relates generally to the communication platform field, and more specifically to a new and useful system and method for providing communication platform metadata in the communication platform field.


BACKGROUND

Application platforms are frequently used by other applications and services to supplement or facilitate particular interactions and functionality. The application platforms, in many cases, do not expose logs and analytics about internal platform operations and events. Such information in some cases contains sensitive information. Not only would exposing the logs be a potential security vulnerability to the application platform, but also extracting useful information from the application platform logs would be challenging. In a more specific scenario, communication platforms have numerous challenges in debugging and identifying errors due to dependence on various communication resources internal and external. A user of a communication platform may encounter an error as a result of misconfiguration of their system, of the communication platform, a communication provider, or a particular endpoint participating in a communication. Thus, there is a need in the communication platform field to create a new and useful system and method for providing sanitized platform metadata. This invention provides such a new and useful system and method.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 is a schematic representation of a system for providing sanitized platform metadata of routed communication;



FIG. 2 is a schematic representation of a system for providing sanitized platform metadata of application processing;



FIG. 3 is a schematic representation of a system for providing sanitized platform metadata of platform resources;



FIG. 4 is a schematic representation of an exemplary log report interface;



FIG. 5 is a communication flow diagram of a method of a preferred embodiment;



FIG. 6 is a communication flow diagram of a variation of a preferred embodiment;



FIG. 7 is a communication flow diagram of a method of an alternative preferred embodiment;



FIGS. 8A and 8B is an exemplary representation of a unified log report interface;



FIGS. 9A and 9B is an exemplary representation of a unified log report interface;



FIG. 10 is a communication flow diagram of a variation of transmitting a communication;



FIG. 11 is a schematic representation of synchronizing two log report interfaces;



FIG. 12 is a schematic representation of annotating a log report.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of preferred embodiments of the invention is not intended to limit the invention to these preferred embodiments, but rather to enable any person skilled in the art to make and use this invention.


1. System for Providing Communication Platform Metadata


A system for providing communication platform metadata of a preferred embodiment can include a multitenant platform system 110, an internal log storage system 120, a log sanitizer 130, and exposed log interface 140. The system functions to clean, organize, and otherwise synthesize event logs, resource metadata, and/or any suitable internal records such that they can be consumed by outside entities in a secure and useful manner. The system preferably exposes event logs across multiple operation modes and more specifically communication modes. Event information of two or more communication protocols as controlled by a communication platform can be exposed. For example, the SIP communication or IP communication protocols can be contextualized with synchronous alignment with application level communication over HTTP or other suitable protocols. The system can be used in exposing routing event logs that abstract out internal information and events of the platform. The system can also be used in processing logs of the system and presenting analysis and classification of the event logs. This can enable improved debugging, analytics, and/or operational insight into use of an application platform by an outside entity.


The system in a first implementation is used by a communication platform in sanitizing packets and communication messages with at least one outside entity as shown in FIG. 1. The system can additionally or alternatively be applied to operational trace logs of actions performed by the application platform 110 as shown in FIG. 2. In a third implementation, the system can be applied to metadata of accessible resources of the communication platform. The accessible resources can be accessible over an API, such as a REST API, or through an application programming interface (API) as shown in FIG. 3.


The multitenant platform system 110 of the preferred embodiment functions to perform some task or service on behalf of an outside entity and generate metadata relating to the performed operations. Preferably, the application platform 110 is a multitenant, distributed computing system providing an application programming interface (API). The API preferably operates over an application layer protocol such as HTTP, HTTPS, SPDY or any suitable protocol. The platform can provide a processing service, a communication service, a media service, resource service, and/or any suitable type of service. A communication service can facilitate or manage synchronous or asynchronous communication involving at least one outside endpoint. The application platform 110 preferably provides a service used by outside applications or devices.


An exemplary communication service can include bridging synchronous voice session over a SIP service. An exemplary processing service can include executing application instructions within the application platform 110. The multitenant platform 110 is substantially similar to the telephony application platform described in patent application Ser. No. 12/417,630 filed 2 Apr. 2009, entitled “System and Method for Processing Telephony Sessions”, which is hereby incorporated in its entirety by this reference. A telephony or communication application platform 110 can enable synchronous communication sessions such as voice sessions, video sessions, screen sharing sessions, or any suitable synchronous form of media communication. The communication can be carried out over PSTN channels, SIP channels, IP-based channels, WebRTC, or any suitable communication protocol. The communication application platform 110 can similarly facilitate asynchronous communication such as SMS, MMS, IP-based client application messaging, proprietary platform messaging (e.g., social network messaging), or any suitable form of asynchronous communication. The application platform 110 may alternatively provide any suitable service or be any suitable type of platform.


A telephony application platform 110 preferably includes the combination of a communication based signaling and media protocol that is used for facilitating communication sessions. The telephony application platform 110 will preferably utilize a first protocol such as SIP or any suitable communication protocol. The first protocol is preferably a communication protocol that facilitates initiating an interactive media session (e.g., voice, video, chat, gaming, screen sharing, etc.) between at least two endpoints. Additionally, the communication platform includes at least a second protocol. The second protocol can be used in application logic and control of the communication. The second protocol can be an asynchronous communication protocol that involves the messaging between the platform and an outside application server. The second protocol can be an application layer protocol such as HTTP, HTTPs, SPDY, and the like. The telephony application platform 110 can operate according to responses of an outside developer application. Messages sent over the second protocol preferably include communication state information. The state information can be embedded as query parameter, as message data, or in any suitable format. In some instances, the application platform 110 submits requests to the application server, and the application platform 110 will perform a service according to the response. Such a model can be common in communication-based service platforms where the service platform provides significant infrastructure to handle incoming calls. In this mode, the second protocol can be used in accessing procedural instructions generated and served by an external server. For example, in response to a call associated with an account, the telephony application platform 110 requests direction from an application server of the account. Similarly, the second protocol may be used in response to any event of the application platform 110. For example, the procedural instructions can be telephony instructions organized into a telephony instruction document. The instructions are preferably, at least partially, proceeded sequentially and translated into actions over a communication protocol (i.e., the first protocol). In another variation, an API request can be transmitted to the communication platform. The API request may be formed so as to augment and mutate communication state, which can translate into actions performed over the first protocol. For example, an application can use a REST API call to alter the state of a current voice session.


The application platform 110 acts as infrastructure delegate for a particular outside application. The application server can be hosted and operated by an outside party independent of the telephony platform. Considerable infrastructure and services are required to provide the calling services. Logistically, the complexity of a communication application platform 110 can be a barrier to allow customer access to raw metadata, logs, and/or analytics. In a first case, a given action by the application platform 110 will involve multiple resources and components of the application platform 110. These resources and components can log information for internal diagnostics and tracking, but this raw data could expose the underlying infrastructure of the application platform 110, which could open up more widespread security issues. In a second case, the internal diagnostics and tracking can be useful for the application platform 110, but a significant portion of the data could be completely irrelevant to outside developers or applications. Similarly, the communication application platform 110 will log information across multiple communication protocols and resources, and the interaction of the multiple protocols (facilitated by the application platform 110) can be useful to an outside entity.


The application platform 110 will include a plurality of severs, service engines/modules, routers, processor engines, components and/or other suitable resources that are used during operating the platform. A subset of the platform resources can be publicly accessible. A public resource would be a platform resource explicitly or implicitly exposed to outside entities. Explicit exposure can include any resource directly addressable by an outside entity. An implicitly exposed resource can include resources that operate on the edge of the application platform 110 and interface with an outside entity. While an outside application may not be able to directly address communication to the implicitly exposed resource, the IP address or resource address may be visible when inspecting communication messages. A load balancer node is a common public resource that is visible by outside users. Another subset of the platform resources can be internal resources. Internal platform resources are used internally and preferably do not communicate/interact directly with outside components. While internal platform resources can be responsible for a processing or otherwise handling a task, the internal platform resource is preferably kept transparent to outside entities. The exposed platform resources and the internal platform resources preferably log events or otherwise contribute to metadata records.


The internal log storage system 120 of the preferred embodiment functions to store records of events and/or metadata of the application platform 110. The internal log storage system 120 can be any suitable metadata repository. The internal log storage system 120 stores the information for internal diagnostics and operations, hut the system can additionally expose an augmented version of the data to outside entities. The internal log storage system 120 can be a single repository where all resources of the application platform 110 store metadata. More preferably, a plurality of different storage systems is used to store different types of data. The internal log storage system 120 can be database or data storage solution operated by the platform operator. Alternatively, the internal log storage system 120 can use an outside storage solution such as Amazon's S3 storage solution or any suitable storage service. In a first variation, a packet logging service is implemented within the components that handle SIP communication. Those components can run a service to store packet history (e.g., pcap “packet capture” files) in the internal log storage system 120. In a second variation, an application instruction document is processed on behalf of a user account (e.g., a developer using the platform for an outside application). As the instruction document is processed, various operations and events could be executed. Multiple services can contribute to processing the application instructions. In the telephony application platform 110 example, processing instructions could include a voice service, a SMS service, an MMS service, a SIP service, one or more media transcoding service, a text-to-speech service, and/or other suitable computing resources. The various resources of the platform can store metadata records into one or more internal log storage systems 120. In a third variation, the application platform 110 can provide a number of accessible API resources. A subset of the API resources can be used to invoke different actions and behavior by the platform. Calls made to the API resources that either query the API or mutate the API resource can be logged along with responses to API calls. Another subset of the API resources can be accessed to retrieve media and/or information about a particular item. For example, the telephony application platform 110 can include a call resource where information about a call such as origin phone number, destination phone number, and call duration can be accessed. Resource data generated or captured by the application platform 110 can be stored in an internal log storage system 120. The information can be stored in a raw form and sanitized on demand.


The log sanitizer 130 of the preferred embodiment functions to process and clean metadata of the internal log storage system 120 for outside consumption. The raw metadata and the information contained in the stored records can include several components that could be unsuitable for sharing with the users of a multitenant platform 110. Some exemplary metadata information that could be sensitive information can include IP addresses or other endpoint addresses of internal platform resources, internal signaling of internal platform resources, communication flow protocol between multiple platform resources, sensitive user information, proprietary data or information valuable to the platform, internal errors or warnings, partner information, and/or any suitable logged information that a platform operator (or user of the platform) would have reason to keep unexposed. The log sanitizer 130 preferably abstracts the log information to level where only desired information is exposed. In one variation, the amount and type of information sanitized can be dynamically set according to a policy engine. The policy engine preferably uses a request account to determine the level of sanitization.


The log sanitizer 130 can use a variety of different processes during the sanitization process. In a first process, internal resources are generalized to a parent or related public resource. During a communication session, a public resource will interface between an outside entity and the internal platform resources. As opposed to attributing the different events to the responsible internal platform resources, the logged events can be attributed to the public resource. From the perspective of the outside application, a single public resource is responsible for all the events. During packet logging, the IPs of internal platform resources are replaced with an IP of a public resource. The log sanitizer 130 can additionally recalculate any checksums or reprocess other aspects of the packet when updated with a sanitized IP address. The log sanitizer 130 can additionally filter events. All or select events of internal platform resources can be removed, condensed, or summarized to simplify the metadata provided to outside users. Similarly, some events may be reduced to simplified representations. For example, in a telephony application platform 110, it could be beneficial to show that different network carriers were contacted when initiating a new call. However, it could be detrimental to reveal the actual carriers used and any prioritization of those carriers. In this situation, the log sanitizer 130 can anonymize the carrier names and details (e.g., SIP addresses, IP addresses and the like). The log sanitizer 130 can additionally use log patterns across accounts, session instances, requests, or other instances of platform use. For example, the log sanitizer 130 can identify application instruction logic errors based on recurring patterns in multiple events. The system can additionally include a cache of sanitized metadata such that repeated requests do not require raw data to be re-sanitized a subsequent time. The log sanitizer 130 preferably includes interfaces to the internal log storage system 120 and to at least one outside interface. The interface can be to a web stack, which can use the data to provide a graphical user interface, or to an exposed API such that programmatic interaction with the information can occur.


In the first exemplary implementation, the SIP pcap information is sanitized, cleaned, organized, or otherwise augmented to remove references to internal platform resources and to generalize platform actions to the public platform resources. Additionally, some internal routing can be removed from the pcap information logs, which functions to abstract internal operations of the application platform 110 to those impacting outside applications. In the second exemplary implementation, processing of instructions is sanitized to anonymize or remove references to internal and protected outside resources (e.g., partner resources).


The exposed log interface 140 of the preferred embodiment functions to provide an access layer to sanitized log information. The exposed log interface 140 is used by outside account holders and/or applications to access or read metadata. The metadata is preferably stored in reference to historical use of the application platform 110. The metadata can be grouped or associated with particular sessions of use. The exposed log interface 140 can enable an entity to access metadata of a particular account, accounts, sub-accounts or sub-accounts, and optionally to specify a particular sub-set of metadata to be accessed. In a first variation, the exposed log interface 140 is a graphical user interface. A web stack or native application uses a private or on-public API to communicate with the log sanitizer 130 to request a particular set of logged metadata. The log sanitizer 130 can sanitize the requested data on-demand and then transmit the information to the web stack or native application. The web stack or native application can then transform the sanitized metadata into a graphical user interface. In another variation, an API can be exposed by the application platform 110 such that the information can be programmatically retrieved. The API is preferably a REST API, but any suitable type of API can alternatively be used.


The log interface 140 in one variation includes a set of graphical user interface component, which function to facilitate understanding and utility of log information when viewed by a user.


As a first component, a graphical log interface 140 can include a browsing interface, which functions to provide a mechanism through which a user can explore log information available to an account. In one variation, the log information is a time ordered list of event logs. More preferably, the log information is partitioned or segmented into different portions that represent different sessions as shown in FIG. 4. For example, all event logs associated with a particular communication session can be grouped together. In one case, multiple communication sessions are executed in parallel, and each of the sessions can be segmented into individual information sequence logs so that the sequence of events can be more easily followed. The browsing interface can additionally include a classification of log information segments. In particular, sequences with errors are classified and highlighted for inspection. The type of error and different error patterns can be classified. The user can explore different error classifications to see a collection of log information sessions that include or relate to the error. In one variation, errors of higher priority or that have been classified as solvable may highlighted above other errors. Additionally or alternatively, the browsing interface can include a search tool. The log information is preferably indexed based on the properties used in the communication. The indexed log information can be searched using any suitable search interface. In one example, a user can search for log information be defining a search query based on packet parameters.


As a second component, the log information is formatted into a unified event log interface as shown in FIGS. 4, 8A, 8B, 9A, and 9B. The unified event log interface preferably includes a sequenced combination of at least two protocols. As described, a first protocol may be a SIP protocol and the second protocol may be an HTTP-based protocol (HTTP or HTTPS). The unified event log interface is a combination of at least two forms log information with the sequence set based on timing and/or cause and effect. For example, the unified event log interface may show an API request to initiate a call, the SIP communication in negotiating the call, the HTTP communication between the application platform 110 and an outside server when obtaining procedural instructions, and then the resulting updates to the SIP communication.


The unified event log interface can additionally include error or event annotations. The annotations can be used to add descriptive markers for portions of the event logs. A set of individual log records may be summarized as performing some actions. For example, the SIP sequence of communications related to calling a number may have an annotation of “calling phone number”. Errors may additionally include annotations that add a description of the error. In one variation, the error annotation can include a suggestion for a solution.


As another component, the log interface go can include shared log browsing mode, wherein two graphical log interfaces are synchronized between two device instances. The shared log browsing mode is preferably used as a tool for customer support agents aiding a customer. The shared browsing mode can include a first account view of log information and a second account view of log information. Preferably, one account can have greater permissions or access to log information, while a second account has a restricted view of the log information (i.e., the log information is more heavily sanitized). In one use case scenario, a customer can call customer support, and the log information viewed by the customer can be synchronized with the customer support. However, the customer sees a sanitized view of the log information while the customer support views log information from the same session but with the log information sanitized in a different format or with no sanitization at all. In one variation, actions made through one device instance can be synchronized by a second instance.


As another component, the log interface 140 can include an event replay tool, which functions to enable one or more event sequences to be replayed. The event replay tool can enable different requests originating from the application platform 110 to be executed. The outbound message is preferably transmitted to the same destination in substantially the same manner. Some parameters may be edited or changed during replay. The replayed communication can result in a response. The response may be compared to the original response with differences highlighted for easy comparison. In one variation, each step in a sequence of communications has to be individually initiated. In another variation, a user can individually step through a sequence. Alternatively, a sequence of communications can be replayed at any suitable time.


2. Method for Providing Sanitized Platform Metadata


As shown in FIG. 5, a method for providing sanitized platform metadata of a preferred embodiment can include executing an application platform utilizing a set of protocols S110, capturing internal log information during execution of the application platform S120, receiving a request to access log information by an outside entity S130, synthesizing the internal log information of the set of protocols into a unified communication report S140, and transmitting the unified communication report S150. The method functions to expose a useful interpretation of account logs in a communication application platform that has been delegated communication responsibility by an outside party. Preferably, the unified communication report is used in creating a unified log visualization that makes sense of communication signaling of a first protocol and the related log events of application logic of a second protocol. In one variation, the first protocol is a media signaling protocol such as SIP and the second protocol is an application layer protocol and more specifically an HTTP based protocol employed in obtaining application directives.


In one variation, synthesizing the internal log information can include sanitizing the log information S142 as shown in FIG. 6, wherein the method can function to share internal log information of an application platform while preserving confidential or internal information of the platform. An application platform can generate considerable log and eventing records to support execution of the platform, platform analytics, and issue resolution. The method enables the information to be reformatted and selectively formatted to provide relevant data and uncompromising data. A first potential benefit of the method is the automatic privatization of internal information of full event information. A second potential benefit of the method is the automatic simplification of log information. If all internally logged information were exposed, the data could be rendered unusable by outside entities because of the large barrier to interpreting and processing the information into a usable form. The method can simplify, reduce, and interpret log records into a more consumable format for outside entities.


The method can have particular benefits for session logs or a set of interconnected or related records. For example, the method can be applied to packet-based record synthesis and sanitation such as the data generated during a SIP communication session or other synchronous communication session. The method can similarly be used in platforms with instruction interpretation where a sequence of processes is initiated in response to interpretation and execution of an instruction document (e.g., an XML document of telephony instructions). The logged information can be exposed over a user graphical interface or alternatively through an API of the application platform. In particular, the method has benefits in the area of telephony or communication application platforms, where the application platform includes extensive infrastructure to support the service provided to outside customers (e.g., developers and their respective applications). An outside developer may delegate complicated communication processes of his application to the communication application platform, and because many of the processes involve internal infrastructure, the method can facilitate exposing at least some of the internal logs in a safe and controlled manner.


Block S110, which includes executing an application platform utilizing a set of protocols, functions to run, host, or manage an application platform. The application platform is preferably a platform-as-a-service (PaaS) type infrastructure that provides processing, resources, or services to outside entities. The outside entities are preferably account holders but could alternatively be any suitable outside entity. Developers and managers of applications configure their respective applications to use the application platform to facilitate at least a portion of the application offering. The application platform is preferably a multitenant platform, servicing multiple accounts on shared resources. The application platform can additionally enable forming hierarchical multitenancy such that accounts of the application platform can similarly have subaccounts wherein the parent account seemingly provides multitenancy. A subaccount or a basic account may both be suitable outside entities. The logged information of the method is preferably logged for multiple accounts if not all accounts, but the method can similarly be applied to non-multitenant platforms or to individual accounts.


When executing an application platform on behalf of an outside entity, executing the application platform can include several different types of operations. These operations can be dependent on the objective and function of the particular application platform. One preferred type of application platform is a telephony or communication application platform as described and referenced above. Various use-cases of the method for a communication platform are used herein. However, the method is not limited to such use cases and can be applied to any suitable platform.


In one exemplary mode, executing an application platform can include routing a communication session through at least two resources of the application platform. When an application platform is facilitating communication with one endpoint or between two or more endpoints, the application platform can depend on multiple resources to provide a service. This may involve routing between two resources that each connects to a different endpoint. For example, a caller in a first region may connect to a local resource in the first region. The application platform then routes communication through different resources to a resource in a second region to connect to a call destination endpoint. In another example, an outside entity connects to a public resource of the platform, and then one or more internal resources actually processes the requested task before public resource responds to the outside entity. Such communication routing, negotiating, and orchestration can be at least partially achieved through a media signaling protocol. The media signaling protocol is preferably SIP but may alternatively be any suitable protocol. Log information related to the SIP packet traffic that passes within the platform and on the edge of the network (inbound and outbound Sip traffic) may be logged events. For example, logged information of the SIP traffic may show the INVITE request of a caller, the trying response to the caller, an INVITE to a first destination, the Ringing messages, the acceptance message, the acknowledgement message, and the session progress message, and a BYE message. The logged information can include any suitable SIP message. A communication signaling protocol of the application platform preferably bridges and coordinates media flow between at least two endpoints.


In a related mode, executing an application platform can additionally include processing application logic of a communication session, which functions to perform delegated business logic of an outside entity. Processing application logic can include obtaining, interpreting, and executing instructions. In one variation, an application layer protocol is used in retrieving or receiving application instructions. The application layer protocol is preferably an HTTP-based protocol such as HTTP or HTTPS, but may alternatively be any suitable application layer protocol such as SPDY. In one variation, an event callback URI is configured for an application or an account. The application platform makes a request to the event callback URI using the application layer protocol upon detection of the event. A response to the request preferably includes procedural instructions. The procedural instructions can be telephony instructions that may direct a communication-focused application platform to call a number, message a number e.g., SMS, MMS), make a video call, start a recording, collect input (e.g., DTMF), play audio generated from text (e.g., text-to-speech), play an audio file, put the communication session in a queue, join a conference, redirect the call, hang-up, or any suitable action. The telephony instruction retrieval can preferably occur upon initiating or redirecting communication session control as in the system described in U.S. Pat. No. 8,306,021 filed 6 Nov. 2012, which is hereby incorporated in its entirety by this reference. The procedural instructions are preferably contained within a document and more preferably formatted in a markup language document. The procedural instructions are preferably at least partially processed sequentially. The procedural instruction documents are preferably retrieved synchronous to the transactions of a communication session. For example, a call may be received resulting in SIP events; the application platform then retrieves procedural instructions using HTTP; processing the logs results in inviting another endpoint over SIP; and the next instruction then redirects application control to another URI in response to some user input (e.g., a DTMF key). The retrieval of procedural instruction documents can have an at least partially synchronous order with the SIP events.


The processing of application logic can additionally include the processing of application programming interface communication directives. API requests of outside entities may additionally or alternatively be used in affecting the business logic of a communication session. The API requests are preferably received asynchronous to other events. In other words, an API call may be received which causes a call to be ended in the middle of its session. The API is preferably a RESTful API but may alternatively be any suitable API such as SOAP or custom protocol. The RESTful. API works according to an application layer request and response model. An application layer request and response model may use HTTP, HTTPS SPDY, or any suitable application layer protocol. Herein HTTP-based protocol is described, but it should not be interpreted as being limited to the HTTP protocol. HTTP requests (or any suitable request communication) to the communication platform preferably observe the principles of a RESTful design. RESTful is understood in this document to describe a Representational State Transfer architecture as is known in the art. The RESTful HTTP requests are preferably stateless, thus each message communicated contains all necessary information for processing the request and generating a response. The API service can include various resources, which act as endpoints that can act as a mechanism for specifying requested information or requesting particular actions. The resources can be expressed as URI's or resource paths. The RESTful API resources can additionally be responsive to different types of HTTP methods such as GET, Put, POST and/or DELETE. Accessing of these resources can be logged and any mutation of the resource can similarly be logged. In some cases, mutating an API resource can alter the processing of one or more communication session, Additionally application layer protocol communication may additionally be used internally in directing media handling.


Processing application instructions can similarly involve multiple internal computing resources. It can be desirable to keep the architecture of the internal resources secret or unexposed. The internal resource addresses, the communication and networking protocols, the number of resource instances, the location and distribution of resources, the software or hardware of the resources, errors or warnings of internal resources, and/or other aspects can all be considered confidential or private. An operator of an application platform can want to keep the information private for privacy issues, security issues, operational advantage issues, or for any suitable reason. In one variation, the application instructions are executed sequentially, and the various involved resources log events and communications as individual instructions are executed. Internally this creates a raw log of actions and reactions when executing the application instructions. This can be useful for debugging, optimizing, or otherwise reviewing execution of a set of instructions. The method can provide a sanitized version of such debugging information while preserving sensitive information. Additionally, the application instructions may be reused in part or whole in additional application instances (e.g., executing the application for different users). The method can be used to interpret and understand events across multiple instances of application instructions.


In other various types of application platforms, executing an application platform can include transforming media, hosting resources or services, or any suitable operation. The different resources involved in a communication session (e.g., those involved in the communication signaling and application logic related communication) can contribute to log information in block S120.


Block S120, which includes capturing internal log information during execution of the application platform, functions to record events, packet records, resource configuration, API resource metadata, and other raw internal operational information of the application platform. Capturing log information can include a resource communicating log information and storing the log information in a log storage system. During execution of the application platform in Block S110, the various services and resources can log individual operational information. For example, a resource can submit a log for each request received from another resource and/or response transmitted from the resource. When executing a communication session, involved resources can record signaling packets used to direct and control the media stream of the communication session. For example, during a SIP-based communication session, a public node (e.g., a load balancer) can capture all packets from the network and sort each call into a pcap record. The pcap records are then stored in a hosted storage system (e.g., Amazon S3). The network packet records can be stored in any suitable format. When interpreting and executing instructions, resources perform actions on behalf of a request or communication session. The resources can record their actions, status, and other suitable metadata when facilitating execution of the instruction. The metadata is preferably logged in association with a responsible request identifier. In one variation, the request identifier can be a communication or call identifier. In another variation, the request identifier can be a timestamp and account identifier. The request identifier can be used to link or associate a sequence or set of log information.


Block S130, which includes receiving a request to access log information by an outside entity, functions to have an outside party use an established mechanism to access a form of the log information. The outside entity is preferably an account or sub-account holder. The request can be issued programmatically by an outside application using a provided set of API calls. The request can alternatively be initiated due to interaction of an account holder or administrator. In one variation, a graphical user interface is provided that an account holder can use to access and review log information, A web stack that manages interfacing with browser clients can be configured to use an API (e.g., private or public API) to contact a log processing service to provide access to a unified public version of the log information. In an alternative implementation, an outside application or service can programmatically request log information. A RESTful API can be used to access unified and optionally sanitized log information, but the API may alternatively be any suitable API such as SOAP. A request to access log information may be a query for a particular type of log information. Alternatively, the request may be a default request wherein the most recent log information or some predefined type of log information is requested.


Block S140, which includes synthesizing the internal log information of the set of protocols into a unified communication report, functions to process the raw log information into a version to expose externally. The unified communication report preferably synthesizes the internal log information of a first protocol and at least a second protocol. The first and second protocol can be substantially independent protocols by design. However, the application platform directs use of at least two protocols in an inter-connected manner, wherein cause and effect of errors or transactions can be traced between the two protocols. In a preferred implementation, the two protocols can be SIP for media signaling and HTTP-based protocol for application logic control. The method can similarly be applied to an application platform that uses more than two protocols. For example, the unified communication report may collect the inter-related communication logs for three or more protocols. For example, a call from a SIP phone bridged to a proprietary voice over IP protocol and controlled by instructions retrieved from an application server may have events from three different protocols reflected in the unified communication report.


Synthesizing the internal log information into a unified communication report can include collating log information across a collection of log information, which functions to collect and organize the log information. The collection is preferably log information of at least two platform used protocols. The collection also defines a set of log information, which can be interpreted as a block. Preferably, a collection is the set of log information related to a single communication session. For example, the SIP packets and IMP requests/responses issued for a single phone call would be included in the collection. Forming a selection can include partitioning log information according to collection definition. In the communication session example, a call session identifier property may be used to identify all log information with the same call session identifier. A collection could alternatively be all communication sessions involving a particular endpoint, all log information for a sub-account, all log information for a particular day, or any suitable collection. In partitioning log information, the time stamp of a log record may be ignored such that log records in sequential order may not be part of the same collection. For example, two communication sessions may generate log records with overlapping and intermingled events, but partitioning functions to split the log records into two collections. The type of collection may additionally change depending on the request or requirements. For example, a log reporting interface may allow a customer to screen individual communication sessions for different types of errors in a given session, but the log reporting interface may additionally screen log information for warnings about repeated calls which may use collections of events for a given caller, which may allow an administrator to observe how customers perform repeated communications.


Synthesizing the internal log information into a unified communication report can additionally include sequencing can include assigning event dependence order, which functions to order the log events. The log events are preferably organized to reflect causality of events. In one variation, ordering the log events within a collection by time will achieve a sequenced order. However, in some instances, the exact time order may not be of as much significance as the causality order. If a first SIP message is received which results in an HTTP request, those two messages are preferably represented in the unified communication report as sequentially ordered. In this example, even if an API event was triggered in between the SIP and HTTP request, the time order of these three events may be broken, placing the API event. Different ordering rules may be made. Similarly, events may be removed or curated to show the most meaningful events. Additionally, the log information may be sanitized as in block S142.


Additionally or alternatively, the method can include Block S142, which includes sanitizing the log information, functions to store log information for consumption by outside parties. The log information is manipulated, processed, and otherwise altered to remove private information, simplify or abstract internal processes, and selectively filter information. Sanitizing log information is preferably performed at a sanitizing service. The sanitization of log information is preferably responsive to outside requests such that information is sanitized on demand. The log information can alternatively be sanitized preemptively wherein the collected log information is sanitized during ingestion. In one alternative embodiment, the sanitization may be employed independent of collating and sequencing log events of multiple protocols as shown in FIG. 7. The sanitization may be applied to log information of any type. Sanitized information can additionally be cached for repeated requests. Access to log information can additionally be predicted through a suitable learning algorithm or pattern detection, and the predicted log information can be sanitized based on historical patterns. For example, an account that routinely accesses daily log information of a particular type can be pre-processed.


Sanitizing log information can include various processes to augment raw internal log information for outside consumption. In one process, sanitizing log information can include generating artificial log records with altered metadata. In one variation, resource identifiers are replaced with fake resources, public resources, or other suitable replacement identifiers, which functions to anonymize resources. Generating artificial log records can be applied to internal resources, outside partner resources, and/or participants of the logged event. Generating artificial log records may be achieved by abstracting communication of multiple internal resources of the platform to a single proxy resource. The proxy resource is a stand-in or placeholder representation that hides complexity of events that occur internal to that proxy resource. The proxy resource may be real resource or a generated representation of a resource. In one implementation, public resources can be used as stand-ins for internal resources, which functions to turn the application platform to a logged black box where events and information is attributed to one or more public resources. This can function to create an artificial simplification of what resource of the application platform is performing an action. From the perspective of an outside application, the application will connect with a first public resource (i.e., the proxy resource) of the platform, and all the associated events and metadata related to that connection are attributed to the public resource. In the original log information, the original raw logs would indicate the underlying internal resources that performed the various actions. When a set of log information is related through an identifier (e.g., a communication session identifier), externally exposed resources (i.e., resources communicating outside of the application platform) are used in place of internal resources. For example, the IP address of a public node can be used for internal resources facilitating a route. In pcap based sanitation, this can additionally include recalculating checksums of packets such that the sanitized packets appear legitimate. Similarly, partner resources can be anonymized. For example, a communication platform may use outside resources such as a set of different network carriers. Instead of exposing the set of network carriers and possibly their respective private address information, the method can include using generic or fake identifiers for sensitive information.


Other aspects can similarly be transformed to protect internal operation and data. For example, if log information because of its structure reveals a service, protocol, or other tool used, the records can be reformatted to a generic format or syntax to anonymize internal practices. In some cases, instead of replacing information with dummy information, sensitive log information can be generalized, categorized, or otherwise represented in an alternative form, which provides informational insight. For example, a particular piece of metadata could include detailed location information, user-identifiable metadata, or any specific information. The sanitizer can categorize exact information to a broader description. The location information can be transformed to regionally specific information (e.g., city information instead of latitude and longitude), and user information can be generalized into a generic descriptor of the user.


Sanitizing log information can additionally or alternatively include condensing log information, which functions to simplify logged information. Multiple records can be condensed or simplified into a single event record when returned to an outside entity. In some instances, considerably more log information may be kept by a platform than would be of interest to outside entities. For example, when a service is establishing communication through some communication channel, an outside entity may only be interested in the attempt to communicate and the result of that attempt (e.g., success, redirection, failure, etc.), while internal logs include requests, acknowledgements, handshaking, and other portions of the event. By abstracting the log information into a high-level summary, the public version of the log information can be more consumable by outside entities. Condensing log information can additionally function as a form of event folding showing different abstraction layers of information. Additionally condensing log information can include processing log information across multiple instances of an application, session, or other usage instance. Patterns across multiple instances can be modeled and interpreted into a simplified representation. For example, some errors may be evident when viewed across multiple communication sessions on a communication platform. Multiple communication sessions can be processed to identify the error.


In one variation, the level of sanitization is determined by a policy engine. Policy can preferably be set based on the requesting account. For example, an account with platform administrator privileges (such as a customer support agent) may be able to control the level of sanitization occurring on the log information. For example, a customer support agent may be able to toggle between a raw log information view of a unified communication report and a sanitized and simplified version viewed by a customer. A customer account may view a sanitized unified communication report. A sub-account of the customer may have access to a view even further simplified and sanitized. For example, a resource of the customer account may be sanitized in the report viewed by the sub-account.


Block S150, which includes transmitting the unified log report, functions to respond to a request with log information augmented for outside use. The unified log report can be transmitted as a reply to the request. The transmitted log report may alternatively be delivered or made accessible in an alternative endpoint. For example, a request may prompt the generation of the log report, but the log report may be made accessible in a second location after the log information is sanitized. As described elsewhere, the sanitized log information can be pre-processed and automatically organized into info graphics or pre-organized data, but the log information may alternatively be returned in a data serialization format for handling and processing by the outside entity. In one variation, the unified log report is returned in a programmatic format such as in response to an API call or application instruction. In another variation, the log report is communicated to a destination endpoint. For example, the log report may be automatically delivered to a service health email address, which can be configured by the account manager. The unified log report may be embedded in the communication. Alternatively, a URL may be included to the related log report or reports. In a third variation, the unified log report is converted into rendered user interface element. The unified log report interface element may be static, but the report interface is more preferably interactive. In one variation, the unified log report is a communication sequence diagram representing the sequential transfer of information and actions between different resources as shown in FIGS. 8A and 8B. As shown in FIG. 8B, the details of different logged records can preferably be inspected. In another variation, the unified log report can be a listed transcription of event records as shown in FIGS. 9A and 9B. As described below, the report interface may include replaying the events, sharing the report with a customer-service agent, finding similar log report occurrences, exploring error resolutions, debugging applications, or any suitable use.


The method can additionally include transmitting a communication to a configured destination S152, which functions to notify an interested party of events. Transmitting a communication can include sending an email, sending an HTTP message with log data to a callback URI, sending a text notification, or sending a communication to any suitable type of endpoint. In one variation, a log report summary may be sent in the communication on a periodic basis (e.g., hourly, daily, weekly, etc.). In another variation, the communication can be responsive to an event, and the communication can include one or more specific log reports as shown in FIG. 10. For example, a log report associated with an error can be sent when the error is encountered. Transmitting a communication can include embedding a link to a unified communication report. The communication may alternatively include a data representation of the unified communication report.


Preferably, a log report interface will include navigation tools to find, explore, and access log reports of different collections. In one implementation, the log report interface will include a time ordered list of relevant log reports. In one variation, the log reports may be filtered based on different characteristics as shown in FIG. 4. There could be an “all” category showing log reports for all calls. There could be an “error” category or categories for different error types such as “application timeout”, “communication error” or any suitable type of error. There could be a warning category for log information that didn't encounter an error but have been flagged. For example, communications that had low media quality, short duration (e.g., <1 second), long duration (e.g., longer than an hour), slow application server responses, long duration of silence, and other occurrences, which warrant being notified of.


In one variation, the log report interface includes a searching tool. Accordingly, the method can include indexing properties of the log information S160, which functions to allow search queries to be made using various properties of the individual log records. Once indexed, a request to access log information may provide different search query parameters that define the results of the query. The search is preferably completed using the indexed log information and then the results are returned in a suitable format. For example, a user can use the log report interface to search for all log reports that included an instruction to play the mp3 file test.mp3. Events that satisfy this query can be identified and then the appropriate log reports formed. In the user interface, the search results may prevent a summary description of the log such as the time and associated endpoints. The search results may additionally show a preview of the log report.


In one particular use case, the log report interface is used in conveying errors encountered by the system. Accordingly, the method can include detecting an error and classifying the error in a unified communication report. In one variation, the error is an event that is logged during execution of the application platform. Error classification may be based on error codes. Additionally, error classification may process the actual events in a collection and generate a summary of the error. For example, an error may be encountered at one point in a sequence of events, but there may be a subset of events that may be involved in resulting in the error. The log report interface may highlight the involved events in the unified log report as an annotation. The event classification can similarly be used in making the log reports more navigable. For example, the method may classify errors based on which ones are solvable. Solvable errors may be of interest to an account holder because they may be easily avoided. Unified log report classification can additionally allow similar collections to be grouped. In one variation, event sequences within individual log reports are analyzed and related to log reports with substantially similar sequence patterns. These event sequence patterns may be predefined. For example, conference call event patterns, phone tree event pattern, and other common event log patterns may be predefined so that these categories can be easily accessed by a customer. Alternatively, the event sequence patterns are automatically processed. Any suitable approach to event sequence pattern comparison may be used. As one simple approach, similar log reports may be identified by identifying other log reports where the communication session is controlled by the same application server URI. Identifying similar log reports can be used to show similar log reports for a given log report, which functions to provide a simple interface for a customer account to compare the differences between different scenarios.


The method can additionally include annotating a unified log report S162 as shown in FIG. 12. The annotations can be informational markup, which can be conveyed in an API response. However, the annotations are more preferably rendered user interface elements that identify and optionally provide information relating to the annotated item. For example, errors are preferably annotated. Annotating an error can include marking the error, providing an explanation of the error, providing a possible resolution, or adding any suitable supplemental information. An explanation of the error may use templating to use specific data from that unified log report. Annotation can similarly be used for other reasons such as showing log reports related to a subsection of a particular log report.


The log reports may have particular benefits to aiding in the process of providing customer support to users of the platform. Preferably, a customer care representative can be enabled to access and view log reports of an account. In one variation, a customer care agents is given privileges to view log reports with less sanitization than a customer account. For example, internal log information hidden from a customer agent may be viewable by the customer account. Additionally, the log report interface of a customer care agent may allow the agent to view the log reports as seen by the customer account. The method may additionally include establishing a synchronized browsing session between an account user and platform agent, which functions to allow the log report interface of a customer account to be at least partially controlled by a platform agent as shown in FIG. 11. A synchronized browsing session may be established by the customer account or the platform agent entering a shared code. Alternatively, a platform agent may invoke the sharing session by obtaining the account name. The synchronized browsing session may allow a platform agent to pull up appropriate logs, mark or annotate a log report, or perform any suitable control of the log report to facilitate helping a customer resolve a problem.


The method may additionally include replaying at least a subset of events recorded in a log report. The log report preferably is made up of several events, at least some of which are actions originating from the platform (e.g., outbound SIP or HTTP communication). The actions that were performed to result in an event record can be replayed in its original format or alternatively in an augmented format (e.g., changing a parameter of the action). An event replay debugging tool may be provided to allow any level of action replay such as single action replay, stepping through actions, or replaying a set of actions from a starting point as shown in FIGS. 9A and 9B. For example, if an application encountered an error when the platform talked to an application server of an account holder, the account holder could replay the HTTP request made to the application server. The HTTP message originally sent can be resent to the application server URI. The application server will preferably make a response. This response can be compared to the original response. The method preferably additionally includes comparing two log reports as shown in FIG. 9B. In the replay version, an original version can be compared to the replayed version. Differences can be highlighted revealing what is added and what is missing between at least two versions. The log report comparison can additionally be applied to any two or more log reports.


The system and methods of the preferred embodiment and variations thereof can be embodied and/or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions are preferably executed by computer-executable components preferably integrated with the platform log storage system and an information sanitization engine. The computer-readable medium can be stored on any suitable computer-readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component is preferably a general or application specific processor, but any suitable dedicated hardware or hardware/firmware combination device can alternatively or additionally execute the instructions.


As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the preferred embodiments of the invention without departing from the scope of this invention defined in the following claims.

Claims
  • 1. A method comprising: generating, by an application platform, internal log information associated with a first account of the application platform;receiving, by the application platform, a request to access the internal log information associated with the first account; andin response to receiving the request: accessing, by the application platform, a first set of records in the internal log information that describe logged events attributed to at least a first internal identifier of the application platform and a second internal identifier of the application platform;generating, by the application platform, sanitized log information by modifying the first set of records to describe the logged events as being attributed to a public identifier rather than the first internal identifier and the second internal identifier; andreturning, by the application platform, the sanitized log information in a response to the request.
  • 2. The method of claim 1, further comprising: executing a first process on behalf of the first account using the first internal identifier of the application platform; andexecuting a second process on behalf of the first account using the second internal identifier of the application platform.
  • 3. The method of claim 2, wherein the generating of the internal log information associated with the first account of the application platform comprises: generating a first record in the internal log information that indicates execution of the first process using the first internal identifier; andgenerating a second record in the internal log information that indicates execution of the second process using the second internal identifier.
  • 4. The method of claim 3, wherein the generating of the sanitized log information for the first account comprises: modifying the first record in the internal log information to attribute execution of the first process to the public identifier; andmodifying the second record in the internal log information to attribute execution of the second process to the public identifier.
  • 5. The method of claim 1, further comprising: detecting and classifying an error in the sanitized log information.
  • 6. The method of claim 1, wherein the generating of the sanitized log information for the first account comprises: condensing a set of individual log events in the internal log information into a summarizing event.
  • 7. The method of claim 1, wherein the generating of the sanitized log information for the first account further comprises: modifying the first set of records by removing a reference to the first internal identifier.
  • 8. The method of claim 1, further comprising: transmitting a communication to a configured destination for at least one error classification, the communication being embedded with a link to the sanitized log information.
  • 9. The method of claim 1, further comprising: annotating the sanitized log information with supplemental information, the supplemental information including a recommended resolution to a detected error.
  • 10. The method of claim 1, further comprising: indexing properties of the internal log information, wherein the request to access the internal log information is a search query; anddetermining a set of sessions of the internal log information that correspond to the search query.
  • 11. An application platform comprising: one or more computer processors; andone or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the application platform to perform operations comprising: generating internal log information associated with a first account of the application platform;receiving a request to access the internal log information associated with the first account; andin response to receiving the request: accessing a first set of records in the internal log information that describe logged events attributed to at least a first internal identifier of the application platform and a second internal identifier of the application platform;generating sanitized log information by modifying the first set of records to describe the logged events as being attributed to a public identifier rather than the first internal identifier and the second internal identifier; andreturning the sanitized log information in a response to the request.
  • 12. The application platform of claim 11, wherein the operations further comprise: executing a first process on behalf of the first account using the first internal identifier of the application platform; andexecuting a second process on behalf of the first account using the second internal identifier of the application platform.
  • 13. The application platform of claim 12, wherein the generating of the internal log information associated with the first account of the application platform comprises: generating a first record in the internal log information that indicates execution of the first process using the first internal identifier; andgenerating a second record in the internal log information that indicates execution of the second process using the second internal identifier.
  • 14. The application platform of claim 13, wherein the generating of the sanitized log information for the first account comprises: modifying the first record in the internal log information to attribute execution of the first process to the public identifier; andmodifying the second record in the internal log information to attribute execution of the second process to the public identifier.
  • 15. The application platform of claim 11, wherein the operations further comprise: detecting and classifying an error in the sanitized log information.
  • 16. The application platform of claim 11, wherein generating the sanitized log information for the first account comprises: condensing a set of individual log events in the internal log information into a summarizing event.
  • 17. A non-transitory computer-readable medium storing instructions that, when executed by one or more computer processors of an application platform, cause the application platform to perform operations comprising: generating internal log information associated with a first account of the application platform;receiving a request to access the internal log information associated with the first account; andin response to receiving the request: accessing a first set of records in the internal log information that describe logged events attributed to at least a first internal identifier of the application platform and a second internal identifier of the application platform;generating sanitized log information by modifying the first set of records to describe the logged events as being attributed to a public identifier rather than the first internal identifier and the second internal identifier; andreturning the sanitized log information in a response to the request.
  • 18. The non-transitory computer-readable medium of claim 17, wherein the operations further comprise: transmitting a communication to a configured destination for at least one error classification, the communication being embedded with a link to the sanitized log information.
  • 19. The non-transitory computer-readable medium of claim 17, wherein the operations further comprise: annotating the sanitized log information with supplemental information, the supplemental information including a recommended resolution to a detected error.
  • 20. The non-transitory computer-readable medium of claim 17, wherein the operations further comprise: indexing properties of the internal log information, wherein the request to access the internal log information is a search query; anddetermining a set of sessions of the internal log information that correspond to the search query.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 16/545,479, filed Aug. 20, 2019, which is a continuation of U.S. patent application Ser. No. 15/815,403, filed 16 Nov. 2017, which is a continuation of U.S. patent application Ser. No. 14/838,149, filed 27 Aug. 2015, which is a continuation of U.S. patent application Ser. No. 14/488,802, filed 17 Sep. 2014, which claims the benefit of U.S. Provisional Application Ser. No. 61/879,023, filed on 17 Sep. 2013, all of which are incorporated in their entirety by this reference.

US Referenced Citations (792)
Number Name Date Kind
5274700 Gechter et al. Dec 1993 A
5526416 Dezonno et al. Jun 1996 A
5581608 Jreij et al. Dec 1996 A
5598457 Foladare et al. Jan 1997 A
5867495 Elliott et al. Feb 1999 A
5934181 Adamczewski Aug 1999 A
5978465 Corduroy et al. Nov 1999 A
6026440 Shrader et al. Feb 2000 A
6034946 Roginsky et al. Mar 2000 A
6094681 Shaffer et al. Jul 2000 A
6138143 Gigliotti et al. Oct 2000 A
6185565 Meubus et al. Feb 2001 B1
6192123 Grunsted et al. Feb 2001 B1
6206564 Adamczewski Mar 2001 B1
6223287 Douglas et al. Apr 2001 B1
6232979 Shochet May 2001 B1
6269336 Ladd et al. Jul 2001 B1
6317137 Rosasco Nov 2001 B1
6363065 Thornton et al. Mar 2002 B1
6373836 Deryugin et al. Apr 2002 B1
6425012 Trovato et al. Jul 2002 B1
6426995 Kim et al. Jul 2002 B1
6430175 Echols et al. Aug 2002 B1
6434528 Sanders Aug 2002 B1
6445694 Swartz Sep 2002 B1
6445776 Shank et al. Sep 2002 B1
6459913 Cloutier Oct 2002 B2
6463414 Su et al. Oct 2002 B1
6493558 Bernhart et al. Dec 2002 B1
6496500 Nance et al. Dec 2002 B2
6501739 Cohen Dec 2002 B1
6501832 Saylor et al. Dec 2002 B1
6507875 Mellen-Garnett et al. Jan 2003 B1
6571245 Huang et al. May 2003 B2
6574216 Farris et al. Jun 2003 B1
6577721 Vainio et al. Jun 2003 B1
6600736 Ball et al. Jul 2003 B1
6606596 Zirngibl et al. Aug 2003 B1
6614783 Sonesh et al. Sep 2003 B1
6625258 Ram et al. Sep 2003 B1
6625576 Kochanski et al. Sep 2003 B2
6636504 Albers et al. Oct 2003 B1
6662231 Drosset et al. Dec 2003 B1
6704785 Koo et al. Mar 2004 B1
6707889 Saylor et al. Mar 2004 B1
6711129 Bauer et al. Mar 2004 B1
6711249 Weissman et al. Mar 2004 B2
6738738 Henton May 2004 B2
6757365 Bogard Jun 2004 B1
6765997 Zirngibl et al. Jul 2004 B1
6768788 Langseth et al. Jul 2004 B1
6771955 Imura et al. Aug 2004 B2
6778653 Kallas et al. Aug 2004 B1
6785266 Swartz Aug 2004 B2
6788768 Saylor et al. Sep 2004 B1
6792086 Saylor et al. Sep 2004 B1
6792093 Barak et al. Sep 2004 B2
6798867 Zirngibl et al. Sep 2004 B1
6807529 Johnson et al. Oct 2004 B2
6807574 Partovi et al. Oct 2004 B1
6819667 Brusilovsky et al. Nov 2004 B1
6820260 Flockhart et al. Nov 2004 B1
6829334 Zirngibl et al. Dec 2004 B1
6831966 Tegan et al. Dec 2004 B1
6834265 Balasuriya Dec 2004 B2
6836537 Zirngibl et al. Dec 2004 B1
6842767 Partovi et al. Jan 2005 B1
6850603 Eberle et al. Feb 2005 B1
6870830 Schuster et al. Mar 2005 B1
6873952 Bailey et al. Mar 2005 B1
6874084 Dobner et al. Mar 2005 B1
6885737 Gao et al. Apr 2005 B1
6888929 Saylor et al. May 2005 B1
6895084 Saylor et al. May 2005 B1
6898567 Balasuriya May 2005 B2
6912581 Johnson et al. Jun 2005 B2
6922411 Taylor Jul 2005 B1
6928469 Duursma et al. Aug 2005 B1
6931405 El-Shimi et al. Aug 2005 B2
6937699 Schuster et al. Aug 2005 B1
6940953 Eberle et al. Sep 2005 B1
6941268 Porter et al. Sep 2005 B2
6947417 Laursen et al. Sep 2005 B2
6947988 Saleh et al. Sep 2005 B1
6961330 Cattan et al. Nov 2005 B1
6964012 Zirngibl et al. Nov 2005 B1
6970915 Partovi et al. Nov 2005 B1
6977992 Zirngibl et al. Dec 2005 B2
6981041 Araujo et al. Dec 2005 B2
6985862 Strom et al. Jan 2006 B2
6999576 Sacra Feb 2006 B2
7003464 Ferrans et al. Feb 2006 B2
7006606 Cohen et al. Feb 2006 B1
7010586 Allavarpu et al. Mar 2006 B1
7020685 Chen et al. Mar 2006 B1
7039165 Saylor et al. May 2006 B1
7058042 Bontempi et al. Jun 2006 B2
7058181 Wright et al. Jun 2006 B2
7062709 Cheung Jun 2006 B2
7065637 Nanja Jun 2006 B1
7076037 Gonen et al. Jul 2006 B1
7076428 Anastasakos et al. Jul 2006 B2
7089310 Ellerman et al. Aug 2006 B1
7099442 Da Palma et al. Aug 2006 B2
7103003 Brueckheimer et al. Sep 2006 B2
7103171 Annadata et al. Sep 2006 B1
7106844 Holland Sep 2006 B1
7111163 Haney Sep 2006 B1
7136932 Schneider Nov 2006 B1
7140004 Kunins et al. Nov 2006 B1
7143039 Stifelman et al. Nov 2006 B1
7197331 Anastasakos et al. Mar 2007 B2
7197461 Eberle et al. Mar 2007 B1
7197462 Takagi et al. Mar 2007 B2
7197544 Wang et al. Mar 2007 B2
D540074 Peters Apr 2007 S
7225232 Elberse May 2007 B2
7227849 Rasanen Jun 2007 B1
7245611 Narasimhan et al. Jul 2007 B2
7260208 Cavalcanti Aug 2007 B2
7266181 Zirngibl et al. Sep 2007 B1
7269557 Bailey et al. Sep 2007 B1
7272212 Eberle et al. Sep 2007 B2
7272564 Phillips et al. Sep 2007 B2
7277851 Henton Oct 2007 B1
7283515 Fowler Oct 2007 B2
7283519 Girard Oct 2007 B2
7286521 Jackson et al. Oct 2007 B1
7287248 Adeeb Oct 2007 B1
7289453 Riedel et al. Oct 2007 B2
7296739 Mo et al. Nov 2007 B1
7298732 Cho Nov 2007 B2
7298834 Homeier et al. Nov 2007 B1
7308085 Weissman Dec 2007 B2
7308408 Stifelman et al. Dec 2007 B1
7324633 Gao et al. Jan 2008 B2
7324942 Mahowald et al. Jan 2008 B1
7328263 Sadjadi Feb 2008 B1
7330463 Bradd et al. Feb 2008 B1
7330890 Partovi et al. Feb 2008 B1
7340040 Saylor et al. Mar 2008 B1
7349714 Lee et al. Mar 2008 B2
7369865 Gabriel et al. May 2008 B2
7370329 Kumar et al. May 2008 B2
7373660 Guichard et al. May 2008 B1
7376223 Taylor et al. May 2008 B2
7376586 Partovi et al. May 2008 B1
7376733 Connelly et al. May 2008 B2
7376740 Porter et al. May 2008 B1
7412525 Cafarella et al. Aug 2008 B2
7418090 Reding et al. Aug 2008 B2
7428302 Zirngibl et al. Sep 2008 B2
7440898 Eberle et al. Oct 2008 B1
7447299 Partovi et al. Nov 2008 B1
7454459 Kapoor et al. Nov 2008 B1
7457249 Baldwin et al. Nov 2008 B2
7457397 Saylor et al. Nov 2008 B1
7473872 Takimoto Jan 2009 B2
7486780 Zirngibl et al. Feb 2009 B2
7496054 Taylor Feb 2009 B2
7496188 Saha et al. Feb 2009 B2
7496651 Joshi Feb 2009 B1
7500249 Kampe et al. Mar 2009 B2
7505951 Thompson et al. Mar 2009 B2
7519359 Chiarulli et al. Apr 2009 B2
7522711 Stein et al. Apr 2009 B1
7536454 Balasuriya May 2009 B2
7542761 Sarkar Jun 2009 B2
7552054 Stifelman et al. Jun 2009 B1
7571226 Partovi et al. Aug 2009 B1
7606868 Le et al. Oct 2009 B1
7613287 Stifelman et al. Nov 2009 B1
7623648 Oppenheim et al. Nov 2009 B1
7630900 Strom Dec 2009 B1
7631310 Henzinger Dec 2009 B1
7644000 Strom Jan 2010 B1
7657433 Chang Feb 2010 B1
7657434 Thompson et al. Feb 2010 B2
7668157 Weintraub et al. Feb 2010 B2
7672275 Yajnik et al. Mar 2010 B2
7672295 Andhare et al. Mar 2010 B1
7675857 Chesson Mar 2010 B1
7676221 Roundtree et al. Mar 2010 B2
7685280 Berry et al. Mar 2010 B2
7685298 Day et al. Mar 2010 B2
7715547 Ibbotson et al. May 2010 B2
7716293 Kasuga et al. May 2010 B2
7742499 Erskine et al. Jun 2010 B1
7779065 Gupta et al. Aug 2010 B2
7809125 Brunson et al. Oct 2010 B2
7809791 Schwartz et al. Oct 2010 B2
7875836 Imura et al. Jan 2011 B2
7882253 Pardo-Castellote et al. Feb 2011 B2
7920866 Bosch et al. Apr 2011 B2
7926099 Chakravarty et al. Apr 2011 B1
7929562 Petrovykh Apr 2011 B2
7936867 Hill et al. May 2011 B1
7949111 Harlow et al. May 2011 B2
7962644 Ezerzer et al. Jun 2011 B1
7979555 Rothstein et al. Jul 2011 B2
7992120 Wang et al. Aug 2011 B1
8023425 Raleigh Sep 2011 B2
8024785 Andress et al. Sep 2011 B2
8045689 Provenzale et al. Oct 2011 B2
8046378 Zhuge et al. Oct 2011 B1
8046823 Begen et al. Oct 2011 B1
8069096 Ballaro et al. Nov 2011 B1
8078483 Hirose et al. Dec 2011 B1
8081744 Sylvain Dec 2011 B2
8081958 Soderstrom et al. Dec 2011 B2
8103725 Gupta et al. Jan 2012 B2
8126128 Hicks, III et al. Feb 2012 B1
8126129 Mcguire Feb 2012 B1
8130750 Hester Mar 2012 B2
8130917 Helbling et al. Mar 2012 B2
8139730 Da Palma et al. Mar 2012 B2
8145212 Lopresti et al. Mar 2012 B2
8149716 Ramanathan et al. Apr 2012 B2
8150918 Edelman et al. Apr 2012 B1
8156213 Deng et al. Apr 2012 B1
8165116 Ku et al. Apr 2012 B2
8166185 Samuel et al. Apr 2012 B2
8169936 Koren et al. May 2012 B2
8175007 Jain et al. May 2012 B2
8185619 Maiocco et al. May 2012 B1
8196133 Kakumani et al. Jun 2012 B2
8204479 Vendrow et al. Jun 2012 B2
8214868 Hamilton et al. Jul 2012 B2
8218457 Malhotra et al. Jul 2012 B2
8233611 Zettner Jul 2012 B1
8238533 Blackwell et al. Aug 2012 B2
8243889 Taylor et al. Aug 2012 B2
8249552 Gailloux et al. Aug 2012 B1
8266327 Kumar et al. Sep 2012 B2
8295272 Boni et al. Oct 2012 B2
8301117 Keast et al. Oct 2012 B2
8306021 Lawson et al. Nov 2012 B2
8315198 Corneille et al. Nov 2012 B2
8315369 Lawson et al. Nov 2012 B2
8315620 Williamson et al. Nov 2012 B1
8319816 Swanson et al. Nov 2012 B1
8326805 Arous et al. Dec 2012 B1
8335852 Hokimoto Dec 2012 B2
8346630 Mckeown Jan 2013 B1
8355394 Taylor et al. Jan 2013 B2
8411669 Chen et al. Apr 2013 B2
8413247 Hudis et al. Apr 2013 B2
8417817 Jacobs Apr 2013 B1
8429827 Wetzel Apr 2013 B1
8438315 Tao et al. May 2013 B1
8462670 Chien Jun 2013 B2
8467502 Sureka et al. Jun 2013 B2
8477926 Jasper et al. Jul 2013 B2
8503639 Reding et al. Aug 2013 B2
8503650 Reding et al. Aug 2013 B2
8504818 Rao et al. Aug 2013 B2
8509068 Begall et al. Aug 2013 B2
8532686 Schmidt et al. Sep 2013 B2
8533857 Tuchman et al. Sep 2013 B2
8542805 Agranovsky et al. Sep 2013 B2
8543665 Ansari et al. Sep 2013 B2
8547962 Ramachandran et al. Oct 2013 B2
8549047 Beechuk et al. Oct 2013 B2
8565117 Hilt et al. Oct 2013 B2
8572391 Golan et al. Oct 2013 B2
8576712 Sabat et al. Nov 2013 B2
8577803 Chatterjee et al. Nov 2013 B2
8582450 Robesky Nov 2013 B1
8582737 Lawson et al. Nov 2013 B2
8594626 Woodson et al. Nov 2013 B1
8601136 Fahlgren et al. Dec 2013 B1
8611338 Lawson et al. Dec 2013 B2
8613102 Nath Dec 2013 B2
8621598 Lai et al. Dec 2013 B2
8649268 Lawson et al. Feb 2014 B2
8656452 Li et al. Feb 2014 B2
8667056 Proulx et al. Mar 2014 B1
8675493 Buddhikot et al. Mar 2014 B2
8688147 Nguyen et al. Apr 2014 B2
8695077 Gerhard et al. Apr 2014 B1
8713693 Shanabrook et al. Apr 2014 B2
8728656 Takahashi et al. May 2014 B2
8751801 Harris et al. Jun 2014 B2
8755376 Lawson et al. Jun 2014 B2
8767925 Sureka et al. Jul 2014 B2
8781975 Bennett et al. Jul 2014 B2
8797920 Parreira Aug 2014 B2
8806024 Toba Francis et al. Aug 2014 B1
8819133 Wang Aug 2014 B2
8825746 Ravichandran et al. Sep 2014 B2
8837465 Lawson et al. Sep 2014 B2
8838707 Lawson et al. Sep 2014 B2
8843596 Goel et al. Sep 2014 B2
8855271 Brock et al. Oct 2014 B2
8861510 Fritz Oct 2014 B1
8879547 Maes Nov 2014 B2
8903938 Vermeulen et al. Dec 2014 B2
8918848 Sharma et al. Dec 2014 B2
8924489 Bleau et al. Dec 2014 B2
8938053 Cooke et al. Jan 2015 B2
8948356 Nowack et al. Feb 2015 B2
8954591 Ganesan et al. Feb 2015 B2
8964726 Lawson et al. Feb 2015 B2
8990610 Bostick et al. Mar 2015 B2
9014664 Kim et al. Apr 2015 B2
9015702 Bhat Apr 2015 B2
9031223 Smith et al. May 2015 B2
9032204 Byrd et al. May 2015 B2
9071677 Aggarwal et al. Jun 2015 B2
9137127 Nowack et al. Sep 2015 B2
9141682 Adoc, Jr. et al. Sep 2015 B1
9161296 Parsons et al. Oct 2015 B2
9177007 Winters et al. Nov 2015 B2
9204281 Ramprasad et al. Dec 2015 B2
9210275 Lawson et al. Dec 2015 B2
9306982 Lawson et al. Apr 2016 B2
9307094 Nowack et al. Apr 2016 B2
9325624 Malatack et al. Apr 2016 B2
9338190 Eng et al. May 2016 B2
9344573 Wolthuis et al. May 2016 B2
9356916 Kravitz et al. May 2016 B2
9378337 Kuhr Jun 2016 B2
9398622 Lawson et al. Jul 2016 B2
9456008 Lawson et al. Sep 2016 B2
9456339 Hildner et al. Sep 2016 B1
9460169 Hinton et al. Oct 2016 B2
9596274 Lawson et al. Mar 2017 B2
9628624 Wolthuis et al. Apr 2017 B2
9632875 Raichstein et al. Apr 2017 B2
9634995 Binder Apr 2017 B2
9853872 Nowack et al. Dec 2017 B2
10439907 Nowack et al. Oct 2019 B2
11539601 Nowack et al. Dec 2022 B2
20010038624 Greenberg et al. Nov 2001 A1
20010043684 Guedalia et al. Nov 2001 A1
20010051996 Cooper et al. Dec 2001 A1
20020006124 Jimenez et al. Jan 2002 A1
20020006125 Josse et al. Jan 2002 A1
20020006193 Rodenbusch et al. Jan 2002 A1
20020025819 Cetusic et al. Feb 2002 A1
20020057777 Saito et al. May 2002 A1
20020064267 Martin et al. May 2002 A1
20020067823 Walker et al. Jun 2002 A1
20020077833 Arons et al. Jun 2002 A1
20020126813 Partovi et al. Sep 2002 A1
20020133587 Ensel et al. Sep 2002 A1
20020136391 Armstrong et al. Sep 2002 A1
20020165957 Devoe et al. Nov 2002 A1
20020176378 Hamilton et al. Nov 2002 A1
20020176404 Girard Nov 2002 A1
20020184361 Eden Dec 2002 A1
20020198941 Gavrilescu et al. Dec 2002 A1
20030006137 Wei et al. Jan 2003 A1
20030012356 Zino et al. Jan 2003 A1
20030014665 Anderson et al. Jan 2003 A1
20030018830 Chen et al. Jan 2003 A1
20030023672 Vaysman Jan 2003 A1
20030026426 Wright et al. Feb 2003 A1
20030046366 Pardikar et al. Mar 2003 A1
20030051037 Sundaram et al. Mar 2003 A1
20030058884 Kallner et al. Mar 2003 A1
20030059020 Meyerson et al. Mar 2003 A1
20030060188 Gidron et al. Mar 2003 A1
20030061317 Brown et al. Mar 2003 A1
20030061404 Atwal et al. Mar 2003 A1
20030088421 Maes et al. May 2003 A1
20030097330 Hillmer et al. May 2003 A1
20030097447 Johnston May 2003 A1
20030097639 Niyogi et al. May 2003 A1
20030103620 Brown et al. Jun 2003 A1
20030123640 Roelle et al. Jul 2003 A1
20030149721 Alfonso-Nogueiro et al. Aug 2003 A1
20030162506 Toshimitsu et al. Aug 2003 A1
20030169859 Strathmeyer et al. Sep 2003 A1
20030195950 Huang et al. Oct 2003 A1
20030195990 Greenblat et al. Oct 2003 A1
20030196076 Zabarski et al. Oct 2003 A1
20030204616 Billhartz et al. Oct 2003 A1
20030211842 Kempf et al. Nov 2003 A1
20030231647 Petrovykh Dec 2003 A1
20030233276 Pearlman et al. Dec 2003 A1
20040008635 Nelson et al. Jan 2004 A1
20040011690 Marfino et al. Jan 2004 A1
20040044953 Watkins et al. Mar 2004 A1
20040052349 Creamer et al. Mar 2004 A1
20040071275 Bowater et al. Apr 2004 A1
20040101122 Da Palma et al. May 2004 A1
20040102182 Reith et al. May 2004 A1
20040117788 Karaoguz et al. Jun 2004 A1
20040136324 Steinberg et al. Jul 2004 A1
20040165569 Sweatman et al. Aug 2004 A1
20040172482 Weissman et al. Sep 2004 A1
20040199572 Hunt et al. Oct 2004 A1
20040205101 Radhakrishnan Oct 2004 A1
20040205689 Ellens et al. Oct 2004 A1
20040213400 Golitsin et al. Oct 2004 A1
20040216058 Chavers et al. Oct 2004 A1
20040218748 Fisher Nov 2004 A1
20040228469 Andrews et al. Nov 2004 A1
20040236696 Aoki et al. Nov 2004 A1
20040240649 Goel Dec 2004 A1
20050005109 Castaldi et al. Jan 2005 A1
20050005200 Matenda et al. Jan 2005 A1
20050010483 Ling Jan 2005 A1
20050015505 Kruis et al. Jan 2005 A1
20050021626 Prajapat et al. Jan 2005 A1
20050025303 Hostetler, Jr. Feb 2005 A1
20050038772 Colrain Feb 2005 A1
20050043952 Sharma et al. Feb 2005 A1
20050047579 Salame Mar 2005 A1
20050060411 Coulombe et al. Mar 2005 A1
20050083907 Fishler Apr 2005 A1
20050091336 Dehamer et al. Apr 2005 A1
20050091572 Gavrilescu et al. Apr 2005 A1
20050108770 Karaoguz et al. May 2005 A1
20050125251 Berger et al. Jun 2005 A1
20050125739 Thompson et al. Jun 2005 A1
20050128961 Miloslavsky et al. Jun 2005 A1
20050135578 Ress et al. Jun 2005 A1
20050141500 Bhandari et al. Jun 2005 A1
20050147088 Bao et al. Jul 2005 A1
20050177635 Schmidt et al. Aug 2005 A1
20050181835 Lau et al. Aug 2005 A1
20050198292 Duursma et al. Sep 2005 A1
20050228680 Malik Oct 2005 A1
20050238153 Chevalier Oct 2005 A1
20050240659 Taylor Oct 2005 A1
20050243977 Creamer et al. Nov 2005 A1
20050246176 Creamer et al. Nov 2005 A1
20050286496 Malhotra et al. Dec 2005 A1
20050289222 Sahim Dec 2005 A1
20060008065 Longman et al. Jan 2006 A1
20060008073 Yoshizawa et al. Jan 2006 A1
20060008256 Khedouri et al. Jan 2006 A1
20060015467 Morken et al. Jan 2006 A1
20060021004 Moran et al. Jan 2006 A1
20060023676 Whitmore et al. Feb 2006 A1
20060047666 Bedi et al. Mar 2006 A1
20060067506 Flockhart et al. Mar 2006 A1
20060080415 Tu Apr 2006 A1
20060098624 Morgan et al. May 2006 A1
20060129638 Deakin Jun 2006 A1
20060143007 Koh et al. Jun 2006 A1
20060146792 Ramachandran et al. Jul 2006 A1
20060146802 Baldwin et al. Jul 2006 A1
20060168334 Potti et al. Jul 2006 A1
20060203979 Jennings Sep 2006 A1
20060209695 Archer, Jr. et al. Sep 2006 A1
20060212865 Vincent et al. Sep 2006 A1
20060215824 Mitby et al. Sep 2006 A1
20060217823 Hussey Sep 2006 A1
20060217978 Mitby et al. Sep 2006 A1
20060222166 Ramakrishna et al. Oct 2006 A1
20060235715 Abrams et al. Oct 2006 A1
20060256816 Yarlagadda et al. Nov 2006 A1
20060262915 Marascio et al. Nov 2006 A1
20060270386 Yu et al. Nov 2006 A1
20060285489 Francisco et al. Dec 2006 A1
20070002744 Mewhinney et al. Jan 2007 A1
20070036143 Alt et al. Feb 2007 A1
20070038499 Margulies et al. Feb 2007 A1
20070043681 Morgan et al. Feb 2007 A1
20070050306 McQueen Mar 2007 A1
20070064672 Raghav et al. Mar 2007 A1
20070070906 Thakur Mar 2007 A1
20070070980 Phelps et al. Mar 2007 A1
20070071223 Lee et al. Mar 2007 A1
20070074174 Thornton Mar 2007 A1
20070088836 Tai et al. Apr 2007 A1
20070091907 Seshadri et al. Apr 2007 A1
20070107048 Halls et al. May 2007 A1
20070112574 Greene May 2007 A1
20070116191 Bermudez et al. May 2007 A1
20070121651 Casey et al. May 2007 A1
20070127691 Lert Jun 2007 A1
20070127703 Siminoff Jun 2007 A1
20070130260 Weintraub et al. Jun 2007 A1
20070133771 Stifelman et al. Jun 2007 A1
20070147351 Dietrich et al. Jun 2007 A1
20070149166 Turcotte et al. Jun 2007 A1
20070153711 Dykas et al. Jul 2007 A1
20070167170 Fitchett et al. Jul 2007 A1
20070192629 Saito Aug 2007 A1
20070201448 Baird et al. Aug 2007 A1
20070208862 Fox et al. Sep 2007 A1
20070232284 Mason et al. Oct 2007 A1
20070239761 Baio et al. Oct 2007 A1
20070242626 Altberg et al. Oct 2007 A1
20070255828 Paradise Nov 2007 A1
20070265073 Novi et al. Nov 2007 A1
20070286180 Marquette et al. Dec 2007 A1
20070291734 Bhatia et al. Dec 2007 A1
20070291905 Halliday et al. Dec 2007 A1
20070293200 Roundtree et al. Dec 2007 A1
20070295803 Levine et al. Dec 2007 A1
20080005275 Overton et al. Jan 2008 A1
20080025320 Bangalore et al. Jan 2008 A1
20080037715 Prozeniuk et al. Feb 2008 A1
20080037746 Dufrene et al. Feb 2008 A1
20080040484 Yardley Feb 2008 A1
20080049617 Grice et al. Feb 2008 A1
20080052395 Wright et al. Feb 2008 A1
20080091843 Kulkarni Apr 2008 A1
20080101571 Harlow et al. May 2008 A1
20080104348 Kabzinski et al. May 2008 A1
20080120702 Hokimoto May 2008 A1
20080123559 Haviv et al. May 2008 A1
20080134049 Gupta et al. Jun 2008 A1
20080139166 Agarwal et al. Jun 2008 A1
20080146268 Gandhi et al. Jun 2008 A1
20080152101 Griggs Jun 2008 A1
20080154601 Stifelman et al. Jun 2008 A1
20080155029 Helbling et al. Jun 2008 A1
20080162482 Ahern et al. Jul 2008 A1
20080165708 Moore et al. Jul 2008 A1
20080172404 Cohen Jul 2008 A1
20080177883 Hanai et al. Jul 2008 A1
20080192736 Jabri et al. Aug 2008 A1
20080201426 Darcie Aug 2008 A1
20080209050 Li Aug 2008 A1
20080212945 Khedouri et al. Sep 2008 A1
20080222656 Lyman Sep 2008 A1
20080229421 Hudis et al. Sep 2008 A1
20080232574 Baluja et al. Sep 2008 A1
20080235230 Maes Sep 2008 A1
20080256224 Kaji et al. Oct 2008 A1
20080275741 Loeffen Nov 2008 A1
20080307436 Hamilton Dec 2008 A1
20080310599 Purnadi et al. Dec 2008 A1
20080313318 Vermeulen et al. Dec 2008 A1
20080316931 Qiu et al. Dec 2008 A1
20080317222 Griggs et al. Dec 2008 A1
20080317232 Couse et al. Dec 2008 A1
20080317233 Rey et al. Dec 2008 A1
20090046838 Andreasson Feb 2009 A1
20090052437 Taylor et al. Feb 2009 A1
20090052641 Taylor et al. Feb 2009 A1
20090059894 Jackson et al. Mar 2009 A1
20090063502 Coimbatore et al. Mar 2009 A1
20090074159 Goldfarb et al. Mar 2009 A1
20090075684 Cheng et al. Mar 2009 A1
20090083155 Tudor et al. Mar 2009 A1
20090089165 Sweeney Apr 2009 A1
20090089352 Davis et al. Apr 2009 A1
20090089699 Saha et al. Apr 2009 A1
20090092674 Ingram et al. Apr 2009 A1
20090093250 Jackson et al. Apr 2009 A1
20090094674 Schwartz et al. Apr 2009 A1
20090125608 Werth et al. May 2009 A1
20090129573 Gavan et al. May 2009 A1
20090136011 Goel May 2009 A1
20090170496 Bourque Jul 2009 A1
20090171659 Pearce et al. Jul 2009 A1
20090171669 Engelsma et al. Jul 2009 A1
20090171752 Galvin et al. Jul 2009 A1
20090182896 Patterson et al. Jul 2009 A1
20090193433 Maes Jul 2009 A1
20090216835 Jain et al. Aug 2009 A1
20090217293 Wolber et al. Aug 2009 A1
20090220057 Waters Sep 2009 A1
20090221310 Chen et al. Sep 2009 A1
20090222341 Belwadi et al. Sep 2009 A1
20090225748 Taylor Sep 2009 A1
20090225763 Forsberg et al. Sep 2009 A1
20090228868 Drukman et al. Sep 2009 A1
20090232289 Drucker et al. Sep 2009 A1
20090234965 Viveganandhan et al. Sep 2009 A1
20090235349 Lai et al. Sep 2009 A1
20090241135 Wong et al. Sep 2009 A1
20090252159 Lawson et al. Oct 2009 A1
20090262725 Chen et al. Oct 2009 A1
20090276771 Nickolov et al. Nov 2009 A1
20090282036 Fedtke Nov 2009 A1
20090288012 Hertel et al. Nov 2009 A1
20090288165 Qiu et al. Nov 2009 A1
20090300194 Ogasawara Dec 2009 A1
20090316687 Kruppa Dec 2009 A1
20090318112 Vasten Dec 2009 A1
20090319588 Gandhi Dec 2009 A1
20100027531 Kurashima Feb 2010 A1
20100037204 Lin et al. Feb 2010 A1
20100054142 Moiso et al. Mar 2010 A1
20100070424 Monk Mar 2010 A1
20100071053 Ansari et al. Mar 2010 A1
20100082513 Liu Apr 2010 A1
20100087215 Gu et al. Apr 2010 A1
20100088187 Courtney et al. Apr 2010 A1
20100088698 Krishnamurthy Apr 2010 A1
20100094758 Chamberlain et al. Apr 2010 A1
20100103845 Ulupinar et al. Apr 2010 A1
20100107222 Glasser Apr 2010 A1
20100115041 Hawkins et al. May 2010 A1
20100138501 Clinton et al. Jun 2010 A1
20100142516 Lawson et al. Jun 2010 A1
20100150139 Lawson et al. Jun 2010 A1
20100167689 Sepehri-Nik et al. Jul 2010 A1
20100188979 Thubert et al. Jul 2010 A1
20100191915 Spencer Jul 2010 A1
20100208881 Kawamura Aug 2010 A1
20100217837 Ansari et al. Aug 2010 A1
20100217982 Brown et al. Aug 2010 A1
20100232594 Lawson et al. Sep 2010 A1
20100235539 Carter et al. Sep 2010 A1
20100250946 Korte et al. Sep 2010 A1
20100251329 Wei Sep 2010 A1
20100251340 Martin et al. Sep 2010 A1
20100265825 Blair et al. Oct 2010 A1
20100281108 Cohen Nov 2010 A1
20100291910 Sanding et al. Nov 2010 A1
20100299437 Moore Nov 2010 A1
20100312919 Lee et al. Dec 2010 A1
20100332852 Vembu et al. Dec 2010 A1
20110026516 Roberts et al. Feb 2011 A1
20110029882 Jaisinghani Feb 2011 A1
20110029981 Jaisinghani Feb 2011 A1
20110053555 Cai et al. Mar 2011 A1
20110078278 Cui et al. Mar 2011 A1
20110081008 Lawson et al. Apr 2011 A1
20110083069 Paul et al. Apr 2011 A1
20110083179 Lawson et al. Apr 2011 A1
20110093516 Geng et al. Apr 2011 A1
20110096673 Stevenson et al. Apr 2011 A1
20110110366 Moore et al. May 2011 A1
20110131293 Mori Jun 2011 A1
20110138453 Verma et al. Jun 2011 A1
20110143714 Keast et al. Jun 2011 A1
20110145049 Hertel et al. Jun 2011 A1
20110149810 Koren et al. Jun 2011 A1
20110149950 Petit-Huguenin et al. Jun 2011 A1
20110151884 Zhao Jun 2011 A1
20110158235 Senga Jun 2011 A1
20110167172 Roach et al. Jul 2011 A1
20110170505 Rajasekar et al. Jul 2011 A1
20110176537 Lawson et al. Jul 2011 A1
20110179126 Wetherell et al. Jul 2011 A1
20110211679 Mezhibovsky et al. Sep 2011 A1
20110251921 Kassaei et al. Oct 2011 A1
20110253693 Lyons et al. Oct 2011 A1
20110255675 Jasper et al. Oct 2011 A1
20110258432 Rao et al. Oct 2011 A1
20110265168 Lucovsky et al. Oct 2011 A1
20110265172 Sharma Oct 2011 A1
20110267985 Wilkinson et al. Nov 2011 A1
20110274111 Narasappa et al. Nov 2011 A1
20110276892 Jensen-Horne et al. Nov 2011 A1
20110276951 Jain Nov 2011 A1
20110277034 Hanson Nov 2011 A1
20110280390 Lawson et al. Nov 2011 A1
20110283259 Lawson et al. Nov 2011 A1
20110289126 Aikas et al. Nov 2011 A1
20110289162 Furlong et al. Nov 2011 A1
20110299672 Chiu et al. Dec 2011 A1
20110310902 Xu Dec 2011 A1
20110313950 Nuggehalli et al. Dec 2011 A1
20110320449 Gudlavenkatasiva Dec 2011 A1
20110320550 Lawson et al. Dec 2011 A1
20120000903 Baarman et al. Jan 2012 A1
20120011274 Moreman Jan 2012 A1
20120017222 May Jan 2012 A1
20120023531 Meuninck et al. Jan 2012 A1
20120023544 Li et al. Jan 2012 A1
20120027228 Rijken et al. Feb 2012 A1
20120028602 Lisi et al. Feb 2012 A1
20120036574 Heithcock et al. Feb 2012 A1
20120039202 Song Feb 2012 A1
20120059709 Lieberman et al. Mar 2012 A1
20120079066 Li et al. Mar 2012 A1
20120083266 Vanswol et al. Apr 2012 A1
20120089572 Raichstein et al. Apr 2012 A1
20120094637 Jeyaseelan et al. Apr 2012 A1
20120101952 Raleigh et al. Apr 2012 A1
20120110564 Ran et al. May 2012 A1
20120114112 Rauschenberger et al. May 2012 A1
20120149404 Beattie et al. Jun 2012 A1
20120166488 Kaushik et al. Jun 2012 A1
20120170726 Schwartz Jul 2012 A1
20120173610 Bleau et al. Jul 2012 A1
20120174095 Natchadalingam et al. Jul 2012 A1
20120179646 Hinton et al. Jul 2012 A1
20120179907 Byrd et al. Jul 2012 A1
20120180021 Byrd et al. Jul 2012 A1
20120180029 Hill et al. Jul 2012 A1
20120185561 Klein et al. Jul 2012 A1
20120198004 Watte Aug 2012 A1
20120201238 Lawson et al. Aug 2012 A1
20120208495 Lawson et al. Aug 2012 A1
20120221603 Kothule et al. Aug 2012 A1
20120226579 Ha et al. Sep 2012 A1
20120239757 Firstenberg et al. Sep 2012 A1
20120240226 Li Sep 2012 A1
20120246273 Bornstein et al. Sep 2012 A1
20120254828 Aiylam et al. Oct 2012 A1
20120265805 Samdadiya Oct 2012 A1
20120266258 Tuchman et al. Oct 2012 A1
20120281536 Gell et al. Nov 2012 A1
20120288082 Segall Nov 2012 A1
20120290706 Lin et al. Nov 2012 A1
20120304245 Lawson et al. Nov 2012 A1
20120304275 Ji et al. Nov 2012 A1
20120316809 Egolf et al. Dec 2012 A1
20120321058 Eng et al. Dec 2012 A1
20120321070 Smith et al. Dec 2012 A1
20130029629 Lindholm et al. Jan 2013 A1
20130031158 Salsburg Jan 2013 A1
20130031613 Shanabrook et al. Jan 2013 A1
20130036476 Roever et al. Feb 2013 A1
20130047232 Tuchman et al. Feb 2013 A1
20130054517 Beechuk et al. Feb 2013 A1
20130054684 Brazier et al. Feb 2013 A1
20130058262 Parreira Mar 2013 A1
20130067232 Cheung et al. Mar 2013 A1
20130067448 Sannidhanam et al. Mar 2013 A1
20130097298 Ting et al. Apr 2013 A1
20130110658 Lyman May 2013 A1
20130132573 Lindblom May 2013 A1
20130139148 Berg et al. May 2013 A1
20130156024 Burg Jun 2013 A1
20130166580 Maharajh et al. Jun 2013 A1
20130179942 Caplis et al. Jul 2013 A1
20130201909 Bosch et al. Aug 2013 A1
20130204786 Mattes et al. Aug 2013 A1
20130212603 Cooke et al. Aug 2013 A1
20130244632 Spence et al. Sep 2013 A1
20130268676 Martins et al. Oct 2013 A1
20130325934 Fausak et al. Dec 2013 A1
20130328997 Desai Dec 2013 A1
20130336472 Fahlgren et al. Dec 2013 A1
20140013400 Warshavsky et al. Jan 2014 A1
20140025503 Meyer et al. Jan 2014 A1
20140058806 Guenette et al. Feb 2014 A1
20140064467 Lawson et al. Mar 2014 A1
20140072115 Makagon et al. Mar 2014 A1
20140073291 Hildner et al. Mar 2014 A1
20140095627 Romagnino Apr 2014 A1
20140101058 Castel et al. Apr 2014 A1
20140101149 Winters et al. Apr 2014 A1
20140105372 Nowack et al. Apr 2014 A1
20140106704 Cooke et al. Apr 2014 A1
20140122600 Kim et al. May 2014 A1
20140123187 Reisman May 2014 A1
20140126715 Lum et al. May 2014 A1
20140129363 Lorah et al. May 2014 A1
20140153565 Lawson et al. Jun 2014 A1
20140185490 Holm et al. Jul 2014 A1
20140254600 Shibata et al. Sep 2014 A1
20140258481 Lundell Sep 2014 A1
20140269333 Boerjesson Sep 2014 A1
20140274086 Boerjesson et al. Sep 2014 A1
20140282473 Saraf et al. Sep 2014 A1
20140289391 Balaji et al. Sep 2014 A1
20140304054 Orun et al. Oct 2014 A1
20140317640 Harm et al. Oct 2014 A1
20140355600 Lawson et al. Dec 2014 A1
20140372508 Fausak et al. Dec 2014 A1
20140372509 Fausak et al. Dec 2014 A1
20140372510 Fausak et al. Dec 2014 A1
20140373098 Fausak et al. Dec 2014 A1
20140379670 Kuhr Dec 2014 A1
20150004932 Kim et al. Jan 2015 A1
20150004933 Kim et al. Jan 2015 A1
20150023251 Giakoumelis et al. Jan 2015 A1
20150026477 Malatack et al. Jan 2015 A1
20150066865 Yara et al. Mar 2015 A1
20150081918 Nowack et al. Mar 2015 A1
20150082378 Collison Mar 2015 A1
20150100634 He et al. Apr 2015 A1
20150119050 Liao et al. Apr 2015 A1
20150181631 Lee et al. Jun 2015 A1
20150236905 Bellan et al. Aug 2015 A1
20150281294 Nur et al. Oct 2015 A1
20150365480 Soto et al. Dec 2015 A1
20150370788 Bareket et al. Dec 2015 A1
20150372889 Nowack et al. Dec 2015 A1
20150381580 Graham, III et al. Dec 2015 A1
20160001758 Sugio Jan 2016 A1
20160011758 Dornbush et al. Jan 2016 A1
20160028695 Binder Jan 2016 A1
20160077693 Meyer et al. Mar 2016 A1
20160112475 Lawson et al. Apr 2016 A1
20160112521 Lawson et al. Apr 2016 A1
20160119291 Zollinger et al. Apr 2016 A1
20160127254 Kumar et al. May 2016 A1
20160149956 Birnbaum et al. May 2016 A1
20160162172 Rathod Jun 2016 A1
20160205519 Patel et al. Jul 2016 A1
20160226937 Patel et al. Aug 2016 A1
20160226979 Lancaster et al. Aug 2016 A1
20160234391 Wolthuis et al. Aug 2016 A1
20160239770 Batabyal et al. Aug 2016 A1
20170339283 Chaudhary et al. Nov 2017 A1
20180069772 Nowack et al. Mar 2018 A1
20200153717 Nowack et al. May 2020 A1
Foreign Referenced Citations (20)
Number Date Country
1684587 Mar 1971 DE
0282126 Sep 1988 EP
1464418 Oct 2004 EP
1522922 Apr 2005 EP
1770586 Apr 2007 EP
2053869 Apr 2009 EP
2134107 Sep 1999 ES
10294788 Nov 1998 JP
2004166000 Jun 2004 JP
2004220118 Aug 2004 JP
2006319914 Nov 2006 JP
WO-9732448 Sep 1997 WO
WO-2002087804 Nov 2002 WO
WO-2006037492 Apr 2006 WO
WO-2009018489 Feb 2009 WO
WO-2009124223 Oct 2009 WO
WO-2010037064 Apr 2010 WO
WO-2010040010 Apr 2010 WO
WO-2010101935 Sep 2010 WO
WO-2011091085 Jul 2011 WO
Non-Patent Literature Citations (39)
Entry
“Aepona's API Monetization Platform Wins Best of 4G Awards for Mobile Cloud Enabler”, 4G World 2012 Conference & Expo, [Online]. [Accessed Nov. 5, 2015]. Retrieved from the Internet: <URL: https://www.realwire.com/releases/%20Aeponas-API-Monetization>, (Oct. 30, 2012), 4 pgs.
“U.S. Appl. No. 14/488,802, Notice of Allowance mailed May 8, 2015”, 14 pgs.
“U.S. Appl. No. 14/488,802, Response filed Feb. 25, 2015 to Restriction Requirement mailed Feb. 4, 2015”, 6 pgs.
“U.S. Appl. No. 14/488,802, Restriction Requirement mailed Feb. 4, 2015”, 9 pgs.
“U.S. Appl. No. 14/838,149, Corrected Notice of Allowance mailed Sep. 28, 2017”, 2 pgs.
“U.S. Appl. No. 14/838,149, Examiner Interview Summary mailed Aug. 8, 2017”, 3 pgs.
“U.S. Appl. No. 14/838,149, Non Final Office Action mailed May 16, 2017”, 10 pgs.
“U.S. Appl. No. 14/838,149, Notice of Allowance mailed Aug. 16, 2017”, 6 pgs.
“U.S. Appl. No. 14/838,149, Response filed Aug. 4, 2017 to Non Final Office Action mailed May 16, 2017”, 8 pgs.
“U.S. Appl. No. 15/815,403, Non Final Office Action mailed Jan. 2, 2019”, 15 pgs.
“U.S. Appl. No. 15/815,403, Notice of Allowance mailed May 20, 2019”, 8 pgs.
“U.S. Appl. No. 15/815,403, PTO Response to Rule 312 Communication mailed Sep. 4, 2019”, 2 pgs.
“U.S. Appl. No. 15/815,403, Response filed May 6, 2019 to Non Final Office Action mailed Jan. 2, 2019”, 11 pgs.
“U.S. Appl. No. 16/545,479, Examiner Interview Summary mailed Jun. 28, 2021”, 2 pgs.
“U.S. Appl. No. 16/545,479, Examiner Interview Summary mailed Sep. 29, 2021”, 2 pgs.
“U.S. Appl. No. 16/545,479, Final Office Action mailed Apr. 26, 2021”, 15 pgs.
“U.S. Appl. No. 16/545,479, Final Office Action mailed Dec. 29, 2021”, 11 pgs.
“U.S. Appl. No. 16/545,479, Non Final Office Action mailed May 11, 2022”, 11 pgs.
“U.S. Appl. No. 16/545,479, Non Final Office Action mailed Jul. 7, 2021”, 11 pgs.
“U.S. Appl. No. 16/545,479, Non Final Office Action mailed Oct. 26, 2020”, 15 pgs.
“U.S. Appl. No. 16/545,479, Notice of Allowance mailed Sep. 1, 2022”, 7 pgs.
“U.S. Appl. No. 16/545,479, Preliminary Amendment filed Feb. 18, 2020”, 7 pgs.
“U.S. Appl. No. 16/545,479, Response filed Jan. 26, 2021 to Non Final Office Action mailed Oct. 26, 2020”, 14 pgs.
“U.S. Appl. No. 16/545,479, Response filed Feb. 23, 2022 to Final Office Action mailed Dec. 29, 2021”, 11 pgs.
“U.S. Appl. No. 16/545,479, Response filed Jun. 25, 2021 to Final Office Action mailed Apr. 26, 2021”, 14 pgs.
“U.S. Appl. No. 16/545,479, Response filed Aug. 9, 2022 to Non Final Office Action mailed May 11, 2022”, 11 pgs.
“U.S. Appl. No. 16/545,479, Response filed Sep. 29, 2021 to Non Final Office Action mailed Jul. 7, 2021”, 12 pgs.
“Archive Microsoft Office 365 Email I Retain Unified Archiving”, GWAVA, Inc., Montreal, Canada, [Online] Retrieved from the Internet: <URL: http://www.gwava.com/Retain/Retain for_Office_365.php>, (2015), 4 pgs.
“Complaint for Patent Infringement”, Telinit Technologies, LLC v. Twilio Inc 2:12-cv-663, (Oct. 12, 2012), 17 pgs.
“Ethernet to Token Ring Bridge”, Black Box Corporation, [Online] Retrieved from the Internet: <URL: http://blackboxcanada.com/resource/files/productdetails/17044.pdf>, (Oct. 1999), 2 pgs.
“Twilio Cloud Communications—APIs for Voice, VoIP, and Text Messaging”, Twilio, [Online] Retrieved from the Internet: <URL: http://www.twilio.com/docs/api/rest/call-feedback>, (Jun. 24, 2015), 8 pgs.
Abu-Lebdeh, et al., “A 3GPP Evolved Packet Core-Based Architecture for QoS-Enabled Mobile Video Surveillance Applications”, 2012 Third International Conference on the Network of the Future {NOF), (Nov. 21-23, 2012), 1-6.
Barakovic, Sabina, et al., “Survey and Challenges of QoE Management Issues in Wireless Networks”, Hindawi Publishing Corporation, (2012), 1-29.
Berners-Lee, T., “RFC 3986: Uniform Resource Identifier (URI): Generic Syntax”, The Internet Society, [Online]. Retrieved from the Internet: <URL: http://tools.ietf.org/html/rfc3986>, (Jan. 2005), 57 pgs.
Kim, Hwa-Jong, et al., “In-Service Feedback QoE Framework”, 2010 Third International Conference on Communication Theory. Reliability and Quality of Service, (2010), 135-138.
Matos, et al., “Quality of Experience-based Routing in Multi-Service Wireless Mesh Networks”, Realizing Advanced Video Optimized Wireless Networks. IEEE, (2012), 7060-7065.
Mu, Mu, et al., “Quality Evaluation in Peer-to-Peer IPTV Services”, Data Traffic and Monitoring Analysis, LNCS 7754, 302-319, (2013), 18 pgs.
Subramanya, et al., “Digital Signatures”, IEEE Potentials, (Mar./Apr. 2006), 5-8.
Tran, et al., “User to User adaptive routing based on QoE”, ICNS 2011: The Seventh International Conference on Networking and Services, (2011), 170-177.
Related Publications (1)
Number Date Country
20230089410 A1 Mar 2023 US
Provisional Applications (1)
Number Date Country
61879023 Sep 2013 US
Continuations (4)
Number Date Country
Parent 16545479 Aug 2019 US
Child 17994736 US
Parent 15815403 Nov 2017 US
Child 16545479 US
Parent 14838149 Aug 2015 US
Child 15815403 US
Parent 14488802 Sep 2014 US
Child 14838149 US