Software Routers vs. Hardware Routers?
Daniel Garcia asks: "I recently got put on a task at work to find out if using Win2k as a router is a good idea or not. So far, the only information I've found lies here. Only problem is that the article doesn't have any benchmarks or real data to back up some of their claims. I just wanted to ask the /. community if anyone has used any version of NT as a software router and how it compares to using a hardware router. Personally, I'd rather use a hardware router than a Microsoft product but I don't have any data to back up those claims."
any real hardware router (Cisco, etc) will beat the pants off of a software implementation (Linux/BSD/W2k box) for total throughput. For small networks (like my home net), the linux box does a great job of routing/NAT/firewalling/e-mail/webserverving, but if you are going to have heavy traffic, your dollars are best spent elsewhere. If it is just a few (or even a few dozen boxes), you'll probably be fine with a PC implementation.
... mem -> PCI -> netcard2 is a long, slow path.
A hardware router still runs firmware, but the internal bus structure and routing is far more expedient than a PC trying the same tasks. Since real routing happens a couple layers up on the OSI stack, the frames have to be translated and passed through the driver, and in some cases all the way to user space to be filtered. Granted, routing can be in kernel space, but this is still significantly slower (especially considering PCI and uProc bus latency) than a streamlined piece of specific hardware.
netcard1 -> PCI -> mem.... uProc
If this is for a buisness, get some real hardware. If this is for your home network, you could have one of the other boxes do it.
Of course, if you are only routing a 28.8 dial-up, you could probably use bicycle messengers, too... the latency isn't *that* much of a problem. For a real pipe, get a real piece of silicon.
"It's tough to be bilingual when you get hit in the head."
Although I'd agree that a dedicated router box is generally better than running a box with an general-purpose OS, the decision isn't as clear-cut as some posters are making it out to be.
For modern hardware, there's no appreciable performance difference for the kinds of loads most people will see. For one of my clients, I set up dual Celeron-based Linux boxes as routers. One is the active router, and the other is a hot spare, automatically failing over if anything happens to the primary. (Kudos, BTW, to the folks at the High Availability Linux Project.)
This solution happily routes about 15 Mb/s around the clock, and I've tested it up to 100 Mb/s. Total cost for the pair was about $3200 in 1U rackmount cases. I can run all the latest Linux security tools on them. And other Linux sysadmins can work on them without learning, say, Cisco's arcane configuration language.
So a dedicated router may be better on the same hardware, but using a full-blown OS can make a lot of sense.
Architecture: The PC architecture just has way too much overhead and too many bottlenecks, since it is designed to handle many possible utilizations. A hardware router is overall designed to do what is supposed to do and nothing else, eliminating unecessary overhead and bottlenecks. A Cisco 2500 may only be a 68030 with 8 megs of ram, but it will beat the snot out of a PC; the PC will start dropping packets long before the Cisco.
Hardware: A PC relies on too many moving parts, too many points of failure. Harddrives crash, and then you have to reinstall, restore from backups (you are going to make backups, right?). A hardware router has no moving parts except for a fan or two. Backing up a cisco's running-config is trivial, and easily transferred to a replacement router if there ever is a catastrophic hardware failure.
Data-Link Layer: Who's on the other end of the line, and what protocol do they want you to speak? What card are you going to find to drop in the PC that speaks X.25, or HDLC, or whatever? If you can find them, how much do they cost? Do you trust the manufacturer?
Network Layer: What routing protocol do you need to speak? BGP4, EGRP, IGRP, EIGRP? Forget using a PC. Even Zebra for Unix isn't mature enough, unfortunately.
Amdministration: Sure, Cisco's command-line is archaic. But it quite elegantly allows someone who knows what they are doing to do exactly what they need to do, without going through all the bullshit of a gui. There's also having to deal with all the administration responsibilities of configuring a full-blown PC hardware and OS, even for stuff in the OS you won't ever be using, as opposed to the administration of a hardware router which is, when it boils down to it, merely a matter of enabling the services you need, without ever having to touch anything you don't. Furthermore, as stated above, a cisco's entire configuration is contained in a single text file, and can be backed up and restored easily; the same is obviously not true of a PC based solution.
Upgrades: Do you want to have to administer Service Packs to your Windows2000 router? Upgrading a cisco's IOS is almost as trivial as restoring its running-config.
I hate to sound so one-sided. But the fact is that in a production environment it is professionally irresponsible to go with a solution other than that which is best suited for the task. A dedicated, hardware based router is much better suited for the task than a PC based router.