本节书摘来自异步社区《CCIE路由和交换认证考试指南(第5版) (第1卷)》一书中的第1章,第1.7节IOS-XE,作者 【美】Narbik Kocharians(那比克 科查理安) , 【斯洛伐克】Peter Paluch(彼得 派拉奇),更多章节内容可以访问云栖社区“异步社区”公众号查看
1.7 IOS-XE
在21世纪,工程师面对着现代网络日益增长的需求,网络不仅需要支持各种智能管理工具,还要支持软件定义的网络机制,这些需求很快超越了传统IOS(互联网络操作系统)的能力。这种无法与时俱进的结果基本上是由IOS自身的单片性质决定的。
首先,我们必须承认多年来IOS一直提供了很好的服务,但现代网络的要求促使我们重新考虑如何对常见协议的操作进程提供支持,比如OSPF、EIGRP、MPLS、BGP、IPv6等。因此毫不意外的是,在努力提升IOS的适用性和生存性的同时,也有必要对它本身进行提升。事实上,IOS已经发展出了三个主要的操作系统,每个操作系统都服务并满足了宏伟网络规划中的不同目标。这些操作系统包括NX-OS、IOS-XR和IOS-XE。在这里我们关注的是IOS-XE。
首先要说的是,IOS-XE是为路由器、交换机和各种应用设计的,它集合了IOS中成熟的功能和特性,还添加了POSIX(可移植性操作系统接口)环境中的新功能和优势。这是将具有网络感知功能的应用程序集成到现代路由设备中的最佳做法。最终,IOS-XE在各种功能中,无缝集成了一种通用的网络管理方法,极大程度上借鉴于同样可靠的POSIX操作系统。此外,通过引入一系列优秀的API(应用程序编程接口),Cisco还提高了IOS的可移植性;尤其是我们可以调用IOS平台的操作,还可以扩展IOS外的功能。IOS-XE这最后一个扩展开创了这样一个未来:应用程序的集成将会变得简单、完整且司空见惯。
几十年来,IOS已经成为了网络扩张、配置和维护的中心,现在IOS-XE中也继承了相同的功能,它保留了传统IOS的所有优点,并能够为关键业务应用提供无与伦比的传输服务。所有这一切都可以通过一个与IOS相同的操作界面实现,并同时还提供了增强型“面向未来”的功能。
这一切是如何做到的?IOS-XE运行一个现代的Linux操作系统,这个操作系统采用单一的后台程序;上述我们讨论过的附加功能都会作为单独的程序,在主机的OS中运行。这意味着工程师无需参加再次培训,就能够使用IOS中具有的所有功能,以及一些增强型操作和功能。
乍一看,这似乎并不是什么太大的进步,但如果我们想到IOS和这些其他应用都是作为单独的程序运行的,那么显然我们现在可以使用对称式多重处理架构了。这一点本身就意味着我们可以通过多核CPU获得负载均衡的优势,也就是将不同的进程绑定到不同的CPU内核。因此我们可以创建一个运行环境,来支持多线程和多核CPU。这种能力,再加上IOS-XE用来分离控制平面和转发平面的方法,提供了传统单片IOS环境中无法实现的管理和控制水平。
如今,路由器上运行的IOS会在同一个内存空间内,运行实施网络操作所必需的所有模块。这种做法有一个问题,就是当路由引擎发生一些问题时,可能会导致整个IOS内核的崩溃。早在5年前,这种情况可能还构不成什么问题,但在现代企业环境中,这却是灾难性的;由于当今的企业网络是在单一平台上运行可以支持虚拟化的基础架构,因此不能容忍单一进程导致整个系统的崩溃。
通过将软件架构迁移到运行“Linux平台”的系统中,我们获得了多个抽象层级。现在整个解决方案都在IOS-XE独立的系统功能中,每个系统功能都独立地位于分离的进程中,与主要的运行内核相隔离。这意味着当这些功能中的一个失效时,不会影响到内核的工作。因此通过为路由设备上运行的每个底层进程创建单独的线程,对称多进程的思想得到了进一步实现。
正是通过这种孤立的运行模型,应用程序设计者将会有能力为新数据平面的ASIC建立驱动程序,并且让这些新数据平面的ASIC能够与一些标准API实现互操作。正是这些API实现了控制平面和数据平面的分离。
对于路由器运行机制的描述,一直以来有这样一个惯例,就是把它分为多个不同的类别。具体地讲,就是分为控制平面、数据平面、输入/输出平面。一个操作系统对于运行机制中这三个平面的隔离能力,对设备的不间断运行时间有直接的影响,因为这涉及计划内和计划外中断。
IOS-XE通过模块化架构带来的结果,使我们看到了控制平面和数据平面本身,在逻辑和物理上的隔离。乍一看区别不大,但其实意义深远。现在通过模块化的刀片设备,我们拥有了物理隔离的三个平面,这些刀片安装在机框中,拥有各自专属的硬件资源。IOS-XE还为它们维护逻辑上的隔离,并将其作为抽象的一层。这样一来,我们可以更好地减少路由系统中失效部分的大小,也可以更好地在各个平面之间隔离运行负载。有一个例子可以很好地说明这一点:数据平面在转发大量流量时,会承受巨大压力,但这并不会影响到同一机框中控制平面的运行。之所以可以实现这种效果,是因为IOS-XE为机框中的每个托架或刀片插槽运行分离的驱动实例;因此当一个驱动失效后,并不会对其他托架或整个机框造成影响;其结果是其他进程继续转发流量。除此之外,我们还可以为单个驱动打补丁,而不会影响到整个机框。
这种分离是通过转发和特性管理器(FFM)和转发引擎驱动程序(FED)来实现的。
FFM提供了一组API,用来管理控制平面的进程。其结果是,FFM通过FED来规划数据平面的运行,并为系统维护所有转发状态。FED使驱动程序能够对数据平面造成影响,驱动程序是由平台提供的。