Fix tc-tbf burst value in bytes.

This commit is contained in:
Ye Yin
2018-07-03 18:36:49 +08:00
parent 696b1f9ab1
commit 7571169160
2 changed files with 15 additions and 14 deletions

View File

@ -125,9 +125,10 @@ func createTBF(rateInBits, burstInBits, linkIndex int) error {
return fmt.Errorf("invalid burst: %d", burstInBits)
}
rateInBytes := rateInBits / 8
bufferInBytes := buffer(uint64(rateInBytes), uint32(burstInBits))
burstInBytes := burstInBits / 8
bufferInBytes := buffer(uint64(rateInBytes), uint32(burstInBytes))
latency := latencyInUsec(latencyInMillis)
limitInBytes := limit(uint64(rateInBytes), latency, uint32(bufferInBytes))
limitInBytes := limit(uint64(rateInBytes), latency, uint32(burstInBytes))
qdisc := &netlink.Tbf{
QdiscAttrs: netlink.QdiscAttrs{
@ -159,7 +160,7 @@ func buffer(rate uint64, burst uint32) uint32 {
}
func limit(rate uint64, latency float64, buffer uint32) uint32 {
return uint32(float64(rate) / float64(netlink.TIME_UNITS_PER_SEC) * (latency + float64(tick2Time(buffer))))
return uint32(float64(rate)*latency/float64(netlink.TIME_UNITS_PER_SEC)) + buffer
}
func latencyInUsec(latencyInMillis float64) float64 {