You have too many variables against you.
Logically, your path of connection is:
- Computer -> Router
- Router -> Modem
- Modem -> ISP
- ISP -> routes
- routes -> SpeedTest.net
routes is determined by traceroute from your connection to speedtest.net and reverse is the same connection back, perhaps on different routes.
One. Assuming that your connection to the router is greater than 30Mbps then let's temporarily eliminate that connection (Unless you're using a WirelessB Router which has transfer rates of 11Mbps).
Two. If the patch cable from your Router to your Modem is a 10Mbps Base Ethernet cable then you will never see 30Mbps connections from your computer.
Three. If your Modem has a low SNR then you may need to have this boosted by your ISP. Even if they can provide you with that fast of a connection, if you have a lot of noise in your line whether from an amplifier that you installed prior to the modem connection or just poor connection to your ISP, this could cause interference and you will not see the full bandwidth that you're paying for. Also, you may have issues with the protocols that you're transferring on. They may restrict torrents to only 10Mbps where as port 80 traffic transfers at 30Mbps.
Four. You should google Internet Health Report to see if there are major internet backbones down that could be causing your connection issue. (http://www.internetpulse.net/) If you're experiencing slow speeds intermittently then it could be due to an internet backbone having issues. Internet Backbones are what piece together and tie in all of our networks together. They relay traffic and provide connections to various ISPs. By having a greater latency on a backbone where you have traffic going through, it may look like you're having issues connecting to some websites but not others. Below is a screenshot taken just a minute ago.
Five. Just because you have 30Mbps connection doesn't mean that you will achieve those speeds if the host providing you that information is not uploading at that speed. If the SpeedTest.net server that you're testing with is only capable of uploading at 10Mbps then that is the greatest speed that you will see. You should always test against other servers when using SpeedTest.net because they may not always give you the fastest server. They usually just pick the one with a quick ping. Doesn't necessarily mean the fastest. For example, using SpeedTest on your phone may pick a location far from you and return slow results. Sometimes picking one closer or a different server will return various results. It's a hit or miss.
Conclusion. Easiest thing you can do to test this is eliminate the number of jumps. Connect your computer directly to your modem. Go to your ISP's website and see if they have a speed test on their server. Use that speed test to see if you get the results that you're paying for. Otherwise, if you complain to them that one website or one thing that your doing is slow then you leave yourself open to having a crummy explanation given to you by your ISP when there is an actual issue at hand. You can log into your modem (sometimes 192.168.100.1) to see what SNR you're actually getting to your ISP.