From Matt's Wiki
The description below is taken from the original project proposal.
The main objective of this proposal is to specify a new internetworking protocol, at the level of the present Internet Protocol (IP), that provides optimum performance over future networking technologies. This new protocol is adaptable to future technologies by invoking a level of indirection in its design. At the logical level, the protocol is specified in the abstract with regard to its header and various functionalities. The protocol will also have various physical specifications depending on the type of network the protocol packets will travel over. Thus, for example, over wireless links with relatively low-bandwidth, the headers of the internetwork layer will be kept to a minimum to allow more bandwidth for user data, compressing larger fields such as the address in most packets. On higher bandwidth links, packet headers will contain not only the data specified in the logical specification, but perhaps also fields or labels that facilitate the fast switching of packets in nodes downstream of where the labels are appended.
The proposed research will produce prototype implementations of this new protocol on a number of example links, including Ethernet, a wireless link as well as a high bandwidth fiber-optic network. These proof-of-concept implementations will be deployed in a testbed for experiments on performance as well as the interworking robustness of the new protocol. To start off, we will use IPv6 as the logical specification for NP++ because of IPv6's generality and increasing availability. Studies of performance will be done to assess the ability of the new protocol to perform at least in the range of IPv6 used alone. The IPv6 testbed at Lancaster University will serve as the basis for this experimental environment.
There is currently a full implementation of NP++ available in the form of a complete FreeBSD 6.1 iso download. The original implementation was carried out in FreeBSD due to the way it initialises the network interfaces on boot compared to Linux. Since the introduction of the idea of auto configuration of mappings across nodes however a Linux implementation is more feasible and is currently under way. This is being implemented as a Linux kernel module and the impleentation of the module and API for adding physical mappings is almost complete.
Downloads for all of the code will be made available here upon completion. Of course bug reports and patches will be most welcome.
Implementing A Module For NP++
Download links to the source code will be posted here when available.
Sample Physical Mapping Module Code
Here are links to the dissectors that can be used with version 1.0.4 of Wireshark (available here) to display the information contained within the NP++ Mapping Negotation, Neighbour Discovery ICMPv6 Option.