发明内容
本发明所要解决的技术问题是解决以太网运营、管理和维护中链路跟踪路径信息检索量大、效率低,且当链路中存在故障时,无法从大量信息中将正确路径信息快速提供给用户的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种基于IEEE802.1ag链路跟踪路径信息检索方法,包括以下步骤:
步骤10:配置发起LT功能的CFM参数;
步骤20:根据用户需要发起LT功能,相应需求的MEP发出LTM帧,该LTM的序列号是该LTM的标识符,且序列号在5秒内不会重复;
步骤30:NM进程等待5秒钟,且在此期间NM进程与CFM进程转换,将正确的LTR帧中的信息提取出来添加入LTM下挂的链表中;如果超时不再接收与这次LT功能序列号相同的LTR帧;
步骤40:使用链路跟踪路径信息逆向检索方法对存储的LTR节点信息进行排序和剔除;
步骤50:对使用链路跟踪路径信息逆向检索方法之后的结果进行输出显示;
所述步骤40包括以下步骤:
步骤401:首先在全局变量gLtmList中确定出LTM信息节点;
步骤402:遍历一遍LTR信息链表,看是否能从中找出TerminalMep标志位为1的LTR信息节点;
步骤403:如果没有找到TerminalMep标志位为1的LTR信息节点,就将步骤401中确定的LTM信息节点下挂的LTR信息链表全部输出,同时提示用户本次发起的LT功能没有到达目标MEP;如果找到TerminalMep标志位为1的LTR信息节点,则转至步骤404;
步骤404:将找到的LTR信息节点放在链表头部;
步骤405:将步骤404中找到的LTR信息节点中携带的前一跳出端口信息的后六位与发起者MEP的MAC地址比较;
步骤406:如果比较结果相同,就将链表中处于TerminalMep标志位为1的LTR信息节点之后的所有信息节点删除,并将排序好的链表显示输出;
步骤407:如果比较结果不同,遍历处于TerminalMep标志位为1的LTR信息节点之后的所有LTR信息节点,看是否能找到携带下一跳出端口信息的后六位与步骤404中找到的LTR信息节点的前一跳出端口信息中的后六位相同的节点,如果能找到这样的节点就返回到步骤404;
步骤408:如果没有找到步骤407中所述的节点,那么就将处于TerminalMep标志位为1的LTR信息节点之后的所有LTR信息节点删除,同时将排序好的链表显示输出,并显示虽然到达目标MEP,但是在发起者MEP与目标MEP之间的链路可能有某些节点有问题。
在上述方案中,所述步骤30中描述的NM进程与CFM进程转换的步骤包括以下步骤:
步骤301:CFM进程接收LTR帧,并判断接收的LTR帧中的层级是否与发起者MEP的层级相同,即是否收到了正确的LTR;如果相同则转至步骤305;
步骤302:判断接收到的LTR帧的层级比发起者MEP的层级低还是高;
步骤303:如果LTR帧中的层级比发起者MEP的层级低,就将该LTR帧丢弃;
步骤304:如果LTR帧中的层级比发起者MEP的层级高,就将该LTR帧转发;
步骤305:将正确的LTR帧中的信息提取出来添加入LTM下挂的链表中。
进一步地,所述LTR信息的存储结构采用了双层链表结构,首先定义全局LTM链表变量LIST gLtmList,然后定义LTM信息结构体变量,该变量用于存储LTM节点信息,再定义LTR信息结构体变量,该变量用于存储LTR节点信息。当特定MEP发起一次LT功能时,首先会在全局变量gLtmList之下添加一个LTM节点的信息结构体变量,当该MEP每收到一个LTR时就会将该LTR节点中的有用信息提取出来,存储在LTR信息结构体变量中并将该节点添加到LTM节点信息结构体变量的链表中。
当特定MEP发起了一次成功的LT功能之后,如超过超时时间则将LTM节点删除。
本发明提供的方法不似现有技术那样从发起者MEP开始查找,而是从目标MEP开始查找,并且在应对故障情况的时候,不会类似现有技术那样把所有的节点的所有路径的组合检索一遍,就可以输出结果,遍历的次数由正确路径上的以太网OAM节点决定。如上所述,该方法快速显示出发起链路跟踪功能之后的正确路径信息,提高了检索效率。
具体实施方式
本发明提供了一种基于IEEE802.1ag的链路跟踪路径信息检索方法,从目标MEP开始查找,尽快的显示出发起链路跟踪功能之后的路径信息,这些信息包括链路上可能处于的状况、用户期望的目标地点是否可达。
本发明是以IEEE802.1ag的逻辑体系作为背景的,IEEE802.1ag的逻辑体系结构如下:
以太网运营、管理和维护(OAM)所要面对的第一件事就是如何区分已经不再单纯的网络环境,在城域网中各个组织关系错综复杂,对于这种环境以太网OAM采用分层分集的办法将各个组织通过逻辑概念区分出来。
以连通性故障管理(CFM)为例。以太网OAM首先将城域网中的各个组织大致区分为客户、服务提供商和运营商三种角色,对三种角色建立共8层的维护域(MD,Maintenance Domains),将8个层级分配给三种角色。如表1所示:
表1 CFM中维护域层级
角色 | 范围 | 分配的层级 |
运营商 | NNI到NNI或者运营商之间 | 0、1或2 |
服务提供商 | NPE到NPE或者提供商之间 | 3或4 |
客户 | UNI到UNI | 5、6或7 |
实际中可按照客户需求自己分配层级,表1中的分配方式是CFM建议的方式。MD是IEEE 802.1ag协议故障管理功能所涉及到的网络区域,通过一系列域内服务接入点(DSAP,Domain Service Access Points)点来界定。维护域内部是完全连接的(这里所说的完全连接是指在没有故障的情况下,在该MD中每加入一个MEP将会与该域中的其他每个MEP具有连通性),处于该维护域中的MEP和这个维护域内的其他所有MEP相互连接,除非出现了连接故障。DSAP是域内的一个服务接入点,是维护域和其他维护域的边界点,可以用来连接网管对维护域进行管理。ISAP是维护域的内部节点,可以传递维护信息。每一个维护域可以单独进行管理,都有一个自己的维护域名称来与其他维护域进行区分,因此一个维护域的名称与其他维护域的名称应该不相同并且是全局唯一的。MD所具有的主要的属性包括:MD的名字、MD名字的格式、MD名字的长度、MD的索引和MD的层级。这些都会在帧格式和数据结构中得到具体的体现。
按照分层分集的思路,CFM对MD进行了进一步的细分,根据涉及的业务将MD细分为维护集(MA,Maintenance Associations),MA是维护域中的一个实例,维护域中根据需要可以配置出多个业务实例(如一个VLAN),与业务实例相关的DSAP构成了一个维护集MA,其各个端点称为MEP,涉及到的中间节点称为MIP,MA通过MA名称来区分。维护集主要属性包括:MA的名字、MA的索引、MA名字格式、MA名字长度、MA中CCM的发送周期和MA包含的VLAN。MA的主要作用是在MD内对不同的业务进行区分,MA的各个属性就是为这个目的服务的。MA的属性也会在帧格式和数据结构中体现出来。
对于已经细分到业务的逻辑域,现在要对逻辑域的边界和元素进行划分。相应的就出现了维护集端点(MEP,Maintenance Associations End PointIdentifier)和维护域中间点(MIP,Maintenance Domain Intermediate Point)。MEP主要作用是确定MA的边缘并发起、终结各种以太网OAM定义的功能。MEP同时带有MEP CCM数据库。
在上述阐述的基础上,IEEE 802.1ag建立了一个线性拓扑逻辑体系。如图2所示。
从图2中可以看出如下几个特点:
第一,拓扑是线性的,这个拓扑并不说明以太网OAM不能在环上使用,一方面环上会有阻塞点来保证环的运行,另一方面以太网OAM是处于管理层的协议,它自己的机制可以保证在配置正确的情况下就算是在环上运行两点之间在逻辑上也是一个线性拓扑。
第二,图2中清晰的描述了分层和层与层之间的关系。
第三,描述了MEP、MIP在以太网OAM体系中的位置和粗略的作用。
第四,描述了一个逻辑路径,该逻辑路径是端到端,而且该逻辑路径通过的各个层级中逻辑实体的过程也做了大致描述。
下面以图3为例简要分析链路检索过程,以下分析如果不特别说明都会基于满配情况下进行考虑。
一方面:
当设备1对设备12的MEP发出LTM之后,1可能收到设备3、4、5、8、9、10、12回复的LTR(总共的LTR信息节点个数为7),1会期望显示1-12的正确的路径信息,所以1需要对所有收到的LTR信息进行检索。现有技术会根据设备1的自有信息找到设备4,由于4上有多条路径可供选择,1会先发现1-4-3这条路径(检索节点次数7+6=13,具体方法为,首先一共有3、4、5、8、9、10、12共7个节点,发现路径1-4-3的时候会先从7个节点中找出4,此时检索次数为7次,然后将节点4排除,只剩下6个节点,再从6个节点中找出1-4-3中的3号节点,此时检索的次数为6次。),但1发现3并不能达到目标MEP。然后在满配况下1会发现1-4-5路径(检索信息节点次数6,因为设备4已经检索过了,只用找到设备5的节点),显然1-4-5路径不能到达设备12。再检索到路径1-4-9之后(检索信息节点次数为4,因为3和5都已经排除,只用在余下的找出9就可以了),由于设备9有分岔,1可能发现路径1-4-9-8(检索信息节点次数为3,9已经找到只用在余下的8、10、12中找出8即可),但路径1-4-9-8不能达到设备12。再次检索时可能发现路径1-4-9-10(检索信息节点次数为2),该路径也不能达到12。最后1会发现正确路径1-4-9-12(检索信息节点次数为1,需要一次检索来确认),最终显示该路径。通过上面的阐述可以看出:在这个并不复杂的树状拓扑中总共的检索次数为13+6+4+3+2+1=29。
如果使用逆向检索方法,即从目标设备出发寻找源头设备,则设备1通过检索本地接收的LTR信息,首先找到设备12返回的LTR(检索信息节点次数为7),通过设备12的信息直接找到设备9(检索信息节点次数为6,显然能从1到达12的只能通过9)。通过设备9直接找到设备4(检索信息节点次数为5,显然能从1到达12且通过9的只能是4)。通过设备4直接找到1(检索信息节点次数为1,此时只需要比对设备4中的前一跳信息是否是设备1就可以了,这只是作为检索中操作的一步)。通过上面的说明可以看出,在这个并不复杂的树状拓扑中运用了逆向检索方法之后的检索次数为7+6+5+1=19。相比于现有技术是大为改进了,检索次数减少了 的计算量。
另一方面:
如果出现故障导致设备12无法回复LTR,然设备1接收到了设备3、4、5、8、9、10的LTR,在现有技术中总共会检索节点数28次(会减少确认设备12的那次)。
如果出现故障导致设备12无法回复LTR,虽然设备1接收到了设备3、4、5、8、9、10的LTR,设备1只用检索的节点6次就可以结束流程。检索次数减少了79%
本发明的实现是与LTR信息的存储结构紧密相关的,它采用了双层链表结构,如图4所示,首先定义全局LTM全局变量LIST gLtmList,然后定义LTM信息结构体变量,该变量用于存储LTM节点信息,再定义LTR信息结构体变量,该变量用于存储LTR节点信息。当特定MEP发起一次LT功能时,首先会在全局变量gLtmList之下添加一个LTM节点的信息结构体变量,当该MEP每收到一个LTR时就会将该LTR节点中的有用信息提取出来,存储在LTR信息结构体变量中并将该节点添加到LTM节点信息结构体变量的链表中。这样发起一个LT功能在超时时间之内收到的LTR节点都会下挂在LTM节点信息结构体变量链表中,然后对LTR信息链表进行操作。
在以上的描述中,所有存储下来的LTR信息都与发起LTM的MEP是处于同一个MD或MA中的,如果不处于同一个MD或MA中,发起者MEP不会存储。也就是说,相同MD或MA中MEP返回的无论是否是正确路径上的LTR都会存储下来,而不同MD或MA中无论是否处于正确的路径上都不会存储。
为了避免gLtmList无限变大,采用将LTM节点信息老化的方法来解决。该老化时间是可配置的,范围是1秒至1小时;也就是说在发起了一次成功的LT功能(在命令行显示出结果后)之后,超过超时时间就会将该LTM节点删除。
本发明实现的技术方案是以逻辑实体MEP为研究对象,在MEP上通过逆向检索方法完成的。MEP作为CFM功能的发起方和结束方,其上LT功能的流程如图5所示。在LT功能发起时,有一个进程之间的转换的过程,发起LT功能的是NM进程,在NM进程等待的5秒钟中,接收LTR的是CFM进程,并对LTR进行甄别,当NM进程等待了5秒之后,仍由NM进程对LTR链表进行排序并显示可能的结果。具体步骤如下:
步骤10:配置CFM环境,设置发起LT功能的CFM参数;
步骤20:根据用户需要发起LT功能,启动定时器,相应需求的MEP发出LTM帧,该LTM的序列号是该LTM的标识符,且序列号在5秒内不会重复;
步骤30:NM进程等待5秒钟且在此期间NM进程与CFM进程转换,如果超时就不再接收与这次LT功能序列号相同的LTR帧,即使该LTR是正确的;
步骤301:CFM进程接收LTR帧,并判断接收的LTR帧中携带的目的MAC地址是否是发起者MEP的MAC地址,且LTR帧中的层级是否与发起者MEP的层级相同,即是否收到了正确的LTR;如果相同则转至步骤305;
步骤302:判断接收到的LTR帧的层级比发起者MEP的层级低还是高;
步骤303:如果LTR帧中的层级比发起者MEP的层级低,就将该LTR帧丢弃,之后转至步骤301;
步骤304:如果LTR帧中的层级比发起者MEP的层级高,就将该LTR帧转发,之后转至步骤301;
步骤305:将正确的LTR帧中的信息提取出来添加入LTM下挂的链表中;
步骤40:使用链路跟踪路径信息逆向检索方法对存储的LTR节点信息进行排序和剔除;
步骤50:对使用链路跟踪路径信息逆向检索方法之后的结果进行输出显示;
至此在MEP上的LT流程结束。其中步骤40包括以下步骤,如图6所示:
步骤401:首先在全局变量gLtmList中确定出LTM信息节点,该节点是在发起LT功能的时候建立的,它的信息是由MEP建立的;
步骤402:该步骤是在等待超时时间之后进行的,此时已将接收到的LTR提取信息并存储在LTM信息节点下挂的LTR信息链表中了,该步骤就是遍历一遍LTR信息链表,看是否能从中找出TerminalMep标志位为1的LTR信息节点;
步骤403:如果没有找到TerminalMep标志位为1的LTR信息节点,就将步骤401中确定的LTM信息节点下挂的LTR信息链表全部输出,同时提示用户本次发起的LT功能没有到达目标MEP,可能是链路上出现了故障;如果找到TerminalMep标志位为1的LTR信息节点,则进入步骤404;
步骤404:将找到的LTR信息节点放在链表头部;
步骤405:将步骤404中找到的LTR信息节点中携带的前一跳出端口信息的后六位与发起者MEP的MAC地址比对;
步骤406:如果比较结果相同,就将链表中处于TerminalMep标志位为1的LTR信息节点之后的所有信息节点删除,并将排序好的链表显示输出;
步骤407:如果比较结果不同,遍历处于TerminalMep标志位为1的LTR信息节点之后的所有LTR信息节点,看是否能找到携带下一跳出端口信息的后六位与步骤404中找到的LTR信息节点的前一跳出端口信息中的后六位相同的节点;如果能找到这样的节点就返回到步骤404;
步骤408:如果没有找到步骤407中所述的节点,那么就将处于TerminalMep标志位为1的LTR信息节点之后的所有LTR信息节点删除,同时将排序好的链表显示输出,并显示虽然到达目标MEP,但是在发起者MEP与目标MEP之间的链路可能有某些节点有问题。
本发明的优点在于,在一个树状拓扑上返回许多除正确链路节点信息之外还有许多链路冗余节点信息,显然如果从发起点去找目标点会有多条错误路径(本地存储LTR信息的数据结构可以从发起点去找目标点),增加了检索、排序的难度,如果从目标点出发去找发起点,链路是唯一且明显的(这是由LTR在本地存储信息节点的数据结构决定的),这提高了排序、查找的效率。
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。