How can I route different traffic over different interfaces (routes) by protocol?

Solution 1:

the feature you are looking for is named Policy Routing. Have a look at http://www.linuxhorizon.ro/iproute2.html (second example)