WO2006098825A2 - System and method for dynamic bandwidth estimation of network links - Google Patents

System and method for dynamic bandwidth estimation of network links Download PDF

Info

Publication number
WO2006098825A2
WO2006098825A2 PCT/US2006/003910 US2006003910W WO2006098825A2 WO 2006098825 A2 WO2006098825 A2 WO 2006098825A2 US 2006003910 W US2006003910 W US 2006003910W WO 2006098825 A2 WO2006098825 A2 WO 2006098825A2
Authority
WO
WIPO (PCT)
Prior art keywords
link
bandwidth
packet
application
throughput
Prior art date
Application number
PCT/US2006/003910
Other languages
French (fr)
Other versions
WO2006098825A8 (en
WO2006098825A3 (en
Inventor
Behram Dacosta
David Desch
Original Assignee
Sony Electronics, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Electronics, Inc. filed Critical Sony Electronics, Inc.
Priority to CN2006800077172A priority Critical patent/CN101142787B/en
Priority to CA2598958A priority patent/CA2598958C/en
Priority to KR1020077020575A priority patent/KR101206195B1/en
Priority to EP06734328.5A priority patent/EP1856842B1/en
Priority to JP2008500710A priority patent/JP5027794B2/en
Publication of WO2006098825A2 publication Critical patent/WO2006098825A2/en
Publication of WO2006098825A8 publication Critical patent/WO2006098825A8/en
Publication of WO2006098825A3 publication Critical patent/WO2006098825A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B17/00Monitoring; Testing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/16Central resource management; Negotiation of resources or communication parameters, e.g. negotiating bandwidth or QoS [Quality of Service]
    • H04W28/18Negotiating wireless communication parameters
    • H04W28/20Negotiating bandwidth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/508Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
    • H04L41/5087Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to voice services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/508Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
    • H04L41/509Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to media content delivery, e.g. audio, video or TV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/12WLAN [Wireless Local Area Networks]

Definitions

  • the present invention relates generally to networks and, more particularly, to a system and method for dynamic bandwidth estimation of network links.
  • a network generally refers to a communication system that allows users to access resources on other computers and to exchange data and messages with other users.
  • a network allows users to share resources on their own systems and with other network users and to access information on centrally located systems or systems that are located at remote offices.
  • Networks generally also provide connections to the Internet or other networks of other organizations. Further, network connections allow users to operate from their home, their office, or at other locations.
  • a network is a data communications system that links two or more devices (e.g. computers, peripheral devices, etc.).
  • a network consists of a cable that attaches to network interface cards (NICs) of devices to allow communication between the devices.
  • NICs network interface cards
  • users interact with network-enabled software applications to make a network request such as to get a file from another computer or to print a document on a network printer.
  • the application communicates with network software and the network software interacts with the network hardware.
  • the network hardware is responsible for transmitting information to other devices attached to network.
  • a local area network is a network that is located in a relatively small area such as a department, a building, or a home.
  • a LAN consists of a shared medium to which devices attach to communicate with one another using broadcast methods. With broadcasting, any device on the LAN can transmit a message that all the other devices on the LAN can listen to.
  • WLAN wireless local area network
  • wireless networks support communications between a station or server and wireless clients, and among the various wireless clients themselves, utilizing access points (APs).
  • APs access points
  • each AP operates as a relay station by supporting communications between the wireless clients themselves and between the wireless clients and the server.
  • data transmitters within a wireless network such as data transmitters operating using an Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless protocol, can transmit data at different rates to different clients.
  • the data transmitters e.g. including an antenna
  • the data transmitters are included as part of an access point.
  • home networks including wireless home-networks, similar to WLAN's, have become increasingly popular.
  • a home media server streams data, such as video and audio data, to client devices throughout the home.
  • QoS Quality of Service
  • bandwidth allows the server to stream high fidelity content, such as movies, television, graphics, multi-media, games, web pages, etc., to client devices throughout the house.
  • QoS Quality of Service
  • network bandwidth it is important to optimize QoS and network bandwidth, which is particularly important for unreliable and lower-bandwidth networks, such as wireless networks.
  • WLAN's and wireless home-networks, as well as other types of wireless networks will be generally referred to as wireless networks.
  • node A and node B may share the available bandwidth equally and may each be limited to no more than 50% of the bandwidth available on the network, respectively, or node A and node B may share the available bandwidth as 20% and 80%, respectively. Obviously, many other combinations are possible.
  • node A and node B may share the available bandwidth equally and may each be limited to no more than 50% of the bandwidth available on the network, respectively, or node A and node B may share the available bandwidth as 20% and 80%, respectively.
  • AU of these factors can lead to congestion problems in the network.
  • these issues become even more complex when network bandwidth changes dynamically, such as in wireless networks.
  • Network based applications often provide better performance and quality when they utilize more network bandwidth and hence have more throughput. For example, by utilizing more network bandwidth, an audio-visual (AfV) streaming application may send data at a higher MPEG-2 data rate, which provides for higher quality video at the destination.
  • AfV audio-visual
  • contention-based networks for example, Ethernet, Distributed Coordination Function (DCF) or Enhanced DCF (EDCF) of the IEE802.11 Wireless Protocol
  • DCF Distributed Coordination Function
  • EDCF Enhanced DCF
  • the system includes at least one client device capable of receiving data over the wireless network and a server capable of transceiving data over a link of a wireless channel of the wireless network.
  • the server identifies the at least one client device in the wireless network and identifies applications that are being utilized in the wireless network by the at least one client device, in which each application has an associated link between the server and the client device and an associated data stream transmitted over the link.
  • the server passively estimates the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.
  • Figure IA shows an example of a wireless network in accordance with one embodiment of the present invention.
  • Figure IB shows an example of a wired network in accordance with one embodiment of the present invention.
  • Figure 2 shows a diagram of an example of a station or a server of Figure IA or IB, which may be utilized in practicing one embodiment of the present invention.
  • Figure 3 shows a flow diagram that illustrates operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention.
  • Figure 4 shows a diagram that illustrates examples of utility functions, according to one embodiment of the present invention.
  • Figure 5 shows a diagram that illustrates an example of a scaled utility function, according to one embodiment of present invention.
  • Figure 6 shows a flow diagram that illustrates, in more detail, an example of operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention.
  • Figure 7 is a flow diagram illustrating a process to estimate throughput for a link, according to one embodiment of the invention.
  • Figure 8 is a flow diagram illustrating a process to determine the maximum estimated throughput for a link, according to one embodiment of the invention.
  • Figure 9 is a table illustrating equations that may be used in the dynamic bandwidth estimation of network links, according to one embodiment of the invention.
  • embodiments of the invention may be applicable to a variety of wireless networks such as a wireless local area network (WLAN), a wireless personal area network (WPAN) and/or a wireless home-network, as well as other types of wireless networks.
  • WLAN wireless local area network
  • WPAN wireless personal area network
  • WLAN home-network a wireless home-network
  • wireless networks will be generally referred to as wireless networks.
  • the wireless network may be configured in accordance with any Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard such as an IEEE 802.11b standard entitled “Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: Higher-Speed Physical Layer Extension in the 2.4 GHz Band” (IEEE 802.1 Ib, 1999), an IEEE 802.1 Ia standard entitled “Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: High-Speed Physical Layer in the 5 GHz Band” (IEEE 802.1 Ia, 1999) or a revised IEEE 802.11 standard "Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications” (IEEE 802.11, 1999).
  • IEEE 802.11 standard such as an IEEE 802.11b standard entitled “Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: Higher-Speed Physical Layer Extension in the 2.4 GHz Band” (IEEE 802.1 Ib, 1999)
  • IEEE 802.1 Ia entitled “Wireless LAN Medium Access Control (MAC) and
  • embodiments of the invention are applicable to a variety of other types of networks, such as wired networks based on Powerline Communication (PLC) or the standard Ethernet networks (e.g. a local area network (LAN), or a wide area network (WAN), the Internet, etc.), which is packetized, packet-switched, connection oriented, etc., type network that can utilize Transmission Control Protocol/Internet Protocol (TCP/IP), Asynchronous Transfer Mode (ATM), Frame Relay (FR), Point-to Point Protocol (PPP), Systems Network Architecture (SNA), Voice over Internet Protocol (VoIP), or any other sort of protocol.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • ATM Asynchronous Transfer Mode
  • FR Frame Relay
  • PPP Point-to Point Protocol
  • SNA Systems Network Architecture
  • VoIP Voice over Internet Protocol
  • the computer network may allow the communication of data traffic between server(s) and client devices using packets.
  • Embodiments of this invention may also be applicable to non-RF wireless networks such as optical networking.
  • a “component”, or “computing device”, or “client device”, or “computer” includes hardware and/or software module(s) that are configured to perform one or more functions.
  • a “processor” is logic that processes information. Examples of a processor include a microprocessor, an application specific integrated circuit, a digital signal processor, a micro-controller, a finite state machine, or even combinatorial logic.
  • a "software module” is executable code such as an operating system, an application, an applet or even a routine.
  • Software modules may be stored in any type of memory, namely suitable storage medium such as a programmable electronic circuit, a semiconductor memory device, a volatile memory (e.g., random access memory, etc.), a non-volatile memory (e.g., read-only memory, flash memory, etc.), a floppy diskette, an optical disk (e.g., compact disk or digital versatile disc “DVD”), a hard drive disk, tape, or any kind of interconnect (defined below).
  • An "interconnect” or “link” is generally defined as an information-carrying medium that establishes a communication pathway. Examples of the medium include a physical medium (e.g., electrical wire, optical fiber, cable, bus traces, etc.) or a wireless medium (e.g., air in combination with wireless signaling technology).
  • Information or "data stream” is defined as data, address, control or any combination thereof.
  • information may be transmitted as a message, namely a collection of bits in a predetermined format.
  • One particular type of message is a frame including a header and a payload, each having a predetermined number of bits of information.
  • Embodiments of the invention relate to a system, apparatus, and method for dynamically allocating bandwidth to applications in a network based on utility functions.
  • the bandwidth being referred to herein is typically the actual usable bandwidth for application-level data, after taking into account packet error rates, protocol overhead, etc.
  • embodiments of the invention are also applicable when the bandwidth being referred to is the raw data rate for the network link, or some other estimate of network throughput, hi addition, while bandwidth is generally the parameter addressed directly herein, embodiments of the invention further relate to and include the allocation of other streaming parameters such as jitter and latency, which may also be allocated in a similar manner.
  • allocating bandwidth amongst competing client devices and admitting new client devices to a network becomes complex when network bandwidth changes dynamically, such as in a wireless network.
  • Embodiments of the present invention relate to allocating bandwidth dynamically to client devices of a network, based on utility functions. More particularly embodiments of the invention relate to dynamically adjusting the bandwidth available to each client device, based on a utility function for each client device, such that the bandwidths allocated to each client device are tailored to optimize the performance of the respective client device (based on the respective utility function) and the bandwidths fit within the overall available bandwidth of the network. Further, by utilizing utility functions, each client device can then use the optimized bandwidth allocated to it, such that the overall system utility is optimized. Also, it should be noted that the server by itself, the client devices themselves, or a combination of the server and one or more client devices, may implement aspects of the present invention in order to dynamically allocate bandwidth to applications in a network based on utility functions.
  • FIG. IA shows an example of a wireless network 100 in accordance with one embodiment of the present invention.
  • exemplary wireless network 100 includes a station or server 102 that may communicate with a plurality of clients and with one or more other wired networks 104 (e.g. a LAN, cable network, Internet, etc.).
  • server 102 through switch 108 may communicate via link 110 to client device E 112.
  • link 110 may be a wired type link in accordance with an Ethernet standard.
  • link 110 may couple to any number of client devices.
  • server 102 through switch 108 may communicate via link 115 to another network 104 (e.g. a LAN, cable network, Internet, etc.).
  • link 115 may be a wired type link in accordance with an Ethernet standard.
  • server 102 through switch 108 maybe coupled to access point 1 120 to communicate with client device A 130, client device B 132, client device C 134, and client device D 136 through access point A 140, access point B 142, access point C 144, and access point D 146, respectively, via wireless channel 1 150, as will be discussed.
  • Clients A, B, C, D are each of course in communication with their respective access point.
  • the network may instead comprise non-access point wireless client devices.
  • these non-access point wireless client devices may be utilized as part of an "Ad-hoc" type network (e.g. in accordance with IEEE 802.11 terminology) and the non-access point wireless client devices would be termed "stations" in 802.11 terminology.
  • the client devices would include suitable wireless network interface cards (e.g. PCI, PCMI, etc., type cards) employed within, or possibly separate from, the wireless client device to transceive and process wireless information to and from the wireless client device.
  • a wireless network interface card (NIC) component typically includes an antenna, a receive (RX) interface, a transmit (TX) interface, and a converter.
  • the converter may be implemented as a component that can perform both analog-to-digital signal conversion as well digital-to-analog conversion.
  • a wireless NIC typically comprises a wireless transceiver, it is of course contemplated that the wireless NIC may feature only RX or TX functionality such that only a receiver or transmitter is implemented.
  • access-point type wireless client devices or non-access point wireless client devices e.g. "stations" in 802.11 terminology).
  • access point 1 120 and access points A, B, C, D 140, 142, 144, and 146 support bi-directional communication by (i) receiving data frames from clients A, B, C, D 130, 132, 134, 136 and transmitting data from these frames onto a physical medium such as link 110 to other client devices (e.g. client E 112) and/or link 115 to wired network 104 and (ii) receiving data from wired network 104 and other client devices (e.g. client E 112) and transmitting data frames to one or more targeted clients A, B, C, D 130, 132, 134, 136.
  • Each of the access points includes a respective antenna 149 to transceive wireless information and a link 151 to transceive the information to client devices, components, or other networks.
  • access point 120 may also support a plurality of different wireless channels (e.g. wireless channels 1-N). Further, it should be appreciated that server 102 and switch 108 may also support a plurality of different access points (e.g. access point 1-N).
  • Network 104 can be of any type of network, including but not limited or restricted to Ethernet, Token Ring, Asynchronous Transfer Mode (ATM), LAN, WAN, Internet, Intranet, etc.
  • network 104 and clients accessible by link 110 feature resources that are available for users of wireless network 100. Such resources may include devices for data storage, which are coupled to links 110 and/or 115.
  • client devices A, B, C, D 130, 132, 134, 136 communicate with and access information from server 102 via their respective access points over the air in accordance with an IEEE 802.11 communications protocol or another wireless networking protocol.
  • access point 1 120 and access points A, B, C, D 140, 142, 144, 146 each generally operate as a transparent bridge connecting both a wireless network including clients A, B, C, D 130, 132, 134, 136 through server 102 to other networks, for example the LAN network including client device E 112 and possibly other clients and/or network 104.
  • the client devices may be grouped as far clients, clients A and B 130 and 132, which are relatively far from access points 1 120 of the server 102, and near clients, clients C and D 134 and 136, which are relatively near to the access point 1 of the server 102.
  • access point 1 120 will sometimes be generally referred to as transmitter 120 to aid in the ease of description.
  • access point A 140 may communicate and support a plurality of other far clients in addition to client A 130, as indicated in Figure IA.
  • Access point B 142 may also communicate and support a plurality of other far clients in addition to client B 132, as indicated in Figure IA.
  • access point C 144 may communicate and support a plurality of other near clients in addition to client C 134, as indicated in Figure IA.
  • access point D 146 may also communicate and support a plurality of other near clients in addition to client D 136, as indicated in Figure IA.
  • Figure IA is only an example of one type of configuration of a wireless network in which embodiments of the invention may be practiced, as will be discussed. Any number of servers, access points, and client devices and configurations thereof may be utilized. Furthermore, the server 102 may utilize any number of access points (e.g. access points 1-N), as indicated in Figure IA, and may communicate utilizing any number of wireless channels (e.g. wireless channels 1-N), as indicated in Figure IA. Moreover, each access point may support one wireless channel or may support any number of wireless channels, dependent upon the configuration of the wireless network. Additionally, it should be appreciated that server 102 may be connected to any number of other wired or wireless networks, or combinations thereof.
  • access points e.g. access points 1-N
  • wireless channels 1-N e.g. wireless channels 1-N
  • each access point may support one wireless channel or may support any number of wireless channels, dependent upon the configuration of the wireless network.
  • server 102 may be connected to any number of other wired or wireless networks, or combinations thereof.
  • a network 102 including a wired type network 103 may be utilized to connect the server 102 to the client devices A, B, C, D 130, 132, 134, 136.
  • a network 102 including a wired type network 103 may be utilized to connect the server 102 to the client devices A, B, C, D 130, 132, 134, 136.
  • embodiments of the invention may be applicable to a variety of other types of networks, such as wired networks (e.g.
  • the wired network 103 allows the communication of data traffic between sever(s) 102 and client devices A, B, C, D 130, 132, 134, 136 using packets.
  • Data traffic through the network 103 may be of any type including audio, text, graphics, video, e-mail, Fax, multi-media, documents, voice, and other generic forms of data.
  • the network 103 is typically a data network that may contain switching or routing equipment designed to transfer digital data traffic.
  • Figure IB environment is only exemplary and that embodiments of the present invention can be used with any type of telecommunication system and/or computer network, protocols, and combinations thereof.
  • the particular configurations of the wireless network 100 and wired network 101 disclosed in Figures IA and IB are only used as examples in which to discuss the embodiments of the invention, and should not be used to attempt to limit the embodiments of the invention.
  • embodiments of the invention can be utilized in a wide variety of wireless and wired networks and combinations thereof.
  • the client devices of the networks 100 and 101 may be any type of hardware and/or software based computing component or device or electronic component or device such as a computer (e.g. desktop, notebook, server), personal digital assistant "PDA", telephone, alphanumeric pager, television (standard, digital, high-definition, etc.), set-top box, etc. It should be appreciated that this list is only a small exemplary list of all the possible types of clients that can be part of the networks 100 and 101. Many other types of client devices should be apparent to those of skill in the art.
  • a computer e.g. desktop, notebook, server
  • PDA personal digital assistant
  • Figure 2 shows a diagram of an example of the station or server 102 of Figure IA or IB, which may be utilized to practice one embodiment of the present invention.
  • the station or server 102 may include a processor 210, a memory 220, a user interface 230 (e.g. a keyboard, mouse, etc.), a display device (e.g. a monitor, LCD display, etc.) 235, a plurality of input/output (VO) devices 240 and a network interface 245 which may comprise part of switch 108.
  • a processor 210 e.g. a keyboard, mouse, etc.
  • a display device e.g. a monitor, LCD display, etc.
  • VO input/output
  • Examples of the processor 210 that may be utilized include a microprocessor, an application specific integrated circuit, a digital signal processor, a micro-controller, a finite state machine, or even combinatorial logic.
  • Examples of I/O devices 240 may include any I/O device to perform I/O functions.
  • I/O devices may include a printer, storage devices (e.g. Compact Disk ROM (CD ROM), Digital Video Disk (DVD), hard drive, floppy drive, etc.) or any other types of I/O devices, e.g., controllers for input devices (mouse, trackball, pointing device), media cards (e.g. audio, video, graphics), etc.
  • the switch 108 including network interface 245 may include suitable network interface cards to interface with the access points of the wireless network 100, the wired network 103, the wired network 104, client devices, and the Ethernet network (link 110), as previously discussed, as well other types of networks, interfaces and client devices.
  • memory 220 may include a bandwidth manager software module 250 for dynamically allocating bandwidth to applications in a network based on utility functions, in order to implement embodiments of the present invention, as will be discussed in more detail later.
  • the bandwidth manager software module 250 includes executable code such as an operating system, an application, an applet or even a routine.
  • the software module 250 may be stored in memory 220, which may be any type of memory, namely a suitable storage medium such as a programmable electronic circuit, a semiconductor memory device, a volatile memory (e.g., random access memory, etc.), a non-volatile memory (e.g., read-only memory, flash memory, etc.), a floppy diskette, an optical disk (e.g., compact disk or digital versatile disc "DVD”), a hard drive disk, tape, etc.
  • one or more client devices e.g. client devices A, B, C, and D
  • embodiments of the present invention can be practiced with any sort of station, client device, server computer, general purpose computer, or any sort of computing or electronic device that includes circuitry capable of processing data.
  • embodiments of the invention can be generally implemented in a computer as one or more software modules or computer programs to perform the desired functions.
  • the computer programs are comprised of machine-readable instructions (e.g. code segments) which when read and executed by the computer, cause the computer to perform the operations necessary to implement and/or use the present invention.
  • the computer programs are tangibly embodied in and/or readable from a device, carrier, or media, such as memory, data storage devices, and/or a remote device coupled to the computer via data communication devices.
  • the computer programs may be loaded from memory, data storage devices, and/or remote devices into the memory of the computer for use during operations.
  • Figure 2 computer system configuration 200 is only one example of a basic computer system for use as a station or server. Further, those skilled in the art will recognize that the exemplary embodiment illustrated in Figure 2 is not intended to limit the embodiments of the invention.
  • the wireless network 100 and wired network 101 may be utilized as a network (e.g. a WLAN or standard LAN) by itself or may be part of a larger network for use by a business or for use in the home, or for use by any other entity.
  • the networks 100 and 101 according to embodiments of the present invention provides for the efficient streaming of information and data for multi-media data, video, audio, graphics, text, documents, etc., from the server 102 to client devices A, B, C, and D. Further, embodiments of the present invention provide for the efficient streaming of high fidelity video and audio content such as movies, television, graphics, multi-media, games, web pages, etc.
  • the home media server 102 when utilized as part of a home-network, streams data, such as video and audio data, to client devices A, B, C, D 130, 132, 134, 136 throughout the home with high QoS and high bandwidth such that the server can efficiently stream high fidelity video and audio content, such as movies, television, graphics, multi-media, games, web pages, etc., to client devices (e.g. including computers, digital television, high definition television (HDTV), etc.) throughout the household.
  • client devices e.g. including computers, digital television, high definition television (HDTV), etc.
  • embodiments of the invention relate to a system, apparatus, and method for dynamically allocating bandwidth to applications in a network based on utility functions.
  • One or more client devices are present in the network and are capable of receiving data over the network.
  • a server capable of transceiving data over the network is coupled to the client devices through the network.
  • the server identifies the client devices in the network and identifies the applications being utilized in the network by the client devices.
  • Utility functions are defined for each of the applications.
  • a utility function may be used to specify the minimum amount of bandwidth required by the application to perform at a pre-determined quality level.
  • Bandwidth is dynamically allocated to different applications in the network based on the utility functions defined for each of the applications.
  • Embodiments of the present invention relate to allocating bandwidth dynamically to client devices of a network, based on utility functions. More particularly embodiments of the invention relate to dynamically adjusting the bandwidth available to each client device, based on a utility function for each client device, such that the bandwidths allocated to each client device are tailored to optimize the performance of the respective client device (based on the respective utility function) and the bandwidths fit within the overall available bandwidth of the network, such that the overall system utility is optimized. Further, by utilizing utility functions, each client device can use the optimized bandwidth allocated to it such that the overall system utility is optimized. It should be appreciated that aspects of the present invention may be utilized with one or more servers and one or more client devices.
  • a utility function that describes the utility or usefulness of a given amount of bandwidth for each "application" using the network.
  • the "application” can be generally defined to be a sequence of data corresponding to a transmission of information (e.g. a data stream) between the server to one or more client devices.
  • the "application” may be defined as the actual software application that utilizes the data or some other function, device, or a routine that utilizes the data.
  • the utility function may specify the minimum amount of bandwidth useful to an application to perform adequately or at a pre-determined or desired quality level, as well as the change in utility or usefulness that would result from a given change of bandwidth currently available to the application.
  • one or more of the client devices A, B, C, D 130, 132, 134, 136 may be utilizing a function or application that requires a certain amount of bandwidth for a data stream or application being streamed to it, in order to properly utilize the data stream at an adequate level of quality.
  • a client device such as: a computer, set top box, or a television (e.g. an HDTV), may be utilizing an application requiring a relatively high level of bandwidth to render high-fidelity video and audio such as movies, television, graphics, multi-media, games, web pages, etc., with a sufficient level of quality (i.e. requiring a relatively high QoS).
  • the home media server 102 when utilized as part of a home- network, streams data, such as video and audio data, to client devices A, B, C, D 130, 132, 134, 136 throughout the home.
  • client devices may be running applications that require high QoS and high bandwidth in order to render high fidelity video and audio content such as movies, television, graphics, multi-media, games, web pages, etc.
  • embodiments of the present invention may be applied to networks with fixed bandwidths, e.g. a wired network 101 as shown in Figure IB, or networks with variable (i.e. unreliable) bandwidth, e.g. a wireless network 100 as shown in Figure IA.
  • a flow diagram 300 illustrates the operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention.
  • the client devices in the wireless or wired network e.g. Figure IA or IB, respectively
  • clients A, B, C, and D denoted 130, 132, 134 and 136, respectively, would be determined to be the client devices of the network.
  • applications currently being used in the network are identified (block 304).
  • client device A 130 may be a computer running an application to download documents from another computer over the Internet requiring a relatively small amount of bandwidth
  • client device C 134 may be an HDTV set running an application to download and simultaneously play an HDTV video program (e.g. movies, television, graphics, multimedia, games, web pages, etc.) requiring a relatively large amount of bandwidth.
  • an HDTV video program e.g. movies, television, graphics, multimedia, games, web pages, etc.
  • a utility function for each application currently being used in the network (block 306).
  • utility functions associate the amount of utility or usefulness of the application vs. the bandwidth required to obtain the desired amount of utility.
  • a utility function for the application downloading documents from the Internet for client device A 130 and a utility function for the application downloading and simultaneously playing an HDTV video program for client device C 134 would be defined.
  • the utility functions may be scaled based on pre-determined or desired (e.g. user defined) priorities in order to prioritize which applications are more important than others and to allocate bandwidth accordingly (block 308). For example, continuing with the present example, if priorities are defined (e.g. by the user or system), in order to make applications for HDTV video programs (requiring relatively high bandwidth for high QoS needs) more important than applications for downloading documents over the Internet, the utility functions will be scaled to reflect this. Thus, based on the priority and scaling factors a minimum amount of bandwidth to maintain certain QoS levels for both the application downloading documents and the application downloading and simultaneously displaying an HDTV video program are defined.
  • the HDTV application is given higher priority than the application for Internet document downloads, if there is not enough bandwidth for both, the Internet download will be allocated decreased bandwidth in order to accommodate the minimum amount of bandwidth allocated to the HDTV application in order to maintain the HDTV's application QoS. This of course may result in slow Internet downloads. However, the quality of the HDTV video program being displayed will not be sacrificed.
  • bandwidth is allocated to different applications in the network based on the utility functions defined for each application. Methods of allocating bandwidth to different applications in the network based on the utility functions defined for each application will be discussed in more detail later.
  • the operations to dynamically allocate bandwidth to applications in a network based on utility functions, and to define utility functions for each application being used in the network may be implemented in a computing device having a software module to aid in implementing these functions.
  • a computing device such as station or server 102, previously described with reference to Figure 2, may utilize a bandwidth manager software module 250 stored in memory 220 implemented under the control the processor 210, as previously discussed, to implement these functions.
  • FIG. 4 shows a diagram 400 illustrating examples of utility functions, according to one embodiment of the present invention.
  • a utility function defines the utility or usefulness of an application (y-axis 402) vs. the bandwidth (x-axis 404) required to obtain the desired amount of utility.
  • the utility function may be used to specify a minimum amount, of bandwidth that is useful to an application to keep the application working at an adequate level, as well as to estimate the change in utility or usefulness that would result from a given change of bandwidth currently available to the application.
  • the usefulness or utility of an application may be based on factors such as user preferences, quality or QoS factors required for sufficient bandwidth for a sufficient data-stream to be received by the application to operate adequately (e.g. as in high-fidelity video and audio rendering for content, such as movies, television, graphics, multi-media, games, web pages, etc. - which typically require high QoS), as well as other factors.
  • a utility function may be defined for an application downloading documents from the Internet for a client device (e.g. a computer).
  • a utility function may be defined for an application downloading and simultaneously playing an HDTV video program for a client device (e.g. an HDTV set).
  • the utility function may be approximated as a piecewise linear adaptive function, an example of which is shown in Figure 4 as function line 406.
  • the utility function represented by function line 406 may correspond to an application downloading documents from the Internet for a client device (e.g. a computer).
  • a utility function may be approximated as a discreetly adaptive function, an example of which is shown in Figure 4 as function line 410.
  • utility functions may include performance considerations of components external to the actual network elements. For example if the source of data is an MPEG-2 stream and the source data rate is being modified by a MPEG-2 encoder, the utility function may be discrete to reflect that the encoder cannot continuously change its data rate.
  • the utility function represented by function line 410 may correspond to an application downloading and simultaneously playing an HDTV video program for a client device (e.g. an HDTV set).
  • a utility function may depend on the characteristics of the data destination, reflecting how the perceived quality of the viewed video stream changes for different data rates. For example, as previously discussed, when a user is to view video, audio, graphics, web-pages and/or multi-media (e.g. on an HDTV client device as a destination device), the perceived quality of the viewed video stream by a user may be taken into account in the definition of the utility function. Thus, the utility function may take into account QoS factors. Further, the utility function may also depend on the combination of both source and destination characteristics. [0070] As previously discussed, bandwidth utility functions may also be scaled according to priorities. It is convenient to consider this separately from the utility functions themselves, for the purpose of logical simplicity.
  • Figure 5 shows a diagram 500 that illustrates an example of a scaled utility function, according to one embodiment of present invention.
  • Figure 5 shows a utility function A 506 and a scaled version of utility function A denoted as utility function B 510.
  • utility function B 510 may be generated by applying a scaling factor greater than 1.0 to utility function A 506.
  • the scale of 1.0 keeps the utility function unchanged.
  • the y-axis 502 corresponds to the utility or usefulness of the application and the x-axis 504 corresponds to the bandwidth required to obtain the desired amount of utility.
  • such a prioritization implemented by a scaled utility function such as scaled utility function B 510, maybe associated with the priority of a destination client device such as a video terminal — e.g. a high-resolution HDTV terminal may be given a higher priority than a lower resolution computer video display.
  • client device A 130 is a computer running an application to download documents from another computer over the Internet requiring a relatively small amount of bandwidth
  • client device C 134 is an HDTV set running an application to download and simultaneously play an HDTV video program (e.g. movies, television, graphics, multi-media, games, web pages, etc.), which requires a relatively large amount of bandwidth.
  • an HDTV video program e.g. movies, television, graphics, multi-media, games, web pages, etc.
  • priorities may be preset by utilizing a scaled utility function B 510 in order to make applications for HDTV video programs (requiring high bandwidth for high QoS needs) more important than applications for downloading documents over the Internet.
  • a minimum amount of bandwidth to maintain a certain QoS for an application related to downloading and simultaneously displaying an HDTV video program may be given higher priority than an application for Internet downloads, such that if there is not enough bandwidth for both, the Internet download will be allocated decreased bandwidth in order to accommodate the minimum bandwidth allocated to the HDTV application in order to maintain the HDTVs application QoS.
  • a flow diagram 600 illustrates, in more detail, an example of operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention.
  • the total available network bandwidth is shared in a way that maximizes the total utility of all the different applications currently using the network. It should be appreciated that there are many ways to implement this. For example, in a typical implementation, whenever the total available network bandwidth changes by an amount greater than a fixed threshold (e.g.
  • each node or client device may be allocated 0 bandwidth, and then the bandwidth allocation for all the nodes or client devices will be reallocated "from the beginning" to maximize the total utility of all the nodes or client devices in the network. It should be noted that is different from having all the nodes or client devices keeping the previous bandwidth allocations and simply adjusting the node or client device that would benefit most from the, for example, newly available increase in available bandwidth.
  • the server 102 is streaming a plurality of applications over wireless channel 150 to client devices A, B, C, and D 130, 132, 134, 136.
  • the method 600 continually monitors to see whether or not a condition occurs that may require a bandwidth reallocation.
  • the method 600 determines whether there has been a stream admission request for an application for one or more of the client devices of the network 100, such that a bandwidth reallocation may be required.
  • the method 600 determines whether there has been a stream removal notification for an application for one or more of the client devices of the network 100, such that a bandwidth reallocation may be required.
  • the method 600 determines whether the available network bandwidth has been changed by an amount greater than a fixed threshold resulting in a network bandwidth change indication, such that a bandwidth reallocation may be required.
  • a bandwidth estimation module of a bandwidth manager may be used estimate the current bandwidth available to the network, the required bandwidth for each streaming application in the network based on utility functions (e.g. as previously discussed with reference to Figure 4) to achieve pre-determined or desired QoS levels, as well as any priorities that some streaming applications may have over others (e.g. as previously discussed with reference to Figure 5).
  • the bandwidth manager module may be a bandwidth manager software module of the server 102, as previously discussed, or may reside in one or more client devices alone or in combination with the server 102.
  • the bandwidth estimation module may be used in implementing the operations of the method 600 to dynamically allocate bandwidth to applications in the network based on utility functions, as will be discussed below.
  • the method 600 determines whether there is adequate bandwidth for the minimum utility or usefulness of all the streaming applications based on the utility functions (UFs) for the streaming applications. If not, at block 618, it is next determined whether a stream admission is being considered. If so, a stream admission rejection notification is sent to the application, and the streaming application is not allowed to enter the network (block 620). If a streaming application admission is not being considered, then at block 624, the method 600 determines whether there is any streaming application with an extremely high packet loss rate. If so, that streaming application is dropped from the network and the application is notified that it has been dropped from the network (block 626). If not, then the most recently started stream application is dropped from the network and the application is notified that it has been dropped from the network (block 628).
  • UFS utility functions
  • the method 600 moves on to operation block 640.
  • the minimum requested bandwidth is allocated to all streaming applications of the network based on each streaming application's utility function (UF).
  • UF utility function
  • block 642 it is determined whether or not there is more bandwidth available in the network. If not, then the bandwidth allocations to the streaming applications are finally allocated and the streaming applications are notified of their bandwidth allocations (block 646). However, if there is more bandwidth available in the network, then a block 644, the remaining bandwidth is allocated to the streaming applications based on their utility functions. Next, the bandwidth allocations to the streaming applications are finally allocated and the streaming applications are notified of their bandwidth allocations (block 646).
  • the utility function for a given streaming application may be assigned a dynamic temporary utility penalty each time it's utility is modified to discourage utility changes that occur very often for any particular application.
  • network links that are particularly unreliable may be penalized since they may be regarded as wasteful of total bandwidth.
  • This penalty may be implicitly implemented by using the raw data rate to be the bandwidth for links, or this penalty may be explicitly implemented, for example as a decrease in priority for the link.
  • the flowchart shows one possible consequence of such a high-error link, where the link is potentially dropped during allocation of bandwidths to various links.
  • the operations previously described to dynamically allocate bandwidth to applications in a network based on utility functions may be implemented in any type of wireless network, wired network, combinations thereof, and in any type of suitable network protocol.
  • the operations may be performed in a IJDP protocol in conjunction with RTCP.
  • bandwidth allocation may be done not only when clients are leaving or entering the network, but also at any other time when the bandwidth on any existing link changes in a manner that warrants a reallocation of bandwidth amongst the clients.
  • FIG. 1 For embodiments of the invention, relate to a system, apparatus, and method for dynamically estimating the bandwidth of a network link in a wireless network.
  • the system includes at least one client device capable of receiving data over the wireless network and a server capable of transceiving data over a link of a wireless channel of the wireless network.
  • the server identifies the at least one client device in the wireless network and identifies applications that are being utilized in the wireless network by the at least one client device, in which each application has an associated link between the server and the client device and an associated data stream transmitted over the link.
  • the server passively estimates the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.
  • the bandwidth estimation module of the bandwidth manager 610 of Figure 6 may dynamically estimate and predict the network bandwidth of different network links on different channels, and then feed back this information to the data source.
  • the data source may be a server computer that includes such data sources as an MPG encoder.
  • the bandwidth estimation module of the bandwidth manager 610 may estimate the dynamic bandwidth of network links by utilizing passive estimation techniques of available bandwidth as will be discussed. Utilizing these passive estimation techniques, extra packets are not injected into the network. It should be appreciated that these passive estimation techniques may be utilized in contention-based networks as well as contention-free networks, however, will be discussed in the exemplary environment of a contention-based network.
  • the wireless network 100 provides for the streaming of information and data for multi-media data, video, audio, graphics, text, documents, etc., from the server 102 to client devices A, B, C, and D. Further, embodiments of the invention provide for the efficient streaming of high-fidelity video and audio content such as movies, television, graphics, multi-media, games, web pages, etc.
  • the home media server 102 when utilized as part of a home-network, streams data, such as video and audio data, to client devices A, B, C, D 130, 132, 134, and 136 over wireless channels through the home with high QoS and high bandwidth.
  • server 102 can efficiently stream high fidelity video and audio content, such as movies, television, graphics, multi-media, games, web pages, etc., to these client devices (e.g. including computers, digital television, high definition T.V. (HDTV), etc) throughout the household.
  • client devices e.g. including computers, digital television, high definition T.V. (HDTV), etc
  • bandwidth estimation module 610 may employ passive estimation techniques of available bandwidth for the links of the home network 100 and these estimations can be utilized in the rest of the previously-described process 600, in which, bandwidth is dynamically allocated to different applications in the network based on the utility functions defined for each of the applications.
  • each transmitting node e.g. access point 120
  • server 102 may operate a number of different applications that produce various data to be transmitted to the various client devices A, B, C, and D. These applications and their associated data may be related to the streaming of movies, television, games, web pages, etc. as previously discussed.
  • server 102 may estimate the dynamic bandwidth of each of the associated network links.
  • server 102 may be running a HDTV application in order to stream a HDTV movie to client C 134 over a link on wireless channel 150 and server 102 may be also running a Internet browsing application that is transmitted to client A 130 over another link on wireless channel 150, as well.
  • throughput generally refers to the actual amount of data or rate of data actually being transmitted over a channel via a link
  • bandwidth generally refers to the available amount of throughput reserved for data to be transmitted over a channel via a link
  • Figure 7 is a flow diagram 700 illustrating a process to estimate throughput for a link, according to one embodiment of the invention.
  • Process 700 may be implemented by bandwidth estimation module 610, previously discussed.
  • the clients of the wireless network are determined (block 702). For example, clients A, B, C, and D may be identified.
  • the time duration from the start of packet transmission to receipt by the receiving node is measured (block 704).
  • packet transmit time is estimated from the transmitting node (e.g. server 102). This may be done by measuring the time duration from the start of a packet transmission (i.e. or more precisely the time that the packet is queued for transmission) at the transmitting node to the reception of the corresponding Acknowledgement from the receiving node (e.g. one of the client devices A, B, C, D). It should be appreciated that for normal transmissions or burst transmission with burst-acknowledgements or selective acknowledgements, that the time duration may be measured from the time of the first packet transmission to the time of reception of the last Acknowledgement corresponding to the burst.
  • this measurement may be made at the media access (MAC) layer of the network, such that the measurement inherently includes factors such as queuing time, transmission data rate, contention for the medium, and packet re-transmissions.
  • MAC media access
  • the throughput for the packet is determined by the division of the size of the packet by the difference of the time of the transmit from the time of acknowledgement.
  • an estimation is obtained of network throughput for the corresponding link on a given channel between the transmitting and receiving nodes.
  • a wireless channel 150 is illustrated in Figure IA as being from the server 102 to one of the client devices A, B, C, D.
  • the throughput for a link is estimated (block 708). Because the data packet size includes the size of header bytes required by different protocol layers, this bandwidth estimation may take into account protocol overhead.
  • Equation Ib of Figure 9 is a restatement of Equation Ia:
  • Equation Ib particularly takes into account overhead time, back-off time, collision avoidance time, and retries.
  • the bandwidth estimation module 610 may determine the maximum estimated throughput for a link on a given channel.
  • Figure 8 is a process 800 to determine the maximum estimated throughput for a link.
  • throughput for a stream or link is estimated by averaging packet throughputs over a small period of time and/or over different packet sizes.
  • Equation Ic Equation Ic:
  • Equation Ic the throughput for a given stream is estimated by averaging packet throughputs over a small period of time and dividing the result by the small period of time to normalize it. This is used because throughput may actually change over time. Also, throughput may change based on the packet size itself and a similar averaging equation may be used for varying packet sizes, as well. Averaging these values improves accuracy.
  • Channel utilization also may be determined (block 804).
  • the ongoing estimated stream throughput may be combined with channel utilization for a steam transmission at the source node to determine a maximum estimated throughput or bandwidth for the particular link.
  • the utilization of a channel may be determined by the difference of the ratio of the amount of idle time in a given window to the total time of the window from the number 1. As an example, if the ratio of the amount of time a data stream is idle in a given window versus the total time window is 0.1 (e.g. 20 milliseconds idle time with respect to a 200 millisecond window of time) then the channel is being utilized 90% of the time.
  • the ongoing estimated stream throughput for a link is combined with the channel utilization in order to determine the maximum estimated throughput for a particular link (block 810).
  • the channel utilization is multiplied by the throughput of the stream (ThroughputsTREAM) to yield the maximum estimated throughput for the link (e.g. UtilizationcHANNEL * ThroughputsTREAM)
  • bandwidth may be dynamically estimated for one or more links on one or more channels.
  • server 102 may be running a HDTV application and streaming a HDTV movie to client C 134 over a link over wireless channel 150 at 30 megabits/second (determined as ThroughputsTREAM) with a channel utilization of .9 (UtilizationcHANNEL) yielding a maximum estimated throughput of this stream as 27 Megabits/second.
  • server 102 may be running an Internet browsing application and streaming web pages to client A 130 over a link over a wireless channel at 5 Megabits/second (determined as ThroughputsTREAM) with a channel utilization of .1 (UtilizationcHANNEL) yielding a maximum estimated throughput of this stream as .5 Megabits/second.
  • the server can dynamically estimate an amount of bandwidth to be allocated to an application in the wireless network based upon the maximum estimated throughput for the link for the associated application, and, as previously discussed, based upon a defined utility function for each of the applications, the server may dynamically allocate bandwidth to different applications in the wireless network based on the utility functions defined for each of the applications.
  • bandwidth may be dynamically estimated for one or more links on one or more channels. This bandwidth estimation may then be utilized in conjunction with the previously described process of Figure 6 in which bandwidth is dynamically allocated to applications in a network based on utility functions.
  • the server 102 may stream a plurality of applications via links over wireless channel 150 to client devices A, B, C, and D 130, 132, 134, 136.
  • the method 600 continually monitors to see whether or not a condition occurs that may require a bandwidth reallocation based upon the bandwidth estimation method 610 as previously described.
  • server 102 is running an application for an HDTV application over a first link via channel 150 while simultaneously running an application that streams Internet data for use by a web browser to client A 130, the bandwidth estimation techniques previously discussed can continually dynamically estimate the bandwidth utilized by each of these links over the channel, as previously discussed.
  • priorities may be set such that HDTV video program (requiring high bandwidth for high QoS needs) is considered more important than the application for web-browsing over the Internet.
  • a minimum amount of bandwidth to maintain a certain QoS for an application related to displaying an HDTV video program may be given higher priority than an application for Internet downloads, such that if there is not enough bandwidth for both, the Internet download will be allocated decreased bandwidth in order to accommodate the minimum amount of bandwidth allocated to the HDTV application in order to maintain the HDTVs applications QoS. This of course may result in slower Internet downloads for the client device computer, however the quality of the HDTV video and audio being displayed through the HDTV client device will not be sacrificed.
  • embodiments of the present invention may be implemented as a method, system, apparatus, or machine-readable medium (e.g. a software module, a processor readable medium, a computer readable medium, code segments, etc.) using standard programming and/or engineering techniques to produce software, firmware, hardware, middleware, or any combination thereof.
  • machine-readable medium e.g. a software module, a processor readable medium, a computer readable medium, code segments, etc.
  • the present invention can be implemented in hardware, software, firmware, middleware or a combination thereof and utilized in systems, subsystems, components, or sub-components thereof.
  • the elements of the present invention are the code segments to perform the necessary tasks.
  • the program or code segments can be stored in a machine readable medium, such as a processor readable medium or a computer program product, or transmitted by a computer data signal embodied in a carrier wave, or a signal modulated by a carrier, over a transmission medium or communication link.
  • the machine-readable medium or processor-readable medium may include any medium that can store or transfer information in a form readable and executable by a machine (e.g.
  • the machine/processor-readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable programmable ROM (EPROM), a floppy diskette, a compact disk CD-ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, etc.
  • the computer data signal may include any signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic, RF links, etc.
  • the code segments may be downloaded via computer networks such as the Internet, Intranet, etc.
  • embodiments of the present invention can be generally implemented in a computer as one or more computer programs, to perform the desired operations, functions, and processes as previously described.
  • the computer programs are comprised of instructions which when read and executed by the computer, cause the computer to perform the operations necessary to implement and/or use the present invention.
  • the computer programs are tangibly embodied in and/or readable from a device, carrier, or media, such as memory, data storage devices, and/or a remote device coupled to the computer via data communication devices. Under control of the operating system, the computer programs may be loaded from memory, data storage devices, and/or remote devices into the memory of the computer for use during operations.

Abstract

Disclosed is a system, apparatus, and method for dynamically estimating the bandwidth of a network link in a wireless network. The system includes at least one client device capable of receiving data over the wireless network and a server capable of transceiving data over a link of a wireless channel of the wireless network. The server identifies the at least one client device in the wireless network and identifies applications that are being utilized in the wireless network by the at least one client device, in which each application has an associated link between the server and the client device and an associated data stream transmitted over the link. The server passively estimates the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.

Description

SYSTEM AND METHOD FOR DYNAMIC BANDWIDTH ESTIMATION OF
NETWORKLINKS
CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of Application No. 10/397,466 filed on March 26, 2003.
FIELD OF THE INVENTION
[0002] The present invention relates generally to networks and, more particularly, to a system and method for dynamic bandwidth estimation of network links.
BACKGROUND INFORMATION
[0003] Typically, a network generally refers to a communication system that allows users to access resources on other computers and to exchange data and messages with other users. Particularly, a network allows users to share resources on their own systems and with other network users and to access information on centrally located systems or systems that are located at remote offices. Networks generally also provide connections to the Internet or other networks of other organizations. Further, network connections allow users to operate from their home, their office, or at other locations.
[0004] More particularly, a network is a data communications system that links two or more devices (e.g. computers, peripheral devices, etc.). Generally, a network consists of a cable that attaches to network interface cards (NICs) of devices to allow communication between the devices. Further, typically, users interact with network-enabled software applications to make a network request such as to get a file from another computer or to print a document on a network printer. The application communicates with network software and the network software interacts with the network hardware. The network hardware is responsible for transmitting information to other devices attached to network.
[0005] A local area network (LAN) is a network that is located in a relatively small area such as a department, a building, or a home. Technically, a LAN consists of a shared medium to which devices attach to communicate with one another using broadcast methods. With broadcasting, any device on the LAN can transmit a message that all the other devices on the LAN can listen to.
[0006] Over the last decade or so, for many businesses, it has become a necessity for employees to share data over an enterprise network featuring one or more LANs. To improve efficiency, enhancements have been added to LANs such as remote wireless access. This enhancement provides an important extension in forming a wireless local area network (WLAN).
[0007] Typically, wireless networks support communications between a station or server and wireless clients, and among the various wireless clients themselves, utilizing access points (APs). hi general, each AP operates as a relay station by supporting communications between the wireless clients themselves and between the wireless clients and the server. Further, data transmitters within a wireless network, such as data transmitters operating using an Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless protocol, can transmit data at different rates to different clients. Oftentimes, the data transmitters (e.g. including an antenna), are included as part of an access point.
[0008] Further, home networks including wireless home-networks, similar to WLAN's, have become increasingly popular. For example, in wireless home-networks, a home media server streams data, such as video and audio data, to client devices throughout the home. Better Quality of Service (QoS), and better bandwidth, allows the server to stream high fidelity content, such as movies, television, graphics, multi-media, games, web pages, etc., to client devices throughout the house. Hence, it is important to optimize QoS and network bandwidth, which is particularly important for unreliable and lower-bandwidth networks, such as wireless networks. WLAN's and wireless home-networks, as well as other types of wireless networks, will be generally referred to as wireless networks.
[0009] Within a network, whether it be a wired network or a wireless network, in order to provide reliable service, it is oftentimes necessary to constrain network resource usage for individual nodes or devices of the network. For example, if node A and node B are using a network for transmission, node A and node B may share the available bandwidth equally and may each be limited to no more than 50% of the bandwidth available on the network, respectively, or node A and node B may share the available bandwidth as 20% and 80%, respectively. Obviously, many other combinations are possible. [0010] However, often, many issues arise as to how bandwidth between competing nodes should be allocated in the network and further as to how to allocate bandwidth when new nodes wish to be admitted into the network. AU of these factors can lead to congestion problems in the network. Moreover, these issues become even more complex when network bandwidth changes dynamically, such as in wireless networks.
[0011] Network based applications often provide better performance and quality when they utilize more network bandwidth and hence have more throughput. For example, by utilizing more network bandwidth, an audio-visual (AfV) streaming application may send data at a higher MPEG-2 data rate, which provides for higher quality video at the destination.
[0012] However, in inherently unreliable networks, such as wireless networks, or other networks in which the bandwidth available to a particular application may change unpredictably (e.g. in wireless RF networks, this unpredictability may be due to shadowing, multi-path, or active RF interference, etc.), high utilization of network bandwidth by applications can lead to network congestion when available network bandwidth suddenly decreases. This may lead to unacceptable performance and/or quality at the destination node.
[0013] In addition, in contention-based networks (for example, Ethernet, Distributed Coordination Function (DCF) or Enhanced DCF (EDCF) of the IEE802.11 Wireless Protocol) each node in the network competes for access in the transmission medium. Due to this, available network bandwidth depends not only on issues such as multi-path and shadowing, but also on the number of nodes using the network and the time-distribution of transmission by these nodes. A large number of nodes can therefore increase contention thereby decreasing useful bandwidth.
[0014] Hence, in these types of inherently unreliable wireless networks, it is beneficial to be able to dynamically estimate and predict network bandwidth on different network links accurately and to dynamically and rapidly change the data rate to prevent congestion while maximizing usage of current available network bandwidth. Unfortunately, previous methods of congestion avoidance do not take into account the unique characteristics associated with inherently unreliable networks, such as wireless networks.
SUMMARY OF THE INVENTION [0015] Disclosed is a system, apparatus, and method for dynamically estimating the bandwidth of a network link in a wireless network. The system includes at least one client device capable of receiving data over the wireless network and a server capable of transceiving data over a link of a wireless channel of the wireless network. The server identifies the at least one client device in the wireless network and identifies applications that are being utilized in the wireless network by the at least one client device, in which each application has an associated link between the server and the client device and an associated data stream transmitted over the link. The server passively estimates the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
[0017] Figure IA shows an example of a wireless network in accordance with one embodiment of the present invention.
[0018] Figure IB shows an example of a wired network in accordance with one embodiment of the present invention.
[0019] Figure 2 shows a diagram of an example of a station or a server of Figure IA or IB, which may be utilized in practicing one embodiment of the present invention.
[0020] Figure 3 shows a flow diagram that illustrates operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention.
[0021] Figure 4 shows a diagram that illustrates examples of utility functions, according to one embodiment of the present invention.
[0022] Figure 5 shows a diagram that illustrates an example of a scaled utility function, according to one embodiment of present invention. [0023] Figure 6 shows a flow diagram that illustrates, in more detail, an example of operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention.
[0024] Figure 7 is a flow diagram illustrating a process to estimate throughput for a link, according to one embodiment of the invention.
[0025] Figure 8 is a flow diagram illustrating a process to determine the maximum estimated throughput for a link, according to one embodiment of the invention.
[0026] Figure 9 is a table illustrating equations that may be used in the dynamic bandwidth estimation of network links, according to one embodiment of the invention.
DETAILED DESCRIPTION
[0027] hi the following description, the various embodiments of the invention will be described in detail. However, such details are included to facilitate understanding of the invention and to describe exemplary embodiments for employing the invention. Such details should not be used to limit the invention to the particular embodiments described because other variations and embodiments are possible while staying within the scope of the invention. Furthermore, although numerous details are set forth in order to provide a thorough understanding of the embodiments of the invention, it will be apparent to one skilled in the art that these specific details are not required in order to practice the embodiments of the invention. In other instances details such as, well-known methods, types of data, protocols, procedures, components, electrical structures and circuits, are not described in detail, or are shown in block diagram form, in order not to obscure the invention. Furthermore, embodiments of the invention will be described in particular embodiments, but may be implemented in hardware, software, firmware, middleware, or a combination thereof.
[0028] Herein, embodiments of the invention may be applicable to a variety of wireless networks such as a wireless local area network (WLAN), a wireless personal area network (WPAN) and/or a wireless home-network, as well as other types of wireless networks. These types of networks will be generally referred to as wireless networks. For example, the wireless network may be configured in accordance with any Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard such as an IEEE 802.11b standard entitled "Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: Higher-Speed Physical Layer Extension in the 2.4 GHz Band" (IEEE 802.1 Ib, 1999), an IEEE 802.1 Ia standard entitled "Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: High-Speed Physical Layer in the 5 GHz Band" (IEEE 802.1 Ia, 1999) or a revised IEEE 802.11 standard "Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications" (IEEE 802.11, 1999). Of course, the invention may be compliant with systems configured in accordance with High Performance Radio Local Area Networks (HiperLAN) or subsequently published specifications.
[0029] Furthermore, embodiments of the invention are applicable to a variety of other types of networks, such as wired networks based on Powerline Communication (PLC) or the standard Ethernet networks (e.g. a local area network (LAN), or a wide area network (WAN), the Internet, etc.), which is packetized, packet-switched, connection oriented, etc., type network that can utilize Transmission Control Protocol/Internet Protocol (TCP/IP), Asynchronous Transfer Mode (ATM), Frame Relay (FR), Point-to Point Protocol (PPP), Systems Network Architecture (SNA), Voice over Internet Protocol (VoIP), or any other sort of protocol. For example, the computer network may allow the communication of data traffic between server(s) and client devices using packets. Embodiments of this invention may also be applicable to non-RF wireless networks such as optical networking.
[0030] In the following description, certain terminology is used to describe features of the invention. For example, a "component", or "computing device", or "client device", or "computer" includes hardware and/or software module(s) that are configured to perform one or more functions. Further, a "processor" is logic that processes information. Examples of a processor include a microprocessor, an application specific integrated circuit, a digital signal processor, a micro-controller, a finite state machine, or even combinatorial logic.
[0031] A "software module" is executable code such as an operating system, an application, an applet or even a routine. Software modules may be stored in any type of memory, namely suitable storage medium such as a programmable electronic circuit, a semiconductor memory device, a volatile memory (e.g., random access memory, etc.), a non-volatile memory (e.g., read-only memory, flash memory, etc.), a floppy diskette, an optical disk (e.g., compact disk or digital versatile disc "DVD"), a hard drive disk, tape, or any kind of interconnect (defined below). [0032] An "interconnect" or "link" is generally defined as an information-carrying medium that establishes a communication pathway. Examples of the medium include a physical medium (e.g., electrical wire, optical fiber, cable, bus traces, etc.) or a wireless medium (e.g., air in combination with wireless signaling technology).
[0033] "Information" or "data stream" is defined as data, address, control or any combination thereof. For transmission, information may be transmitted as a message, namely a collection of bits in a predetermined format. One particular type of message is a frame including a header and a payload, each having a predetermined number of bits of information.
[0034] Embodiments of the invention relate to a system, apparatus, and method for dynamically allocating bandwidth to applications in a network based on utility functions. The bandwidth being referred to herein is typically the actual usable bandwidth for application-level data, after taking into account packet error rates, protocol overhead, etc. However, embodiments of the invention are also applicable when the bandwidth being referred to is the raw data rate for the network link, or some other estimate of network throughput, hi addition, while bandwidth is generally the parameter addressed directly herein, embodiments of the invention further relate to and include the allocation of other streaming parameters such as jitter and latency, which may also be allocated in a similar manner. As previously discussed, allocating bandwidth amongst competing client devices and admitting new client devices to a network becomes complex when network bandwidth changes dynamically, such as in a wireless network.
[0035] Embodiments of the present invention relate to allocating bandwidth dynamically to client devices of a network, based on utility functions. More particularly embodiments of the invention relate to dynamically adjusting the bandwidth available to each client device, based on a utility function for each client device, such that the bandwidths allocated to each client device are tailored to optimize the performance of the respective client device (based on the respective utility function) and the bandwidths fit within the overall available bandwidth of the network. Further, by utilizing utility functions, each client device can then use the optimized bandwidth allocated to it, such that the overall system utility is optimized. Also, it should be noted that the server by itself, the client devices themselves, or a combination of the server and one or more client devices, may implement aspects of the present invention in order to dynamically allocate bandwidth to applications in a network based on utility functions.
[0036] With reference now to Figure IA, Figure IA shows an example of a wireless network 100 in accordance with one embodiment of the present invention. Herein, exemplary wireless network 100 includes a station or server 102 that may communicate with a plurality of clients and with one or more other wired networks 104 (e.g. a LAN, cable network, Internet, etc.). Particularly, in this example, server 102 through switch 108 may communicate via link 110 to client device E 112. For example, link 110 may be a wired type link in accordance with an Ethernet standard. It should be appreciated, and as particularly shown in Figure IA, that link 110 may couple to any number of client devices. Further, server 102 through switch 108 may communicate via link 115 to another network 104 (e.g. a LAN, cable network, Internet, etc.). For example, link 115 may be a wired type link in accordance with an Ethernet standard.
[0037] Furthermore, server 102 through switch 108 maybe coupled to access point 1 120 to communicate with client device A 130, client device B 132, client device C 134, and client device D 136 through access point A 140, access point B 142, access point C 144, and access point D 146, respectively, via wireless channel 1 150, as will be discussed. Clients A, B, C, D are each of course in communication with their respective access point.
[0038] Moreover, it should be noted that instead of client devices A, B, C, D utilizing access points, that the network may instead comprise non-access point wireless client devices. For example, these non-access point wireless client devices may be utilized as part of an "Ad-hoc" type network (e.g. in accordance with IEEE 802.11 terminology) and the non-access point wireless client devices would be termed "stations" in 802.11 terminology. In this embodiment, the client devices would include suitable wireless network interface cards (e.g. PCI, PCMI, etc., type cards) employed within, or possibly separate from, the wireless client device to transceive and process wireless information to and from the wireless client device. A wireless network interface card (NIC) component typically includes an antenna, a receive (RX) interface, a transmit (TX) interface, and a converter. The converter may be implemented as a component that can perform both analog-to-digital signal conversion as well digital-to-analog conversion. Although, a wireless NIC typically comprises a wireless transceiver, it is of course contemplated that the wireless NIC may feature only RX or TX functionality such that only a receiver or transmitter is implemented. In any event, it should be appreciated by those skilled in the art that the embodiments of present invention may be used in conjunction with either access-point type wireless client devices or non-access point wireless client devices (e.g. "stations" in 802.11 terminology).
[0039] As shown in Figure IA, access point 1 120 and access points A, B, C, D 140, 142, 144, and 146 support bi-directional communication by (i) receiving data frames from clients A, B, C, D 130, 132, 134, 136 and transmitting data from these frames onto a physical medium such as link 110 to other client devices (e.g. client E 112) and/or link 115 to wired network 104 and (ii) receiving data from wired network 104 and other client devices (e.g. client E 112) and transmitting data frames to one or more targeted clients A, B, C, D 130, 132, 134, 136. Each of the access points includes a respective antenna 149 to transceive wireless information and a link 151 to transceive the information to client devices, components, or other networks.
[0040] It should be appreciated that access point 120 may also support a plurality of different wireless channels (e.g. wireless channels 1-N). Further, it should be appreciated that server 102 and switch 108 may also support a plurality of different access points (e.g. access point 1-N).
[0041] Network 104 can be of any type of network, including but not limited or restricted to Ethernet, Token Ring, Asynchronous Transfer Mode (ATM), LAN, WAN, Internet, Intranet, etc. Moreover, network 104 and clients accessible by link 110 feature resources that are available for users of wireless network 100. Such resources may include devices for data storage, which are coupled to links 110 and/or 115. A
[0042] It should be appreciated that, in one embodiment, client devices A, B, C, D 130, 132, 134, 136 communicate with and access information from server 102 via their respective access points over the air in accordance with an IEEE 802.11 communications protocol or another wireless networking protocol. Hence, access point 1 120 and access points A, B, C, D 140, 142, 144, 146 each generally operate as a transparent bridge connecting both a wireless network including clients A, B, C, D 130, 132, 134, 136 through server 102 to other networks, for example the LAN network including client device E 112 and possibly other clients and/or network 104.
[0043] In the example of wireless network 100 of Figure IA, the client devices may be grouped as far clients, clients A and B 130 and 132, which are relatively far from access points 1 120 of the server 102, and near clients, clients C and D 134 and 136, which are relatively near to the access point 1 of the server 102. Further, access point 1 120 will sometimes be generally referred to as transmitter 120 to aid in the ease of description.
[0044] It should be appreciated that access point A 140 may communicate and support a plurality of other far clients in addition to client A 130, as indicated in Figure IA. Access point B 142 may also communicate and support a plurality of other far clients in addition to client B 132, as indicated in Figure IA. Similarly, access point C 144 may communicate and support a plurality of other near clients in addition to client C 134, as indicated in Figure IA. Additionally, access point D 146 may also communicate and support a plurality of other near clients in addition to client D 136, as indicated in Figure IA.
[0045] Further, it should be appreciated that Figure IA is only an example of one type of configuration of a wireless network in which embodiments of the invention may be practiced, as will be discussed. Any number of servers, access points, and client devices and configurations thereof may be utilized. Furthermore, the server 102 may utilize any number of access points (e.g. access points 1-N), as indicated in Figure IA, and may communicate utilizing any number of wireless channels (e.g. wireless channels 1-N), as indicated in Figure IA. Moreover, each access point may support one wireless channel or may support any number of wireless channels, dependent upon the configuration of the wireless network. Additionally, it should be appreciated that server 102 may be connected to any number of other wired or wireless networks, or combinations thereof.
[0046] Additionally, with reference to Figure IB, in one embodiment, instead of utilizing a wireless network, a network 102 including a wired type network 103 may be utilized to connect the server 102 to the client devices A, B, C, D 130, 132, 134, 136. Thus, embodiments of the invention may be applicable to a variety of other types of networks, such as wired networks (e.g. a local area network (LAN), or a wide area network (WAN), the Internet, etc.), which may be packetized, packet-switched, connection oriented, etc., type networks and that can utilize Transmission Control Protocol/Internet Protocol (TCP/IP), Asynchronous Transfer Mode (ATM), Frame Relay (FR), Point-to Point Protocol (PPP), Systems Network Architecture (SNA), Voice over Internet Protocol (VoIP), or any other sort of protocol. The wired network 103 allows the communication of data traffic between sever(s) 102 and client devices A, B, C, D 130, 132, 134, 136 using packets. Data traffic through the network 103 may be of any type including audio, text, graphics, video, e-mail, Fax, multi-media, documents, voice, and other generic forms of data. The network 103 is typically a data network that may contain switching or routing equipment designed to transfer digital data traffic.
[0047] It should be appreciated that the Figure IB environment is only exemplary and that embodiments of the present invention can be used with any type of telecommunication system and/or computer network, protocols, and combinations thereof. Further, it should be appreciated, that the particular configurations of the wireless network 100 and wired network 101 disclosed in Figures IA and IB are only used as examples in which to discuss the embodiments of the invention, and should not be used to attempt to limit the embodiments of the invention. Further, it should be appreciated that embodiments of the invention can be utilized in a wide variety of wireless and wired networks and combinations thereof.
[0048] Also, it should be appreciated that the client devices of the networks 100 and 101 may be any type of hardware and/or software based computing component or device or electronic component or device such as a computer (e.g. desktop, notebook, server), personal digital assistant "PDA", telephone, alphanumeric pager, television (standard, digital, high-definition, etc.), set-top box, etc. It should be appreciated that this list is only a small exemplary list of all the possible types of clients that can be part of the networks 100 and 101. Many other types of client devices should be apparent to those of skill in the art.
[0049] Turning now to Figure 2, Figure 2 shows a diagram of an example of the station or server 102 of Figure IA or IB, which may be utilized to practice one embodiment of the present invention. Referring to Figure 2, in one embodiment, the station or server 102 may include a processor 210, a memory 220, a user interface 230 (e.g. a keyboard, mouse, etc.), a display device (e.g. a monitor, LCD display, etc.) 235, a plurality of input/output (VO) devices 240 and a network interface 245 which may comprise part of switch 108.
[0050] Examples of the processor 210 that may be utilized include a microprocessor, an application specific integrated circuit, a digital signal processor, a micro-controller, a finite state machine, or even combinatorial logic. Examples of I/O devices 240 may include any I/O device to perform I/O functions. For example, I/O devices may include a printer, storage devices (e.g. Compact Disk ROM (CD ROM), Digital Video Disk (DVD), hard drive, floppy drive, etc.) or any other types of I/O devices, e.g., controllers for input devices (mouse, trackball, pointing device), media cards (e.g. audio, video, graphics), etc. The switch 108 including network interface 245 may include suitable network interface cards to interface with the access points of the wireless network 100, the wired network 103, the wired network 104, client devices, and the Ethernet network (link 110), as previously discussed, as well other types of networks, interfaces and client devices.
[0051] Further, memory 220 may include a bandwidth manager software module 250 for dynamically allocating bandwidth to applications in a network based on utility functions, in order to implement embodiments of the present invention, as will be discussed in more detail later. The bandwidth manager software module 250 includes executable code such as an operating system, an application, an applet or even a routine. The software module 250 may be stored in memory 220, which may be any type of memory, namely a suitable storage medium such as a programmable electronic circuit, a semiconductor memory device, a volatile memory (e.g., random access memory, etc.), a non-volatile memory (e.g., read-only memory, flash memory, etc.), a floppy diskette, an optical disk (e.g., compact disk or digital versatile disc "DVD"), a hard drive disk, tape, etc. Further, in alternative embodiments, one or more client devices (e.g. client devices A, B, C, and D) may store a software module to dynamically allocate bandwidth to applications in a network based on utility functions, in addition to or in place of the server 102.
[0052] It should be appreciated that embodiments of the present invention can be practiced with any sort of station, client device, server computer, general purpose computer, or any sort of computing or electronic device that includes circuitry capable of processing data. In particular, embodiments of the invention can be generally implemented in a computer as one or more software modules or computer programs to perform the desired functions. The computer programs are comprised of machine-readable instructions (e.g. code segments) which when read and executed by the computer, cause the computer to perform the operations necessary to implement and/or use the present invention. Generally, the computer programs are tangibly embodied in and/or readable from a device, carrier, or media, such as memory, data storage devices, and/or a remote device coupled to the computer via data communication devices. The computer programs may be loaded from memory, data storage devices, and/or remote devices into the memory of the computer for use during operations.
[0053] It should be appreciated by those skilled in the art that the Figure 2 computer system configuration 200 is only one example of a basic computer system for use as a station or server. Further, those skilled in the art will recognize that the exemplary embodiment illustrated in Figure 2 is not intended to limit the embodiments of the invention.
[0054] Moreover, while aspects of the invention and various functional components have been described in particular embodiments, it should be appreciated these aspects and functionalities can be implemented in hardware, software, firmware, middleware or a combination thereof.
[0055] Referring again to Figures IA and IB, the wireless network 100 and wired network 101, previously discussed, may be utilized as a network (e.g. a WLAN or standard LAN) by itself or may be part of a larger network for use by a business or for use in the home, or for use by any other entity. In one aspect, the networks 100 and 101 according to embodiments of the present invention provides for the efficient streaming of information and data for multi-media data, video, audio, graphics, text, documents, etc., from the server 102 to client devices A, B, C, and D. Further, embodiments of the present invention provide for the efficient streaming of high fidelity video and audio content such as movies, television, graphics, multi-media, games, web pages, etc. Particularly, in one embodiment, when utilized as part of a home-network, the home media server 102 streams data, such as video and audio data, to client devices A, B, C, D 130, 132, 134, 136 throughout the home with high QoS and high bandwidth such that the server can efficiently stream high fidelity video and audio content, such as movies, television, graphics, multi-media, games, web pages, etc., to client devices (e.g. including computers, digital television, high definition television (HDTV), etc.) throughout the household.
[0056] Basically, embodiments of the invention relate to a system, apparatus, and method for dynamically allocating bandwidth to applications in a network based on utility functions. One or more client devices are present in the network and are capable of receiving data over the network. In one embodiment, a server capable of transceiving data over the network is coupled to the client devices through the network. The server identifies the client devices in the network and identifies the applications being utilized in the network by the client devices. Utility functions are defined for each of the applications. A utility function may be used to specify the minimum amount of bandwidth required by the application to perform at a pre-determined quality level. Bandwidth is dynamically allocated to different applications in the network based on the utility functions defined for each of the applications. [0057] As previously discussed, allocating bandwidth amongst competing client devices and admitting new client devices to a network becomes complex when network bandwidth changes dynamically, such as in a wireless network. Embodiments of the present invention relate to allocating bandwidth dynamically to client devices of a network, based on utility functions. More particularly embodiments of the invention relate to dynamically adjusting the bandwidth available to each client device, based on a utility function for each client device, such that the bandwidths allocated to each client device are tailored to optimize the performance of the respective client device (based on the respective utility function) and the bandwidths fit within the overall available bandwidth of the network, such that the overall system utility is optimized. Further, by utilizing utility functions, each client device can use the optimized bandwidth allocated to it such that the overall system utility is optimized. It should be appreciated that aspects of the present invention may be utilized with one or more servers and one or more client devices.
[0058] More particularly, in one embodiment, a utility function that describes the utility or usefulness of a given amount of bandwidth for each "application" using the network is defined. The "application" can be generally defined to be a sequence of data corresponding to a transmission of information (e.g. a data stream) between the server to one or more client devices. Also, the "application" may be defined as the actual software application that utilizes the data or some other function, device, or a routine that utilizes the data. In one embodiment, the utility function may specify the minimum amount of bandwidth useful to an application to perform adequately or at a pre-determined or desired quality level, as well as the change in utility or usefulness that would result from a given change of bandwidth currently available to the application.
[0059] For example, as previously discussed with reference to Figures IA and IB, one or more of the client devices A, B, C, D 130, 132, 134, 136 may be utilizing a function or application that requires a certain amount of bandwidth for a data stream or application being streamed to it, in order to properly utilize the data stream at an adequate level of quality. In one example, a client device such as: a computer, set top box, or a television (e.g. an HDTV), may be utilizing an application requiring a relatively high level of bandwidth to render high-fidelity video and audio such as movies, television, graphics, multi-media, games, web pages, etc., with a sufficient level of quality (i.e. requiring a relatively high QoS). For example, in one embodiment, when utilized as part of a home- network, the home media server 102 streams data, such as video and audio data, to client devices A, B, C, D 130, 132, 134, 136 throughout the home. Some of these client devices may be running applications that require high QoS and high bandwidth in order to render high fidelity video and audio content such as movies, television, graphics, multi-media, games, web pages, etc. It should be appreciated that embodiments of the present invention may be applied to networks with fixed bandwidths, e.g. a wired network 101 as shown in Figure IB, or networks with variable (i.e. unreliable) bandwidth, e.g. a wireless network 100 as shown in Figure IA.
[0060] With reference also to Figure 3, a flow diagram 300 illustrates the operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention. Initially, the client devices in the wireless or wired network (e.g. Figure IA or IB, respectively) are identified (block 302). For example, clients A, B, C, and D denoted 130, 132, 134 and 136, respectively, would be determined to be the client devices of the network. Next, applications currently being used in the network are identified (block 304). For example, client device A 130 may be a computer running an application to download documents from another computer over the Internet requiring a relatively small amount of bandwidth, whereas client device C 134 may be an HDTV set running an application to download and simultaneously play an HDTV video program (e.g. movies, television, graphics, multimedia, games, web pages, etc.) requiring a relatively large amount of bandwidth.
[0061] Next, operations are performed to define a utility function for each application currently being used in the network (block 306). Particularly, as will be discussed, utility functions associate the amount of utility or usefulness of the application vs. the bandwidth required to obtain the desired amount of utility. Thus, as an example, a utility function for the application downloading documents from the Internet for client device A 130 and a utility function for the application downloading and simultaneously playing an HDTV video program for client device C 134 would be defined.
[0062] Moreover, the utility functions may be scaled based on pre-determined or desired (e.g. user defined) priorities in order to prioritize which applications are more important than others and to allocate bandwidth accordingly (block 308). For example, continuing with the present example, if priorities are defined (e.g. by the user or system), in order to make applications for HDTV video programs (requiring relatively high bandwidth for high QoS needs) more important than applications for downloading documents over the Internet, the utility functions will be scaled to reflect this. Thus, based on the priority and scaling factors a minimum amount of bandwidth to maintain certain QoS levels for both the application downloading documents and the application downloading and simultaneously displaying an HDTV video program are defined. However, because the HDTV application is given higher priority than the application for Internet document downloads, if there is not enough bandwidth for both, the Internet download will be allocated decreased bandwidth in order to accommodate the minimum amount of bandwidth allocated to the HDTV application in order to maintain the HDTV's application QoS. This of course may result in slow Internet downloads. However, the quality of the HDTV video program being displayed will not be sacrificed.
[0063] Lastly, at block 310, bandwidth is allocated to different applications in the network based on the utility functions defined for each application. Methods of allocating bandwidth to different applications in the network based on the utility functions defined for each application will be discussed in more detail later.
[0064] It should be appreciated that the operations to dynamically allocate bandwidth to applications in a network based on utility functions, and to define utility functions for each application being used in the network, as previously described with reference to Figure 3, in one embodiment, may be implemented in a computing device having a software module to aid in implementing these functions. Particularly, in one embodiment, a computing device such as station or server 102, previously described with reference to Figure 2, may utilize a bandwidth manager software module 250 stored in memory 220 implemented under the control the processor 210, as previously discussed, to implement these functions.
[0065] Referring now to Figure 4, Figure 4 shows a diagram 400 illustrating examples of utility functions, according to one embodiment of the present invention. As shown in Figure 4, a utility function defines the utility or usefulness of an application (y-axis 402) vs. the bandwidth (x-axis 404) required to obtain the desired amount of utility. Accordingly, the utility function may be used to specify a minimum amount, of bandwidth that is useful to an application to keep the application working at an adequate level, as well as to estimate the change in utility or usefulness that would result from a given change of bandwidth currently available to the application. Further, it should be appreciated that the usefulness or utility of an application (as shown by the y-axis 402) may be based on factors such as user preferences, quality or QoS factors required for sufficient bandwidth for a sufficient data-stream to be received by the application to operate adequately (e.g. as in high-fidelity video and audio rendering for content, such as movies, television, graphics, multi-media, games, web pages, etc. - which typically require high QoS), as well as other factors.
[0066] As previously discussed, for example, a utility function may be defined for an application downloading documents from the Internet for a client device (e.g. a computer). Similarly, as another example, a utility function may be defined for an application downloading and simultaneously playing an HDTV video program for a client device (e.g. an HDTV set).
[0067] As an example, for implementations in computer software, the utility function may be approximated as a piecewise linear adaptive function, an example of which is shown in Figure 4 as function line 406. Thus, continuing with the previous example, the utility function represented by function line 406 may correspond to an application downloading documents from the Internet for a client device (e.g. a computer).
[0068] As another example, a utility function may be approximated as a discreetly adaptive function, an example of which is shown in Figure 4 as function line 410. Particularly, utility functions may include performance considerations of components external to the actual network elements. For example if the source of data is an MPEG-2 stream and the source data rate is being modified by a MPEG-2 encoder, the utility function may be discrete to reflect that the encoder cannot continuously change its data rate. Thus, continuing with the previous example, the utility function represented by function line 410 may correspond to an application downloading and simultaneously playing an HDTV video program for a client device (e.g. an HDTV set).
[0069] Also, it should be appreciated that a utility function may depend on the characteristics of the data destination, reflecting how the perceived quality of the viewed video stream changes for different data rates. For example, as previously discussed, when a user is to view video, audio, graphics, web-pages and/or multi-media (e.g. on an HDTV client device as a destination device), the perceived quality of the viewed video stream by a user may be taken into account in the definition of the utility function. Thus, the utility function may take into account QoS factors. Further, the utility function may also depend on the combination of both source and destination characteristics. [0070] As previously discussed, bandwidth utility functions may also be scaled according to priorities. It is convenient to consider this separately from the utility functions themselves, for the purpose of logical simplicity. With reference now to Figure 5, Figure 5 shows a diagram 500 that illustrates an example of a scaled utility function, according to one embodiment of present invention. Particularly, Figure 5 shows a utility function A 506 and a scaled version of utility function A denoted as utility function B 510. For example, utility function B 510 may be generated by applying a scaling factor greater than 1.0 to utility function A 506. Naturally, the scale of 1.0 keeps the utility function unchanged. Again, as with Figure 4, in Figure 5, the y-axis 502 corresponds to the utility or usefulness of the application and the x-axis 504 corresponds to the bandwidth required to obtain the desired amount of utility. For example, such a prioritization implemented by a scaled utility function, such as scaled utility function B 510, maybe associated with the priority of a destination client device such as a video terminal — e.g. a high-resolution HDTV terminal may be given a higher priority than a lower resolution computer video display.
[0071] For instance, in the previous example discussed with reference to the wireless and wired networks of Figures IA and IB, respectively, client device A 130 is a computer running an application to download documents from another computer over the Internet requiring a relatively small amount of bandwidth, whereas client device C 134 is an HDTV set running an application to download and simultaneously play an HDTV video program (e.g. movies, television, graphics, multi-media, games, web pages, etc.), which requires a relatively large amount of bandwidth.
[0072] Continuing with the previous example, priorities may be preset by utilizing a scaled utility function B 510 in order to make applications for HDTV video programs (requiring high bandwidth for high QoS needs) more important than applications for downloading documents over the Internet. Thus, a minimum amount of bandwidth to maintain a certain QoS for an application related to downloading and simultaneously displaying an HDTV video program may be given higher priority than an application for Internet downloads, such that if there is not enough bandwidth for both, the Internet download will be allocated decreased bandwidth in order to accommodate the minimum bandwidth allocated to the HDTV application in order to maintain the HDTVs application QoS. In this way, viewers will be able to view video and audio content such as movies, television, graphics, multimedia, games, web pages, etc., on the HDTV at a certain quality level. This of course may result in slower Internet downloads for the computer. However, the quality of the HDTV video and audio being displayed through the HDTV will not be sacrificed.
[0073] With reference now to Figure 6, a flow diagram 600 illustrates, in more detail, an example of operations that may be performed to dynamically allocate bandwidth to applications in a network based on utility functions, according to one embodiment of the present invention. As will be discussed, in the exemplary method, the total available network bandwidth is shared in a way that maximizes the total utility of all the different applications currently using the network. It should be appreciated that there are many ways to implement this. For example, in a typical implementation, whenever the total available network bandwidth changes by an amount greater than a fixed threshold (e.g. in order to limit the number of bandwidth allocation changes to nodes), each node or client device may be allocated 0 bandwidth, and then the bandwidth allocation for all the nodes or client devices will be reallocated "from the beginning" to maximize the total utility of all the nodes or client devices in the network. It should be noted that is different from having all the nodes or client devices keeping the previous bandwidth allocations and simply adjusting the node or client device that would benefit most from the, for example, newly available increase in available bandwidth.
[0074] Thus, in one embodiment, looking particularly at Figure 6 and utilizing Figure IA as an exemplary network, at block 602 the server 102 is streaming a plurality of applications over wireless channel 150 to client devices A, B, C, and D 130, 132, 134, 136. The method 600 continually monitors to see whether or not a condition occurs that may require a bandwidth reallocation.
[0075] For example, at block 604, the method 600 determines whether there has been a stream admission request for an application for one or more of the client devices of the network 100, such that a bandwidth reallocation may be required. At block 606, the method 600 determines whether there has been a stream removal notification for an application for one or more of the client devices of the network 100, such that a bandwidth reallocation may be required. At block 608, the method 600 determines whether the available network bandwidth has been changed by an amount greater than a fixed threshold resulting in a network bandwidth change indication, such that a bandwidth reallocation may be required.
[0076] Particularly, as shown at block 610, a bandwidth estimation module of a bandwidth manager may be used estimate the current bandwidth available to the network, the required bandwidth for each streaming application in the network based on utility functions (e.g. as previously discussed with reference to Figure 4) to achieve pre-determined or desired QoS levels, as well as any priorities that some streaming applications may have over others (e.g. as previously discussed with reference to Figure 5). In one embodiment, the bandwidth manager module may be a bandwidth manager software module of the server 102, as previously discussed, or may reside in one or more client devices alone or in combination with the server 102. The bandwidth estimation module may be used in implementing the operations of the method 600 to dynamically allocate bandwidth to applications in the network based on utility functions, as will be discussed below.
[0077] If a bandwidth reallocation is required, at block 615, the method 600 determines whether there is adequate bandwidth for the minimum utility or usefulness of all the streaming applications based on the utility functions (UFs) for the streaming applications. If not, at block 618, it is next determined whether a stream admission is being considered. If so, a stream admission rejection notification is sent to the application, and the streaming application is not allowed to enter the network (block 620). If a streaming application admission is not being considered, then at block 624, the method 600 determines whether there is any streaming application with an extremely high packet loss rate. If so, that streaming application is dropped from the network and the application is notified that it has been dropped from the network (block 626). If not, then the most recently started stream application is dropped from the network and the application is notified that it has been dropped from the network (block 628).
[0078] However, if there is now adequate bandwidth for the minimum utility of all the streaming applications based on the utility functions (UFs) for the streaming applications, the method 600 moves on to operation block 640. At operation block 640, the minimum requested bandwidth is allocated to all streaming applications of the network based on each streaming application's utility function (UF). Next, at block 642, it is determined whether or not there is more bandwidth available in the network. If not, then the bandwidth allocations to the streaming applications are finally allocated and the streaming applications are notified of their bandwidth allocations (block 646). However, if there is more bandwidth available in the network, then a block 644, the remaining bandwidth is allocated to the streaming applications based on their utility functions. Next, the bandwidth allocations to the streaming applications are finally allocated and the streaming applications are notified of their bandwidth allocations (block 646).
[0079] It should be appreciated that many variations can be made to the above-described method 600. For example, the utility function for a given streaming application may be assigned a dynamic temporary utility penalty each time it's utility is modified to discourage utility changes that occur very often for any particular application.
[0080] Also, network links that are particularly unreliable, for example those with unusually high packet error rates, may be penalized since they may be regarded as wasteful of total bandwidth. This penalty may be implicitly implemented by using the raw data rate to be the bandwidth for links, or this penalty may be explicitly implemented, for example as a decrease in priority for the link. The flowchart shows one possible consequence of such a high-error link, where the link is potentially dropped during allocation of bandwidths to various links.
[0081] Further, it should be appreciated that the operations previously described to dynamically allocate bandwidth to applications in a network based on utility functions, may be implemented in any type of wireless network, wired network, combinations thereof, and in any type of suitable network protocol. For example, in one embodiment, the operations may be performed in a IJDP protocol in conjunction with RTCP.
[0082] It should also be noted that the previously described method does not imply that all the available bandwidth would be allocated at any given time, hi particular, embodiments of the invention may possibly set aside "reserves" or "safety margins" of bandwidth that may be used on an as-needed basis by clients in between explicit bandwidth allocations. In addition, the bandwidth allocation may be done not only when clients are leaving or entering the network, but also at any other time when the bandwidth on any existing link changes in a manner that warrants a reallocation of bandwidth amongst the clients.
[0083] Further embodiments of the invention relate to a system, apparatus, and method for dynamically estimating the bandwidth of a network link in a wireless network. The system includes at least one client device capable of receiving data over the wireless network and a server capable of transceiving data over a link of a wireless channel of the wireless network. The server identifies the at least one client device in the wireless network and identifies applications that are being utilized in the wireless network by the at least one client device, in which each application has an associated link between the server and the client device and an associated data stream transmitted over the link. The server passively estimates the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.
[0084] For example, in one embodiment, the bandwidth estimation module of the bandwidth manager 610 of Figure 6 may dynamically estimate and predict the network bandwidth of different network links on different channels, and then feed back this information to the data source. As previously discussed, the data source may be a server computer that includes such data sources as an MPG encoder.
[0085] More particularly, the bandwidth estimation module of the bandwidth manager 610 may estimate the dynamic bandwidth of network links by utilizing passive estimation techniques of available bandwidth as will be discussed. Utilizing these passive estimation techniques, extra packets are not injected into the network. It should be appreciated that these passive estimation techniques may be utilized in contention-based networks as well as contention-free networks, however, will be discussed in the exemplary environment of a contention-based network.
[0086] Particularly, with reference back to Figure IA, the wireless network 100, previously discussed, provides for the streaming of information and data for multi-media data, video, audio, graphics, text, documents, etc., from the server 102 to client devices A, B, C, and D. Further, embodiments of the invention provide for the efficient streaming of high-fidelity video and audio content such as movies, television, graphics, multi-media, games, web pages, etc.
[0087] Particularly, in one embodiment, when utilized as part of a home-network, the home media server 102 streams data, such as video and audio data, to client devices A, B, C, D 130, 132, 134, and 136 over wireless channels through the home with high QoS and high bandwidth. In this way, server 102 can efficiently stream high fidelity video and audio content, such as movies, television, graphics, multi-media, games, web pages, etc., to these client devices (e.g. including computers, digital television, high definition T.V. (HDTV), etc) throughout the household.
[0088] In one embodiment, bandwidth estimation module 610 may employ passive estimation techniques of available bandwidth for the links of the home network 100 and these estimations can be utilized in the rest of the previously-described process 600, in which, bandwidth is dynamically allocated to different applications in the network based on the utility functions defined for each of the applications.
[0089] More particularly, each transmitting node (e.g. access point 120) on the network may estimate the bandwidth of each link it transmits onto, and may then feed this information back to the initial producer of the transmitted packet (e.g. server 102). For example, server 102 may operate a number of different applications that produce various data to be transmitted to the various client devices A, B, C, and D. These applications and their associated data may be related to the streaming of movies, television, games, web pages, etc. as previously discussed.
[0090] hi order to provide these applications with estimated available bandwidth, the server 102 may estimate the dynamic bandwidth of each of the associated network links. For example, server 102 may be running a HDTV application in order to stream a HDTV movie to client C 134 over a link on wireless channel 150 and server 102 may be also running a Internet browsing application that is transmitted to client A 130 over another link on wireless channel 150, as well.
[0091] Methods and techniques to estimate the dynamic bandwidth of the network links for each of these applications will now be discussed. It should be noted that the term "throughput" generally refers to the actual amount of data or rate of data actually being transmitted over a channel via a link whereas "bandwidth" generally refers to the available amount of throughput reserved for data to be transmitted over a channel via a link
[0092] With reference to Figure 7, Figure 7 is a flow diagram 700 illustrating a process to estimate throughput for a link, according to one embodiment of the invention. Process 700 may be implemented by bandwidth estimation module 610, previously discussed.
[0093] First, the clients of the wireless network are determined (block 702). For example, clients A, B, C, and D may be identified. Next, the time duration from the start of packet transmission to receipt by the receiving node is measured (block 704). In order to accomplish this, packet transmit time is estimated from the transmitting node (e.g. server 102). This may be done by measuring the time duration from the start of a packet transmission (i.e. or more precisely the time that the packet is queued for transmission) at the transmitting node to the reception of the corresponding Acknowledgement from the receiving node (e.g. one of the client devices A, B, C, D). It should be appreciated that for normal transmissions or burst transmission with burst-acknowledgements or selective acknowledgements, that the time duration may be measured from the time of the first packet transmission to the time of reception of the last Acknowledgement corresponding to the burst.
[0094] In one embodiment, this measurement may be made at the media access (MAC) layer of the network, such that the measurement inherently includes factors such as queuing time, transmission data rate, contention for the medium, and packet re-transmissions.
[0095] Next, at block 706, the size of the transmitted packet is divided by the measured time duration. An example of this can be seen in Figure 9, equation Ia:
SΪZePACKET
ThroughputpAcκET= -
TimeACK- TimeτRANSMiτ
[0096] Particularly, as seen in equation Ia, the throughput for the packet is determined by the division of the size of the packet by the difference of the time of the transmit from the time of acknowledgement. By dividing the size of the transmitted packet by this measured time duration, an estimation is obtained of network throughput for the corresponding link on a given channel between the transmitting and receiving nodes. For example, a wireless channel 150 is illustrated in Figure IA as being from the server 102 to one of the client devices A, B, C, D. Thus, the throughput for a link is estimated (block 708). Because the data packet size includes the size of header bytes required by different protocol layers, this bandwidth estimation may take into account protocol overhead.
[0097] Equation Ib of Figure 9 is a restatement of Equation Ia:
Figure imgf000026_0001
[0098] It should be noted that Equation Ib particularly takes into account overhead time, back-off time, collision avoidance time, and retries. Next, the bandwidth estimation module 610 may determine the maximum estimated throughput for a link on a given channel. With reference to Figure 8, Figure 8 is a process 800 to determine the maximum estimated throughput for a link. [0099] First, throughput for a stream or link is estimated by averaging packet throughputs over a small period of time and/or over different packet sizes. In one example, Equation Ic:
Figure imgf000027_0001
as shown in Figure 9 may be utilized. As shown in Equation Ic, the throughput for a given stream is estimated by averaging packet throughputs over a small period of time and dividing the result by the small period of time to normalize it. This is used because throughput may actually change over time. Also, throughput may change based on the packet size itself and a similar averaging equation may be used for varying packet sizes, as well. Averaging these values improves accuracy.
[00100] Channel utilization also may be determined (block 804). The ongoing estimated stream throughput may be combined with channel utilization for a steam transmission at the source node to determine a maximum estimated throughput or bandwidth for the particular link.
[00101] Channel utilization may be determined by equation Id:
T TiM. . Λ ( TimeiDLElnWindow \
UtihzationcHANNEL^l- ( — τ __. , — );
TimeτoτALlnWmdow as illustrated in Figure 9. As shown in Equation Id, the utilization of a channel may be determined by the difference of the ratio of the amount of idle time in a given window to the total time of the window from the number 1. As an example, if the ratio of the amount of time a data stream is idle in a given window versus the total time window is 0.1 (e.g. 20 milliseconds idle time with respect to a 200 millisecond window of time) then the channel is being utilized 90% of the time.
[00102] Next, at block 808, the ongoing estimated stream throughput for a link is combined with the channel utilization in order to determine the maximum estimated throughput for a particular link (block 810). Particularly, the channel utilization is multiplied by the throughput of the stream (ThroughputsTREAM) to yield the maximum estimated throughput for the link (e.g. UtilizationcHANNEL * ThroughputsTREAM)
[00103] Based on the previously described process, bandwidth may be dynamically estimated for one or more links on one or more channels. For example, using the Figure IA example, server 102 may be running a HDTV application and streaming a HDTV movie to client C 134 over a link over wireless channel 150 at 30 megabits/second (determined as ThroughputsTREAM) with a channel utilization of .9 (UtilizationcHANNEL) yielding a maximum estimated throughput of this stream as 27 Megabits/second.
[00104] Whereas, simultaneously, server 102 may be running an Internet browsing application and streaming web pages to client A 130 over a link over a wireless channel at 5 Megabits/second (determined as ThroughputsTREAM) with a channel utilization of .1 (UtilizationcHANNEL) yielding a maximum estimated throughput of this stream as .5 Megabits/second.
[00105] Therefore, based on the above, the server can dynamically estimate an amount of bandwidth to be allocated to an application in the wireless network based upon the maximum estimated throughput for the link for the associated application, and, as previously discussed, based upon a defined utility function for each of the applications, the server may dynamically allocate bandwidth to different applications in the wireless network based on the utility functions defined for each of the applications.
[00106] Thus, bandwidth may be dynamically estimated for one or more links on one or more channels. This bandwidth estimation may then be utilized in conjunction with the previously described process of Figure 6 in which bandwidth is dynamically allocated to applications in a network based on utility functions. As previously discussed, utilizing FigurelA as an exemplary network the server 102 may stream a plurality of applications via links over wireless channel 150 to client devices A, B, C, and D 130, 132, 134, 136. The method 600 continually monitors to see whether or not a condition occurs that may require a bandwidth reallocation based upon the bandwidth estimation method 610 as previously described.
[00107] As an example, if server 102 is running an application for an HDTV application over a first link via channel 150 while simultaneously running an application that streams Internet data for use by a web browser to client A 130, the bandwidth estimation techniques previously discussed can continually dynamically estimate the bandwidth utilized by each of these links over the channel, as previously discussed.
[00108] Further, based on the previously discussed process and utility functions, priorities may be set such that HDTV video program (requiring high bandwidth for high QoS needs) is considered more important than the application for web-browsing over the Internet. Thus, a minimum amount of bandwidth to maintain a certain QoS for an application related to displaying an HDTV video program may be given higher priority than an application for Internet downloads, such that if there is not enough bandwidth for both, the Internet download will be allocated decreased bandwidth in order to accommodate the minimum amount of bandwidth allocated to the HDTV application in order to maintain the HDTVs applications QoS. This of course may result in slower Internet downloads for the client device computer, however the quality of the HDTV video and audio being displayed through the HDTV client device will not be sacrificed.
[00109] As previously discussed, embodiments of the present invention may be implemented as a method, system, apparatus, or machine-readable medium (e.g. a software module, a processor readable medium, a computer readable medium, code segments, etc.) using standard programming and/or engineering techniques to produce software, firmware, hardware, middleware, or any combination thereof.
[00110] While the present invention and its various functional components have been described in particular embodiments, it should be appreciated the present invention can be implemented in hardware, software, firmware, middleware or a combination thereof and utilized in systems, subsystems, components, or sub-components thereof. When implemented in software, the elements of the present invention are the code segments to perform the necessary tasks. The program or code segments can be stored in a machine readable medium, such as a processor readable medium or a computer program product, or transmitted by a computer data signal embodied in a carrier wave, or a signal modulated by a carrier, over a transmission medium or communication link. The machine-readable medium or processor-readable medium may include any medium that can store or transfer information in a form readable and executable by a machine (e.g. a processor, a computer, etc.). Examples of the machine/processor-readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable programmable ROM (EPROM), a floppy diskette, a compact disk CD-ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, etc. The computer data signal may include any signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic, RF links, etc. The code segments may be downloaded via computer networks such as the Internet, Intranet, etc. [00111] In particular, embodiments of the present invention can be generally implemented in a computer as one or more computer programs, to perform the desired operations, functions, and processes as previously described. The computer programs are comprised of instructions which when read and executed by the computer, cause the computer to perform the operations necessary to implement and/or use the present invention. Generally, the computer programs are tangibly embodied in and/or readable from a device, carrier, or media, such as memory, data storage devices, and/or a remote device coupled to the computer via data communication devices. Under control of the operating system, the computer programs may be loaded from memory, data storage devices, and/or remote devices into the memory of the computer for use during operations.
[00112] In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims

CLAIMSWhat is claimed is:
1. A system for dynamically estimating the bandwidth of a network link in a wireless network, the system comprising: at least one client device capable of receiving data over the wireless network; and a server capable of transceiving data over a link of a wireless channel of the wireless network, the server coupled to the at least one client device by the wireless channel, the server to: identify the at least one client device in the wireless network; identify applications being utilized in the wireless network by the at least one client device, in which each application has an associated link between the server and the client device and an associated data stream transmitted over the link; and passively estimate the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.
2. The system of claim 1, wherein measuring the throughput of the associated data stream further comprises estimating a throughput of a packet by dividing the size of a transmitted packet by a time duration from a start of a packet transmission to a receipt of the packet by the client device.
3. The system of claim 2, wherein estimating the throughput of a packet further comprises receiving an acknowledgement from the client device to indicate receipt of the packet, the estimated throughput of the packet being equal to the size of the transmitted packet divided by a difference of a time of the transmission of the packet from a time of the acknowledgement of the packet.
4. The system of claim 2, wherein estimating the throughput of a data stream of a link comprises averaging packet throughputs over varying time periods and normalizing the averaged packet throughputs.
5. The system of claim 4, wherein determining channel utilization by the link associated with the application is determined by the difference of a ratio of an amount of idle time in a time window to a total time of the time window from the number one.
6. The system of claim 4, wherein a maximum estimated throughput for the link for the associated application is determined by multiplying the determined channel utilization by the estimated throughput of the data stream of the link for the application.
7. The system of claim 6, wherein the server dynamically estimates an amount of bandwidth to be allocated to an application in the wireless network based upon the maximum estimated throughput for the link for the associated application, and based upon a defined utility function for each of the applications, the server further dynamically allocates bandwidth to different applications in the wireless network based on the utility functions defined for each of the applications.
8. The system of claim 7, wherein the utility function specifies a minimum amount of bandwidth required by the application to perform at a pre-determined quality level.
9. The system of claim 7, wherein the utility function is a function that defines the utility of an application versus the required bandwidth.
10. The system of claim 9, wherein the utility function may be scaled based on pre-determined priorities.
11. The system of claim 9, wherein the utility function is a linear function.
12. The system of claim 9, wherein the utility function is a discrete function.
13. A method for dynamically estimating the bandwidth of a network link in a wireless network, the method comprising: identifying at least one client device in the wireless network; identifying applications being utilized in the wireless network by the at least one client device, in which each application has an associated link to a client device and an associated data stream transmitted over the link; and passively estimating the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.
14. The method of claim 13, wherein measuring the throughput of the associated data stream further comprises estimating a throughput of a packet by dividing the size of a transmitted packet by a time duration from a start of a packet transmission to receipt by the client device.
15. The method of claim 14, wherein estimating the throughput of a packet further comprises receiving an acknowledgement from the client device to indicate receipt of the packet, the estimated throughput of the packet being equal to the size of the transmitted packet divided by a difference of a time of the transmission of the packet from a time of the acknowledgement of the packet.
16. The method of claim 14, wherein estimating the throughput of a data stream of a link comprises averaging packet throughputs over varying time periods and normalizing the averaged packet throughputs.
17. The method of claim 16, wherein determining channel utilization by the link associated with the application is determined by the difference of a ratio of an amount of idle time in a time window to a total time of the time window from the number one.
18. The method of claim 16, wherein a maximum estimated throughput for the link for the associated application is determined by multiplying the determined channel utilization by the estimated throughput of the data stream of the link for the application.
19. The method of claim 18, further comprising dynamically estimating an amount of bandwidth to be allocated to an application in the wireless network based upon the maximum estimated throughput for the link for the associated application, and based upon a defined utility function for each of the applications, dynamically allocating bandwidth to different applications in the wireless network based on the utility functions defined for each of the applications.
20. The method of claim 19, wherein the utility function specifies the minimum amount of bandwidth required by the application to perform at a pre-determined quality level.
21. The method of claim 19, wherein the utility function is a function that defines the utility of an application versus the required bandwidth.
22. The method of claim 21 , wherein the utility function may be scaled based on pre-determined priorities.
23. The method of claim 21 , wherein the utility function is a linear function.
24. The method of claim 21, wherein the utility function is a discrete function.
25. An apparatus for dynamically estimating the bandwidth of a link of a wireless channel to at least one client device in a wireless network, the apparatus comprising: a transmitter to transceive a data stream over the link of the wireless channel to the at least one client device; and a processor to implement a software module to: identify the at least one client device in the wireless network; identify applications being utilized in the wireless network by the at least one client device, in which each application has an associated link to the client device and an associated data stream transmitted over the link; and passively estimate the bandwidth being used by an application over the link based upon measuring the throughput of the associated data stream and based upon determining channel utilization of the link.
26. The apparatus of claim 25, wherein measuring the throughput of the associated data stream further comprises estimating a throughput of a packet by dividing the size of a transmitted packet by a time duration from a start of a packet transmission to a receipt of the packet by the client device.
27. The apparatus of claim 26, wherein estimating the throughput of a packet further comprises receiving an acknowledgement from the client device to indicate receipt of the packet, the estimated throughput of the packet being equal to the size of the transmitted packet divided by a difference of a time of the transmission of the packet from a time of the acknowledgement of the packet.
28. The apparatus of claim 26, wherein estimating the throughput of a data stream of a link comprises averaging packet throughputs over varying time periods and normalizing the averaged packet throughputs.
29. The apparatus of claim 28, wherein determining channel utilization by the link associated with the application is determined by the difference of a ratio of an amount of idle time in a time window to a total time of the time window from the number one.
30. The apparatus of claim 28, wherein a maximum estimated throughput for the link for the associated application is determined by multiplying the determined channel utilization by the estimated throughput of the data stream of the link for the application.
31. The apparatus of claim 30, wherein the software module dynamically estimates an amount of bandwidth to be allocated to an application in the wireless network based upon the maximum estimated throughput for the link for the associated application, and based upon a defined utility function for each of the applications, the server further dynamically allocates bandwidth to different applications in the wireless network based on the utility functions defined for each of the applications.
32. The apparatus of claim 31 , wherein the utility function specifies a minimum amount of bandwidth required by the application to perform at a pre-determined quality level.
PCT/US2006/003910 2005-03-09 2006-02-03 System and method for dynamic bandwidth estimation of network links WO2006098825A2 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN2006800077172A CN101142787B (en) 2005-03-09 2006-02-03 System and method for dynamic bandwidth estimation of newtork links
CA2598958A CA2598958C (en) 2005-03-09 2006-02-03 System and method for dynamic bandwidth estimation of network links
KR1020077020575A KR101206195B1 (en) 2005-03-09 2006-02-03 System and method for dynamic bandwidth estimation of network links
EP06734328.5A EP1856842B1 (en) 2005-03-09 2006-02-03 System and method for dynamic bandwidth estimation of newtork links
JP2008500710A JP5027794B2 (en) 2005-03-09 2006-02-06 System and method for dynamic bandwidth estimation of network links

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/078,125 US7747255B2 (en) 2003-03-26 2005-03-09 System and method for dynamic bandwidth estimation of network links
US11/078,125 2005-03-09

Publications (3)

Publication Number Publication Date
WO2006098825A2 true WO2006098825A2 (en) 2006-09-21
WO2006098825A8 WO2006098825A8 (en) 2007-09-07
WO2006098825A3 WO2006098825A3 (en) 2007-11-08

Family

ID=36992180

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2006/003910 WO2006098825A2 (en) 2005-03-09 2006-02-03 System and method for dynamic bandwidth estimation of network links

Country Status (7)

Country Link
US (1) US7747255B2 (en)
EP (1) EP1856842B1 (en)
JP (1) JP5027794B2 (en)
KR (1) KR101206195B1 (en)
CN (1) CN101142787B (en)
CA (1) CA2598958C (en)
WO (1) WO2006098825A2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100887396B1 (en) 2007-06-27 2009-03-06 한국전자통신연구원 Apparatus and method for estimating available bandwidth
JP2009171038A (en) * 2008-01-11 2009-07-30 Sharp Corp Digital broadcast receiver
WO2010119587A1 (en) * 2009-04-16 2010-10-21 住友電気工業株式会社 Dynamic bandwidth assignment device, method of the same, and optical line terminal of pon system
US8116225B2 (en) 2008-10-31 2012-02-14 Venturi Wireless Method and apparatus for estimating channel bandwidth
US9621629B2 (en) 2011-07-05 2017-04-11 Rakuten, Inc. Content distribution system, cache server, and content distribution method
US11445241B2 (en) 2007-11-28 2022-09-13 Maxell, Ltd. Information processing apparatus and information processing method

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747255B2 (en) * 2003-03-26 2010-06-29 Sony Corporation System and method for dynamic bandwidth estimation of network links
US7092693B2 (en) * 2003-08-29 2006-08-15 Sony Corporation Ultra-wide band wireless / power-line communication system for delivering audio/video content
US7769863B2 (en) * 2004-11-19 2010-08-03 Viasat, Inc. Network accelerator for controlled long delay links
US7680038B1 (en) * 2005-04-25 2010-03-16 Electronic Arts, Inc. Dynamic bandwidth detection and response for online games
US8045484B2 (en) * 2005-05-20 2011-10-25 Yaron Menahem Peleg Method for problematic user detection
US20070121606A1 (en) * 2005-11-03 2007-05-31 Fun Racquets, Inc. VOIP Hub Using Existing Audio or Video Systems
US7756010B2 (en) * 2005-12-21 2010-07-13 Cisco Technology, Inc. Method and system for preventing data packet loss in a redundant PDSN environment
KR101217628B1 (en) * 2006-02-16 2013-01-02 삼성전자주식회사 Method for packet aggregation in power line communication network and apparatus therefor
US20080049701A1 (en) * 2006-08-24 2008-02-28 Sbc Knowledge Ventures, L.P. System and method for calculating a bandwidth requirement between two elements in a communications network
US7530079B2 (en) * 2006-09-07 2009-05-05 Microsoft Corporation Managing application customization
US7872975B2 (en) * 2007-03-26 2011-01-18 Microsoft Corporation File server pipelining with denial of service mitigation
US8331294B2 (en) * 2007-07-20 2012-12-11 Broadcom Corporation Method and system for managing information among personalized and shared resources with a personalized portable device
US8060649B2 (en) * 2007-06-26 2011-11-15 Aruba Networks Cayman Method and system for dynamic metric and wireless hello protocol
US7816031B2 (en) * 2007-08-10 2010-10-19 The Board Of Trustees Of The Leland Stanford Junior University Nanowire battery methods and arrangements
CN101478558B (en) * 2008-05-29 2012-08-29 北京东方网信科技股份有限公司 P2P customer terminal data transmission management algorithm
US7948887B2 (en) * 2008-06-24 2011-05-24 Microsoft Corporation Network bandwidth measurement
US7920495B2 (en) * 2008-06-25 2011-04-05 Nokia Corporation Channel management via link parameter adjustment
MY164504A (en) * 2008-10-03 2017-12-29 Mimos Berhad Method to assign traffic priority or bandwidth for application at the end users-device
US8958363B2 (en) * 2008-10-15 2015-02-17 Viasat, Inc. Profile-based bandwidth scheduler
US8780823B1 (en) 2009-10-08 2014-07-15 Viasat, Inc. Event driven grant allocation
US8868743B2 (en) * 2010-04-30 2014-10-21 Sharp Kabushiki Kaisha Modified access classes for machine type communication (MTC) devices during emergencies
US20110310731A1 (en) * 2010-06-18 2011-12-22 Sharp Laboratories Of America, Inc. Controlling network resource usage of machine type communication (mtc) devices
US8787172B2 (en) 2010-06-21 2014-07-22 Qualcomm Incorporated Method and apparatus for QoS context transfer during inter radio access technology handover in a wireless communication system
US20110310737A1 (en) * 2010-06-21 2011-12-22 Qualcomm Incorporated Method and apparatus for qos context transfer during inter radio access technology handover in a wireless communication system
US8908636B2 (en) 2010-06-21 2014-12-09 Qualcomm Incorporated Method and apparatus for QoS context transfer during inter radio access technology handover in a wireless communication system
US9007898B2 (en) 2011-02-01 2015-04-14 Google Inc. System to share network bandwidth among competing applications
US8520523B2 (en) * 2011-02-11 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) Devices and methods for managing quality of service for bearers depending on utilization
KR101245261B1 (en) * 2011-03-03 2013-03-19 (주)네오위즈게임즈 Packet Dumping System, Management Device and Method
US8942114B2 (en) * 2011-06-21 2015-01-27 Fujitsu Limited System and method for calculating utilization entropy
JP5720786B2 (en) * 2011-07-05 2015-05-20 日本電気株式会社 Content distribution system and content distribution method
JP5264966B2 (en) * 2011-07-26 2013-08-14 株式会社日立製作所 Communication device
US10397294B2 (en) 2011-12-15 2019-08-27 Dolby Laboratories Licensing Corporation Bandwidth adaptation for dynamic adaptive transferring of multimedia
US9954718B1 (en) 2012-01-11 2018-04-24 Amazon Technologies, Inc. Remote execution of applications over a dispersed network
US8924515B1 (en) 2012-02-29 2014-12-30 Amazon Technologies, Inc. Distribution of applications over a dispersed network
CN102624634B (en) * 2012-04-11 2014-12-24 深圳证券通信有限公司 Method and device for controlling network bandwidth on client side
KR102145360B1 (en) * 2012-07-13 2020-08-19 아씨아 에스피이, 엘엘씨 Method and system for performance measurement of a communication link
CN103124296B (en) * 2013-03-06 2015-08-05 成都索贝数码科技股份有限公司 For the dynamic self-adapting distribution method of the bandwidth resources of distributed file system
US10314091B2 (en) * 2013-03-14 2019-06-04 Microsoft Technology Licensing, Llc Observation assisted bandwidth management
US20140281592A1 (en) * 2013-03-18 2014-09-18 Advanced Micro Devices, Inc. Global Efficient Application Power Management
US9906608B2 (en) * 2013-04-30 2018-02-27 International Business Machines Corporation Intelligent adaptation of mobile applications based on constraints and contexts
FR3011420A1 (en) * 2013-09-30 2015-04-03 Orange IMPROVED MANAGEMENT OF NETWORK CONNECTIONS
US9350624B2 (en) * 2013-10-15 2016-05-24 Rawllin International Inc. Dynamic assignment of connection priorities for applications operating on a client device
DE202014010968U1 (en) * 2013-12-13 2017-02-07 Cable Television Laboratories, Inc. Load balancing on a wireless access point
US20150180791A1 (en) * 2013-12-20 2015-06-25 Avaya, Inc. Adaptive modification of class of service for supporting bandwidth over-allocation
DE102014200226A1 (en) * 2014-01-09 2015-07-09 Bayerische Motoren Werke Aktiengesellschaft Central communication unit of a motor vehicle
EP3140944B1 (en) * 2014-05-08 2021-06-23 Nokia Solutions and Networks Oy Improving communication efficiency
US9883418B2 (en) * 2014-07-02 2018-01-30 Apple Inc. Wireless network load and throughput estimation
US10681416B2 (en) * 2015-02-04 2020-06-09 Nippon Telegraph And Telephone Corporation Quality-of-experience optimization system, quality-of-experience optimization apparatus, recommend request apparatus, quality-of-experience optimization method, recommend request method, and program
US10098017B2 (en) 2015-06-26 2018-10-09 Facebook, Inc. Techniques and systems for enforcement of on-demand customized mobile data services
US9603059B2 (en) * 2015-06-26 2017-03-21 Facebook, Inc. Techniques and systems for on-demand customized mobile data services
US11909593B2 (en) 2017-08-22 2024-02-20 Dejero Labs Inc. System and method for assessing communication resources
US10841238B2 (en) 2017-12-20 2020-11-17 At&T Intellectual Property I, L.P. Prioritized network based on service and user device
WO2019219155A1 (en) * 2018-05-14 2019-11-21 Nokia Technologies Oy Method, system and apparatus for new radio bandwidth part operations
US11184833B2 (en) * 2019-06-19 2021-11-23 Citrix Systems, Inc. Bandwidth sharing amongst trusted peers
CN111082978A (en) * 2019-12-05 2020-04-28 西安电子科技大学 SDN-oriented utility bandwidth allocation method
CN111447647B (en) * 2020-03-03 2023-07-14 成都市联洲国际技术有限公司 Client bandwidth calculation method, system, equipment and storage medium in wireless network
EP3902216A1 (en) * 2020-04-20 2021-10-27 Sandvine Corporation System and method for link bandwidth management
CN113726691A (en) * 2021-08-20 2021-11-30 北京字节跳动网络技术有限公司 Bandwidth reservation method, device, equipment and storage medium
CN114465903A (en) * 2021-12-29 2022-05-10 湖南红鑫通信技术有限责任公司 Management system and method for improving maximum normalized throughput of wireless optical communication network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020085587A1 (en) 2000-10-17 2002-07-04 Saverio Mascolo End-to end bandwidth estimation for congestion control in packet switching networks
US20040190528A1 (en) 2003-03-26 2004-09-30 Dacosta Behram Mario System and method for dynamically allocating bandwidth to applications in a network based on utility functions

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2015248C (en) * 1989-06-30 1996-12-17 Gerald R. Ash Fully shared communications network
NZ239283A (en) 1990-08-23 1994-09-27 Ericsson Telefon Ab L M Mobile cellular radio: handoff between half rate and full rate channels according to estimated received signal quality
US5249290A (en) 1991-02-22 1993-09-28 At&T Bell Laboratories Method of and apparatus for operating a client/server computer network
US6334219B1 (en) * 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
US5586121A (en) * 1995-04-21 1996-12-17 Hybrid Networks, Inc. Asymmetric hybrid access system and method
US5673253A (en) * 1996-02-29 1997-09-30 Siemens Business Communication Systems Dynamic allocation of telecommunications resources
US6097733A (en) * 1997-06-13 2000-08-01 Nortel Networks Corporation System and associated method of operation for managing bandwidth in a wireless communication system supporting multimedia communications
US6081536A (en) * 1997-06-20 2000-06-27 Tantivy Communications, Inc. Dynamic bandwidth allocation to transmit a wireless protocol across a code division multiple access (CDMA) radio link
US6388999B1 (en) * 1997-12-17 2002-05-14 Tantivy Communications, Inc. Dynamic bandwidth allocation for multiple access communications using buffer urgency factor
US6647058B1 (en) 1997-06-23 2003-11-11 Paradyne Corporation Performance customization system and process for optimizing XDSL performance
US6009106A (en) * 1997-11-19 1999-12-28 Digi International, Inc. Dynamic bandwidth allocation within a communications channel
US6016311A (en) * 1997-11-19 2000-01-18 Ensemble Communications, Inc. Adaptive time division duplexing method and apparatus for dynamic bandwidth allocation within a wireless communication system
US6144645A (en) * 1998-05-26 2000-11-07 Nera Wireless Broadband Access As Method and system for an air interface for providing voice, data, and multimedia services in a wireless local loop system
US6711137B1 (en) * 1999-03-12 2004-03-23 International Business Machines Corporation System and method for analyzing and tuning a communications network
US6480506B1 (en) * 1999-04-15 2002-11-12 Sharewave Inc Co-location negotiation scheme for wireless computer networks
KR20020043566A (en) 1999-08-27 2002-06-10 추후제출 Method and System for Frequency Spectrum Resource Allocation
US6982969B1 (en) * 1999-09-28 2006-01-03 Tachyon, Inc. Method and system for frequency spectrum resource allocation
US6738363B1 (en) 1999-11-05 2004-05-18 Nortel Networks Limited Method and apparatus for scheduling call admission control in satellite and wireless networks
US6804521B2 (en) * 2000-01-18 2004-10-12 Nortel Networks Limited Multi-beam antenna system for high speed data
KR20070098913A (en) * 2000-01-20 2007-10-05 노오텔 네트웍스 리미티드 Hybrid arq schemes with soft combining in variable rate packet data applications
BR0107702A (en) * 2000-01-20 2002-10-15 Nortel Networks Ltd Method for operating a wireless communication system to serve a plurality of user terminals using a plurality of carriers
US6934752B1 (en) * 2000-03-23 2005-08-23 Sharewave, Inc. Quality of service extensions for multimedia applications in wireless computer networks
US7058730B2 (en) * 2000-05-05 2006-06-06 Fujitsu Limited Unique address space and method for a transport network
US6748220B1 (en) 2000-05-05 2004-06-08 Nortel Networks Limited Resource allocation in wireless networks
US6907023B2 (en) * 2000-08-14 2005-06-14 Vesuvius, Inc. Communique system with dynamic bandwidth allocation in cellular communication networks
JP3788908B2 (en) * 2000-12-28 2006-06-21 株式会社エヌ・ティ・ティ・ドコモ Admission control device and new connection admission control method
US7349431B2 (en) * 2001-03-13 2008-03-25 Ipicom, Inc. Dynamic bandwidth allocation system
US20040136379A1 (en) * 2001-03-13 2004-07-15 Liao Raymond R Method and apparatus for allocation of resources
US7116682B1 (en) * 2001-03-19 2006-10-03 Cisco Technology, Inc. Methods and apparatus for dynamic bandwidth adjustment
US20020144260A1 (en) * 2001-03-29 2002-10-03 Koninklijke Philips Electronics N.V. Method for adaptive data/content insertion in MPEG2 transport stream
US6807426B2 (en) * 2001-04-12 2004-10-19 Qualcomm Incorporated Method and apparatus for scheduling transmissions in a communication system
US6978144B1 (en) * 2001-04-19 2005-12-20 Cisco Technology, Inc. Method and system for managing real-time bandwidth in a wireless network
IL142843A0 (en) * 2001-04-29 2002-03-10 Nomad Access Ltd Method of dynamic time-slot allocation in data communication systems
US7065482B2 (en) * 2001-05-17 2006-06-20 International Business Machines Corporation Internet traffic analysis tool
US7792534B2 (en) * 2001-06-05 2010-09-07 Ericsson Ab Multiple threshold scheduler
US7046966B2 (en) 2001-08-24 2006-05-16 Kyocera Wireless Corp. Method and apparatus for assigning data rate in a multichannel communication system
US20030198184A1 (en) * 2001-08-31 2003-10-23 Joe Huang Method of dynamically determining real-time multimedia streaming rate over a communications networks
US7453801B2 (en) * 2001-11-08 2008-11-18 Qualcomm Incorporated Admission control and resource allocation in a communication system supporting application flows having quality of service requirements
US20060160543A1 (en) * 2002-03-14 2006-07-20 Alex Mashinsky Method and system for dynamic spectrum allocation and management
US20030210665A1 (en) * 2002-05-08 2003-11-13 Matti Salmenkaita System and method for dynamic frequency allocation for packet switched services
US8060643B2 (en) * 2002-08-30 2011-11-15 Hewlett-Packard Development Company, L.P. Method and apparatus for dynamically managing bandwidth for clients in a storage area network
US7889761B2 (en) * 2002-09-17 2011-02-15 Broadcom Corporation Method and system for providing bandwidth allocation and sharing in a hybrid wired/wireless network
AU2003286489A1 (en) * 2002-10-18 2004-05-04 Cariden Technologies, Inc. Methods and systems to perform traffic engineering in a metric-routed network
US7453844B1 (en) * 2002-10-22 2008-11-18 Hong Kong Applied Science and Technology Research Institute, Co., Ltd. Dynamic allocation of channels in a wireless network
US20040121749A1 (en) 2002-11-06 2004-06-24 Engim, Inc. System throughput enhancement using an intelligent channel association in the environment of multiple access channels
US7623540B2 (en) 2002-12-31 2009-11-24 Vixs Systems, Inc. Method and apparatus for channel allocation in a wireless local area network (WLAN)
US6947409B2 (en) * 2003-03-17 2005-09-20 Sony Corporation Bandwidth management of virtual networks on a shared network
US7747255B2 (en) * 2003-03-26 2010-06-29 Sony Corporation System and method for dynamic bandwidth estimation of network links
US7397805B2 (en) * 2003-04-02 2008-07-08 Ntt Docomo Inc. Systems and methods for goodput guarantee through adaptive fair queuing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020085587A1 (en) 2000-10-17 2002-07-04 Saverio Mascolo End-to end bandwidth estimation for congestion control in packet switching networks
US20040190528A1 (en) 2003-03-26 2004-09-30 Dacosta Behram Mario System and method for dynamically allocating bandwidth to applications in a network based on utility functions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1856842A4

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100887396B1 (en) 2007-06-27 2009-03-06 한국전자통신연구원 Apparatus and method for estimating available bandwidth
US11509953B2 (en) 2007-11-28 2022-11-22 Maxell, Ltd. Information processing apparatus and information processing method
US11451861B2 (en) 2007-11-28 2022-09-20 Maxell, Ltd. Method for processing video information and method for displaying video information
US11451860B2 (en) 2007-11-28 2022-09-20 Maxell, Ltd. Display apparatus and video processing apparatus
US11445241B2 (en) 2007-11-28 2022-09-13 Maxell, Ltd. Information processing apparatus and information processing method
JP2009171038A (en) * 2008-01-11 2009-07-30 Sharp Corp Digital broadcast receiver
US8937877B2 (en) 2008-10-31 2015-01-20 Venturi Ip Llc Channel bandwidth estimation on hybrid technology wireless links
US9674729B2 (en) 2008-10-31 2017-06-06 Venturi Wireless, Inc. Channel bandwidth estimation on hybrid technology wireless links
US8116225B2 (en) 2008-10-31 2012-02-14 Venturi Wireless Method and apparatus for estimating channel bandwidth
US8787759B2 (en) 2009-04-16 2014-07-22 Sumitomo Electric Industries, Ltd. Dynamic bandwidth allocation apparatus and method and optical line terminal in PON system
JP2010252062A (en) * 2009-04-16 2010-11-04 Sumitomo Electric Ind Ltd Dynamic bandwidth allocation device and method, and station side device of pon system
WO2010119587A1 (en) * 2009-04-16 2010-10-21 住友電気工業株式会社 Dynamic bandwidth assignment device, method of the same, and optical line terminal of pon system
US9621629B2 (en) 2011-07-05 2017-04-11 Rakuten, Inc. Content distribution system, cache server, and content distribution method

Also Published As

Publication number Publication date
US20050163059A1 (en) 2005-07-28
US7747255B2 (en) 2010-06-29
WO2006098825A8 (en) 2007-09-07
EP1856842A4 (en) 2013-05-01
CN101142787A (en) 2008-03-12
KR20070103056A (en) 2007-10-22
WO2006098825A3 (en) 2007-11-08
EP1856842A2 (en) 2007-11-21
CA2598958C (en) 2015-06-23
EP1856842B1 (en) 2015-01-07
JP5027794B2 (en) 2012-09-19
JP2008533811A (en) 2008-08-21
CN101142787B (en) 2011-08-10
KR101206195B1 (en) 2012-11-28
CA2598958A1 (en) 2006-09-21

Similar Documents

Publication Publication Date Title
CA2598958C (en) System and method for dynamic bandwidth estimation of network links
US7324523B2 (en) System and method for dynamically allocating bandwidth to applications in a network based on utility functions
US7539498B2 (en) System and method for dynamically allocating data rates and channels to clients in a wireless network
EP1629619B1 (en) Admitting data flows to a multiple access network
US7593375B2 (en) Medium access control apparatus for use in a channel overlay network
JP5060618B2 (en) Wireless communication apparatus and wireless communication control method
US20050276252A1 (en) Medium access control for wireless networks
US8660062B2 (en) Methods and apparatus for quality of service-based uplink polling schemes
TW201006158A (en) Method for scheduling transmission time in a communications system, link layer coordinating device and multiple access communications system
JP5041491B2 (en) Communication quality providing steps using periodic channel time allocation
KR100946904B1 (en) Method for generating aggregated packet in a communication system

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680007717.2

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2006734328

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2598958

Country of ref document: CA

ENP Entry into the national phase

Ref document number: 2008500710

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 1020077020575

Country of ref document: KR

NENP Non-entry into the national phase

Ref country code: DE

NENP Non-entry into the national phase

Ref country code: RU