CN113114567B - 一种消息处理方法、装置、电子设备及存储介质 - Google Patents
一种消息处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113114567B CN113114567B CN202110336921.5A CN202110336921A CN113114567B CN 113114567 B CN113114567 B CN 113114567B CN 202110336921 A CN202110336921 A CN 202110336921A CN 113114567 B CN113114567 B CN 113114567B
- Authority
- CN
- China
- Prior art keywords
- lmdb
- acl
- message
- node
- acl message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种消息处理方法、装置、电子设备及存储介质。该方法包括:在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB,该LMDB包括至少一个LDMB节点,每个LDMB节点包括最近一次记录的、用于表征需要执行一次ACL规则操作的ACL消息;根据本次的ACL消息,判断所述LMDB中是否存在与本次的ACL消息相对应的LMDB节点;若存在,则比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点;若不存在,则将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;按照当前的LMDB向交换芯片下发ACL规则。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种消息处理方法、装置、电子设备及存储介质。
背景技术
在多协议标签交换(Multiprotocol Label Switching,MPLS)的三层虚拟专用网络(Level 3 Virtual Private Network,L3VPN)中,该组网涉及交换设备组,该交换设备组包括多个交换设备,交换设备可以为服务提供商网络边缘(Provider Edge,PE)设备或服务提供商网络(Provider,P)设备。在入口PE设备上,当报文进入该PE设备后,需要进行路由查找得到对应的公网标签,然后进行标签封装后将报文进入到MPLS网络域;在MPLS网络域中的中间P设备上,需要执行标签查找操作,然后根据标签对报文进行不同的路径转发。
而在入口PE上的访问控制列表(Access Control Lists,ACL)流量调度是基于互联网协议(Internet Protocol,IP)地址进行的,通过匹配目的IP报文中的不同优先级的差分服务代码点(Differentiated Services Code Point,DSCP)进入不同的下一跳。在中间P设备上,ACL的流量调度是基于标签进行的,通过匹配MPLS报文中的优先级(用EXP表征)进入不同的下一跳。
以图1所示的流量转发为例进行说明,流量进入交换芯片后,通过路由查找或者标签查找获取路由信息库(Route Information Base,RIB),再根据报文的优先级(IP报文为DSCP,MPLS报文为EXP),查询已经存在的ACL规则,如果命中,则按照新的目的(DEST)地址查找,如果没有命中则走默认路径。通过此机制,完成流量调度,以达到匹配报文优先级进入不同隧道的目的。然而当下一跳DEST变为无效时,需要删除交换芯片中对应的ACL规则,否则会导致丢包,资源残留等问题。由于交换芯片下发ACL规则非常慢,尤其在实际组网中,当下一跳变化特别是链路不稳定时,会产生的大量ACL增删消息,导致CPU协议快速计算与实际交换芯片下发ACL硬件的时间差异非常明显,导致大量的ACL增删消息等待处理。而且这些ACL增删消息中,很多是可以抵消掉的,即无需下发硬件的。
因此,如何解决现有技术中当下一跳发送变化特别是链路震荡时下发多余的ACL硬件所导致的消息堆积和资源的浪费的问题是值得考虑的技术问题之一。
发明内容
有鉴于此,本申请提供一种消息处理方法、装置、电子设备及存储介质,用以解决现有技术中当下一跳发送变化特别是链路震荡时下发多余的ACL硬件所导致的消息堆积和资源的浪费的问题。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种消息处理方法,包括:
在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB,所述LMDB包括至少一个LDMB节点,每个LDMB节点包括最近一次记录的、用于表征需要执行一次ACL规则操作的ACL消息;
根据本次的ACL消息,判断所述LMDB中是否存在与本次的ACL消息相对应的LMDB节点;
若存在,则比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点;
若不存在,则将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;
按照当前的LMDB向交换芯片下发ACL规则。
根据本申请的第二方面,提供一种消息处理装置,包括:
获取模块,用于在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB,所述LMDB包括至少一个LDMB节点,每个LDMB节点包括最近一次记录的、用于表征需要执行一次ACL规则操作的ACL消息;
判断模块,用于根据本次的ACL消息,判断所述LMDB中是否存在与本次的ACL消息相对应的LMDB节点;
节点处理模块,用于若所述判断模块的判断结果为存在,则比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点;若所述判断模块的判断结果为不存在,则将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;
规则下发模块,用于按照当前的LMDB向交换芯片下发ACL规则。
根据本申请的第三方面,提供一种电子设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。
根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。
本申请实施例的有益效果:
通过实施本实施例提供的消息处理方法,利用LMDB数据库来存储ACL消息并进行ACL消息抵消,使得LMDB数据库存储的ACL消息均为消息抵消后需要下发给交换芯片的ACL消息,这样按照该LMDB数据库进行ACL规则下发时,也就不会存在链路不稳定时大量的ACL增删消息中无用的ACL消息下发到交换芯片的情况,进而也就不会存在CPU快速计算与交换芯片下发硬件的时间慢而导致的时间差异明显的问题。
附图说明
图1是现有技术提供的流量转发示意图;
图2是本申请实施例提供的一种消息处理方法的流程示意图;
图3是本申请实施例提供的消息处理架构图;
图4是本申请实施例提供的一种消息处理装置的结构示意图;
图5是本申请实施例提供的实施消息处理方法的电子设备的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面对本申请提供的消息处理方法进行详细地说明。
参见图2,图2是本申请提供的一种消息处理方法的流程图,该方法可以应用到P设备中,P设备在执行上述消息处理方法时,可以结合图3所示的消息处理架构进行说明,该方法可包括如下所示步骤:
S201、在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取LMDB。
其中,上述LMDB包括至少一个LDMB节点,每个LDMB节点包括最近一次记录的、用于表征需要执行一次ACL规则操作的ACL消息。
本步骤中,本实施例采用了一种快速内存映射数据库(Lightning Memory MappedDatabase,LMDB)来存储历史产生的ACL消息。上述LMDB数据库包括多个LMDB节点,每个LMDB节点对应一个ACL规则,该LMDB节点中存储有对该ACL规则需要执行的操作。但是ACL规则根据实际场景需要发生变更,例如删除ACL规则或新增ACL规则等等。而对每个ACL规则执行下发操作时势必会产生大量的ACL消息,本申请为了避免ACL消息下发至交换芯片所导致的无用ACL消息过多且占用过多资源的情况发生,参考图3所示,本申请提出在基于协议计算产生每个ACL消息后,将其存储到LMDB数据库中,再存储到LMDB时可以采用一些方法对一些ACL消息进行抵消,这样就可以避免不必须要的ACL消息下发至交换芯片中。
具体地,当生成本次用于下发ACL规则的ACL消息时,就可以获取LMDB数据库,以准备执行对ACL消息的抵消操作。
值得注意的是,本申请不同的ACL规则对应的LMDB节点不同,相应地,不同的ACL规则对应的关键字key不同,在此基础上,不同的LMDB节点对应的关键字key不同,也就是说,在LMDB数据库中仅存储针对同一个ACL规则的LMDB节点,该LMDB节点中记录的ACL消息动态更新。
S202、根据本次的ACL消息,判断所述LMDB中是否存在与本次的ACL消息相对应的LMDB节点;若存在,则执行步骤S203;若不存在,则执行步骤S204。
本步骤中,每个ACL消息包括关键字key,为了方便描述,可以将LMDB节点中记录的最近一次记录的、用于对ACL规则执行操作的ACL消息记为LMDB消息。在此基础上,在执行步骤S202时,从本次的ACL消息中解析出关键字key,然后利用解析出的key去遍历LMDB数据库,若LMDB数据库中存在关键字key与解析出的key相同的LMDB消息(最近一次记录的ACL消息),则表明LMDB数据库中存在之前产生的、需要对本次的ACL消息对应的ACL规则执行的操作的ACL消息,但之前产生的ACL消息暂未下发至交换芯片,则可以上述存在的LMDB消息所在的LMDB节点即为LMDB数据库中存在与本次的ACL消息相对应的LMDB节点,则此时执行步骤S203;若LMDB数据库中不存在关键字key与解析出的key相同的LMDB消息(最近一次记录的ACL消息),则确认不存在与本次ACL消息对应的LMDB节点,同时表明之前不存在针对本次的ACL消息对应的ACL规则的操作,或者针对本次的ACL消息对应的ACL规则的操作已执行完,则执行步骤S204。
S203、比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点。
本步骤中,在步骤S202比对出LMDB数据库中与本次的ACL消息相对应的LMDB节点中记录的ACL消息,也即LMDB消息后,就可以将本次的ACL消息与查找到的LMDB消息信息比对,然后根据比对结果就可以更新上述LMDB消息,也即更新上述存在的LMDB节点中的ACL消息,可以基于比对结果对本次的ACL消息进行抵消处理,从而避免本次的ACL消息和查找到的LMDB节点中的ACL消息均下发至交换芯片所导致的硬件下发次数多和资源浪费的问题发生。
S204、将本次的ACL消息作为新的LMDB节点插入到所述LMDB中。
本步骤中,当LMDB数据库中不存在与本次的ACL消息相对应的LMDB节点时,则将本次的ACL消息作为新的LMDB节点并插入到LMDB数据库中。
S205、按照当前的LMDB向交换芯片下发ACL规则。
本步骤中,LMDB数据库为动态更新的,其内存储的每个LMDB节点均为消息抵消后需要下发给交换芯片的ACL消息,这样就可以基于LDMB进行ACL消息的下发,也请参考图3所示。通过按照该LMDB数据库进行ACL规则下发,就不会存在链路不稳定时大量的ACL增删消息中无用的ACL消息下发到交换芯片的情况,进而也就不会存在CPU快速计算与交换芯片下发硬件的时间慢而导致的时间差异明显的问题。
需要说明的是,图2仅是一个示例。实际应用中,步骤S205也可以在步骤S201之前实施,具体可以根据实际情况而定。
一种可能的实施例中,每个ACL消息包括硬件动作,上述硬件动作可以但不限于包括添加动作、删除动作和更新动作等等。
在此基础上,可以按照下述过程执行步骤S203:若本次的ACL消息中的硬件动作为添加动作且所述记录的ACL消息中的硬件动作为删除动作,则将所述存在的LMDB节点中的ACL消息更新为本次的ACL消息。
具体地,当本次的ACL消息中的硬件动作为添加动作,而记录的ACL消息中的硬件动作为删除工作时,则表明该ACL消息对应的ACL规则已下发至交换芯片,则此时只需要利用本次的ACL消息替换上述存在的LMDB节点中记录的ACL消息,即,将所述存在的LMDB节点中的目的地址更新为本次的ACL消息中的目的地址,同时将上述LMDB节点中记录的ACL消息中的硬件动作更新为刷新动作,以便将本次的ACL消息对应的ACL规则下发至交换芯片。由此一来,实现了ACL消息的抵消,从而也避免了本次的ACL消息和LMDB节点中记录的ACL消息均下发给交换芯片所导致的硬件下发次数较多且浪费资源的问题。
另一种可能的实施例中,当每个ACL消息包括硬件动作时,还可以按照下述过程执行步骤S203:若本次的ACL消息中的硬件动作为删除动作且所述记录的ACL消息中的硬件动作为添加动作,则删除所述存在的LMDB节点,并将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;若本次的ACL消息中的硬件动作为删除动作且所述记录的ACL消息中的硬件动作为刷新动作,则将所述存在的LMDB节点中的硬件动作更新为删除动作。
具体地,当本次的ACL消息中的硬件动作为删除动作,而记录的ACL消息中的硬件动作为添加动作时,则表明该ACL消息对应的ACL规则还未下发至交换芯片,则此时可以删除与本次的ACL消息对应的LMDB节点,然后基于本次的ACL消息生成新的LMDB节点并插入到LMDB数据库中。这样也就实现了ACL消息的抵消,从而也避免了本次的ACL消息和LMDB节点中记录的ACL消息均下发给交换芯片所导致的硬件下发次数较多且浪费资源的问题。
然而,当本次的ACL消息中的硬件动作为删除动作,而记录的ACL消息中的硬件动作为刷新动作时,则表明本次的ACL消息对应的ACL规则已下发至交换芯片,则此时只需要将上述存在的LMDB节点中记录的ACL消息中的硬件动作更新为删除动作。这样,也就实现了ACL消息的抵消,进而也就解决了现有技术中当下一跳发送变化特别是链路震荡时下发多余的ACL硬件所导致的消息堆积和资源的浪费的问题。
另一种可能的实施例中,每个ACL消息中包括硬件动作和目的地址,则可以按照下述过程执行步骤S203:若本次的ACL消息中的硬件动作为刷新动作且所述记录的ACL消息中的硬件动作为添加动作或刷新动作,则将所述存在的LMDB节点中的目的地址更新为本次的ACL消息中的目的地址;若本次的ACL消息中的硬件动作为刷新动作且所述记录的ACL消息中的硬件动作为刷新动作,则将所述存在的LMDB节点中的目的地址更新为本次的ACL消息中的目的地址。
具体地,当本次的ACL消息中的硬件动作为刷新动作,而记录的ACL消息中的硬件动作为添加动作时,则表明本次的ACL消息对应的ACL规则未下发至交换芯片,则只需将LMDB节点中记录的ACL消息中的目的地址更新为本次ACL消息中的目的地址,而该LMDB节点中结论的ACL消息中的硬件动作保持不变,依然为添加动作;或者,或者在将LMDB节点中记录的ACL消息中的目的地址更新为本次的ACL消息中的目的地址后,还可以将记录的ACL消息中的硬件动作更新为添加动作,这样,也就实现了ACL消息的抵消。
同理,当本次的ACL消息中的硬件动作为刷新动作,而记录的ACL消息中的硬件动作为刷新动作时,表明本次的ACL消息对应的ACL规则已下发至交换芯片,此时只需要执行一次刷新即可,基于此,只需将LMDB节点中记录的ACL消息中的目的地址更新为本次的ACL消息中的目的地址,而该LMDB节点中结论的ACL消息中的硬件动作保持不变,依然为刷新动作;或者在将LMDB节点中记录的ACL消息中的目的地址更新为本次的ACL消息中的目的地址后,还可以将记录的ACL消息中的硬件动作更新为刷新动作;这样也就实现了ACL消息的抵消,进而也就解决了现有技术中当下一跳发送变化特别是链路震荡时下发多余的ACL硬件所导致的消息堆积和资源的浪费的问题。
需要说明的是,实际应用中,一般不会存在除上述实施例以外的情况,一旦出现除上述实施例以外的情况,则表明属于协议计算错误。
需要说明的是,基于上述任一实施例,每个ACL消息包括关键字key和数据data两种结构,其中关键字key结构包括信息库(BASE)、类型(TYPE)、优先级(EXP)和差分服务代码点(DSCP),用key={BASE,TYPE,EXP,DSCP}表征。而数据data结构包括硬件动作(ACTION)和目的地址(DEST),用data={ACTION,DEST}表征,上述任一实施例中涉及的硬件动作和目的地址即存储在ACL消息的数据data结构中,其中,ACTION是指需要对ACL规则执行的硬件操作;而DEST是指需要下发ACL规则的目的地址。此外,每个ACL消息对应一个ACL规则,例如图3中,当ACL消息的BASE为BASE1,DEST为DEST1时,该ACL消息对应的ACL规则为:BASE1+DSCP->DEST1;若ACL消息的BASE为BASE1,DEST为DEST2时,该ACL消息对应的ACL规则为:BASE1+DSCP->DEST2等等。
可选地,在对LMDB数据库执行操作时,包括对LMDB节点的操作和对LMDB节点中记录的ACL消息中的硬件动作的操作,可以用表1进行标识:
表1
表1中,NEW_LMDB_Action表征对新节点的动作,OLD_LMDB_Action表征对旧LMDB节点的操作。Add_HD表征对硬件动作的添加操作;Delet_HD表征对硬件动作的删除;Refresh_HD表征对硬件动作的更新操作。而表1中,(X,X)中左侧括号的内容表征对LMDB节点的操作,右侧括号的内容表征对LMDB节点中ACL消息中的硬件动作的操作,当括号内的值均为X时表征不执行任何操作。例如(删除,添加)中的删除表征对LMDB节点的删除操作,而添加表征将LMDB节点中记录的ACL消息中的硬件动作修改为添加动作。
可选地,每个ACL消息包括该ACL消息对应的ACL规则;在此基础上,可以按照下述过程执行步骤S205:从所述当前的LMDB中读取LMDB节点中的ACL消息;将读取到的ACL消息下发给交换芯片;从所述当前的LMDB中删除读取的LMDB节点。
具体地,也请参考图3所示,在从当前的LMDB数据库读取LMDB节点记录的ACL消息(也称LMDB消息)后,可以基于读取到的ACL消息中的DEST将读取到的ACL消息下发给DEST对应的交换芯片,这样也就实现了ACL规则的下发。此外,由于上述ACL消息已经从LMDB数据库中读取且对应规则已下发至交换芯片中,则此ACL消息已不需要再保存在LMDB数据库中,也即不需要占用LMDB数据库的存储资源,因此本实施例提出将读取出的ACL消息所在的LMDB节点从LMDB数据库中删除。这样,既可以避免已经下发ACL规则的ACL消息的重复下发所导致的错误发生及资源浪费,也可以避免LMDB数据库的资源浪费。
具体地,在执行消息抵消和消息下发时,可以由同一个进程实施,这样也就不会存在LMDB数据库被多个进程同时操作的情况。但是实际应用中,为了保证消息抵消和消息下发独立运行,时间上不存在先后的效果,在执行消息抵消和消息下发时,还可以由两个进程分别执行,例如用协议计算进程来执行消息抵消流程,即执行步骤S201~S204;由ACL下发进程来执行ACL消息的下发流程,即执行步骤S205。需要说明的是,上述协议计算进程和ACL下发进程可以为CPU里创建的两个进程。
当由两个进程分别执行消费抵消和消息下发时,可以按照下述过程执行步骤S205:对所述当前的LMDB进行加锁;在按照当前的LMDB向交换芯片下发ACL规则后,对所述当前的LMDB进行解锁。
具体地,在ACL下发进程需要执行ACL消息下发操作时,为了避免LMDB数据库不被协议计算进程所占用所导致的LMDB数据库中消息错误,本实施例提出对当前的LMDB数据库执行加锁操作,然后按照当前的LMDB数据库中的LMDB节点中的ACL消息向交换芯片下发对应的ACL规则,这样就可以避免其他进程操作该LMDB数据库,同时也实现了ACL规则的下发。而且,由于LMDB数据库中的ACL消息是经过消息抵消后的ACL消息,这样也就不会存在链路不稳定时大量的ACL增删消息中无用的ACL消息下发到交换芯片的情况,进而也就不会存在CPU快速计算与交换芯片下发硬件的时间慢而导致的时间差异明显的问题。
在此基础之上,在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB之后,还包括:对获取到的LMDB进行加锁。更进一步地,在根据比对结果更新所述存在的LMDB节点之后,或者在将本次的ACL消息作为新的LMDB节点插入到所述LMDB中之后,还包括:对所述LMDB数据库进行解锁。
具体地,在协议计算进程经过协议计算出需要下发的ACL消息后,在需要利用LMDB数据库进行消息抵消时,为了避免LMDB数据库不被ACL下发进程所占用所导致的LMDB数据库中消息错误,本实施例提出在生成本次的ACL消息后,对当前获取到的LMDB数据库进行加锁操作,然后在执行完步骤S203或者S204之后,也即对LMDB数据库中的ACL消息执行完消息抵消操作后,再对LMDB数据库进行解锁。这样,就可以避免其他进程操作该LMDB数据库,同时,由于执行了消息抵消操作,使得LMDB数据库中的ACL消息是经过消息抵消后的ACL消息,这样也就不会存在链路不稳定时大量的ACL增删消息中无用的ACL消息下发到交换芯片的情况,也即避免链路反复震荡所导致的消息堆积和内存占用的情况发生,进而也就不会存在CPU快速计算与交换芯片下发硬件的时间慢而导致的时间差异明显的问题,也即极大减少了因震荡所导致的硬件下发,基本保证链路稳定时下发的ACL规则为最新的规则。此外,通过对LMDB数据库执行加锁解锁操作,减少了ACL对锁的占用,以避免串口挂死。
基于同一发明构思,本申请还提供了与上述消息处理方法对应的信息处理装置。该信息处理装置的实施具体可以参考上述对信息处理方法的描述,此处不再一一论述。
参见图4,图4是本申请一示例性实施例提供的一种信息处理装置,包括:
获取模块401,用于在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB,所述LMDB包括至少一个LDMB节点,每个LDMB节点包括最近一次记录的、用于表征需要执行一次ACL规则操作的ACL消息;
判断模块402,用于根据本次的ACL消息,判断所述LMDB中是否存在与本次的ACL消息相对应的LMDB节点;
节点处理模块403,用于若所述判断模块402的判断结果为存在,则比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点;若所述判断模块402的判断结果为不存在,则将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;
规则下发模块404,用于按照当前的LMDB向交换芯片下发ACL规则。
一种可能的实施例中,每个ACL消息包括硬件动作;则
上述节点处理模块403,具体用于若本次的ACL消息中的硬件动作为添加动作且所述记录的ACL消息中的硬件动作为删除动作,则将所述存在的LMDB节点中的ACL消息更新为本次的ACL消息。
一种可能的实施例中,每个ACL消息包括硬件动作;则
上述节点处理模块403,具体用于若本次的ACL消息中的硬件动作为删除动作且所述记录的ACL消息中的硬件动作为添加动作,则删除所述存在的LMDB节点,并将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;若本次的ACL消息中的硬件动作为删除动作且所述记录的ACL消息中的硬件动作为刷新动作,则将所述存在的LMDB节点中的硬件动作更新为删除动作。
一种可能的实施例中,每个ACL消息包括硬件动作和目的地址;则
上述节点处理模块403,具体用于若本次的ACL消息中的硬件动作为刷新动作且所述记录的ACL消息中的硬件动作为添加动作或刷新动作,则将所述存在的LMDB节点中的目的地址更新为本次的ACL消息中的目的地址。
可选地,每个ACL消息包括该ACL消息对应的ACL规则;则
上述规则下发模块404,具体用于从所述当前的LMDB中读取LMDB节点中的ACL消息;将读取到的ACL消息下发给交换芯片;从所述当前的LMDB中删除读取的LMDB节点。
可选地,上述规则下发模块404,具体用于对所述当前的LMDB进行加锁;在按照当前的LMDB向交换芯片下发ACL规则后,对所述当前的LMDB进行解锁。
可选地,本实施例提供的消息处理装置,还包括:
加锁模块(图中未示出),用于所述获取模块401在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB之后,对获取到的LMDB进行加锁;
解锁模块(图中未示出),用于在所述节点处理模块403根据比对结果更新所述存在的LMDB节点之后,或者在将本次的ACL消息作为新的LMDB节点插入到所述LMDB中之后,对所述LMDB数据库进行解锁。
本实施例提供的消息处理装置中,利用LMDB数据库来存储ACL消息并进行ACL消息抵消,使得LMDB数据库存储的ACL消息均为消息抵消后需要下发给交换芯片的ACL消息,这样按照该LMDB数据库进行ACL规则下发时,也就不会存在链路不稳定时大量的ACL增删消息中无用的ACL消息下发到交换芯片的情况,进而也就不会存在CPU快速计算与交换芯片下发硬件的时间慢而导致的时间差异明显的问题。
基于同一发明构思,本申请实施例提供了一种电子设备,如图5所示,包括处理器501和机器可读存储介质502,机器可读存储介质502存储有能够被处理器501执行的计算机程序,处理器501被计算机程序促使执行本申请实施例所提供的消息处理方法。
上述计算机可读存储介质可以包括RAM(Random Access Memory,随机存取存储器)、DDR SRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器),也可以包括NVM(Non-volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选的,计算机可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
另外,本申请实施例提供了一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例所提供的消息处理方法。
对于电子设备以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述装置中各个单元/模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元/模块,即可以位于一个地方,或者也可以分布到多个网络单元/模块上。可以根据实际的需要选择其中的部分或者全部单元/模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种消息处理方法,其特征在于,包括:
在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB,所述LMDB包括至少一个LDMB节点,每个LDMB节点包括最近一次记录的、用于表征需要执行一次ACL规则操作的ACL消息;
根据本次的ACL消息,判断所述LMDB中是否存在与本次的ACL消息相对应的LMDB节点;
若存在,则比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点;
若不存在,则将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;
按照当前的LMDB向交换芯片下发ACL规则。
2.根据权利要求1所述的方法,其特征在于,每个ACL消息包括硬件动作;则
比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点,包括:
若本次的ACL消息中的硬件动作为添加动作且所述记录的ACL消息中的硬件动作为删除动作,则将所述存在的LMDB节点中的ACL消息更新为本次的ACL消息。
3.根据权利要求1所述的方法,其特征在于,每个ACL消息包括硬件动作;则
比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点,包括:
若本次的ACL消息中的硬件动作为删除动作且所述记录的ACL消息中的硬件动作为添加动作,则删除所述存在的LMDB节点,并将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;
若本次的ACL消息中的硬件动作为删除动作且所述记录的ACL消息中的硬件动作为刷新动作,则将所述存在的LMDB节点中的硬件动作更新为删除动作。
4.根据权利要求1所述的方法,其特征在于,每个ACL消息包括硬件动作和目的地址;则
比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点,包括:
若本次的ACL消息中的硬件动作为刷新动作且所述记录的ACL消息中的硬件动作为添加动作或刷新动作,则将所述存在的LMDB节点中的目的地址更新为本次的ACL消息中的目的地址。
5.根据权利要求1所述的方法,其特征在于,每个ACL消息包括该ACL消息对应的ACL规则;则按照当前的LMDB向交换芯片下发ACL规则,包括:
从所述当前的LMDB中读取LMDB节点中的ACL消息;
将读取到的ACL消息下发给交换芯片;
从所述当前的LMDB中删除读取的LMDB节点。
6.根据权利要求1所述的方法,其特征在于,按照当前的LMDB向交换芯片下发ACL规则,包括:
对所述当前的LMDB进行加锁;
在按照当前的LMDB向交换芯片下发ACL规则后,对所述当前的LMDB进行解锁。
7.根据权利要求1所述的方法,其特征在于,在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB之后,还包括:
对获取到的LMDB进行加锁;
在根据比对结果更新所述存在的LMDB节点之后,或者在将本次的ACL消息作为新的LMDB节点插入到所述LMDB中之后,还包括:
对所述LMDB数据库进行解锁。
8.一种消息处理装置,其特征在于,包括:
获取模块,用于在生成本次用于下发访问控制列表ACL规则的ACL消息后,获取快速内存映射数据库LMDB,所述LMDB包括至少一个LDMB节点,每个LDMB节点包括最近一次记录的、用于表征需要执行一次ACL规则操作的ACL消息;
判断模块,用于根据本次的ACL消息,判断所述LMDB中是否存在与本次的ACL消息相对应的LMDB节点;
节点处理模块,用于若所述判断模块的判断结果为存在,则比对本次的ACL消息和存在的LMDB节点中记录的ACL消息,并根据比对结果更新所述存在的LMDB节点;若所述判断模块的判断结果为不存在,则将本次的ACL消息作为新的LMDB节点插入到所述LMDB中;
规则下发模块,用于按照当前的LMDB向交换芯片下发ACL规则。
9.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的计算机程序,所述处理器被所述计算机程序促使执行权利要求1-7任一项所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有计算机程序,在被处理器调用和执行时,所述计算机程序促使所述处理器执行权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110336921.5A CN113114567B (zh) | 2021-03-29 | 2021-03-29 | 一种消息处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110336921.5A CN113114567B (zh) | 2021-03-29 | 2021-03-29 | 一种消息处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113114567A CN113114567A (zh) | 2021-07-13 |
CN113114567B true CN113114567B (zh) | 2022-03-29 |
Family
ID=76712722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110336921.5A Active CN113114567B (zh) | 2021-03-29 | 2021-03-29 | 一种消息处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113114567B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115348171A (zh) * | 2022-08-12 | 2022-11-15 | 中国工商银行股份有限公司 | 网络设备的访问控制列表管理方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102362281A (zh) * | 2009-03-18 | 2012-02-22 | 日本电气株式会社 | 策略生成和转换系统、策略分配系统及其方法和程序 |
CN104579940A (zh) * | 2013-10-10 | 2015-04-29 | 杭州华三通信技术有限公司 | 查找访问控制列表的方法及装置 |
CN106034054A (zh) * | 2015-03-17 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 冗余访问控制列表acl规则文件检测方法和装置 |
CN109067744A (zh) * | 2018-08-08 | 2018-12-21 | 新华三技术有限公司合肥分公司 | Acl规则处理方法、装置及通信设备 |
CN112073438A (zh) * | 2020-10-10 | 2020-12-11 | 迈普通信技术股份有限公司 | 一种访问控制规则配置方法、装置、交换机及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10700959B2 (en) * | 2017-04-09 | 2020-06-30 | Barefoot Networks, Inc. | Source routing design with simplified forwarding elements |
-
2021
- 2021-03-29 CN CN202110336921.5A patent/CN113114567B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102362281A (zh) * | 2009-03-18 | 2012-02-22 | 日本电气株式会社 | 策略生成和转换系统、策略分配系统及其方法和程序 |
CN104579940A (zh) * | 2013-10-10 | 2015-04-29 | 杭州华三通信技术有限公司 | 查找访问控制列表的方法及装置 |
CN106034054A (zh) * | 2015-03-17 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 冗余访问控制列表acl规则文件检测方法和装置 |
CN109067744A (zh) * | 2018-08-08 | 2018-12-21 | 新华三技术有限公司合肥分公司 | Acl规则处理方法、装置及通信设备 |
CN112073438A (zh) * | 2020-10-10 | 2020-12-11 | 迈普通信技术股份有限公司 | 一种访问控制规则配置方法、装置、交换机及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113114567A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10574574B2 (en) | System and method for BGP sFlow export | |
EP2214357B1 (en) | Method and system for facilitating forwarding a packet in a content-centric network | |
US20100246446A1 (en) | Tree-based node insertion method and memory device | |
US7801151B2 (en) | Method and apparatus for forwarding service in a data communication device | |
EP2689568A1 (en) | Network topology discovery | |
Liu et al. | Incremental forwarding table aggregation | |
CN114978978A (zh) | 一种算力资源调度方法、装置、电子设备及介质 | |
US10467217B2 (en) | Loop detection in cuckoo hashtables | |
CN113114567B (zh) | 一种消息处理方法、装置、电子设备及存储介质 | |
US10546018B2 (en) | System and method of coalescing writes to a hardware table in a non-disruptive fashion | |
RU2454008C2 (ru) | Основанная на пригодности маршрутизация | |
US8488470B2 (en) | Withdrawing multiple advertised routes based on a single tag which may be of particular use in border gateway protocol | |
WO2021197004A1 (zh) | 发送路由、处理路由的方法、装置、设备及存储介质 | |
CN113904985A (zh) | 一种段列表获取方法、报文转发方法、装置及电子设备 | |
US11561823B1 (en) | Lockless management of immutable objects by multi-threaded processes using multiple counters | |
US20070025346A1 (en) | System and method for creating a routing table | |
US11811901B2 (en) | Platform agnostic abstraction for forwarding equivalence classes with hierarchy | |
US20060078333A1 (en) | Protocol speed increasing device | |
CN113472699A (zh) | 一种网络表项同步方法及装置 | |
US7423974B2 (en) | Disabling mutually recursive routes | |
US11368354B2 (en) | Multi-result lookups | |
CN110365723A (zh) | 非对称服务发现方法及设备 | |
CN116016211A (zh) | 一种网络业务的管理方法、装置、设备以及存储介质 | |
CN107547406B (zh) | 分布式evpn网关组网中建立fib表的方法和装置 | |
US20200076730A1 (en) | Router Methods and Apparatus for Managing Memory for Network Overlay Routes with Fallback Route Support Prioritization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |