iOs Networking for Fps

I am trying to implement networked fps on ios. Basically converting an iOS fps my team developed currently in the iStore to include a networking component. Possibly co-op but in general dm & tdm.
I need figuring out the best way to set up connections. we are on unity free so .net extensions such as photon are out. But from reading around using standard unity networking is not reliable due to nat punch-through. We are not using standard master-server as we are using php-mysql to host server info, and user login to our web-server to get a list of games, or at least this is how we wan to do things as we can keep track of games through our webserver and a lil php-mysql. Looking at the unity ios example. we see a master-server & upd connection types.
what is the difference btw master-server & upd? and what is more reliable?
which provides a better connection ?
does upd not need nat punch-through ?
is it possible/wise to allow player to make/host games & if not how do we go about having game rooms pre-hosted for user to connect to?

UDP = user datagram protocol. TCP = transmission control protocol. This is basic Internet stuff. “master server” = unity specific jargon
http://docs.unity3d.com/Documentation/Components/net-MasterServer.html

I recommend:

  1. buy Unity Pro
  2. use Photon Cloud

Otherwise you need to run your own server, or use Unity’s testserver as described above. Not trying to be terse, just answering best I can.