I know this is an old question, but it's not answered anywhere that I can find. I'd rather not explain about UDP since that's been covered over and over. However, if you have properly given the server your public IP address and the same port you're listening to with UDP and you're not getting any data, there is one trick to actually receiving packets.
You have to send a message to the server, on the server's standard gameplay port. It doesn't matter what it is, it can be 'hello' for all the server cares. After that you should start getting data from the server. I'm not sure exactly why this is, but it's probably a strategy by Valve to avoid their server spamming just any old IP.