I read here that you can keep your ssh sessions alive a bit longer using a utility called GNU screen.  Is it possible to keep an SSH tunnel alive longer with this as well?
Can I use `screen` to keep an ssh tunnel alive from the client?
ssh;ssh tunneling
If the tunnel terminates for any reason, screen won't restart it. I've found autossh works really well for managing tunnels - it can can monitor and restart them when necessary. It's ideal for starting tunnels from init scripts, for example.