背景技术
当前典型的城域网组网方案中,在汇聚层通常采用环状方式进行设备间连接,同时将BRAS(Broadband Remote Access Server,宽带远程接入服务器)旁挂在汇聚层出口设备侧,用于用户认证、地址分配、计费等运营管理。这种组网方式具有较强的带宽扩展能力,同时也节约了大量的光纤资源。图1所示为一种城域网组网的示例结构,汇聚层由4个网络节点互连形成环网,其中两个汇聚层节点通过BRAS接入到核心网。用户由汇聚层节点接入城域网。
汇聚层通常采用二层网络,二层转发主要依赖MAC地址学习,由于大量的接入用户使得二层网络的规模越来越大,二层网络中设备需要学习的MAC地址也随之增长。而设备学习这些MAC地址所需的存储空间会大大增加其制造成本,从而增加城域网的构建和维护成本。
本申请人在中国专利申请200510093448中公开了一种减少MAC地址学习数量的方法,在环网以及树状网络的网络设备中根据端口属性进行VLAN(Virtual Local Area Network,虚拟局域网)的注册和老化,当网络设备上一个VLAN内的端口数量不超过两个时,就不再需要学习MAC地址,直接通过广播在二层进行报文转发,从而极大地节省了MAC地址表空间,这种方法称为HVRP协议。
为了使HVRP协议能够独立于二层网络所采用的冗余保护协议,如STP(Spanning Tree Protocol,生成树协议)、RSTP(Rapid Spanning Tree Protocol快速生成树协议)、RRPP(Rapid Ring Protection Protocol,快速环网保护协议)等,可以按照HVRP控制报文在二层网络中的转发路径运行HVRP协议,即以连通外部网络的节点为根桥,根据根桥向下游发送的Hello(握手)报文以及其他节点向上游发送的Register(注册)报文来确定节点的HVRP端口角色,按照HVRP端口角色运行HVRP协议,以减少二层网络节点需要学习的MAC地址数量。
可见,根桥对运行HVRP协议的二层网络的正常工作起着非常重要的作用,因此,现有技术中采用冗余的根桥来提供更好的可靠性。在HVRP实例中,至少两个配置为根桥的节点按照一定的机制确定其中一个为生效根桥,其余为退休根桥。退休根桥在其上行端口上老化其所在实例的VLAN,以确保该实例与外部网络之间的流量从生效根桥的上行端口通过。当生效根桥发生故障时,某个退休根桥升级为生效根桥。
现有技术中退休根桥只能检测到生效根桥的故障,当生效根桥与外部网络的连接链路发生故障而生效根桥正常工作时,不会发生生效根桥的切换。此时由于退休根桥的上行端口已经老化了所在实例的VLAN,将导致二层网络与外部网络的流量中断。
发明内容
本发明要解决的是生效根桥与外部网络的连接链路故障导致二层网络与外部网络流量中断的问题。
本发明所述提高二层网络与外部网络间流量可靠性的方法,该二层网络包括以不同链路连接外部网络的分层虚拟局域网注册协议HVRP生效根桥和退休根桥,所述方法包括以下步骤:
当HVRP实例的生效根桥检测到与外部网络的连接链路发生故障时,通知该实例的退休根桥升级为生效根桥;
原生效根桥转换为退休根桥。
优选地,所述原生效根桥转换为退休根桥包括:
原生效根桥将自身设置为所述实例的退休根桥;
在该实例的上行端口上老化该实例的用户虚拟局域网VLAN。
优选地,所述方法还包括:接收到升级通知的退休根桥转换为所述实例的生效根桥。
优选地,,所述退休根桥升级为生效根桥具体为:接收到升级通知的退休根桥中,与外部网络连接链路正常的其中一个退休根桥升级为所述实例的生效根桥。
可选地,所述方法还包括:当原生效根桥检测到与外部网络的连接链路故障恢复时,升级为生效根桥。
优选地,,所述退休根桥升级为生效根桥包括:
退休根桥将自身设置为所述实例的生效根桥;
在该实例的上行端口恢复该实例的用户VLAN。
优选地,所述生效根桥检测与外部网络的连接链路通过设备连接检测协议DLDP、或向外部网络的节点发送网际控制消息并接收其应答进行。
本发明提供了一种运行HVRP协议的二层网络根桥,包括连接链路检测单元、切换通知发送单元和根桥切换单元,其中:
连接链路检测单元用来检测与外部网络连接链路的状态;
切换通知发送单元用来在所述根桥作为HVRP实例的生效根桥,并且连接链路检测单元检测到与外部网络的连接链路发生故障时通知该实例的退休根桥升级为生效根桥;
根桥切换单元用来进行生效根桥与退休根桥的转换,包括在连接链路检测单元检测到与外部网络的连接链路发生故障时由生效根桥转换为退休根桥。
优选地,所述根桥还包括切换通知处理单元,用来在接收到所在实例的升级通知后指令根桥切换单元进行退休根桥到生效根桥的转换。
优选地,所述连接链路检测单元检测与外部网络连接链路的状态在所述根桥作为生效根桥和退休根桥时进行;
所述根桥还包括切换通知处理单元,用来在接收到所在实例的升级通知,并且与外部网络的连接链路状态正常时指令根桥切换单元进行退休根桥到生效根桥的转换。
优选地,所述连接链路检测单元检测与外部网络连接链路的状态在所述根桥作为生效根桥和退休根桥时进行;
所述根桥切换单元进行生效根桥与退休根桥的转换还包括:在与外部网络的连接链路状态正常时根据HVRP协议进行退休根桥与生效根桥的转换。
本发明中由二层网络的生效根桥对与外部网络的连接链路进行检测,在发生故障时通知本实例的退休根桥升级为生效根桥,同时自身转换为退休根桥,使得二层网络的流量可以通过原退休根桥与外部网络的连接链路正常转发,通过提高二层网络与外部网络间流量的可靠性增加了二层网络的可用性。
具体实施方式
在HVRP协议中,将二层网络与外部网络的连接节点设置为HVRP实例的根桥,根桥上连接外部网络的端口为该实例的上行端口,二层网络与外部网络之间的流量通过上行端口与外部网络之间的连接链路进行转发。本发明中,二层网络与外部网络之间的连接链路包括根桥上行端口、外部网络的某个指定节点以及上行端口与该指定节点之间的报文转发通路,报文转发通路既可以是上行端口与该指定节点的直接连接,也可以由以上行端口和该指定节点为两端的若干个外部网络节点连接形成。
作为根桥的节点可以采用物理层自动协商机制等技术检测到与外部网络之间的连接链路发生断路等物理层故障以及上行端口的物理层故障。此外,根桥还可以对与外部网络节点之间连接链路的二层、三层运行情况进行检测。现有技术中有多种检测协议、检测命令或检测机制可以用来完成这一工作,本发明推荐采用以下的两种:DLDP(Device Link Detection Protocol,设备连接检测协议)和定时ping(网际控制消息协议回显命令)机制。
DLDP协议用来检测物理层连通的连接链路在二层的状态是否正常,即连接链路两端是否可以正确的交互报文。运行DLDP协议的节点定时向对端节点发送二层DLDP协议报文,如果在某个设定时间内收到对端节点返回的响应报文,则连接链路工作正常;如果超过该设定时间没有收到响应报文,则连接链路发生故障。
ping是TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)中的一个命令,执行该命令的节点发送ICMP(Internet ControlMessage Protocol,网际控制消息协议)回显请求报文至命令中指定的目的节点;当目的节点接收到该ICMP回显请求报文时,返回ICMP回显应答报文。如果执行ping命令的节点在合理的时间内没有收到对端的ICMP回显应答报文,则认为两个节点间的连接链路发生故障。ping命令可以用来检测根桥与外部网络的指定节点之间的连接链路在三层的工作状态,本发明中可以通过定时向外部网络指定节点发送ping命令的方法来检测连接链路的状态。其他具有与ping命令类似的请求与应答机制的网际控制消息也可以用来检测链路状态。
当生效根桥与外部网络的连接链路发生故障时,为了避免在导致二层网络与外部网络的流量中断,本发明中令生效根桥在检测到这一故障时,通知其所在实例的退休根桥进行根桥角色转换,将退休根桥升级为该实例的生效根桥,通过原退休根桥与外部网络的另一条连接链路转发二层网络的流量。用户可以根据具体应用环境的需求来决定对连接链路的哪些工作状态进行检测,以及在发生怎样的故障时进行根桥角色的切换。
本发明所述提高二层网络与外部网络间流量可靠性的方法的流程如图2所示。在步骤S210,根桥检测与外部网络连接链路的状态。与外部网络的连接链路状态可以只在生效根桥上进行,也可以在生效根桥和退休根桥上同时进行。
在步骤S220,生效根桥检测到与外部网络的连接链路发生故障。连接链路故障包括生效根桥所在实例的上行端口故障、连接根桥上行端口的外部网络某个节点的故障以及上行端口与该节点之间报文转发通路的故障。此时,二层网络与外部网络之间的流量至少部分中断。
在步骤S230,生效根桥通知该实例的退休根桥升级为生效根桥。现有技术中,生效根桥可以通过在本实例内发送退休通知,启动该实例的退休根桥向生效根桥的转换。本步骤中生效根桥可以采用退休通知来告知本实例的退休根桥升级,也可以采用约定的方式来进行升级通知。
当HVRP实例中指定了控制VLAN来交互HVRP控制报文时,升级通知可以作为HVRP控制报文在该实例的控制VLAN内传输。
在步骤S240,原生效根桥转换为退休根桥。当某实例的生效根桥转换为退休根桥时,主要进行以下两项工作:将自身设置为该实例的退休根桥;按照HVRP协议中退休根桥的工作方式,在该实例的上行端口上把该实例的用户VLAN老化掉。
在步骤S250,接收到升级通知的退休根桥转换为该实例的生效根桥,使二层网络与外部网络之间的流量通过新的生效根桥进行转发。
当一个HVRP实例中有超过一个退休根桥时,这些退休根桥在接收到升级通知后,可以按照HVRP协议中在多个配置为根桥的节点中自动确定生效根桥与退休根桥的方法来产生生效根桥。为配置为某实例根桥的节点设置桥优先级,每个根桥都缺省认为自身是该实例的生效根桥,并在其发送的Hello(握手)报文中将消息优先级置为自身的桥优先级;如果收到消息优先级高于自身桥优先级的同实例Hello报文,表明该实例中有优先级高于自身的生效根桥,则将自身转换为该实例的退休根桥。
需要说明的是,如果原生效根桥在二层网络中接收到自身发出的退休通知,按照HVRP协议,原生效根桥会先检查该控制报文的源节点,对本节点发出的控制报文丢弃而不进行协议处理,因此原生效根桥不会进行至生效根桥的转换。
当前述步骤S210中退休根桥不检测其与外部网络的连接链路时,在接收到退休通知、升级为生效根桥后开始进行与外部网络的连接链路检测,如果发现该连接链路故障,则同样发出退休通知并转换为退休根桥。
如果步骤S210中退休根桥同样进行与外部网络连接链路的检测,则退休根桥接收到退休通知后检查该连接链路的状态,如果状态正常则进行到生效根桥的转换;否则继续保持退休根桥的角色。这种方式更有利于提高二层网络工作的稳定性。
当某实例的退休根桥转换为生效根桥时,主要进行以下两项工作:将自身设置为该实例的生效根桥;按照HVRP协议中生效根桥的工作方式,在该实例的上行端口上恢复该实例的用户VLAN。
在步骤S260,当原生效根桥检测到与外部网络的连接链路故障恢复时,升级为生效根桥。当在步骤S210中退休根桥同样检测与外部网络的连接链路状态时,可以增加本步骤,以便将该实例的根桥保持在具有更高桥优先级的节点上。当桥优先级更高的根桥具有更好的处理能力、和/或更大的到外部网络的连接带宽等条件时,执行本步骤可以为二层网络提供更好的性能。
当某个实例退休根桥检测到与外部网络的连接链路恢复时,并且其接收的该实例Hello报文中的消息优先级低于自身的桥优先级,表明此时该实例的生效根桥的桥优先级低于自身,则可以将自身升级为该实例的生效根桥,开始发送携带的消息优先级等于自身桥优先级的Hello报文;根据HVRP协议,接收到此Hello报文的当前生效根桥在进行优先级比较后会自动转换为退休根桥。
应用本发明所述方法的被配置为HVRP根桥的二层网络节点可以具有图3所示的结构。根桥上连接外部网络的端口为某个HVRP实例的上行端口310,根桥的二层网络端口320连接二层网络的其他节点,二层网络端口320可以是一个,也可以是多个。连接链路检测单元330分别连接上行端口310、根桥切换单元340、切换通知发送单元350和切换通知单元处理单元360;根桥切换单元分别连接切换通知发送单元350、切换通知单元处理单元360和二层网络端口320;二层网络端口320分别与切换通知发送单元350和切换通知单元处理单元360相连接。
连接链路检测单元330对上行端口310与外部网络的连接链路进行检测,并将连接链路的状态变化通知根桥切换单元340、切换通知发送单元350以及切换通知处理单元360。连接链路检测单元330可以只在本节点作为生效根桥时对连接链路进行检测,也可以在本节点作为生效根桥和备份根桥时均对连接链路进行检测。
当本节点作为某个HVRP实例的生效根桥运行时,切换通知发送单元350如果从连接链路检测单元330接收到与外部网络的连接链路发生故障的通知,则生成升级通知报文,从二层网络端口320发送给二层网络中本实例的退休根桥,通知这些退休根桥升级为生效根桥。
根桥切换单元340对本节点的HVRP根桥角色进行管理,决定本节点作为生效根桥还是退休根桥来运行以及在生效根桥与退休根桥之间进行转换。当本节点作为某个HVRP实例的生效根桥运行时,如果接到连接链路检测单元330对与外部网络的连接链路故障通知,则将本节点的根桥角色转换为该实例的退休根桥。从生效根桥切换为退休根桥主要包括将自身设置为该实例的退休根桥,以及在该实例的上行端口310上老化该实例的用户VLAN。
当本节点作为某个HVRP实例的退休根桥运行时,如果切换通知处理单元360从二层网络端口320接收到该实例的升级通知报文,则视连接链路检测单元330的运行方式不同做相应处理。若连接链路检测单元330只在本节点作为生效根桥时进行检测,切换通知处理单元360在收到升级通知报文后,直接指令根桥切换单元340进行该实例退休根桥到生效根桥的切换;若连接链路检测单元330也在本节点作为退休根桥时进行检测,切换通知处理单元360在收到升级通知报文后,查询当前本节点上行端口310与外部网络连接链路的状态,在链路状态正常时指令根桥切换单元340进行该实例退休根桥到生效根桥的切换,在链路状态故障时不做处理。根桥切换单元340将退休根桥切换为生效根桥主要包括将自身设置为该实例的生效根桥,以及在该实例的上行端口310上恢复该实例的用户VLAN;此后,本节点作为该实例的生效根桥开始发送自己的Hello报文。
在连接链路检测单元330在本节点作为生效根桥和备份根桥时都检测连接链路的情况下,当本节点作为某个HVRP实例的退休根桥运行时,如果该实例的上行端口310与外部网络连接链路处于故障状态,即使根桥切换单元340从二层网络端口接收的该实例Hello报文中消息优先级低于本节点的桥优先级,根桥切换单元340也不会进行退休根桥至生效根桥的切换。只有该实例的上行端口310与外部网络连接链路处于正常状态时,根桥切换单元340才会根据HVRP协议,在接收到该实例Hello报文中消息优先级低于本节点的桥优先级的条件下,进行该实例的退休根桥至生效根桥的切换。此外,根桥切换单元340还在接收到切换通知处理单元360的指令后进行退休根桥至生效根桥的转换。
在连接链路检测单元330仅在本节点作为生效根桥时检测连接链路的情况下,当本节点作为某个HVRP实例的退休根桥运行时,即使根桥切换单元340从二层网络端口接收的该实例Hello报文中消息优先级低于本节点的桥优先级,根桥切换单元340也不会进行退休根桥至生效根桥的切换。根桥切换单元340在接收到切换通知处理单元360的指令后进行退休根桥至生效根桥的转换。
需要说明的是,当应用本发明的二层网络中可以只包括一个HVRP实例,此时二层网络中所设置的根桥均属于这个HVRP实例,因而在应用本发明时不需进行实例的区分。
以下以城域网的汇聚层网络为例说明本发明的具体应用。在图4所示的网络结构中,节点421、422、423、424、425和426沿逆时针方向依次连接为环网,节点423连接节点424的端口处于阻塞状态,以避免形成二层转发环路。用户VLAN 100至199通过节点421接入汇聚层网络,用户VLAN 200至299通过节点422接入汇聚层网络,用户VLAN 300至399通过节点423接入汇聚层网络,用户VLAN 400至499通过节点424接入汇聚层网络;节点426连接BRAS 411,节点425连接BRAS 412,BRAS 411和412接入核心网。
在该汇聚层网络中只有一个HVRP实例,当图4中的所有节点运行正常时,节点426为生效根桥,节点425为退休根桥。BRAS 411发生故障,导致二层网络的流量不再能通过节点426和BRAS 411进行转发。节点426检测到这一故障,在汇聚层网络中发送退休通知报文,并将自身转换为退休根桥。节点425接收到退休通知报文后,升级为生效根桥,并开始通过BRAS 412转发二层网络与外部网络之间的流量。
综上,本发明可以监测HVRP根桥至外部网络指定节点之间的连接链路,并在该连接链路发生故障时通过HVRP根桥的角色切换,将二层网络与外部网络的流量切换到退休根桥与外部网络的备份链路上,实现流量不中断,使得二层网络具有更高的可用性。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。