Patent ID: 7447155

Claim:
A data controller comprising: a traffic pattern collector to observe a data traffic pattern, the data traffic being comprised of a plurality of data packets; a traffic service engine to receive data from the traffic pattern collector concerning the data traffic pattern and to determine a data flow specification for the data traffic pattern, the data flow specification comprising a token bucket size, the received data including the size and arrival time of each of the data packets, wherein the token bucket size is based at least in part on the sizes and arrival times of the data packets, and wherein the data controller considers each data packet only once in the determination of the token bucket size; and a quality of service provider to receive the data flow specification; wherein the traffic service engine is to determine the data flow specification by: for a first data packet of the plurality of data packets, setting a first variable and a second variable to be a first packet size minus the product of a token bucket rate times a delay upper bound, and setting a third variable at the first packet size, for each subsequent data packet of the plurality of data packets: setting the second variable at a maximum of: the previous value of the second variable plus a current data packet size minus the token bucket rate times a difference between a time of the current data packet and a time of the preceding data packet, the preceding data packet size plus the current data packet size, minus the token bucket rate times a number equal to the time of the current data packet plus the delay upper bound minus the time of the last data packet, or the current packet size minus the token bucket rate times the delay upper bound, setting the first variable to a maximum of the previous value of the first variable or the current value of the second variable, and setting the third variable to a maximum of the current data packet size or the previous value of the third variable; after all of the plurality of data packets have been considered, setting the data flow specification to the maximum of the previous value of the first variable or the previous value of the third variable.