基于LACP多激活检测方法和处理机制的研究
2013-08-10王培英肖志辉李本源
王培英,肖志辉,李本源
(1.西南交通大学信息科学与技术学院 成都 610031;2.迈普通信技术股份有限公司 成都 610041)
1 引言
随着互联网业务类型的不断增多和用户数的不断增长,网络承载的数据业务流量越来越大。实时通信对服务质量的要求也不断提高,导致网络的高可用性日益成为网络使用者关注的焦点,因此如何提高网络可用性是目前最热门的话题之一。网络的可用性可通过以下3种方法提高:
·增加网络拓扑中的冗余节点和备份设计;
·增加网络设备自身冗余部件和热备份机制设计;
·增加网络中传输线路备份设计。
目前,传输线路备份设计是提高网络可用性的必备方法,其中应用最广泛的技术为生成树协议(STP)和链路聚合(link aggregation)。生成树协议通过阻塞某些链路达到传输线路备份的目的,属于链路间冗余设计;链路聚合通过聚合技术提供逻辑链路内的冗余方案,不但没有阻塞某些链路,而且扩展了逻辑链路带宽,已成为网络部署者必采用的组网方案。
链路聚合技术的实质是将两台设备间的多条物理链路组合成一条逻辑链路,称为链路聚合组(link aggregation group,LAG),链路聚合组中的端口称为成员端口。
链路聚合组分为静态聚合组和动态聚合组。静态聚合组内的成员端口禁止启动LACP(link aggregation control protocol,链路聚合控制协议),因此不与对端交互LACPDU(link aggregationcontrol dataunit,链路聚合控制协议数据单元);动态聚合组内的成员端口启动LACP,与对方交互LACPDU。
目前,层次化的网络结构一般分为核心层、汇聚层和接入层。网络中主要存在两种形态的交换机通信设备:盒式设备和框式分布式设备。由于框式分布式设备具有高性能、高端口密度的组件及高可用性,因此经常被应用于重要场合,如核心层、汇聚层。汇聚层与接入层之间的常见组网方式如图1所示。
图1 汇聚层与接入层之间的简化组网示意
因为增加网络拓扑中的冗余节点和备份设计可以提高网络的可用性,所以在部署网络环境时,通常在汇聚层部署两台交换机,两台交换机之间使用两条物理链路相连,然后所有接入层交换机都通过两条链路分别与汇聚层交换机相连。
当采用这种网络结构进行2层技术组网时,设计了一些冗余链路,虽然增强了网络的可靠性,但导致网络出现了环路,因此必须配置MSTP阻塞一些链路,达到消除环路的目的,这样就导致这些阻塞链路的带宽没有被利用,从而造成带宽资源的浪费。在实际应用中,MSTP往往由于设备故障或者链路中断等原因发生拓扑震荡,且MSTP的收敛时间较长,可能在收敛时间内导致网络不能传输业务流量,从而影响网络的服务质量。
当采用这种网络结构进行3层技术组网时,通常采用VRRP实现冗余备份。当处于主控(master)状态的交换机发生故障时,处于备份(slave)状态的交换机将切换成主控状态,切换时间一般为几秒钟,在故障恢复时间内仍会导致网络不能传输业务流量。同时VRRP会导致网络拓扑复杂,给网络维护者带来管理困难等问题。
为了克服上述问题,近年来业界一些设备厂商提出了针对框式分布式设备应用的虚拟交换技术(virtual switching technology,VST)。
2 虚拟交换技术
虚拟交换技术是一种基于内部分布式交换网络,把多台物理设备虚拟为一台虚拟设备的技术。如图2所示,汇聚层的两台设备通过虚拟交换链路 (virtual switching link,VSL)连接,形成一个虚拟交换域(virtual switching domain,VSD),接入层的设备通过跨设备链路聚合,上联到虚拟设备。
2.1 VST概述
虚拟设备内的成员设备有两种角色:主控设备负责整个虚拟设备的管理和控制,备份设备负责本地设备的基本硬件管理,并接受主控设备的管理和控制。虚拟设备内每一个成员设备都需要一个成员编号 (member ID)进行唯一标识。虚拟设备内每个成员设备都有一个成员优先级,优先级越高(数值越大),当选为主控设备的可能性越大。
图2 虚拟化视图
VSL是两台成员交换机之间,由一条或者多条物理链路聚合而成的逻辑链路。当多台设备通过VST形成一台虚拟设备时,该虚拟设备根据选举规则,先选举出主控设备。主控设备使用自己的启动配置文件启动,启动完成后,将配置批量同步给所有备份设备,使主控设备完成初始化,至此,虚拟设备形成。
虚拟设备运行过程中有新的成员设备加入时,虚拟设备也会将配置批量同步给新设备,新设备以同步过来的配置完成初始化,而不再读取本地的启动配置文件[4]。
所有设备初始化完成后,虚拟设备作为一台逻辑设备在网络中运行。主控设备作为虚拟设备系统的管理中枢,负责响应用户的登录需求,即用户无论使用何种方式登录虚拟设备中的成员设备,其实质都是登录到主控设备;对成员设备的配置,其实质都是对主控设备进行配置。主控设备负责将用户的配置实时同步给虚拟设备内的各个备份设备,使虚拟设备内各成员设备的配置随时保持高度一致性[4]。
VST因具有以下优势而逐渐被广泛使用。
(1)高可靠性
虚拟设备的成员设备间采用VSL聚合相连,接入层设备通过跨设备链路聚合与虚拟设备相连,既提供了冗余链路,又实现了动态负载均衡,充分利用所有带宽。
(2)简化网络拓扑
通过VST形成的虚拟设备在网络中相当于一台设备,该虚拟设备通过跨设备链路聚合与下联设备相连,由于不存在环路,所以无需配置MSTP和VRRP。各种控制层协议运行在一台虚拟设备上,减少了设备间大量协议报文的交互,缩短了路由收敛时间。
(3)简化管理
两台或者多台设备形成一台虚拟设备后,管理员可以对多台设备进行统一管理,即管理员登录虚拟设备内的任意一台成员设备,即可对虚拟设备中的多台设备进行配置和管理。
2.2 VST分裂和多激活
当虚拟设备内的VSL链路出现故障,导致两个相邻成员设备在物理上不连通时,一个虚拟设备变为两个虚拟设备,这个过程称为VST分裂。
由于虚拟设备中各成员设备的配置信息实时高度一致,因此网络中将会出现配置完全相同的两台设备,这将导致业务流量无法正确转发和选路,如图3所示,两台设备配置了完全相同的IP地址,出现IP地址冲突,导致3层网络不可使用,这种现象称为多激活(multi-active)。
图3 虚拟设备分裂和多激活产生示意
因此,当虚拟设备发生分裂时,保证网络正常运行对VST技术的快速发展是非常重要的。
如何快速检测多激活的产生以及检测到多激活后应如何解决其给网络带来的影响问题是本文研究的重点。本文介绍了一种可较快速检测多激活的快速多激活检测(multi-acitve detection,MAD)方法和可有效保证网络业务正常运行的高效多激活处理方法。
3 基于LACP的多激活检测方法和处理机制
3.1 多激活检测方法
多激活检测方法就是通过某些手段检测到多激活。业界一些厂商提出的比较常见的多激活检测方法有以下两种。
(1)基于BFD的多激活检测(BFD MAD)方法
该方法实现的前提条件是,在一个VLAN虚拟接口配置BFD和主从MADIP地址。虚拟设备正常运行时,只有主控设备上配置的MADIP地址生效,BFD会话处于down状态;当VST分裂后会形成两个虚拟设备,不同虚拟设备中主控设备上配置的MAD IP地址均会生效,BFD会话被激活,此时检测到多激活。基于BFD的多激活检测方法需要占用端口资源,使用专用的检测端口和3层VLAN接口,从而使这些端口和接口不能再用于传输普通业务流量。
(2)基于 LACP 的多激活检测(LACPMAD)方法
该方法通过扩展LACP报文内容实现。实现的前提条件是,虚拟设备与周边设备采用动态汇聚方式相连,借助业务动态汇聚组成员端口发送LACPDU报文实现多激活检测,不占用额外的设备端口资源。
网络管理者需要根据实际网络环境部署多激活检测方法。在设备端口资源紧张的情况下,LACPMAD检测方法彰显出优势。
3.2 基于LACP的多激活检测原理
第2节提及,虚拟设备采用跨设备链路聚合与接入层设备相连。如果采用动态聚合方式,那么接入层设备会与虚拟设备交互LACPDU报文。
LACPMAD通过扩展LACPDU报文实现,即在LACPDU的扩展字段内定义一个新的TLV(typelength value)数据域,用于交互虚拟设备的MAD ActiveID(以下简称ActiveID,表示虚拟设备中主控设备的成员编号)。
(1)LACPMAD 报文格式
LACPMAD报文格式如图4所示。
图4 LACP MAD报文格式
其中,MAD DomainID为虚拟交换域,MAD ActiveID为当前虚拟设备内主控设备的成员编号,MAD Bridge MAC为虚拟设备的桥MAC地址。
(2)LACPMAD 检测机制原理
虚拟设备中各成员设备开启LACPMAD功能后,在发送LACPDU时会携带MADTLV扩展域,其中最重要的字段是ActiveID,此值在一个虚拟设备内具有唯一性,非虚拟设备内的设备在收到带有MAD TLV的LACPDU后,会将此报文向聚合组中的其他成员端口进行透传。虚拟设备正常工作时,通过这种方式,虚拟交换系统中的所有成员设备都能收到其他成员设备发送的带有MADTLV的LACPDU,其中备份设备将收到的带有MAD TLV的LACPDU通过VSL发送到主控设备,由主控设备统一处理。主控设备在对接收到的LACPDU进行处理的过程中,发现各成员设备发送的LACPDU具有统一的ActiveID,则认为虚拟设备正常。虚拟设备正常运行时ActiveID的交互如图5所示。
图5 虚拟设备正常运行时ActiveID的交互
当虚拟设备发生分裂时,一个虚拟设备变为两个虚拟设备,不同虚拟设备内的成员设备发送的LACPDU携带的ActiveID不同。当这些LACPDU到达其他虚拟设备的主控设备时,主控设备通过比较发现AciveID与自身的ActiveID不同,即检测到多激活,具体如图6所示。同时动态汇聚组的各成员端口会迅速发送LACPDU报文,便于其他虚拟设备在最短的时间内快速检测到多激活。
3.3 多激活处理
检测到多激活后,主控设备将从接收的MAD TLV中解析出ActiveID,并按照下述算法步骤判断本虚拟设备是否进入禁用状态。
(1)比较虚拟设备运行时间:主控状态运行时间小的虚拟设备进入禁用状态,执行步骤(4)。如果各虚拟设备的主控运行时间相等,则执行步骤(2)。
图6 虚拟设备分裂后ActiveID的交互
(2)比较成员优先级:主控成员优先级低的虚拟设备进入禁用状态,执行步骤(4)。如果各虚拟设备的主控成员优先级相同,则执行步骤(3)。
(3)比较主控的成员编号:主控成员编号大的虚拟设备进入禁用状态,执行步骤(4)。
(4)进入禁用状态的虚拟设备需要完全从网络中移除,相关动作如下:
·关闭该虚拟设备上所有业务的以太端口(包括检测端口);
·关闭该虚拟设备上的所有VLAN接口。
经过步骤(4)的处理之后,网络环境中不会出现两台配置相同的虚拟设备同时运行的情况,确保了网络业务的正常运行。
3.4 实验过程
检验上述LACPMAD方法及处理机制的实验环境,验证过程具体介绍如下。
实验环境:两台支持VST的交换机A和交换机B,一台支持MAD LACP报文透传的交换机C。物理连接如图7所示。交换机A和交换机B之间通过支持VSL的端口相连;交换机C通过普通业务端口分别与交换机A和交换机B相连。
图7 实验环境
配置及操作步骤具体介绍如下。
(1)在交换机A和交换机B上,完成VST的基本配置,使两台设备形成一台虚拟设备。
(2)在主控设备上配置动态聚合组,并将与交换机B和交换机C相连的端口加入聚合组;在交换机C上配置动态汇聚组,并将与交换机A和交换机B相连的端口加入聚合组。
(3)在主控设备上开启该聚合组的LACPMAD功能。
(4)将VSL断开,模拟VST分裂。
观察交换机C上与交换机B相连接的端口的物理链路状态是否为down,即端口的up指示灯是否由亮变灭。若为down,表示多激活检测成功,处于禁用状态的交换机B将业务端口关闭。
4 结束语
按照上述实验过程,经过测试发现,本文提出的多激活检测方法可以检测到多激活发生;在检测到多激活后,通过多激活处理方法计算选择处于禁用状态的虚拟设备,并将该虚拟设备的所有业务端口关闭,可解决网络中出现两台配置相同的虚拟设备后,引起的网络瘫痪问题。由此保证了网络的正常运行,对于推进VST的快速发展和应用具有重要意义。
另外,通过实际应用环境发现,在VST分裂到多激活被检测到的时间段内,网络仍处于瘫痪状态,仍会导致网络短时间内业务中断,这是网络使用者不能接受的。因此缩短业务中断时间、提高LACPMAD多激活检测的速度仍是后续工作和学习中需要继续探讨和研究的内容。
1 陆敏飞.链路聚合技术在分布式以太网交换机上的研究与实现.浙江工业大学硕士学位论文,2009
2 Mark A D,McDonald R,Antoon W R.Nework Fundamentals CCNA Exploration Companion Guide.Cisco Press,2009
3 Wayne Lewis,Ph D.LAN Switching and Wireless CCNA Exploration Companion Guide.Cisco Press,2009
4 杭州华三通信技术有限公司.IRF2.0技术白皮书,2009
5 杭州华三通信技术有限公司.H3CS12500IRF2技术白皮书,2012
6 迈普通信技术股份有限公司.VST技术白皮书(V0.2),2011
7 Cisco.Cisco Catalyst 6500 Series Virtual Switching System(VSS)1440 White Paper,2010
8 锐捷网络.锐捷VSU技术白皮书,2011
9 IEEE 802.1AX.IEEE Standard for Local and Metropolitan Area Networks-Link Aggregation,2008