发明内容
本发明实施例提供一种报文调度方法和设备,以及时处理用于维护邻居关系的协议报文,有效保证邻居关系的稳定。
为了达到上述目的,本发明实施例提供一种报文调度方法,该方法应用于协议报文自身发生拥塞的网络中,该方法包括以下步骤:
网络设备的转发芯片在收到报文后,所述转发芯片利用所述报文中携带的特征信息进行特征匹配;如果匹配到第一类型特征,但未匹配到第二类型特征,则将所述报文添加到第一优先级队列;如果匹配到第一类型特征,且匹配到第二类型特征,则将所述报文添加到第二优先级队列;其中,所述第二优先级队列的优先级优于所述第一优先级队列的优先级;
所述网络设备的中央处理器CPU在需要调度报文时,所述CPU判断所述第二优先级队列中是否有未调度的报文;如果是,则调度所述第二优先级队列中未调度的报文;如果否,则判断所述第一优先级队列中是否有未调度的报文;如果是,则调度所述第一优先级队列中未调度的报文。
所述方法还包括:
所述网络设备的CPU在调度所述第一优先级队列中未调度的报文时,如果发现所述第二优先级队列中有待调度的报文,则所述网络设备停止调度所述第一优先级队列中未调度的报文,并调度所述第二优先级队列中未调度的报文。
所述第一类型特征具体包括:能够匹配到指定类型协议的特征;
所述网络设备的转发芯片利用所述报文中携带的特征信息进行特征匹配之前,所述方法还包括:
所述网络设备的CPU在确定所述网络设备上已经使能指定类型协议时,在本网络设备的转发芯片上配置所述指定类型协议所对应的第一类型特征。
所述第二类型特征具体包括:用于表明邻居信息的特征;
所述网络设备的转发芯片利用所述报文中携带的特征信息进行特征匹配之前,所述方法还包括:
所述网络设备的CPU在确定所述网络设备当前已经与邻居网络设备建立邻居关系,且本网络设备当前已经存在的邻居数量小于预设数值时,所述网络设备的CPU获得所述邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置所述邻居网络设备对应的第二类型特征。
所述网络设备的CPU在本网络设备的转发芯片上配置所述邻居网络设备对应的第二类型特征之后,所述方法还包括:
所述网络设备的CPU在确定所述网络设备当前已经与所述邻居网络设备撤销建立的邻居关系之后,所述网络设备的CPU撤销本网络设备的转发芯片上配置的所述邻居网络设备对应的第二类型特征。
本发明实施例提供一种网络设备,该网络设备应用于协议报文自身发生拥塞的网络中,且该网络设备上具有转发芯片和CPU,该网络设备具体包括:
处理模块,用于在收到报文后,利用报文中携带的特征信息进行特征匹配;如果匹配到第一类型特征,但未匹配到第二类型特征,则将所述报文添加到第一优先级队列;如果匹配到第一类型特征,且匹配到第二类型特征,则将所述报文添加到第二优先级队列;其中,所述第二优先级队列的优先级优于所述第一优先级队列的优先级;
调度模块,用于在需要调度报文时,判断所述第二优先级队列中是否有未调度的报文;如果是,则调度所述第二优先级队列中未调度的报文;如果否,则判断所述第一优先级队列中是否有未调度的报文;如果是,则调度所述第一优先级队列中未调度的报文。
所述调度模块,还用于在调度所述第一优先级队列中未调度的报文时,如果发现所述第二优先级队列中有待调度的报文,则停止调度所述第一优先级队列中未调度的报文,并调度所述第二优先级队列中未调度的报文。
所述第一类型特征具体包括:能够匹配到指定类型协议的特征;
所述网络设备还包括:配置模块,用于在确定所述网络设备上已经使能指定类型协议时,在本网络设备的转发芯片上配置所述指定类型协议所对应的第一类型特征。
所述第二类型特征具体包括:用于表明邻居信息的特征;
所述网络设备还包括:配置模块,用于在确定所述网络设备当前已经与邻居网络设备建立邻居关系,且本网络设备当前已经存在的邻居数量小于预设数值时,获得所述邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置所述邻居网络设备对应的第二类型特征。
还包括:删除模块,用于在确定所述网络设备当前已经与所述邻居网络设备撤销建立的邻居关系之后,撤销本网络设备的转发芯片上配置的所述邻居网络设备对应的第二类型特征。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,通过对协议报文划分优先级,使得网络设备能够优先调度用于维护邻居关系的协议报文,从而及时处理用于维护邻居关系的协议报文,不会由于协议报文的拥塞导致邻居震荡,有效保证邻居关系的稳定,减少断流出现的可能。
具体实施方式
针对现有技术中存在的问题,本发明实施例提供一种报文调度(即由CPU对报文进行调度)方法,该方法应用于协议报文自身发生拥塞的网络中,且本发明实施例中,通过对协议报文划分优先级,使得网络设备能够优先调度用于维护邻居关系的协议报文;本发明实施例中,为了对协议报文划分优先级,需要在网络设备的转发芯片上配置第一类型特征和第二类型特征。
该第一类型特征为匹配指定类型协议的基本特征,且该第一类型特征具体包括能够匹配到指定类型协议的特征,即利用该第一类型特征可以将相关报文判定为该指定类型协议的协议报文,该第一类型特征通常为目的MAC、协议号、目的端口号等;该第二类型特征为匹配指定类型协议的高级特征,且该第二类型特征具体包括用于表明邻居信息的特征;例如,当指定类型协议为协议A时,第一类型特征为匹配协议A的基本特征,第二类型特征用于将协议A的协议报文进行二次分类,为匹配协议A的高级特征。
具体的,网络设备的CPU在确定本网络设备上已经使能指定类型协议(即启动指定类型协议)后,在本网络设备的转发芯片上配置该指定类型协议所对应的第一类型特征,即网络设备的CPU向本网络设备的转发芯片下发第一类型特征,如目的MAC为0180C2000000。
网络设备的CPU在确定本网络设备当前已经与邻居网络设备建立邻居关系后,则网络设备的CPU获得邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置邻居网络设备对应的第二类型特征,即网络设备的CPU向本网络设备的转发芯片下发邻居网络设备对应的第二类型特征。
本发明实施例的优选实施方式中,网络设备的CPU向本网络设备的转发芯片下发邻居网络设备对应的第二类型特征的方式包括但不限于如下方式:
方式一、网络设备的CPU在确定本网络设备当前已经与邻居网络设备建立邻居关系后,获得邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置邻居网络设备对应的第二类型特征,即网络设备的CPU向本网络设备的转发芯片下发邻居网络设备对应的第二类型特征。
方式二、网络设备可以配置优先保活的邻居个数(即预设数值),当发生协议报文拥塞时,可以优先保证该预设数值的邻居保持稳定连接。基于此,网络设备的CPU在确定本网络设备当前已经与邻居网络设备建立邻居关系后,如果本网络设备当前已经存在的邻居数量小于预设数值,则网络设备的CPU获得邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置邻居网络设备对应的第二类型特征,即网络设备的CPU向本网络设备的转发芯片下发邻居网络设备对应的第二类型特征。
具体的,网络设备的CPU在收到来自邻居网络设备的用于建立邻居关系的HELLO报文后,按照现有流程与邻居网络设备建立邻居关系;网络设备的CPU在获知本网络设备与邻居网络设备建立邻居关系后,即网络设备与邻居网络设备之间的邻居关系处于稳态后(如针对边界网关协议BGP协议,当状态机处于建立Established状态时,表明邻居关系处于稳态),如果本网络设备当前已经存在的邻居数量不小于预设数值,则不在本网络设备的转发芯片上配置第二类型特征;如果本网络设备当前已经存在的邻居数量小于预设数值,则CPU获得邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置第二类型特征,即向本网络设备的转发芯片下发第二类型特征。
方式三、网络设备可以配置优先保活的邻居个数(即预设数值)以及网段信息,当发生协议报文拥塞时,可以优先保证该预设数值的位于该网段信息的邻居保持稳定连接。基于此,网络设备的CPU在确定本网络设备当前已经与邻居网络设备建立邻居关系后,如果本网络设备当前已经存在的邻居数量小于预设数值,且邻居网络设备位于上述网段信息内,则该网络设备的CPU获得邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置邻居网络设备对应的第二类型特征,即网络设备的CPU向本网络设备的转发芯片下发邻居网络设备对应的第二类型特征。
具体的,网络设备的CPU在收到来自邻居网络设备的用于建立邻居关系的HELLO报文后,按照现有流程与邻居网络设备建立邻居关系;网络设备的CPU在获知本网络设备与邻居网络设备建立邻居关系后,即网络设备与邻居网络设备之间的邻居关系处于稳态后(如针对边界网关协议BGP协议,当状态机处于建立Established状态时,表明邻居关系处于稳态),如果本网络设备当前已经存在的邻居数量不小于预设数值或者邻居网络设备不位于上述网段信息内,则不在本网络设备的转发芯片上配置第二类型特征;如果本网络设备当前已经存在的邻居数量小于预设数值且邻居网络设备位于上述网段信息内,则CPU获得邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置第二类型特征,即向本网络设备的转发芯片下发第二类型特征。
本发明实施例中,该第二类型特征具体包括用于表明邻居信息的特征,网络设备的CPU获得邻居网络设备对应的第二类型特征的过程为:网络设备直接从来自邻居网络设备的协议报文(即用于确定本网络设备当前已经与邻居网络设备建立邻居关系的协议报文)中获得第二类型特征。
例如,当报文中IP头偏移12字节后的内容为用于表明邻居信息的特征时,网络设备的CPU从来自邻居网络设备的协议报文中获得第二类型特征为该协议报文的IP头偏移12字节后的内容,如果IP头偏移12字节后的内容为0xc80a017d,则网络设备的CPU获得邻居网络设备对应的第二类型特征为:IP头偏移12字节后的内容是0xc80a017d。又例如,当报文中IP头偏移12字节后的内容以及IP头偏移49字节后的内容为用于表明邻居信息的特征时,网络设备的CPU从来自邻居网络设备的协议报文中获得第二类型特征为该协议报文的IP头偏移12字节后的内容以及IP头偏移49字节后的内容,如果IP头偏移12字节后的内容为0xc80a017d,IP头偏移49字节后的内容为03,则网络设备的CPU获得邻居网络设备对应的第二类型特征为:IP头偏移12字节后的内容是0xc80a017d,且IP头偏移49字节后的内容为03。
本发明实施例中,针对上述方式二和方式三,网络设备的CPU在本网络设备的转发芯片上配置第二类型特征之后,该网络设备的CPU还需要将本网络设备当前已经存在的邻居数量加1。
本发明实施例中,针对上述方式一、方式二和方式三,网络设备的CPU在本网络设备的转发芯片上配置邻居网络设备对应的第二类型特征之后,如果网络设备当前已经与邻居网络设备撤销已经建立的邻居关系,则该网络设备的CPU还需要撤销本网络设备的转发芯片上配置的邻居网络设备对应的第二类型特征。
具体的,网络设备的CPU在收到来自邻居网络设备的用于撤销邻居关系的HELLO报文之后,需要按照现有流程进行邻居关系撤销过程,且在网络设备与邻居网络设备撤销建立的邻居关系之后,该网络设备的CPU还需要撤销本网络设备的转发芯片上配置的邻居网络设备对应的第二类型特征,即向本网络设备的转发芯片下发撤销第二类型特征的操作。
下面以EVI组网对第一类型特征和第二类型特征的配置过程进行描述:
EVI组网中通过ENDP(EVI Neighbor Discovery Protocol,EVI邻居发现协议)来自动发现站点,并建立EVI邻居关系;其中,该ENDP主要用于实现跨站点的邻居发现功能,自动协商并建立EVI虚链路,并触发网络设备自身运行EVI-ISIS(Intermediate system to intermediate system,中间系统到中间系统)路由协议等;基于ENDP的上述功能,为了维持EVI邻居的稳定性,需要对ENDP协议进行优先上送。具体的,在正常环境下建立邻居关系时,进行第一类型特征和第二类型特征的配置,当组网环境中受到攻击威胁时,可以保证匹配第一类型特征和第二类型特征的邻居的协议报文优先进行调度,从而保证了这部分邻居的稳定性。
首先,网络设备的CPU确定第一类型特征为UDP(User DatagramProtocol,用户数据包协议)目的端口=53333,并获知报文中IP头偏移12字节后的内容以及IP头偏移49字节后的内容为用于表明邻居信息的特征,即从来自邻居网络设备的协议报文中获得第二类型特征为该协议报文的IP头偏移12字节后的内容以及IP头偏移49字节后的内容,以及,配置优先保活的邻居个数为2,即预设数值为2。
其次,假设管理ENDP协议的进程为endpd,则endpd进程启动时,将第一类型特征(UDP目的端口=53333)下发给转发芯片;当收到ENDP报文,且类型为新邻居建立时,则按照原有流程建立新邻居;当邻居状态机已经稳定(即网络设备与邻居网络设备之间的邻居关系处于稳态,如针对BGP协议,当状态机处于Established状态时,表明邻居关系处于稳态)以后,则判断当前已保活的邻居个数;如果小于2,则获取该邻居网络设备的第二类型特征;在此应用场景下,第二类型特征为协议报文的IP头偏移12字节后的内容(如0xc80a017d)以及IP头偏移49字节后的内容(如03)。进一步的,将特征“IP头偏移12字节内容为0xc80a017d”、“IP头偏移49字节内容为03”作为第二类型特征下发给转发芯片;如果大于等于2,则不需要获取该邻居网络设备的第二类型特征,也不需要将第二类型特征下发给转发芯片。
本发明实施例中,如图2所示,该报文调度方法包括以下步骤:
步骤201,网络设备的转发芯片在收到报文后,该转发芯片利用报文中携带的特征信息进行特征匹配;如果未匹配到第一类型特征和第二类型特征,则转发芯片确定报文为数据报文,后续将按照数据报文的转发流程进行处理;如果匹配到第一类型特征,但未匹配到第二类型特征,则转发芯片将报文添加到第一优先级队列;如果匹配到第一类型特征,且匹配到第二类型特征,则转发芯片将报文添加到第二优先级队列。
本发明实施例中,所述第二优先级队列的优先级优于所述第一优先级队列的优先级。
如图3所示,为转发芯片收到的报文示意图,转发芯片在收到图3所示的报文之后,开始特征匹配过程;转发芯片首先匹配UDP目的端口字段,如果目的端口号不是53333,则确定报文为数据报文,后续进行数据报文转发处理;如果目的端口号为53333,则转发芯片继续进行下一特征的匹配;如果IP头偏移12字节内容为0xc80a017d,且IP头偏移49字节内容为03,则转发芯片将该报文添加到第二优先级队列,如果不满足上述条件,则转发芯片将该报文添加到第一优先级队列。
步骤202,网络设备的CPU在需要调度报文时,该CPU判断第二优先级队列中是否有未调度的报文;如果是,则执行步骤203;如果否,则执行步骤204。
需要注意的是,第二优先级队列的优先级优于第一优先级队列的优先级,因此网络设备的CPU在需要调度报文时,需要首先判断第二优先级队列中是否有未调度的报文;其次判断第一优先级队列中是否有未调度的报文。
步骤203,网络设备的CPU调度第二优先级队列中未调度的报文,并结束本次调度流程。
步骤204,网络设备的CPU判断第一优先级队列中是否有未调度的报文;如果是,则执行步骤205;如果否,则结束本次调度流程。
步骤205,网络设备的CPU调度第一优先级队列中未调度的报文,并结束本次调度流程。
本发明实施例中,上述调度报文的过程具体为将报文上送CPU的过程;且对于同一优先级队列中报文的调度过程,将按先进先出的方式进行调度。
本发明实施例中,网络设备的CPU在调度第一优先级队列中未调度的报文的过程中,如果发现第二优先级队列中有待调度的报文,则网络设备的CPU停止调度第一优先级队列中未调度的报文,并调度第二优先级队列中未调度的报文。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种网络设备,该网络设备应用于协议报文自身发生拥塞的网络中,且该网络设备上具有转发芯片和CPU,如图4所示,该网络设备具体包括:
处理模块11,用于在收到报文后,利用报文中携带的特征信息进行特征匹配;如果匹配到第一类型特征,但未匹配到第二类型特征,则将所述报文添加到第一优先级队列;如果匹配到第一类型特征,且匹配到第二类型特征,则将所述报文添加到第二优先级队列;其中,所述第二优先级队列的优先级优于所述第一优先级队列的优先级;
调度模块12,用于在需要调度报文时,判断所述第二优先级队列中是否有未调度的报文;如果是,则调度所述第二优先级队列中未调度的报文;如果否,则判断所述第一优先级队列中是否有未调度的报文;如果是,则调度所述第一优先级队列中未调度的报文。
所述调度模块12,还用于在调度所述第一优先级队列中未调度的报文时,如果发现所述第二优先级队列中有待调度的报文,则停止调度所述第一优先级队列中未调度的报文,并调度所述第二优先级队列中未调度的报文。
本发明实施例中,所述第一类型特征具体包括:能够匹配到指定类型协议的特征;所述网络设备还包括:配置模块13,用于在确定所述网络设备上已经使能指定类型协议时,在本网络设备的转发芯片上配置所述指定类型协议所对应的第一类型特征。
本发明实施例中,所述第二类型特征具体包括:用于表明邻居信息的特征;所述网络设备还包括配置模块13,用于在确定所述网络设备当前已经与邻居网络设备建立邻居关系,且本网络设备当前已经存在的邻居数量小于预设数值时,获得所述邻居网络设备对应的第二类型特征,并在本网络设备的转发芯片上配置所述邻居网络设备对应的第二类型特征。
所述网络设备还包括:删除模块14,用于在确定所述网络设备当前已经与所述邻居网络设备撤销建立的邻居关系之后,撤销本网络设备的转发芯片上配置的所述邻居网络设备对应的第二类型特征。
本发明实施例中,上述处理模块11位于所述网络设备的转发芯片中,上述调度模块12、配置模块13和删除模块14位于所述网络设备的CPU中。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。