https://docs.openstack.org/newton/install-guide-ubuntu/neutron-controller-install-option2.htmlhttps://docs.openstack.org/newton/install-guide-ubuntu/neutron-controller-install-option1.html"self-service networking" allows users to create their own virtual networks, subnets, routers, etc., where as the "provider networking" does not allow users to create new virtual networking components and allow them to use only the ones that are predefined by the provider.
As the document also points out, "self-service networking" provides more options and is a superset of options available with "provider networking"; but, it also entails a bit more setup.
Provider-networks are normally tied to your already-existent switching architecture, and can be used as "external-network" for OpenStack. The FIP's (floating IP's) are taken from that "external network". Normally, FLAT or VLAN based networks are used for provider-networks.
The self-service are, like the answer above, created internally by the tenant/project. Those self-service are tunneled type networks (using both gre and/or vxlan), and "tied" in a SNAT/DNAT scheme to external networks (provider-type) using a OpenStack router.
The OpenStack router have a "leg" attached to the external network, and another leg into the self-service, internal network.
Then, depending of your environment and OpenStack release (specially from Kilo to Mitaka) you can have multiple external networks, and combine different types of tunneled self-service ones (vxlan or gre). As a matter of facts, you can both assign FIP to your instances, or directly assign IP's from the provider-type net's (permissions provided of course) to your instances.
Hope this clarify a little more about the topic.
Thank you to : tigerlinux
https://stackoverflow.com/questions/36747239/what-is-the-difference-between-provider-network-and-self-service-network-in-open