The two most commonly used "open" routing protocols in corporate networks would most likely be RIP and OSPF.
The original version of RIP had some shortcomings. The most glaring one was that the protocol does not send the routing information along with the subnet masks. It assumed that all router interfaces on all networks in the routing domain had the same network mask, therefore sending the mask was unnecessary as the router knew what the mask would be already. Another problem was that it only sends routing updates at regular intervals (30 seconds) even if there has been a change in the network topology. This means you have to wait for a couple of periodic updates to pass before the whole routing domain is aware of the change. Updates that are triggered by the addition or deletion of networks are much better. RIP also propagates routes by transmitting one router's entire routing table to the next router in the chain. This can be slow.
RIP version 2 overcomes these two problems and is backwards compatible with version 1. RIP configuration is usually relatively easy to do. Only about 2 or 3 statements per router are needed to get it up and running on most small networks.
OSPF is a lot less talkative routing protocol. Unlike RIP it doesn't use periodic updates, preferring to use only triggered updates. It also uses very small "hello" packets every 10 seconds to detect if a neighboring router is still alive, RIP in contrast waits to receive the next full routing table from the neighbor and only recognizes a failure if 3 updates have been missed (90 seconds). OSPF on the other hand would have detected this in 3 missed 10 second "hellos".
OSPF is a little more complicated to configure in a basic setup.
Linux has its own routing protocol package called "zebra" which has stopped being supported for some time. I've tried it, but there were some problems with the OSPF implementation.
I discovered that "zebra" was taken over by a GPL project called "quagga". (Don't ask me what that means). If you want to do routing on Linux use quagga.
Quagga has a base daemon called "zebra" in which you configure the interfaces and set passwords and the access control lists you want to apply to interfaces. It needs to be running at all times.
If you want to run OSPF, then you have to run the "ospfd" daemon, which has it's own configuration file. Similarly, RIP has a "ripd" daemon and BGP has a "bgp" daemon. All the configuration files are found in /etc/quagga. You have to configure telnet passwords for each configuration file.
Once running, you can configure quagga by telnet-ting to the Linux router on the "zebra", "ospfd" and "ripd" ports. For example, just type "telnet router-address zebra" to get the zebra login prompt.
The commands for quagga are almost identical to that of configuring a cisco router. A search for "configuring RIP" or "configuring OSPF" will give you documents to get yourself up and running. Unfortunately, this may not be enough to get the basic "zebra" daemon going as you'll need to know how to do basic interface configuration to get that going. The old "zebra.org" and newer "quagga" sites have relatively good documentation, but assume you have some familiarity with Cisco. Check the Cisco site first for better coverage of the basic concepts.
It is important to know that in quagga, OSPF commands can only be accessed by telnet-ing to "ospfd", RIP commands are only accessible by telnet-ing to "ripd". In a cisco environment, you have all these commands available in one telnet login.
The advantage of quagga is that you don't have to restart "ospfd" or "ripd" to have most routing changes take effect. In the case of RIP, you may want to do this to force the routing updates to be sent immediately. I've found that you have to restart the daemons if you decide to change the logging directory for the protocols.
I'd strongly suggest that you don't change any of the default routing update times to make things update faster. They have to be the same across the entire routing domain and can be difficult to remember.
In regards to the router you wish to use, what do you want to achieve? The 2500 series is cheap, but has no 100 Mbps fast Ethernet ports, just 10 Mbps regular Ethernet. I also don't think I have seen them with more than 2 Ethernet ports. This should be fine for most SOHO environments.
Without Fast Ethernet you can't do VLAN trunking from your switch. That means you need to have a separate router interface for each switch VLAN. With trunking, you can encapsulate all VLAN data down a trunk port to a router. The router then has the ability to route this data across each of its VLAN sub-interfaces configured on the trunking FastEthernet port.
Linux also has a feature called VLAN tagging which allows you to convert a fast Ethernet port into a trunk. You create aliases for each VLAN on the trunk and quagga can then route for you.
This routing on a VLAN trunk is often called "routing on a stick" as all the networks are routed by a single link from the switch to the router. It works OK as long as your combined traffic doesn't get close to 100 Mbps.
A search for "trunking", "802.1q" (the open trunking standard) and "Linux" should give you a site that tells you how to configure it correctly. It really is fairly easy, one "ifconfig" and "trunk" line per VLAN, and the commands can all be placed in your /etc/rc.local file.
Hope this helps.