快速以太环网保护切换技术研究
2012-06-27何三波罗向征李罗洪
何三波,罗向征,李罗洪
(迈普通信技术股份有限公司 成都 610041)
1 引言
在以太网技术中,STP(spanning tree protocol,生成树协议)是一种经典的以太网环网保护协议,随着以太网的发展而不断改进和完善,由于需要处理更复杂的网络拓扑,所以STP很复杂,STP网络收敛时间一般是秒级的,并且环上节点数量会影响网络拓扑收敛速度,节点越多,网络收敛速度越慢。因此,STP不能满足电信级以太网不大于50 ms的网络拓扑收敛速度要求。目前MSTP(multiple spanning tree protocol,多实例生成树协议)是生成树协议中应用最广泛和网络收敛速度最快的。
为了解决以太环网网络拓扑收敛速度不能满足50 ms的问题,EAPS(ethernet automatic protection switching)协议应运而生。在RFC 3619中对EAPS协议技术规范进行了描述,EAPS协议需要用户对环上设备定义主节点、传输节点两种角色,并在节点上定义主端口和副端口。这种实现方式不仅存在安全隐患,而且可靠性也不高。例如,如果主节点的控制面崩溃,可能导致以太环网上数据广播风暴,引起用户网络瘫痪。
思科的私有环网协议REP(resilient ethernet protocol)也可以基本满足50 ms的网络拓扑收敛要求,并且提供了友好的网络拓扑界面展示,REP在思科交换机产品的技术白皮书中有详细描述,虽然REP比STP简单,但仍然相对较为复杂。
EAPS协议和REP都能满足50 ms的电信级数据切换要求,这些切换速度比较快的以太环网协议称为快速以太环网协议,并且具有较高的安全性和可靠性。
本文将在STP和EAPS协议的基础之上,提出一种新的快速以太环网技术,其主要特征是动态选举主节点。
2 EAPS协议基本原理
如图1所示,EAPS环由一个主节点交换机和若干个传输节点交换机在物理上相连接而成。每个节点都有两个端口与EAPS环相连接,其中的一个为主端口,另一个为副端口。主副端口的角色由用户配置决定。专门分配一个VLAN给主端口和副端口,EAPS协议报文通过此VLAN传输,称此VLAN为EAPS的控制VLAN。
如图1所示,EAPS环中,交换机S1为主节点,其他交换机称为传输节点。当EAPS环网无故障时,主节点把副端口的数据VLAN阻塞,这样做的目的是防止环上出现用户数据环路,对用户数据进行保护;若EAPS环网发生故障,则主节点把副端口的数据VLAN打开,让它可以转发数据,这样做的目的是对用户数据进行切换。
传输节点的主端口和副端口在功能上完全对等。
2.1 EAPS环故障处理
当某个传输节点发现它的一个EAPS端口对应线路故障时,将从另一个端口向主节点发送环路故障报文,主节点收到环路故障报文后,刷新主端口的转发表,将副端口的数据VLAN设置为转发状态,并向所有传输节点发送故障刷新报文,传输节点收到故障刷新报文后,将刷新自己的主端口和副端口的转发表。
为了防止环路故障报文被丢弃,主节点还从主端口周期性地发送Hello报文,此报文在环路上透传,最后回到主节点的副端口。如果主节点在副端口上连续多次(默认为5次)收不到Hello报文,主节点将认为环路出现故障。
2.2 EAPS环故障恢复
EAPS环处于故障状态时,主节点如果重新从副端口接收到自己发出的Hello报文,则认为环路恢复,重新阻塞副端口的数据VLAN,并向所有传输节点发送恢复刷新报文。
协议实现中,当某个传输节点先于主节点识别到链路恢复,该传输节点如果立即将相应端口的数据VLAN打开,将会出现一段时间的数据环路。为避免这种情况,传输节点在发现链路恢复时,不会立即打开相应端口的数据VLAN,这种状态称为临时阻塞状态,此状态一直持续到收到主节点发来的恢复刷新报文或者临时阻塞定时器超时。
3 动态选举主节点以太环网协议
EAPS协议中,主节点和传输节点的角色由用户静态配置,一旦配置确定,主节点角色一直固定直到用户配置修改,这种实现方式的主要问题包括:给攻击者提供了更多攻击主节点的机会;主节点控制面崩溃而数据面通信正常时,极可能导致数据环路广播风暴;同时在实际应用过程中,配置也相对麻烦。
针对EAPS协议存在的上述问题,笔者结合STP根节点动态选举特点,提出对一种EAPS协议优化方案,结合EAPS和STP两者的优势,在保留EAPS协议故障快速恢复能力的同时,增加了主节点动态选举的能力。新协议在网络安全性、可靠性和配置易用性方面对EAPS协议有了显著改进。
3.1 基本原理
在本环网协议中,环上节点角色都定义相同,没有主节点和传输节点之分,节点经过环上的两个端口分别定义成主端口和副端口。在环上使用一个VLAN传输协议报文,称此VLAN为控制VLAN。主端口和副端口需要加入控制VLAN。协议在运行过程中通过简单计算选举出唯一主节点,主节点对环网上的用户数据进行保护和切换。
协议报文格式可以借鉴EAPS协议报文格式,报文由报文头部字段PKT_Head和数据字段data两部分构成,如图2所示。
报文中头部字段的各字段简要说明如下。
目的 MAC地址字段(Dst_mac):通信检测报文、选举报文、环路故障报文和转发表刷新报文分别使用不同的目的MAC地址。
源MAC地址字段 (Src_mac):使用设备的二层MAC地址作为协议报文的源MAC地址。
优先级字段(Pri):高1位保留,低3位作优先级。协议报文在线路忙时也不能丢弃,因此优先级字段需要设置成7。
Vlan字段:填写控制VLAN。
报文长度字段(Frame_len):以太报文长度。
协议数据长度字段(dataLength):报文数据长度。
报文类型(Type):Type=1,表示通信检测报文,数据字段在3.2节中进行描述;Type=2,表示选举报文,数据字段在3.3节中进行描述;Type=3,表示环路故障报文,可以无数据字段;Type=4,表示故障刷新报文,可以无数据字段;Type=5,表示故障恢复刷新报文,可以无数据字段。
其他字段为特征值,固定不变。
节点对协议报文转发策略的设置:所有节点设置通信检测报文上控制平面;主节点设置选举报文、环路故障报文和转发表刷新报文上控制平面;传输节点设置选举报文和环路故障报文不上控制平面,数据平面转发,设置转发表刷新报文上控制平面且数据面转发。
3.2 邻居检测
在用户定义节点的主端口和副端口时,对端口进行主节点配置,并且在主端口和副端口上阻塞数据VLAN。
如图3所示,使用设备的6 byte二层MAC(简称为L2_MAC)地址和16 bit端口ID(简称为PID)组合形成通信检测ID(CID,通信检测号)。
如图4所示,通信检测报文中含有本地CID和对端CID,分别记为L_CID和R_CID。
如图5所示,交换机S1和S2是环上相邻的两台交换机。当S1和S2之间的线路信号正常时,S1和S2对发检测报文。在S1未接收到S2的通信检测报文时,S1向S2发的通信检测报文中L_CID为S1的L2_MAC地址和端口P1的PID,R_CID为0。在S2未接收到S1的通信检测报文时,S2向S1发的通信检测报文L_CID为S2的L2_MAC地址和端口P2的PID,R_CID为0。
S1接收到S2的通信检测报文后,从报文中学习到S2的L_CID,后续发给S2的通信检测报文中的R_CID字段就填写S2的L_CID。S2的处理同S1。
S1接收到S2的通信检测报文中的R_CID与S1的L_CID相等时,S1认为S1和S2之间通信正常。S2接收到S1的通信检测报文中的R_CID与S2的L_CID相等时,S2认为S2和S1之间通信正常。
S1和S2通信正常后,S1和S2仍然对发通信检测报文。
若S1在规定的一段时间内没有接收到S2的通信检测报文,则S1认为S1和S2之间通信出现故障,并且需要将学习到的S2的L_CID清0。
如果S1在规定的一段时间内接收到的S2的通信检测报文中的对端CID与本地的CID不相同,认为S1到S2方向的通信出现故障。
当然,邻居之间的通信检测并不局限于上述方法。
3.3 主节点选举
在邻居之间的线路通信正常后开始选举主节点,每个节点都被认为是主节点,直到选举成为传输节点。
节点之间通信正常后,若节点的选举ID为0,则节点生成一个2 byte的随机数RND,由2 byte的随机数和6 byte L2_MAC地址组合形成 8 byte选举 ID(EID),选举报文中包含8 byte EID字段,如图6所示。
由于任意两个节点交换机的L2_MAC地址不相同,所以,任意两个节点交换机的EID也不相同。
节点之间对发选举报文。
一个节点从一个端口上收到环上某个节点的选举报文后,比较本地的EIDL和对端的EIDR。
若EIDL 若EIDL>EIDR,则该节点需要继续周期地发送选举报文,若此节点的两个端口的通信都正常,则阻塞最后通信正常端口上的数据VLAN,若有一个端口通信不正常,则阻塞该端口上的数据VLAN。 最后,如果环路完整,某个节点最后收到自己发出的选举报文,则该节点是选举出来的主节点,将EID清0,转到预完整状态。再过一段时间若没有收到环路故障报文,则由预完整状态转到完整状态,向环上发送环路恢复刷新报文,传输节点收到环路故障刷新报文,需要刷新转发表,并且把EID清0。 下面结合图例进行详细说明。 如图7所示,S1和S2之间的选举,S1和S2之间通信正常以及S2和S3之间通信正常后,S1生成选举EID1,S2生成 EID2,S3 生成 EID3,假设 EID1>EID3>EID2。 S1收到 S2的选举报文后,检测到 EID1>EID2,S1继续周期地发送选举报文;S2接收到S1的选举报文,检测到EID2 如图8所示,当S2作为传输节点后,不再发送选举报文,但要透传其他节点的选举报文。这样,S1会收到S3的选举报文,S3也会收到S1的选举报文,EID1>EID3,选举S3作为传输节点。S1继续周期地发送选举报文。 按照这样选举下去,如果环完整,则会选举出一个主节点,环上EID最大的节点将成为主节点,其他节点成为传输节点。 如图9所示,在环路完整的情况下,传输节点S2和S3之间线路出现故障,S2和S3检测到线路故障后,将向主节点发送环路故障报文,向环上其他节点发送故障刷新报文,设置两个端口选举报文、环路故障报文和转发表刷新报文上控制平面。S2和S3需要阻塞故障端口上的数据VLAN和控制VLAN。S2和S3都被认为是主节点,对端口作主节点配置,S2生成选举ID为EID2,S2通过正常端口发送选举报文;S3生成选举ID为EID3,S3通过正常端口发送选举报文。假设EID2 主节点S1收到环路故障报文后,打开其阻塞端口上的数据VLAN,刷新主端口和副端口的FDB(forwarding database,转发数据库)表,S1作为传输节点,对端口进行传输节点配置,S1透传选举报文和环路故障报文。 S2和S3将会收到对方的选举报文,由于EID2 如图10所示,如果S2和S3之间的线路通信恢复,S2打开端口P1上的控制VLAN,S3打开端口P2的控制VLAN。由于EID2 S3将会收到自己发出的选举报文,成为主节点,继续阻塞端口P2上的数据VLAN。转到预完整状态,停止发送选举报文,一段时间后转到完整状态,向环上发送恢复刷新报文,把EID清0。传输节点S2收到恢复刷新报文后,需要把选举ID清0。其他传输节点接收到恢复刷新报文时刷新转发表,并把EID清0。 在此环网协议中,控制面处理协议报文开销低,节点检测到正常通信后能很快进入工作状态。在单点故障恢复后,环网拓扑不发生变化,环上数据并不发生链路切换,所以,单点故障恢复过程中数据报文无分组丢失。环网状态变化导致主节点变化,协议安全性高,可靠性高。 通过测试仪发送单向数据报文,网络拓扑发生变化时将丢报文,通过分组丢失字节数计算网络拓扑收敛时间。使用测试仪发送双向数据报文测试网络拓扑收敛时间,其原理和测试结果与单向数据流一致,下文不再赘述。 MSTP实验网络拓扑如图11所示,实验网络拓扑由4台交换机S1、S2、S3和S4组成吉比特以太环网。通过对S1、S2、S3和S4进行配置,使环网在无故障时阻塞S1上的P1端口。当网络拓扑发生变化时,测试数据的路径都要发生变化。 本文所述协议的实验网络拓扑也由4台交换机S1、S2、S3和S4组成吉比特以太环网。在环网无故障时到S2和S3之间线路断开的拓扑变化如图12所示,网络发生故障时,测试数据的路径将发生变化。 而S2和S3之间的单点故障恢复的网络拓扑变化如图13所示,实际上拓扑没有发生变化,测试数据的路径不发生切换。 表1是运行MSTP协议和本文所述协议在环网故障时网络拓扑收敛时间。 表2是运行MSTP协议和本文所述协议在环网故障恢复时网络拓扑收敛时间。 可以看出,本文所述协议的网络拓扑收敛时间都是毫秒级的,特别是单点故障恢复时拓扑收敛时间为0,而MSTP的网络拓扑收敛时间则在秒级。试验数据表明:本文所述协议在网络故障处理过程中,仍然满足50 ms的拓扑收敛速度要求,远优于与之对照的MSTP。在改善EAPS协议可靠性、安全性、配置易用性基础上,本协议对故障收敛处理没有任何不良影响。 表1 环网故障时拓扑收敛时间 表2 环网故障恢复时拓扑收敛时间 在STP和EAPS协议基础之上,本文提出了一种更灵活的动态选举主节点的以太环网协议,此环网协议安全性更高,可靠性更高,用户配置更简单,同时网络故障收敛时间也更优。 生成树协议太复杂,拓扑收敛速度慢,不能满足50 ms电信级的拓扑收敛要求,而EAPS协议等又太简单,在安全性和可靠性方面存在缺陷。随着以太网的进一步普及,比生成树协议简单而安全性和可靠性又比EAPS高的以太环网技术将不断提出并得到广泛应用。 本文所述动态选举主节点的环网协议,对于环上多点故障的处理还存在缺陷。因此,对本协议进行优化和改进以适用于多点故障处理是进一步的工作。 1 RFC 3619.EAPS:ExtremeNetworks’EthernetAutomatic Protection Switching,2003 2 中国通信标准化协会.以太网环路保护技术要求,20073.4 单点故障后协议的处理
3.5 单点故障恢复处理
3.6 实验数据
4 结束语