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 (212, 214, 216, 222, 224, 226, 232, 234, 236) 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 (212, 214, 216, 222, 224, 226, 232, 234, 236) 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.