A novel scheme for D2D resource allocation based on users' data rate requirements