A method to transmit data packets through a network tunnel based on a quality of service, QoS, of the network tunnel, the method comprising: transmitting , by a tunnel source endpoint, the data packets through an arbitrary network tunnel of a plurality of network tunnels, each respective network tunnel of the plurality of network tunnels being from the tunnel source endpoint to a respective one of a plurality of tunnel destination endpoints, the data packets destined for an application, the arbitrary tunnel being arbitrary because it was selected without knowledge of latencies of the plurality of network tunnels; buffering , by the tunnel source endpoint, the transmitted data packets destined for the application; selecting , by the tunnel source endpoint, one network tunnel of the plurality of network tunnels as a preferred network tunnel for transmitting data packets destined for the application, the selecting of the one network tunnel of the plurality of network tunnels being based on QoS measures of each of the plurality of network tunnels, wherein the QoS measures are determined based on transmission of status packets to each of the plurality of tunnel destination endpoints and reception of returned corresponding status packets from each of the plurality of tunnel destination endpoints; retransmitting , in response to the selected one network tunnel being different from the arbitrary network tunnel, the buffered transmitted data packets through the selected one network tunnel; and transmitting , by the tunnel source endpoint, subsequent data packets destined for the application through the selected one network tunnel of the plurality of network tunnels. transmitting , by a tunnel source endpoint, the data packets through an arbitrary network tunnel of a plurality of network tunnels, each respective network tunnel of the plurality of network tunnels being from the tunnel source endpoint to a respective one of a plurality of tunnel destination endpoints, the data packets destined for an application, the arbitrary tunnel being arbitrary because it was selected without knowledge of latencies of the plurality of network tunnels; buffering , by the tunnel source endpoint, the transmitted data packets destined for the application; selecting , by the tunnel source endpoint, one network tunnel of the plurality of network tunnels as a preferred network tunnel for transmitting data packets destined for the application, the selecting of the one network tunnel of the plurality of network tunnels being based on QoS measures of each of the plurality of network tunnels, wherein the QoS measures are determined based on transmission of status packets to each of the plurality of tunnel destination endpoints and reception of returned corresponding status packets from each of the plurality of tunnel destination endpoints; retransmitting , in response to the selected one network tunnel being different from the arbitrary network tunnel, the buffered transmitted data packets through the selected one network tunnel; and transmitting , by the tunnel source endpoint, subsequent data packets destined for the application through the selected one network tunnel of the plurality of network tunnels. <EOS>