CN108574587A - 分布式设备的容量更新方法及装置 - Google Patents

分布式设备的容量更新方法及装置 Download PDF

Info

Publication number
CN108574587A
CN108574587A CN201710138783.3A CN201710138783A CN108574587A CN 108574587 A CN108574587 A CN 108574587A CN 201710138783 A CN201710138783 A CN 201710138783A CN 108574587 A CN108574587 A CN 108574587A
Authority
CN
China
Prior art keywords
equipment
cpu
message
list item
state list
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.)
Granted
Application number
CN201710138783.3A
Other languages
English (en)
Other versions
CN108574587B (zh
Inventor
肖晓容
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710138783.3A priority Critical patent/CN108574587B/zh
Priority to PCT/CN2017/111136 priority patent/WO2018161632A1/zh
Publication of CN108574587A publication Critical patent/CN108574587A/zh
Application granted granted Critical
Publication of CN108574587B publication Critical patent/CN108574587B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic 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标识,生成第一分流表。
CN201710138783.3A 2017-03-09 2017-03-09 分布式设备的容量更新方法及装置 Active CN108574587B (zh)

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 true CN108574587A (zh) 2018-09-25
CN108574587B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112714011A (zh) * 2020-12-15 2021-04-27 贝壳技术有限公司 分流信息配置方法、装置、电子设备和存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134372B (zh) * 2022-06-23 2023-08-29 中国民航信息网络股份有限公司 一种数据处理方法和相关装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102724119A (zh) * 2012-06-08 2012-10-10 南京贝伦思网络科技有限公司 一种网络负载均衡设备或分流设备规则同步方法
CN102821165A (zh) * 2012-04-13 2012-12-12 中兴通讯股份有限公司 Ip地址转换方法及装置
WO2014047951A1 (zh) * 2012-09-29 2014-04-03 华为技术有限公司 一种网络存储的方法、交换设备和控制器
US20150163152A1 (en) * 2013-12-06 2015-06-11 Algoblu Holdings Limited Performance-based routing in software-defined network (sdn)
CN104780055A (zh) * 2014-01-10 2015-07-15 华为技术有限公司 一种数据流的处理方法及装置
CN104811400A (zh) * 2014-01-26 2015-07-29 杭州迪普科技有限公司 一种分布式网络设备
CN105515919A (zh) * 2016-01-20 2016-04-20 中国电子科技集团公司第五十四研究所 一种基于哈希压缩算法的网络流量监控方法
US20160149819A1 (en) * 2014-11-21 2016-05-26 Cavium, Inc. Systems and methods for hardware accelerated timer implementation for openflow protocol

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354695B (zh) * 2008-09-19 2010-07-21 杭州华三通信技术有限公司 一种进程间通信的方法、系统和分布式设备
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 华为技术有限公司 一种网络地址转换设备及方法
EP3086513B1 (en) * 2013-12-23 2020-07-29 Huawei Technologies Co., Ltd. Message processing method and gateway

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102821165A (zh) * 2012-04-13 2012-12-12 中兴通讯股份有限公司 Ip地址转换方法及装置
CN102724119A (zh) * 2012-06-08 2012-10-10 南京贝伦思网络科技有限公司 一种网络负载均衡设备或分流设备规则同步方法
WO2014047951A1 (zh) * 2012-09-29 2014-04-03 华为技术有限公司 一种网络存储的方法、交换设备和控制器
US20150163152A1 (en) * 2013-12-06 2015-06-11 Algoblu Holdings Limited Performance-based routing in software-defined network (sdn)
CN104780055A (zh) * 2014-01-10 2015-07-15 华为技术有限公司 一种数据流的处理方法及装置
CN104811400A (zh) * 2014-01-26 2015-07-29 杭州迪普科技有限公司 一种分布式网络设备
US20160149819A1 (en) * 2014-11-21 2016-05-26 Cavium, Inc. Systems and methods for hardware accelerated timer implementation for openflow protocol
CN105515919A (zh) * 2016-01-20 2016-04-20 中国电子科技集团公司第五十四研究所 一种基于哈希压缩算法的网络流量监控方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112714011A (zh) * 2020-12-15 2021-04-27 贝壳技术有限公司 分流信息配置方法、装置、电子设备和存储介质
CN112714011B (zh) * 2020-12-15 2023-06-02 贝壳技术有限公司 分流信息配置方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
WO2018161632A1 (zh) 2018-09-13
CN108574587B (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
US20200285396A1 (en) Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US10411912B2 (en) Managing tunnel endpoints for facilitating creation of logical networks
US9264375B2 (en) Software-defined networking interface between multiple platform managers
US8589919B2 (en) Traffic forwarding for virtual machines
AU2012328697B9 (en) Chassis controllers for converting universal flows
US20180123870A1 (en) Vnf failover method and apparatus
US10992575B2 (en) Assignment of internet protocol addresses to services
US20150271075A1 (en) Switch-based Load Balancer
CN105337780B (zh) 一种服务器节点配置方法及物理节点
CN110224917B (zh) 数据传输方法、装置及系统、服务器
CN109936641A (zh) 域名解析的方法、虚拟交换机和分布式dns系统
US9705978B1 (en) Dependency graph management
CN108574587A (zh) 分布式设备的容量更新方法及装置
CN104243304A (zh) 非全连通拓扑结构的数据处理方法、设备和系统
CN109981437B (zh) 一种基于vpc的多数据中心互通方法及相关设备
WO2014064976A1 (ja) ネットワーク機器、制御方法、及びプログラム
US20060233164A1 (en) Method to separate fibre channel switch core functions and fabric management in a storage area network
US20120102290A1 (en) Storage Scalability Management
CN112311671B (zh) 向交换芯片下发聚合链路配置的方法、装置、介质及设备
US20220337503A1 (en) Identifying zero redundancy paths and affected endpoints in a software defined network
JP2016220126A (ja) ネットワーク処理システム、ネットワークシステムの管理方法及び通信装置
CN114124803A (zh) 设备管理方法、装置、电子设备及存储介质
CN111211927B (zh) 一种资源同步方法及装置
CN110912837A (zh) 基于vsm系统的主备切换方法和装置
CN103051568A (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