ARP uses Ethernet broadcasts to find machines who have a specific IPv4 address. Essentially, one PC sends a particular 'request' packet out on the network to a specific Ethernet address which is heard by all devices on a subnet, and waits for responses which are directly sent to the requester from a station that knows. Because of this behavior, ARP is sometimes considered a layer violation, although a necessary one.
There are several issues with this protocol which makes it unwelcome in the IPv6 space.
- Its not a pure IP solution. We don't like mixing our Ethernet and our IPv4, and we don't need to in IPv6 if we fix this right.
- It relies on broadcasts, which we'd like to minimize if at all possible because IPv6 makes our subnets real big and we don't want network-wide broadcasts on real big networks.
- There is a lot more that can be done with the idea of mapping IPs in a subnet, but ARP only maps IP addresses to physical MAC addresses. Its a one trick pony.