A network controller (402, 502) configured to control services in a communications network by means of a software control plane, the services defined to be implemented on the communications network, the network controller (402, 502) comprising: a database configured to store information about hardware endpoints and communications connections in the communications network, and traffic engineering rules and network policies governing the communications network; and a path computation module configured to: compute communications paths according to the stored information to implement the defined services, wherein the computed communications paths include a first tunnel and a second tunnel, where the tunnels have different underlying communication protocols to transfer data, program the hardware endpoints along the computed communications paths to establish the communications paths in the communications network by configuring one of the hardware endpoints connecting the first tunnel and the second tunnel to emulate a communication protocol of the second tunnel, monitor the programmed hardware endpoints and the communications connections along the computed communications paths and update the stored information, and recompute the communications paths and reprogram the hardware endpoints along the recomputed communications paths to adapt the communications paths according to changes in the stored information and the services to ensure implementation of the services. a database configured to store information about hardware endpoints and communications connections in the communications network, and traffic engineering rules and network policies governing the communications network; and a path computation module configured to: compute communications paths according to the stored information to implement the defined services, wherein the computed communications paths include a first tunnel and a second tunnel, where the tunnels have different underlying communication protocols to transfer data, program the hardware endpoints along the computed communications paths to establish the communications paths in the communications network by configuring one of the hardware endpoints connecting the first tunnel and the second tunnel to emulate a communication protocol of the second tunnel, monitor the programmed hardware endpoints and the communications connections along the computed communications paths and update the stored information, and recompute the communications paths and reprogram the hardware endpoints along the recomputed communications paths to adapt the communications paths according to changes in the stored information and the services to ensure implementation of the services. compute communications paths according to the stored information to implement the defined services, wherein the computed communications paths include a first tunnel and a second tunnel, where the tunnels have different underlying communication protocols to transfer data, program the hardware endpoints along the computed communications paths to establish the communications paths in the communications network by configuring one of the hardware endpoints connecting the first tunnel and the second tunnel to emulate a communication protocol of the second tunnel, monitor the programmed hardware endpoints and the communications connections along the computed communications paths and update the stored information, and recompute the communications paths and reprogram the hardware endpoints along the recomputed communications paths to adapt the communications paths according to changes in the stored information and the services to ensure implementation of the services.