In this paper, a GCAD-CAC (Greedy Choice with Bandwidth Availability aware Defragmentation) algorithm is proposed. It is able to guarantee respect for data flow delay constraints defined by three different traffic classes. To achieve good results, the algorithm tries to accept all the new requests, but when a higher priority request is received, a lower priority admitted request is preempted. This preemption can leave some small gaps which are not sufficient for new connection admission; these gaps can be collected by the GCAD algorithm by activating a bandwidth availability based defragmentation process. The quality of the algorithm is shown by a comparison with two other algorithms found in the literature.