High performance and affordable router with m0n0wall and Atom

Intel Atom is a powerful little platform for it’s cost.  It works well as an office productivity or Internet access desktop, as a Home Theatre PC (HTPC) for watching and recording videos, storage server, and a even a small network AD server. Another area it can excel is as a home/SME router.

I’ve ceased using commercial routers aimed targeted at the home segment for a number of years now. What made those routers unfeasible was the growing bandwidth available to home user and the popularity of peer-to-peer, meshed, file sharing – where a large number of connections would be made simultaneously to grab various parts of the same file from different users. The earlier home routers with their low memory and processing capability couldn’t handle the load, and enterprise routers were, and still are, out of the reach of my financial capability.

That was when I turned to building my own. I started refurbishing an old computer with additional network cards. The system with I replaced today ran on an Intel Pentium III 450 MHz processor with 256 MB of ram, and had been for a number of years.

At the simplest level, any computer with more than one Ethernet adapter can be used as a router. On, Linux, routing can be done through iptables, on Windows, either through Internet Connection Sharing or Routing and Remote Access on consumer and server variants of the operation system respectively. However, there are Linux-based distributions which are designed with the sole purpose of turning a PC into a dedicated router which can rival commercial offerings in terms of performance and features. One such example and the one that I’m using is m0n0wall.

Lately, my old setup has been giving me issues, which I attributed to a failing power supply. Replacing it wasn’t the best of idea since the system was old, really old. This was the opportunity to get rid of and replace the system. A new one wouldn’t cost very much, and the much lower power draw of the Atom was welcomed too. It was the perfect system for the task.

I did some shopping, and although some manufacturers, such as Gigabyte, do offer Atom boards with dual GbE adapters, none of those models made it to the local market. In fact, they’re relatively few Atom models here in Singapore. I had to settle for the Asus AT3GC-I, which sports a dual core Intel Atom 330 processor with a single GbE port, resulting in me having to purchase an additional network card, filling up the only PCI expansion slot available. The 2 GB of RAM that I bought was a huge overkill, but the stores were only carrying 1 GB and 2 GB DDR2 memory, and the cost between the two was a mere $2. Add in a mini-ITX case, and I was almost ready to go.

Since m0n0wall takes up only a mere 10 MB of space, I decided to skip the hard disk. Instead, I opted for a 4GB USB thumb drive as the primary storage medium. It was the lowest capacity one I could find.

Assembly was a breeze, and was the easiest one I’ve done to date. The motherboard fit right into the case, and since the only peripheral I have is one expansion card, it was all very straightforward. No issues with lengthy graphics card that wouldn’t fit into the casing, nor a billion front panel chassis connectors to deal with.

For m0n0wall installation, I downloaded physdiskwrite 0.5.2 and the generic-pc-1.3.img from http://m0n0.ch/wall/downloads.php. Opening the command prompt on my Windows 7 PC with Administrator rights, I inserted my newly bought thumb drive in, formatted it, and began writing the m0n0wall image to it by executing the following.

physdiskwrite –u generic-pc-1.3.img

I was displayed a list of the drives available and selected my thumb drive as the destination. One-sixth of a minute later or under, it was done. I plugged the thumb drive into my Atom system, did a few changes in the BIOS to set it as the default boot medium, and booted. The picture below shows the initial boot.

atom_boot

I spent the next half hour or so copying over my configuration from my previous set-up, and the hour after that rearranging some furniture and re-doing cabling. The beauty of m0n0wall is that it can be used right out of the box if you have no need for more advanced features such as traffic shaping. There really is little configuration.

I still maintain that the system is an overkill. Under load, memory and CPU usage hardly crosses 5%. However, a lesser powered system, such as one of Soekris Engineering’s offerings, would have cost just as much or even more. I’m extremely happy with my new setup. Before I end the article, here’s another pictures, from the rear, where you can clearly see the 4GB thumb drive which would be permanently plugged in as the boot medium.

atom_final

5 thoughts on “High performance and affordable router with m0n0wall and Atom

  1. Yeah, I love m0n0wall as well ;)! I’ll be using an Atom board in a few days, my currrent firewall is an old AMD Athlon 1200 MHz PC and resets too often (the board is old, or it may be the power supply… either way, it needs an update)…

    Anyway, let me add a small comment… m0n0wall is not based on Linux, but on FreeBSD.

  2. Thanks for pointing that out. I tend to group Linux and Linux-like operating systems under the same category, which is less than correct.

  3. My new Atom-based m0n0wall (1.31) is now active… and I’m an extremely happy camper :)!

  4. What about Soekris Engineering’s devices? Can they handle the large number of connections. I remember home routers with 200/300mhz cpu to be unable to do the job. Is 100 or 133 Mhz AMD ElanSC520 fast enough to handle the load?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>