IRF的含义就是智能弹性架构(Intelligent Resilient Framework)。
支持IRF的多台设备可以互相连接起来形成一个“联合设备”,这台“联合设备”称为一个Fabric,而将组成Fabric的每个设备称为一个Unit。多个Unit组成Fabric后,无论在管理还是在使用上,就成为了一个整体。它既可以随时通过增加Unit来扩展设备的端口数量和交换能力,大大提高了设备的可扩展性;同时也可以通过多台Unit之间的互相备份增强设备的可靠性;并且整个Fabric作为一台设备进行管理,用户管理起来也非常方便。
简单来说,就是IRF设备通过多个Unit的堆叠形成了用户迫切需要的易管理、易扩展以及高可靠的产品特点。是一种不同于业界现有设备的全新理念的网络设备。
任何形式的堆叠技术都必须解决设备的统一管理问题,因为它们对用户的意义是勿庸置疑的。在管理一群相互之间有关联的设备时,最好的方式就是让用户在同一个界面上看到所有设备的情况,而不是来回切换窗口。如果堆叠设备之间没有良好的信息交互,统一的管理会因为得不到足够的数据而无法全部实现。有时候,设备之间仅仅进行很少的数据交流,形成一个松散的集合,在这样的设备上进行统一的管理是没有可能的。
最优秀的堆叠使所有的设备组合起来,变为一台“更大的设备”。分布式是这台大设备的特点,它拥有若干个CPU,端口数目是原来的好几倍并且分别隶属于这几个CPU。为了使这台大设备运行得真正象一个设备,对它的管理就变得非常重要。这个大设备中的每一部分必须具有全部信息或者在任一时刻能够获取到需要的信息。当某一部分接收到用户的配置改变,命令被无缝地传送到目的地进行执行并返回结果。
不难看出,分布式设备管理的核心问题是数据的一致性。IRF的分布式设备管理技术通过多种途径解决了这一问题。它负责建立堆叠,对设备上的数据进行统一管理,使得整个Fabric看上去象是一台设备。
分布式设备管理所包含的内容包括堆叠的形成,配置的同步和各种配置工具。
对设备上数据的统一管理基于设备之间信息的交换。堆叠设备进行信息交换的重要方式是通过数据同步。在unit之间,同步是每时每刻都在发生的,但大量的同步是在有新设备加入到Fabric时进行的,也就是堆叠形成的时候进行的。堆叠建立后,在有设备退出Fabric的时候,退出设备的信息就要被删除。
设备上的数据,或者说需要同步的信息集中体现在设备的配置上。在单机情况下,配置通过各种配置方式下发到各个模块,更改系统的运行方式,并可以被保存为配置文件以便长期使用。在IRF技术中,保证每个设备上配置的同步是至关重要的,这是形成Fabric的必要条件之一。
IRF技术在设备管理方面的可用性和可扩展性方面达到了一个新的高度。堆叠设备之间完全可以相互操作,从任何一台设备的界面上都可以看到其他设备的信息,就好像是在对同一台设备进行操作,用户感觉不到他正在同时操纵着几台设备。基于IRF的用户管理工具有控制口、telnet、SNMP、Web页面,用户通过任何一种方式都可以看到整个Fabric的配置,并进行更改。
Unit号
在Fabric中,不同的设备之间用号码进行区分,称为unit号(unit id),Fabric内的设备具有唯一的unit号,它可以是自动编号产生的,也可以是预先指定的。它在Fabric中唯一代表这台设备。在有的产品中,unit号重复的设备是可以堆叠的,堆叠开始后,如果unit之间发现有重复的号码,就会改变某些unit的号码,使得Fabric内没有重复号码。有的产品则规定堆叠的设备之间号码不可以重复,必须事先设定好,否则不进行堆叠。

图1 具有unit号的交换机
设备的up和down
假设在一个Fabric内有两台设备,分别是unit 1和unit 2,当第三台设备unit 3加入这个Fabric的时候,在unit 1和unit 2上,看到的是unit 3 up的现象,在unit 3上,看到的是unit 1和unit 2 up的现象。这种现象作为事件上报给系统,以便系统进行数据的同步,建立堆叠。同样,在设备的堆叠被切断的时候,看到的现象是对方unit down了,根据这样的事件,已有的相关数据被删除。设备的up和down是堆叠过程的基本事件,每一个设备根据它们进行后续的操作,形成稳定的Fabric。
Fabric的合并(merge)和分裂(split)
在一个Fabric内,如果两台设备之间的堆叠连接被完全断开,就会产生Fabric分裂的情况。例如:有五台设备形成一个Fabric,堆叠连接断开,unit 1和unit 2连接在一起,unit 3、unit 4和unit 5连接在一起。每一组分别形成了新的Fabric,原来的unit 号不变,继续运行。在unit 1和unit 2上,会产生unit 3、4、5 down的事件;在unit 3、4、5上,会产生unit 1、2 down的事件。
同样,如果将上面两个Fabric中的设备重新连在一起,会产生合并的现象。合并的时候,每个Fabric内的设备会分别产生其他新的设备的up事件,如果出现了重复的unit号,会进行重新的编号以保证在合并后的Fabric内,unit号是唯一的。
Unit的up和down事件同Fabric的合并(merge)与分裂(split)是伴生的现象,是从不同的角度描述的Fabric变化的情况。
Fabric的运行模式
在IRF技术中,Fabric上的三层接口是一个全局的概念,它不属于某一个Unit,而是属于整个Fabric,因此是否运行于三层状态是Fabric的一个重要特性,它会影响到许多流程的处理,Fabric运行的这种状态称作L3模式。如果一个Fabric只运行在二层接口上,就处于L2模式,处于L2模式的Fabric是不能运行三层功能的。模式之间可以切换。
在网络运行中,一个L3模式的Fabric分裂时,三层配置会产生冲突,例如一个配置了IP地址为192.168.1.1的Fabric运行于L3模式,分裂发生后,网络上就会出现两台具有IP地址为192.168.1.1的设备。对此,IRF技术提供了RARP协议进行三层的冲突检测,有一方会将模式自动切换为L2,禁止三层功能的运行,从而使整个网络继续稳定的运行。
在堆叠设备中,有一些配置在每台设备上必须保持一致,假设两个要堆叠的设备都配置了vlan 3,但它们却有不同的三层ip地址,冲突就会产生,必须改变其中一台设备的IP地址才能适应堆叠。同样,在一个Fabric内的两台设备,一台仅在运行RIP协议、而另一台仅在运行OSPF协议也是不可能的。因此,系统配置被分为全局配置和局部配置。全局配置包括:三层接口、IP地址、路由协议、安全特性等。这些配置在Fabric内的每台设备上必须是一致的。局部配置主要包括端口参数等,是每个设备特有的,不必相同。
运行中设备的配置被称作当前配置,当前配置可以被保存为配置文件,设备启动时读取配置文件,依照配置文件中记录的命令配置设备。堆叠后,Fabric内的设备必须具有相同的全局配置,因此,如果全局配置不相同,就必须确定一个标准,所有的设备都按照这个标准的全局配置下发命令。这个统一的标准定为unit号最小的设备上所保存的配置。其它unit号较大的设备获取该设备的配置内容,同自己的配置进行比较,如果一致,它们会继续形成堆叠;如果不一致,则通过某种方式变更自己的配置,使配置同具有最小unit号的设备的全局配置相同。
堆叠后显示的配置是全局配置和各个unit上的局部配置的总和,这个配置也叫做Fabric配置。
堆叠会在各种条件下形成。需要堆叠的设备必须具有相同的系统名(sysname),系统名不同的设备不会进行堆叠。这使得相互之间连接的设备知道自己属于哪个Fabric,不至于造成混乱。IRF技术提供了多种形成堆叠的流程,可以在不同的产品中使用。
一种情况是在设备运行的时候进行堆叠。如果设备已经启动,在连接了设备的堆叠口并进行配置之后,设备之间就开始堆叠。在堆叠设备开始通信之后,首先进行当前配置的比较,如果全局配置是相同的,就会相互发送数据,进行同步,之后向整个系统宣告堆叠已形成,各个模块根据设备管理模块所上报的up事件进一步处理数据,堆叠完成。当前配置不同的设备是不能进行堆叠的,因此,如果unit号较大的设备的配置同unit号最小的unit的配置不同,就会保存unit号最小的设备的配置,然后重启,重启后会从FLASH上读出所保存的配置,这时设备间的配置变得相同,堆叠继续进行。
第二种情况是在系统刚启动的时候进行堆叠。如果物理上已经连接,并且堆叠的命令保存在配置文件中,设备一起动会立即进行堆叠。IRF技术对这种情况提出了两种解决方法,第一种是设备继续运行,按照各自的配置启动,然后进行堆叠。这种情况和上面所描述的堆叠过程是大致相同的。第二种方式是当unit号较大的设备发现自己需要进行堆叠,就不再使用本机的配置文件,而是从unit号最小的unit上获取配置,直接将这个配置做为启动配置下发,进行堆叠。
无论哪种情况,在确认配置相同之后,一些必要的数据会被同步,之后unit up的事件会上报给系统中所有的模块,宣告堆叠已经成功。各模块根据各自的方式开始堆叠后的运行,相关的内容在《分布式弹性路由白皮书》和《分布式链路聚合白皮书》中描述。
Fabric内设备的变化给管理带来了极大的挑战,尤其在频繁出现Fabric合并和分裂时,这时在设备上会频繁出现up和down事件,所保存的数据也会频繁的更新和删除,以反映新的堆叠情况。
堆叠设备的管理面临难题是:首先必须支持各种不同的管理方式和管理工具,其次必须保证从各种工具所发出的全局配置在Fabric内的所有设备上是一致的。
IRF技术采用统一的接口,解决了不同管理工具从不同的设备登录所带来的配置管理复杂性。用户通过任何一种工具所发出的请求,经过解析后下发到需要执行的设备上。如果是全局配置,请求会下发到Fabric内的所有设备;如果是局部配置,则会下发到特定的设备。操作执行的结果被反馈,经过进一步的组合返回给用户。

图2 全局配置和局部配置
IRF的设备管理具有良好的可扩展性,可以很容易的支持新的管理工具。在每种工具上,用户都可以看到整个Fabric内的配置并进行配置更改,而不用管当前是通过哪台设备登录的。在用户看来,他访问的是一台具有更多端口的大型设备。

图3 一个Fabric对用户来说更象是一台设备
目前支持的管理工具包括控制口(CONSOLE)、SNMP协议、TELNET和Web网管。
每一个设备都有一个控制口,因此堆叠的设备会有多个控制口。这些控制口的地位是相同的,用户可以从任何一个控制口登录,访问任何一台Fabric内的设备。
用户通过控制口管理设备是采用命令行的方式,输入命令经过解析,进行广播或发送到相应的unit上。执行的结果被显示在用户连接的控制口上。
用telnet进行远程管理,是比控制口更灵活的方式。用户的命令被发送到telnet服务程序,进而被发送给命令行,命令行解析命令,然后被广播或发送到相应的unit上。执行的结果由telnet服务程序发回客户端。
由于三层接口是全局的,telnet客户端可以连接Fabric上配置的任何三层接口。用户不用关心是从哪个设备连接的。
SNMP Server发出请求,例如get,get next,set,以get为例,SNMP Agent将收到的get请求广播或发送到指定unit,执行的结果被发回,SNMP Agent将结果进行组合,有关unit的条目会用响应unit返回的结果,然后发回SNMP Server。
Web网管
Web网管通过http协议为用户提供良好的界面,由于因特网已经无处不在,通过它也使得对设备的管理变得更加简便。用户通过浏览器发送请求给设备上的HTTP服务程序,请求被广播或发送到指定unit,执行的结果经过组合,通过Web页面反馈给用户。
IRF技术的分布式设备管理解决了网络设备的数据一致性问题,使得整个Fabric对用户表现为一台设备。IRF技术提供了多种管理工具,为用户提供了灵活的、高可用的系统。