刘璟纬,陈钱
(南京理工大学江苏南京210094)
基于源抑制表项防止堆叠报文成环的实现方法
刘璟纬,陈钱
(南京理工大学江苏南京210094)
IRF虚拟化堆叠技术能够简化组网结构,提高网络稳定性。但是当堆叠的拓扑结构为三台以上的设备环形连接时,会导致报文成环进而影响整个网络的稳定性。基于防止堆叠系统报文成环的目的,文章从堆叠系统内部的流量走向入手,通过分析四框环堆系统的流量转发路径,提出了源抑制表项的算法,成功阻止了报文成环,并用此算法解释了两框堆叠无法形成环形连接的原因。最后通过实验证明此算法的可行性,并提高了堆叠技术的稳定性。
堆叠;虚拟化;源抑制表项;报文成环
IRF(Intelligent Resilient Framework,智能弹性架构)是一种的软件虚拟化技术,它的核心思想是将多台设备连接在一起,进行必要的配置后,虚拟化成一台设备。使用这种虚拟化技术可以集合多台设备的硬件资源和软件处理能力,实现多台设备的协同工作、统一管理和不间断维护。为了便于描述,这个“虚拟设备”也称为IRF[1]。
IRF虚拟化堆叠系统由多台分布设备虚拟而成,具有连接灵活、简化网络运行、强大网络扩展能力、科学冗余等优点[2]。通常堆叠的物理连接分为链形连接和环形连接两种,对于环形连接的堆叠系统,如何防止源设备发出的报文经过环路回到源设备从而导致报文成环,是堆叠功能实现过程中必须解决的问题。
IRF堆叠在形成基本系统之前,需要经过物理连接、拓扑收集、角色选举等一系列阶段,当这些阶段结束之后,整个IRF系统才形成,所有的成员设备组成一台设备存在于整个网络中。
如果IRF堆叠系统需要正常运转,则需要先将堆叠的成员设备进行物理连接。设备上用于堆叠连接的物理端口称为堆叠物理端口。可以将堆叠物理端口配置成为堆叠口,堆叠口是一种逻辑接口。一个堆叠口可能对应一个堆叠物理端口,也可能由多个堆叠物理端口聚合[3]形成(称为聚合堆叠口)以达到链路备份的效果。同一台设备上,堆叠口的编号规定只能为1和2,有时我们也将1和2堆叠口分别称为左口和右口。在华三公司高端路由器SR88的设备中,堆叠口在88X型号设备上规定是线卡板上的物理端口,而在88XS型号的设备上则规定是主控板上的物理端口。
堆叠物理端口之间可以使用专用线也可以使用光纤连接[4]:专用线具有更高的稳定性和可靠性;光纤可以将距离很远的物理设备连接成为一个虚拟设备,使得应用更加灵活。
通过物理端口进行连接的堆叠拓扑有以下两种[4]:
1)链形连接:使用堆叠电缆将一台设备的左口(右口)和另一台设备的右口(左口)连接起来,依次类推,第一台设备的右口(左口)和最后一台设备的左口(右口)没有连接堆叠电缆。这种连接方式称为链形连接,如图1所示。
2)环形连接:将链形连接第一台设备的右口(左口)和最后一台设备的左口(右口)连接起来,这种连接方式称为环形连接[5],如图1所示。
环形连接比链形连接更可靠,当环形链路中有两台设备的连接出现问题时,堆叠系统依然能够维持正常状态;当链形链路中任意两台设备的连接出现问题时,会引起堆叠分裂。
图1 堆叠的物理连接示意图
堆叠系统中的每台相邻的设备都是用过相互之间交互HELLO报文来整合整个堆叠的拓扑关系的。HELLO报文自身会携带拓扑信息,其中包括成员设备编号、堆叠口连接关系、成员设备的成员桥MAC、系统运行时间、成员设备优先级等内容[6]。
而堆叠系统在设备之间交互HELLO报文的时候,有时会因为HELLO报文超时而导致堆叠系统无法建立,此时需要完成以下检查[7]:
1)保证堆叠系统的堆叠口为左堆叠口与右堆叠口相连,而不是左口与左口相连或者右口与右口相连;
2)堆叠口是否已经切换成二层口;
3)进入bash使用命令more/proe/stm/message信息查看是否有“avtive up”关键字,此打印表明由于堆叠口多次检查出无效导致堆叠口再可用时驱动只会向平台报链路UP而不是堆叠口UP,此时只需要整框重启即可。
经过一段时间的收集,所有设备上都会收集到完整的拓扑信息(称为拓扑收敛)[8]。此时会进入角色选举阶段。
堆叠系统由多台堆叠成员设备组成,每台成员设备都会被分配一个固定的角色,即主设备(Master)或者从设备(Slave)[1]。确定成员设备角色的过程称为角色选举。
角色选举会在拓扑发生变化的情况下产生,比如:堆叠建立、新设备加入、堆叠分裂或者两个堆叠合并[9]。
角色选举阶段主设备(Master)还会负责成员编号冲突处理、软件版本加载、堆叠合并管理等工作。
堆叠系统建立过程中,系统首先进行拓扑的收集,之后根据角色选举的规则进行角色选举。处理成功后,堆叠系统才能形成和正常运行[10]。
从堆叠切换成非堆叠模式,需要使用undo chassis convert mode命令,此接口调用DRV_ST ACK_GlobalCtl,下的命令是9号STACK_SET_STA CK_MODE;传入参数为0。
从非堆叠切换成堆叠模式,先设置框号irf mem mem-id;再使用chassis convert mode命令切换成堆叠模式;此过程在chassis convert mode先下9号命令字,传入参数1;再下2号命令字,传入的参数为之前设置的框号。
当前华三的高端路由器SR88设备已经支持堆叠系统通过4台相同型号的设备进行环形连接,称为4框环堆。
当堆叠系统由4台设备进行环形连接时,我们需要清楚流量在这4台设备之间的转发路径是如何形成的。如图2所示,4台设备进行环形堆叠,设备1的1/2端口与设备2的2/1端口连接,设备2的2/2端口与设备3的3/1端口连接,设备3的3/2端口与设备4的4/1端口连接,设备4的4/2端口与设备1的1/1端口连接,这样就形成了四框环堆的拓扑。此时,还可以通过dis irf topo再次确认拓扑形态[11]。
图2 四框环堆的拓扑图
当前在设置转发表项时,首先各设备计算自己的转发路径,其转发路径计算算法[12]为:1)分别遍历左右堆叠口,计算堆叠设备间相应跳数记录到数组中;2)遍历数组,比较左右堆叠口跳数值,取较小值所在堆叠口作为最短路径的出端口;3)当左右堆叠口跳数相等时,框号大则选取右堆叠口,框号小则选取左堆叠口.因此得出转发路径的形式如表1所示。
表1 报文的转发路径形式
使用如下命令查看堆叠转发路径,该命令表示设备1去往设备2的报文应该从1号堆叠口(即1/1)出,去往设备3、4的报文应该从2号堆叠口(即1/2)出。这条路径由当前的组网计算出来:
中端为了防止报文成环,如设备1口发出的报文,又从自己的端口2收到了,并再次从端口1发出;或者从端口1发出的报文,绕成一个圈后,又从自己的端口1收到了。为此,中端通过源抑制表项来进行报文丢弃[13]。
根据转发路径和源抑制表项算法:1)堆叠口在转发路径上,或者目的框不可达,则不设置源抑制;否则,设置堆叠口源抑制;2)对于包含未配置恢复设备的环形拓扑,如果本设备就是指定的未恢复配置设备,对于连接相邻目的框设备的堆叠口不设置源抑制;3)框左右堆叠口其中有一个堆叠口状态不为转发态,不设置源丢弃;4)任何情况下,设置本框的源丢弃[14]。
在图2的设备1上可以如表2所示的源抑制表项。
表2 源抑制表项
上表表示对于设备1,从堆叠口1收到的报文,要做源丢弃检测,如果报文的源为设备1,设备4就需要丢弃;对从堆叠口2接收到的报文,如果源为设备1、2、3,就直接丢弃。
即有以下两个原则:
①源为本设备自己的报文,丢弃;
②如果到某设备的转发路径走的是堆叠口1,就需要在另一个端口设备对该设备的源丢弃。
这样就可以保障任何情况下,都不会出现环路的可能。
上述的算法在3框和4框环堆上可以很好的工作,但在两框环堆上会直接导致有一条链路因源路抑制表项而不可用,且该链路可计算出来[15]。设框号为X和框号为Y的两台设备,其中X<Y,如图3所示。根据转发路径计算规则:因为X和Y到达对方均只需要1跳,而X<Y,则设备X会选择P1口作为其转发路径,设备Y选择P2口作为其转发路径;可以看到设备X和设备Y选中X(P1)----Y(P2)这条路径;而在X(P2)----Y(P1)这条路径上会因为端口上设置了源抑制表项,将来自对框的报文过滤掉,包括HELLO报文;
设备X的源抑制表项情况如表3所示(Y表示设置源抑制,N表示不设置)。
设备Y的源抑制表项情况如表4所示。
四框环堆系统通过较大程度地强化系统的网络拓展能力,并且相比于链形连接,此系统在一条堆叠链路故障的情形下仍然能够正常工作,具有较高的稳定性[16]。但是对于环堆时遇到的报文转发成环的问题,本文根据四框环堆报文的转发路径算法,提出了通过下发源路抑制表项的算法对报文成环问题进行了抑制,并成功解释了为何两台设备无法进行环形堆叠的原因。最后经过实验验证,此方法切实可行。
图3 两框环堆的拓扑图
表3 设备X的源抑制表项
表4 设备Y的源抑制表项
[1]刘静波.设备虚拟化关键技术研究[D].郑州:解放军信息工程大学,2011.
[2]张卫东.新一代数据中心网络虚拟化的IRF技术研究[J].电脑知识与技术,2011,7(36):9375-9377.
[3]郭春梅,孟庆森.服务器虚拟化技术及安全研究[J].信息网络安全,201l(9):35-37.
[4]张剑飞.大规模数据中心可扩展交换与网络拓扑结构研究[D].长春:吉林大学,2013.
[5]沈波,刘旭林,刘亚楠.基于VSS技术的万兆以太网升级方案设计与实现[J].成都信息工程学院学报,2012,27(2):162-167.
[6]陈丽佳.网络设备IRF虚拟化堆叠技术的研究与实现[D].南京:南京邮电大学,2011.
[7]章筠.计算机网络可靠性分析与设计[D].杭州:浙江大学,2012.
[8]王芳,李勇,周烨,等.基于分层抽象思想的虚拟化网络实现平台设计[J].清华大学学报,2012,52(11):1535-1539.
[9]秦学东,陈大庆,崔晓松.基于开源虚拟化的高可用服务器架构[J].现代图书情报技术,2011(6):46-50.
[10]祝陈,陈新来,蒋朝阳.浅谈交换机的级联与堆叠的不同应用[J].数字技术与应用,2010(5):93.
[11]陈光礼.基于堆叠系统业务不中断升级的设计与实现[D].重庆:重庆大学,2014.
[12]李清固.数据中心安全网络虚拟化[J].信息安全与技术,2012(10):77-79.
[13]鹿南南.通信设备智能弹性架构系统的设计与实现[D].西安:电子科技大学,2011.
[14]陈光礼.基于堆叠系统业务不中断升级的设计与实现[D].重庆:重庆大学,2014.
[15]钱欢.虚拟化堆叠技术研究与实现[J].电子测试,2013(18):70-71,51.
[16]董红茹.数据转发不间断技术实现原理及应用[J].电脑编程技巧与维护,2011(21):20-24.
Method of preventing message looping of stack based on source quench entry
LIU Jing-wei,CHEN Qian
(Nanjing University of Science and Technology,Nanjing210094,China)
Virtual stack system is able to simplify the network structure and improve network reliability.However,when the topology of stack contains 3 or more device of loop connection,it will cause message looping and affect the network reliability.Based on the purpose of preventing the message looping of stack,this paper starts from the flow direction of stack.By analyzing the message forwarding path,this paper puts forward the algorithm of source quench entry to prevent the message looping and explains the reason why the stack of 2 device cannot make the loop connection.Finally,it proves the feasibility of the algorithm by means of experiment and improves the network reliability.
stack;virtualization;source quench entry;message looping
TN919
A
1674-6236(2017)23-0109-04
2016-10-27稿件编号:201610169
刘璟纬(1992—),男,江苏南京人,硕士研究生。研究方向:网络通信技术。