== Approaches ==
* '''virtualization === Virtualization on the 2nd level (OpenVZ)==='''Requirements''': The main requirement is that containers should have close to standalone servers networking capabilities. In details:# containers should have own loopback;# containers should have ability to setup their own level 3 addresses;# containers should have ability to sniff their traffic;# containers should have ability to setup their own routes;# containers should have ability to receive multicast/broadcast packets;# containers should have their own netfilters;# containers should have at least one level 2 device; '''Current implementation''': For input packets context switching is performed in device xmit codenetif_receive_skb(), requires virtual inherited from the device for performing context. For output, context is inherited from the socket one.* '''virtualization === Virtualization on the 3d level (IBM)==='''Requirements''':# One can ran servers in several containers listening on *:port without conflict and __without__ forcing the bind to use the IP address assigned to the container;# The source address will be filled with the container IP address;# Keep sockets isolated by namespace;# have the loopback isolated;# have the performance near to native as possible;# have broadcast and multicast working. '''Current implementation''': For input packets context switching is performed in inherited from the routing codeentry, for output - inherited from the socket one.* '''socket === Socket virtualization (Linux-VServer)==='''Requirements''.':# implementation overhead for established tcp connections should be zero;# FIXME '''Current implementation''': There is no context switching for packets at all, checks are performed between process and socket contexts.
== Virtualization table ==