A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present disclosure relates, in general, to computer networks, and more particularly, to tools and techniques for providing customers of an Internet service provider with enhanced monitoring and control over their Internet connections.
Broadband Internet access has become nearly ubiquitous in most industrialized countries. Broadband providers employ a variety of technologies, including without limitation digital subscriber line (“xDSL”) technologies, cable more (e.g., “DOCSIS”) technologies, wireless broadband technologies, and the like. In most cases, broadband access is offered using a tiered structure, in which the subscriber (referred to herein as a “customer”) receives a certain allocated bandwidth in return for a given fee (such as a monthly flat fee).
As customer applications have grown in both scope and sophistication, the requirements imposed on broadband access have grown. For example, many voice over Internet protocol (“VoIP”) telephony applications requires threshold levels of throughput and/or latency to provide acceptable performance. Similarly, video on demand applications and/or network games impose requirements on throughput and/or latency. Notably, different applications often will impose different requirements for throughput and latency, respectively. For instance, a video on demand might not require particularly low network latency but might require relatively high throughput. Conversely, a network game might not require particularly high throughput but might require relatively low latency. VoIP telephony might require relatively constant (although not particularly high) throughput and relatively low latency.
To address these different needs, providers, in many cases, have implemented quality of service (“QoS”) features into the broadband access they provide. One type of QoS feature commonly implemented is the distinction between multiple classes of service to provide traffic prioritization between different types of network traffic received by the access network from a customer premises. Currently, however, providers lack adequate facilities to provide customer feedback regarding network performance and utilization, even though the customer might know the capacity it has agreed to purchase from the provider. For example, if a customer purchases generic Internet access for a multiple-computer home network, neither the customer nor any individual computer attached to the home network has any ide of the amount of composite network traffic between the customer's Internet Service and the access network. Moreover, when multiple classes of service are provided to the customer premises, the customer is provided with little (or no) feedback on how those classes of service affect the capacity of the customer's broadband connection.
Further, most or all of the traffic on customer's broadband connection is typically Internet protocol (“IP”) traffic, and all such traffic shares the customer's purchased bandwidth. Given that IP protocols are generally designed to share the available bandwidth and ‘adjust” to each other, when a congestion event occurs all the traffic using that same class of service, or a lower class, experiences congestion. In other words, there is no concept of “busy” or in use status when it comes to IP protocols today. The fact that no single customer device sees all the composite traffic flow makes this a very difficult problem for the customer or provider to address.
Thus, there is a need for improved visibility into a customer's utilization of a provider's access network (and the customer's broadband connection thereto).
Certain embodiments, therefore, provide tools and techniques to give a customer greater visibility into network performance and/or utilization, particularly with respect to the customer's broadband connection to a provider's access network (and/or the Internet more generally). Merely by way of example, some embodiments can track the amount of bandwidth (capacity) assigned to each class of service on a customer's broadband connection, and/or the bandwidth available to each of the devices on the customer's premises network. These values can be used as inputs to a state machine that governs the use of the broadband connection.
Other embodiments might track the utilized throughput in each class of service (or overall) through the broadband connection and/or to each customer device. Similarly, some embodiments might track the utilized state at a residential gateway and/or various points in the access network and serve as a signaling point for customer applications (or customers themselves) to determine the line state of their connection and/or devices. In some cases, for example, an embodiment might provide an API for applications to access the signaling point. In other cases, an embodiment might employ a user interface to allow the customer himself or herself to view the line state.
Merely by way of example, a signaling point might track throughput at either end of the access network, and/or at the residential gateway and one or more customer devices. The signaling point might provide alarms for packet loss conditions and/or busy indicators, which can serve as a “busy signal” for the customer and/or any applications, to let the application/customer know whether there is sufficient bandwidth available to start another network session or if the customer's WiFi connection has degraded (or been consumed) to a point where it will experience congestion. Customer applications might be configured to communicate with the signaling point to obtain network performance and/or utilization information. This functionality can enable near-real-time utilization and/performance reporting, along with visual feedback, on network conditions (including packet loss conditions) with respect to the customer's broadband connection and/or premises network, either overall or for particular classes of service.
In some cases, a signaling point might be implemented at a residential gateway and/or a network interface device. Such devices can include, without limitation, broadband modems, interfaces between the customer's premises network and the access network, and/or the like. In other cases, a signaling point might be located in the access network itself, and/or it might be configured to communicate with a customer's residential gateway, network interface device, and/or any customer devices on the customer premises network.
The tools provided by various embodiments include, without limitation, methods, systems, and/or software products. Merely by way of example, a method might comprise one or more procedures, any or all of which are executed by a computer system. Correspondingly, an embodiment might provide a computer system configured with instructions to perform one or more procedures in accordance with methods provided by various other embodiments. Similarly, a computer program might comprise a set of instructions that are executable by a computer system (and/or a processor therein) to perform such operations. In many cases, such software programs are encoded on physical, tangible and/or non-transitory computer readable media (such as, to name but a few examples, optical media, magnetic media, and/or the like).
For example, one set of embodiments provide customer service points that can provide customers with monitoring and control over network settings. An exemplary customer service point might comprise a first communication interface, a second communication interface, and/or one or more processors in communication with the first and second communication interfaces. The customer service point might further comprise a computer readable medium in communication with the one or more processors. The computer readable medium, in an aspect, might have encoded thereon a set of instructions executable by the computer system to perform one or more operations.
In an exemplary embodiment, the set of instructions might comprise instructions for communicating with the Internet via the first communication interface, and/or instructions for communicating with the customer device via the second communication interface. The set of instructions can also include instructions for maintaining a class of service state for a connection between the customer device and the Internet, instructions for receiving, from the customer, configuration information for configuring the class of service state, and/or instructions for modifying the class of service state in response to receiving the configuration information. In some cases, the set of instructions further comprises instructions for determining one or more network performance statistics pertaining to network performance between the customer device and at least one other network point, and/or instructions for providing, to the customer, the one or more network performance statistics.
A method, in accordance with another set of embodiments, might comprise maintaining, at a customer service point, a class of service state for a connection between a customer device and the Internet. In some cases, the customer service point might comprise a processor, a first communication interface, and a second communication interface; the customer device might be in communication with the first communication interface and the Internet might be in communication with the second communication interface. The method might further comprise receiving, from the customer, configuration information for configuring the class of service state, and/or modifying the class of service state in response to receiving the configuration information.
An apparatus, in accordance with yet another set of embodiments, might comprise a computer readable medium having encoded thereon a set of instructions for causing a customer service point to perform one or more operations. In an aspect, the customer service point might comprise a processor, a first communication interface, and/or a second communication interface. The customer service point might maintain a class of service state between a connection between a customer device in communication with the first communication interface and the Internet in communication with the second communication interface. The set of instructions might be executable by the processor, and/or might comprise instructions for determining one or more network performance statistics pertaining to network performance between the customer device and at least one other network point. The set of instructions might further comprise instructions for providing, to the customer, the one or more network performance statistics.
A further understanding of the nature and advantages of particular embodiments may be realized by reference to the remaining portions of the specification and the drawings, in which like reference numerals are used to refer to similar components. In some instances, a sub-label is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components.
While various aspects and features of certain embodiments have been summarized above, the following detailed description illustrates a few exemplary embodiments in further detail to enable one of skill in the art to practice such embodiments. The described examples are provided for illustrative purposes and are not intended to limit the scope of the invention.
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the described embodiments. It will be apparent to one skilled in the art, however, that other embodiments of the present may be practiced without some of these specific details. In other instances, certain structures and devices are shown in block diagram form. Several embodiments are described herein, and while various features are ascribed to different embodiments, it should be appreciated that the features described with respect to one embodiment may be incorporated with other embodiments as well. By the same token, however, no single feature or features of any described embodiment should be considered essential to every embodiment of the invention, as other embodiments of the invention may omit such features.
Unless otherwise indicated, all numbers used herein to express quantities, dimensions, and so forth used should be understood as being modified in all instances by the term “about.” In this application, the use of the singular includes the plural unless specifically stated otherwise, and use of the terms “and” and “or” means “and/or” unless otherwise indicated. Moreover, the use of the term “including,” as well as other forms, such as “includes” and “included,” should be considered non-exclusive. Also, terms such as “element” or “component” encompass both elements and components comprising one unit and elements and components that comprise more than one unit, unless specifically stated otherwise.
One set of embodiments provides tools and techniques to give a customer greater visibility into network performance and/or utilization, particularly with respect to the customer's broadband connection to a provider's access network (and/or the Internet more generally). Certain of these tools and techniques can allow a user to view statistics (in real-time or near-real-time) about the utilization and/or performance of the customer's broadband connection (which can include, without limitation, the connection between the customer's premises and the providers access network, the access network itself, and/or the connection between the access network and the Internet. In this way, a customer not only can control various aspects of the connection, but can also see where any throughput bottlenecks might be occurring (if, for example, the customer is experiencing subpar download speeds from the Internet).
It should be understood that utilization changes over a time period, therefore some form mathematical utilization state representation is used to characterize the usage, and or usage change of the resource pool. Typically this is accomplished through the use of averaging and sliding window observation method, also assumed are the statistical and mathematical characterizations such as average, maximum, minimum, and change indicators such as the first and second derivate of the measures from period to period. The frequency in which utilization is reported is mathematically a function of how long the utilization is observed, and it should also be understood that multiple windows of observation may occur in parallel to provide short duration, and longer duration utilization information in a parallel manner.
In addition to tracking network performance, some embodiments allow a customer active control over various aspects of the customer's broadband connection. Merely by way of example, some embodiments can track the amount of bandwidth (capacity) assigned to each class of service on a customer's broadband connection, and/or the bandwidth provided to each of the devices on the customer's premises network. These values can be used as inputs to a state machine that governs the use of the broadband connection. Additionally and/or alternatively, such embodiments can allow the customer to adjust these configuration parameters, for example, to change traffic prioritization schemes on an application-by-application basis, a protocol-by-protocol basis, a device-by-device basis, and/or the like. In this manner a customer could provide voice applications such as Vonage™ higher priorities and separate capacity resource pools as a lower priority application such as Netflix™.
One such example could consist of a “connectivity state machine” program on a residential gateway that tracks the link, provisioned service capacity, individual class of service capacities, and the utilization thereof to provide the use and capacity information feedback to the system, applications and users. It is assumed that user control is coupled to the connectivity state machines via the state machines tracking the shared IP pools of bandwidth in separate classes of service, and or links supporting those classes of service. To this end when a customer has the ability to change link, or class of service capacities, or the class of service used by an application the relevant “shared pool” capacity and utilization framework provides the connection state information back to the system, application and customer.
Similarly, some embodiments might track the utilized throughput in each class of service (or overall) through the broadband connection and/or to each customer device. Alternatively and/or additionally, some embodiments might track the utilized state at a residential gateway and/or various points in the access network and serve as a signaling point (referred to herein as a “customer service point”) for customer applications (or customers themselves) to determine the line state of their connection and/or devices. In some cases, for example, an embodiment might provide an API (or specialized real time protocol such as Diameter) for applications to access the signaling point. In other cases, an embodiment might employ a user interface to allow the customer himself or herself to view the line state in real-time or near real-time. As used herein, the term “line state” connotes any or all of a variety of types of information about the customer's broadband connection; such information can include, without limitation, the allocated capacity (e.g., in bits/second) of the connection generally and/or of any subsets of the connection, such as capacity allocated to a particular application, class of service, protocol, service, or device on the customer's network; the utilized throughput at any given point in time, either for the broadband connection generally, or specifically for any particular application, class of service, protocol, service, or device on the customer's network; the classes of service implemented over the broadband connection, including which services, protocols, applications, or devices are assigned to each class of service; network latency, e.g., between the access network and the customer service point or any device on the customer's network, between the customer service point (or a device on the customer network) and the provider's Internet drain and/or a host the customer is trying to reach; packet loss conditions, and/or the like.
Merely by way of example, a customer service point might track throughput at either end of the access network, and/or at the residential gateway and one or more customer devices. In some cases, signaling point might provide alarms to the customer (or the provider) in the event of packet loss conditions or near-congestion conditions. Such alarms can be communicated through the user interface provided by the customer service point and/or can be communicated by other appropriate techniques, such as email, text messages, and/or the like. In another set of embodiments, a customer service point can provide busy indicators, which can serve as a “busy signal” for the customer and/or any applications, to let the application/customer know whether there is sufficient bandwidth available to start another network session.
Customer applications might be configured to communicate with the signaling point to obtain network performance and/or utilization information. This functionality can enable near-real-time utilization and/performance reporting, along with visual feedback, on network conditions (including packet loss conditions) with respect to the customer's broadband connection and/or premises network, either overall or for particular classes of service. As another example, a customer application might be configured to receive a busy indicator from the customer service point and provide feedback to the customer indicating that the application is unable to begin the requested session due to current network conditions. For example, if two users are watching video on demand over the broadband connection using two different computers, a third user attempting to watch video on demand might be informed by the video player that the broadband connection currently has insufficient available capacity to allow another video on demand stream, instead of merely trying to play the stream with unacceptable performance.
A residential gateway 110 can be any device that provides connectivity between a subscriber and a provider's network. Such devices can include, without limitation, network interface devices (“NID”), broadband modems, voiceband modems, cellular modems, wireless modems and access points, routers, other interfaces between the customer's premises network and the access network, and/or the like. Typically, the residential gateway will be located at the customer's premises, but this is not required in all embodiments. The residential gateway 110 provides connectivity between a customer network 115 and an access network 120 operated by an Internet service provider (“ISP”), such as a broadband provider. The access network 120 provides, inter alia, connectivity between the customer's network 110 and the Internet 125, as is known in the art. In a typical implementation, the residential gateway 110 will have a first communication interface (e.g., a broadband interface or an uplink interface) that communicates with the access network 120 using whatever broadband technology is employed (e.g., xDSL, DOCSIS, wireless broadband, etc.) and a second (local) communication interface that that provides connectivity with one or more customer devices (e.g., an Ethernet port, 802.11x radio, etc.). In some embodiments, the residential gateway 110 might include router functionality, such that the local communication interface might provide for communication with a plurality of devices in the customer network 115 via either wired or wireless connection. In other embodiments, the residential gateway 110 might provide a single local interface, and/or local router functionality might be implemented by a separate device. The nature of the customer's network 115 topology are not material to the scope of various embodiments.
In other cases, a customer service point 105 might be located at a device (not shown on
The customer devices 130 can include any devices that are capable of network communications (and, in particular aspects, IP communications). Such devices 130 can include, without limitation a laptop 130a with wireless networking (e.g., IEEE 802.11x) capabilities, a mobile device 130b (e.g., a mobile phone, tablet computer, personal digital assistant, etc.) with wireless networking capability, a television set top box 130c, a networked personal computer 130d and/or laptop 130e, and the like. In some aspects, some (or all) of the customer devices 130 are programmed with applications 135 that access the Internet 125 (e.g., through the residential gateway 110 and/or the access network 120. Such applications can include, without limitation, web browsers 140, video on demand applications (such as Netflix™, to name one example), VoIP applications, online games, chat applications (including text chat, voice chat, and/or video chat applications), and any other type of application that requires, or can benefit from, a connection with the Internet. In some cases, as mentioned above, one or more of these applications might be configured to access the customer service point at the residential gateway 105 (or elsewhere), e.g., using an API, as described in further detail below.
While a web browser 140 can be considered, in one aspect, to be one of the applications 135 that use the Internet, the web browser 140 can also independently be used to provide a user interface to the customer service point 105 at the residential gateway 110 (or elsewhere), as described in further detail below. Thus, the customer service point 105 might be programmed with, e.g., a web server, in order to serve web pages to be displayed in a browser 140 of one or more of the devices 130 for providing the user interaction described further herein. (Of course, in some embodiments, one or more of the devices 130 might be programmed with a dedicated application that interfaces with the customer service point 105 to provide similar interaction.)
The system 100 might further comprise one or more monitoring points 145. A monitoring point 145 can be any device that is capable of measuring any metric that can be used as a network performance statistic, or that can be used to calculate or derive a network performance statistic. Merely by way of example, in some cases, a monitoring point 145 might measure throughput of network traffic (e.g., IP packets) associated with (e.g., originating from and/or directed to) a particular residential gateway 110 (and/or any subset of that traffic, such as traffic associated with a particular device 130 on the customer network 115, traffic within a particular class of service, traffic associated with a particular application 135, and/or the like). Such traffic might be upstream traffic (i.e., traffic originating from the customer network 115 or a device 130 therein), downstream traffic (i.e., traffic addressed to the customer network 115 or a device 130 therein), or both. In other cases, a monitoring point 145 might measure other values, such as utilized capacity associated with a particular customer, network latency for a particular customer's traffic (e.g., traffic associated with that customer's residential gateway 110 and/or network 115) and/or subset of that traffic, and/or the like.
In some cases, a monitoring point 145 might be a dedicated device specifically configured to monitor network traffic. Such monitoring can include, for example, deep packet inspection (“DPI”) and/or various other techniques to identify traffic, associate such traffic with a particular customer (or customer service point 105) and/or measure network metrics to compile network performance statistics. Alternatively and/or additionally, a monitoring point 145 might be implemented as another device in the network, such as traffic conditioning function, virtual interface, and or other probe function located in a NID, a switch, router, and/or the like, with additional functionality as described herein to perform the functions of a monitoring point 145.
In accordance with various embodiments, the system 100 might include one or more monitoring points 145 at various locations in the network. The locations of the monitoring point(s) 145 can be chosen so as to maximize visibility into network performance, and in some cases, the relative values of a particular metric measured at different measuring points 145 can provide insight into any performance issues. For example, in some cases, the residential gateway 110 and/or customer service point 105 itself can serve as a monitoring point 145a. The system 100 illustrated by
The functionality of the system 100 is described in further detail below, but as a general matter, the customer service point 105 is configured to obtain network performance metrics from the monitoring points 145 using any of a variety of techniques and/or communication protocols. Merely by way of example, in some cases, the customer service point 105 might poll one or more monitoring points 145 for information periodically or upon user request. In other cases, one or more of the monitoring points 145 might be configured to transmit such information to the customer service point 105 on their own initiative.
The customer service point 105 then can process the information as necessary to derive network performance statistics and/or format such information, and then provide the network performance statistics to the user, as described in further detail below. The customer service point 105 can also receive and implement any network control instructions from the user, such as assignment of applications to classes of service, and/or the like. In some cases, the customer service point 105 will communicate with one or more devices in the access network 120 (which might be, but need not necessarily be monitoring points 145), such as the residential gateway 110, a DSLAM, various routers, and/or the like, to implement the control instructions received from the user. In other cases, such as when the customer service point 105 is incorporated by the residential gateway 110, the customer service point 105 can implement the control instructions without communicating with any other devices.
At block 205, the method 200 comprises providing a customer service point. Providing a customer service point can involve one or more of a variety of operations. Merely by way of example, in some cases, providing a customer service point might comprise providing the customer with a residential gateway that functions as a customer service point. In other cases, providing a customer service point can comprise operating a customer service point in the access network, or providing communication between the access network and a residential gateway (or other device) to allow the residential gateway (or other device) to act as a customer service point (or an interface thereto).
The method 200 further comprises communicating with the Internet (block 210) and communicating with one or more customer devices (block 215). Merely by way of example, in a particular set of embodiments, a residential gateway (which might incorporate a customer service point) might communicate with both the Internet (e.g., via the ISP access network) and a customer device, to provide connectivity between the customer device and the Internet, thereby serving as the interface between the customer and the customer's broadband connection. In an aspect, the residential gateway might have a first communication interface (e.g., an uplink port) that communicates with the Internet and a second communication interface (e.g., a wireless radio, one or more downlink ports, etc.) that communicate with a customer network, and/or one or more customer devices. The residential gateway, then, can transmit on one interface the information (e.g., IP packets) received on the other interface. In one aspect, as the information passes through the residential gateway, the residential gateway, acting as the customer service point, can perform any monitoring and/or impose any transmission control, required by the customer service point configuration. (It should be noted, of course, that such monitoring and control can also be performed at other devices, such as a DSLAM and/or a router in the access network.)
At block 220, the method comprises maintaining a class of service state. In a particular embodiment, the customer service point maintains this class of service state. Merely by way of example, as noted above, the customer service point can operate as a state machine that tracks and/or controls the line state of the customer's broadband connection. For instance, the customer service point might maintain information about various classes of service implemented by the customer for traffic traveling over the broadband connection. The residential gateway, in turn, can enforce these classes of service when transmitting data over the broadband connection.
The class of service state can include any of a variety network configuration parameters and/or network performance statistics. Merely by way of example, in some cases, the class of service state might include network usage information, such as which customer devices, classes of service, and/or applications are communicating over the broadband connection, and/or how much of the bandwidth is assigned to (i.e., allocated to), and/or used by, each of these customer devices, classes of service, and/or application. Alternatively and/or additionally, the class of service state might include class of service associations of one or more of the applications and/or customer devices (i.e., to which class of service a particular application/customer devices is assigned).
Maintaining the class of service state can comprise a variety of operations. Merely by way of example, as noted above, the customer service point can operate, in some embodiments, as a state machine, maintaining the class of service state can comprise establishing a current state that reflects the customer's desired class of service configuration (e.g., which applications are assigned to which classes of service, how bandwidth is allocated among classes of service, etc.). In other embodiments, maintaining the class of service state might comprise storing network configuration parameters and routing traffic to/from the broadband connection in accordance with those configuration parameters.
At block 225, the method comprises providing a user interface. The user interface can provide for interaction between a user (e.g., a customer, etc.) and a computer system (e.g., a customer service point). For example, the user interface can be used to output information for a user, e.g., by displaying the information on a display device, printing information with a printer, playing audio through a speaker, etc.; the user interface can also function to receive input from a user, e.g., using standard input devices such as mice and other pointing devices, motion capture devices, touchpads and/or touchscreens, keyboards (e.g., numeric and/or alphabetic), microphones, etc.
The procedures undertaken to provide a user interface, therefore, can vary depending on the nature of the implementation; in some cases, providing a user interface can comprise displaying the user interface on a display device controlled by the customer service point; in other cases, however, in which the user interface is displayed on a device remote from the customer service point (such as on a client computer, wireless device, etc.), providing the user interface might comprise formatting data for transmission to such a device and/or transmitting, receiving and/or interpreting data that is used to create the user interface on the remote device. Alternatively and/or additionally, the user interface on a client computer (or any other appropriate customer device) might be a web interface, in which the user interface is provided through one or more web pages that are served from the customer service point (and/or a web server in communication with the computer system), and are received and displayed by a web browser on the client computer (or other capable customer device). The web pages can display output from the customer service point and receive input from the user (e.g., by using Web-based forms, via hyperlinks, electronic buttons, etc.). A variety of techniques can be used to create these Web pages and/or display/receive information, such as JavaScript, Java applications or applets, dynamic HTML and/or AJAX technologies, to name but a few examples.
In many cases, providing a user interface will comprise providing one or more display screens (an example of which is described below), each of which includes one or more user interface elements. As used herein, the term “user interface element” (also described as a “visual object,” “user interface mechanism,” or “user interface device”) means any text, image, or device that can be displayed on a display screen for providing information to a user and/or for receiving user input. Some such elements are commonly referred to as “widgets,” and can include, without limitation, icons, images, text, text boxes, text fields, tables and/or grids, menus, toolbars, charts, hyperlinks, buttons, lists, combo boxes, checkboxes, radio buttons, and/or the like. While any illustrated exemplary display screens might employ specific user interface elements appropriate for the type of information to be conveyed/received by computer system in accordance with the described embodiments, it should be appreciated that the choice of user interface elements for a particular purpose is typically implementation-dependent and/or discretionary. Hence, the illustrated user interface elements employed by any display screens described herein should be considered exemplary in nature, and the reader should appreciate that other user interface elements could be substituted within the scope of various embodiments.
As noted above, in an aspect of certain embodiments, the user interface provides interaction between a user and a computer system, such as the customer service point. Hence, when this document describes procedures for displaying (or otherwise providing) information to a user, or to receiving input from a user, the user interface may be the vehicle for the exchange of such input/output. Merely by way of example, in a set of embodiments, the user interface allows the user (e.g., the customer) to provide configuration or review network performance statistics.
Thus, for instance, at block 230, the method comprises receiving (e.g., at the customer service point) configuration information (e.g., at a customer service point). The configuration information can comprise any type of information or instructions that indicate to the customer service point how the broadband connection should be configured. Merely by way of example, in some cases, configuration information might include instructions from the customer to assign a particular application to a particular class of service, to assign a particular device or service to a particular class of service, and/or the like. In other cases, the configuration information might establish different classes of service themselves, and/or allocate the available bandwidth of the broadband connection across one or more classes of service (e.g., by specifying that a first class of service should be allocated a first portion of the bandwidth, that a second class of service should be allocated a second portion of the bandwidth, that a third class of service should be allocated the remaining bandwidth, etc.). Such configuration information can apply to any number of classes of service and/or can allocate the available bandwidth in any manner desired by the customer (subject, perhaps, to constraints or recommendations provided by the ISP to avoid configurations that result in poor network performance).
In an aspect, the configuration information might be received via a user interface, and in particular, via a GUI.
As illustrated, the configuration panel includes a plurality of visual objects 315, each of which corresponds to particular type of network traffic (in this case, traffic associated with different applications on one or more of the customer devices, although other categorizations of the traffic are possible as well, such as by protocol, device, service, etc.). Merely by way of example, one visual object 315a represents a VoIP application, and other visual object 315b represents a streaming video application, and a third visual object 315c represents an online game. These three applications are assigned to a high-priority class of service, which is indicated by an individual object 320. Another set of applications, including web browsers represented by visual objects 315d and 315e, has been assigned to a medium priority class of service represented by visual object 325, while an e-mail application represented by visual object 315f and an online chat application represented by visual object 315g have been assigned to a low priority class of service represented by visual object 330. Thus, the configuration panel 305 serves as a graphical representation of the class of service state maintained by the customer service point.
It is worth noting that the configuration panel 305 can serve two purposes. First, the configuration panel can illustrate the current class of service state (and/or various aspects thereof) for the user. Thus, as depicted by
Referring again to
As noted above, customer applications (such as online video players, VoIP applications, etc.) might be configured to request an allocation of bandwidth, either for a particular session, as a general matter, etc. Merely by way of example, if a user attempts to play a streaming video with a video player, the video player might be configured to request an allocation of sufficient bandwidth to allow for acceptable playback of the video (this value, obviously, can vary according to the length and/or bitrate of the video, etc.). One skilled in the art can appreciate, based on the disclosure herein, that a variety of application might request either temporary or persistent modifications to a class of service state for a variety of reasons. For example, a VoIP application might request a persistent class of service priority upon installation on a customer device or in the network (if the application runs on a dedicated VoIP phone, for example), while a game might request a temporary upgrade while the game is being played. Such temporary modifications might be reverted by the customer service point after a particular period of time, after a period of inactivity by the requesting application, or by a request from the application (e.g., upon being closed by the user) to revert the class of service state to a previous state.
At block 240, the method comprises modifying the class of service state in response to the configuration information. In many cases, the modifications the class of service state will depend on the configuration instructions received by the customer service point. Merely by way of example, if an application requests a certain elevation of dedicated bandwidth, the class of service state might be modified to add that application to a particular class of service (in order to provide the dedicated bandwidth requested), establish a new class of service for that application and/or prioritize the application's current class of service in order to provide the requested bandwidth. As another example, if a user provides configuration information via a user interface (as described above, for example), the class of service state can be modified to effectuate the configuration information; if, for example, the user provided instructions to assign a particular application or device to a particular class of service, the customer service point can transition to a new class of service state that assigns that application or device to that class of service.
From that point forward, when providing communication between the customer device/network in the access network, the residential gateway will employ the rules established by the new class of service state in prioritizing traffic, etc. The customer service point might communicate with other devices (e.g., the residential gateway, a DSLAM, routers within the access network, etc.) to effectuate the modifications made to the class of service state.
On the other hand, if the customer service point cannot satisfy a request (from a user, an application, etc.), the method 200 might comprise providing a busy indicator (block 245). A variety of different types of busy indicators can be used, and the type of busy indicator can depend on the nature of the request itself. Merely by way of example, if the request was received from an application via an API, the busy indicator might be provided to the application via the same API. The nature and format of the busy indicator conveyed by the customer service point is not material to the scope of this disclosure, so long as the busy indicator is sufficient to indicate to the application that its request cannot be accommodated. Based on the busy indicator, the application might inform the user that the requested network action (e.g., continuing from the example above, playing a streaming video file) cannot be performed, optionally with an explanation of the network conditions that prevented the operation. Such an explanation (and/or information from which such explanation can be generated) might be provided by the customer service point as part of the busy indicator. Merely by way of example, the customer service point might provide, as part of the busy indicator, information indicating that two other devices already have streaming video sessions open through the residential gateway, and that a third session is not possible due to bandwidth limitations of the broadband connection. The busy indicator might also provide information about computing applications or devices, such as an identification of the two devices that currently have streaming video sessions open.
On the other hand, if the request is received from a user via a user interface, the busy indicator might be provided through the same user interface. In this case, the busy indicator might comprise the same or different information as the information that would be provided via the API to an application, although if the same information is provided, the customer service point but format the information for consumption by the user, rather than by an application.
At block 250, the method comprises determining one or more network performance statistics. For example, a customer service point might receive network performance statistics (or information from which network performance statistics can be derived) from one or more network points (block 255), which can be any point in network, including without limitation monitoring points as described above. Such monitoring points, as noted above, can be any network devices within the customer network, the access network, and/or the Internet itself (and/or device located at any interface between these networks). As noted above, the monitoring points can monitor a variety of parameters and can send that information to the customer service point, which can then derive network performance statistics (including without limitation those described above, such as network latency, utilization, throughput, capacity, and/or packet loss) based on the measurements from one or more of the monitoring devices. In some cases, the customer service point itself (and/or a residential gateway, which might incorporate the customer service point) can serve as a monitoring point. Thus, determining network performance statistics can include a variety of operations, including without limitation compiling network performance statistics provided by monitoring devices, calculating network performance statistics from measurements collected by the customer service point itself and/or received from the monitoring devices, and/or the like.
At block 260, the method 200 comprises providing the determined network performance statistics to the customer. These statistics can be provided in a variety of different ways. Merely by way of example, in some cases the network performance statistics may be provided to an application via an API, and the application can use the statistics according to its configuration (e.g., by displaying them to the user, compiling a report, and/or the like). In other cases, the customer service point might provide the statistics to the customer via a user interface.
For instance, returning to
In some cases, the customer service point is configured to generate an alarm (block 265). Alarms can be generated for a wide variety of network conditions, and in some embodiments, the customer can configure customer service point to specify which network conditions should generate an alert. Merely by way of example, in some cases, an alarm might be generated upon network utilization of the broadband connection exceeding a certain threshold portion of the overall bandwidth. In other cases, an alarm might be generated if insufficient bandwidth is available (either overall or in a particular class of service) to allow an application to open a desired session. In a particular embodiment, the customer service point might generate an alarm in the event of a packet loss condition, either between the residential gateway in this access network in the access network itself, between the access network and the Internet drain, and/or the like.
Alarms can be provided to the customer and/or other entities in a variety of ways. Merely by way of example, an alarm can be displayed for a customer in the user interface, such as on the exemplary screen display 300 described with respect to
The computer system 400 is shown comprising hardware elements that can be electrically coupled via a bus 405 (or may otherwise be in communication, as appropriate). The hardware elements may include one or more processors 410, including without limitation one or more general-purpose processors and/or one or more special-purpose processors (such as digital signal processing chips, graphics acceleration processors, and/or the like); one or more input devices 415, which can include without limitation a mouse, a keyboard and/or the like; and one or more output devices 420, which can include without limitation a display device, a printer and/or the like.
The computer system 400 may further include (and/or be in communication with) one or more storage devices 425, which can comprise, without limitation, local and/or network accessible storage, and/or can include, without limitation, a disk drive, a drive array, an optical storage device, solid-state storage device such as a random access memory (“RAM”) and/or a read-only memory (“ROM”), which can be programmable, flash-updateable and/or the like. Such storage devices may be configured to implement any appropriate data stores, including without limitation, various file systems, database structures, and/or the like.
The computer system 400 might also include a communications subsystem 430, which can include without limitation a modem, a network card (wireless or wired), an infra-red communication device, a wireless communication device and/or chipset (such as a Bluetooth™ device, an 802.11 device, a WiFi device, a WiMax device, a WWAN device, cellular communication facilities, etc.), and/or the like. The communications subsystem 430 may permit data to be exchanged with a network (such as the network described below, to name one example), with other computer systems, and/or with any other devices described herein. In many embodiments, the computer system 400 will further comprise a working memory 435, which can include a RAM or ROM device, as described above.
The computer system 400 also may comprise software elements, shown as being currently located within the working memory 435, including an operating system 440, device drivers, executable libraries, and/or other code, such as one or more application programs 445, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein. Merely by way of example, one or more procedures described with respect to the method(s) discussed above might be implemented as code and/or instructions executable by a computer (and/or a processor within a computer); in an aspect, then, such code and/or instructions can be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.
A set of these instructions and/or code might be encoded and/or stored on a non-transitory computer readable storage medium, such as the storage device(s) 425 described above. In some cases, the storage medium might be incorporated within a computer system, such as the system 400. In other embodiments, the storage medium might be separate from a computer system (i.e., a removable medium, such as a compact disc, etc.), and/or provided in an installation package, such that the storage medium can be used to program, configure and/or adapt a general purpose computer with the instructions/code stored thereon. These instructions might take the form of executable code, which is executable by the computer system 400 and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computer system 400 (e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.) then takes the form of executable code.
It will be apparent to those skilled in the art that substantial variations may be made in accordance with specific requirements. For example, customized hardware (such as programmable logic controllers, field-programmable gate arrays, application-specific integrated circuits, and/or the like) might also be used, and/or particular elements might be implemented in hardware, software (including portable software, such as applets, etc.), or both. Further, connection to other computing devices such as network input/output devices may be employed.
As mentioned above, in one aspect, some embodiments may employ a computer system (such as the computer system 400) to perform methods in accordance with various embodiments of the invention. According to a set of embodiments, some or all of the procedures of such methods are performed by the computer system 400 in response to processor 410 executing one or more sequences of one or more instructions (which might be incorporated into the operating system 440 and/or other code, such as an application program 445) contained in the working memory 435. Such instructions may be read into the working memory 435 from another computer readable medium, such as one or more of the storage device(s) 425. Merely by way of example, execution of the sequences of instructions contained in the working memory 435 might cause the processor(s) 410 to perform one or more procedures of the methods described herein.
The terms “machine readable medium” and “computer readable medium,” as used herein, refer to any medium that participates in providing data that causes a machine to operation in a specific fashion. In an embodiment implemented using the computer system 400, various computer readable media might be involved in providing instructions/code to processor(s) 410 for execution and/or might be used to store and/or carry such instructions/code (e.g., as signals). In many implementations, a computer readable medium is a non-transitory, physical and/or tangible storage medium. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical and/or magnetic disks, such as the storage device(s) 425. Volatile media includes, without limitation, dynamic memory, such as the working memory 435. Transmission media includes, without limitation, coaxial cables, copper wire and fiber optics, including the wires that comprise the bus 405, as well as the various components of the communication subsystem 430 (and/or the media by which the communications subsystem 430 provides communication with other devices). Hence, transmission media can also take the form of waves (including without limitation radio, acoustic and/or light waves, such as those generated during radio-wave and infra-red data communications).
Common forms of physical and/or tangible computer readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read instructions and/or code.
Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s) 410 for execution. Merely by way of example, the instructions may initially be carried on a magnetic disk and/or optical disc of a remote computer. A remote computer might load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and/or executed by the computer system 400. These signals, which might be in the form of electromagnetic signals, acoustic signals, optical signals and/or the like, are all examples of carrier waves on which instructions can be encoded, in accordance with various embodiments of the invention.
The communications subsystem 430 (and/or components thereof) generally will receive the signals, and the bus 405 then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory 435, from which the processor(s) 405 retrieves and executes the instructions. The instructions received by the working memory 435 may optionally be stored on a storage device 425 either before or after execution by the processor(s) 410.
While certain features and aspects have been described with respect to exemplary embodiments, one skilled in the art will recognize that numerous modifications are possible. For example, the methods and processes described herein may be implemented using hardware components, software components, and/or any combination thereof. Further, while various methods and processes described herein may be described with respect to particular structural and/or functional components for ease of description, methods provided by various embodiments are not limited to any particular structural and/or functional architecture but instead can be implemented on any suitable hardware, firmware and/or software configuration. Similarly, while certain functionality is ascribed to certain system components, unless the context dictates otherwise, this functionality can be distributed among various other system components in accordance with the several embodiments.
Moreover, while the procedures of the methods and processes described herein are described in a particular order for ease of description, unless the context dictates otherwise, various procedures may be reordered, added, and/or omitted in accordance with various embodiments. Moreover, the procedures described with respect to one method or process may be incorporated within other described methods or processes; likewise, system components described according to a particular structural architecture and/or with respect to one system may be organized in alternative structural architectures and/or incorporated within other described systems. Hence, while various embodiments are described with—or without—certain features for ease of description and to illustrate exemplary aspects of those embodiments, the various components and/or features described herein with respect to a particular embodiment can be substituted, added and/or subtracted from among other described embodiments, unless the context dictates otherwise. Consequently, although several exemplary embodiments are described above, it will be appreciated that the invention is intended to cover all modifications and equivalents within the scope of the following claims.
The present disclosure may be related to the following commonly assigned applications/patents: This application claims the benefit, under 35 U.S.C. §119(e), from the following co-pending applications, the entire disclosure of each of which is hereby incorporated by reference, as if set forth in full in this document, for all purposes: provisional U.S. Patent Application No. 61/416,600, filed Nov. 23, 2010, by Michael K. Bugenhagen and titled “Line Performance Metrics Customer Service Point”; provisional U.S. Patent Application No. 61/429,866 filed Jan. 5, 2011, by Michael K. Bugenhagen and titled “Line Performance Metrics Customer Service Point”; provisional U.S. Patent Application No. 61/435,056 filed Jan. 21, 2011, by Michael K. Bugenhagen and titled “Access Control”; and provisional U.S. Patent Application No. 61/481,282 filed May 2, 2011, by Michael K. Bugenhagen and titled “Communications Path State Machine.” The respective disclosures of these applications/patents are incorporated herein by reference in their entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
61416600 | Nov 2010 | US | |
61429866 | Jan 2011 | US | |
61435056 | Jan 2011 | US | |
61481282 | May 2011 | US |