1. go to Ports listed by application. - PortForward.com (Ports listed by application. - PortForward.com)
find BattleField3 note down TCP and UDP ports.
2. Open your Router settings. (I have Thompson TG from BE)
go to Port Configurations and make sure you disable UPnP and Extended Security Settings(not sure why security but was advised to do so). You can also press on windows button(between Ctrl and At) and "R" to open active processes and stop UPnP and SSDP. I personally advise to do both.
3. Now, this is the tricky bit. It differs depending on which Router you use and its configuration settings and menues. If You have different Router settings skip to No 4. What I did with my Thompson Router is: Opened Games and Applications under Toolbox. Clicked on Configure and create a new Game or Application with Manual Port Configuration.
Name it BattleField3 or anything else so that you will find it again. enter these that you took from the portforward.com site:
a) (Select TCP from the dropdown) eneter for port Range only: 80-80
b) Do the same for 20000-20100 with TCP selected
c) (Select UDP from the dropdown) enter for Port Range only: 14000-14016
d) Do the same for 22990-23006 with UDP selected
e) Do the same for 25200-25300 with UDP selected
Save/Apply and assign the new Game Application you created(named Battlefield earlier) to your Machine/PC
and You are done!