1. A method comprising:
generating a chronicler object, in response to detection of a usage request message being generated, wherein
the chronicler object is associated with the usage request message;
transmitting the chronicler object to a charging engine, wherein
the chronicler object is configured to collect a set of time points as the chronicler object travels through the charging engine;
receiving the chronicler object from the charging engine; and
calculating latency of the usage request message using the set of time points.
2. The method of claim 1, further comprising:
generating an accumulator object, wherein
the accumulator object is associated with a collection period, and
the chronicler object is received during the collection period;
extracting the set of time points from the chronicler object, in response to the receiving the chronicler object; and
adding the set of time points to the accumulator object.
3. The method of claim 2, further comprising:
adding the accumulator object to a FIFO (first in first out) circular buffer upon expiration of the collection period, wherein
the FIFO circular buffer is configured to temporarily store a plurality of accumulator objects that are received at the FIFO circular buffer during a reporting window.
4. The method of claim 1, further comprising:
retrieving a batch of accumulator objects from a plurality of FIFO circular buffers, in response to a request to generate a latency report for an entity, wherein
the entity comprises one or more components of the charging engine; and
calculating latency for the entity, using information contained in the batch of accumulator objects, wherein
the information comprises a plurality of sets of time points extracted from a plurality of chronicler objects that have collected the plurality of sets of time points in the one or more components of the charging engine.
5. The method of claim 4, wherein the calculating the latency comprises:
determining a length of a time between a first timestamp collected at a first interception point in the charging engine and a second timestamp collected at a second interception point in the charging engine, wherein
the set of time points comprise the first timestamp and the second timestamp, and
the set of time points further comprise a first point label associated with the first interception point and a second point label associated with the second interception point.
6. The method of claim 4, wherein the calculating the latency comprises:
summing one or more time spreads to calculate the latency for the entity, wherein
the set of time points comprise one or more time spreads that each indicate a length of time associated with the one or more components of the charging engine.
7. The method of claim 4, further comprising:
generating the latency report for the entity, wherein
the latency report comprises
a visual graph that illustrates the latency for the entity over time, and
one or more latency statistics determined from the latency of the entity.
8. A non-transitory computer-readable medium configured to store program instructions that, when executed on a processor, are configured to cause the processor to perform operations comprising:
generating a chronicler object, in response to detection of a usage request message being generated, wherein
the chronicler object is associated with the usage request message;
transmitting the chronicler object to a charging engine, wherein
the chronicler object is configured to collect a set of time points as the chronicler object travels through the charging engine;
receiving the chronicler object from the charging engine; and
calculating latency of the usage request message using the set of time points.
9. The non-transitory computer-readable medium of claim 8, the method further comprising:
generating an accumulator object, wherein
the accumulator object is associated with a collection period, and
the chronicler object is received during the collection period;
extracting the set of time points from the chronicler object, in response to the receiving the chronicler object; and
adding the set of time points to the accumulator object.
10. The non-transitory computer-readable medium of claim 9, the method further comprising:
adding the accumulator object to a FIFO (first in first out) circular buffer upon expiration of the collection period, wherein
the FIFO circular buffer is configured to temporarily store a plurality of accumulator objects that are received at the FIFO circular buffer during a reporting window.
11. The non-transitory computer-readable medium of claim 8, the method further comprising:
retrieving a batch of accumulator objects from a plurality of FIFO circular buffers, in response to a request to generate a latency report for an entity, wherein
the entity comprises one or more components of the charging engine; and
calculating latency for the entity, using information contained in the batch of accumulator objects, wherein
the information comprises a plurality of sets of time points extracted from a plurality of chronicler objects that have collected the plurality of sets of time points in the one or more components of the charging engine.
12. The non-transitory computer-readable medium of claim 11, wherein the calculating the latency comprises:
determining a length of a time between a first timestamp collected at a first interception point in the charging engine and a second timestamp collected at a second interception point in the charging engine, wherein
the set of time points comprise the first timestamp and the second timestamp, and
the set of time points further comprise a first point label associated with the first interception point and a second point label associated with the second interception point.
13. The non-transitory computer-readable medium of claim 11, wherein the calculating the latency comprises:
summing one or more time spreads to calculate the latency for the entity, wherein
the set of time points comprise one or more time spreads that each indicate a length of time associated with the one or more components of the charging engine.
14. The non-transitory computer-readable medium of claim 11, the method further comprising:
generating the latency report for the entity, wherein
the latency report comprises
a visual graph that illustrates the latency for the entity over time and
one or more latency statistics determined from the latency of the entity.
18. A computer system comprising:
a processor;
a memory, coupled to the processor;
a non-transitory computer-readable storage medium coupled to the processor; and
a plurality of instructions, encoded in the non-transitory computer-readable storage medium and configured to cause the processor to implement
a chronicler generator configured to generate a chronicler object, in response to detection of a usage request message being generated, wherein
the chronicler object is associated with the usage request message,
a chronicler transmitter configured to transmit the chronicler object to a charging engine, wherein
the chronicler object is configured to collect a set of time points as the chronicler object travels through the charging engine,
a chronicler receiver configured to receive the chronicler object from the charging engine, and
a latency reporter configured to calculate latency of the usage request message using the set of time points.
16. The computer system of claim 15, the instructions further configured to implement a chronicler accumulator configured to
generate an accumulator object, wherein
the accumulator object is associated with a collection period, and
the chronicler object is received during the collection period,
extract the set of time points from the chronicler object, in response to the receiving the chronicler object, and
add the set of time points to the accumulator object.
17. The computer system of claim 16, the chronicler accumulator further configured to:
add the accumulator object to a FIFO (first in first out) circular buffer upon expiration of the collection period, wherein
the FIFO circular buffer is configured to temporarily store a plurality of accumulator objects that are received at the FIFO circular buffer during a reporting window.
18. The computer system of claim 15, the latency reporter further configured to:
retrieve a batch of accumulator objects from a plurality of FIFO circular buffers, in response to a request to generate a latency report for an entity, wherein
the entity comprises one or more components of the charging engine; and
calculate latency for the entity, using information contained in the batch of accumulator objects, wherein
the information comprises a plurality of sets of time points extracted from a plurality of chronicler objects that have collected the plurality of sets of time points in the one or more components of the charging engine.
19. The computer system of claim 18, wherein the latency reporter is further configured to:
determine a length of a time between a first timestamp collected at a first interception point in the charging engine and a second timestamp collected at a second interception point in the charging engine, wherein
the set of time points comprise the first timestamp and the second timestamp, and
the set of time points further comprise a first point label associated with the first interception point and a second point label associated with the second interception point.
20. The computer system of claim 18, wherein the latency reporter is further configured to:
sum one or more time spreads to calculate the latency for the entity, wherein
the set of time points comprise one or more time spreads that each indicate a length of time associated with the one or more components of the charging engine.
21. The computer system of claim 18, the latency reporter is further configured to:
generate the latency report for the entity, wherein
the latency report comprises
a visual graph that illustrates the latency for the entity over time, and
one or more latency statistics determined from the latency of the entity.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method in a communication network, the method comprising:
(i) receiving, at a client device, a sounding packet from an access point device over a wireless downlink communication channel having a plurality of 20 MHz-wide subchannels, the sounding packet having a packet bandwidth that spans the plurality of 20 MHz-wide subchannels;
(ii) at the client device, identifying a subchannel block of the sounding packet, wherein the subchannel block spans only a subset of the plurality of 20 MHz-wide subchannels, and the subchannel block has a subchannel block contiguous bandwidth that is a) at least 20 MHz and b) smaller than the packet bandwidth of the sounding packet;
(iii) performing a channel estimation (a) on the subchannel block, but (b) not on any other 20 MHz-wide subchannels of the plurality of 20 MHz-wide subchannels, to determine a partial channel estimation of the downlink communication channel; and
(iv) communicating, to the access point in a feedback frame, the partial channel estimation of the downlink communication channel so that the access point can determine a steering matrix from the partial channel estimation for application to only a portion, in frequency, of an information carrying data packet, transmitted by the access point, when the information carrying data packet has a bandwidth larger than the subchannel block, wherein the feedback frame includes an indication of a bandwidth of the subchannel block to which the partial channel estimation corresponds, wherein the portion of the information carrying data packet corresponds in frequency to the subchannel block.
2. The method of claim 1, wherein the sounding packet is a null data packet (NDP) sounding packet containing (i) an announcement frame and (ii) a very high throughput control frame.
3. The method of claim 1, wherein the (i)-(iv) are performed for each of a plurality of client stations.
4. The method of claim 1, wherein performing the channel estimation on the subchannel block comprises determining, at the client device, a compressed steering matrix from the subchannel block.
5. The method of claim 1, wherein performing the channel estimation on the subchannel block comprises determining, at the client device, an uncompressed steering matrix from the subchannel block.
6. The method of claim 1, wherein performing the channel estimation on the subchannel block comprises determining, at the client device, channel state information from the subchannel block.
7. The method of claim 1, wherein the sounding packet is an IEEE 802.11ac sounding packet.
8. The method of claim 7, wherein the packet bandwidth of the sounding packet is 40 MHz, 80 MHz, or 160 MHz.
9. The method of claim 1, wherein the plurality of 20 MHz-wide subchannels comprises a 20 MHz-wide control channel and at least one 20 MHz-wide extension channel, wherein identifying the subchannel block of the sounding packet comprises identifying a subchannel block that includes at least the 20 MHz-wide control channel.
10. The method of claim 1, wherein identifying the subchannel block of the sounding packet comprises identifying any combination of at least two contiguous 20 MHz-wide subchannels in the plurality of 20 MHz-wide subchannels as the subchannel block.
11. The method of claim 1, further comprising:
determining, at the access point, the steering matrix from the partial channel estimation; and
applying, at the access point, the steering matrix in transmitting the information carrying data packet to the client device on the downlink channel.
12. The method of claim 11, wherein applying the steering matrix in transmitting the information carrying data packet comprises:
applying the steering matrix to the full information carrying data packet, when the information carrying data packet has a bandwidth that is the same as the packet bandwidth.
13. An apparatus comprising:
a transceiver configured to
receive a sounding packet from an access point, the sounding packet having a packet bandwidth that spans a downlink communication channel having a plurality of 20 MHz-wide subchannels;
a channel estimation circuit configured to
identify a subchannel block within the sounding packet, wherein the subchannel block spans only a subset of the plurality of 20 MHz-wide subchannels, and the subchannel block has a subchannel block contiguous bandwidth that is a) at least 20 MHz and b) smaller than the packet bandwidth of the sounding packet, and
perform channel estimation (i) on the subchannel block, but (ii) not on any other 20 MHz-wide subchannels of the plurality of 20 MHz-wide subchannels, to determine a partial channel estimation of a downlink communication channel;
wherein the transceiver is further configured to
communicate, to the access point in a feedback frame, the partial channel estimation of the downlink communication channel so that the access point can determine a steering matrix from the partial channel estimation for application to only a portion, in frequency, of an information carrying data packet when the information carrying data packet has a bandwidth larger than the subchannel block, wherein the feedback frame includes an indication of a bandwidth of the subchannel block to which the partial channel estimation corresponds, wherein the portion of the information carrying data packet corresponds in frequency to the subchannel block.
14. The apparatus of claim 13, wherein the channel estimation circuit is configured to perform the channel estimation on the subchannel block by determining a compressed steering matrix from the subchannel block.
15. The apparatus of claim 13, wherein the channel estimation circuit is configured to perform the channel estimation on the subchannel block by determining an uncompressed steering matrix from the subchannel block.
16. The apparatus of claim 13, wherein the channel estimation circuit is configured to perform the channel estimation on the subchannel block by determining channel state information from the subchannel block.
17. The apparatus of claim 13, wherein the plurality of 20 MHz-wide subchannels comprises a 20 MHz-wide control channel and at least one 20 MHz-wide extension channel, wherein the channel estimation circuit is configured to identify the subchannel block within the sounding packet by identifying a subchannel block that includes at least the 20 MHz-wide control channel.
18. The apparatus of claim 13, wherein the plurality of 20 MHz-wide subchannels comprises a 20 MHz-wide control channel and at least one 20 MHz-wide extension channel, wherein the channel estimation circuit is configured to identify the subchannel block within the sounding packet by identifying any combination of at least two contiguous 20 MHz-wide subchannels in the plurality of 20 MHz-wide subchannels as the subchannel block.
19. An access point apparatus comprising:
a plurality of antennas;
a network interface device configured to transmit, via the plurality of antennas, a sounding packet over a wireless downlink communication channel that comprises a plurality of 20 MHz-wide subchannels, wherein the network interface device includes
a steering vector controller configured to receive, from a client device, a feedback frame that includes a partial channel estimation of a subchannel block corresponding to the wireless downlink communication channel between (i) the access point and (ii) the client device, wherein
the partial channel estimation corresponds to only a subset of the plurality of 20 MHz-wide subchannels,
the feedback frame does not include channel estimation information for any other 20 MHz-wide subchannels in the wireless downlink communication channel,
the subchannel block corresponds to only the subset of the 20 MHz-wide subchannels and has a contiguous bandwidth of at least 20 MHz, and
the steering vector controller is configured to use the partial channel estimation to identify a steering matrix for use in communicating on the wireless downlink communication channel between (i) the access point and (ii) the client device, and
a spatial steering controller configured to apply the identified steering matrix to only a portion, in frequency, of an information carrying packet, wherein the portion, in frequency, of the information carrying packet corresponds, in frequency, to the subchannel block.
20. The access point apparatus of claim 19, wherein:
the plurality of 20 MHz-wide subchannels includes a 20 MHz-wide control channel; and
the subchannel block includes the 20 MHz-wide control channel.
21. The access point apparatus of claim 19, wherein the steering vector controller is configured to receive channel state information as the partial channel estimation and from the channel state information determine the steering matrix.
22. The access point apparatus of claim 19, wherein the steering vector controller is configured to receive a compressed steering matrix andor an uncompressed steering matrix as the partial channel estimation to identifying the steering matrix.