1. A method of providing services in a communications network, comprising: receiving a request for a service; determining a criterion for a resource necessary to provide the requested service; determining an evaluation function by which to rank the resource; searching a resource data structure for a set of candidate resources meeting said criteria; using the evaluation function, determining the best candidate resource; and allocating said best candidate resource to meet said request for service.