Patent ID: 8427946

Claim:
A non-transitory computer executable program product tangibly embodied on a computer readable medium comprising instructions that when performed by a computer cause the computer to perform operations comprising: receiving packets from a plurality of users via a plurality of ports, wherein the packets are classified according to markings provided by each user that identify a class of service to which each packet belongs; detecting the marking of each packet and recognizing which user submitted each packet; detecting at a port whether a user is attempting to transfer packets of a particular class through the port at a bandwidth greater than a bandwidth assigned for the particular class at the port; when a user attempts to transfer packets of the particular class through the port at the bandwidth greater than the bandwidth assigned for the particular class, holding in a queue dedicated to the port the packets of the particular class until time for transmission; and acting upon the packets received from the plurality of users in accordance with a bandwidth assigned for each class of service for each user to forward the packets received from the plurality of users with the bandwidth assigned for each class of service, wherein classes of service comprise a first class, a second class, and a third class, wherein the first class has a priority based bandwidth allocation, the second class has a minimum bandwidth allocation which is a fixed bandwidth percentage of bandwidth remaining after bandwidth is allotted to the first class, such that when a number of packets received from the plurality of users for the second class exceeds bandwidth assigned to the second class but the third class is not utilizing all of bandwidth assigned to the third class, bandwidth assigned to the third class that is not being utilized for the third class is utilized to temporarily increase available bandwidth for the second class.