Before an IPv6 packet can be sent to a host, that host's link-layer
address must first be discovered. This is done by sending a Neighbor
Solicitation message containing the requested target IPv6 address
to a specific multicast address. If a host have configured a
matching IP, that host will then respond with a Neighbor
Advertisement message, and provide it's link-layer address.
The Neighbor Discovery Protocol (NDP) is a protocol in the Internet
Protocol Suite used with Internet Protocol Version 6 (IPv6). It
operates in the Link Layer of the Internet model (RFC 1122) and is
responsible for address autoconfiguration of nodes, discovery of
other nodes on the link, determining the Link Layer addresses
of other nodes, duplicate address detection, finding available
routers and Domain Name System (DNS) servers, address prefix
discovery, and maintaining reachability information about the paths
to other active neighbor nodes (RFC 4861)
Let's say you want to route some IPs to another interface, and
your ISP isn't truly routing your subnet to your host. It means
that your host will have respond to Neighbor Solicitation messages
for IPs it haven't configured in order to be able to route them.
More info : https://github.com/Tuhox/ndppd
ndppd solves this by listening for Neighbor Solicitation messages on an interface, then query the internal interfaces for that target IP before finally sending a Neighbor Advertisement message.