I am using a ADSL 2+ broadband service. My router shows very low SNR margin. While I quite understand what is SNR, I was curious to know what causes low SNR practically.
There are many things that can cause low SNR. If you put aside natural reasons such as attenuation caused by distance, most of the time problem lies in bad infrastructure. Bad cables (damaged shielding and exposed wires), ingress noise, crosstalk, impedance mismatches, bad connectors and micro-reflections, bad splitters and filters and stuff like that. It depends on many different things and it varies in real time.
Fundamentally, loss of signal and/or increase in noise.
If your SNR is always low and has always been low, it may simply be near the distance limit. Then again, it could be that it's always run over a lousy chunk of cable or bad splice. A few years back I had two ADSL circuits to campus, which took different routes - one significantly longer. Both cost the same, but the shorter one always ran faster in practice. When I got better options I shut them both down.