A computer system comprising one or more processing units, memory, and a network interface device, the network interface device being configured to perform operations for packet scheduling, the operations comprising:
- determining whether a proximity condition is satisfied for a next packet of a given packet flow, the proximity condition depending at least in part on how long a target next send time is after a current time;
- determining whether to schedule the next packet of the given packet flow for transmission, wherein the next packet of the given packet flow is scheduled for transmission if the next packet of the given packet flow is due or if the proximity condition is satisfied for the next packet of the given packet flow;
- and
- when the next packet of the given packet flow is scheduled for transmission, sending the next packet of the given packet flow and updating the target next send time based at least in part on a target transmission rate.