A Tunneling protocol is a network protocol which encapsulates one protocol or session inside another. Tunneling may be used to transport a network protocol through a network which would not otherwise support it. Tunneling may also be used to provide various types of VPN functionality such as private addressing.