Is there a ways to set data speed limit in android? Is there a way to set data speed limit on android device(Samsung Galaxy GTi9003,Gingerbread 2.3.6)?
Note :this is different from data limit.

I want to use 3G network 300MB/month plan which I think can only be achieved by limiting data speed and also limiting net access to various apps

NON ROOTED DEVICE
Not usefully.

If you root the device, you can use a tool such as iptables to configure a rate limit, but the only way for that to work on downloads is to drop network packets above a certain limit. The effect of this will be that the apps on your phone see slower downloads, but the overall use of your Wi-Fi or mobile data connection will be greater, because the server has to keep re-sending packets that have reached your phone but been dropped.

This isn't an Android-specific problem: it's just how the internet works. Desktop machines have just the same problem with rate-limiting. It's just worse on mobile: because wireless network connections genuinely do lose packets more often, they're usually set up to re-send more aggressively than wired connections.

The exception to this is if you have a particular app whose network protocol supports rate negotiation. BitTorrent is one example. In that case, you should set the appropriate setting in the app you want to limit.