The FFM then utilizes the Forwarding Engine Driver (FED) to update the data plane to reflect the desired changes from the original API call to the FFM.Īpplication and process state have also been moved from memory to a database structure.
The Forwarding and Feature Manager (FFM) provides an API to the control plane processes and translates those instructions into meaningful changes in the control plane. IOS XE contains two functions which finalize the separation of the control and data plane. IOS was split up into the following packages:ĮSPBase – Provides the ESP operating system and control processes for the ESP softwareĮach of these can be restarted and upgraded as needed without causing the data plane to restart.
Drivers could now be written with knowledgeable programmers from the Linux community which decreased hardware release schedules.
Linux is now the underlying common infrastructure which makes the previous IOS features just software addons to the underlying OS. Linux was determined to be the underlying platform of choice to create this capability. The first main hurdle was to create a base OS image which would not only provide the capability of splitting up the forwarding and control plane, but it would also provide a standards based approach for installing any increased functionality in a timely fashion in the future. Any new feature required a revision of the entire IOS binary rather than just making it an install-able package that utilized the underlying kernel for functionality.Ĭisco’s IOS XE resolves these issues from its predecessor through multiple changes. As Cisco acquired more companies, and customers requested additional features and functionality, maintaining the plethora of IOS trains became unmanageable.įlexibility to deploy a new feature to market also became a problem. Each IOS version had to be written specifically for each platform to support the drivers and features necessary for the platform to function. The original OS design worked without too many issues, as there weren’t many platforms that Cisco supported. In this same use case, if the SNMP process is being walked by a monitoring server while the EIGRP process needs to update the RIB, this process could be slowed down dramatically until the process finishes. If an SNMP bug caused a buffer-overwrite condition which happened to overwrite the EIGRP process memory allocation, you are now affecting not only affecting the control plane, but also your forwarding plane, thus crashing the router and causing an outage. These processes must report back to the kernel when they are done before another process is allocated to the CPU.įorwarding (Data) and Control plane functionality were thus combined into a single failure domain. All calls must go through the kernel, which will not interrupt any existing processes that have the CPU. This meant that any process could modify or even corrupt the memory of another process, causing more than just an issue with the process which initiated the issue. Memory was shared across all processes.It was based upon a monolithic architecture which meant that any processes ran by the OS were stacked and interrelated. Cisco IOS (Internetwork Operating System) was Unix-based and originally designed in 1984 to implement routing functionality on Cisco hardware.