具体实施方式
本发明提出一种MSTP组网环境中实现负载分担的方法,如图1为本发明提出的方法流程图,包括:
步骤101:网络设备检测是否出现链路拥塞,如果出现,则执行步骤102;
步骤102:查找导致该链路拥塞的VLAN,并查找空闲链路,对查找到的VLAN及空闲链路进行分析,根据分析结果确定将需要调整映射关系的VLAN从与原实例的映射关系调整到与新实例的映射关系。
上述步骤102之后可以进一步包括:
网络设备生成所述需要调整映射关系的VLAN与新实例的映射关系所对应的备份转发表项,将所述备份转发表设置为禁用状态;将所述需要调整映射关系的VLAN映射到所述新实例,将所述需要调整映射关系的VLAN与原实例的映射关系所对应的原转发表项转换为禁用状态,并将所述备份转发表项转换为激活状态。
本发明还提出一种MSTP组网环境中实现负载分担的装置,包括监控模块和分析模块等多个模块,分别完成不同的功能。
以下举具体的实施例详细介绍。
如图2为本发明实施例MSTP组网环境中实现负载分担的方法流程图,包括:
步骤201:用户配置MSTP网络,设置VLAN与实例的映射关系为动态模式,自定义动态映射策略。设备的映射策略保存模块保存该动态映射策略。
这里主要是为用户提供个性化需求。引入动态映射的概念后,VLAN与实例的映射关系不再是基于手工的静态配置,而是可以根据链路拥塞情况进行动态调整。即:VLAN可以从原实例中调整到新实例中,而原实例不再有该VLAN。重要的是,可以为实例中的VLAN配置优先级和其它有关动态调整的参数,这里的优先级高低表示VLAN流量对实例所在链路使用权的高低,优先级越高表示该VLAN流量享有该实例所在链路的使用权越高,优先级越低表示当拥塞发生时优先被调整到其它实例上。另外,也可以设置某些最重要VLAN不允许改变映射关系,或者设置一个实例最多允许动态调整多少个VLAN到其它实例上。通过用户的这些自定义配置来控制实例中某些重要的VLAN业务流量享有高优先级别的链路使用权,从而在网络拥塞的情况下将不重要的业务流量调整到新的链路上,保证链路中重要的VLAN业务流量的稳定性。
步骤202:设备的监控模块检测链路拥塞情况,生成监控信息发送给分析模块进行决策。
这里,监控模块检测链路拥塞情况的方式为:获取链路上的当前带宽,通过将链路当前带宽与事先设置的转发阈值进行比较来确定链路的拥塞情况,为之后的动态改变VLAN与实例的映射关系提供信息依据。监控模块主要完成的任务是:(1)检测哪些链路出现拥塞情况;(2)如果出现拥塞情况,此时需要初步统计出是哪些VLAN的流量出现了过大的现象;(3)是否有空闲的冗余链路作为备用路径。
判断链路出现拥塞的标准:当链路上的流量在一定时间范围内持续超过预设的转发阈值时,被认为是出现拥塞情况。其中时间范围和转发阈值可由用户来设置,或者使用默认配置。
监控模块通过轮询设备上端口的当前带宽来进行判断拥塞情况。出于实际情况的考虑,不需要对设备上面所有端口进行监测,特别是不需要对边缘端口(直接与用户终端相连的端口)进行监测。另外,如果只是对设备上某些关键链路特别关注,那么可以指定监控模块只监控设备上的关键端口所在的链路拥塞情况。
为统计哪些VLAN的流量出现了过大的现象而导致链路拥塞,可以统计拥塞链路中各VLAN流量的排名,统计的方式可以为:
方法1:根据流量中报文的VLAN标签(vlan tag)来统计,这种方法可以直接获取到路径中各VLAN流量的排名。
方法2:根据转发表项匹配次数来统计。因为流量转发都需要通过匹配转发表项来找到出端口,这里可以对匹配成功的次数按照VLAN进行统计。
出于对性能的考虑,这里不要求统计结果非常精确,只需对VLAN流量进行大致排名,这样为之后动态映射选择最优的实例提供信息依据。
最后,监控模块可以每隔一段时间将检测的结果发送给分析模块,由分析模块通过监控模块提供的信息进行分析计算来决定是否启动动态映射和如何调整VLAN与实例的映射关系。
步骤203:根据监控模块提供的信息,分析模块评估动态映射的风险和确定出动态调整VLAN与实例映射的关系的最佳方案。
分析模块主要完成的任务是:(1)分析是否需要启动动态改变VLAN与实例的映射关系;(2)确定如何动态调整VLAN与实例的映射关系。
分析是否需要启动动态改变VLAN与实例映射关系的最重要两个依据是:监控模块发送的检测信息和当前设备的资源使用情况。其中需要考虑到如下几种情况:如果当前没有空闲的冗余链路,则动态映射是不必要的;如果当前设备没有足够资源(包括CPU、内存等重要资源)支持完成动态映射,则动态映射也是不能随意启动的;如果动态映射启动后可能导致新的转发路径出现拥塞,从而导致流量一直在不同的链路之间振荡的,也不能启动动态映射。
当分析模块得出需要并同意启动改变VLAN与实例映射关系的结论后,就需要确定出如何进行动态调整的最佳方案。其中,最关键的决策就是将哪些VLAN动态调整的哪些实例上。这里可以依次考虑以下几点:(1)用户的自定义配置;(2)VLAN流量排名,可以按照如下原则:选举优先级低的VLAN进行调整;在优先级相同情况下,优先将VLAN流量排名中间的进行调整,因为对流量太小的VLAN进行调整可能对原链路的拥塞情况改善起不到明显的效果,而对流量太大的VLAN进行调整可能会产生较多的丢包现象,因此这里优先考虑流量排名居中的VLAN;(3)空闲的冗余链路排名,当存在多条备份路径的时候,可以通过几项指标(链路空闲情况,路径开销,优先级等)来选择最优的备份路径,优先选择最空闲的冗余链路作为新的转发路径,这样就可以确定出新的实例。
步骤204:当风险评估的结果为同意动态映射并确定出新的映射关系后,控制模块可以启动多实例生成树(MST)保护机制,通知MST域内的其他设备相应改变自身保存的VLAN与实例的映射关系。
这里的MST保护机制是为例防止VLAN与实例映射关系的改变导致整个网络重新计算生成树。因为同一个MST域的前提条件是保证域名、修订级别、VLAN与实例映射关系完全相同,所以需要保证动态映射后设备仍然被识别在原有的MST域中。这里可以通过向同一个MST域的其他设备发送通知来完成这种保护机制,具体方法是向所属MST域内的其他设备发送消息,要求动态改变VLAN与实例的映射关系,如果同一个MST域内的设备接收到该消息后,则将自身保存的VLAN与实例的映射关系同样进行修改,同时将该消息继续传播下去;如果不是同一个MST域内的设备接收到该消息,则丢弃即可。可以通过控制模块来完成整个执行过程,通过该机制可以保证不会出现网络环路的情况。同时,也对整网的流量拥塞起到改善的作用。
其中具体的消息内容可以包括:域标识、域配置信息、标志位、哪些VLAN映射到哪些实例。其中,域标识和域配置信息用于设备互相识别双方是否在同一个域中,标志位用于识别发起者与传播者,或者扩展功能使用;VLAN与实例的映射关系用于配置同步,防止网络环路的产生。
步骤205:为了保证VLAN流量快速切换到新的实例的转发路径上,需要在VLAN与实例的映射关系调整之前生成VLAN与新实例的映射关系所对应的备份转发表项。生成备份转发表项具体为继承VLAN与原实例的映射关系所对应的原转发表项(包括MAC地址表、ARP表),并将出端口改为新实例对应的转发路径端口。在VLAN动态映射到新的实例之前,备份转发表项生成并处于禁用状态,当完成动态映射之后,备份转发表项被激活生效,同时将原转发表项禁用。例如:备份路径中某条路径是最空闲的,那么将其选择为新实例的转发路径。在VLAN与实例的映射关系调整之前,有了备份转发表项,可以减少流量路径切换过程中的丢包。可以通过设置一个备份模块来完成备份转发表项的设置及调整工作,为动态改变VLAN与实例的映射关系做准备。
以下以备份转发表项为MAC地址表为例,VLAN 1从端口g4/0/1调整到端口g4/0/2上,新生成的一条备份转发表项为备份(Backup)状态,该备份转发表项被禁用。
[Switch C]display mac-address
MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s)
000a-eb2b-ceef 1 Learned GigabitEthernet4/0/1 AGING
000a-eb2b-ceef 1 Backup GigabitEthernet4/0/2 AGING
---2mac address(es)found:1active and 1 unactive---
在本实施例中,对于备份转发表项的操作主要包括以下几种:
备份转发表项的创建:当控制模块需要启动动态改变VLAN与实例的映射关系时,通知备份模块将根据现有VLAN(这里指的是需要动态改变的VLAN)和对应的端口的转发表项来创建备份转发表项,将表项中的出端口改成新的出端口,表项状态为Backup,此状态表项暂时被禁用。
备份转发表项的激活:在动态改变VLAN与实例的映射关系后,备份表项的状态从Backup变成为已学习(Learned)状态,此状态表项被启用。VLAN与原实例的映射关系对应的原转发表项变为Backup状态。
备份转发表项的更新:备份转发表项随着当前可用表项的更新而更新。
备份转发表项的删除:当设备需要将动态改变的VLAN重新调整回原有实例时,将动态变化前创建的备份转发表项删除。
步骤206:当所有动态映射的准备工作完成后,控制模块发出指令通知底层驱动将VLAN映射到新的实例上。通常底层驱动是通过一个VLAN分配表和一个端口状态表来实现MSTP的转发控制的。这里需要实现动态改变的具体方法为:底层驱动中的映射模块将需要动态调整的VLAN从原实例的生成树组(STG)中删除,然后将该VLAN加入到新实例的STG中,这里的动态改变需要设置MSTP相关的硬件寄存器中的分配表和端口状态表。例如:将VLAN12从实例1中动态调整到实例2上时,需要执行以下操作:
步骤207:完成VLAN动态映射到新的实例后,映射模块需要发送消息给备份模块。备份模块根据该消息,立即禁用该VLAN与原实例的映射关系所对应的原转发表项,并激活该VLAN的备份转发表项,从而实现流量的快速切换。至此,完成VLAN与实例的动态映射调整和路径切换后,VLAN流量在新的转发路径上进行传输,从而达到流量负载分担的目的。
步骤208:当设备的监控模块检测到链路流量已经完全恢复到正常水平,原拥塞链路已经在一定时间内持续空闲或者流量低于某个限度时,通知控制模块将动态映射的VLAN还原到原有的实例配置上。当将动态调整的VLAN重新映射到原实例时,需要将当前相关表项设置为备份转发表项,并激活原转发表项,这些都由控制模块统一协调指挥。
除了上述实施例公开的改变VLAN与实例映射关系的方法外,本发明还提出通过多实例生成树和基于VLAN的单生成树共存来实现负载分担的方法,当网络没有出现拥塞情况时,VLAN流量按照所对应的实例生成树路径进行转发;当出现拥塞时,激活某VLAN的单生成树,让VLAN按照自己的生成树转发。
如图3为本发明提出的MSTP组网环境中实现负载分担的装置结构示意图,该装置包括:
监控模块301,用于检测是否出现链路拥塞,如果出现,则查找导致该链路拥塞的VLAN,并查找空闲链路;
分析模块302,用于对所述监控模块301查找到的VLAN及空闲链路进行分析,根据分析结果确定将需要调整映射关系的VLAN从与原实例的映射关系调整到与新实例的映射关系。
上述装置还可以包括:
控制模块303,用于通知备份模块305生成所述需要调整映射关系的VLAN与新实例的映射关系所对应的备份转发表项,通知映射模块304将所述需要调整映射关系的VLAN映射到所述新实例;
映射模块304,用于根据控制模块303的通知将所述需要调整映射关系的VLAN映射到所述新实例,并通知备份模块305转换转发表项的状态;
备份模块305,用于根据控制模块303的通知生成需要调整映射关系的VLAN与新实例的映射关系所对应的备份转发表项,将所述备份转发表设置为禁用状态;还用于根据所述映射模块304的通知将所述备份转发表项转换为激活状态、并将所述需要调整映射关系的VLAN与原实例的映射关系所对应的原转发表项转换为禁用状态。
上述装置还可以包括映射策略保存模块306,用于预先保存由用户自定义的VLAN与实例的动态映射策略;
上述分析模块302,用于对所述监控模块301查找到的VLAN及空闲链路进行分析,根据分析结果以及所述映射策略保存模块306所保存的动态映射策略,确定将需要调整映射关系的VLAN从与原实例的映射关系调整到与新实例的映射关系;
上述映射策略保存模块306保存的VLAN与实例的动态映射策略包括:
VLAN的优先级,所述优先级的高低表示所述VLAN对自身映射的实例所在链路使用权的高低;
或者,不允许改变映射关系的VLAN;
或者,实例最多允许调整到其他实例上的VLAN的个数。
上述监控模块301查找导致链路拥塞的VLAN的方式为:
根据所述链路中报文的VLAN标签、或者根据转发表项的匹配次数统计所述链路中各VLAN流量的排名,根据VLAN流量的排名确定导致链路拥塞的VLAN。
上述分析模块302可以进一步用于:
对所述监控模块301查找到的VLAN及空闲链路进行分析,根据分析结果判断是否需要进行VLAN与实例映射关系的调整,判断方法为:如果不存在空闲链路、所述交换设备没有足够资源支持映射关系的调整或者启动映射关系调整后将导致新的链路出现拥塞,则判定不需要进行VLAN与实例映射关系的调整;否则,判定需要进行VLAN与实例映射关系的调整。
上述分析模块302确定将需要调整映射关系的VLAN从与原实例的映射关系调整到与新实例的映射关系的方式为:
选择优先级低的VLAN作为需要调整映射关系的VLAN;或者,在VLAN优先级相同的情况下,选择流量排名居中的VLAN作为需要调整映射关系的VLAN;
选择最优的空闲链路作为新的转发链路,根据新的转发链路确定新实例;
确定将所述需要调整映射关系的VLAN从与原实例的映射关系调整到与所述新实例的映射关系。
上述控制模块303可以进一步用于,将所述确定将需要调整映射关系的VLAN从与原实例的映射关系调整到与新实例的映射关系的信息通知所述装置所在MST域内的其他装置,要求其他装置设备调整自身保存的VLAN与实例的映射关系。
上述映射模块304将需要调整映射关系的VLAN映射到新实例的方式为:
将所述需要调整映射关系的VLAN从原实例的生成树组中删除,并加入到新实例的生成树组。
上述监控模块301进一步用于,检测出现拥塞的链路是否恢复正常,当检测到恢复正常时,通知控制模块304将所述需要调整映射关系的VLAN重新映射到原实例。
综上可见,本发明提出的MSTP组网环境中实现负载分担的方法和装置,为MSTP组网的负载分担提供了一种灵活的动态方法和机制,可以支持用户自定义动态负载分担策略,当检测到链路出现拥塞时,充分利用冗余的空闲链路,将导致拥塞的VLAN映射到新的实例中,实现MSTP组网的动态负载分担。同时,在链路拥塞情况下,能够保证重要业务流量享有高优先级的链路使用权。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。