An apparatus for scheduling the transmission of data packets for a plurality of data packet flows, said data packet flows being allocated given shares of the transmission capacity r of a communication link and being grouped in bundles, said bundles being allocated service shares of the processing capacity of said communication link, the transmission over the communication link being divided in service frames, a service frame offering at least one transmission opportunity to every data packet flow that is backlogged, a backlogged data packet flow being a data packet flow that has at least one data packet stored in respective one of a plurality of packet queues, the scheduling apparatus comprising:
- means for determining the duration of the service frame;
- and
- means for guaranteeing that each data packet flow always receives at least its allocated service share if it remains continuously backlogged over a sufficient number of consecutive service frames, and that each bundle receives at least its allocated service share if there is always at least one data packet flow in the bundle that remains continuously backlogged for the whole duration of a service frame over a sufficient number of consecutive service frames, said guaranteeing means including:
- means for maintaining, for each bundle I, a cumulative share ΦI that relates to the sum of said service shares allocated to respective ones of said data packet flows that are grouped together in the same bundle I;
- means for computing, for each bundle I, a service ratio between the service share RI allocated to said bundle I and said cumulative share ΦI of the bundle;
- and
- means for modulating said service shares allocated to respective ones of said plurality of data packet flows using the service ratio computed for respective ones of said plurality of bundles.