As a linux fan I've found my self many times wondering why would anyone prefer to use an expensive piece of embedded equipment, when he could do so much more at little to no cost, using free, unix-like operating systems. However I have been pointed out that there are cases where embedded hardware is a better option: in mission critical environments and in environments where it is not possible for the personnel to handle the extra administration effort needed by such solutions.
Both choices have some advantages and disadvantages, what is better depends on what priorities you set on the following factors:
- Knowledge requirements
Reliability refers to both software and hardware behaving as expected for extended periods of time. Generally, embedded hardware like CISCO tends to be more reliable than PC hardware. The fact alone that most PC-based routers would depend on a hard disk drive compromises their reliability, since mechanical parts have much shorter lifespan than electronic parts. Furthermore, unless each part of the PC was selected carefully, chances are that it's electronic parts will also be less reliable. Embedded hardware passes stricter quality checks than typical PC hardware, making it less sensitive to temperature and power supply anomalies.
Software that runs on embedded hardware, like CISCO IOS, tends to be more reliable as well, only because it is more simple in design. It has fewer layers, simpler interfaces and a smaller codebase, so there is smaller room for mistakes and debugging is easier in the event of them. From the administrator's standpoint, a router running on GNU/Linux will require more frequent maintenance to be reliable than an embedded router.
So if reliability is indeed a top priority, embedded routers are a better choice. However in my opinion reliability of this level is only necessary on very mission-critical environments, in most cases a possible hardware failure every couple of years and a few-minutes scheduled downtime every couple of months/weeks is not a problem.
Features. This is where a Linux-based router would win without doubt. Linux' rich features place it way ahead of anything else, I don't think there is much to say here: if you can imagine something -anything- and you know it's mechanics, you can 100% implement it on linux, and in more than one possible ways. Embedded solutions might offer sufficient features for most environments, but remain highly inflexible: if a custom need shows on the way, the associated features might not exist, their available implementations might be less than ideal for that particular case, or an expensive hardware upgrade/replacement may be required.
Knowledge requirements go hand to hand with the features. Linux is a generic operating system that gives the administrator complete control over every administration detail of the system's resources while the embedded routers' software only gives control over the very specific things outlined by their features. As a matter of fact, the producers of embedded routers make sure that their hardware can only be used for the specific things they marketed as features. It is easier to offer support this way, and it is more profitable to them, since they sell features "per piece". Linux developers on the other hand follow such an open design, that their software is possible to be used in ways that they might have never even thought about! This open design comes at the cost of knowledge requirements.
A Linux administrator must know many things in detail, regardless of whether he needs the advanced features associated with them. A CISCO administrator in most cases can have the luxury to simply ignore the features that he doesn't need and only refer to the documentation for the features that he needs, for which the knowledge requisites are limited. Any software that runs on Linux has a quite large chain of knowledge requisites and the user must be willing to follow that chain to it's end before he can use the software effectively (luckily, though, most of the links are common, so what he learns once applies everywhere). In environments where a new technology must be implemented in the minimum amount of time, that is unacceptable, especially if the available personnel is not really comfortable with the specifics of Linux.
Cost, of course, is an area that Linux has an advantage. It is completely free and can run on a wide variety of hardware, from x86 museum-pieces to high-end DEC/Compaq Alpha hardware.