It may often seem like nothing more than a sleek metal box on the outside, but the internal memory components of a Cisco router represent where much of the real magic takes place.
Speak of a Cisco router is being really no more than a specialized computer running a custom operating system. In this case, it is a computer optimized to provide routing and related functions. Instead of relying on a hard disk for storage, a Cisco router relies on different types of memory, each with a different purpose. In this article we’ll take a look at each of these different storage areas, and the functions they’re responsible for.
There are four main memory areas within a Cisco router that it’s important to be familiar with, namely Flash, RAM, ROM, and NVRAM.
Flash memory is implemented (on a Cisco 2500) using two Single Inline Memory Module (SIMM) slots that hold erasable programmable read-only memory (EPROM). Flash memory is used to store and run the Cisco IOS software – the router’s operating system. When a router is powered down, the contents of Flash memory are not lost. However, its contents can be upgraded by “flashing” the chip, not unlike one can do with a BIOS in the PC world. While a router is running, the contents of Flash are set to a read-only mode.
Flash memory for a Cisco 2500 series router ranges in size from a minimum of 4MB up to a maximum of 16MB. You might consider adding additional Flash memory to meet the space requirements of the IOS version that you have chosen to run. For a Cisco 2501, the base IP version of IOS 12.0 requires a minimum of 8MB of Flash memory. So, if you had a Cisco 2501 that shipped with only 4MB of Flash, you would require at least one additional 4MB SIMM. For IOS versions with more advanced feature sets, it is not uncommon to require at least 16MB of Flash.
When installing or upgrading Flash using multiple SIMMs, it is important to note that they must be the same size. For example, if you already have 4MB of Flash and wish to upgrade, you can either replace the 4MB SIMM with an 8MB SIMM, or simply add a second 4MB SIMM. You cannot mix and match SIMMs with different storage capabilities. As such, you cannot have one 4MB and one 8MB SIMM installed at the same time – their storage capabilities must equal.
Random Access Memory (RAM) represents the non-permanent or volatile working area of memory on a Cisco router. When the router is powered down, the contents of RAM are lost.
By default, RAM is broken up into two main areas – Main Processor Memory, and Shared I/O Memory. Main Processor Memory is where the routing table, ARP tables, and running configuration are stored. Shared I/O Memory is used as a buffer location for temporarily storing packets prior to processing. Most Cisco 2500 routers will have 2MB of RAM soldered to the system board (this amount, however, depends on the revision number of the router), along with one SIMM slot to add additional RAM. The maximum amount of RAM that can be added to a Cisco 2500 is 16MB. If 16MB is added, that provides a maximum of 18MB of available RAM. In cases where a RAM SIMM is installed, its capacity will be used as Main Processor Memory, while the onboard RAM (2MB) will be used as Shared I/O memory. If no SIMM chip is present, that 2MB of on-board RAM will be split between both areas, providing each with 1MB of working space. This should be avoided for performance reasons.
In older Cisco router models, Read-Only Memory (ROM) chips were used to store the IOS software. In newer models, this is no longer the case. As mentioned previously, the IOS image is now stored in Flash memory (it can also be stored on a TFTP server, as I’ll discuss in the next chapter). ROM is now used as the memory area from which a Cisco router begins the boot process, and is made up of a number of elements. These elements are implemented via microcode, a set of programming instructions that are contained in ROM.
Power-on Self-Test (POST). When the router is powered up, microcode stored in ROM performs a POST sequence. This is used to ensure that elements such as the CPU, memory, and interfaces are capable of functioning correctly.
Bootstrap Program. The bootstrap program is used to initialize the CPU and boot functions of the router. The bootstrap program is responsible for locating and loading the router’s IOS.
ROM Monitor. A special diagnostic environment used for the purpose of troubleshooting or special configuration. For example, this mode can be used to transfer an IOS image over a console connection.
RxBoot. When a valid IOS image cannot be found in Flash or on a TFTP server, this limited IOS version is loaded for the purpose of installing a new IOS image into Flash. It is also sometimes referred to as the boot loader, boot image, or helper image. The command set provided is only a subset of normal IOS commands.
On Cisco 2500 series routers, ROM is 2MB in size. In cases where ROM needs to be upgraded (which is rare), the actual chips needs to be replaced on the router’s motherboard. When a router is powered down, the contents of ROM are always retained.
Non-Volatile Random Access Memory (NVRAM) is used as the storage location for the router’s startup configuration file. After the router loads its IOS image, the settings found in the startup configuration are applied. When changes are made to a router’s running configuration, they should always be saved to the startup configuration (stored in NVRAM) or they will be lost when the router shuts down. Remember that the running configuration is stored in RAM, which is erased when the router is powered down. On a Cisco 2500 series router, NVRAM is a relatively tiny 32KB in size.
Knowing what’s going on where is an important part of not only understanding how a Cisco router operates, but will also help to determine the source of problems or issues, should the need arise. Remember – just because something can’t be seen, that doesn’t mean it’s not important.
More Related Readings:
Cisco Memory: Types and Functions