具体实施方式
网络设备中,对于通过CPU发送出去的报文,一般会经过转发芯片进行转发处理。本发明实施例中,对于CPU发送的结构相似的报文,交给转发芯片进行处理,由转发芯片对报文进行复制,再将复制的报文转发出去,这样,将CPU需要处理多个报文,改为只要处理一个报文就可以了,因而降低了CPU的负担。
下面结合附图对本发明实施例进行详细描述。
本发明实施例中,需要预先根据网络设备管理或控制的需要,针对CPU需要发送的用于实现特定管理或控制功能的多个具有相似结构的协议报文,取其特征值,并可进一步生成映射表,该映射表中可包括:协议报文的类型、协议报文的特征值,以及该特征值在协议报文中所在字段的字段名称或字段标识等信息。该映射表可被网络设备的转发模块(以下称为转发芯片)访问。
根据网络设备管理或控制的需要,可以取协议报文的以太网、FR(FrameRelay,帧中继)或ATM(AsynchronousTransferMode,异步传输模式)等不同链路层的字段值作为特征值。
针对映射表中的协议报文类型,在网络设备的转发芯片上,配置相应的转发策略,以指示转发模块在接收到相应类型的协议报文后,复制该协议报文,并从需要转发该类型协议报文的端口转发出去。
当网络设备需要实现某种特定管理或控制功能的时候,如图1所示,执行以下流程:
步骤101,网络设备的CPU发送用于实现某种特定管理或控制功能的协议报文,如环路监测报文。
步骤102~103,该网络设备的转发芯片收到CPU发送的协议报文后,提取该协议报文特定字段的字段值,并与预先设置的特征值进行匹配,若匹配,则转入步骤104,否则转入步骤106。
根据前述描述,网络设备上可预先配置映射表,以供转发芯片查询。该映射表可包括:协议报文类型、特征值,以及该特征值在协议报文中所在字段的字段名称或字段标识等信息。转发芯片可查询该映射表,根据映射表中的字段名称或字段标识信息,从接收到的协议报文中提取相应字段的字段值,并与映射表中该字段名称或字段标识对应的特征值进行比较,若一致,则认为该协议报文与该字段的特征值相匹配。
该映射表中,针对一种协议报文类型,可以设置多个特征值,并对应每个特征值给出该特征值在协议报文中所在字段的字段名称或字段标识。相应的,转发芯片在对接收到的协议报文进行特征值匹配时,需要根据各特征值所对应的字段,从该协议报文中分别提取相应字段的字段值,并分别与相应特征值进行比较,只有每个特征值均与协议报文中的相应字段值匹配,才认为该协议报文与特征值相匹配。
如果仅需要针对某一种特定管理或控制功能采用本发明实施例的方式发送协议报文,则可以简化映射表的结构,比如可以仅包括该管理或控制功能的特征值和该特征值在协议报文中所在字段的字段名称或字段标识。甚至可以不建立映射表,而仅配置特征值,转发芯片从CPU接收到协议报文后,可提取指定字段(该字段可通过各种方式被转发芯片所知,比如预先配置的方式)的字段值,并将其与配置的特征值进行匹配。
步骤104,该转发芯片查询该协议报文的复制数目以及每份协议报文的出端口,然后转入步骤105。
具体实施时,可预先根据匹配到的协议报文类型或特征值(协议报文类型和该协议报文的特征值是一一对应的关系),设置对应的转发策略,包括复制数目以及从哪些端口转发。比如,对于环路监测协议报文,若VLAN2和VLAN4使能了环路监测功能,则对应的转发策略为:复制2份协议报文,其中一份在VLAN2内转发,另一份在VLAN4内转发。
步骤105,该转发芯片根据查询到的复制数目复制该协议报文,并将复制得到的各份协议报文通过相应的出端口转发出去。
根据步骤104的描述,如果查询到的转发策略为:复制2份协议报文,其中一份在VLAN2内转发,另一份在VLAN4内转发,则转发芯片分别查询VLAN2的成员端口和VLAN4的成员端口,将一份协议报文从VLAN2的成员端口转发出去,将另一份协议报文从VLAN4的成员端口转发出去。
步骤106,该转发芯片按照常规方式转发该协议报文。
如果该协议报文需要周期发送,则CPU按照设定周期每次发送一个协议报文,转发芯片可通过上述流程,根据该协议报文所执行的管理控制功能,对该报文进行复制(比如复制N份),并通过相应端口转发出去。而在相同场景下,若采用现有技术,CPU每次都要生成并发送N个协议报文。由此可以看出,采用本发明实施例,可以有效降低CPU的负担。
上述网络设备可以是路由器或交换机等网络设备,可以是集中式设备,也可以是分布式设备。若为分布式设备,比如机框设备,包括主控板和多个线卡板,主控板包括主用主控板和备用主控板,其上设置有CPU,线卡板上设置有转发芯片。主用主控板上的CPU执行管理或控制操作,可发送实现特定管理或控制功能的协议报文,各线卡板上的转发芯片接收到CPU发送的协议报文后,按照上述流程进行匹配操作以及根据匹配结果进行报文复制和转发处理。
将上述方法应用在二层环路监测中,可以有效降低网络设备CPU的负担。
下面结合图2,对网络设备进行二层环路监测的一种具体实现流程进行详细描述。
二层环路监测报文的典型特征是目的MAC(MediaAccessControl,媒体访问控制)地址(DMAC)为特定MAC地址,比如可以是组播MAC地址01-0F-E2-00-00-07,因此可将目的MAC地址作为环路监测报文的特征值建立映射表,该映射表可如表1所示。
表1、映射表
网络设备上还配置了需要进行二层环路监测的VLAN,并可将使能了二层环路监测的VLAN数量设置在广播表中,比如,广播表可如表2所示,其中因为有2个VLAN(VLAN2和VLAN4)使能了二层环路检测,因此复制数目为2。
表2、广播表
网络设备上还配置有MLL(MulticastLinkList,组播链表)表和VLAN表。MLL表中包含有各VLAN的相关信息,MLL表可如表3所示,其中给出了使能了二层环路监测的VLAN包括VLAN2、VLAN4。VLAN表中包含有各VLAN的成员端口信息。
表3、MLL表
表3中的COPYID为复制标识,与使能了二层环路监测的VLAN一一对应,例如,对每个使能了二层环路监测的VLAN从0开始顺序编号得到相应VLAN的COPYID,VLAN表中以COPYID作为索引列出了相应VLAN的成员端口信息,从而可以根据MLL表查询使能了二层环路监测的VLAN的COPYID,然后以查询到的COPYID为索引查询VLAN表中相应VLAN的成员端口信息。
如图2所示,当CPU按照设定周期发送环路监测报文时,该流程可包括:
步骤201,CPU发送环路监测报文,其DMAC地址为组播MAC地址01-0F-E2-00-00-07。该环路监测报文的格式可采用现有环路监测报文格式,图3示出了一种环路监测报文的以太网头格式,其中:
DMAC:报文的目的MAC地址,此处为组播MAC地址01-0F-E2-00-00-07;
SMAC:报文的源MAC地址,采用发送该报文的设备的桥MAC地址;
TPID:VLAN标签的类型,取值为0x8100;
TCI:VLAN标签的具体值,具体内容为优先级、VLANID等;
Type:协议类型,此处取值为0x8918,表示此报文为二层环路监测报文。
步骤202,转发芯片从CPU接收到协议报文后,查询表1所示的映射表,根据该映射表,提取协议报文的DMAC字段值,并与映射表中DMAC字段的特征值进行比较,发现两者一致,则判定该协议报文为环路监测报文,其类型标识为Loop_monitoring。
步骤203,转发芯片根据Loop_monitoring查询表2所示的广播表,根据广播表得知有2个VLAN使能了环路监测功能,因此得到报文复制数目为2份。
步骤204,转发芯片根据Loop_monitoring查询MLL表,获得使能了环路检测功能的VLAN为VLAN2、VLAN4。
步骤205,转发芯片查询VLAN表,得到VLAN2、VLAN4的成员端口信息。
步骤206,转发芯片将复制得到的环路监测报文从VLAN2、VLAN4的成员端口转发出去。
网络设备发出环路监测报文后,若接收到本设备发出的环路监测报文,则判断网络中存在环路,该流程可采用现有技术实现。
为简化技术实现,本发明实施例中,可在网络设备中预先配置环路监测表,并对于从设备端口进入的协议报文,采用如图4所示的流程进行处理。表4示出了一种环路监测表。
表4、环路监测表
其中,使能环路监测标志为1,表明相应VLAN使能了环路监测功能,使能环路监测标志为0,表示相应VLAN未使能环路监测功能。
为了节省环路监测表的开销,环路监测表中可仅包含使能了环路监测功能的VLAN对应的表项,比如表4中可以不用包含VLAN1和VLAN3对应的表项。
如图4所示,当网络设备从其设备端口接收到协议报文后,执行以下流程:
步骤401,有协议报文从网络设备端口进入后,相应转发芯片查询表1所示的映射表,根据该映射表,提取协议报文的DMAC字段值,并与映射表中DMAC字段的特征值进行比较,发现两者一致,则判定该协议报文为环路监测报文,然后转入步骤402。
步骤402,转发芯片判定从设备端口进入的报文为环路监测报文后,提取该环路监测报文的源MAC地址,并判断是否为本设备的MAC地址,如果是本设备的MAC地址,则转入步骤403,否则返回步骤401,对接收到的下一个协议报文继续进行处理。
步骤403,转发芯片根据该环路监测报文的接收端口所属的VLAN,在环路监测表中将相应表项的“监测结果标志”置位为1,表示从该VLAN接收到本设备发出的环路监测报文。例如,若环路监测报文的接收端口所属VLAN为VLAN2,则将表4所示的环路监测表中VLAN2对应的“监测结果标志”置1(默认情况下,各表项的“监测结果标志”为0)。
这样,只要有协议报文从网络设备端口进入,即执行上述流程。
CPU可通过读取该环路监测表,得知哪些VLAN下存在二层环路。比如,对于表4所示的环路监测表,若VLAN2的“监测结果标志”值为1,则表明VLAN2下存在二层环路,若VLAN4的“监测结果标志”值为0,则表明VLAN4下不存在二层环路。需要说明的是,即使VLAN3的“监测结果标志”值为1,但由于VLAN3未使能环路监测,因此也不能判定VLAN3下存在二层环路。
优选的,CPU可以每隔一段时间读取环路监测表,以获知当前网络中是否存在环路。
需要说明的是,上述流程并没有严格的时序要求,比如对于从网络设备端口进入的协议报文,可先判断其是否是本设备发出的,再判断其是否是环路监测报文。
通过以上流程可以看出,对于二层环路监测,采用本发明实施例可以减轻CPU的负担,进一步的,通过转发芯片对于从网络设备端口接入的报文进行特征值匹配等操作,维护环路监测表,从而使CPU可以通过读取环路监测表得知网络中是否存在环路,从而简化了技术实现。
基于相同的技术构思,本发明实施例还提供了一种网络设备。
参见图5,为本发明实施例提供的网络设备的结构示意图,该网络设备可以是路由器或交换机,可以是分布式设备也可以是集中式设备。如图所示,该网络设备可包括CPU51和至少一个转发模块52,其中:
CPU51,用于发送协议报文;
转发模块52,用于在接收到所述CPU发送的协议报文后,将所述协议报文指定字段的字段值与预设的特征值进行比较,若两者匹配,则查询所述协议报文的复制数目以及每份协议报文的出端口,将收到的协议报文复制为等同于复制数目的多份协议报文,并将复制得到的各份协议报文通过相应的出端口转发。
具体实现时,可预先在该网络设备上配置映射表53,如前所述,该映射表可包括:协议报文类型、特征值,以及该特征值在协议报文中所在字段的字段名称或字段标识等信息。相应的,转发模块52可通过查询该映射表53进行特征值匹配比较。
具体的,如图6A所示,转发模块52可包括:第一接收单元521、比较单元522、转发单元523,其中:
第一接收单元521,用于接收CPU发送的协议报文;
比较单元522,用于将所述协议报文指定字段的字段值与预设的特征值进行比较,具体的,可通过查询映射表53实现;
查询单元523,用于在所述比较单元的比较结果为两者匹配的情况下,查询所述协议报文的复制数目以及每份协议报文的出端口;
转发单元524,用于根据查询到的复制数目复制所述协议报文,并将复制得到的各份协议报文通过相应的出端口转发。
具体的,对应于预设的特征值设置有复制数目以及每份协议报文对应的VLAN。相应的,查询单元523可根据所述特征值查询对应的复制数目,以及每份协议报文对应的VLAN,分别根据每份协议报文对应的VLAN,查询相应VLAN的成员端口。转发单元524可将复制得到的各份协议报文通过相应VLAN的成员端口转发。
具体的,预设的特征值可以是多个,每个特征值对应于协议报文的相应字段。相应的,比较单元522可根据预设的各特征值对应的字段,从接收到的协议报文中分别提取相应字段的字段值,并分别与相应特征值进行比较。这种情况下,判定为匹配是指:每个特征值与协议报文中相应字段的字段值一致。
进一步的,可用上述网络设备实现环路监测。这种情况下,对应于所述环路监测报文的目的MAC地址,设置有复制数目以及每份协议报文对应的VLAN,其中,所述复制数目与使能了环路监测的VLAN数量相同,每份协议报文对应的VLAN均为使能了环路监测的VLAN。
在该种情况下,比较单元522具体用于:在所述第一转发单元接收到CPU发送的协议报文后,将所述协议报文的目的MAC地址与环路监测报文的目的MAC地址进行比较。
进一步的,在用该网络设备实现环路监测时,如图6B所示,转发模块52还可包括:第二接收单元525、环路判断单元526和环路标记单元527,其中:
第二接收单元525,用于从本设备端口接收协议报文;
环路判断单元526,用于在所述第二接收单元接收到协议报文后,将所述协议报文目的媒体接入控制MAC地址与环路监测报文的目的MAC地址进行比较(可通过查询映射表实现),将所述协议报文的源MAC地址与本设备的源MAC地址比较;
环路标记单元527,用于在所述环路判断单元判断所述协议报文的目的MAC地址与环路监测报文的目的MAC地址相匹配,且所述协议报文的源MAC地址为本设备的MAC地址时,对所述协议报文的接收端口所属的VLAN进行环路监测标记。
具体的,可在该网络设备上设置环路监测表54,其结构可如前所述。环路标记单元527可将协议报文的接收端口所属的VLAN对应的环路监测标志进行置位,如在环路监测表54中,将相应VLAN对应的环路监测标志进行置位。CPU51还可按照设定时间查询各VLAN对应的环路监测标志,若有VLAN对应的环路监测标志被置位,且该VLAN使能了环路监测功能,则判定该VLAN下存在环路。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。