The green spikes indicate when you receive a new block, on average every 10 minutes. Then your node is busy for a little while to verify the block and then it starts uploading it to other nodes (red).
I think there's TCP congestion collapse happening when your link is saturated by the high amount of traffic when a new block comes in. After that all TCP sessions start speeding up again slowly. Another keyword to look for is bufferbloat.
Sometimes QOS settings on your router might prevent this. If you have the ability to specify a maximum bandwidth use which is ~5% below the theoretical limit, usually that helps a lot.
If I'm not mistaken, the upcoming version of bitcoind will have some rudimentary bandwidth control options, then it might help to restrict it a little bit.