CN108574587B - 分布式设备的容量更新方法及装置 - Google Patents
分布式设备的容量更新方法及装置 Download PDFInfo
- Publication number
- CN108574587B CN108574587B CN201710138783.3A CN201710138783A CN108574587B CN 108574587 B CN108574587 B CN 108574587B CN 201710138783 A CN201710138783 A CN 201710138783A CN 108574587 B CN108574587 B CN 108574587B
- Authority
- CN
- China
- Prior art keywords
- cpu
- state table
- backup
- table entry
- 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
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请公开了一种分布式设备的容量更新方法及装置,属于通信技术领域。该方法包括:接收第二设备发送的第一分流表,第一分流表携带一个CPU标识序列,CPU标识序列中的每个CPU标识分别指示第二设备中的一个CPU;从第一分流表中确定第一设备中的每个状态表项对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系;根据该映射关系生成至少一个备份报文,并指示第二设备更新其包括的每个CPU的状态表项之后,切换至第二设备来处理业务报文。由于备份报文是按照第一分流表生成的,因此切换至第二设备来处理业务报文之后,第二设备也是按照第一分流表进行报文分流,从而避免业务报文被丢弃以导致流量中断的情况。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种分布式设备的容量更新方法及装置。
背景技术
随着网络的升级和扩容,传统的盒式防火墙已经很难满足大容量、高性能、可扩展的需求,以分布式防火墙为例的分布式设备应运而生。分布式设备通常包括主控板(Management Process Unit,MPU)、接口板(Line-card Process Unit,LPU)和至少一个业务板(Service Process Unit,SPU),且每个SPU可以包括至少两个中央处理器(CentralProcessing Unit,CPU)。其中,MPU用于配置业务和管理每个SPU中的CPU,LPU用于将接收到的业务报文分流到不同的CPU上,SPU中的CPU用于对业务报文进行处理。由于该至少一个SPU中的每个CPU都用于处理业务报文,因此,与传统的盒式设备相比,分布式设备的数据处理效率显著提升。然而,随着数据量的不断增涨,而分布式设备中每个SPU的处理能力是有限的,为了减小分布式设备的数据处理压力,往往需要增加分布式设备中SPU的数量。改变现有分布式设备中SPU的数量的也被称为容量更新。
在实际应用中,为了保证分布式设备提供服务时的稳定性,通常可以为该分布式设备配置备用设备,以便在该分布式设备发生故障时由该备用设备代替该分布式设备继续提供服务。为了便于描述,将该分布式设备称为第一设备,将该分布式设备的备用设备称为第二设备,其中,该备用设备通常也为分布式设备。相关技术中,当第一设备进行容量更新时,第一设备的MPU可以根据CPU数量发生变化后的每个CPU标识重新生成分流表,并将重新生成的分流表发送给LPU并由LPU替换之前存储的分流表,从而实现第一设备的容量更新。同样,第二设备也可以按照上述方法进行容量更新。
在第一设备进行容量更新之后,当第一设备的LPU接收到业务报文时,可以对该业务报文携带的地址信息进行哈希运算,得到用于处理该业务报文的CPU的标识在分流表中的位置。第一设备从存储的分流表中获取在该位置上存储的CPU标识,并将该业务报文转发至该CPU标识对应的CPU,以便于该CPU通过存储的状态表项对该业务报文进行处理。其中,每个状态表项分别对应一条业务流,且每个状态表项中存储有对对应业务流上的业务报文进行处理的处理策略和对应业务流的流信息。该流信息可以包括源互联网协议(InternetProtocol,IP)地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。为了便于第一设备在出现故障之后,第二设备可以顺利地代替第一设备继续对业务报文进行处理,第一设备还可以周期性地将每个CPU中存储的状态表项备份到第二设备。相关技术为了提高备份的效率,需要保证第一设备和第二设备中的CPU数量和CPU标识严格一致,之后,第一设备可以生成备份报文,备份报文中携带第一设备中的状态表项。第一设备将备份报文发送至第二设备中的LPU,第二设备的LPU接收到备份报文时,将备份报文发送给第二设备包括的至少一个SPU中的CPU,以便于第二设备中的每个CPU对存储的状态表项进行更新。
然而,当第一设备进行容量更新之后,第一设备中CPU的数量会发生改变,从而导致第一设备的MPU基于更新后的每个CPU标识生成的分流表与之前存储的分流表不同。进而在第一设备将后续接收到的业务报文发送给一个CPU之后,该CPU可能并非在容量更新前处理该业务报文所属业务流的CPU,因而未存储该业务报文所属业务流的状态表项,此时该CPU会将该业务报文丢弃,进而导致流量中断。
发明内容
为了解决在第一设备进行容量更新之后出现流量中断的问题,本发明实施例提供了一种分布式设备的容量更新方法及装置。所述技术方案如下:
第一方面,提供了一种分布式设备的容量更新方法,由第一设备执行,所述第一设备为用于对当前业务报文进行处理的设备,所述第一设备包括至少两个CPU,所述至少两个CPU中的每个CPU对应保存至少一个业务流的状态表项,所述方法包括:
接收第二设备发送的第一分流表,所述第一分流表携带一个CPU标识序列,所述CPU标识序列中的每个CPU标识分别指示所述第二设备中的一个CPU,所述第一分流表为所述第二设备包括的CPU的数量发生变化后向所述第一设备发送的;
确定所述第一设备中的每个状态表项在所述第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系;
根据所述映射关系,生成至少一个备份报文,所述至少一个备份报文中的每个备份报文携带一个CPU标识以及与所述CPU标识对应的至少一个状态表项;
将所述至少一个备份报文发送给所述第二设备,以指示所述第二设备根据所述每个备份报文携带的一个CPU标识以及与所述CPU标识对应的至少一个状态表项,更新所述第二设备中存储的状态表项;
将所述至少一个备份报文发送给所述第二设备之后,向所述第二设备发送备份完成通知消息,并将所述第一设备切换为暂不对后续业务报文进行处理的设备,所述备份完成通知消息用于指示所述第二设备对存储的状态表项更新之后,将所述第二设备切换为用于对后续业务报文进行处理的设备。
由于第一分流表为第二设备中的CPU数量发生变化之后,第二设备基于变化后的CPU标识生成得到,也即是,先改变第二设备中的CPU数量以对第二设备的容量进行更新,这样在接收到业务报文时,可以通过第一设备对业务报文进行处理,不会出现流量中断的情况。
另外,第一设备可以确定存储的每个状态表项在第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系,并基于该映射关系生成至少一个备份报文,并通过该至少一个备份报文中每个备份报文携带的一个CPU标识和该CPU标识对应的至少一个状态表项,对第二设备包括的每个CPU中的状态表项进行更新。由于每个备份报文中携带的CPU标识是从第一分流表中确定的,因此,将对业务报文进行处理的设备从第一设备切换到第二设备之后,第二设备按照第一分流表将后续接收到的业务报文分流到不同的CPU之后,就不会出现CPU上未存储该业务报文所属业务流的状态表项的情况,进而避免CPU将业务报文丢弃以导致流量中断的情况。
需要说明的是,每个状态表项分别对应一条业务流,且每个状态表项中存储有对对应业务流上的业务报文进行处理的处理策略和对应业务流的流信息,该流信息可以包括源IP地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。
当然,实际应用中,该流信息还可以为其他信息,比如,可以包括该业务流的源IP地址、目的IP地址和传输协议的组合,或者源IP地址、目的IP地址和目标端口的组合等等。
可选地,所述确定所述第一设备中的每个状态表项在所述第一分流表中对应的CPU标识,包括:
从所述第一设备包含的至少一个状态表项中选择出一个状态表项,对选择出的状态表项执行以下处理,直到处理完所述第一设备包含的每个状态表项为止:
对选择出的状态表项中的流信息进行哈希运算得到运算结果,所述运算结果指示所述CPU标识序列中的一个存储位置;
从所述CPU标识序列中的所述存储位置中获取CPU标识,确定获取的所述CPU标识为所述选择出的状态表项对应的CPU标识。
由于第一分流表是基于第二设备变化后的CPU标识生成得到,因此,通过对第一设备存储的每个状态表项中存储的流信息进行哈希运算,从而可以从第一分流表中准确地确定每个状态表项对应的CPU标识,进而为后续第二设备对业务报文进行处理提供可靠且准确的保障。
可选地,所述根据所述映射关系,生成至少一个备份报文,包括:
根据所述映射关系,将所述第一设备中存储的状态表项划分为至少一组,每组状态表项中包括至少一个状态表项,且同一组状态表项对应的CPU标识相同;
以组为单位,生成每组状态表项对应的一个备份报文,从而得到至少一个备份报文,所述至少一个备份报文中的每个备份报文的报文头部携带对应组中的状态表项对应的CPU标识、且所述每个备份报文包括对应组中包括的至少一个状态表项。
由于状态表项对应的CPU标识相同时,可以确定该状态表项会被备份到第二设备中的同一CPU上,因此,基于每个状态表项对应的CPU标识,将备份后得到的状态表项划分为至少一组之后,可以将该至少一组状态表项和该至少一组状态表项对应的CPU标识生成至少一个备份报文,这样就无需将每个状态表项和该状态表项对应的CPU标识单独生成一个备份报文,也即是,本发明实施例将备份到同一CPU的状态表项集成到一个备份报文中,这样可以减少备份报文的数量,从而可以提高状态表项的备份效率。
其中,在第一设备基于至少一组状态表项和该至少一组状态表项对应的CPU标识,生成至少一个备份报文时,第一设备可以先将该至少一组状态表项分别封装到至少一个报文中,然后在该至少一个报文的头部分别添加上各组状态表项对应的CPU标识,从而得到至少一个备份报文。
第二方面,提供了一种分布式设备的容量更新方法,由第二设备执行,所述第二设备不是对当前业务报文进行处理的设备,所述第二设备包括至少两个CPU,所述方法包括:
确定所述第二设备包括的CPU的数量发生变化后,生成第一分流表,所述第一分流表携带一个CPU标识序列,所述CPU标识序列中的每个CPU标识分别指示CPU的数量发生变化后所述第二设备包括的一个CPU;
向第一设备发送所述第一分流表;
接收所述第一设备发送的至少一个备份报文,所述至少一个备份报文中的每个备份报文携带一个CPU标识以及与所述CPU标识对应的至少一个状态表项,所述每个备份报文携带的CPU标识为所述第一设备从所述第一分流表中确定的;
根据所述至少一个备份报文中的每个备份报文携带的一个CPU标识以及与所述CPU标识对应的至少一个状态表项,更新所述第二设备中所述每个备份报文携带的CPU标识所指示的CPU中存储的状态表项;
接收所述第一设备发送的备份完成通知消息,将所述第二设备切换为用于对后续业务报文进行处理的设备。
由于第二设备也可以为分布式设备,第二设备中也可以包括MPU、LPU和至少一个SPU,且每个SPU中包括至少两个CPU,因此,第二设备中的MPU可以对SPU中的CPU进行监测,以确定第二设备包括的CPU数量是否发生变化。
需要说明的是,在第二设备接收到该至少一个备份报文时,第二设备可以对包括的每个CPU存储的状态表项进行更新,之后,将对业务报文进行处理的设备从第一设备切换到第二设备,这样,第二设备接收到业务报文时,按照第一分流表将业务报文分流到不同的CPU之后,就不会出现某个CPU上未存储该业务报文的状态表项的情况,进而避免CPU将业务报文丢弃以导致流量中断的情况。
可选地,所述将所述第二设备切换为用于对后续业务报文进行处理的设备,包括:
将所述第二设备的优先级设置为第二优先级,所述第二优先级高于第三优先级,所述第三优先级高于第一优先级,所述第一优先级为CPU的数量发生变化之前所述第二设备的优先级,所述第三优先级为所述第一设备当前的优先级;
基于所述第二设备的优先级和所述第一设备当前的优先级,与所述第一设备进行协商,从而将所述第二设备切换为用于对后续业务报文进行处理的设备。
由于第一设备和第二设备中,哪个设备作为对业务报文进行处理的设备,哪个设备作为哪个设备的备用设备,这些都是通过第一设备和第二设备之间的优先级进行协商得到,而且在第二设备包括的每个CPU存储的状态表项更新完成之后,为了避免流量中断的问题,此时需要将对业务报文进行处理的设备从第一设备切换至第二设备,因此,需要将第二设备的优先级设置为第二优先级。
可选地,所述确定所述第二设备包括的CPU的数量发生变化后,生成第一分流表,包括:
如果所述第二设备包括的CPU的数量增加,则为新增的CPU分配CPU标识;
基于增加CPU之后所述第二设备包括的每个CPU对应的CPU标识,生成第一分流表。
由于第二设备中增加了CPU,也即是,对第二设备的容量进行了扩容,因此,第二设备的MPU需要为新增的CPU分配CPU标识。由于分流表是用于将业务报文分流到不同的CPU上,因此,在CPU数量发生变化之后,为了保证后续将业务报文能够准确地分流到不同的CPU上,第二设备需要对分流表进行更新,即第二设备的MPU需要基于增加CPU之后第二设备包括的每个CPU对应的CPU标识,重新生成分流表,并将重新生成的分流表称为第一分流表。
可选地,所述确定所述第二设备包括的CPU的数量发生变化,生成第一分流表,包括:
如果所述第二设备包括的CPU的数量减少,则按照CPU插槽顺序为减少CPU之后第二设备包括的每个CPU重新分配CPU标识;
基于为第二设备包括的每个CPU重新分配的CPU标识,生成第一分流表。
由于第二设备中减少了CPU,也即是,对第二设备的容量进行了缩容,如果减少的CPU的插槽顺序位于已***的CPU中间,这样,减少后的CPU标识就会不连续,而且后续将业务报文进行分流时可能会出现错误,因此,为了避免这些问题,可以按照CPU插槽顺序为减少CPU之后第二设备包括的每个CPU重新分配CPU标识,进而基于为每个CPU重新分配的CPU标识,重新生成分流表,并将重新生成的分流表称为第一分流表。
第三方面,提供了一种分布式设备的容量更新装置所述装置用于实现上述第一方面所述的方法。
第四方面,提供了一种分布式设备的容量更新装置所述装置用于实现上述第二方面所述的方法。
第五方面,提供了一种分布式设备的容量更新装置,所述分布式设备的容量更新装置的结构中包括处理器和存储器。所述存储器用于存储支持所述分布式设备的容量装置更新执行上述第一方面提供的分布式设备的容量更新方法的程序,以及存储用于实现第一方面提供的分布式设备的容量更新方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述分布式设备的容量更新装置还可以包括通信总线,该通信总线用于在处理器与存储器之间建立连接。
第六方面,提供了一种分布式设备的容量更新装置,所述分布式设备的容量更新装置的结构中包括处理器和存储器。所述存储器用于存储支持所述分布式设备的容量装置更新执行上述第二方面提供的分布式设备的容量更新方法的程序,以及存储用于实现第二方面提供的分布式设备的容量更新方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述分布式设备的容量更新装置还可以包括通信总线,该通信总线用于在处理器与存储器之间建立连接。
第七方面,提供了一种计算机存储介质,用于储存上述第三方面和第五方面的分布式设备的容量更新装置所用的计算机软件指令,或存储用于执行上述第三方面或第五方面的分布式设备的容量更新装置所涉及的程序。
第八方面,提供了一种计算机存储介质,用于储存上述第四方面和第六方面的分布式设备的容量更新装置所用的计算机软件指令,或存储用于执行上述第四方面或第六方面的分布式设备的容量更新装置所涉及的程序。
上述第三方面、第五方面和第七方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
上述第四方面、第六方面和第八方面所获得的技术效果与第二方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本发明实施例提供的技术方案带来的有益效果是:在本发明实施例中,由于第一分流表为第二设备中的CPU数量发生变化发送给第一设备的,也即是,先改变第二设备中的CPU数量以对第二设备的容量进行更新,这样在接收到业务报文时,可以通过第一设备对业务报文进行处理,不会出现流量中断的情况。之后,第一设备可以确定存储的每个状态表项在第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系,并基于该映射关系生成至少一个备份报文,并通过该至少一个备份报文中每个备份报文携带的一个CPU标识和该CPU标识对应的至少一个状态表项,对第二设备包括的每个CPU中的状态表项进行更新。由于每个备份报文中携带的CPU标识是从第一分流表中确定的,因此,将第二设备切换为用于对后续业务报文进行处理的设备备之后,第二设备按照第一分流表将后续接收到的业务报文分流到不同的CPU之后,就不会出现CPU上未存储该业务报文所属业务流的状态表项的情况,进而避免CPU将业务报文丢弃以导致流量中断的情况。
附图说明
图1A是本发明实施例提供的一种分布式设备的容量更新***架构图;
图1B是本发明实施例提供的一种防火墙***的硬件架构图;
图2是本发明实施例提供的一种分布式设备的容量更新方法流程图;
图3A是本发明实施例提供的一种分布式设备的容量更新装置结构示意图;
图3B是本发明实施例提供的一种生成模块的结构示意图;
图4A是本发明实施例提供的一种分布式设备的容量更新装置结构示意图;
图4B是本发明实施例提供的一种切换模块的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1A是本发明实施例提供的一种分布式设备的容量更新***架构图。在本申请中,分布式设备是指用于对网络流量进行处理的设备,例如分布式防火墙。参见图1A,该***包括第一设备01和第二设备02,第一设备01和第二设备02之间可以通过有线网络或者无线网络的方式进行通信。其中,第一设备01和第二设备02均为分布式设备,且第一设备01和第二设备02均可以对业务报文进行处理。在一种可能的实现方式中,第二设备02可以作为第一设备01的备用设备,以在第一设备01出现故障时,由第二设备02代替第一设备01继续提供服务。值得注意的是,在第二设备02作为第一设备01的备用设备时,第一设备01为用户对当前业务报文进行处理的设备,而第二设备不为对当前业务报文进行处理的设备。
以第一设备01为例,对分布式设备进行详细说明。参见图1A,第一设备01包括MPU011、LPU 012和至少一个SPU 013,每个SPU 013可以包括至少两个CPU。也即是,第一设备01包括至少两个CPU。其中,MPU 011可以通过通信总线与LPU 012连接,也可以通过通信总线与该至少一个SPU 013连接,且该通信总线可以包括一通路,在上述组件之间传送信息。需要说明的是,图1以第一设备01包括一个SPU 013,且该SPU 013中包括3个CPU为例进行说明。
下面针对MPU、LPU和SPU分别进行详细阐述:
对于实现设备管理的MPU:
MPU用于配置业务和管理每个SPU中的CPU。具体地,在***初始化时,MPU可以根据每个SPU中的CPU标识生成分流表,并将该分流表下发给LPU,该分流表用于指示LPU将接收到的业务报文分流到不同的CPU上,以实现每个CPU的负载均衡。之后,MPU还可以对每个SPU中的CPU进行监测,以确定CPU的数量是否发生变化,当确定CPU的数量发生变化时,需要确定变化后的每个CPU标识,并根据变化后的每个CPU标识重新生成分流表,以对分流表进行更新,从而确保分流表的准确性。
可选地,MPU可以按照每个CPU的插槽顺序为每个CPU分配标识。在分配CPU标识之后,如果MPU需要根据CPU标识生成分流表,则可以根据每个CPU标识的顺序,生成一个CPU标识序列,并将该CPU标识序列填充至空白分流表中,从而生成得到分流表。也即是,分流表中携带一个CPU标识序列,该CPU标识序列中的每个CPU标识分别指示第一设备中的一个CPU。
由于每个设备上可***的CPU数量一般不同,比如,有的设备可***的CPU数量为64,而有的设备可***的CPU数量为32,而且分流表是基于设备中***的CPU的标识生成得到的,因此,当分流表的长度较短时,可能出现分流表中的同一存储位置会对应至少两个CPU标识,比如,分流表的长度为32,但是已***的CPU数量为64个,这样就会出现分流表中的一个存储位置对应2个CPU标识,如此在对接收到的业务报文进行分流时会发生冲突。另外,由于分流表是用于将业务报文分流到不同的CPU上,因此,当分流表的长度较长时,可能会出现CPU的负载不均衡的问题,比如,分流表的长度为32,但是已***的CPU数量为31个,这样就会导致第一个CPU相比于其他的CPU负载较大,因此,为了避免冲突,以及实现均衡负载,一般可以统计每个设备可***的CPU数量,并将统计的每个CPU数量的最小公倍数确定为分流表的长度,并在设备出厂固定设置于设备中。
也即是,第一设备中设置有分流表的长度,且该长度是固定的。因此,在第一设备生成分流表时,可以先基于设置的分流表长度生成固定长度的空白分流表,之后,将生成的CPU标识序列填充至该固定长度的空白分流表中。
比如,分流表的长度为1023,第一设备中包括3个CPU,分别为CPU1、CPU2和CPU3,对CPU1分配的CPU标识为ID1,对CPU2分配的CPU标识为ID2,对CPU3分配的CPU标识为ID3。假如基于该3个该CPU标识生成的CPU标识序列为ID1、ID2、ID3。在生成分流表时,可以按照ID1、ID2和ID3的顺序,依次将每个CPU标识填充到空白分流表中,从而生成得到如图表1所示的分流表。其中,在下述表1中,为了便于理解,在CPU标识序列的下方还示意性地携带一个数字序列,该数字序列中的每个数字用于指示对应位置上的CPU标识在分流表中的存储位置。实际应用中,分流表中可能并没有携带该数字序列,该数字序列只是为了便于理解而示意性的填充至分流表中。
表1
ID1 | ID2 | ID3 | ID1 | ID2 | ID3 | ...... | ID2 | ID3 | ID1 | ID2 | ID3 |
1 | 2 | 3 | 4 | 5 | 6 | ...... | 1019 | 1020 | 1021 | 1022 | 1023 |
对于实现业务报文分流的LPU:
LPU包括多个输入接口和多个输出接口,该多个输入接口用于接收其他设备发送的业务报文,在接收到业务报文之后,LPU会按照MPU生成的分流表将接收的业务报文分流到不同的CPU上。在CPU对业务报文进行处理之后,再通过该多个输出接口将处理后的业务报文发送到下一级设备中。
其中,LPU按照MPU生成的分流表将接收到的业务报文分流到不同的CPU上的具体实现过程为:LPU对该业务报文中携带的地址信息进行哈希运算得到运算结果,该运算结果指示分流表携带的CPU标识序列中的一个存储位置。从该CPU标识序列中的该存储位置中获取CPU标识,并将该业务报文发送给该CPU标识对应的CPU,从而实现业务报文的分流。其中,该业务报文携带的地址信息可以为源IP地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。
比如,对该业务报文携带的源IP地址和目的IP地址的组合进行哈希运算,假如得到的运算结果为6,此时,可以从上述表1所示的分流表中获取存储位置为6上的CPU标识,即ID3,并将该业务报文发送给ID3对应的CPU,即CPU3,从而可以实现业务报文的分流。
需要说明的是,该多个输入接口和该多个输出接口可以为任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网、无线接入网(Radio Access Network,RAN)、无线局域网(Wireless Local Area Networks,WLAN)等。
对业务报文进行处理的SPU:
SPU中的CPU用于接收LPU通过分流所发送的业务报文,并对该业务报文进行处理。另外,为了便于第一设备在出现故障之后,第二设备可以顺利地代替第一设备继续对业务报文进行处理,第一设备还可以周期性地对每个CPU中存储的状态表项进行备份,也即是基于每个CPU中存储的状态表项生成备份报文,并将每个CPU的备份报文发送给第二设备,以便于第二设备中的每个CPU能够对存储的状态表项进行更新。其中,每个状态表项分别对应一条业务流,且每个状态表项中存储有对对应业务流上的业务报文进行处理的处理策略和对应业务流的流信息。该流信息可以包括源IP地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。
需要说明的是,在本发明实施例中,不仅可以通过CPU来实现业务报文的处理,当然,还可以通过微处理器、特定应用集成电路(Application-Specific IntegratedCircuit,ASIC),或者一个或多个用于控制本申请方案程序执行的集成电路来实现。
不难理解,第一设备除了包括上述每个组件之后,还可以包括存储器,该存储器可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、可存储静态信息和指令的其它类型的静态存储设备、可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM),或者其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质,或者其它磁存储设备,或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由第一设备存取的任何其它介质,但不限于此。存储器可以是独立存在,或者通过通信总线与CPU相连接,或者和CPU集成在一起。
综上,存储器用于存储执行本申请方案的程序代码,CPU用于执行存储器中存储的程序代码。第一可以通过CPU以及存储器中的程序代码,来实现下文图2实施例所提供的分布式设备的容量更新方法。
需要说明的是,由于第二设备也为分布式设备,因此,第二设备的内部结构和图1A中第一设备的内部结构相同,为了避免冗余,此处不对第二设备的内部结构进行详细的阐述。
在一种可能的实现方式中,本发明实施例提供的分布式设备的容量更新方法可以应用于防火墙***中。图1B是本发明实施例提供的一种防火墙***的硬件架构图,参见图1B,该防火墙***中可以包括MPU、LPU和至少一个SPU,MPU可以通过管理总线与该至少一个SPU分别连接,该MPU可以通过监控总线与该LPU连接。另外,该防火墙***还可以包括交换矩阵、电源***冗余备份和风扇***冗余备份。
图2是根据本发明实施例提供的一种分布式设备的容量更新方法流程图。该方法以第一设备和第二设备之间的交互为例进行说明。其中,第一设备为用于对当前业务报文进行处理的设备,第二设备不为对当前业务报文进行处理的设备。参见图2,该分布式设备的容量更新方法可以包括如下几个步骤:
步骤201:第二设备确定第二设备包括的CPU的数量发生变化后,生成第一分流表,第一分流表携带一个CPU标识序列,该CPU标识序列中的每个CPU标识分别指示CPU的数量发生变化后第二设备包括的一个CPU。
由于第二设备也可以为分布式设备,第二设备中也可以包括MPU、LPU和至少一个SPU,且每个SPU中包括至少两个CPU,也即是,第二设备包括至少两个CPU,因此,第二设备中的MPU可以对SPU中的CPU进行监测,以确定第二设备包括的CPU的数量是否发生变化。如果第二设备包括的CPU的数量发生变化,则确定已对第二设备的容量进行了更新,此时,第二设备的MPU可以基于CPU的数量发生变化后第二设备包括的每个CPU标识重新生成分流表,并将重新生成的分流表称为第一分流表。同时,第二设备还可以将自身包括的LPU中存储的第二分流表替换为第一分流表,以实现分流表的更新。其中,第二分流表为第二设备基于CPU的数量未变化之前的每个CPU标识生成得到。
然而,由于第二设备包括的CPU的数量发生变化存在两种情况,即第二设备中的CPU的数量可以增加,也可以减少,因此,下面针对这两种情况分别说明:
第一种情况,如果第二设备包括的CPU的数量增加,则为新增的CPU分配CPU标识,基于增加CPU之后第二设备包括的每个CPU对应的CPU标识,生成第一分流表。
在第一种情况中,由于第二设备中增加了CPU,也即是,对第二设备的容量进行了扩容,因此,第二设备的MPU需要为新增的CPU分配CPU标识。由于分流表是用于将业务报文分流到不同的CPU上,因此,在CPU的数量发生变化之后,为了保证后续将业务报文能够准确地分流到不同的CPU上,第二设备需要对分流表进行更新,即第二设备的MPU需要基于增加CPU之后第二设备包括的每个CPU对应的CPU标识,重新生成分流表,并将重新生成的分流表称为第一分流表。
在一种可能的实现方式中,CPU是按照顺序***插槽中,因此,可以按照第二设备中每个CPU的插槽顺序,对每个CPU分配CPU标识,而第一种情况是增加CPU,因此,对增加的CPU分配的CPU标识可以直接顺序增加得到,比如,未增加CPU之前,第二设备中包括2个CPU,分别为CPU1和CPU2,对CPU1分配的CPU标识为ID1,对CPU2分配的CPU标识为ID2。在增加CPU之后,按照CPU的插槽顺序,此时可以直接为新增的CPU分配CPU标识为ID3。在为新增的CPU分配CPU标识之后,可以按照增加CPU之后的每个CPU对应的CPU标识的顺序,依次填充空白的分流表,从而得到第一分流表。比如,分流表的长度为1023,将ID1、ID2和ID3,按照顺序填充空白的分流表之后,得到的第一分流表可以如下表2所示。
表2
ID1 | ID2 | ID3 | ID1 | ID2 | ID3 | ...... | ID2 | ID3 | ID1 | ID2 | ID3 |
1 | 2 | 3 | 4 | 5 | 6 | ...... | 1019 | 1020 | 1021 | 1022 | 1023 |
第二种情况,如果第二设备包括的CPU的数量减少,则按照CPU插槽顺序为减少CPU之后第二设备包括的每个CPU重新分配CPU标识,基于为第二设备包括的每个CPU重新分配的CPU标识,生成第一分流表。
在第二种情况中,由于第二设备中减少了CPU,也即是,对第二设备的容量进行了缩容,如果减少的CPU的插槽顺序位于已***的CPU中间,这样,减少后的CPU标识就会不连续,而且后续将业务报文进行分流时可能会出现错误,因此,为了避免这些问题,可以按照CPU插槽顺序为减少CPU之后第二设备包括的每个CPU重新分配CPU标识,进而基于为第二设备包括的每个CPU重新分配的CPU标识,重新生成分流表,并将重新生成的分流表称为第一分流表。
在一种可能的实现方式中,可以按照第二设备中每个CPU的插槽顺序,对每个CPU分配CPU标识,而第二种情况是减少CPU,因此,可以按照CPU插槽顺序为减少CPU之后的每个CPU重新分配CPU标识,比如,未减少CPU之前,第二设备中包括3个CPU,分别为CPU1、CPU2和CPU3,对CPU1分配的CPU标识为ID1,对CPU2分配的CPU标识为ID2,对CPU3分配的CPU标识为ID3。在减少CPU之后,假设减少的CPU为CPU2,此时第二设备中只剩下CPU1和CPU3,因此,按照CPU的插槽顺序,为CPU1重新分配的CPU标识为ID1,为CPU3重新分配的CPU标识为ID2。之后,可以按照减少CPU之后的每个CPU对应的CPU标识的顺序,依次填充空白的分流表,从而得到第一分流表。比如,分流表的长度为1023,将ID1和ID2,按照顺序填充空白的分流表之后,得到的第一分流表可以如下表3所示。
表3
ID1 | ID2 | ID1 | ID2 | ID1 | ID2 | ...... | ID1 | ID2 | ID1 | ID2 | ID1 |
1 | 2 | 3 | 4 | 5 | 6 | ...... | 1019 | 1020 | 1021 | 1022 | 1023 |
步骤202:第二设备向第一设备发送第一分流表。
由于第一分流表是基于CPU的数量发生变化之后第二设备中包括的每个CPU标识生成的,且第二设备是第一设备的备用设备,因此,为了便于后续将第一设备中存储的状态表项备份到第二设备中,第二设备可以将第一分流表发送给第一设备。
步骤203:第一设备接收第二设备发送的第一分流表,并确定第一设备中的每个状态表项在第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系。
具体地,第一设备可以接收第二设备发送的第一分流表,并将第一分流表存储到第一设备的LPU中,对于第一设备包括的每个CPU存储的任一状态表项,第一设备的LPU可以对该状态表项中存储的流信息进行哈希运算得到运算结果,该运算结果指示该状态表项对应的CPU标识在第一分流表的CPU标识序列中的一个存储位置,从第一分流表中获取在该存储位置上存储的CPU标识,并将获取的CPU标识确定为该状态表项对应的CPU标识。
也即是,从第一设备包含的至少一个状态表项中选择出一个状态表项,对选择出的状态表项执行以下处理,直到处理完第一设备包含的每个状态表项为止:
对选择出的状态表项中的流信息进行哈希运算得到运算结果,该运算结果指示第一分流表携带的CPU标识序列中的一个存储位置,从该CPU标识序列中的该存储位置中获取CPU标识,确定获取的该CPU标识为选择出的状态表项对应的CPU标识。
比如,第一设备在接收到第二设备发送的第一分流表之后,对于第一设备包括的每个CPU存储的任一状态表项,对该状态表项中存储的流信息进行哈希运算,假设哈希运算后得到的数值为5,则将该状态表项对应的CPU标识在第一分流表中的存储位置确定为5,此时,第一设备可以基于该存储位置5,从第一分流表中获取该状态表项对应的CPU标识。假设第一分流表为上述表2,则可以确定该状态表项对应的CPU标识为ID2。
其中,每个状态表项分别对应一条业务流,且每个状态表项中存储有对对应业务流上的业务报文进行处理的处理策略和对应业务流的流信息。该流信息可以包括该业务流的源IP地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。当然,实际应用中,该流信息还可以为其他信息,比如,可以包括该业务流的源IP地址、目的IP地址和传输协议的组合,或者源IP地址、目的IP地址和目标端口的组合等等。
需要说明的是,由于第一设备用于对接收到的业务报文进行处理,因此,在第一设备的CPU中会存储包括业务报文的处理策略和流信息的状态表项。另外,状态表项中不仅可以包括处理策略,还可以包括该状态表项对应的业务流的网络地址转换(Network AddressTranslation,NAT)、IP网络安全协议(Security Architecture for IP network,IPSEC)等相关信息。
在本发明实施例中,由于先对第二设备的容量进行了更新,因此,第二设备的分流表已经发生了变化,所以为了便于能够将状态表项准确地备份到第二设备的CPU中,此时,需要基于第一设备包括的每个CPU存储的状态表项,从第一分流表中确定每个状态表项对应的CPU标识。另外,在本发明实施例中,由于只需在第二设备进行容量更新之后,按照第二设备更新后的分流表,即第一分流表来进行状态表项的备份,因此,无需第一设备和第二设备的CPU数量和CPU标识严格保持一致,从而可以提高容量更新的灵活性。
步骤204:第一设备根据该映射关系生成至少一个备份报文,该至少一个备份报文中的每个备份报文携带一个CPU标识以及与该CPU标识对应的至少一个状态表项。
具体地,基于第一分流表形成第一设备中的每个状态表项与CPU标识之间的映射关系之后,可以根据该映射关系,将第一设备中存储的状态表项划分为至少一组,每组状态表项中包括至少一个状态表项,且同一组状态表项对应的CPU标识相同。以组为单位,生成每组状态表项对应的一个备份报文,从而得到至少一个备份报文,该至少一个备份报文中的每个备份报文的报文头部携带对应组中的状态表项对应的CPU标识、且每个备份报文包括对应组中包括的至少一个状态表项。
由于状态表项对应的CPU标识相同时,可以确定该状态表项会被备份到第二设备中的同一CPU上。因此,基于每个状态表项对应的CPU标识,将备份后得到的状态表项划分为至少一组之后,可以将该至少一组状态表项和该至少一组状态表项对应的CPU标识生成至少一个备份报文,这样就无需将每个状态表项和该状态表项对应的CPU标识单独生成一个备份报文。也即是,本发明实施例将备份到同一CPU的状态表项集成到一个备份报文中,这样可以减少备份报文的数量,从而可以提高状态表项的备份效率。
其中,在第一设备基于至少一组状态表项和该至少一组状态表项对应的CPU标识,生成至少一个备份报文时,第一设备可以先将该至少一组状态表项分别封装到至少一个报文中,然后在该至少一个报文的头部分别添加上各组状态表项对应的CPU标识,从而得到至少一个备份报文。
步骤205:第一设备将该至少一个备份报文发送给第二设备。
需要说明的是,由于第二设备可以作为第一设备的备用设备,因此,第一设备和第二设备之间需要实时地确定对方设备是否出现故障。目前,主要是通过心跳保活的方式来确定对方设备是否出现故障,也即是,第一设备和第二设备之间可以通过LPU上的心跳接口互相发送心跳包,以确定对方设备是否出现故障。换句话说,LPU上不仅包括多个输入接口和多个输出接口,还包括有心跳接口。在本发明实施例中,为了便于第二设备在接收到备份报文时,将备份报文和输入接口接收到的业务报文进行区分,第一设备可以将该至少一个备份报文通过第二设备的LPU上的心跳接口发送给第二设备。
步骤206:第二设备接收第一设备发送的至少一个备份报文,并根据该至少一个备份报文中的每个备份报文携带的一个CPU标识和该CPU标识对应的至少一个状态表项,更新第二设备中每个备份报文携带的CPU标识所指示的CPU中存储的状态表项。
在第二设备通过LPU上的心跳接口接收到第一设备发送的至少一个备份报文时,第二设备可以确定需要对存储的状态表项进行更新,且第一设备已将每个CPU中存储的状态表项全部在该至少一个备份报文中发送过来。此时,第二设备可以获取每个备份报文中携带的CPU标识,然后根据每个备份报文中携带的CPU标识,将每个备份报文中携带的该CPU标识对应的至少一个状态表项存储到第二设备中该CPU标识所指示的CPU中。
需要说明的是,由于该至少一个备份报文是通过第二设备的LPU上的心跳接口接收到的,也就是说,该至少一个备份报文是LPU接收到的。由于每个备份报文中携带有CPU标识,因此,LPU接收到该至少一个备份报文之后,可以直接按照每个备份报文中携带的CPU标识,将备份报文发送给对应的CPU,以更新第二设备包括的每个CPU存储的状态表项,而无需将该至少一个备份报文进行分流。
其中,由于第二设备中可能之前已存储有状态表项,此时,第二设备可以直接将之前存储的状态表项替换为备份报文中的状态表项,以实现第二设备中每个CPU存储的状态表项的更新。当然,在第二设备向第一设备发送第一分流表时,第二设备还可以将每个CPU中存储的状态表项进行老化,从而在接收到该至少一个备份报文时,可以直接将每个备份报文中的状态表项存储到对应的CPU中,以实现第二设备中每个CPU存储的状态表项的更新。
步骤207:第一设备将该至少一个备份报文发送给第二设备之后,向第二设备发送备份完成通知消息,并将第一设备切换为暂不对后续业务报文进行处理的设备。
该备份完成通知消息用于将第一设备包括的每个CPU中存储的状态表项已经备份完成的消息通知给第二设备,这样便于第二设备基于接收到至少一个备份报文对存储的状态表项更新之后,将第二设备切换为用于对后续业务报文进行处理的设备,从而避免流量中断的问题。
需要说明的是,该备份完成通知消息也可以通过心跳接口发送给第二设备,当然也可以通过其他的接口发送给第二设备。
步骤208:第二设备接收第一设备发送的备份完成通知消息,将第二设备切换为用于对后续业务报文进行处理的设备。
具体地,第二设备接收第一设备发送的备份完成通知消息,将第二设备的优先级设置为第二优先级,第二优先级高于第三优先级,第三优先级高于第一优先级,第一优先级为CPU的数量发生变化之前第二设备的优先级,第三优先级为第一设备当前的优先级。基于第二设备的优先级和第一设备当前的优先级,与第一设备进行协商,从而将第二设备切换为用于对后续业务报文进行处理的设备。
由于第一设备和第二设备中,哪个设备作为对业务报文进行处理的设备,哪个设备作为哪个设备的备用设备,这些都是通过第一设备和第二设备之间的优先级进行协商得到,而且在第二设备包括的每个CPU存储的状态表项更新完成之后,为了避免流量中断的问题,此时需要将对业务报文进行处理的设备从第一设备切换至第二设备,因此,需要对第二设备的优先级进行更新,也即是将第二设备的优先级设置为第二优先级,第二优先级高于第一优先级,第一优先级为CPU的数量发生变化之前第二设备的优先级。又由于在协商过程中,哪个设备的优先级比较高,哪个设备就可以作为对业务报文进行处理的设备,因此,将第二设备的优先级设置为第二优先级之后,需要确保第二优先级高于第一设备当前的优先级,即第三优先级。之后,第二设备可以和第一设备进行协商,从而将对业务报文进行处理的设备从第一设备切换至第二设备。
在本发明实施例中,第二设备接收到第一设备发送的备份完成通知消息之后,可以直接将第二设备的优先级设置为第二优先级,并基于第二设备的优先级和第一设备当前的优先级,与第一设备进行协商,从而将第二设备切换为用于对后续业务报文进行处理的设备。当然,第二设备也可以在接收到第一设备发送的备份完成通知消息之后,先将第二设备的优先级设置为第二优先级。当接收到用户触发的切换指令时,基于第二设备的优先级和第一设备当前的优先级,与第一设备进行协商,从而将第二设备切换为用于对后续业务报文进行处理的设备。又或者,第二设备在接收到第一设备发送的备份完成通知消息之后,当接收到用户触发的切换指令时,再将第二设备的优先级设置为第二优先级,并基于第二设备的优先级和第一设备当前的优先级,与第一设备进行协商,从而将第二设备切换为用于对后续业务报文进行处理的设备。本发明实施例对协商的时机不做具体限定。
可选地,在主备切换之后,第一设备和第二设备可以同时降低各自的优先级,例如第一设备的优先级设置为第一优先级,第二设备的优先级设置为第三优先级。这样以便于下一次主备切换。
可选地,在第二设备按照上述方法进行容量更新之后,第一设备也可以按照上述方法进行容量更新。由于第一设备进行容量更新方法可以与上述方法相同,因此,本发明实施例对第一设备进行容量更新的方法不再进行详细阐述。
在本发明实施例中,由于第一分流表为第二设备包括的CPU的数量发生变化之后,第二设备基于变化后的CPU标识生成得到,也即是,先改变第二设备中的CPU数量以对第二设备的容量进行更新,这样在接收到业务报文时,可以通过第一设备对业务报文进行处理,不会出现流量中断的情况。之后,第一设备可以确定存储的每个状态表项在第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系,并基于该映射关系生成至少一个备份报文,并通过该至少一个备份报文中每个备份报文携带的一个CPU标识和该CPU标识对应的至少一个状态表项,对第二设备包括的每个CPU中的状态表项进行更新。由于每个备份报文中携带的CPU标识是从第一分流表中确定的,因此,将对业务报文进行处理的设备从第一设备切换到第二设备之后,第二设备按照第一分流表将后续接收到的业务报文分流到不同的CPU之后,就不会出现CPU上未存储该业务报文所属业务流的状态表项的情况,进而避免CPU将业务报文丢弃以导致流量中断的情况,从而实现了平滑扩容或者缩容。
图3A是本发明实施例提供的一种分布式设备的容量更新装置的结构示意图,该装置可以由软件、硬件或者两者的结合实现成为第一设备的部分或者全部,第一设备可以为图1A所示的第一设备。第一设备为用于对当前业务报文进行处理的设备,第一设备包括至少两个CPU,该至少两个CPU中的每个CPU对应保存至少一个业务流的状态表项。参见图3A,该装置包括接收模块301,确定模块302,生成模块303、发送模块304和切换模块305。
接收模块301,用于执行图2实施例中的步骤203中接收第二设备发送的第一分流表的操作;
确定模块302,用于执行图2实施例中的步骤203中确定第一设备中的每个状态表项在第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系的操作;
生成模块303,用于执行图2实施例中的步骤204;
发送模块304,用于执行图2实施例中的步骤205;
发送模块304,还用于执行图2步骤207中向第二设备发送备份完成通知消息。
切换模块305,还用于执行图2步骤207中将第二设备切换为用于对后续业务报文进行处理的设备。
可选地,确定模块302,具体用于:
从第一设备包含的至少一个状态表项中选择出一个状态表项,对选择出的状态表项执行以下处理,直到处理完第一设备包含的每个状态表项为止:
对选择出的状态表项中的流信息进行哈希运算得到运算结果,该运算结果指示该CPU标识序列中的一个存储位置;
从该CPU标识序列中的该存储位置中获取CPU标识,确定获取的CPU标识为选择出的状态表项对应的CPU标识。
可选地,流信息包括选择出的状态表项对应的业务流的源IP地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。
可选地,参见图3B,生成模块304包括:
划分单元3041,用于根据该映射关系,将第一设备中存储的状态表项划分为至少一组,每组状态表项中包括至少一个状态表项,且同一组状态表项对应的CPU标识相同;
生成单元3042,用于以组为单位,生成每组状态表项对应的一个备份报文,从而得到至少一个备份报文,该至少一个备份报文中的每个备份报文的报文头部携带对应组中的状态表项对应的CPU标识、且每个备份报文包括对应组中包括的至少一个状态表项。
由于第一分流表为第二设备中的CPU数量发生变化发送给第一设备的,也即是,先改变第二设备中的CPU数量以对第二设备的容量进行更新,这样在接收到业务报文时,可以通过第一设备对业务报文进行处理,不会出现流量中断的情况。之后,第一设备可以确定存储的每个状态表项在第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系,并基于该映射关系生成至少一个备份报文,并通过该至少一个备份报文中每个备份报文携带的一个CPU标识和该CPU标识对应的至少一个状态表项,对第二设备包括的每个CPU中的状态表项进行更新。由于每个备份报文中携带的CPU标识是从第一分流表中确定的,因此,将第二设备切换为用于对后续业务报文进行处理的设备备之后,第二设备按照第一分流表将后续接收到的业务报文分流到不同的CPU之后,就不会出现CPU上未存储该业务报文所属业务流的状态表项的情况,进而避免CPU将业务报文丢弃以导致流量中断的情况。
图4A是本发明实施例提供的一种分布式设备的容量更新装置的结构示意图,该装置可以由软件、硬件或者两者的结合实现成为第二设备的部分或者全部,第二设备可以为图1A所示的第二设备。第二设备不是对当前业务报文进行处理的设备,第二设备包括至少两个CPU。参见图4A,该装置包括生成模块401,发送模块402,接收模块403,更新模块404和切换模块405。
生成模块401,用于执行图2实施例中的步骤201;
发送模块402,用于执行图2实施例中的步骤202;
接收模块403,用于执行图2实施例中的步骤206中接收第一设备发送的至少一个备份报文的操作、以及步骤208中接收第一设备发送的备份完成通知消息;
更新模块404,用于执行图2实施例中的步骤206中根据该至少一个备份报文中的每个备份报文携带的一个CPU标识和该CPU标识对应的至少一个状态表项,更新第二设备中每个备份报文携带的CPU标识所指示的CPU中存储的状态表项的操作;
切换模块405,用于执行图2实施例中的步骤206更新完成后且步骤208中接收到所述备份完成通知消息后,将所述第二设备切换为用于对后续业务报文进行处理的设备。
可选地,参见图4B,切换模块405包括:
更新单元4051,用于将第二设备的优先级设置为第二优先级,第二优先级高于第三优先级,第三优先级高于第一优先级,第一优先级为CPU的数量发生变化之前第二设备的优先级,第三优先级为第一设备当前的优先级;
协商单元4052,用于基于第二设备的优先级和第一设备当前的优先级,与第一设备进行协商,从而将第二设备切换为用于对后续业务报文进行处理的设备。
可选地,生成模块401具体用于:
如果所述第二设备包括的CPU的数量增加,则为新增的CPU分配CPU标识;
基于增加CPU之后第二设备包括的每个CPU对应的CPU标识,生成第一分流表。
可选地,生成模块401具体用于:
如果所述第二设备包括的CPU的数量减少,则按照CPU插槽顺序为减少CPU之后第二设备包括的每个CPU重新分配CPU标识;
基于为第二设备包括的每个CPU重新分配的CPU标识,生成第一分流表。
在本发明实施例中,由于第一设备是按照第一分流表生成得到至少一个备份报文,因此,当第二设备接收到该至少一个备份报文时,第二设备可以对包括的每个CPU存储的状态表项进行更新,之后,在接收到第一设备发送的备份完成通知消息时,将对业务报文进行处理的设备从第一设备切换到第二设备,这样,第二设备接收到业务报文时,按照第一分流表将业务报文分流到不同的CPU之后,就不会出现CPU上未存储该业务报文的状态表项的情况,进而避免CPU将业务报文丢弃以导致流量中断的情况。
需要说明的是:上述实施例提供的分布式设备的容量更新装置在容量更新时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式设备的容量更新装置与分布式设备的容量更新方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光线、数字用户线(Digital Subscriber Line,DSL))或无限(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字化视频光盘(Digital Video Disk,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述仅为本申请的实施例,并不用以限制本申请,凡基于本申请实施例所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种分布式设备的容量更新方法,由第一设备执行,所述第一设备为用于对当前业务报文进行处理的设备,所述第一设备包括至少两个CPU,所述至少两个CPU中的每个CPU对应保存至少一个业务流的状态表项,其特征在于,所述方法包括:
接收第二设备发送的第一分流表,所述第二设备与所述第一设备之间通过有线网络或者无线网络的方式进行通信,且所述第二设备为所述第一设备的备用设备,所述第一分流表携带一个CPU标识序列,所述CPU标识序列中的每个CPU标识分别指示所述第二设备中的一个CPU,所述第一分流表为所述第二设备包括的CPU的数量发生变化后向所述第一设备发送的;
确定所述第一设备中的每个状态表项在所述第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系;
根据所述映射关系,生成至少一个备份报文,所述至少一个备份报文中的每个备份报文携带一个CPU标识以及与所述CPU标识对应的至少一个状态表项;
将所述至少一个备份报文发送给所述第二设备,以指示所述第二设备根据所述每个备份报文携带的一个CPU标识以及与所述CPU标识对应的至少一个状态表项,更新所述第二设备中存储的状态表项;
将所述至少一个备份报文发送给所述第二设备之后,向所述第二设备发送备份完成通知消息,并将所述第一设备切换为暂不对后续业务报文进行处理的设备,所述备份完成通知消息用于指示所述第二设备对存储的状态表项更新之后,将所述第二设备切换为用于对后续业务报文进行处理的设备。
2.如权利要求1所述的方法,其特征在于,所述确定所述第一设备中的每个状态表项在所述第一分流表中对应的CPU标识,包括:
从所述第一设备包含的至少一个状态表项中选择出一个状态表项,对选择出的状态表项执行以下处理,直到处理完所述第一设备包含的每个状态表项为止:
对选择出的状态表项中的流信息进行哈希运算得到运算结果,所述运算结果指示所述CPU标识序列中的一个存储位置;
从所述CPU标识序列中的所述存储位置中获取CPU标识,确定获取的所述CPU标识为所述选择出的状态表项对应的CPU标识。
3.如权利要求2所述的方法,其特征在于,所述流信息包括选择出的状态表项对应的业务流的源互联网协议IP地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。
4.如权利要求1所述的方法,其特征在于,所述根据所述映射关系,生成至少一个备份报文,包括:
根据所述映射关系,将所述第一设备中存储的状态表项划分为至少一组,每组状态表项中包括至少一个状态表项,且同一组状态表项对应的CPU标识相同;
以组为单位,生成每组状态表项对应的一个备份报文,从而得到至少一个备份报文,所述至少一个备份报文中的每个备份报文的报文头部携带对应组中的状态表项对应的CPU标识、且所述每个备份报文包括对应组中包括的至少一个状态表项。
5.一种分布式设备的容量更新方法,由第二设备执行,所述第二设备不是对当前业务报文进行处理的设备,所述第二设备包括至少两个CPU,其特征在于,所述方法包括:
确定所述第二设备包括的CPU的数量发生变化后,生成第一分流表,所述第一分流表携带一个CPU标识序列,所述CPU标识序列中的每个CPU标识分别指示CPU的数量发生变化后所述第二设备包括的一个CPU;
向第一设备发送所述第一分流表,所述第一设备与所述第二设备之间通过有线网络或者无线网络的方式进行通信,且所述第二设备为所述第一设备的备用设备;
接收所述第一设备发送的至少一个备份报文,所述至少一个备份报文中的每个备份报文携带一个CPU标识以及与所述CPU标识对应的至少一个状态表项,所述每个备份报文携带的CPU标识为所述第一设备从所述第一分流表中确定的;
根据所述至少一个备份报文中的每个备份报文携带的一个CPU标识以及与所述CPU标识对应的至少一个状态表项,更新所述第二设备中所述每个备份报文携带的CPU标识所指示的CPU中存储的状态表项;
接收所述第一设备发送的备份完成通知消息,将所述第二设备切换为用于对后续业务报文进行处理的设备。
6.如权利要求5所述的方法,其特征在于,所述将所述第二设备切换为用于对后续业务报文进行处理的设备,包括:
将所述第二设备的优先级设置为第二优先级,所述第二优先级高于第三优先级,所述第三优先级高于第一优先级,所述第一优先级为CPU的数量发生变化之前所述第二设备的优先级,所述第三优先级为所述第一设备当前的优先级;
基于所述第二设备的优先级和所述第一设备当前的优先级,与所述第一设备进行协商,从而将所述第二设备切换为用于对后续业务报文进行处理的设备。
7.如权利要求5所述的方法,其特征在于,所述确定所述第二设备包括的CPU的数量发生变化后,生成第一分流表,包括:
如果所述第二设备包括的CPU的数量增加,则为新增的CPU分配CPU标识;
基于增加CPU之后所述第二设备包括的每个CPU对应的CPU标识,生成第一分流表。
8.如权利要求5所述的方法,其特征在于,所述确定所述第二设备包括的CPU的数量发生变化后,生成第一分流表,包括:
如果所述第二设备包括的CPU的数量减少,则按照CPU插槽顺序为减少CPU之后所述第二设备包括的每个CPU重新分配CPU标识;
基于为所述第二设备包括的每个CPU重新分配的CPU标识,生成第一分流表。
9.一种分布式设备的容量更新装置,包含于第一设备中,所述第一设备为用于对当前业务报文进行处理的设备,所述第一设备包括至少两个CPU,所述至少两个CPU中的每个CPU对应保存至少一个业务流的状态表项,其特征在于,所述装置包括:
接收模块,用于接收第二设备发送的第一分流表,所述第二设备与所述第一设备之间通过有线网络或者无线网络的方式进行通信,且所述第二设备为所述第一设备的备用设备,所述第一分流表携带一个CPU标识序列,所述CPU标识序列中的每个CPU标识分别指示所述第二设备中的一个CPU,所述第一分流表为所述第二设备包括的CPU的数量发生变化后向所述第一设备发送的;
确定模块,用于确定所述第一设备中的每个状态表项在所述第一分流表中对应的CPU标识,从而形成状态表项与CPU标识之间的映射关系;
生成模块,用于根据所述映射关系,生成至少一个备份报文,所述至少一个备份报文中的每个备份报文携带一个CPU标识以及与所述CPU标识对应的至少一个状态表项;
发送模块,用于将所述至少一个备份报文发送给所述第二设备,以指示所述第二设备根据所述每个备份报文携带的一个CPU标识以及与所述CPU标识对应的至少一个状态表项,更新所述第二设备中存储的状态表项;
所述发送模块,还用于将所述至少一个备份报文发送给所述第二设备之后,向所述第二设备发送备份完成通知消息,所述备份完成通知消息用于指示所述第二设备对存储的状态表项更新之后,将所述第二设备切换为用于对后续业务报文进行处理的设备;
切换模块,用于将所述至少一个备份报文发送给所述第二设备之后,将所述第一设备切换为暂不对后续业务报文进行处理的设备。
10.如权利要求9所述的装置,其特征在于,所述确定模块,具体用于:
从所述第一设备包含的至少一个状态表项中选择出一个状态表项,对选择出的状态表项执行以下处理,直到处理完所述第一设备包含的每个状态表项为止:
对选择出的状态表项中的流信息进行哈希运算得到运算结果,所述运算结果指示所述CPU标识序列中的一个存储位置;
从所述CPU标识序列中的所述存储位置中获取CPU标识,确定获取的所述CPU标识为所述选择出的状态表项对应的CPU标识。
11.如权利要求10所述的装置,其特征在于,所述流信息包括选择出的状态表项对应的业务流的源互联网协议IP地址和目的IP地址的组合,或者源IP地址、目的IP地址、传输协议和目的端口的组合。
12.如权利要求9所述的装置,其特征在于,所述生成模块包括:
划分单元,用于根据所述映射关系,将所述第一设备中存储的状态表项划分为至少一组,每组状态表项中包括至少一个状态表项,且同一组状态表项对应的CPU标识相同;
生成单元,用于以组为单位,生成每组状态表项对应的一个备份报文,从而得到至少一个备份报文,所述至少一个备份报文中的每个备份报文的报文头部携带对应组中的状态表项对应的CPU标识、且所述每个备份报文包括对应组中包括的至少一个状态表项。
13.一种分布式设备的容量更新装置,包含于第二设备,所述第二设备不是对当前业务报文进行处理的设备,所述第二设备包括至少两个CPU,其特征在于,所述装置包括:
生成模块,用于确定所述第二设备包括的CPU的数量发生变化后,生成第一分流表,所述第一分流表携带一个CPU标识序列,所述CPU标识序列中的每个CPU标识分别指示CPU的数量发生变化后所述第二设备包括的一个CPU;
发送模块,用于向第一设备发送所述第一分流表,所述第一设备与所述第二设备之间通过有线网络或者无线网络的方式进行通信,且所述第二设备为所述第一设备的备用设备;
接收模块,用于接收所述第一设备发送的至少一个备份报文,所述至少一个备份报文中的每个备份报文携带一个CPU标识以及与所述CPU标识对应的至少一个状态表项,所述每个备份报文携带的CPU标识为所述第一设备从所述第一分流表中确定的;
更新模块,用于根据所述至少一个备份报文中的每个备份报文携带的一个CPU标识以及与所述CPU标识对应的至少一个状态表项,更新所述第二设备中所述每个备份报文携带的CPU标识所指示的CPU中存储的状态表项;
所述接收模块,还用于接收所述第一设备发送的备份完成通知消息;
切换模块,用于接收到所述备份完成通知消息后,将所述第二设备切换为用于对后续业务报文进行处理的设备。
14.如权利要求13所述的装置,其特征在于,所述切换模块包括:
更新单元,用于将所述第二设备的优先级设置为第二优先级,所述第二优先级高于第三优先级,所述第三优先级高于第一优先级,所述第一优先级为CPU的数量发生变化之前所述第二设备的优先级,所述第三优先级为所述第一设备当前的优先级;
协商单元,用于基于所述第二设备的优先级和所述第一设备当前的优先级,与所述第一设备进行协商,从而将所述第二设备切换为用于对后续业务报文进行处理的设备。
15.如权利要求13所述的装置,其特征在于,所述生成模块具体用于:
如果所述第二设备包括的CPU的数量增加,则为新增的CPU分配CPU标识;
基于增加CPU之后所述第二设备包括的每个CPU对应的CPU标识,生成第一分流表。
16.如权利要求13所述的装置,其特征在于,所述生成模块具体用于:
如果所述第二设备包括的CPU的数量减少,则按照CPU插槽顺序为减少CPU之后所述第二设备包括的每个CPU重新分配CPU标识;
基于为所述第二设备包括的每个CPU重新分配的CPU标识,生成第一分流表。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710138783.3A CN108574587B (zh) | 2017-03-09 | 2017-03-09 | 分布式设备的容量更新方法及装置 |
PCT/CN2017/111136 WO2018161632A1 (zh) | 2017-03-09 | 2017-11-15 | 分布式设备的容量更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710138783.3A CN108574587B (zh) | 2017-03-09 | 2017-03-09 | 分布式设备的容量更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108574587A CN108574587A (zh) | 2018-09-25 |
CN108574587B true CN108574587B (zh) | 2020-07-24 |
Family
ID=63447296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710138783.3A Active CN108574587B (zh) | 2017-03-09 | 2017-03-09 | 分布式设备的容量更新方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108574587B (zh) |
WO (1) | WO2018161632A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110912835B (zh) * | 2019-11-08 | 2023-04-07 | 腾讯科技(深圳)有限公司 | 业务分流方法、装置及*** |
CN112714011B (zh) * | 2020-12-15 | 2023-06-02 | 贝壳技术有限公司 | 分流信息配置方法、装置、电子设备和存储介质 |
CN115134372B (zh) * | 2022-06-23 | 2023-08-29 | 中国民航信息网络股份有限公司 | 一种数据处理方法和相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724119A (zh) * | 2012-06-08 | 2012-10-10 | 南京贝伦思网络科技有限公司 | 一种网络负载均衡设备或分流设备规则同步方法 |
CN104811400A (zh) * | 2014-01-26 | 2015-07-29 | 杭州迪普科技有限公司 | 一种分布式网络设备 |
CN105515919A (zh) * | 2016-01-20 | 2016-04-20 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希压缩算法的网络流量监控方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354695B (zh) * | 2008-09-19 | 2010-07-21 | 杭州华三通信技术有限公司 | 一种进程间通信的方法、***和分布式设备 |
CN102821165B (zh) * | 2012-04-13 | 2016-08-03 | 中兴通讯股份有限公司 | Ip地址转换方法及装置 |
EP2903233B1 (en) * | 2012-09-29 | 2017-07-26 | Huawei Technologies Co., Ltd. | Network storage method, switch device, and controller |
CN102929687B (zh) * | 2012-10-12 | 2016-05-25 | 山东省计算中心(国家超级计算济南中心) | 一种节能的云计算数据中心虚拟机放置方法 |
CN103905268B (zh) * | 2012-12-28 | 2017-08-29 | 华为技术有限公司 | Gre链路检测方法、主控板、装置及通信防护*** |
CN103797774B (zh) * | 2013-11-05 | 2017-07-21 | 华为技术有限公司 | 一种网络地址转换设备及方法 |
US9461923B2 (en) * | 2013-12-06 | 2016-10-04 | Algoblu Holdings Limited | Performance-based routing in software-defined network (SDN) |
EP3086513B1 (en) * | 2013-12-23 | 2020-07-29 | Huawei Technologies Co., Ltd. | Message processing method and gateway |
CN104780055B (zh) * | 2014-01-10 | 2018-03-06 | 华为技术有限公司 | 一种数据流的处理方法及装置 |
US9571412B2 (en) * | 2014-11-21 | 2017-02-14 | Cavium, Inc. | Systems and methods for hardware accelerated timer implementation for openflow protocol |
-
2017
- 2017-03-09 CN CN201710138783.3A patent/CN108574587B/zh active Active
- 2017-11-15 WO PCT/CN2017/111136 patent/WO2018161632A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724119A (zh) * | 2012-06-08 | 2012-10-10 | 南京贝伦思网络科技有限公司 | 一种网络负载均衡设备或分流设备规则同步方法 |
CN104811400A (zh) * | 2014-01-26 | 2015-07-29 | 杭州迪普科技有限公司 | 一种分布式网络设备 |
CN105515919A (zh) * | 2016-01-20 | 2016-04-20 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希压缩算法的网络流量监控方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108574587A (zh) | 2018-09-25 |
WO2018161632A1 (zh) | 2018-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107078969B (zh) | 实现负载均衡的计算机设备、***和方法 | |
US10812394B2 (en) | Virtual network device and related method | |
WO2019237588A1 (zh) | Linux虚拟服务器的创建方法、装置、计算机设备及存储介质 | |
CN111263373B (zh) | 数据处理方法、控制器和转发设备 | |
WO2014190791A1 (zh) | 一种网关设备身份设置的方法及管理网关设备 | |
CN108574587B (zh) | 分布式设备的容量更新方法及装置 | |
CN112235175B (zh) | 一种网桥设备的访问方法、访问装置及网桥设备 | |
CN108933844B (zh) | 提供dhcp服务的方法及设备 | |
EP4075730A1 (en) | Method and device for multi-cloud interconnection | |
US20200244623A1 (en) | Data transmission method, server and offload card | |
CN113794618A (zh) | 基于虚拟网卡的冗余网络通信方法、装置及终端设备 | |
CN108574635B (zh) | 一种路由优先级配置方法、设备以及控制器 | |
US10498637B2 (en) | Switch processing method, controller, switch, and switch processing system | |
JP2017038218A (ja) | 通信システムおよび設定方法 | |
CN114629844B (zh) | 一种报文转发的方法、装置及电子设备 | |
EP4216510A1 (en) | Method for acquiring address, apparatus and system | |
JP2023543428A (ja) | モビリティ管理エンティティ(mme)へのs1接続、および、アクセスおよびモビリティ管理機能(amf)へのn2接続を分配するための方法、システムならびにコンピュータ読取可能媒体 | |
CN108712522B (zh) | Ip地址分配方法和装置 | |
US9077700B2 (en) | Authentication server, authentication method and computer program | |
CN107295113B (zh) | 一种网络配置的方法、交换机和服务器 | |
CN112887201A (zh) | 基于vrrp的接口更新方法、装置及存储介质 | |
EP4184822A1 (en) | Method and apparatus for keeping user terminal alive | |
CN111064622A (zh) | 网络设备、同步装置及信息传输方法 | |
CN107547395B (zh) | 一种报文传输方法、装置及机器可读存储介质 | |
WO2024067509A1 (zh) | 网桥端口分配方法及装置 |
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 |