系统概述
何谓“IRF”
IRF的含义就是智能弹性架构(Intelligent Resilient Framework)。
支持IRF的多台设备可以互相连接起来形成一个“联合设备”,这台“联合设备”称为一个Fabric,而将组成Fabric的每个设备称为一个Unit(如图1所示)。多个Unit组成Fabric后,无论在治理还是在使用上,就成为了一个整体。它既可以随时通过增加Unit来扩展设备的端口数量和交换能力,大大提高了设备的可扩展性;同时也可以通过多台Unit之间的互相备份增强设备的可靠性;并且整个Fabric作为一台设备进行治理,用户治理起来也非常方便。
简单来说,就是IRF设备通过多个Unit的堆叠形成了用户迫切需要的易治理、易扩展以及高可靠的产品特点。是一种不同于业界现有所有设备的全新理念的网络设备。
图1 Fabric设备示意图
何谓“IRF之分布式二层协议”
IRF产品有三个要害特性:
DDM(分布设备治理):外界可以将整个Fabric看成一台整体设备进行治理,用户可以通过CONSOLE、SNMP、TELNET、WEB等多种方式来治理整个Fabric。
DLA(分布链路聚合):支持跨设备的链路聚合,支持LACP协议。可以在设备之间进行链路的负载分担和互为备份。
DRR(分布弹性路由):包含多个Unit的Fabric在外界看来是一台单独的三层交换机。整个Fabric将作为一台设备进行路由功能和转发功能。在Fabric中的某一个Unit发生故障时,整个Fabric的路由协议和数据转发不会中断。
以上这三个要害特性支撑了IRF设备的易治理、易扩展以及高可靠的产品特点,也同时使得IRF设备具有现有业界已有设备无法比拟的应用优势。
本文所要描述的“IRF之分布式二层协议”就是实现或者配合实现上述DDM、DLA、DRR三大特性的技术基础。
“IRF之分布式二层协议”的技术特点及应用价值
随着网络技术的发展,越来越多的用户需要通过接入设备访问互联网,用户要求设备供给商能够对其网络进行平滑升级和扩容。IRF技术就是在这种应用背景下产生的。通过IRF技术可以将设备接入端口数进行扩充,最大可以扩充到400个或者更多的端口数,并且向用户提供高可靠、高可扩展性的网络。端口数的无限扩充以及对网络可靠性要求的提高,这就要求以太网交换机中常用的二层协议,如STP/RSTP/MSTP、LACP、802.1x以及IGMP Snooping等基础协议具备治理大容量端口和高可靠性等功能。
一般对于这种分布式系统,或者框式分布式系统,二层协议的基本实现方式是在主控板或者Master设备上实现,即传统的主从式结构。具体的过程基本上包括下面几个步骤:
1、 端口收到报文后,首先送给本地的CPU;
2、 本地CPU在收到协议报文后,假如判定自己不是Master,则将该报文进行进一步封装,加上入端口号、报文长度等等信息,然后将报文送给Master设备;
3、 Master设备上处理收到的协议报文并且运行协议相关的状态机,得到端口的控制状态或者转发表项;
4、 Master设备再将状态机计算结果通过控制指令下发给各Slave设备,从而完成对整个分布式系统的控制;
5、 Slave设备收到Master下发的控制指令后,根据指令完成对本地交换芯片的配置。
很明显,这种传统的实现方式将大部分的处理过程放到Master设备处理,增大了Master的负担,因此设备就需要更多的存储器资源和更强劲的CPU,提高了设备的硬件成本;其次,将所有处理过程放到Master上,降低了整个系统的可靠性,即假如Master出现故障,将会导致整个系统不能正常运行,从而系统很难具备高可靠性特点。
图2 普通分布式系统的二层协议实现模型
在IRF堆叠系统中,为了降低CPU和存储器资源的消耗,提高系统的可靠性和弹性,对于交换机的常用二层协议,采用分布式的设计思想,简单的说,就是在端口所在的设备上(入侧设备)对该设
备所收到的协议报文进行处理;二层协议相关的状态机统一运行在端口所在的各自设备上,计算结果直接控制该设备的端口;IRF系统内设备之间通过极少量的控制报文进行交互和协商,以做到设备之间的控制过程一致。
“IRF之分布式二层协议”的要害技术点
二层协议对外表现为一台设备
IRF的技术特点之一就是整个IRF系统对于网络中其它设备或者网管来说是一台独立的交换设备,与IRF系统直接相连的设备不会感知到IRF系统内部的结构,也就是说,从周边的设备来看,与其交互的只是一台设备。
IRF系统中的所有二层协议,对外只有一个设备ID,比如STP/RSTP/MSTP对外发布的是同一个桥ID,对于LACP协议来说,对外发布的是相同的系统ID;此外,二层协议对IRF内的所有端口进行统一编号,也就是说,IRF系统的端口ID在同一个线性空间内。这样IRF系统周边的设备虽然从不同UNIT上收到协议报文,但是它们看到的却是同一台设备的不同端口发送出来的协议报文。
作为一台设备进行二层协议的各种配置
要使一个Fabric中各个Unit上的二层协议的控制过程一致,另外一个基本前提就是每个Unit关于协议的配置是完全一致的。这里的完全一致不仅仅是指配置的命令完全一致,而且包括配置的时间和时序都完全一致,即用户必须同时在Fabric中的所有Unit上配置完全一致的命令。很显然这个需求靠用户手工在所有Unit上分别配置命令是无法实现的,因此IRF设备必须实现把整个Fabric作为一台设备进行各种二层协议配置的功能。
这里所说的把整个Fabric作为一台设备进行各种二层协议配置的功能是指用户可以借助任何手段(包括CONSOLE、SNMP、TELNET、WEB等多种方式),也可以在Fabric中的任意一个Unit上,进行二层协议的相关配置,只要Fabric中的任意一个Unit收到用户配置,就会马上同步给其余所有Unit同时执行,从而实现每个Unit关于二层协议的配置完全一致的需求。
图3 Fabric处理二层协议相关配置示意图
各UNIT独立运行二层协议
在IRF系统中,虽然二层协议对外表现为一台独立设备,并且可以当作一个治理实体接收来自网管、控制台的配置命令,但是为了降低系统成本和提供系统可靠性,二层协议的报文处理和状态机运算都是在端口所在设备上进行的。下图为分布式二层协议的实现模型:
图4 IRF系统中分布式二层协议控制模型
分布式二层协议的主要实现原理如下:
1、 IRF系统中,端口收到协议报文后,交给本设备的CPU处理;
2、 端口所在设备对接收到的协议报文进行处理,并且答应端口的协议状态机;
3、 端口所在设备根据需要判定是否需要和IRF系统内的其它设备进行交互,并根据本地状态机和交互结果得到端口的控制状态或者该设备的转发表项;
4、 端口所在设备将计算所得到的端口状态或者转发项设置到该设备上,以指导设备进行二、三层数据报文转发;
5、 分布式情况下,假如计算结果影响其它设备,则通过控制消息将该结果通知给其它设备。
通过该实现原理可以发现,分布式二层协议只治理设备自身的端口,并且状态机和协议计算只发生在本地。因此二层协议对CPU与存储器资源的需求基本上与IRF系统内的总端口数无关,此外,由于状态机和协议计算只发生在设备本地,因此当其它设备发生故障时,并不会影响本地设备的协议状态机运行,从而提高了整个系统的可靠性和稳定性。正是二层协议的这种分布式实现方式,IRF系统对CPU和存储器资源的需求才大大降低,从而使这种低成本、高可靠性、可扩容性技术的实现成为可能。
链路聚合控制协议(LACP)分布式
LACP在IRF上采用分布式架构,对于端口信息这样的局部数据,各设备只保存本设备的端口信息,但是对于聚合组这样的全局数据,需要全局集中式治理,所有的聚合组数据的处理都在Master UNIT上处理,以保证聚合组资源的全局一致性和ASIC聚合的一致性。同时,为了保证Master UNIT离开后系统能够及时恢复业务,对全局聚合资源数据在各UNIT上进行备份。需要注重的是:这些备份数据并不参与正常的LACP流程计算,只是在Master UNIT离开时起到平滑业务的作用。下面是针对跨设备聚合时的一些实现原理:
1、 在不同的Unit上配置LACP,启动IRF系统内各端口的LACP协议;
2、 各UNIT处理本设备端口收到的LACP协议报文,并且运行状态机与对端进行协商;
3、 协商成功后,各UNIT将协商结果发送给Master设备,Master设备根据该结果分配聚合资源,并且创建聚合组;
端口认证协议(802.1x)分布式
802.1x是基于端口的认证协议,每个启动1x功能的端口都需要维持一套状态机,以实现上网认证、在线维持和用户下线处理。802.1x协议是在各UNIT上独立运行的,当端口收到认证报文后,直接送往本设备CPU处理,本设备通过1x状态机实现与客户端的协商以及对端口授权状态的控制。
IGMP报文侦听协议(IGSP)分布式
IGMP Snooping 采用对等方式运行,IGMP Snooping协议在所有设备上同时运行,各设备的 IGMP Snooping 实体独立进行协议处理,在周边实体输入相同的情况下各设备的 IGMP Snooping协议会得到相同的二层组播转发表。IGMP Snooping 在每个设备上都维护整个 IRF Fabric 的端口组加入信息,这样在每个设备上都保存有完整的二层转发表,表里保存的转发项都是全局转发项,包含完整的出端口列表。最后,各设备的IGMP Snooping根据该转发表整理出指导芯片转发的转发项,并且配置到ASIC芯片中。
生成树协议(STP/RSTP/MSTP)分布式
在IRF系统中,STP(含STP/RSTP/MSTP,以下简称STP)协议采用分布式方式运行,STP协议在所有设备上分别运行,各设备只处理自己所包含的外部端口,但所有设备向外发布自己的BPDU信息时,采用同一个Bridge ID。整个IRF Fabric作为一台801.1D Bridge,其只具有一个Root Port、一批负责向下游转发报文的Designated Port,其它的则被选择为Alternate Port或者Backup Port。
当UNIT上的STP在确定本UNIT的端口角色时,需要同时考虑位于其它UNIT的Fabric的Root Port。也就是说Fabric上的Root Port将参与所有UNIT的端口角色确定,这样可以防止在同一个Fabric上产生多个Root Port。当某个UNIT上存在Root Port时,它将通过设备间控制消息以广播方式将该信息发布给其它所有UNIT;各UNIT收到该信息后将该信息保存,并触发本地的端口角色计算,以确定本UNIT各端口的端口角色。
Fabric的Root Port选择出来后,Root Port需要向Fabric上其它所有端口发布“重新选择根端口”信号,然后检查Fabric的所有端口是否已经都和新的根端口保持信息同步,假如已经同步,则Root Port可以迁移到Forwarding状态。在向Fabric其它所有端口发布“重新选择根端口”信号时,Root Port所在UNIT通过广播控制消息将“重新选择根端口”信号发布给Fabric的各UNIT,这些UNIT在收到“重新选择根端口”信号后,激励本UNIT所有端口与Fabric当前的Root Port的端口状态同步,然后各端口成为“已经同步”状态,UNIT向Root Port所在UNIT响应一个本UNIT 同步成功消息。当Root Port收到Fabric其它所有UNIT的同步成功响应,并且本地端口(除Root Port)也都同步成功,则Root Port可以迁移到Forwarding状态。
Fabric的Root Port在收到上游Designated Port发来的迁移到Forwarding状态请求消息后(PRoposal信号),Root Port需要向Fabric其它所有端口发布Sync信号,要求这些端口保持与上游Designated Port状态同步,Fabric各端口收到Sync信号后,调整自己的状态,然后设置自己的状态为Synced(已经同步)。Root Port在发现所有端口都Synced后,向上游Designated Port响应Agreement消息,即同意上游迁移到Forwarding状态。在Fabric内部,Root Port对Sync的处理过程与对“重新选择根端口”的处理过程相同。
当网络的拓扑变化时(不包含Fabric内部结构的拓扑变化),Fabric的某个端口会收到TC消息或自己状态发生变化,端口所在UNIT通过控制消息将该TC消息发布给其它所有UNIT,这样保证在端口发现拓扑变化时会根据802.1D的要求刷新Fabric所有相关端口的二层转发信息。
下面结合图例来说明分布式STP协议实现原理:
图5 STP协议分布式实现原理
1. 各设备只保存本地端口的数据和状态机信息;
2. 每台设备维护一个虚拟端口,该端口所保存的信息为分布式系统内当前的根端口信息,假如系统内没有根端口,则该端口所保存的信息可以认为是无效的;
3. 端口收到BPDU报文后,将报文送交本地STP进行处理。STP根据本地端口信息和虚拟端口所保存的信息来选择系统内的根端口;
4. 假如选择的根端口位于本设备,则STP协议将该端口收到的BPDU以及该端口号作为同步消息发送给其他所有设备;
5. 设备假如收到来自其他设备发来的根端口信息时,将该信息保存到本地的虚拟端口上,并且重新触发本地的根端口角色选择,假如自己的根端口信息没有远端根端口信息优时,本地根端口将被选择为可选端口或指定端口;
6. 当被阻塞的根端口需要快速迁移到转发状态时,根端口会向系统内所有端口下发“根端口重新选择”信号,该信号通过同步消息逻辑通道广播到系统内的其他所有端口;
7. 假如设备收到“根端口重新选择”信号,设备会检查本地端口是否已经与该根端口同步,假如没有,则阻塞该端口,然后设备将向根端口所在设备发送“本设备已经同步根端口重新选择”标志;
8. 根端口所在设备收到系统内其他所有设备发来的“本设备已经同步根端口重新选择”标志,并且本地其他端口也全部同步完毕时,根端口直接迁移到转发状态;
9. 当上游指定端口需要迁移到转发状态时,指定端口会向下游发送同步请求消息,此时下游根端口需要向本地所有端口和系统内其他设备发送同步信号,同步信号也是通过同步消息逻辑通道广播给其他所有设备;
10. 当设备收到该同步信号后,在本地执行同步动作,根据需要阻塞潜在冗余端口。同步完毕后,设备会向根端口所在设备发送同步完毕消息;
11. 当根端口所在设备收到系统内其他所有设备的同步完毕消息,并且本地其他端口也已经全部同步完毕,则根端口将向上游指定端口响应同步应答消息;
12. 上游指定端口收到同步应答消息后,会直接迁移到转发状态;
13. 当系统内的某台设备发现拓扑变化或者收到拓扑变化消息,会通过同步消息逻辑通道向其他所有设备发送拓扑变化消息,设备收到该消息后会刷新本地的地址转发信息。
总结
华为3Com的“IRF之分布式二层协议”技术是业界首次真正实现了以太网交换机的常用二层治理协议的分布式运算,做到了对外表现为一台设备,内部独立计算的机制,并且其中的一台或几台设备故障时,其它设备仍然能够不间断运行,真正以低成本实现了高可扩展性、高可靠性、易于治理和运营的弹性网络。