I had the same bleeding problem. It was so messed, my ping was a constant 100, but I was still getting the Disconected Sign.
Anyway,
Make sure no one is downloading or using all the bandwith of you're internet (Although Doubt that, as it wouldnt be jumping).
2nd, Reset you're modem. Turn it off for 30 seconds, then switch it back on. Do the same for you're router, if you want to.
3rd, Restart the BF3 game you're playing. I did this and I stopped getting stupid Lag Spikes, from the next game I joined.
4th, Call you're ISP and swear at them for a substandard Service 😛 (jokes about swearing if you cant get sarcasm 😛, But still call and ask what's up.)