VLAN拓扑的生成方法和装置
技术领域
本发明涉及网络技术领域,尤其涉及一种VLAN(Virtual Local AreaNetwork,虚拟局域网)拓扑的生成方法和装置。
背景技术
随着网络技术的迅速发展,网络规模不断扩大,网络结构也越来越复杂,其功能也越来越强。网络管理已成为网络***的运行好坏关键,而网络的拓扑结构发现是网络管理的基础。网络拓扑结构的灵活多样及虚拟网技术的应用,使得多层网络拓扑及虚拟网拓扑成为必要。同时,在一个园区或企业内进行网络管理非常重要,一个合适的园区网网管软件,可以使网络建设节约大量的人力、物力、财力。
图1所示为现有技术中基于传统802.1Q协议的一网络示意图。其中存在位于两个不同地点的用户网络CE1和CE2,其分别通过服务提供商的PE1和PE2接入骨干网进行互联。如果用户需要将用户网络1的VLAN200~300和用户网络2的VLAN 200~300互联起来,那么必须将CE1、PE1、P、PE2和CE2的相连端口都配置为trunk(链路聚合)属性,并允许通过VLAN 200~300,这种配置方法必须让用户的VLAN在骨干网络上可见,不仅耗费了服务提供商的VLAN id资源(一般只有4094个VLANid资源),而且还需要服务提供商花费大量精力去管理用户的VLAN号,用户也失去了自己规划VLAN的权利。
针对此问题,目前主要有以下两种解决方案,分别为基于QinQ(基于802.1Q封装的隧道协议)与基于VLAN Mapping(VLAN映射,指实现在用户VLAN ID和运营商VLAN ID之间相互转换的功能)的解决方案。
基于QinQ的解决方案具体为:向用户提供一个唯一的公网VLAN ID,将用户私网VLAN tag封装在这个新的公网VLAN ID中,并依靠公网VLANID在公网网络中进行传播,用户的私网VLAN ID在公网中被屏蔽。这样大大节省了服务提供商紧缺的VLAN ID资源。如图2所示,设新的公网VLAN ID为VLAN 3,与图1的配置不同的一点就是,PE设备的端口不再需要TrunkVLAN 200~300,而是配置成为VLAN 3的接入端口,并且使能QinQ功能。而CE的端口仍然需要trunk VLAN 200~300,这样CE与PE之间的连接就成为了一条非对称的连接(asymmetrical link)。这样公网只需要分配给用户一个VLAN号3,不管用户自己内部规划了多少个私网VLAN id,当带tag的用户报文进入服务提供商的骨干网络时,都统一地再强行***这个新分配的公网VLAN号,用这个新的公网VLAN号来穿过骨干网络,当这个报文到达骨干网另一侧的PE设备时,剥离这个新加的公网VLAN tag,还原出用户报文后再传送给用户的CE设备。这样在骨干网中传递的报文具有两层802.1q tag头,分别为一个公网tag和一个私网tag。
基于VLAN Mapping的解决方案具体为:VLAN Mapping发生在报文从入端口接收进来之后,从出端口转发出去之前,Mapping后的VLAN对于实施VLAN Mapping的设备不可见。VLAN Mapping的产生背景一是由于一些低端交换机不支持VLAN ID为1-4094的整个范围,而是类似1-512的有限范围;另外是由于一些VLAN ID被保留,而使用VLAN Mapping特性可以对802.1Q封装的用户报文的VLAN ID进行修改,克服上述的限制。VLANMapping的使用要保证用户报文至少有一层802.1Q的封装。目前有三种VLANmapping,以从用户向运营商方向转换为例:
(1)1∶1映像,报文只带一层802.1Q封装,匹配指定用户VLAN ID的报文将被改为指定的运营商VLAN ID;
(2)2∶1映射,报文是QinQ封装,根据QinQ内层VLAN ID和外层VLAN ID的匹配将报文转换为只有一层802.1Q封装的报文,且VLAN ID变为运营商VLAN ID;
(3)2∶2映射,报文是QinQ封装,根据QinQ内层VLAN ID和外层VLAN ID的匹配修改QinQ封装的外层VLAN ID为运营商VLAN ID,内层VIAN ID保持不变。
现有的网管***可以在IP视图上查看某个VLAN ID,采用的方法是通过遍历所有网管中所有设备的VLAN端口,找出所有的ID等于待查看的ID的VLAN。从而绘制出VLAN经过的各个链路。用户通过对该VLAN ID的链路跟踪,可以查看VLAN配置是否正常。
在现有的技术方案中,VLAN链路的显示存在最显着的缺陷是:VLAN的信息量较少,尤其是当组网环境中包括QinQ、VLAN Mapping等VLAN映射应用时,无法完全显示出VLAN拓扑的真实情况。
以如图3所示的场景为例,显示VLAN100的VLAN拓扑,其中的实线表示可以通过VLAN标识为VLAN 100的报文的链路,虚线表示无法通过VLAN标识为VLAN 100的报文的链路。由于此组网中没有QinQ或VLANMapping等应用,此拓扑图基本可以体现出VLAN的拓扑。如果某个设备的VLAN出现问题,用户通过图3可以正确的定位问题出现的位置。
但如果组网中包括VLAN Mapping或QinQ等应用时,如图4所示,虽然各个接入网内的VLAN是相同的,但最终在汇聚层交换机被映射或打上的外层业务标签是不同的,如果查看VLAN100时将所有接入网都一并显示出来并不合适。在图4的情况下,用户如果想要查看VLAN10的设置是否有问题,就会存在这样的问题:对标识为VLAN10的报文进行VLAN Mapping或QinQ时,需要确定将VLAN10转换为VLAN100还是VLAN200。如果想要知道到底是哪个VLAN就必须到使用VLAN Mapping或QinQ的设备上具体去查看具体设置,操作非常的不便且容易造成分析错误。
发明内容
本发明提供一种VLAN拓扑的生成方法和装置,用于增加VLAN拓扑中包括的信息量,使用户可以直观的获取到网络中VLAN的部署情况。
为达到上述目的,本发明提供一种VLAN拓扑的生成方法,应用于具有多个设备的网络中,包括以下步骤:
A、选择第一设备作为VLAN拓扑生成的种子加入种子列表并选择待查看VLAN;
B、根据所述待查看VLAN以及所述第一设备的物理拓扑,获取与所述第一设备上的端口连接的设备,其中所述端口是能够通过具有所述待查看VLAN数据流的端口;
C、获取所述与第一设备上的端口连接的设备上所述待查看VLAN的信息;
D、判断所述种子列表中是否存在其他未处理的种子;存在其他种子时,对所有作为种子的设备分别作为新的第一设备重复所述步骤B和C以获取所述待查看VLAN的信息;否则判断为所述待查看VLAN的信息已经获取完成并继续;
E、根据所述获取的信息生成所述待查看VLAN的VLAN拓扑。
其中,所述第一设备为启用了VLAN转换功能的设备时,所述选择第一设备作为VLAN拓扑生成的种子加入种子列表并选择待查看VLAN后,还包括:
获取所述第一设备上的VLAN转换关系,并将网络中具有所述VLAN转换关系的其他设备加入所述种子列表。
其中,所述获取与第一设备上的端口连接的设备上所述待查看VLAN的信息的步骤具体为:
所述与第一设备上的端口连接的设备为没有启用VLAN转换功能的设备时,获取到所述设备的VLAN信息,并通过所述设备上能够通过具有所述待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
其中,所述获取与第一设备上的端口连接的设备上所述待查看VLAN的信息的步骤具体为:
所述与第一设备上的端口连接的设备为启用VLAN转换功能的设备且VLAN转换关系为已知时,获取所述设备的VLAN信息,并根据所述VLAN转换关系对所述待查看VLAN进行转换,获取转换后的VLAN作为新的待查看VLAN,通过所述设备上能够通过具有所述新的待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
其中,所述获取与第一设备上的端口连接的设备上所述待查看VLAN的信息的步骤具体为:
所述与第一设备上的端口连接的设备为启用VLAN转换功能的设备且VLAN转换关系为未知时,获取到所述设备的VLAN信息以及所述设备的VLAN转换关系;
根据所述VLAN转换关系对所述待查看VLAN进行转换,获取转换后的VLAN作为新的待查看VLAN,通过所述设备上能够通过具有所述新的待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
其中,所述待查看VLAN包括用户VLAN、和/或业务VLAN。
其中,所述获取设备上的VLAN转换关系的步骤具体为:
当所述设备上的VLAN转换关系不唯一时,选择需要查看的VLAN转换关系作为所述设备的VLAN转换关系。
本发明还提供一种VLAN拓扑的生成装置,包括:
选择单元,用于选择第一设备作为VLAN拓扑生成的种子加入种子列表并选择待查看VLAN;
设备获取单元,用于根据所述选择单元选择的待查看VLAN以及所述第一设备的物理拓扑,获取与所述第一设备上的端口连接的设备,其中所述端口是能够通过具有所述待查看VLAN数据流的端口;
VLAN信息获取单元,用于获取所述设备获取单元获取的、与第一设备上端口连接的设备上的待查看VLAN的信息;
判断单元,用于判断所述种子列表中是否存在其他未处理的种子;存在时通知处理单元,否则通知VLAN拓扑生成单元;
处理单元,用于当所述判断单元判断种子列表中存在其他种子时,对所有作为种子的设备分别作为第一设备,通知所述设备获取单元和VLAN信息获取单元,获取所述种子的所述待查看VLAN的信息;
VLAN拓扑生成单元,用于当所述判断单元判断种子列表中不存在种子时,根据所述VLAN信息获取单元获取的信息生成所述待查看VLAN的VLAN拓扑。
其中,当所述设备获取单元获取的设备为没有启用VLAN转换功能的设备时,所述VLAN信息获取单元进一步包括:
第一VLAN信息获取子单元,用于获取到所述设备的VLAN信息;
第一种子列表加入子单元,用于通过所述设备上能够通过具有所述待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
其中,当所述设备获取单元获取的设备为启用VLAN转换功能的设备且VLAN转换关系为已知时,所述VLAN信息获取单元进一步包括:
第二VLAN信息获取子单元,用于获取到所述设备的VLAN信息;
第二VLAN转换子单元,用于根据所述VLAN转换关系对所述待查看VLAN进行转换,获取转换后的VLAN作为新的待查看VLAN;
第二种子列表加入子单元,用于通过所述设备上能够通过具有所述新的待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
其中,当所述设备获取单元获取的设备为启用VLAN转换功能的设备且VLAN转换关系为未知时,所述VLAN信息获取单元进一步包括:
第三VLAN信息获取子单元,用于获取到所述设备的VLAN信息;
第三VLAN转换关系获取子单元,用于获取所述设备的VLAN转换关系;
第三VLAN转换子单元,用于根据所述VLAN转换关系对所述待查看VLAN进行转换,获取转换后的VLAN作为新的待查看VLAN;
第三种子列表加入子单元,用于通过所述设备上能够通过具有所述新的待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
其中,还包括:
查找单元,用于当所述选择单元选择的第一设备为启用了VLAN转换功能的设备时,获取所述第一设备上的VLAN转换关系,并查找将网络中具有所述VLAN转换关系的其他设备;
种子列表加入单元,用于将所述查找单元查找得到的设备加入所述种子列表。
与现有技术相比,本发明的实施例具有以下优点:
通过使用本发明提供的方法,根据网络的物理拓扑,结合VLAN映射关系可以直观的显示网络中指定VLAN的分布,增加VLAN拓扑中包括的信息量,使用户可以直观的获取到网络中VLAN的部署情况。
附图说明
图1是现有技术中基于802.1Q协议的组网示意图;
图2是现有技术中QinQ协议典型组网示意图;
图3是现有技术中网络中无QinQ或VLAN Mapping时的VLAN拓扑示意图;
图4是现有技术中网络中存在QinQ或VLAN Mapping时的VLAN拓扑示意图;
图5是本发明中VLAN拓扑生成方法的流程图;
图6是本发明中一具体应用场景中VLAN拓扑生成示意图;
图7是本发明中另一具体应用场景中VLAN拓扑生成示意图;
图8是本发明中再一具体应用场景中VLAN拓扑生成示意图;
图9是本发明中用于VLAN拓扑生成的装置示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
本发明提供一种VLAN拓扑的生成方法,其核心思想在于:在获取能够经过具有特定VLAN数据流的端口时,除了参考端口的VLAN信息,还参考端口上VLAN Mapping与QinQ等VLAN转换功能对拓扑的影响,当拓扑发现搜索目标VLAN在某台汇聚交换机上进行VLAN转换操作时,在后续拓扑生成过程中自动转换搜索目标VLAN为转换后的VLAN(VLAN Mapping)或外层标签(QinQ)。
本发明中的VLAN拓扑生成方法的应用前提为:已经获取到了网络中的物理拓扑,即设备之间的物理连接关系已经可以确定,各设备相连接所使用的端口为已知。如图5所示,本发明中的VLAN拓扑生成方法包括以下步骤:
步骤s101、由用户在物理拓扑中选择某台设备作为拓扑的种子加入种子列表,并在列出的VLAN中选择要查看的VLAN。
具体的,可以查看的VLAN分为两类:业务VLAN与用户VLAN。其中,以VLAN转换功能为VLAN Mapping或QinQ为例,用户VLAN是指VLANMapping转换之前的VLAN或QinQ中的内层VLAN,业务VLAN是指VLANMapping转换之后的VLAN或QinQ中外层VLAN。对于用户侧交换机(即用户VLAN中的设备),可以查看的VLAN只有用户VLAN;对于启用了QinQ或VLAN Mapping的汇聚层设备,可以查看的VLAN包括转换前的用户VLAN和转换后的业务VLAN。
步骤s102、判断用户选择的种子是否启用了VLAN Mapping或QinQ应用的汇聚设备,则进行步骤s105;否则进行步骤s103;
步骤s103、循环从种子列表中取出设备进行处理,判断种子列表是否为空,转步骤s107;否则进行步骤s104;
步骤s104、根据物理拓扑选择对端设备,获取对端设备的属性。
如果对端设备为接入设备或没有启用VLAN Mapping或QinQ的汇聚设备,则从该对端设备上各个允许指定待查看VLAN流出的端口上,向外扩散查找与该对端设备连接的其他设备,并将查找到的设备加入种子列表(如果此设备没有被加入过种子列表),并记录VLAN拓扑信息,转步骤s103;
如果对端设备是汇聚设备且启用了VLAN Mapping或QinQ配置,且算法中的VLAN转换关系没有确定,转步骤s105;
如果对端设备是汇聚设备且启用了VLAN Mapping或QinQ配置,且VLAN转换关系已经确定,则对待查看VLAN按照VLAN转换关系进行转换,之后从该对端设备上各个允许转换后VLAN流出的端口上,向外扩散查找与该对端设备连接的其他设备,并将查找到的设备加入种子列表(如果此设备没有被加入过种子列表),并记录VLAN拓扑信息,转步骤s103;
步骤s105、设备启用了VLAN Mapping或QinQ,根据已知的业务VLAN或用户VLAN,查找VLAN转换或加VLAN标签的关系,这里可能需要用户提供信息,尤其是当设备上应用了基于流的QinQ时,需要用户明确地指出希望查看的VLAN转换关系;如果用户选择的是业务VLAN,用户可以选择对应单个或多个用户VLAN与之对应。如果设备上的VLAN Mapping或QinQ信息明确地体现出VLAN转换关系,则不需要用户参与提供附加信息;
步骤s106、在明确VLAN转换关系后,查询所有汇聚设备(或支持VLANMapping或QinQ应用的设备),将符合VLAN转换关系的设备加入种子列表进行处理,转步骤s103;
步骤s107、处理结束。
以下结合一个具体的应用场景,描述本发明上述VLAN拓扑生成方法的具体应用。以如图6所示的网络结构为例。
以选择设备B1作为拓扑的“种子”查看VLAN的拓扑为例,B1为未启用VLAN Mapping或QinQ的接入层交换设备,B1上的VLAN包括VLAN 100和VLAN 200,其中VLAN 100和VLAN 200为用户VLAN,VLAN 10为业务VLAN。以查看VLAN 100的拓扑为例,根据物理拓扑,确定B1的对端设备包括内层设备A1和A2、以及外层设备C1。但与A2连接的端口只能通过VLAN 200的报文,因此B1到A2的链路不在VLAN 100的拓扑范围内,该链路可以在显示界面上以特殊标识(这里为虚线)表示。
排除掉A2后,将设备A1和C1加入种子列表。
对于A1,与A1连接的端口可以通过VLAN 100的报文,因此B1到A1的链路在VLAN 100的拓扑范围内,该链路可以在显示界面上以特殊标识(这里为实线)表示。A1除与B1连接外没有与其他设备连接,因此对于A1,VLAN100的拓扑生成流程结束。
对于C1,C1为启用了VLAN Mapping或QinQ的汇聚层设备,假设设备C1上的VLAN转换关系为将VLAN 100替换为VLAN 10,则从C1的外层端口向外扩散查找能够通过VLAN 10的报文的设备,在该图6中与C1连接的设备包括C2和C3(通过城域网Metro Ethernet连接),其中C2只能够通过VLAN20的报文,则C1与C2间的链路以及C2的内层链路不在VLAN 100的拓扑范围内。
综上所述,在图6所示的网络应用场景中,VLAN 100的拓扑范围包括以下链路:A1到B1,B1到C1,C1到城域网,城域网到C3,C3到B3以及B3到A5;VLAN 100的拓扑范围包括以下设备:A1、B1、C1、C3、B3和A5。对于链路,在图6中以实线标识;对于设备,在图6中以方框进行标识。
以下再结合一个具体的应用场景,描述本发明上述VLAN拓扑生成方法的具体应用。以如图7所示的网络结构为例。
与图6场景的区别在于,汇聚设备C3同样具有VLAN Mapping或QinQ功能,设其具体转换方式与C1相同,为将VLAN 100替换为VLAN 10。则与上述图6中描述的过程的区别在于,当以C1作为种子进行VLAN 100拓扑的生成时,如上述图5中的描述,会对与C1具有相同VLAN转换关系的汇聚设备进行查找并加入种子列表,即C3可以通过该方式被加入种子列表,则通过C3的内层端口扩散查找对端设备,这里为查找到B3,则将B3加入种子列表。进一步的还可以从B3查找到A5,则将A5加入种子列表,这些设备已经之间的链路都属于VLAN 100的拓扑范围。其他的VLAN拓扑生成过程与上述图6没有区别,在此不进行重复描述。
另外,当用户选择的是汇聚交换机的业务VLAN时,可以将其下面接入交换机的所有用户VLAN都显示出来,也可以有选择地只显示某些用户VLAN。例如对于上述图6所示的网络结果,用户选择显示汇聚设备C1上的VLAN10的VLAN拓扑时,可以同时选择显示所有相关的用户VLAN。该情况下生成的VLAN拓扑图如图8所示。
本发明还提供一种用于生成VLAN拓扑的装置,其结构如图9所示,包括:
选择单元10,用于选择第一设备作为VLAN拓扑生成的种子加入种子列表并选择待查看VLAN;
设备获取单元20,用于根据所述选择单元选择的待查看VLAN以及所述第一设备的物理拓扑,获取与所述第一设备上能够通过具有所述待查看VLAN的流的端口连接的设备;
VLAN信息获取单元30,用于获取所述设备获取单元获取的设备上的待查看VLAN的信息;
VLAN拓扑生成单元40,用于根据所述VLAN信息获取单元获取的信息生成所述待查看VLAN的VLAN拓扑。
当设备获取单元20获取的设备为没有启用VLAN转换功能的设备时,该VLAN信息获取单元30进一步包括:第一VLAN信息获取子单元31,用于获取到所述设备的VLAN信息;第一种子列表加入子单元32,用于通过所述设备上能够通过具有所述待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
当设备获取单元20获取的设备为启用VLAN转换功能的设备且VLAN转换关系为已知时,VLAN信息获取单元30进一步包括:第二VLAN信息获取子单元33,用于获取到所述设备的VLAN信息;第二VLAN转换子单元34,用于根据所述VLAN转换关系对所述待查看VLAN进行转换,获取转换后的VLAN作为新的待查看VLAN;第二种子列表加入子单元35,用于通过所述设备上能够通过具有所述新的待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
当设备获取单元20获取的设备为启用VLAN转换功能的设备且VLAN转换关系为未知时,VLAN信息获取单元30进一步包括:第三VLAN信息获取子单元36,用于获取到所述设备的VLAN信息;第三VLAN转换关系获取子单元37,用于获取所述设备的VLAN转换关系;第三VLAN转换子单元38,用于根据所述VLAN转换关系对所述待查看VLAN进行转换,获取转换后的VLAN作为新的待查看VLAN;第三种子列表加入子单元39,用于通过所述设备上能够通过具有所述新的待查看VLAN的流的端口,获取所述设备的对端设备并加入种子列表。
查找单元50,用于当所述选择单元选择的第一设备为启用了VLAN转换功能的设备时,获取所述第一设备上的VLAN转换关系,并查找将网络中具有所述VLAN转换关系的其他设备;
种子列表加入单元60,用于将查找单元50查找得到的设备加入所述种子列表。
判断单元70,用于判断所述种子列表中是否存在其他未处理的种子;存在时则通知处理单元80,否则通知VLAN拓扑生成单元40。
处理单元80,用于当判断单元70判断种子列表中存在其他种子时,对所有作为种子的设备分别作为第一设备,通知设备获取单元20和VLAN信息获取单元30,获取所述种子的所述待查看VLAN的信息。
通过使用本发明提供的方法和设备,根据网络的物理拓扑,结合VLAN映射关系可以直观的显示网络中指定VLAN的分布,增加VLAN拓扑中包括的信息量,使用户可以直观的获取到网络中VLAN的部署情况。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。