# Network emulation

Network emulation is a technique for testing the performance of real applications over a virtual network. This is different from network simulation where virtual 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 testing the behavior of a network (5G, wireless, MANETs, etc) in a lab. A personal computer or virtual machine runs software to perform the network emulation; a dedicated emulation device is sometimes used for link emulation.
Networks 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 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, simulation, and traffic generation

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 that 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 throughput, delay, loss etc.
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 effects (of 5G, Smart homes, industrial IOT, military networks, etc.,) with different round-trip-times, throughputs, bit error rates, and packet drops.
Two open-source network emulators are Common Open Research Emulator (CORE) and Extendable Mobile Ad hoc Network Emulator (EMANE). 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 support both wired and wireless network emulation with various degrees of fidelity. A CORE is more useful for quick network layouts (layer 3 and above) and single-machine emulation. EMANE is better suited for distributed high-fidelity large-scale network emulation (layers 1/2).
The most popular network simulation software packages, OPNET and Tetcos NetSim, also have emulation modules for real-time device connectivity. 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 (MAC, network, transport, etc.). Simulation tools however model effects from different layers of the network stack when running in emulation mode. They would allow for connecting multiple sources/destinations, routers, base stations, MANET protocols, etc.

## Traffic generation software

The network performance under maximum throughput conditions can be analyzed by network traffic measurement in a testbed network, using a network traffic generator such as iperf. The traffic generator sends dummy packets, often with a unique packet identifier, making it possible to keep track of the packet delivery in the network using a network analyzer.