Abstract: A method of transmitting data from a first device. The method comprises: at the first device, establishing a connection with a first one of a plurality of second devices and establishing a first virtual connection, the first virtual connection being between the first device and a third device through the first one of a plurality of second devices; and receiving details of a second virtual connection, the second virtual connection being between a fourth device and the third device through a second one of the plurality of second devices, the fourth device being connected to the first device. The method further comprises selecting one of said first or second virtual connections for transmission of a data packet to said third device and transmitting data to said third device using said selected connection.