A method comprising: receiving, by a software defined networking, SDN, controller, high-level configuration data that describes a desired state of a network that includes a plurality of network devices managed by the SDN controller at a high level of abstraction, wherein a first network device of the plurality of network devices implements a first protocol and a second network device of the plurality of network devices implements a second protocol, wherein the first protocol and the second protocol are different protocols for communicating between a virtual network and a physical network, wherein the first protocol comprises an Open Virtual Switch database, OVSDB, management protocol, and wherein the second protocol comprises an Ethernet Virtual Private Networking, EVPN, protocol, and wherein the high-level configuration data is protocol agnostic; applying, by the SDN controller, a first transformation function to the high-level configuration data to generate a first low-level configuration data specific to the first protocol; applying, by the SDN controller, a second transformation function to the high-level configuration data to generate a second low-level configuration data specific to the second protocol; in response to applying the first transformation function, outputting, by the SDN controller and to the first network device that implements the first protocol, the first low-level configuration data specific to the first protocol to configure the first network device that implements the first protocol; and in response to applying the second transformation function outputting, by the SDN controller and to the second network device that implements the second protocol, the second low-level configuration data specific to the second protocol to configure the second network device that implements the second protocol. receiving, by a software defined networking, SDN, controller, high-level configuration data that describes a desired state of a network that includes a plurality of network devices managed by the SDN controller at a high level of abstraction, wherein a first network device of the plurality of network devices implements a first protocol and a second network device of the plurality of network devices implements a second protocol, wherein the first protocol and the second protocol are different protocols for communicating between a virtual network and a physical network, wherein the first protocol comprises an Open Virtual Switch database, OVSDB, management protocol, and wherein the second protocol comprises an Ethernet Virtual Private Networking, EVPN, protocol, and wherein the high-level configuration data is protocol agnostic; applying, by the SDN controller, a first transformation function to the high-level configuration data to generate a first low-level configuration data specific to the first protocol; applying, by the SDN controller, a second transformation function to the high-level configuration data to generate a second low-level configuration data specific to the second protocol; wherein a first network device of the plurality of network devices implements a first protocol and a second network device of the plurality of network devices implements a second protocol, wherein the first protocol and the second protocol are different protocols for communicating between a virtual network and a physical network, wherein the first protocol comprises an Open Virtual Switch database, OVSDB, management protocol, and wherein the second protocol comprises an Ethernet Virtual Private Networking, EVPN, protocol, and wherein the high-level configuration data is protocol agnostic; applying, by the SDN controller, a first transformation function to the high-level configuration data to generate a first low-level configuration data specific to the first protocol; applying, by the SDN controller, a second transformation function to the high-level configuration data to generate a second low-level configuration data specific to the second protocol; in response to applying the first transformation function, outputting, by the SDN controller and to the first network device that implements the first protocol, the first low-level configuration data specific to the first protocol to configure the first network device that implements the first protocol; and in response to applying the second transformation function outputting, by the SDN controller and to the second network device that implements the second protocol, the second low-level configuration data specific to the second protocol to configure the second network device that implements the second protocol.