Hi Jayant,
Overall, I'm suggesting that you double-check that the machine where you're using webrtc is in the same IP-addressing space as your Freeswitch server; the fact that webrtc calls only work when you use TURN or STUN implies that they aren't.
When I try my own webrtc page with our FS, the browser console SDP line (in a section starting "Dialog [...] ANSWER SDP") of this format,
o=FreeSWITCH someNumber someNumber IN IP4 publicIpNumberOfFS
reveals the IP number under which my FS can be reached. If you were running FS on a cloud machine, that IP-number would usually not be reachable by any browser until you told FS via ext-rtp-ip what its "public" IP-number is, which is the cloud machine's public IP (if it has one). Then that ext-rtp-ip value would appear in your browser after "IN IP4".
It might also be that the machine where your browser is running is in a non-public IP-addressing space, and that would explain why a STUN server is making those calls possible. In my browser console, in a section starting "RECV offer SDP v=0", there are lines with "typ relay raddr IpOfMyBrowserMachineAppearsHere". You might check that your browser machine and your FS machine can ping each other's addresses that were revealed in these lines.