Network emulation is a technique for testing the performance of real applications over a virtual network. This is different from network simulation where purely mathematical models of traffic, network models, channels and protocols are applied. The aim is to assess performance, predict the impact of change, or otherwise optimize technology decision-making.
Methods of emulation
Network emulation is the act of introducing a device to a test network that alters packet flow in such a way as to mimic the behavior of a production, or live, network — such as a LAN or WAN. This device may be either a general-purpose computer running software to perform the network emulation or a dedicated emulation device which usually does link emulation. Network emulators incorporate a varying amount of standard network attributes into their designs including: the round-trip time across the network, the amount of available bandwidth, a given degree of packet loss, duplication of packets, reordering packets, corruption and modification of packets, and/or the severity of network jitter. It is commonly known that networks are imperfect — private or public. They introduce delay, errors and drop packets. The primary goal of network emulation is to create an environment whereby users can connect the devices, applications, products and/or services being tested in order to validate their performance, stability, or functionality against real-world network scenarios. Once tested in a controlled environment against actual network conditions, users can have confidence that the item being tested will perform as expected.
Emulation differs from simulation in that a network emulator appears to be a network; end-systems such as computers can be attached to the emulator and will behave as if they are attached to a network. A network emulator mirrors the network which connects end-systems, not the end-systems themselves. Network simulators are typically programs which run on a single computer, take an abstract description of the network traffic such as a flow arrival process and yield performance statistics such as buffer occupancy as a function of time. These products are typically found in the Development and QA environments of Service Providers, Network Equipment Manufacturers, and Enterprises.
Network emulation software
Software developers typically want to analyze the response time and sensitivity to packet loss of client-server applications, and emulate specific network access with different round-trip-time, throughput, bit error rate, network drop outs and application dropouts. Emulators for this purpose come in many different forms including browser-based or integrated development environment appliances. Two open source network emulators are Common Open Research Emulator and Extendable Mobile Ad-hoc Network Emulator. They both support operation as network black boxes, i.e. external machines/devices can be hooked up to the emulated network with no knowledge of emulation. They also both support both wired and wireless network emulation with various degrees of fidelity. CORE is more useful for quick network layouts and single machine emulation. EMANE is better suited for distributed high fidelity large scale network emulation. The most popular network simulation software packages, OPNET and Tetcos NetSim, also have emulation modules for real time interconnects. In general simulation tools with emulation capabilities provide more sophistication than emulation devices. Emulation devices only provide for emulation of the physical link and do not factor in the effects of the higher layers. Simulation tools however factor in effects from the entire network stack when running in emulation mode. They would allow for connecting multiple sources / destinations, Routing, support for multi cast traffic, MANET protocols etc.