Despite voluminous mobility solutions that have been proposed in the past, none of them have been widely deployed today. To address the deployment difficulty in previous work, we propose an end-system based mobility management scheme in IPv6 (EMIPv6) for Internet hosts. In our design, we leverage distributed hash table-based peer-to-peer systems to carry out scalable, robust and self-organizing name lookup for mobile hosts. And we adhere to the end-to-end principle  by performing connection maintenance and data packet delivery between the two communicating hosts directly. This leads to small handoff latency and efficient packet delivery. When the mobility messages such as location updates cannot be delivered directly between the end hosts (e.g., due to firewalls, NATs, or simultaneous movement), we use the previously introduced peer-to-peer overlay to deliver them. We also ensure application transparency with the technique of node-pair binding cache. Our simulations results showed that our scheme achieves small name resolution latency by considering host heterogeneity into the design. We have implemented EMIPv6-based end systems. The experiments with our testbed demonstrated that a complete end-system based mobility solution is technically feasible and should be easy to deploy in the real world without the need of introducing new network components.