NEAppProxyProvider. 1. Each instance corresponds to a single tunneling session, with a single associated configuration. 3. The NETunnelProvider class should not be subclassed directly. Instead, you should create subclasses of NETunnelProvider subclasses. - Use NEAppProxyProvider to operate on a TCP/UDP level. - Use NEPacketTunnelProvider to operate on a IP level.