Abstract: An overlay network for use with a data network that routes packets from one location on the data network to another location on the data network, the overlay network comprising one or more software nodes, at least one of the software nodes configured to receive commands from an application, the application including software for generating the commands and sending the commands to the at least one of the software nodes, the commands used by the at least one of the software nodes to control routing of packets, generated by the application, through the data network. In addition, a method of routing packets through a physical network by providing one or more software nodes connected to each other over the physical network to form an overlay network and forming a communications channel between at least one of the software nodes and an application, wherein the application instructs the at least one software node on how to route data over the physical network.