Starting over

This commit is contained in:
Ian Gulliver
2016-09-25 15:56:37 -07:00
parent a78c8461d6
commit 6da1c57c36
18 changed files with 158 additions and 1514 deletions

31
notes.txt Normal file
View File

@@ -0,0 +1,31 @@
priority buckets:
std::array [ differentiated service ]
fairness buckets:
intrusive unordered set [ source address ]
intrusive unordered set [ dest address ]
intrusive unordered set [ protocol, port pair ]
per-bucket queue:
intrusive doubly linked list
global size queue (for binpacking):
intrusive multiset [ packet size ]
siphash for unordered sets
pop algorithm:
find first non-empty priority
keep iterator to 3 tiers of next bucket in rotation
pop first N from bucket queue until picking next packet would exceed size limit
use global size queue find packets with size <= remaining space; largest-first binpacking
HonestQueue
std::array[ differentiated service ] -> PriorityBucket
intrusive unordered set [ source address ] -> FairSrcBucket
intrusive unordered set [ dest address ] -> FairDestBucket
intrusive unordered set [ protocol, port pair ] -> FairFlowBucket
intrusive double-linked list -> Packet
statistics
intrusive multiset [ packet size ] -> Packet
statistics