The present invention is a shared buffer architecture that dynamically allocates buffer size to each of multiple sources depending on buffer 
pool utilization, estimated per-connection 
offered load, and the total number of connection established within a given 
class of service. When the buffer 
pool is almost empty, each source is allocated a large buffer space, proportional to its estimated 
offered load. When the buffer 
pool is more full each source is allocated a reduced buffer space, while maintaining the proportional weighting relationship. The invention keeps track of the amount of input per source and dynamically allocates a proportionate amount of buffer space in the buffer memory for that source. The dynamic allocation is made as a function of the fullness of the memory allocation for all sources. Additionally, thresholds are modulated dynamically as the number of established connections within a given class modulates, providing a predictive aspect to the 
system, with respect to congestion control. The main objective is to fairly allocate buffer space depending on the amount of traffic and the amount of buffer space taken up by each source. In operation, the memory allocation is readjusted depending on the total number of cells in the buffer memory, the estimated 
offered load, and the total number of connection established within each 
class of service, providing a highly dimensional solution to the multi-dimensional problem of 
congestion management in communication network nodes.