A method for selecting a path in a communications network, the method comprising: receiving, at a source, a request to communicate data to a destination, the request being received at the source from a user; measuring a first cost, said first cost being of transmission of said data along a default path from the source to the destination, the default path determined using one or more existing Internet Protocol routing mechanisms of the communications network; characterised in that if said first cost exceeds a threshold, sending a query from the source to overlay modules (130a-n) of an overlay network, wherein said overlay modules are co-located at nodes (140a-n) of said communications network; measuring respective second costs, wherein each said second cost is of transmission via a respective intermediate node along an alternate path from the source to the destination, the alternate path passing through the respective intermediate node, wherein the respective intermediate node is not in the default path, comprises a said overlay module (150a-n) and is part of said overlay network (130a, 130b,...); determining an optimal path based on the first cost and the second costs, wherein the first cost and the second costs are determined using network communication performance metrics; and transmitting the data associated with the request along the optimal path, wherein each said measuring said respective second cost comprises the respective overlay module (130a-n), in response to said query, measuring a cost of transmission from said respective intermediate node to said destination; and said determining an optimised path comprises combining said respective cost of transmission from said respective intermediate node with a cost of communication to the respective intermediate node from the source node. receiving, at a source, a request to communicate data to a destination, the request being received at the source from a user; measuring a first cost, said first cost being of transmission of said data along a default path from the source to the destination, the default path determined using one or more existing Internet Protocol routing mechanisms of the communications network; characterised in that if said first cost exceeds a threshold, sending a query from the source to overlay modules (130a-n) of an overlay network, wherein said overlay modules are co-located at nodes (140a-n) of said communications network; measuring respective second costs, wherein each said second cost is of transmission via a respective intermediate node along an alternate path from the source to the destination, the alternate path passing through the respective intermediate node, wherein the respective intermediate node is not in the default path, comprises a said overlay module (150a-n) and is part of said overlay network (130a, 130b,...); determining an optimal path based on the first cost and the second costs, wherein the first cost and the second costs are determined using network communication performance metrics; and transmitting the data associated with the request along the optimal path, wherein each said measuring said respective second cost comprises the respective overlay module (130a-n), in response to said query, measuring a cost of transmission from said respective intermediate node to said destination; and said determining an optimised path comprises combining said respective cost of transmission from said respective intermediate node with a cost of communication to the respective intermediate node from the source node.