The modern data center has tens to hundreds of thousands of servers, each a networked device designed to run network applications. On each server, a multitude of such applications are executed, typically in a virtual machine or container. In such an environment, use of normal networking procedures is sub-optimal. For example, migration of a VM requires routing protocols to relearn the location of the IP address (the VM must maintain the same IP address, else all TCP connections currently open will fail). Therefore, data centers require purpose-built architectures.