% vim: set tw=78 sts=2 sw=2 ts=8 aw et ai:
\onehalfspacing
N2N (network to network)\cite{n2n_paper} is a layer-two over layer-three Peer-to-Peer (P2P) virtual private network (VPN) application that allows users to exploit properties typical of P2P applications at the network level instead of application level. This means that users can gain unrestricted IP visibility and be reachable with the same address regardless of their current network environment. In a nutshell, as OpenVPN moved Secure Sockets Layer (SSL) \cite{tls} from application (e.g. used to implement the Hypertext Transfer Protocol Secure protocol) to network protocol, N2N moves P2P from application to network level.

Like most P2P protocols, N2N has one or more supernodes and several edge nodes. Supernodes are used to introduce edge nodes and to cross symmetric Network Address Translation (NAT). Edge-nodes are grouped in communities coordinated by the supernode. Periodically an edge-node sends registration messages to supernode for keeping its record in the supernode peers list. A backup supernode can be assigned to each edge as a command line parameter that will be used if the connection with main supernode fails.
