Network emulation is a technique where the properties of an existing, planned and/or non-ideal network are simulated in order 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 (typically in a lab environment) 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. Devices incorporate a varying amount of standard network attributes into their designs including: the round-trip time across the network (latency), 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. Higher-end network emulators can also mimic typical Layer 1 physical errors such as Bit Error Rate, Loss of Signal, Output Bit Rotation, and others.
It is commonly known that networks are imperfect — private or public. They introduce delay and errors. They go down. They drop packets. The primary goal of network emulation is to create an environment whereby users can connect up their devices, applications, products and/or services and evaluate 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 emulates the network which connects end-systems, not the end-systems themselves.
Systems which emulate the end-systems are called traffic generators.
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).
As with all products, network emulators come in different forms and provide different capabilities.
Network emulation hardware 
Hardware-based network emulation products are purpose-built products using dedicated components for processing the various network conditions (a.k.a. impairments) that comprise an emulated network. These network emulators offer the greatest performance and precision in test accuracy and results as their processing power is dedicated to the function of network impairments.
Hardware-based network emulators differ from other products in that these are not simply products with emulation software running on an "off-the-shelf" PC or appliance. The entire platform, hardware and software, has been purpose-built for network emulation.
These products are typically found in the Development and QA environments of Service Providers, Network Equipment Manufacturers, and Enterprises.
Network emulation software 
These emulators come in many different forms including PC-based or software-integrated appliances. They lack the precision and performance found in hardware-based emulators but can be found at a lower price point. Software/Appliance-based network emulators are typically found in application testing environments,
In current Linux systems, network emulation functionality can be used with the netem tool. Its features include wide area network delays with different delay distribution, packet loss, packet duplication, packet corruption and packet re-ordering.
Network simulation software 
- ns-3 is a popular free network simulator that can also be used as a limited-functionality emulator.
Router emulation software 
- Dynamips - a free tool