分类: 系统运维
2008-06-12 13:35:11
用于Cisco Catalyst 6500系列的Cisco IOS软件模块化
简介
当今的网络设备必须提供最长的正常运行时间,以便服务于语音、视频和数据应用等关键任务流量。尽管高可靠性一般是通过冗余系统在核心和分发层中提供的,但是鉴于单一网络设备通常是所连接的终端设备的单故障点,使它们更具永续性已成为对配线间、数据中心接入和企业网络的WAN边缘来说最重要的任务。城域以太网接入网络为满足与客户签订的服务水平协议(SLA)的严格要求,也有着类似的需求。此外,因为企业依赖于网络应用,因此网络操作员和管理员非常需要可靠性。
采用Cisco IOS软件模块化的Cisco Catalyst 6500系列通过演进式的软件基础设施增强,最大限度地缩短了停机时间,提高了运营效率。通过让模块化的Cisco IOS子系统作为独立的进程运行,这个创新凭借可自行恢复的进程最大限度地缩短了计划外停机时间,它还利用子系统运行中软件升级(ISSU)简化了软件改动,并经由集成嵌入式事件管理器(EEM)实现了进程级的自动策略控制。
用于Cisco Catalyst 6500系列的Cisco IOS软件模块化
Cisco IOS的设计可满足发展中网络最为严格的IP服务和控制平面可扩展性要求。Cisco IOS软件由数百个子系统组成,每个都定义了某项技术的某个组件,它们运行于共享内存空间,以实现最高的软件转发性能。
Catalyst 6500系列通过PFC或DFC上的ASIC,提供了基于硬件的转发功能。Catalyst 6500系列的控制平面功能在MSFC网络的专用CPU上运行。
· 控制平面→管理路由协议更新和管理流量等控制流量。
· 数据平面→负责通过ASIC进行的实际分组转发。
图1. Cisco IOS软件模块化的架构,显示了Cisco Catalyst 6500系列控制和数据平面的分离,以及独立的进程
完全独立的数据平面可确保,即使控制平面运行中断,只要软件的智能特性足以对硬件编程,使之不间断运营,就可持续转发流量。凭借Cisco Catalyst 6500系列交换管理引擎的冗余性,在主交换管理引擎发生硬件故障时,Catalyst 6500系列的不间断转发(NSF)和状态化切换(SSO)特性仍能提供持续运行的数据转发平面。对故障隔离和分离控制及数据平面的要求,导致了OS级关注焦点的改变。特别需注意的是,控制平面软件中的改动或问题不应影响数据平面上的转发。
Cisco IOS软件模块化将子系统组合为独立的进程,增强了Cisco IOS软件的内存架构,可提供进程级的故障隔离和子系统ISSU功能。这些改进在用于Catalyst 6500系列Supervisor Engine 720和 Supervisor Engine 32的Cisco IOS软件中提供,同时保留了网络操作员已经熟悉的丰富功能和操作环境。Cisco IOS软件模块化将首先在Cisco IOS 12.2(18)SXF的一个版本中提供。操作员将可从大量带或不带软件模块化的镜像中进行选择。在带Cisco IOS软件模块化的镜像与当前用于Catalyst 6500系列的Cisco IOS软件版本的功能完全相同前,思科将保留不带IOS软件模块化的并行镜像。
运营一致性
虽然软件模块化为Catalyst 6500系列上的Cisco IOS软件带来了很多改进,但从运营角度无需作任何改变。命令行界面(CLI)以及SNMP或系统日志等管理界面仍与以前一样。为支持新功能,添加了执行和配置模式的新命令以及show命令。软件发布和重建也与以前相同,只是添加了对于子系统补丁的支持。
受保护内存
在软件模块化支持的内存架构中,进程使用受保护地址空间。每个进程及其相关的子系统都“运行”于独立的内存空间中。同一进程的子系统能直接地相互通信,而进程间只可使用进程间通信(IPC)来传输信息。利用这种模式,就不会发生内存破坏波及多个进程的现象。同一进程中子系统的通信能直接进行,从而提供了一致的控制平面性能。
故障抑制
受保护内存空间的优势在于,因为一个进程中的问题不会影响到系统的其他部分,所以提高了可靠性。例如,如果一个关键程度不高的系统进程发生故障或未按预期运行,并不会影响持续转发分组所需的关键功能。具体来说,如果UDP进程发生故障,那么只有需使用UDP的特性会受到影响。
进程可重启性
模块化进程建立在受保护内存空间和故障抑制的基础上,现在可单独重启。为进行测试或处理无响应进程,可使用一条CLI命令来手动重启进程。这样,无需中断分组转发,即可快速从暂时错误中恢复。
手动重启进程很重要,而持续检查进程的状态也是至关重要的。一个集成的高可靠性子系统可持续检查进程状态,跟踪在规定时间间隔内一个进程的重启次数,从而完成这一任务。这种高可靠性子系统可通过重启进程,尽快从各种故障中恢复。如果进程重启仍无法恢复系统,那么高可靠性子系统会采取更高层次的行动,如进行交换管理引擎切换或重启系统。
因为每个进程有自己的受保护环境,可按需提供状态检查点信息。检查点架构能在进程重启或故障切换过程中保留此信息。高可靠性子系统在进程重启时会利用这一信息,实现状态化恢复。当一个进程重启时,它会利用检查点信息(例如中间系统-中间系统[IS-IS]路由协议信息的状态)来尽快进行恢复。检查点信息仅在特定时间段内进程第一次重启期间提供,以确保检查点状态信息本身不会导致错误。
模块化进程
部分控制平面功能已被模块化,这其中包含了大多数常用的特性。模块化进程包括但不限于:
子系统运行中软件升级
毫无疑问,受保护内存空间和进程可重启性的最重要优势就是,用户可在系统运行期间改动系统。Cisco IOS软件模块化增强了Cisco IOS软件基础设施,可通过单独的补丁进行选择性的系统维护。补丁是可影响一或多个子系统的单一修复。补丁最初将以维护包的形式提供-类似于适用于运营商级路由系统(CRS-1) 和Cisco XR 12000系列路由器的Cisco IOS XR软件中的软件维护升级(SMU)。一个维护包可包括一或多个能在运行时应用的补丁。软件模块化的初始版本将主要关注于产品安全事故报告小组(PSIRT)所提供的安全建议。
通过提供版本管理和补丁管理功能,无需重启系统,即可下载、验证、安装和激活维护包。根据需要修补的OS部分,网络操作员现在可以随时、灵活地进行软件改动,这是因为大多数补丁都不需要重启系统。补丁只会影响修复某一特定软件问题时所需的组件,因此大大缩短了代码认证时间。网络管理员现在只需验证与修复相关的软件部分。在作出应用某一维护包的决定后,网络中的多个Cisco Catalyst 6500系列交换机都可凭借子系统ISSU特性快速升级。
软件模块化和Cisco Catalyst 6500系列硬件架构的配合使用
Cisco Catalyst 6500系列交换机利用ASIC在硬件中执行流量转发。路由协议、终端连接(Telnet、SSH协议等)、SNMP等控制和管理任务需由交换机的CPU执行。因此“数据平面”和“控制平面”这两个术语主要用于区分系统的这两个部分。因为数据平面需获得正确的路径,来执行硬件转发,所以它与控制平面对接,控制平面可通过路由协议获取这类信息。在硬件中对这些路径编程之后,只有更新部分需从控制平面发送到数据平面。
将软件模块化与这类架构,以及EIGRP、OSPF、IS-IS和BGP等路由协议的不间断转发(NSF)功能相结合,可实现巨大优势。即使只有单一交换管理引擎的系统也可利用NSF功能。软件模块化的重启功能可重启任意模块化进程,如IP路由进程,而同时,系统的其余部分保持运行。以下步骤可说明一个系统是如何在不干扰用户的情况下进行恢复的:
请注意,在上述恢复期间,数据平面一直在执行转发。不过,需强调的是,此部署并不提供针对交换管理引擎的硬件故障的保护。如需从硬件故障中恢复,仍需要一个备用交换管理引擎。
运行模式
提供软件模块化的Cisco IOS软件镜像能以两种不同模式运行-二进制镜像或已安装镜像。大多数操作员都对从二进制镜像运行系统较为熟悉,即在交换处理器和路由处理器中运行单一二进制Cisco IOS软件镜像。而如果系统运行一个已安装镜像,系统将从具有目录和文件结构的文件系统运行。因为子系统ISSU仅在已安装模式中提供,且此模式可更高效地利用内存,所以建议从已安装镜像运行系统。
差别
表1列出了这两种运营模式的差别。
|
表1 运营模式的差别 |
|
|
|
|
已安装镜像 |
二进制镜像 |
受保护内存 |
√ |
√ |
故障抑制 |
√ |
√ |
进程可重启性 |
√ |
√ |
进程检查点 |
√ |
√ |
子系统ISSU(修补) |
√ |
X |
镜像与补丁的重打包 |
√ |
N/A |
更高效地利用内存 |
√3 |
X |
重打包功能使网络管理员可将基本镜像、所有所应用的补丁和包括标记的全部修补历史都压缩到一个二进制文件中。我们将在后面部分更详细地介绍重打包特性。
运行已安装镜像的系统可以根据线卡的插拔来为其分配内存。它要求文件系统一直可用。在使用外部小型闪存时,小型闪存不能在运行期间拔除。运行二进制镜像的系统在启动时加载所有代码,而运行已安装镜像的系统在运行时根据需要加载用于所配置特性的代码。
安装镜像
安装镜像即是创建一个目录结构,并将二进制文件解压到该结构中。此操作由安装程序执行,它是提供思科软件模块化的镜像中添加的一个组件。
当运行一个支持Cisco IOS软件模块化的镜像时,新镜像可位于本地,也可位于远程。从远程安装镜像的选项包括TFTP、FTP和RCP。
使用以下命令安装镜像:
系统随后将把压缩的镜像拷贝到内存,进行解压,校验检查和,并将其写入指定的文件系统。如需更具体的输出结果,可选用关键字interactive 。
假设有足够空间,一个文件系统也可放置多个版本的Cisco IOS软件。以前这是通过将多个文件拷贝到一个介质而实现的。鉴于已安装镜像由一个包含多个文件的目录结构组成,已安装镜像的差别由最顶层的目录定义(在上例中,为/sys目录)。每个文件系统有三个位置可以安装镜像,它们是: /sys、/newsys和/oldsys。新版本可安装到/newsys位置并进行测试。认证后,以前的软件版本可转移到/oldsys位置,新软件则从/newsys 移到 /sys。
改变启动变量和绑定一个镜像
运行二进制镜像的系统使用bootvar变量,将ROMMON指向必须在启动时加载的二进制文件。因为大多数情况下,只有一个文件,因此操作可直接进行。但是,如果某个启动变量的定义错误,在电源中断或重载后,系统可能会留在ROMMON中。很明显,启动字符串中的错误会导致严重的后果。
当系统运行已安装镜像时,会创建一个文件结构。该文件结构由OS本身管理,用户无需了解目录和文件结构。这种方式带来的一个影响是bootvar变量需通过另一种途径定义。
为简化定义 bootvar 变量的过程,同时使其安全可靠,我们提出了“绑定”的概念。安装镜像时,会指定像disk0:/sys 这样的目的地。一旦安装了镜像,系统就被绑定于此位置(让ROMMON了解从何处启动系统)。将系统绑定于某一位置,反过来即可自动定义相应的启动字符串。例如:
此配置命令可定义OS的位置。
6500(config)#install bind disk0:/sys
使用以下命令,来确认配置中所增加的内容。请注意已插入了整个启动字符串。尽管与运行二进制镜像的系统相比,启动字符串稍长,但用户无需键入字符串,只需指定目录即可。
6500# show running-config | include disk0:
install bind disk0:/sys
boot system disk0:/sys/s72033/base/s72033-ipservicesk9-vm
网络管理员可随时验证系统绑定的位置,即OS的位置。
6500#show install bind
The following bindings are currently defined (in order or precedence) :
Location Search Root
--------------------------- ------------------------------
Entire System disk0:/sys
如上所述,多个“已安装”版本可位于单一介质之中。此时可通过它们安装的目录来对它们进行区分。如想改变系统启动的位置,应使用no install bind
文件系统的要求
除需要更大闪存空间外,Cisco IOS软件模块化对文件系统没有任何特殊要求。为满足对于更大闪存空间的需要,可使用小型闪存介质。思科系统公司®还提供了一个内部小型闪存适配器,它可替代内部闪存(也称为sup-bootflash: 和 bootflash:)。较大的内部闪存消除了外部小型闪存易被拆除所带来的风险。同时,文件系统性能也得到了增强-例如,无需再进行耗时的挤压操作。仅支持基于小型闪存的文件系统。
为受益于内部小型闪存适配器(产品编号CF-ADAPTER=),系统必须为交换处理器运行不低于8.4(2)版本的ROMMON,为路由处理器运行不低于12.2(17r)S4版本的ROMMON。文件系统的标记将分别从supbootflash:变为sup-bootdisk: ,从bootflash:变为bootdisk: 。Supervisor Engine 720可通过软件升级ROMMON。这可远程执行,且不必对硬件作任何改动。具体信息请参见Cisco.com上的ROMMON版本说明。
当系统运行已安装镜像时,文件系统必须一直可用。因为线卡代码从文件系统动态加载,文件系统不可用就会导致严重的问题。
对于运行已安装镜像的系统,最低存储容量为256 MB。建议介质容量为512 MB。
进程管理
Cisco IOS软件模块化可重启模块化进程。但一般来说,用户无需重启进程。此集成的高可靠性子系统可持续监控所有进程的状态,并自动在需要时重启进程。
您可随时检查进程的状态。下面显示了IP路由进程的状态:
进程重启可由用户发起,但需谨慎进行。下面显示了“process restart
6500#process restart iprouting.iosproc
Restarting process iprouting.iosproc
6500#
当进程重启(即时发生),进程具体信息如下所示。
补丁
重启进程是一个不必重启系统即可实现故障恢复的重要机制,其主要目的是能在运行期间改动系统。这些子系统级软件改动被称为补丁。例如,补丁可通过单一漏洞修复或小规模功能改动,来升级网络。在Cisco IOS软件模块化的初始版本中,补丁将以维护包的形式提供,仅用于公开宣布的安全漏洞(PSIRT报警)。在未来的版本中,将提供对于任意修复类型的补丁的支持,甚或新功能。
在安装了一个补丁后,使用子系统代码的所有进程都需重启,以便在系统中应用所作改动。如果有检查点信息,它将可用于确保安装所受到的干扰最小。在路由协议方面,NSF机制可防止邻居删除通过恢复中的系统了解到的路由。
下面是向系统应用一个补丁的过程。请注意这只适用于运行已安装镜像的系统。
1. 首先检查系统上运行的是哪类基本镜像和补丁。这可通过show install running命令确定:
2. 需从Cisco.com4下载维护包。找到适用于特定镜像的维护包或补丁是非常方便的。将您的浏览器指向Cisco.com,即可在“Technical Support→Tools”下面找到“Patch Navigator”。下面的屏幕截图显示了补丁导航器可如何找到一个补丁的选项。
图 2. 软件模块化补丁导航器
CiscoWorks需一个设备逐步升级(IDU)包,才能在CiscoWorks Resource Manager Essential (RME)中支持Cisco IOS软件模块化镜像。如需有关补丁管理的具体信息,请查看CiscoWorks文档和版本说明。
3. 维护包/补丁需拷贝到系统,再写入文件系统。这可通过安装程序完成,安装程序会将文件拷贝到系统,验证补丁是否适用,并将其插入文件系统结构。因为文件系统的管理是由安装程序完成的,所以从文件系统的角度,无需对用户进行任何培训。维护包/补丁可手动拷贝到任意文件系统,或通过TFTP、FTP或RCP来访问。下面给出了部分示例:
4.需登录Cisco.com
6500#install file tftp://172.16.1.1/s72033-Yakhurana-00.pikespeak.pk_ptch disk0:/sys
Address or name of remote host [172.16.1.1]®
Source filename [s72033-Yakhurana-00.pikespeak.pk_ptch]®
!!!!!!!!!!!!
Verifying checksums of extracted files
Verifying installation compatibility
Gathering information for slot s72033_rp - Slot 5
!!!!!!!!!!!!
Activation will affect the following processes:
cdp2.iosproc
[output omitted]
4 Requires a Cisco.com login
Computing and verifying file checksums
!!!!!!!!!!!!
[DONE]
6500#
4. 在您激活补丁前,您可通过show install running命令来确认它处于等待安装状态。现在补丁可用install activate
维护包的发布结构
开始时,思科将以维护包的形式提供补丁,维护包中会包括一或多个补丁。补丁的基础是基本镜像。因此,当发布了一个Cisco IOS软件版本,就开始启动相应的一个补丁集成分支(PAIB)。在图3中,顶部箭头表示发现软件缺陷的时间点。稍后,Cisco.com上即会提供一个维护包。维护包中将涵盖所有补丁,包括以前为此特定PAIB所提供的维护包。
只要修复了缺陷并发布了维护包,此修复也将会与基本软件版本同步(以前提供的Cisco IOS版本也采取同样的方式)。这确保了所有已知的缺陷都得到立即修复,并自动集成到下一个维护版本中。
图3 维护包的发布结构
当像12.2(18)SXF这样的软件版本上的维护支持结束时,在不再发布维护包后,PAIB将至少再持续一个月。一旦进行了Cisco IOS软件模块化增强的新版本(如12.2(18)SXG)发布,就会启动一个新PAIB。较早的PAIB中所有的补丁都将集成到这个新版本中。正常的版本进程和维护重建流程都不会受到影响。PAIB支持是正常思科软件支持策略的扩展,相当于精确度较高的维护版本。
安装程序
为管理补丁,Cisco IOS软件基础设施中添加了一个新组件—安装程序。安装程序不仅可以增删维护包,而且可以设置标记和重打包镜像。它会记录一个系统的全部修补历史,无论它是运行中的系统(绑定的系统)还是安装在同一介质的另一系统,均可为其记录。
检查
向系统添加维护包时,系统会执行多项检查: