本节书摘来自异步社区《Cisco IOS XR技术精要》一书中的第1章,第1.4节,作者 【美】Mobeen Tahir , Mark Ghattas , Dawit Birhanu , Syed Natif Nawaz,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.4 Cisco IOS XR高级介绍
Cisco IOS XR技术精要
随着世界对IP网络基础结构的依赖程度日益加剧,网络运营商需要一个具有高度可靠性和可用性的网络。Cisco IOS XR软件被设计用来满足网络运营商的迫切需求。IOS XR可提供如下特性:
高度可扩展性;
分布式转发架构;
极高的可靠性与弹性;
服务分离和灵活性;
健壮的安全性;
软件构件模块化;
层次性配置和健全的配置管理;
更优的可管理性。
Cisco IOS XR软件是一款高级分布的、安全的、模块化的、高度扩展的、支持不间断运作的网络操作系统,也是一款使用抢占多任务处理、内存保护、快速内容交换机制的微内核操作系统。微内核提供了包括内存管理、任务调度、同步服务、内容交换,以及进程间通信(IPC)在内的基本操作系统功能。
Cisco IOS XR中使用的微内核是一款由QNX Software Systems公司开发的QNX Neutrino实时操作系统,其使用的内核是轻量级的,不包括例如设备驱动器、文件系统和网络栈之类的系统服务。图1-2给出了IOS XR的微内核架构。
所有在微内核(procnto)外部的进程都可以单独地重新启动。任何进程(SysMgr、SysDB、Qnet或BGP)的重启不会导致系统重新引导。当进程重启后,会通过永久存储或peer进程(也叫做协作者[collaborator])恢复其状态。例如,如果路由信息库(RIB)进程重新启动后,会通过其协作者恢复RIB表,RIB的协作者包括如OSPF、BGP、IS-IS之类的路由选择协议进程。因此,如果RIB进程重启,RIB表将会被重建并且不会发生流量中断。
Cisco IOS XR通过部署两种分布式模型来获得更高的性能和扩展性。第一种分布模型使用本地化的方式,更靠近资源地执行数据处理和存储操作。在这种模型中,节点专用的数据库将安置在该节点上。同样,进程也被安置在节点上,从而更好地与资源进行交互。例如,地址解析协议(ARP)、接口管理器(IM)、双向故障检测(BFD)、邻接管理器,以及转发信息库(FIB)管理器功能都会安置在线卡上,仅负责管理相应线卡的资源和表项。线卡专用的系统数据库,例如接口相关配置、接口状态等,将会存储于线卡上。这种方式可使IOS XR实现更快的数据处理和更高的可扩展性。
第二种分布模型使用负载分布的方式,可以向系统中增加额外的路由处理器(RP或分布式RP[DRP]),使得进程被分布到不同的RP和/或DRP模块中。路由选择协议、管理实体和系统进程都是可以分布使用这些模块的进程。例如,用户可以将进程分类按照如下方式分类进3个组内,然后再把每个组分配给不同的RP或冗余RP对。
组1:所有路由选择协议或进程,包括BGP、ISIS、LDP、RSVP、PIM、MSDP和RIB。
组2:所有管理实体,包括SNMP服务器、SSH、Telnet、XML和HTTP。
组3:所有其他进程。
这种模型可以使运营商在系统中按需添加额外的RP或DRP来缓解单RP的压力,从根本上增加了系统的整体处理能力。
Cisco IOS XR提供了一种将管理平面、控制平面、数据平面清晰分离的系统结构。图1-3说明了IOS XR架构以及管理、控制、数据平面之间的关系。
控制平面、数据平面相互分离
每个控制平面或管理平面可以运行在一个或多个路由处理器(RP)和/或分布式RP(DRP)节点上。数据平面进程分布在参与包转发的每个节点中,包括RP和线卡(LC)。
Cisco IOS XR支持在物理边界上将一个系统划分成多个安全域路由器(SDR)。多个SDR共享同一个机框、电源组、风扇组以及相关的系统组件。每块线卡或RP只能属于一个SDR。由于SDR是在物理边界上定义的,所以Cisco XR SDR可提供故障和安全隔离功能。一个SDR的故障、资源耗尽,或者安全系统遭到破坏,不会影响到同一系统下的其他SDR。一个SDR可以定义成仅包含一个RP,也可以包含多个RP和多块LC。
图1-4给出了一台逻辑上划分成了3个SDR的系统:默认SDR、SDR 1和SDR 2。SDR中,具有指定机框控制器(DSC)的SDR被称为默认SDR。DSC是系统上的主RP(或冗余RP对)。
Cisco IOS XR使用一种两级的、完全分布式的转发架构。每块线卡都会带有与自身接口相关的转发信息库(FIB)和本地的邻接信息库(AIB)。当某个数据包开始进入系统,入站线卡将执行入站特性处理和FIB查找。随后,入站线卡会基于FIB查找的结果将数据包交付给相应的出站线卡,而不需要知道出站接口的完整邻接信息。入站线卡通过交换矩阵将数据包发送给出站线卡。之后,出站线卡执行特性处理和FIB查找来获取完整的邻接信息和2层重写信息。数据包将带着相应的2层头部被发送到出站接口。
两级转发可使系统具有更强的扩展性和更优的性能。这对于Cisco IOS XR来说是至关重要的,因为IOS XR设计的初衷就是在众多方面实现极高的可扩展性,包括带宽能力、路由数
量、用户连接数等。
在Cisco IOS XR中,所有的穿越流量都是通过硬件来处理的,不涉及LC或RP的CPU计算。只有去往路由器或由路由器发起的流量会使用LC或RP的CPU进行处理。Cisco针对目的为路由器的数据包研发了一种创新的处理机制和交付机制,该机制称为本地数据包传输服务(LPTS)。如果一个进入系统的数据包在硬件中经过FIB查找之后确定了该数据包是发送给本系统的,那么该数据包将会被移交给LPTS进行额外的硬件处理。LPTS判断数据包是属于哪个应用的,并将数据包发送给执行应用的节点。比如,当收到了一个BGP数据包,入站LC会将其直接发送给用来处理BGP进程的RP。LC上的硬件转发引擎会通过交换矩阵将数据包发送给RP,LC的CPU不会参与数据包的处理。
Cisco IOS XR LPTS还可以扮演动态防火墙的角色,保护系统免受拒绝服务(DoS)及其他形式的攻击。LPTS会监控并监管去往路由器的流量来防御DoS攻击。例如,去往RP的BGP或其他类型的控制流量会被控制在LPTS进程设定的监管门限范围之内。在正常情况下,设定的监管门限值不会影响正常的BGP更新流量。不过,如果有攻击者恶意发送大量的BGP更新,LPTS将会保护RP的CPU不被伪造的BGP流量所冲垮。监管值的大小还取决于被发送数据包所对应的BGP会话状态。如果数据包来自某个已配置的邻居,并且BGP会话仍未建立,那么监管速率将会相对降低。另一方面,如果数据包匹配某个已建立成功的会话,监管速率将会调高。要知道模拟已建立会话的BGP数据包是非常困难的,因为攻击者除了要获知源和目的IP地址之外,还必须要知道BGP会话的源和目的端口号。
LPTS机制无需用户参与配置:LPTS默认开启并且会根据系统配置以及活动会话数,动态地进行更新调整。不过,LPTS的监管门限值是用户可配置的。