Modern networks are growing increasingly complex, with a multitude of devices and protocols. Understanding these in-depth is challenging and requires deep visibility into such systems, especially when physical prototypes are out of reach. Therefore engineer need tools to analyze and optimize such systems. Virtual prototyping enables users to create flexible software representations of such systems to provide the required visibility into such systems, as discussed in a [previous post](https://www.simbricks.io/blog/deep-visibility-virtual-prototypes.html). However, creating these virtual prototypes is challenging, since we need to simulate all components involved that influence the systems behavior. In this blog post we look at how to easily create virtual prototypes of such systems with SimBricks.
Modern networks are growing increasingly complex, with a multitude of devices and protocols. Understanding these in-depth is challenging and requires deep visibility into such systems, especially when physical prototypes are out of reach. Therefore engineers need tools to analyze and optimize such systems. Virtual prototyping enables users to create flexible software representations of such systems to provide the required visibility into such systems, as discussed in a [previous post](https://www.simbricks.io/blog/deep-visibility-virtual-prototypes.html). However, creating these virtual prototypes is challenging, since we need to simulate all components involved that influence the systems behavior. In this blog post we look at how to easily create virtual prototypes of such systems with SimBricks.
# Virtual Prototyping of Complex Network Systems
...
...
@@ -84,7 +84,7 @@ For switching the NIC model, we simply replace the `sim.CorundumBMNIC` class ins

In this milestone we will create multiple client-server pairs, how to easily build larger topologies with various hosts and their simulators. We will also explore using different simulators for these pairs. For each client-server pair we will create either two (client and server) [gem5](https://www.gem5.org/) or two QEMU instances. SimBricks lets you represent diverse hosts within your simulated system allowing you to seamlessly mix detailed simulators like gem5, which model hardware behavior in great detail, alongside lighter-weight emulators like QEMU in the same virtual prototype.
In this milestone we will create multiple client-server pairs, showcasing how to easily build larger topologies with various hosts and their simulators. We will also explore using different simulators for these pairs. For each client-server pair we will create either two (client and server) [gem5](https://www.gem5.org/) or two QEMU instances. SimBricks lets you represent diverse hosts within your simulated system allowing you to seamlessly mix detailed simulators like gem5, which model hardware behavior in great detail, alongside lighter-weight emulators like QEMU in the same virtual prototype.
You can easily do all of this using standard Python language constructs: