Loopback with two (physical) ethernet interfaces
Imagine that you have an embedded device with two physical ethernet ports. You want to verify the functionality of both these ports in the manufacturing process, so you connect an ethernet cable between the ports, setup IP addresses and now what?
As Linux (actually the default network namespace) is aware of the both adapters and their IP/MAC-addresses, the system see no reason to send any traffic out. Instead, Linux will loop all traffic between the interfaces internally.
To avoid that and actually force traffic out on the cable, we have to make the adapters unaware of eachother. This is done by putting them into different network namespaces!
To do this, all you need is to have support for network namespaces in the kernel (CONFIG_NET_NS=y) and the iproute2  package, which both probably is included in every standard Linux distribution nowadays.
We will create two network namespaces, lets call them netns_eth0 and netns_eth1:
ip netns add netns_eth0 ip netns add netns_eth1
Move each adapter to their new home:
ip link set eth0 netns netns_eth0 ip link set eth1 netns netns_eth1
Assign ip addresses:
ip netns exec netns_eth0 ip addr add dev eth0 192.168.0.1/24 ip netns exec netns_eth1 ip addr add dev eth1 192.168.0.2/24
Bring up the interfaces:
ip netns exec netns_eth0 ip link set eth0 up ip netns exec netns_eth1 ip link set eth1 up
Now we can ping each interface and know for sure that the traffic is actually on the cable:
ip netns exec netns_eth0 ping 192.168.0.2 ip netns exec netns_eth1 ping 192.168.0.1