1. A method of operating a buffer in a communications device, said buffer including a guaranteed buffer portion for ports of said device supporting a designated service class and a shared buffer portion for use by any of said ports, a first variable S being a queue size for a service class and a second variable Sshared being the occupied amount of said shared buffer portion, said method comprising the steps of: enqueuing arriving buffer data and incrementing S correspondingly if S is less than said guaranteed buffer portion; enqueuing the buffer data and incrementing S and Sshared correspondingly if Sshared is less than the shared buffer portion and S is less than a maximum amount of buffers that may be occupied by a single queue; and discarding the buffer otherwise.