OK, uber nerd post. There are two common practices I’ve seen quite often in the Cisco network world: 1) everyone thinks you need an IP services image for routing and 2) no one wants to pay for IP services images, so they just bootleg it. There is actually a 3rd one (“a routing switch is as good as a router”) but that’s a gripe for another day ..
Many Cisco switches blur the line between Layer2 switch and Layer3 router. All of the switches above the 3560 series are capable of various Layer3 routing depending on the image you install on them. Layer3 routing means you can have a switch with two different networks (either a VLAN or routed interface) and the networks can talk to each other. This is supported on all switches with IP base or higher images.
Now the fuzzy part for some people comes in when you have a switch with multiple Layer3 interfaces, and they need to uplink to another switch such as the network core using Layer3. The knee-jerk reaction is buy IP services, configure a full routing protocol, and call it a day. However the Layer3 images are fairly expensive ($2000-4000 more per switch) and are really overkill for this application. This leads to the second problem of people bootlegging IOS images, because up until the E-series switches came out, you could put any image you wanted on any switch that would support it.
The solution: stub routing! Hidden away in the feature list for IP base switch images is a feature called EIGRP stub. This allows you to configure limited routing on any IP base switch, so you can receive routes from your upstream switch or router, and advertise your routes upstream as well. A stub router can even have multiple upstream neighbors for redundancy and load-sharing. However, a stub router cannot be a transit path (between two other EIGRP neighbors), which is actually a good thing because you don’t want the edge of your network becoming a transit path.
The above is an example of stub routing in combination with static routing. I didn’t label it very well, but the top router/switch is the core with full routing capability. The middle switch is an EIGRP stub, which is technically the “edge” of the network. Since I can’t have a neighbor on both sides of a stub, I setup static routing for the network hanging off the stub router. This works because EIGRP stub can even redistribute static routes!