Popis: |
As invaluable tools in networked and distributed systems research, network emulators offer a viable alternative to live experimental / testbed networks. We present a methodology for emulating computer networks by using a general-purpose OS kernel partitioned into multiple lightweight virtual nodes, which can be interconnected via kernel-level links to form arbitrarily complex network topologies. The concept of using virtual nodes inside a kernel for fast network emulation is not new, yet previously published work generally advocated implementing kernel-level virtual nodes with capabilities limited to only certain simple functions, such as blind passing of network frames from one queue to another based on a static pre-computed path. We show that virtual nodes, offering the identical rich set of capabilities as the standard kernel does, can be implemented very efficiently by reusing the existing OS kernel code. Therefore our model not only provides each virtual node with an independent replica of the entire standard network stack, thus enabling highly realistic and detailed emulation of network routers ; it also enables unmodified user-level applications to run within virtual nodes, thus becoming a powerful tool for development and testing of real-world networked applications ranging from routing protocol daemons to distributed file sharing systems. |