Methods and apparatus to determine virtual WiFi data rate

Methods, apparatus, systems and articles of manufacture are disclosed to determine virtual WiFi data rate. An example disclosed herein includes a control frame receiver to capture control frames from a user device. The example disclosed herein further includes a bitrate calculator to calculate a bitrate for each control frame by dividing a bitmap of a control frame by an amount of time between the control frame and a previously captured control frame. The example disclosed herein further includes an interval timer to control a length of time that the control frames are captured before calculating the virtual bandwidth. The example disclosed herein further includes a virtual bandwidth calculator to calculate the virtual bandwidth after the length of time, the virtual bandwidth calculated by dividing an average bitrate from the control frames by the length of time.

FIELD OF THE DISCLOSURE

This disclosure relates generally to data rates, and, more particularly, to methods and apparatus to determine virtual WiFi data rate.

BACKGROUND

Audience measurement entities (AMEs) may track user access to digital media to determine viewership information. Some viewership data may be collected through the use of WiFi data rates. For example, the WiFi data rate may be transmitted by network devices to an AME via one or more networks. Information from the WiFi data rate is processed by the AME to determine useful digital media exposure data and associated statistics.

DETAILED DESCRIPTION

In some examples, audience measurement entities (AME's) acquire digital media viewership data through collecting streaming data from households. In examples disclosed herein, streaming data is digital media accessed through the Internet that may be collected through a streaming meter connected to a household's network. In some examples, a streaming meter produces data rate measurements (bandwidth usage) of devices on a household network. In some examples, the data rate measurements are used to determine the probability that a particular device is streaming internet content. In some examples, the data rate measurement is achieved by capturing WiFi packets, accumulating the size of the packets, and mathematically dividing the size by capture duration (time). However, there are various factors that can cause this measurement process to be inaccurate or to fail completely (e.g., the mode of communication between the device and router access point (A/P) is not compatible with the streaming meter or the meter sensitivity is not sufficient, etc.). Other example situations in which bandwidth cannot be accurately measured by the streaming meter include incompatible spatial streams, incompatible level of quadrature amplitude modulation (QAM), low radio frequency (RF) sensitivity due to distance or obstructions, and other interferences (e.g., adjacent radio signals). Even though in these examples, actual bandwidth measurement collected by the streaming meter are obscured, an approximate bandwidth may be inferred by observing other artifacts in the WiFi signals.

In the original Institute of Electrical and Electronics Engineers (IEEE) 802.11 specification for local access network (LAN) protocols, every frame required a positive acknowledgment. Each transmission was not complete until an acknowledgment was received. However, streaming data is generally collected in bursts, for example, a user watching a video from the internet will send out a request and receive a flurry of packets carrying the video frames. The original conception of the 802.11 specification required that each frame sent to a receiver needed to be acknowledged separately. However, the quality-of-service extensions developed in the 802.11e specification brought in block acknowledgments (BlockAck), which allowed a sender to transmit a stream of frames and have them all acknowledged at once. The BlockAck mechanism allowed improvements to channel efficiency by aggregating several acknowledgments into one frame. Examples disclosed herein use the BlockAck mechanism for determining WiFi bandwidth measurements.

In some examples, a device on a household network receives frames of data via the Internet. In some examples, the device sends an acknowledgement frame to indicate the frames were received. In some examples, the data frames are sent at a high bitrate, while the acknowledgment frame is sent at a low bitrate so that all devices are able to receive it. In some examples, a streaming meter is able to capture all of the frames and aggregates the frames sizes to calculate bandwidth. However, in examples disclosed herein, the streaming meter is unable to receive the data frames due to the situations described above. Examples disclosed herein are able to receive the BlockAck frames since they are sent at a lower bitrate. Examples disclosed herein parse details from the BlockAck frame to determine the information of the data frames that were acknowledged by the BlockAck frame.

Examples disclosed herein determine if high bandwidth utilization is taking place (e.g., if a user device is streaming) even when the data frames are not seen by the streaming meter. Examples disclosed herein determine a virtual bandwidth using Control Frames (BlockAck Frames) to determine the delivery of data frames. Examples disclosed capture the Control Frames and determine the frames that originate at the user device and are delivered to the household (HH) A/P. In examples disclosed herein, the Control Frames contain a starting sequence number (SSN) for the data frames being acknowledged and the bitmap recording of how many packets that were successfully acknowledged by the station (STA). As used herein, virtual bandwidth is defined to be an estimate of the bandwidth taking place on the STA based on the collection of these control features.

In examples disclosed herein, the virtual bandwidth is tracked and reported for each individual device on a household network at five minute intervals. However, other time intervals may additionally and/or alternatively be used to track and report virtual bandwidth. An example of a bandwidth event generated when determining the virtual bandwidth in examples disclosed herein may be represented by:

The event attributes of examples disclosed herein have the same meaning as the corresponding attributes in other streaming events. For example, the timestamp is the coordinated universal (UTC) time when the event was reported, the sequence is the event sequence number, the media access control address (MAC Address) is the operational display and input development (ODID), the startTime is the UTC start time of the event, and the duration is the duration (in seconds) of the event. In examples disclosed herein, the band is the band that the event is recorded on, the actualBandwidth is the CSV list of actual bandwidth (bandwidth based on packet size) usage in 5-second segments, and virtualBandwidth is the CSV list of virtual bandwidth (bandwidth based on Block-Ack mechanism) usage in 5-second segments.

Examples disclosed herein determine virtual bandwidth estimates from streaming meter data, even when such streaming data packets are not visible to the streaming meter. Examples disclosed herein capture control frames to calculate an estimated bandwidth for a user device on a household network. Examples disclosed herein determine the probability that a user device is streaming digital media based on the estimated bandwidth.

FIG. 1illustrates an example environment100in which an example virtual bandwidth event detector125detects virtual bandwidth events in accordance with teachings disclosed herein. The example environment100ofFIG. 1includes an example media provider105, example user device(s)110A,110B,110C,110D, an example internal network115, an example meter120, an example network device130, an example external network135, and an example data center140. The example meter120includes an example network communicator122and an example virtual bandwidth event detector125. The example data center140includes an example streaming probability determiner145and an example streaming media creditor150.

In the illustrated example ofFIG. 1, the example media provider105provides the user device(s)110A,110B,110C,110D with digital media. The example media provider105transmits data packets containing requested media to the example user device(s)110A,110B,110C,110D. The example media provider105obtains the digital media data via the example external network135. The example media provider105is implemented as a server hosting an application such as, for example, YouTube. However, the example media provider105can be implemented as any other computing system hosting any application or combinations of applications that are able to provide digital media.

The example user device(s)110A,110B,110C,110D of the illustrated example ofFIG. 1are used to access and view different digital media. The example user device(s)110A,110B,110C,110D send a request message for desired media to an access point in the example internal network115. The example user device(s)110A,110B,110C,110D receive packets containing the requested media data from the example media provider105and display the media to a user. The example user device(s) can be implemented with any device or combinations of devices that able to connect to media such as, for example, a smart television (TV), a personal computer, a smart phone, a tablet device, an Apple TV, a Roku device, YouTube TV, an Amazon fire device, etc., or any combination thereof.

The example internal network115of the illustrated example ofFIG. 1provides communication between the example user device(s)110A,110B,110C,110D, the example network communicator122, the example meter120and the example network device130. The example user device(s)110A,110B,110C,110D transmit the media request messages to the example media provider105via the external network135using the example internal network115. The example user device(s)110A,110B,110C,110D also transmit control frames to the example internal network115, and the example internal network115provides the control frames to the example meter120via the example network communicator122. The example internal network115can be a network at a place of business, a home, etc. The example internal network115is implemented as a local area network (LAN). However, any other type of network may additionally and/or alternatively be used such as, for example, a wide area network (WAN), a wireless local area network (WLAN), a storage area network (SAN), etc.

The example network device130of the illustrated example ofFIG. 1provides communication between the example internal network115and the example external network135. The example internal network115transmits media request messages to the example media provider105via the example external network135using the example network device130. The example network device130is implemented as a network device such as, for example, a modem. However, any other network devices may additionally and/or alternatively be used.

The example external network135of the illustrated example ofFIG. 1provides communication between the example media provider105, the example network device130, and the example streaming probability determiner145in the example data center140. The example media provider105accesses media that is requested by the example user device(s)110A,110B,110C,110D through the example network device130using the example external network135. The example streaming probability determiner145accesses the virtual bandwidth measurements from the example virtual bandwidth event detector125in the example meter120through the example network device130using the example external network135. The example external network135is a network provided by a service provider (e.g., an internet service provider (ISP)). The example external network135is implemented as a public network such as, for example, the Internet. However, any other type of networks (e.g., wireless, mobile cellular, etc.) which may be public or private, and any combination thereof may additionally and/or alternatively be used.

The example meter120of the illustrated example ofFIG. 1captures media data from the example user device(s)110A,110B,110C,110D. The example meter120collects media data that is presented on the example user device(s)110A,110B,110C,110D using the example network communicator122to be used by the example virtual bandwidth event detector125. The example meter120is implemented by a logic circuit such as, for example, a processor. However, any other type of circuitry may additionally or alternatively be used such as, for example, one or more analog or digital circuit(s), logic circuits, programmable processor(s), graphics processing unit(s) (GPU(s)), digital signal processor(s) (DSP(s)), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)), etc.

The example network communicator122of the illustrated example ofFIG. 1provides communication between the example internal network115and the example virtual bandwidth even detector125. In some examples, the internal network115provides the control frames to the virtual bandwidth event detector125via the network communicator122. In some examples, the virtual bandwidth event detector125provides virtual bandwidth events to the internal network115via the network communicator122. The example network communicator122can be implemented as any network communication interface such as, for example, an ethernet port, a WiFi module, etc.

The example virtual bandwidth event detector125of the illustrated example ofFIG. 1is provided to calculate the virtual bandwidth of the example user device(s)110A,110B,110C,110D using control packet data received by the example internal network115. The example virtual bandwidth event detector125parses the control packet data to use the data to calculate the virtual bandwidth over a period of time. In some examples, the period of time may be five minutes, however, any other lengths of the time may additionally and/or alternatively be used. The virtual bandwidth calculated by the example virtual bandwidth event detector125is used to generate bandwidth events when the virtual bandwidth meets a criterion such as, for example, the virtual bandwidth is above zero. However, other criteria may additionally and/or alternatively be used. The bandwidth events from the example virtual bandwidth event detector125are used by the example streaming probability determiner145to determine the likelihood that the example user device(s)110A,110B,110C,110D are streaming media. An example implementation of the virtual bandwidth event detector125is illustrated inFIG. 2, which is described in further detail below.

The example data center140of the illustrated example ofFIG. 1collects the virtual bandwidth events from the example external network135. In some examples, the data center140is associated with an AME. In some examples, the data center140can be a physical processing center (e.g., a central facility of the AME, etc.). Additionally or alternatively, the data center140can be implemented via a cloud service (e.g., Amazon Web Services (AWS), etc.). The example data center140can further store and process virtual bandwidth events.

The example streaming probability determiner145is provided to determine the likelihood that the example user device(s)110A,110B,110C,110D are streaming digital media. The example streaming probability determiner145receives the virtual bandwidth data calculated by the example virtual bandwidth event detector125through the example network device130and the example external network135. The example streaming probability determiner145uses the calculated virtual bandwidth to determine if the bandwidth is indicative of the example user device(s)110A,110B,110C,110D streaming media. The example streaming probability determiner145is implemented by a logic circuit such as, for example, a processor. However, any other type of circuitry may additionally or alternatively be used such as, for example, one or more analog or digital circuit(s), logic circuits, programmable processor(s), graphics processing unit(s) (GPU(s)), digital signal processor(s) (DSP(s)), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)), etc.

The example streaming media creditor150uses the probability information from the example streaming probability determiner145to credit example user device(s)110A,110B,110C, and110D with streaming media. In some examples, the streaming media creditor150generates a report including streaming metrics that may be presented to the media provider105.

FIG. 2is a block diagram illustrating an example implementation of the example virtual bandwidth event detector125ofFIG. 1. The example virtual bandwidth event detector125ofFIG. 2includes an example control frame receiver210, an example interval timer220, an example bitrate calculator230, and example virtual bandwidth calculator240, and an example virtual bandwidth event generator250.

The example control frame receiver210of the illustrated example ofFIG. 2captures control frames (BlockAck frames) from the example user device(s)110A,110B,110C,110D through the example internal network115. The example control frame receiver210determines if a captured control frame is from the user device(s)110A,110B,110C,110D (e.g., the control frame originated from the user device(s)110A,110B,110C,110D). The example control frame receiver210accesses the data from the control frames that are determined to be from the example user device(s)110A,110B,110C,110D such as, for example, the SSN, the bitmap, the amount of time since the last received control frame, etc. However, the example control frame receiver210may additionally and/or alternatively access other data from the control frames (e.g., the data seen in the example table400ofFIG. 4further discussed below). In some examples, the control frame receiver210implements means for capturing.

The example interval timer220of the illustrated example ofFIG. 2keeps track of the time period for determining the virtual bandwidth. The example interval timer220determines when a time period for determining the virtual bandwidth has elapsed. In examples disclosed herein, the time period is substantially five minutes. That is, the length of time may be any amount of time within thirty seconds of five minutes (e.g., within ten percent of five minutes). However, any other lengths of time may additionally and/or alternatively be used as the time period. The example interval timer220keeps track of the amount of time that the control frames are being captured before calculating the virtual bandwidth. In some examples, the interval timer220implements means for controlling.

The example bitrate calculator230of the illustrated example ofFIG. 2calculates the bitrate using the data in the captured control frames. The example bitrate calculator230uses the bitmap data and the amount of time since the last received control frame data from the control frame accessed by the example control frame receiver210. In examples disclosed herein, the bitmap is the number of acknowledged data frames between the control frame and a previously captured control frame. The example bitrate calculator230divides the bitmap by the amount of time since the last received control frame to determine the bitrate for the control frame captured by the example control frame receiver210. In some examples, the bitrate calculator230implements means for calculating.

The example virtual bandwidth calculator240of the illustrated example ofFIG. 2calculates the virtual bandwidth using the data from the control frames captured during the time period. The example virtual bandwidth calculator240determines the average bitrate from the control frames received in the time period. The example virtual bandwidth calculator240uses the bitrate data captured for each control frame by the example control frame receiver210and the amount of time of the time period that is determined by the example interval timer220. The example virtual bandwidth calculator240sums the bitrates from the captured control frames and divides the sum by the total amount of control frames captured in the time period to determine the average bitrate. However, the example virtual bandwidth calculator240may additionally and/or alternatively use other averaging methods to determine the average bitrate. The example virtual bandwidth calculator240divides the average bitrate by the time period from the example interval timer220to determine the virtual bandwidth for the time period. In some examples, the virtual bandwidth event calculator240implements means for calculating.

The example virtual bandwidth event generator250of the illustrated example ofFIG. 2generates bandwidth events for the virtual bandwidths calculated by the example virtual bandwidth calculator240. The example virtual bandwidth event generator250determines if the calculated virtual bandwidth is greater than zero. The example virtual bandwidth event generator250generates the bandwidth event when the virtual bandwidth calculated by the example virtual bandwidth calculator240is greater than zero. The example virtual bandwidth event generator250provides the bandwidth event to the example streaming probability determiner145ofFIG. 1to be used in determining the likelihood that the example user device(s)110A,110B,110C,110D are streaming media during each time period. In some examples, the virtual bandwidth event generator250implements means for generating.

FIGS. 3A and 3Bare example representations of a transmission message310from user device(s)110A,110B,110C,110D to a household (HH) access point (A/P) in the example internal network115and an example representation of a response message320from the HH A/P in the example internal network115to the user device(s)110A,110B,110C,110D. In examples disclosed herein, the user device(s)110A,110B,110C,110D send quality of service (QoS) data frames in the transmission message310ofFIG. 3Awith a traffic identifier (TID) of 0 and the acknowledgment (ACK) policy of “normal ACK”. In examples disclosed herein, the receiver in the internal network115will implicitly acknowledge (because of acknowledgement policy discussed above) with a BlockAck frame carrying the SSN that the user device(s)110A,110B,110C,110D sent and a bitmap that contains the received packets.

In examples disclosed herein, the bitmap along with the SSN indicates the packets that are being acknowledged by the example internal network115, where each bit acknowledges one packet and the sequence number of the packet is equal to the starting sequence number plus the bit number. For example, as seen in the example response message320ofFIG. 3B, the SSN of 2214 and the bitmap of FF7F000000000000 indicate that this example control (BlockAck) frame acknowledged 15 data frame packets from the user device(s)110A,110B,110C,110D successfully (number of set bits in bitmap). In examples disclosed herein, messages310and320are exchanged multiple times with the user device(s)110A,110B,110C,110D sending a several QoS data frames and the receiver on the internal network115acknowledging all of the QoS data frames in a single BlockAck frame.

FIG. 4is an example table representation of information determined by the example virtual bandwidth event detector125ofFIG. 1. The example virtual bandwidth event detector125ofFIG. 1received control (BlockAck) frames and parses the information contained in each frame. The example virtual bandwidth event detector125ofFIG. 1also performs calculations to determine virtual bandwidth. The example Table400ofFIG. 4includes the information determined by the virtual bandwidth event detector125ofFIG. 1. Example table400includes information from example BlockAck Frames440-465. For each example BlockAck Frames440-465ofFIG. 4, the example SSN410, example time415, example total time420, count (bitmap)425, total count430, and bitrate435are determined.

In the example table400ofFIG. 4, the example SSN410is the starting sequence number of the data packets being acknowledge by the BlockAck frame, the example time415is the time the BlockAck Frame was received, the example total time420is the time between two example BlockAck Frames440-465, the example count425is the count of acknowledged frames between two Block Ack Frames, the example total count430is the total count of acknowledged frames in a given time period, and the example bitrate435is the example count425divided by the example time415multiplied by 1500 (1500 is the maximum transmission unit (MTU) in bytes. In examples disclosed herein, the example virtual bandwidth event detector125ofFIG. 1determine the virtual bandwidth by dividing the example bitrate435ofFIG. 4by the example total time420ofFIG. 4for incremental time periods. In examples disclosed herein, the virtual bandwidth is represented in Kilobytes/Seconds.

FIG. 5is an example graph representation of a comparison between actual bandwidth based on packet sizes and virtual bandwidth based on the block acknowledgment mechanism in accordance with the examples disclosed herein. In the example graph500ofFIG. 5, the virtual bandwidth data is collected using the example virtual bandwidth event detector125ofFIG. 1. In the example graph500ofFIG. 5, the actual bandwidth is represented as the solid line and the virtual bandwidth is represented as the dashed line. The example graph500displays the two bandwidths as Kilobytes over Time in seconds. The example graph500shows the differences in bandwidth measurements that are determined using the data packets that are received (actual bandwidth) and the estimated bandwidth measurements that are determined using the control frames (the virtual bandwidth determined by the example virtual bandwidth event detector125ofFIG. 1).

While an example manner of implementing the virtual bandwidth event detector125ofFIG. 1is illustrated inFIG. 2, one or more of the elements, processes and/or devices illustrated inFIG. 2may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the example control frame receiver210, the example interval timer220, the example bitrate calculator230, the example virtual bandwidth calculator240, the example virtual bandwidth event generator250and/or, more generally, the example virtual bandwidth event detector125ofFIG. 1may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example control frame receiver210, the example interval timer220, the example bitrate calculator230, the example virtual bandwidth calculator240, the example virtual bandwidth event generator250and/or, more generally, the example virtual bandwidth event detector125could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), programmable controller(s), graphics processing unit(s) (GPU(s)), digital signal processor(s) (DSP(s)), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)). When reading any of the apparatus or system claims of this patent to cover a purely software and/or firmware implementation, at least one of the example control frame receiver210, the example interval timer220, the example bitrate calculator230, the example virtual bandwidth calculator240, and/or the example virtual bandwidth event generator250is/are hereby expressly defined to include a non-transitory computer readable storage device or storage disk such as a memory, a digital versatile disk (DVD), a compact disk (CD), a Blu-ray disk, etc. including the software and/or firmware. Further still, the example virtual bandwidth event detector125ofFIG. 1may include one or more elements, processes and/or devices in addition to, or instead of, those illustrated inFIG. 2, and/or may include more than one of any or all of the illustrated elements, processes and devices. As used herein, the phrase “in communication,” including variations thereof, encompasses direct communication and/or indirect communication through one or more intermediary components, and does not require direct physical (e.g., wired) communication and/or constant communication, but rather additionally includes selective communication at periodic intervals, scheduled intervals, aperiodic intervals, and/or one-time events.

FIG. 6is a flowchart illustrating example machine-readable instructions which may be executed to implement the example meter120and the example streaming probability determiner145ofFIG. 1. The program ofFIG. 6begins execution at block610at which the example virtual bandwidth event detector125detects a virtual bandwidth event. The example virtual bandwidth event detector125calculates the virtual bandwidth of the example user device(s)110A,110B,110C,110D using control packet data received by the example internal network115. As described in further detail below, the example flowchart610ofFIG. 7represents example instructions that may be implemented to detect a virtual bandwidth event.

At block615, the example meter120transmits the virtual bandwidth event. The example meter120transmits the virtual bandwidth event to the example internal network115via the example network communicator122. In some examples, the internal network115communicated the virtual bandwidth event from the meter120to the external network135via the network device130. In some examples, the external network135provides the virtual bandwidth event to the streaming probability determiner145.

At block620, the example streaming probability determiner145determines if the virtual bandwidth event indicates media streaming. The example streaming probability determiner145receives the virtual bandwidth event from the example virtual bandwidth event detector125via the example network communicator122, the example internal network115, the example network device130, and the example external network135. The example streaming probability determiner145determines if the bandwidth of the virtual bandwidth event is indicative of the example user device(s)110A,110B,110C,110D streaming digital media. In some examples, the streaming probability determiner145determines if the bandwidth of the virtual bandwidth event is indicative of streaming media when the bandwidth exceeds a threshold. However, other methods of determining if the bandwidth of the virtual bandwidth event is indicative of streaming media may additionally and/or alternatively be used.

If the example streaming probability determiner145determines that the virtual bandwidth event does not indicate media streaming (e.g., block620returns a result of NO), then process600returns to block610at which the example virtual bandwidth event detector125detects a virtual bandwidth event. If the example streaming probability determiner145determines that the virtual bandwidth event indicates media streaming (e.g., block620returns a result of YES), then process600continues to block625at which the streaming media is credited. At block625, the example streaming media creditor150credits the example user device(s)110A,110B,110C,110D ofFIG. 1with the media streaming. After block624, process600ends.

FIG. 7is an example process610that is representative of example machine-readable instructions which may be executed to implement the example virtual bandwidth event detector125ofFIG. 2. The program ofFIG. 7begins execution at block710at which the example interval timer220starts a timer. At block715, the example control frame receiver210captures a control frame (BlockAck). At block720, the example control frame receiver determines if the control frame is from the example user device(s)110A,110B,110C,110D ofFIG. 1. If the example control frame receiver210determines that control frame is from the example user device(s)110A,110B,110C,110D ofFIG. 1(e.g., block715returns a result of YES), control frame receiver210accesses the SSN from the control frame data. (Block725). If the example control frame receiver210determines that the control frame is not from the example user device(s)110A,110B,110C,110D ofFIG. 1(e.g., block720returns a result of NO), the example control frame receiver waits to capture a new control packet (returns to block715).

At block730, the example control frame receiver210accesses the bitmap from the control frame data. At block735, the example control frame receiver210accesses the amount of time since the last received control frame. At block740, the example bitrate calculator230calculates the bitrate by dividing the bitmap from the control frame data by the amount of time since the last received control frame. At block745, the example interval timer220determines if the timer has reached a threshold since the timer was started. In some examples, the threshold may be any length of time such as, for example, five minutes, fifteen minutes, etc. If the example interval timer220determines that the timer has reached a threshold since the timer was started (e.g., block745returns a result of YES), the example virtual bandwidth calculator240determines the average bitrate from the control frames received in the time period. (Block750). If the example interval timer220determines that the timer has not reached a threshold since the timer was started (e.g., block745returns a result of NO), the example control frame receiver210waits to capture a new control frame (returns to block715).

At block750, the example virtual bandwidth calculator240determines the average bitrate from the control frames received in the time period. The example virtual bandwidth calculator240may determine the average bitrate from the control frames received by summing the bitrates of each control frame together and dividing by the total number of control frames received. However, other methods of determining an average may additionally and/or alternatively be used to determine the average bitrate of the control frames received. At block755, the example virtual bandwidth calculator240divides the average bitrate by the time period. The example virtual bandwidth calculator240receives the time of the time period from the example interval timer220to perform the calculation of block720.

At block770, the example virtual bandwidth event generator250determines is the virtual bandwidth is greater than zero. If the example virtual bandwidth event generator250determines that the virtual bandwidth is not greater than zero (e.g., block770returns a result of NO), the example control frame receiver210waits to capture a new control frame (returns to block715). If the example virtual bandwidth event generator250determines that the virtual bandwidth is greater than zero (e.g., block760returns a result of YES), the example virtual bandwidth event generator250generates a bandwidth event. (Block760). Once the bandwidth event is generated, process610completes and returns to process600ofFIG. 6. The example process610ofFIG. 7may be repeated over a selected period of time for virtual bandwidth detection.

FIG. 8is a block diagram of an example processor platform800structured to execute the instructions ofFIGS. 6 and 7to implement the virtual bandwidth event detector125ofFIG. 2. The processor platform1000can be, for example, a server, a personal computer, a workstation, a self-learning machine (e.g., a neural network), a mobile device (e.g., a cell phone, a smart phone, a tablet such as an iPad™), a personal digital assistant (PDA), an Internet appliance, a DVD player, a CD player, a digital video recorder, a Blu-ray player, a gaming console, a personal video recorder, a set top box, a headset or other wearable device, or any other type of computing device.

The processor platform800of the illustrated example includes a processor812. The processor812of the illustrated example is hardware. For example, the processor812can be implemented by one or more integrated circuits, logic circuits, microprocessors, GPUs, DSPs, or controllers from any desired family or manufacturer. The hardware processor may be a semiconductor based (e.g., silicon based) device. In this example, the processor implements the example control frame receiver210, the example interval timer220, the example bitrate calculator230, the example virtual bandwidth calculator240, and the example virtual bandwidth event generator250.

The processor platform800of the illustrated example also includes an interface circuit820. The interface circuit820may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), a Bluetooth® interface, a near field communication (NFC) interface, and/or a PCI express interface.

In the illustrated example, one or more input devices822are connected to the interface circuit820. The input device(s)822permit(s) a user to enter data and/or commands into the processor812. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, isopoint and/or a voice recognition system.

The processor platform800of the illustrated example also includes one or more mass storage devices828for storing software and/or data. Examples of such mass storage devices828include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, redundant array of independent disks (RAID) systems, and digital versatile disk (DVD) drives.

The machine executable instructions832ofFIGS. 6 and 7may be stored in the mass storage device828, in the volatile memory814, in the non-volatile memory816, and/or on a removable non-transitory computer readable storage medium such as a CD or DVD.

From the foregoing, it will be appreciated that example methods, apparatus and articles of manufacture have been disclosed that determine virtual bandwidths from control frame data. The disclosed methods, apparatus and articles of manufacture improve the efficiency of using a computing device by providing the ability to determine an estimated bandwidth for a user device without using information from the data frames. The disclosed methods, apparatus, and articles of manufacture improve the efficiency of using a computing device by using the block acknowledgment mechanism and not having to acknowledge every data packet since. The disclosed methods, apparatus, and articles of manufacture allow for determining bandwidth measurements in situations when a streaming meter device is unable to see data packets due to incompatible technology and/or other situations in which the streaming meter is unable to capture a data packet. The disclosed methods, apparatus and articles of manufacture are accordingly directed to one or more improvement(s) in the functioning of a computer.

Example methods, apparatus, systems, and articles of manufacture to determine virtual WiFi data rate are disclosed herein. Further examples and combinations thereof include the following:

Example 1 includes an apparatus to determine virtual bandwidth, the apparatus comprising a control frame receiver to capture control frames from a user device, a bitrate calculator to calculate a bitrate for each control frame by dividing a bitmap of a control frame by an amount of time between the control frame and a previously captured control frame, an interval timer to control a length of time that the control frames are captured before calculating the virtual bandwidth, and a virtual bandwidth calculator to calculate the virtual bandwidth after the length of time, the virtual bandwidth calculated by dividing an average bitrate from the control frames by the length of time.

Example 2 includes the apparatus of example 1, wherein the bitmap is a number of acknowledged frames between the control frame and the previously captured control frame.

Example 3 includes the apparatus of example 2, wherein the control frame receiver is to access at least one of a starting sequence number, a total time between the control frame and the previously captured control frame, the bitmap, and a total count of acknowledged frames during the length of time from the control frames.

Example 4 includes the apparatus of example 1, further including a virtual bandwidth event generator to generate a bandwidth event for the virtual bandwidth in response to the virtual bandwidth meeting a criterion.

Example 5 includes the apparatus of example 4, wherein the criterion represents the virtual bandwidth being greater than zero.

Example 6 includes At least one non-transitory computer readable medium comprising instructions that, when executed, cause at least one processor to at least capture control frames from a user device, calculate a bitrate for each control frame by dividing a bitmap of a control frame by an amount of time between the control frame and a previously captured control frame, control a length of time that the control frames are captured before calculating a virtual bandwidth, and calculate the virtual bandwidth after the length of time, the virtual bandwidth calculated by dividing an average bitrate from the control frames by the length of time.

Example 7 includes the at least one non-transitory computer readable medium of example 6, wherein the bitmap is a number of acknowledged frames between the control frame and the previously captured control frame.

Example 8 includes the at least one non-transitory computer readable medium of example 7, wherein the instructions that, when executed, cause the at least one processor to access at least one of a starting sequence number (SSN), a total time between the control frame and the previously captured control frame, the bitmap, and a total count of acknowledged frames during the length of time from the control frames.

Example 9 includes the at least one non-transitory computer readable medium of example 6, wherein the length of time may be five minutes.

Example 10 includes the at least one non-transitory computer readable medium of example 6, wherein the instructions, when executed, cause the at least one processor to generate a bandwidth event for the virtual bandwidth in response to the virtual bandwidth meeting a criterion.

Example 11 includes the at least one non-transitory computer readable medium of example 10, wherein the criterion represents the virtual bandwidth being greater than zero.

Example 12 includes a method to determine virtual bandwidth, the method comprising capturing control frames from a user device, calculating a bitrate for each control frame by dividing a bitmap of a control frame by an amount of time between the control frame and a previously captured control frame, controlling, by executing an instruction with a processor, a length of time that the control frames are captured before calculating the virtual bandwidth, and calculating the virtual bandwidth after the length of time, the virtual bandwidth calculated by dividing an average bitrate from the control frames by the length of time.

Example 13 includes the method of example 12, wherein the bitmap represents a number of acknowledged frames between the control frame and the previously captured control frame.

Example 14 includes the method of example 13, further including accessing at least one of a starting sequence number (SSN), a total time between the control frame and the previously captured control frame, the bitmap, and a total count of acknowledged frames during the length of time from the control frames.

Example 15 includes the method of example 12, wherein the length of time is substantially five minutes.

Example 16 includes the method of example 12, further including generating a bandwidth event for the virtual bandwidth if the virtual bandwidth meets a criterion.

Example 17 includes the method of example 16, wherein the criterion represents the virtual bandwidth being greater than zero.

Example 18 includes an apparatus to determine virtual bandwidth, the apparatus comprising means for capturing control frames from a user device, first means for calculating a bitrate for each control frame by dividing a bitmap of a control frame by an amount of time between the control frame and a previously captured control frame, means for controlling a length of time that the control frames are captured before calculating the virtual bandwidth, and second means for calculating the virtual bandwidth after the length of time, the virtual bandwidth calculated by dividing an average bitrate from the control frames by the length of time.

Example 19 includes the apparatus of example 18, wherein the bitmap is a number of acknowledged frames between the control frame and the previously captured control frame.

Example 20 includes the apparatus of example 18, wherein the means for capturing control frames from a user device is to access at least one of a starting sequence number, a total time between the control frame and the previously captured control frame, the bitmap, and a total count of acknowledged frames during the length of time from the control frames.

Example 21 includes the apparatus of example 18, further including means for generating a bandwidth event for the virtual bandwidth in response to the virtual bandwidth meeting a criterion.

Example 22 includes the apparatus of example 21, wherein the criterion represents the virtual bandwidth being greater than zero.