IRF
概述
IRF
的含义就是智能弹性架构(
I
ntelligent Resilient Framework
)。
支持
IRF
的多台设备可以互相连接起来形成一个“联合设备”,这台“联合设备”称为一个
fabric
,而将组成
fabric
的每个设备称为一个
unit
(如图
1
所示)。多个
unit
组成
fabric
后,无论在管理还是在使用上,就成为了一个整体。它既可以随时通过增加
unit
来扩展设备的端口数量和交换能力,大大提高了设备的可扩展性;同时也可以通过多台
unit
之间的互相备份增强设备的可靠性;并且整个
fabric
作为一台设备进行管理,用户管理起来也非常方便。
简单来说,就是
IRF
设备通过多个
unit
的堆叠形成了用户迫切需要的
易管理、易扩展以及高可靠的产品特点。是一种不同于业界现有所有设备的全新理念的网络设备。
图1 IRF交换机
IRF技术的三大组成部分
DLA(分布式链路聚合):支持跨设备的
链路聚合,可以在设备之间进行链路的负载分担和互为备份。
分布式弹性组播路由作为分布弹性路由的一部分,完全具备了分布式弹性路由的特点,
fabric
系统内的多台设备对外界看来是一台单独的三层交换机,而且
fabric
内部的每个
unit
可以互相备份,实现了
1:N
的备份功能。当某一台设备发生故障时,路由协议无缝切换,数据转发不中断。分布式弹性组播路由除了以上单播路由协议的优点外,还从协议本身出发,从根本上解决了组播数据占用
fabric
内部带宽的问题。成功开发的分布式
IGMP-snooping
协议和高效的组播转发表保证了每台设备间只有一份组播数据报文传送,大大节约了设备间的带宽,提高了设备转发性能。
把多个
unit
堆叠起来组成一个
fabric
在网络中运行时,将不可避免的遇到一个冲突问题:即所有的
unit
都会发送路由协议报文,都会分别和外界设备进行路由信息交互,因此外界设备看到的将是多个设备,而不是
fabric
本身一个设备,而同时由于各个
unit
上的三层接口以及
IP
地址是完全一致的,外界设备就会收到来自同一个接口同一个
IP
地址的多个路由协议报文(分别由各个
unit
发出),从而不可避免的造成冲突问题。
要解决这个冲突问题,就必须让
fabric
只发出一份路由协议报文,即让整个
fabric
作为一台设备运行,采取的办法是从所有
unit
中选出一个
unit
来发送路由协议报文,其它
unit
发送的路由协议报文都将被抑止,因此从外界看来,整个
fabric
只发出一份路由协议报文来,就像只有一台设备在跑路由协议一样。
下文图
2
中以
PIM
协议为例对
fabric
系统作为一台设备跟外界交互的方案进行了简要说明,图
2
中
Unit1
和
Unit2
组成了一个
fabric
,这个
fabric
从
Unit1
和
Unit2
分别收到了来自
Route1
、
Route2
和
Route3
的
PIM
协议报文,并且
Unit1
和
Unit2
都向外界发送了
PIM
协议报文,但是只有
Unit1
的报文被成功发送出去,而
Unit2
的
PIM
协议报文被抑制在
fabric
设备内部,从而对于外界设备来说,整个
fabric
只发出一份路由协议报文来。
图
2 IRF
系统收发组播路由协议报文示意图
IRF
的分布式弹性组播路由是基于分布式设备管理
(DDM)
技术上实现的。下面具体介绍分布式弹性组播路由需要的几个技术点:
统一的路由协议配置信息:
要使一个
fabric
中各个
unit
上的路由协议各种信息保持一致,一个基本前提就是每个
unit
关于路由协议的配置是完全一致的
。这里的完全一致不仅仅是指配置的命令完全一致,而且包括配置的时间和时序都完全一致,即用户必须同时在
fabric
中的所有
unit
上配置完全一致的命令。很显然这个需求靠用户手工在所有
unit
上分别配置命令是无法实现的,因此
IRF
设备必须实现把整个
fabric
作为一台设备进行路由协议各种配置的功能。
这里所说的把整个
fabric
作为一台设备进行路由协议各种配置的功能是指用户可以借助任何手段(包括
CONSOLE
、
SNMP
、
TELNET
、
WEB
等多种方式),也可以在
fabric
中的任意一个
unit
上,进行路由协议的相关配置,只要
fabric
中的任意一个
unit
收到用户配置,就会马上同步给其余所有
unit
同时执行,从而实现每个
unit
关于路由协议的配置完全一致的需求。
统一的三层接口信息:
设备上存在
UP
的三层接口是运行路由协议的基础,也是网络设备能够进行报文三层转发的前提条件。要使一个
fabric
中各个
unit
上的路由协议各种信息保持一致,最基本的前提就是每个
unit
的三层接口必须保持完全一致。在
IRF
技术体系里,
fabric
上的三层接口是一个全局的概念,它不属于某一个
unit
,而是属于整个
fabric
,一个
fabric
作为一台设备管理本
fabric
上所有三层接口,每一个三层接口在
fabric
是具有唯一性的,对于
fabric
中任意一个
unit
来说,它看到的都是由
fabric
统一维护的全局的三层接口,因此每一个
unit
看到的结果都是一样的。这也就保证了
fabric
中每个
unit
的三层接口必须保持完全一致的要求。
PIM-DM
支持IRF
特性
PIM-DM
组播路由协议是一种密集模式组播路由协议,它周期性的扩散组播数据并周期性的收敛来维护组播分发树。
PIM-DM
没有复杂的协议状态机,只是根据
PIM
协议报文来维护组播分发树,因此只要让
fabric
中的每一台
unit
处理的
PIM
协议报文完全一致就可以保证每一台
unit
上生成的
PIM-DM
状态信息完全一致。
要实现这个功能,就必须要保证
fabric
中的每一台
unit
在相同的时间,以相同的时序收到完全相同的协议报文,并且处理该协议报文的所有前提条件(例如接口状态等)都是完全一致的。采取的办法是在所有
unit
各种协议状态完全一致的情况下,任意一个
unit
收到外界传来的
PIM
协议报文就同步给其它所有
unit
,让
fabric
中的所有
unit
上同时能处理到同样的
PIM
协议报文,从而保证每个
unit
生成
PIM-DM
协议状态的一致性。
PIM-SM
支持IRF
特性
PIM-SM
组播路由协议是一种稀疏模式组播路由协议,该协议把组播信息拉入网络中的接收站点。如果没有接收者,组播数据不会在网络中扩散,只有最优组播分发树上的路由器才会接收组播。它用显示加入机制来维护共享树和最短路径树。
PIM-SM
没有复杂的协议状态机,只是根据
PIM
协议报文来维护组播分发树,因此只要让
fabric
中的每一台
unit
处理的
PIM
协议报文完全一致就可以保证每一台
unit
上生成的
PIM-SM
状态信息完全一致。
要实现这个功能,就必须要保证
fabric
中的每一台
unit
在相同的时间,以相同的时序收到完全相同的协议报文,并且处理该协议报文的所有前提条件(例如接口状态等)都是完全一致的。采取的办法是在所有
unit
各种协议状态完全一致的情况下,任意一个
unit
收到外界传来的
PIM
协议报文就同步给其它所有
unit
,让
fabric
中的所有
unit
上同时能处理到同样的
PIM
协议报文,从而保证每个
unit
生成
PIM-SM
协议状态的一致性。
IGMP
支持IRF
特性
互联网组管理协议
(IGMP)
负责所连网络组成员关系的收集与维护。该协议收发通用查询报文、特定组查询报文、主机加入报文和离开报文来维护协议的各种状态信息。因此只要让
fabric
中的每一台
unit
处理的
IGMP
协议报文完全一致就可以保证每一台
unit
上生成的
IGMP
状态信息完全一致。
要实现这个功能,就必须要保证
fabric
中的每一台
unit
在相同的时间,以相同的时序收到完全相同的协议报文,并且处理该协议报文的所有前提条件(例如接口状态等)都是完全一致的。采取的办法是在所有
unit
各种协议状态完全一致的情况下,任意一个
unit
收到外界传来的
IGMP
协议报文就同步给其它所有
unit
,让
fabric
中的所有
unit
上同时能处理到同样的
IGMP
协议报文,从而保证每个
unit
生成
IGMP
协议状态的一致性。
Multicast traceroutes
支持IRF
特性
Multicast traceroutes
是一种跟踪组播数据流的协议。该协议可以从接收者出发,根据组播分发树逐个跟踪到数据源,确定组播数据流的路径,获得中间路由器的各种组播状态。这种简单协议不需要冗余备份,所以实现起来也容易。
IGMP
协议支持
IRF
后,收到的
IGMP
协议报文都会复制到
fabric
内所有的
unit
上去处理。使用
IGMP
协议号的
multicast traceroutes
协议报文也会发送到
fabric
内所有
unit
。由于
fabric
内每个
unit
的组播路由协议状态都一致,所以一台
unit
处理
multicast traceroutes
协议报文就可以获得整个
fabric
信息,同时该
unit
发送
multicast traceroutes
协议报文跟外界交互。
IGMP-snooping
支持IRF
特性
为了使
IGMP-snooping
协议支持
IRF
特性,成功开发了纯分布式
IGMP-snooping
协议。它的实现不像组播路由协议
PIM
,依靠
fabric
内广播协议报文和全局的三层接口信息来保证每个
unit
的协议状态保持一致。分布式
IGMP-snooping
中,每个
unit
只维护本
unit
上的路由器端口和主机端口状态信息,以及其它
unit
上是否有主机端口或路由器端口的状态信息,不关心其它
unit
上的端口状态信息,从而不依赖其它模块就实现了分布式
IGMP-snooping
协议。
分布式
IGMP-snooping
协议有以下几个技术亮点:
1
.维护最少的状态信息。分布式
IGMP-snooping
协议在每个
unit
只维护本
unit
上的用户端口状态信息和其它
unit
上是否有主机端口和路由器端口的信息,并不关心其它
unit
上的具体端口状态信息。这样最少的状态信息维护减少
unit
间交互信息的数量,大大提高
fabric
系统内部通信效率。
2
.按需转发
IGMP
主机加入报文,减少
IGMP
协议报文的拥塞冲突。
3
.按需转发组播数据报文,减少
fabric
内组播数据流量。
分布式
IGMP-snooping
有以下几个技术点组成。
1
.路由器端口的智能维护
当某
unit
从用户端口收到组播路由协议报文或
IGMP
通用查询报文,认为该端口上有路由器,就把该端口视为路由器端口。如果该路由器端口是
vlan
内的第一个路由器端口,则通知其它
fabric
内的所有
unit
本
unit
有路由器端口。如果该路由器端口不是本
unit
上的第一个路由器端口,那只在本地维护的路由器端口列表中增加一个端口,并不向其它
unit
通知本
unit
有路由器端口,因为其它
unit
已经知道本
unit
有一个路由器端口。
当其它
unit
收到一个消息通知某
unit
有一个路由器端口时,当前
unit
只记录某
unit
有路由器端口,不记录具体路由器端口状态信息。这样维护最少的状态信息,减少系统内部备份数据的数量,大大提高
fabric
系统运行性能。
当某
unit
的路由器端口超时时,就从本地路由器端口列表中删除该端口。如果该
unit
没有其它的路由器端口就通知其它所有
unit
,本
unit
没有路由器端口。
当其它
unit
收到一个消息通知某
unit
没有路由器端口时,直接从该路由器端口列表中删除该
unit
。
2
.主机端口的智能维护
当某
unit
收到
IGMP
主机加入报文后,认为该端口有直连主机,并把该端口视为主机端口。如果该端口是本
unit
第一个主机端口,就通知
fabric
内所有其它
unit
,本
unit
有主机端口。如果主机端口不是该
unit
第一个主机端口,那只在本地维护的主机端口列表中增加一个端口,不向其它
unit
通知本
unit
有主机端口。因为其它
unit
已经知道本
unit
有主机端口。
当其它
unit
收到一个消息通知某
unit
有一个主机端口时,当前
unit
只记录某
unit
有主机端口,并不记录具体的主机端口状态信息。虽然系统通过其它的方法可以获得全局端口信息,这里不记录其它
unit
上的具体端口信息。
当某
unit
发送一个特定组查询报文后没有收到响应的
IGMP
主机加入报文,就从本地主机端口列表中删除。如果该
unit
上没有其它主机端口就通知
fabric
内其它所有
unit
,本
unit
没有主机端口。
当其它
unit
收到一个消息通知某
unit
没有主机端口时,直接从该主机端口列表中删除该
unit
。
3
.
IGMP
主机加入报文的有效抑制
当
unit
收到某组的第一个主机加入报文时,创建主机端口,并直接透传该报文到
fabric
内所有其它的
unit
。当
fabric
系统发送
IGMP
查询报文后,并不是把所有响应的主机加入报文透传到其它
unit
。而是发送查询报文后,把每组中第一个响应的主机加入报文发送到其它
unit
。其它
unit
在每个周期内只收到一份主机加入报文就可以保证协议的正常运行。这种抑制机制大大减少了
IGMP
报文的拥塞冲突,提高了
fabric
系统性能。
如图
3
所示,四个
unit
通过环型连接组成一个传统堆叠系统,主机
Host1
~
4
属于同一组。当每一个主机响应路由器
Router
的
IGMP
查询报文时,
Unit1
会从主机
Host1
和
Host2
收到
IGMP
主机加入报文,并把这两份报文在堆叠系统内广播。
Unit4
也会从主机
Host3
和
Host4
收到
IGMP
主机加入报文,并把这两份报文在堆叠系统内广播。这样堆叠设备内会有多份同一组的
IGMP
主机加入报文,从
Unit2
到路由器的链路上也会有多份同组的
IGMP
主机加入报文。显然这种堆叠方式会增加堆叠设备的负荷,大大降低了系统性能。
图
3
传统堆叠设备中的
IGMP-snooping
协议报文示意图
如图
4
所示,四个
unit
通过环型连接组成一个
IRF
堆叠系统,主机
Host1
~
4
属于同一组。当每一个主机响应路由器
Router
的
IGMP
查询报文时,
Unit1
会从主机
Host1
和
Host2
收到
IGMP
主机加入报文,
Unit4
也会从主机
Host3
和
Host4
收到
IGMP
主机加入报文。可是
fabric
系统只会把最早响应的
IGMP
主机加入报文在
fabric
系统内广播,而且
Unit2
和路由器之间的链路上只有一份
IGMP
主机加入报文。其它同组的加入报文被有效的抑制在
fabric
系统内,确保最少的协议报文来维护
IGMP
协议状态,大大减少了
IGMP
主机加入报文的拥塞冲突。
图
4 IRF
系统中的分布式
IGMP-snooping
协议报文示意图
4
.
Unit
加入处理
当新
unit
加入到
fabric
时,每个
unit
都把本
unit
上是否有主机端口或路由器端口的状态发送到新加入的
unit
上,这样新加入的
unit
就知道哪些
unit
有路由器端口和主机端口。同时新加入的
unit
也向
fabric
内其它
unit
通知本
unit
上是否有路由器端口或主机端口的状态,让
fabric
系统内的其它
unit
知道。
5
.
Unit
离开处理
当某
unit
从
fabric
内离开时,
fabric
内的其它
unit
直接把跟本
unit
相关的主机端口和路由器端口信息删除。从
fabric
内离开的
unit
也把跟
fabric
内其它
unit
相关的主机端口和路由器端口信息删除。
Fabric
系统是有多台独立的
unit
组成,任意一个
unit
都有完整的三层转发能力。每个
unit
都可以接收报文,且报文的出端口可以在本
unit
,也可以在其它
unit
。为了减轻
unit
间通信的压力,如何保证
unit
间只复制一份报文,
fabric
内跨越最少的
unit
成为一个难题。由于成功开发了分布式
IGMP-snooping
,从协议本身出发,把高可靠性的三层转发表和分布式
IGMP-snooping
维护的出端口列表有机的结合后,产生了指导组播转发的高效组播转发表。该组播转发表只维护本
unit
上的用户出端口和
fabric
内其它
unit
上出端口所在的
unit
号,并不关心其它
unit
上具体的端口号。被这种高效组播转发表指导的组播数据在
fabric
内转发时,跨越最少的
unit
,寻找最短的路径,且
unit
间传递最少报文来转发,实现了分布式三层数据转发。彻底解决了跑组播业务就网络性能降低的难题,给用户带来了高可靠性、高性能的组播业务。
分布式组播转发有两大技术亮点:
1
.高可靠性的三层组播转发表
由分布式设备管理提供的全局配置同步和全局统一的三层接口是给高可靠性的组播路由提供了基础。虽然每个
unit
上的组播路由协议的状态都相同,所生成的组播路由表也相同,但并不是每个
unit
独立维护各自的组播转发表,而是其中的一台
unit
统一下发组播转发表,保证了
fabric
内所有三层组播转发表相同。图
2
中可以看到,只有
Unit1
下发组播转发表,
unit2
的组播路由表没有下发到组播转发表。
当
fabric
内统一下发组播转发表的
unit
出现故障或离开
fabric
系统时,
fabric
内剩余的
unit
会选择一台
unit
统一下发组播转发表。由于分布式弹性组播路由协议已经保证了各个协议的状态相同,组播路由表相同,所以重新下发的组播转发表也相同,保证了组播路由无缝切换,数据不中断,实现了高可靠性。
2
.高效的组播转发表
高可靠性的三层组播转发表跟分布式
IGMP-snooping
有机的结合,产生了交换机上引导组播数据转发的二三层结合的组播转发表。该组播转发表只维护本
unit
上的用户出端口和
fabric
内其它
unit
上出端口所在的
unit
号,并不关心其它
unit
上具体的端口号。这种高效组播转发表指导组播数据转发时,使组播数据跨越最少的
unit
,寻找最短的路径,且
unit
间传递最少报文来转发,实现了分布式三层数据转发。
图
5
是环型连接的传统堆叠设备。
Server
发出的组播数据会从
Unit2
进入
fabric
系统,通过
fabric
系统复制转发,
Host1
~
5
主机才能收到组播数据。从图中可以看出,
unit2
做了集中组播转发,复制了所有的组播数据流。这样
Unit2
到
Unit1
的内部链路上会有四份组播数据流,而在
Unit1
到
Unit4
的内部链路上也有两份组播数据流。这种传统组播转发增加了
fabric
系统内链路通信负荷,大大降低了系统系能,没有把组播数据复制交换负担分散在系统的多台
unit
上。这种传统堆叠方式除了端口数量增加外没有任何优点,还降低了整个网络性能。图中还附了一张
Unit2
设备的组播转发表。由于
Unit2
设备维护所有的出端口,理所当然的完成了集中式组播转发。
图
5
传统堆叠设备中的组播数据转发示意图
图
6
是环型连接的
IRF
堆叠设备。
Server
发出的组播数据会从
Unit2
进入
fabric
系统,通过
fabric
系统复制转发,
Host1
~
5
主机才能收到组播数据。从图中可以看出,虽然
Unit2
上的转发表有三个目的地址,
Unit2
只复制两份组播数据,一份是给
Host5
的组播数据流,另一份是给
Unit1
的组播数据流。
Unit1
收到组播数据流后,再把组播数据复制三份分别给两个主机
Host1
、
Host2
和
Unit4
。最终
Unit4
再复制两份组播数据流,发送给主机
Host3
和
Host4
。这种分布式三层转发保证了每一个链路有最有少的组播数据流,把组播数据复制转发这种消耗系统资源的工作分散在
fabric
系统内的每一个
unit
上去做,使每个
unit
分别负担组播转发,大幅提高了组播数据转发性能。图中还附了一张
Unit2
设备的组播转发表。由于
Unit2
设备有高效的组播转发表,才实现了分布式组播转发。
图
6 IRF
系统中的分布式组播数据转发示意图
支持
IRF
特性的分布式弹性组播路由既可以通过多台
unit
间的互相备份,大幅提高了网络可靠性,又可以高智能组播数据转发,使每个设备分别负担组播转发,充分利用了每个设备的转发容量,大幅提高了组播数据转发性能。
支持
IRF
特性的组播网络给用户带来了易管理,易扩展,高可靠性,高性能的网络。