Routing is all about creating your own route(path) from host to destination. It could be a non-default/non-existent path & thats why we want it to be created.
As linux box can act as an router, we directly land up with a question of WHY & WHAT for we need a route to be created or WHY do we want this linux box to act as a Router?
If you have reasons for these WHY & WHATs then you should better find topics popping out like tunnelling/port forwarding, packet forwarding, NATTing, masquareding & others infront of you.
Otherwise for everything on this top & detailed study..
http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/
Also read this tutorial on Linux as a router @
http://www.linuxjournal.com/article/5826
This one even though a bit old as use of ipchains is mentioned over here.
Learn Masquerading here.. (nice complete reference)
http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/
Also go through & get comfortable with IPTABLES. Refer man page & GOOGLE it.
..amit..