A device for emulating a network, the device comprising: a processing unit configured to perform operations, the operations comprising: receiving a topology of a network , the topology comprising devices within the network and connections between those devices; receiving an indication of a device within the network to emulate; determining a safe static boundary within the network that comprises a list of devices to emulate that includes the device in the indication of the device to emulate, the safe static boundary based upon the network topology, wherein determining a safe static boundary within the network comprises adding a boundary device to the list of devices to emulate, the boundary device not in the indication of devices to emulate; for each device in the list of devices to emulate: instantiating a unified container; instantiating a device container to run device specific software, the unified container interfaces with the device specific software, said unified container integrating with the device container via various application programming interface calls; and creating an emulated device comprising the unified container and the device container of the device, the unified container provides a common application programming interface across all emulated devices; creating data links between the emulated devices based upon the network topology; and creating an emulated network using the emulated devices. receiving a topology of a network , the topology comprising devices within the network and connections between those devices; receiving an indication of a device within the network to emulate; determining a safe static boundary within the network that comprises a list of devices to emulate that includes the device in the indication of the device to emulate, the safe static boundary based upon the network topology, wherein determining a safe static boundary within the network comprises adding a boundary device to the list of devices to emulate, the boundary device not in the indication of devices to emulate; for each device in the list of devices to emulate: instantiating a unified container; instantiating a device container to run device specific software, the unified container interfaces with the device specific software, said unified container integrating with the device container via various application programming interface calls; and creating an emulated device comprising the unified container and the device container of the device, the unified container provides a common application programming interface across all emulated devices; instantiating a unified container; instantiating a device container to run device specific software, the unified container interfaces with the device specific software, said unified container integrating with the device container via various application programming interface calls; and creating an emulated device comprising the unified container and the device container of the device, the unified container provides a common application programming interface across all emulated devices; creating data links between the emulated devices based upon the network topology; and creating an emulated network using the emulated devices. <EOS>