A method of routing data in a bi-directional communication session over an overlay network between a first node and a second node, the overlay network built on top of an underlying network, the method comprising: determining a first plurality of one-way performance measurements for routing data in the communication session in a first direction from the first node to the second node via a respective plurality of relay nodes (118, 120) of the overlay network; based on the first plurality of determined one-way performance measurements, selecting one or more of said relay nodes for use in routing data in the first direction from the first node to the second node; routing data in the communication session in the first direction from the first node to the second node over the overlay network via the one or more selected relay nodes for the first direction; characterized by: determining a second plurality of one-way performance measurements for routing data in the communication session in a second direction from the second node to the first node via a respective plurality of relay nodes (118, 120) of the overlay network; based on the second plurality of determined one-way performance measurements, selecting one or more of said relay nodes for use in routing data in the second direction from the second node to the first node; and routing data in the communication session in the second direction from the second node to the first node over the overlay network via the one or more selected relay nodes for the second direction, wherein said selecting of one or more relay nodes of the overlay network for use in routing data in the first direction is performed separately to said selecting of one or more relay nodes of the overlay network for use in routing data in the second direction and independently of the one or more relay nodes selected for use in routing data in the second direction in the communication session; and wherein the one or more relay nodes selected for use in routing data in the first direction in the communication session are different to the one or more relay nodes selected for use in routing data in the second direction in the communication session. determining a first plurality of one-way performance measurements for routing data in the communication session in a first direction from the first node to the second node via a respective plurality of relay nodes (118, 120) of the overlay network; based on the first plurality of determined one-way performance measurements, selecting one or more of said relay nodes for use in routing data in the first direction from the first node to the second node; routing data in the communication session in the first direction from the first node to the second node over the overlay network via the one or more selected relay nodes for the first direction; characterized by: determining a second plurality of one-way performance measurements for routing data in the communication session in a second direction from the second node to the first node via a respective plurality of relay nodes (118, 120) of the overlay network; based on the second plurality of determined one-way performance measurements, selecting one or more of said relay nodes for use in routing data in the second direction from the second node to the first node; and routing data in the communication session in the second direction from the second node to the first node over the overlay network via the one or more selected relay nodes for the second direction, determining a second plurality of one-way performance measurements for routing data in the communication session in a second direction from the second node to the first node via a respective plurality of relay nodes (118, 120) of the overlay network; based on the second plurality of determined one-way performance measurements, selecting one or more of said relay nodes for use in routing data in the second direction from the second node to the first node; and routing data in the communication session in the second direction from the second node to the first node over the overlay network via the one or more selected relay nodes for the second direction, wherein said selecting of one or more relay nodes of the overlay network for use in routing data in the first direction is performed separately to said selecting of one or more relay nodes of the overlay network for use in routing data in the second direction and independently of the one or more relay nodes selected for use in routing data in the second direction in the communication session; and wherein the one or more relay nodes selected for use in routing data in the first direction in the communication session are different to the one or more relay nodes selected for use in routing data in the second direction in the communication session.