Scalable network scheduling in software