yuanrongxi / razor

A google's congestion Control Algorithm
MIT License
352 stars 152 forks source link

windowed_filter.c的实现是不是有问题? #6

Closed sudokuhk closed 5 years ago

sudokuhk commented 5 years ago

windowed_filter.c的实现是不是有问题,我参照linux内核的win_minmax实现,和你一样的单元测试样例,但是输出不一样? 你的init_min_filter的输出是: 20 40 50 linux内核的算法输出是: 20 30 50

你的init_max_filter的输出是: 900 700 600 linux内核的输出是: 900 800 700

附上测试代码:

win_minmax.h.txt win_minmax.c.txt test.c.txt

yuanrongxi commented 5 years ago

我这个是根据chrome中QUIC的实现的测试用来判定的,在QUIC的windowed_filter_test.cc中测试用例是这样写: void InitializeMaxFilter() { QuicTime now = QuicTime::Zero(); QuicBandwidth bw_sample = QuicBandwidth::FromBitsPerSecond(1000); for (int i = 0; i < 5; ++i) { windowed_maxbw.Update(bw_sample, now); VLOG(1) << "i: " << i << " sample: " << bw_sample.ToBitsPerSecond() << " maxs: " << " " << windowed_maxbw.GetBest().ToBitsPerSecond() << " " << windowed_maxbw.GetSecondBest().ToBitsPerSecond() << " " << windowed_maxbw.GetThirdBest().ToBitsPerSecond(); now = now + QuicTime::Delta::FromMilliseconds(25); bw_sample = bw_sample - QuicBandwidth::FromBitsPerSecond(100); } EXPECT_EQ(QuicBandwidth::FromBitsPerSecond(900), windowed_maxbw.GetBest()); EXPECT_EQ(QuicBandwidth::FromBitsPerSecond(700), windowed_maxbw.GetSecondBest()); EXPECT_EQ(QuicBandwidth::FromBitsPerSecond(600), windowed_maxbw.GetThirdBest()); }