title: Difference between App Proxy Provider and Packet Tunnel Provider
body: <p>I'm reading the documentation of the <a href="https://developer.apple.com/documentation/networkextension/app_proxy_provider" rel="nofollow noreferrer">App Proxy Provider</a> and the <a href="https://developer.apple.com/documentation/networkextension/packet_tunnel_provider" rel="nofollow noreferrer">Packet Tunnel Provider</a> and am a bit puzzled.</p>
  <p>The docs state that packet tunnel providers send and receive packets from/to the system, while app proxy providers send/receive flows to/from the system.</p>
  <p>What I cannot seem to understand is the following sentence in the packet tunnel provider documentation:</p>
  <blockquote>
  <p>Packet tunnel providers can run in destination IP mode or source-application mode. The latter is one form of per-app VPN (the other form is an App Proxy Provider).</p>
  </blockquote>
  <p>But in the <a href="https://developer.apple.com/documentation/networkextension/netunnelprovider/1405979-routingmethod" rel="nofollow noreferrer">NETunnelProvider</a> class it says:</p>
  <blockquote>
  <p>The default is NETunnelProviderRoutingMethodDestinationIP.</p>
  </blockquote>
  <p>So by default, the Packet Tunnel Provider is actually an App Proxy Provider? What am I missing? Could someone explain their difference?</p>