CN117411738B - 组播复制方法、装置、电子设备和存储介质 - Google Patents
组播复制方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117411738B CN117411738B CN202311727740.0A CN202311727740A CN117411738B CN 117411738 B CN117411738 B CN 117411738B CN 202311727740 A CN202311727740 A CN 202311727740A CN 117411738 B CN117411738 B CN 117411738B
- Authority
- CN
- China
- Prior art keywords
- multicast
- replication
- identifier
- storage address
- entry
- 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
- 230000010076 replication Effects 0.000 title claims abstract description 341
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000004891 communication Methods 0.000 claims abstract description 20
- 238000012217 deletion Methods 0.000 claims description 24
- 230000037430 deletion Effects 0.000 claims description 24
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 230000009467 reduction Effects 0.000 claims description 3
- 239000003550 marker Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 description 18
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101100517651 Caenorhabditis elegans num-1 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5069—Address allocation for group communication, multicast communication or broadcast communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种组播复制方法、装置、电子设备和存储介质,涉及通信技术领域,该方法包括:获取组播报文所属组播组的第一组播标识;从组播起始表中查找第一组播标识对应的第一加扰因子和第一组播条目数量;基于第一组播标识、第一加扰因子和第一组播条目数量分别计算第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制;其中,组播复制表中包括至少一个组播标识对应的组播条目。如此,组播复制的性能可以达到线速复制。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种组播复制方法、装置、电子设备和存储介质。
背景技术
随着网络技术的发展,组播复制技术的应用越来越广泛。随着用户的增加,一个组播组中的组播组成员变多,一个组播报文需要被复制的数量也随之增多。因此,对组播复制的性能要求也变得更高。组播复制的性能可以用获取组播复制表的查询结果所需要的时间来衡量,获取组播复制表的查询结果所需要的时间可以用芯片的时钟周期表示。若能够在芯片的一个周期内获取到一个查询结果,则可认为组播复制的性能达到了线速复制。
然而,芯片获取组播复制表的查询结果的时间受到了组播复制表大小和芯片工艺的影响,一般需要几个周期。在组播复制表规模变大,芯片工艺没有突破的情况下,如何提高组播复制的性能,达到线速复制,成为需要解决的重要问题。
发明内容
本发明实施例的目的在于提供一种组播复制方法、装置、电子设备和存储介质,以使组播复制性能可以达到线速复制。具体技术方案如下:
第一方面,本申请实施例提供一种组播复制方法,包括:
获取组播报文所属组播组的第一组播标识;
从组播起始表中查找所述第一组播标识对应的第一加扰因子和第一组播条目数量;
基于所述第一组播标识、所述第一加扰因子和所述第一组播条目数量分别计算所述第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制;
其中,所述组播复制表中包括至少一个组播标识对应的组播条目。
在一种可能的实现方式中,所述基于所述第一组播标识、所述第一加扰因子和所述第一组播条目数量分别计算所述第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制,包括:
将预设初始复制序列号作为当前复制序列号;
对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址;
从所述组播复制表中读取所述目标存储地址对应的目标组播条目;
基于所述目标组播条目包括的组播复制信息进行组播复制,并将当前复制序列号加1,返回所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤,直至当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量。
在一种可能的实现方式中,所述方法还包括:
接收组播条目增加指令,所述组播条目增加指令包括第二组播标识和新增组播复制信息;
从所述组播起始表中查找所述第二组播标识对应的第二加扰因子和第二组播条目数量;
将所述第二组播条目数量与预设初始复制序列号的和值,作为所述新增组播复制信息对应的新增组播复制序列号;
基于所述第二组播标识、所述第二加扰因子和所述新增组播复制序列号计算所述新增组播复制信息对应的新增存储地址;
在所述组播复制表中所述新增存储地址处,生成存储有所述新增组播复制信息的组播条目;
将所述组播起始表中所述第二组播标识对应的组播条目数量加1。
在一种可能的实现方式中,所述方法还包括:
接收组播条目删除指令,所述组播条目删除指令包括第三组播标识和待删除的第一组播条目对应的第一复制序列号;
从所述组播起始表中查找所述第三组播标识对应的第三加扰因子和第三组播条目数量;
基于所述第三组播标识、所述第三加扰因子和所述第一复制序列号计算第一组播条目对应的第一存储地址;
基于所述第三组播标识、所述第三加扰因子和第二复制序列号,计算第二组播条目的第二存储地址,所述第二复制序列号为所述第三组播标识对应的最后一个复制序列号;
从所述组播复制表读取所述第二存储地址对应的所述第二组播条目;
从所述组播复制表中删除所述第一存储地址对应的所述第一组播条目,并在所述第一存储地址处存入所述第二组播条目;
将所述组播起始表中所述第三组播标识对应的组播条目数量减1。
在一种可能的实现方式中,所述第三组播标识和所述第一组播标识相同;在所述第一存储地址处存入所述第二组播条目之后,所述方法还包括:
判断所述当前复制序列号是否大于所述第一复制序列号;
若是,则将所述第二存储地址对应的复制标记和删除标记均置为第一值;
若否,则将所述第二存储地址对应的复制标记置为第二值,将所述第二存储地址对应的删除标记置为第一值;
在所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址之后,所述方法还包括:
判断所述目标存储地址对应的删除标记是否为第一值;
若是,则判断所述目标存储地址对应的复制标记是否为第一值;
若所述目标存储地址对应的复制标记为第一值,则执行所述从所述组播复制表中读取所述目标存储地址对应的目标组播条目的步骤;
若所述目标存储地址对应的复制标记为第二值,则将当前复制序列号加1;若当前复制序列号与所述预设初始复制序列号之间的差值未达到所述第一组播条目数量,则返回所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤;若当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量,则停止组播复制,并执行所述将所述组播起始表中所述第三组播标识对应的组播条目数量减1的步骤。
第二方面,本申请实施例提供一种组播复制装置,包括:
获取模块,用于获取组播报文所属组播组的第一组播标识;
查找模块,用于从组播起始表中查找所述第一组播标识对应的第一加扰因子和第一组播条目数量;
复制模块,用于基于所述第一组播标识、所述第一加扰因子和所述第一组播条目数量分别计算所述第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制;
其中,所述组播复制表中包括至少一个组播标识对应的组播条目。
在一种可能的实现方式中,所述复制模块,具体用于:
将预设初始复制序列号作为当前复制序列号;
对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址;
从所述组播复制表中读取所述目标存储地址对应的目标组播条目;
基于所述目标组播条目包括的组播复制信息进行组播复制,并将当前复制序列号加1,返回所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤,直至当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量。
在一种可能的实现方式中,所述装置还包括接收模块、加和模块、计算模块和生成模块:
所述接收模块,用于接收组播条目增加指令,所述组播条目增加指令包括第二组播标识和新增组播复制信息;
所述查找模块,还用于从所述组播起始表中查找所述第二组播标识对应的第二加扰因子和第二组播条目数量;
所述加和模块,用于将所述第二组播条目数量与预设初始复制序列号的和值,作为所述新增组播复制信息对应的新增组播复制序列号;
所述计算模块,用于基于所述第二组播标识、所述第二加扰因子和所述新增组播复制序列号计算所述新增组播复制信息对应的新增存储地址;
所述生成模块,用于在所述组播复制表中所述新增存储地址处,生成存储有所述新增组播复制信息的组播条目;
所述加和模块,还用于将所述组播起始表中所述第二组播标识对应的组播条目数量加1。
在一种可能的实现方式中,所述装置还包括接收模块、计算模块、读取模块、更新模块和减少模块;
所述接收模块,还用于接收组播条目删除指令,所述组播条目删除指令包括第三组播标识和待删除的第一组播条目对应的第一复制序列号;
所述查找模块,还用于从所述组播起始表中查找所述第三组播标识对应的第三加扰因子和第三组播条目数量;
所述计算模块,还用于基于所述第三组播标识、所述第三加扰因子和所述第一复制序列号计算第一组播条目对应的第一存储地址;
所述计算模块,还用于基于所述第三组播标识、所述第三加扰因子和第二复制序列号,计算第二组播条目的第二存储地址,所述第二复制序列号为所述第三组播标识对应的最后一个复制序列号;
所述读取模块,用于从所述组播复制表读取所述第二存储地址对应的所述第二组播条目;
所述更新模块,用于从所述组播复制表中删除所述第一存储地址对应的所述第一组播条目,并在所述第一存储地址处存入所述第二组播条目。
所述减少模块,用于将所述组播起始表中所述第三组播标识对应的组播条目数量减1。
在一种可能的实现方式中,所述装置还包括判断模块、置位模块和加和模块;
所述判断模块,用于判断所述当前复制序列号是否大于所述第一复制序列号;
若所述判断模块的判断结果为是,则触发所述置位模块将所述第二存储地址对应的复制标记和删除标记均置为第一值;
若所述判断模块的判断结果为否,则触发所述置位模块将所述第二存储地址对应的复制标记置为第二值,将所述第二存储地址对应的删除标记置为第一值;
所述判断模块,还用于判断所述目标存储地址对应的删除标记是否为第一值;
若所述判断模块的判断结果为是,则判断所述目标存储地址对应的复制标记是否为第一值;
若所述判断模块判断所述目标存储地址对应的复制标记为第一值,则触发所述读取模块执行所述从所述组播复制表中读取所述目标存储地址对应的目标组播条目的步骤;
若所述判断模块判断所述目标存储地址对应的复制标记为第二值,则触发所述加和模块将当前复制序列号加1;若所述复制模块确定当前复制序列号与所述预设初始复制序列号之间的差值未达到所述第一组播条目数量,则返回所述复制模块执行所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤;若所述复制模块确定当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量,则停止组播复制,并触发所述减少模块执行所述将所述组播起始表中所述第三组播标识对应的组播条目数量减1的步骤。
第三方面,本申请实施例提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法。
第五方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述方法。
采用上述技术方案,组播起始表中以组播标识为索引存储了组播标识与加扰因子和组播条目数量之间的预设对应关系,在接收到组播报文后,可以获取组播报文所属组播组的第一组播标识,并在组播起始表中查找到与第一组播标识对应的第一加扰因子和第一组播条目数量。然后基于第一组播标识、第一加扰因子和第一组播条目数量分别计算第一组播标识对应的每个组播条目的存储地址。如此,可以计算得到该组播组对应的组播条目的存储地址,并根据计算得到的存储地址直接定位到组播复制表中的组播条目,并基于读取的组播条目包括的组播复制信息进行组播复制。如此,在一个周期内,电子设备即可根据计算得到组播条目的存储地址,快速定位到组播复制表中的组播条目,突破了组播复制表和芯片工艺对组播复制性能的限制。在芯片的每个时钟周期内均可以查找到一个组播条目,达到稳定的线速复制的性能。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本申请实施例提供的一种组播复制方法的流程图;
图2为本申请实施例提供的一种组播复制方法的示例性流程图;
图3为本申请实施例提供的一种组播条目删除方法的流程图;
图4为本申请实施例提供的一种组播条目增加方法的流程图;
图5为本申请实施例提供的另一种组播条目删除方法的流程图;
图6为本申请实施例提供的一种组播条目更新方法的示例性流程图;
图7为本申请实施例提供的一种组播复制装置的结构示意图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
当具有组播复制功能的电子设备接收到组播报文后,可以基于该组播报文中携带的组播标识,在本地查找该组播标识对应的一个组播条目,然后基于查找到的组播条目进行组播复制。
在按照查找到的一个组播条目,对组播报文进行组播复制后,电子设备可以再次查找到该组播条目,然后基于该组播条目中存储的下一跳组播条目的指针,确定下一跳组播条目在组播复制表中的位置,按照下一跳组播条目,对组播报文进行组播复制,依次类推,直至完成对该组播标识对应的所有组播条目的查找。受限于组播复制表大小和芯片工艺的影响,查找到一个组播条目所需的时间通常为几个周期。随着组播复制表的存储的组播条目的增多,完成组播报文复制,并将复制的组播报文发送给对应的组播组成员所需的时间也越来越长,无法实现线速复制的效果。上述周期是指芯片的时钟周期。芯片完成组播复制的复制速率可以用芯片主频和芯片查找一个组播条目所需的时间比值表示。
在另一种组播复制方案中,可以将组播报文分发到多个复制引擎中,每个复制引擎用于对一个组播报文的进行复制。
假设电子设备中包括三个复制引擎,分别为复制引擎1、复制引擎2和复制引擎3,该电子设备接收到三个组播报文,分别为组播报文1、组播报文2和组播报文3。如果查找一个组播条目所需的时间为3个周期。在第一个周期,将组播报文1发送给复制引擎1,复制引擎1在第四个周期查找到组播报文1对应的第一个组播条目,然后按照该第一个组播条目对组播报文1进行复制;在第二个周期,将组播报文2发送给复制引擎2,复制引擎2在第五个周期查找到组播报文2对应的第一个组播条目,然后按照该第一个组播条目对组播报文2进行复制;在第三个周期,将组播报文3发送给复制引擎3,复制引擎3在第六个周期查找到组播报文3对应的第一个组播条目,然后按照该第一个组播条目对组播报文3进行的复制,依次类推。如此,从第四个周期开始,电子设备可以实现在每个周期内获取到一个组播条目,并按照获取到的组播条目对组播报文进行复制,实现了线速复制。
然而,当不同组播报文对应的组播条目数量不同时,电子设备无法实现线速复制。
在又一种组播复制方案中,电子设备中存储有一个组播标识对应的多个链表,多个链表包含一个组播标识对应的所有组播条目,其中一个组播标识对应的链表的数量和芯片查找一个组播条目所需的周期数量相同。在组播复制过程中,电子设备的芯片依次查找本地存储的多个链表,利用芯片在每个链表查找组播条目所需的时间,掩盖芯片查找组播条目的延时,可以实现每个周期按照查找到的组播条目进行组播报文复制的效果。
然而,当上述多个链表中的每个链表包含的组播条目数量不同时,会导致电子设备无法达到线速复制。
例如,芯片查找一个组播条目所需的时间为3个周期,一个组播标识对应的链表的数量为3个。在第一个周期,电子设备开始在组播复制表中查找该组播标识对应的第一个链表,在第四个周期查找到第一个链表中第一个组播条目,然后在第四个周期电子设备按照该第一个组播条目对进行组播报文的复制;在第二个周期,电子设备在组播复制表中查找该组播标识对应的第二个链表,在第五个周期查找到第二个链表中第一个组播条目,然后在第五个周期电子设备按照该第一个组播条目对进行组播报文的复制;在第三个周期,电子设备在组播复制表中查找该组播标识对应的第三个链表,在第六个周期查找到第三个链表中第一个组播条目,然后在第六个周期电子设备按照该第一个组播条目对进行组播报文的复制,依次类推,直至完成对该组播报文的复制。
然而,如果一个组播标识对应的多个链表中,每个链表包含的组播条目的数量不一致,则后续会出现多个周期才能查找到一个组播条目的情况,导致无法达到线速复制的效果。假设上述第一个链表包括10个组播条目,第二个链表中包括5个组播条目,第三个链表包括10个组播条目,在查找到第二链表包括的第5个组播条目后,后续每三个周期只能查找到第一个链表的一个组播条目和第三个链表的一个组播条目,即每三个周期只能获取到两个组播条目,无法实现在每个周期内均获取到一个组播条目的效果,进而无法实现线速复制。
为解决上述问题,本申请实施例提供一种组播复制方法,该方法应用于电子设备。如图1所示,该方法包括:
S101、获取组播报文所属组播组的第一组播标识。
其中,第一组播标识是组播报文所属组播组的组播连接标识(MulticastConnection Identifier,MCID)。每个组播组包括多个组播组成员,组播组内的组播组成员均可以接收组播报文。
S102、从组播起始表中查找第一组播标识对应的第一加扰因子和第一组播条目数量。
其中,组播起始表中以组播标识为索引,存储有每个组播标识对应的加扰因子和组播条目数量。第一组播条目数量为第一组播标识对应的所有组播条目的数量,第一组播条目数量与第一组播标识对应的组播组中包括的组播组成员数量相同。
加扰因子可以是基于循环冗余校验(Cyclic Redundancy Check,CRC)算法生成的CRC校验码。
S103、基于第一组播标识、第一加扰因子和第一组播条目数量分别计算第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制。
其中,组播复制表中包括至少一个组播标识对应的组播条目。组播条目包括组播复制信息,组播复制信息是组播复制需要的信息,组播复制信息包括组播报文的目的设备信息,组播报文复制份数等,根据读取的组播复制信息,可以将组播报文复制并发送给组播组的各组播组成员。
采用上述方法,组播起始表中以组播标识为索引存储了组播标识与加扰因子和组播条目数量之间的预设对应关系,在接收到组播报文后,可以获取组播报文所属组播组的第一组播标识,并在组播起始表中查找到与第一组播标识对应的第一加扰因子和第一组播条目数量。然后基于第一组播标识、第一加扰因子和第一组播条目数量分别计算第一组播标识对应的每个组播条目的存储地址。如此,可以计算得到该组播组对应的组播条目的存储地址,并根据计算得到的存储地址直接定位到组播复制表中的组播条目,然后基于读取的组播条目包括的组播复制信息进行组播复制。如此,在一个周期内,电子设备即可根据计算得到组播条目的存储地址,快速定位到组播复制表中的组播条目,突破了组播复制表和芯片工艺对组播复制性能的限制。在芯片的每个时钟周期内均可以查找到一个组播条目,达到稳定的线速复制的性能。
需要说明的是,在本申请实施例中,加扰因子是基于CRC算法生成的,通过为不同的组播组设置不同的加扰因子,可以使得不同组播组的组播条目分布在组播复制表的不同位置。
在本申请的一些实施例中,上述S103、基于第一组播标识、第一加扰因子和第一组播条目数量分别计算第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制,具体包括以下步骤:
步骤1、将预设初始复制序列号作为当前复制序列号。
其中,预设初始复制序列号是指第一组播标识对应的第一个需要查找的组播条目对应的序列号,预设初始复制序列号可以为0,也可以为其他数值,本申请实施例对预设初始复制序列号的取值不做限定。
步骤2、对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址。
其中,电子设备对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,将计算得到的哈希值作为上述目标存储地址。
作为示例,哈希算法可以为安全散列算法(Secure Hash Algorithm,SHA)或者信息摘要算法(message-digest algorithm,MD)等,本申请实施例对采用的哈希算法不作具体限定。
步骤3、从组播复制表中读取目标存储地址对应的目标组播条目。
步骤4、基于目标组播条目包括的组播复制信息进行组播复制,并将当前复制序列号加1,返回对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤,即返回步骤2,直至当前复制序列号与预设初始复制序列号之间的差值达到第一组播条目数量。
其中,第一组播标识对应多个组播条目,多个组播条目中的每个组播条目对应一个复制序列号,相邻复制序列号之间的差值为1。
当前复制序列号与预设初始复制序列号之间的差值达到第一组播条目数量,表示计算得到的目标存储地址的数量和第一组播标识对应的组播组中的成员的数量相同,即完成对第一组播标识对应组播条目的查找。例如,若第一组播条目数量为10,预设初始复制序列号为0,则可依次查找组播复制序列号0至9对应的组播条目,直至将当前复制序列号更新为10时,则可确定已查找到10个组播条目。
采用该方法,在利用当前复制序列号计算得到一个组播条目的存储地址后,更新当前复制序列号,然后利用更新后的当前复制序列号、第一组播标识和第一加扰因子计算得到下一个组播条目的存储地址,如此循环,电子设备可以在每个周期内计算得到一个复制序列号对应的组播条目的存储地址,并获取到该存储地址处的组播条目,可以达到线速复制的效果。
如图2所示,图2为本申请实施例提供的一种组播复制方法的示例性示意图。图2示例性示出了组播起始表、复制引擎和和组播复制表。其中,组播起始表中包括每个组播标识(MCID)对应的加扰因子(Scramb_factor)和组播条目数量(Number,NUM),复制引擎用于维护复制序列号(Cur_cnt),组播复制表中包括每个组播标识对应的组播条目,每个组播条目中包括组播复制信息(Copy_info)。
组播报文中携带MCID,电子设备接收到组播报文后,在组播起始表中查找该MCID对应的Scramb_factor 和NUM。电子设备的复制引擎可以确定当前的Cur_cnt,并对MCID、Scramb_factor和当前的Cur_cnt进行哈希运算,得到当前的Cur_cnt对应的组播条目的存储地址(Copy0_addr),电子设备按照Copy0_addr中的Copy0_info对组播报文进行复制。
然后复制引擎将前一次计算Copy0_addr时使用的Cur_cnt的取值加1,作为新的Cur_cnt,然后对MCID、Scramb_factor和新的Cur_cnt进行哈希运算,得到新的Cur_cnt对应的组播条目的Copy1_addr,电子设备按照Copy1_addr中的Copy1_info对组播报文进行复制。以此类推,直至复制引擎计算得到CopyN_addr,电子设备按照CopyN_addr中的CopyN_info对组播报文进行复制,如此,电子设备完成对该组播报文的组播复制。
具体的,如图3所示,图3为本申请实施例提供的一种组播复制方法的示例性流程图,具体包括:
S301、开始。
S302、利用MCID查找组播起始表。
其中,组播起始表存储有MCID与Scramb_factor和NUM之间的预设对应关系。
S303、获取MCID对应的Scramb_factor和NUM。
S304、复制引擎通过MCID、Scramb_factor和Cur_cnt计算得到组播条目的Copy_addr。
复制引擎通过对MCID、Scramb_factor和Cur_cnt进行哈希运算,得到组播条目的Copy_addr。
S305、按照计算得到的Copy_addr读取组播条目。
S306、获取组播条目中的Copy_info,并完成复制。
S307、更新Cur_cnt。
每次更新Cur_cnt时可以在当前Cur_cnt基础上加1。
S308、判断当前Cur_cnt是否等于NUM。
若是,执行S309,若否,执行S304。
若是,则表示电子设备完成对该MCID对应的组播条目的查找,并按照查找到的组播条目对组播报文进行复制,因此电子设备可以执行S309,结束上述组播复制过程;若否,表示电子设备尚未完成对该MCID对应的组播条目的查找,则返回上述S304。
S309、结束。
采用上述方法,在组播起始表中存储组播标识对应的加扰因子和组播条目数量,然后可以利用加扰因子、组播标识和复制序列号计算得到组播条目的存储地址,节省了查找组播复制表所需的时间。并且,通过对复制序列号进行维护,电子设备在每个周期内可以计算得到一个复制序列号对应的组播条目的存储地址,并按照该存储地址读取到组播复制表中的组播条目。如此,可以实现在每个周期内查找到一个组播条目,达到了稳定的线速复制性能。
在本申请的一些实施例中,电子设备还可以维护组播复制表,对组播复制表中的组播条目进行删除或者增加。以下结合图4介绍如何对增加组播条目,如图4所示,该方法包括:
S401、接收组播条目增加指令,组播条目增加指令包括第二组播标识和新增组播复制信息。
其中,第二组播标识是新增的组播组成员所属组播组的MCID。新增组播复制信息是新增的组播组成员对应的组播复制信息。
S402、从组播起始表中查找第二组播标识对应的第二加扰因子和第二组播条目数量。
其中,组播起始表中以第二组播标识为索引,存储有第二组播标识对应的第二加扰因子和第二组播条目数量。第二组播条目数量为第二组播标识对应的所有组播条目的数量。
S403、将第二组播条目数量与预设初始复制序列号的和值,作为新增组播复制信息对应的新增组播复制序列号。
可以理解的,新增组播复制序列号为在第二组播标识对应的各组播条目中的最大复制序列号的基础上加1。
例如,若第二组播条目数量为10,预设初始复制序列号为0,则第二组播标识当前对应的各组播条目对应的复制序列号分别为0至9,在新增组播条目时,则可将新增的组播条目对应的复制序列号设置为10。再例如,若预设初始复制序列号为1,则第二组播标识当前对应的各组播条目对应的复制序列号分别为1至10,在增加组播复制信息时,则可将新增组播复制信息对应的复制序列号设置为11。
S404、基于第二组播标识、第二加扰因子和新增组播复制序列号计算新增组播复制信息对应的新增存储地址。
其中,计算新增存储地址的方法即为上述进行哈希运算的方法,具体内容参考上述实施例中的相关描述,此处不再赘述。
S405、在组播复制表中新增存储地址处,生成存储有新增组播复制信息的组播条目。
S406、将组播起始表中第二组播标识对应的组播条目数量加1。
采用上述方法,在接收到组播条目增加指令后,在组播起始表中查找第二组播标识对应的第二加扰因子和第二组播条目数量。然后将第二组播条目数量和预设初始复制序列号的和值作为新增组播复制序列号,然后基于计算得到的新增存储地址,生成存储有新增组播复制信息的组播条目。由于在组播报文的复制过程中,电子设备是按照第二组播标识对应的复制序列号从小到大的顺序,依次基于第二加扰因子、第二组播标识和第二组播标识对应的复制序列号进行哈希运算,得到组播条目的存储地址,因此将第二组播条目数量和预设初始复制序列号的和值作为新增组播复制序列号,可以避免新增的组播条目和已有的组播条目冲突。并且通过更新第二组播标识对应的组播条目数量,可以使得后续电子设备能够查询到该新增的组播条目,避免了组播复制表的更新对上述组播报文的复制过程造成影响。
图4所示的方法为在组播复制表中增加组播条目的方法,该方法可以实时的在组播复制表中增加组播条目。以下结合图5介绍如何在组播复制表中删除组播条目,如图5所示,该方法具体包括:
S501、接收组播条目删除指令。
其中,组播条目删除指令包括第三组播标识和待删除的第一组播条目对应的第一复制序列号。
第三组播标识是删除的组播组成员所属的组播组的MCID,待删除的第一组播条目为删除的组播组成员对应的组播条目。
S502、从组播起始表中查找第三组播标识对应的第三加扰因子和第三组播条目数量。
其中,组播起始表中以第三组播标识为索引,存储有第三组播标识对应的第三加扰因子和第三组播条目数量。第三组播条目数量为第三组播标识对应的所有组播条目的数量。
S503、基于第三组播标识、第三加扰因子和第一复制序列号计算第一组播条目对应的第一存储地址。
其中,通过对第三组播标识、第三加扰因子和第一复制序列号进行哈希运算,得到第一存储地址。
S504、基于第三组播标识、第三加扰因子和第二复制序列号,计算第二组播条目的第二存储地址,第二复制序列号为第三组播标识对应的最后一个复制序列号。
具体的,第二复制序列号的取值为第三组播条目数量减去上述预设初始复制序列号的差值,再减去1的差值。
例如,第三组播条目数量为10,预设初始复制序列号为0,则第二复制序列号的值为10-0-1=9。
S505、从组播复制表读取第二存储地址对应的第二组播条目。
S506、从组播复制表中删除第一存储地址对应的第一组播条目,并在第一存储地址处存入第二组播条目。
S507、将组播起始表中第三组播标识对应的组播条目数量减1。
在接收到组播条目删除指令后,分别利用上述计算组播条目存储地址的方法,计算第一组播条目的存储地址和第二组播条目的存储地址,即计算得到待删除组播条目的存储地址,以及第三组播标识对应的最后一个复制序列号对应的组播条目的存储地址,然后将第一组播条目中的组播复制信息更新为第二组播条目的组播复制信息。基于组播复制表中已有的组播条目中的组播复制信息,通过在第一存储地址中写入第二存储地址的组播复制信息,并将组播起始表中第三组播标识对应的组播条目数量减1,后续电子设备则无法读取到第二存储地址的组播复制信息,即可完成对组播复制信息的删除,且不会影响组播复制过程。如此,电子设备可以实现灵活对组播条目进行删除操作。
在一种实现方式中,若第三组播标识对应的组播组当前未被组播复制,在将第二组播条目存入第一存储地址之后,电子设备可直接将组播起始表中第三组播标识对应的组播条目数量减1。
如此,可以在完成对组播复制表的更新后,适应性的更新组播起始表,后续电子设备基于更新后的组播起始表,无法计算得到第二存储地址中的第二组播条目,即,将第二存储地址中第二组播条目删除。电子设备可以基于更新后的组播起始表和组播复制表进行组播报文复制,保证后续组播复制过程的正确性。
在另一种实现方式中,若第三组播标识和第一组播标识相同,即第三组播标识对应的组播组当前正在被进行组播复制,则在上述S506,在第一存储地址处存入第二组播条目之后,该方法还包括:
判断当前复制序列号是否大于第一复制序列号。
若是,则将第二存储地址对应的复制标记和删除标记均置为第一值。
若否,则将第二存储地址对应的复制标记置为第二值,将第二存储地址对应的删除标记置为第一值。
其中,复制标记为第一值表示需要复制,复制标记为第二值表示无需复制。
删除标记为第一值表示需要删除,删除标记为第二值表示无需删除。
可以理解的,若当前复制序列号大于第一复制序列号,表示电子设备已经完成对待删除组播条目的查找,之后复制引擎在计算第三组播标识对应的组播条目的存储地址时,不会再次计算得到待删除组播条目的存储地址。为避免漏复制,需要将第二组播条目中的复制标记置为第一值,如此电子设备仍需按照第二组播条目包括的组播复制信息进行组播复制。
并且,由于此时组播复制表中存在两份第二组播条目的复制信息,因此需要将第二存储地址中的删除标记置为第一值,删除标记置为第一值表示需要将第二存储地址的组播条目删除,即在对组播标识对应的组播组完成组播复制之后,在对组播起始表进行更新时,需要组播标识对应的组播条目数量减去需要删除的组播条目的数量,以使得电子设备在按照更新后的组播起始表计算该组播标识对应的组播条目的存储地址时,不会计算得到包含删除标记为第一值的组播条目的存储地址。
若当前复制序列号小于等于第一复制序列号,表示电子设备尚未完成对待删除组播条目的查找,此时电子设备可以按照上述组播复制的方法流程,完成对组播报文的复制。因此,需要将第二存储地址中的复制标记置为第二值,复制标记置为第二值表示电子设备无需对第二存储地址中的组播条目进行复制。
作为示例,第一值可以为1,第二值可以为0,本申请实施例不限制第一值和第二值的取值。
可以理解的,电子设备可以实时对组播复制表进行组播条目的删除。上述删除组播条目的过程和组播复制的过程可以并行执行。
在上述确定第二存储地址中的复制标记和删除标记的取值后,电子设备还可以根据目标存储地址中的删除标记确定如何进行组播起始表和组播复制表的更新,以及在组播复制的过程中,根据复制标记确定如何进行组播复制。基于此,在对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址之后,该方法还包括以下步骤A至步骤F。
可以理解的是,在到达组播复制的终止条件之前,每更新一次当前复制序列号,都需针对当前复制序列号计算一次目标存储地址。并且,组播条目的删除可能发生在组播复制过程的任一时刻,所以每计算得到一个目标存储地址,均可执行一次以下步骤A至步骤F。
步骤A、判断目标存储地址对应的删除标记是否为第一值。
若是,则执行步骤B;若否,则执行步骤D。
步骤B、判断目标存储地址对应的复制标记是否为第一值。
步骤C、若目标存储地址对应的复制标记为第一值,则执行从组播复制表中读取目标存储地址对应的目标组播条目的步骤。也就是说,若复制标记位为第一值,则可按照上述实施例中的组播复制方法继续基于该目标存储地址进行组播复制。
步骤D、若目标存储地址对应的复制标记为第二值,则将当前复制序列号加1。
步骤E、若当前复制序列号与预设初始复制序列号之间的差值未达到第一组播条目数量,则返回对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤。即继续进行组播复制的流程。
步骤F、若当前复制序列号与预设初始复制序列号之间的差值达到第一组播条目数量,则停止组播复制,并执行将组播起始表中第三组播标识对应的组播条目数量减1的步骤。也就是说,在本申请实施例中,若在对一个组播组的组播复制过程中删除该组播组的组播条目,则需在完成对该组播组的组播复制后,再更新该组播组对应的组播条目数量。
需要说明的是,在对一个组播组进行组播复制过程中,可能会接收到对多个组播条目的删除指令,对每个组播条目的删除方法相同。在针对一个组播报文对一个组播组进行组播复制过程中,在删除一个待删除组播条目时,可以利用该组播组的最后一个组播条目覆盖该待删除的组播条目;在删除另一个待删除组播条目时,可以利用该组播组的倒数第二个组播条目覆盖该待删除的组播条目,以此类推。
在上述删除组播条目的过程中,通过在组播条目中设置复制标记和删除标记的取值,以使得电子设备当读取到删除标记置为第一值的组播条目时,可以根据组播条目中的复制标记确定是否按照该组播条目进行组播报文的复制,以避免对组播条目多复制或者漏复制的问题。
需要说明的是,在不考虑组播复制表灵活维护的情况下,可以将一个组播标识对应的多个组播条目连续放置在组播复制表中。如此,电子设备可以在根据组播报文中的组播标识查找到第一个组播条目后,按照组播复制表中的排列顺序,分别读取该组播标识对应的组播条目,如此也可实现在一个周期内获取到一个组播条目。采用该方法,同样可以使得电子设备实现线速复制。
以下以图6为例介绍本申请实施例提供的更新组播条目的方法,如图6所示,该方法包括:
S601、开始。
S602、接收指令。
S603、判断该指令是否为组播条目增加指令。
若是,执行S615,若否,则该指令为组播条目删除指令,执行S604。
其中,组播条目增加指令中包括新增组播组成员所属组播组的MCID和新增的组播组成员对应的Copy_info。组播条目删除指令中包括待删除组播组成员所属组播组的MCID和待删除组播组成员对应组播条目的Cur_cnt。
电子设备可以在组播起始表中查找每个MCID对应的Scramb_factor和NUM。然后电子设备中的复制引擎对MCID、该MCID对应的Scramb_factor和该MCID对应的Cur_cnt进行哈希运算,可以得到该MCID对应的组播条目的Copy_addr。
S604、当前正在复制的组播报文中的MCID是否等于组播条目删除指令中的MCID。
若是,执行S605,若否,执行S613。
S605、将最后一个Cur_cnt对应的组播条目中的Copy_info覆盖掉待删除组播条目中的Copy_info。
其中,在当前正在复制的组播报文的MCID对应的组播条目中,Cur_cnt最大的组播条目为最后一个Cur_cnt对应的组播条目。
待删除组播条目是组播条目删除指令中待删除组播组成员对应的组播条目。
可以理解的,复制引擎可以计算得到待删除组播条目的Copy_addr和最后一个Cur_cnt对应的组播条目的Copy_addr,电子设备在待删除组播条目的Copy_addr中读取待删除组播条目的Copy_info,在最后一个Cur_cnt对应的组播条目的Copy_addr读取最后一个Cur_cnt对应的组播条目的Copy_info。然后将待删除组播条目中的Copy_info删除,将最后一个Cur_cnt对应的组播条目的Copy_info写入待删除组播条目的Copy_addr中。
S606、当前Cur_cnt是否大于待删除组播条目对应的Cur_cnt。
若是,执行S607,若否,执行S610。
其中,当前Cur_cnt是指电子设备按照当前查找到组播条目对组播报文进行复制时,当前查找到组播条目对应的Cur_cnt。
S607、将最后一个Cur_cnt对应的组播条目中的delete和need_copy均置1。
其中,delete即为上述删除标记,need_copy即为上述复制标记,delete和need_copy均置1为上述删除标记和复制标记均置为第一值。
S608、继续进行组播复制。
S609、若读取到的组播条目中的delete置1,则更新delete_cnt,delete_cnt=delete_cnt+1。
其中,delete_cnt用于表示读取到的同一个组播标识对应组播条目中取值为1的delete的数量。delete_cnt=delete_cnt+1表示当读取到的组播条目中的delete置1时,将delete_cnt的取值加1,作为更新后的delete_cnt的值。
具体的,假设组播标识对应的delete_cnt的取值为0,若电子设备读取到该组播标识对应的组播条目中的delete置1,则对delete_cnt进行更新,更新后的delete_cnt=1+0=1。
S610、delete置1,need_copy置0时,不进行复制,否则进行复制。
S611、当前Cur_cnt是否等于NUM。
若是,执行S612,若否,执行S608。
可以理解的,若当前Cur_cnt等于NUM,表示电子设备已经针对待删除组播组成员所属组播组完成了对当前组播报文的复制,可以停止复制。若当前Cur_cnt小于NUM,电子设备未完成针对待删除组播组成员所属组播组对当前组播报文的复制,需要继续对当前组播报文进行复制。
S612、更新组播起始表中的NUM,NUM=NUM-delete_cnt。
可以理解的,组播条目删除指令中可以包括多个复制序列号,换言之,电子设备可以同时对一个组播标识对应的多个组播条目进行删除。
S613、将最后一个Cur_cnt对应的组播条目中的Copy_info覆盖掉待删除组播条目中的Copy_info。
S614、更新组播起始表中该MCID对应的NUM,NUM=NUM-1。
其中,S614中MCID为上述组播条目删除指令中的MCID。
S615、根据组播条目增加指令中MCID、该MCID对应的Scramb_factor和Cur_cnt,计算得到Copy_addr。
其中,上述S615中Cur_cnt的取值为组播起始表中,组播条目增加指令中MCID对应的组播条目数量。
S616、在计算得到的Copy_addr处,写入组播条目增加指令中的Copy_info。
S617、更新组播起始表中组播条目增加指令中MCID对应的NUM,NUM=NUM+1。
S619、结束。
采用上述方法,可以对组播复制表中的组播条目进行更新,并对组播起始表进行相应地更新,当电子设备进行组播复制时,可以计算得到更新后的组播条目的存储地址,并按照计算得到的存储地址中的组播条目对组播报文进行复制,保证了后续组播复制的正确性。并且在组播条目中增加了删除标记和复制标记,通过对比当前复制序列号和待删除组播条目对应的复制序列号,确定复制标记的取值,如果正在复制的组播报文对应的组播标识和待删除的组播条目对应的组播标识相同,当电子设备读取组播条目时,可以按照复制标记的取值决定是否按照该组播条目中的组播复制信息对组播报文进行复制,避免了组播条目更新过程中,可能存在的组播报文的多复制或者漏复制的问题,可以灵活的对组播起始表和组播复制表进行更新。
基于相同的构思,本申请实施例提供一种组播复制装置,如图7所示,该装置包括:
获取模块701,用于获取组播报文所属组播组的第一组播标识;
查找模块702,用于从组播起始表中查找第一组播标识对应的第一加扰因子和第一组播条目数量;
复制模块703,用于基于第一组播标识、第一加扰因子和第一组播条目数量分别计算第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制;
其中,组播复制表中包括至少一个组播标识对应的组播条目。
可选的,复制模块703,具体用于:
将预设初始复制序列号作为当前复制序列号;
对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址;
从组播复制表中读取目标存储地址对应的目标组播条目;
基于目标组播条目包括的组播复制信息进行组播复制,并将当前复制序列号加1,返回对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤,直至当前复制序列号与预设初始复制序列号之间的差值达到第一组播条目数量。
可选的,该装置还包括接收模块、加和模块、计算模块和生成模块;
接收模块,用于接收组播条目增加指令,组播条目增加指令包括第二组播标识和新增组播复制信息;
查找模块702,还用于从组播起始表中查找第二组播标识对应的第二加扰因子和第二组播条目数量;
加和模块,用于将第二组播条目数量与预设初始复制序列号的和值,作为新增组播复制信息对应的新增组播复制序列号;
计算模块,用于基于第二组播标识、第二加扰因子和新增组播复制序列号计算新增组播复制信息对应的新增存储地址;
生成模块,用于在组播复制表中新增存储地址处,生成存储有新增组播复制信息的组播条目;
加和模块,还用于将组播起始表中第二组播标识对应的组播条目数量加1。
可选的,该装置还包括接收模块、计算模块、读取模块、更新模块和减少模块;
接收模块,还用于接收组播条目删除指令,组播条目删除指令包括第三组播标识和待删除的第一组播条目对应的第一复制序列号;
查找模块702,还用于从组播起始表中查找第三组播标识对应的第三加扰因子和第三组播条目数量;
计算模块,还用于基于第三组播标识、第三加扰因子和第一复制序列号计算第一组播条目对应的第一存储地址;
计算模块,还用于基于第三组播标识、第三加扰因子和第二复制序列号,计算第二组播条目的第二存储地址,第二复制序列号为第三组播标识对应的最后一个复制序列号;
读取模块,用于从组播复制表读取第二存储地址对应的第二组播条目;
更新模块,用于从组播复制表中删除第一存储地址对应的第一组播条目,并在第一存储地址处存入第二组播条目。
减少模块,用于将组播起始表中第三组播标识对应的组播条目数量减1。
可选的,该装置还包括判断模块、置位模块和加和模块;
判断模块,用于判断当前复制序列号是否大于第一复制序列号;
若判断模块的判断结果为是,则触发置位模块将第二存储地址对应的复制标记和删除标记均置为第一值;
若判断模块的判断结果为否,则触发置位模块将第二存储地址对应的复制标记置为第二值,将第二存储地址对应的删除标记置为第一值;
判断模块,还用于判断目标存储地址对应的删除标记是否为第一值;
若判断模块的判断结果为是,则判断目标存储地址对应的复制标记是否为第一值;
若判断模块判断目标存储地址对应的复制标记为第一值,则触发读取模块执行从组播复制表中读取目标存储地址对应的目标组播条目的步骤;
若判断模块判断目标存储地址对应的复制标记为第二值,则触发加和模块将当前复制序列号加1;若复制模块703确定当前复制序列号与预设初始复制序列号之间的差值未达到第一组播条目数量,则返回复制模块703执行对第一组播标识、第一加扰因子和当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤;若复制模块703确定当前复制序列号与预设初始复制序列号之间的差值达到第一组播条目数量,则停止组播复制,并触发减少模块执行将组播起始表中第三组播标识对应的组播条目数量减1的步骤。
本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现上述实施例中提供的组播复制方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一组播复制方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一组播复制方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种组播复制方法,其特征在于,包括:
获取组播报文所属组播组的第一组播标识;
从组播起始表中查找所述第一组播标识对应的第一加扰因子和第一组播条目数量;
基于所述第一组播标识、所述第一加扰因子和所述第一组播条目数量分别计算所述第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制;其中,所述组播复制表中包括至少一个组播标识对应的组播条目;
所述基于所述第一组播标识、所述第一加扰因子和所述第一组播条目数量分别计算所述第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制,包括:
将预设初始复制序列号作为当前复制序列号;
对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址;
从所述组播复制表中读取所述目标存储地址对应的目标组播条目;
基于所述目标组播条目包括的组播复制信息进行组播复制,并将当前复制序列号加1,返回所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤,直至当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收组播条目增加指令,所述组播条目增加指令包括第二组播标识和新增组播复制信息;
从所述组播起始表中查找所述第二组播标识对应的第二加扰因子和第二组播条目数量;
将所述第二组播条目数量与预设初始复制序列号的和值,作为所述新增组播复制信息对应的新增组播复制序列号;
基于所述第二组播标识、所述第二加扰因子和所述新增组播复制序列号计算所述新增组播复制信息对应的新增存储地址;
在所述组播复制表中所述新增存储地址处,生成存储有所述新增组播复制信息的组播条目;
将所述组播起始表中所述第二组播标识对应的组播条目数量加1。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收组播条目删除指令,所述组播条目删除指令包括第三组播标识和待删除的第一组播条目对应的第一复制序列号;
从所述组播起始表中查找所述第三组播标识对应的第三加扰因子和第三组播条目数量;
基于所述第三组播标识、所述第三加扰因子和所述第一复制序列号计算第一组播条目对应的第一存储地址;
基于所述第三组播标识、所述第三加扰因子和第二复制序列号,计算第二组播条目的第二存储地址,所述第二复制序列号为所述第三组播标识对应的最后一个复制序列号;
从所述组播复制表读取所述第二存储地址对应的所述第二组播条目;
从所述组播复制表中删除所述第一存储地址对应的所述第一组播条目,并在所述第一存储地址处存入所述第二组播条目;
将所述组播起始表中所述第三组播标识对应的组播条目数量减1。
4.根据权利要求3所述的方法,其特征在于,所述第三组播标识和所述第一组播标识相同;在所述第一存储地址处存入所述第二组播条目之后,所述方法还包括:
判断所述当前复制序列号是否大于所述第一复制序列号;
若是,则将所述第二存储地址对应的复制标记和删除标记均置为第一值;
若否,则将所述第二存储地址对应的复制标记置为第二值,将所述第二存储地址对应的删除标记置为第一值;
在所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址之后,所述方法还包括:
判断所述目标存储地址对应的删除标记是否为第一值;
若是,则判断所述目标存储地址对应的复制标记是否为第一值;
若所述目标存储地址对应的复制标记为第一值,则执行所述从所述组播复制表中读取所述目标存储地址对应的目标组播条目的步骤;
若所述目标存储地址对应的复制标记为第二值,则将当前复制序列号加1;若当前复制序列号与所述预设初始复制序列号之间的差值未达到所述第一组播条目数量,则返回所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤;若当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量,则停止组播复制,并执行所述将所述组播起始表中所述第三组播标识对应的组播条目数量减1的步骤。
5.一种组播复制装置,其特征在于,包括:
获取模块,用于获取组播报文所属组播组的第一组播标识;
查找模块,用于从组播起始表中查找所述第一组播标识对应的第一加扰因子和第一组播条目数量;
复制模块,用于基于所述第一组播标识、所述第一加扰因子和所述第一组播条目数量分别计算所述第一组播标识对应的每个组播条目的存储地址,并按照存储地址从组播复制表中读取组播条目,基于读取的组播条目包括的组播复制信息进行组播复制;其中,所述组播复制表中包括至少一个组播标识对应的组播条目;
所述复制模块,具体用于:
将预设初始复制序列号作为当前复制序列号;
对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址;
从所述组播复制表中读取所述目标存储地址对应的目标组播条目;
基于所述目标组播条目包括的组播复制信息进行组播复制,并将当前复制序列号加1,返回所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤,直至当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括接收模块、加和模块、计算模块和生成模块:
所述接收模块,用于接收组播条目增加指令,所述组播条目增加指令包括第二组播标识和新增组播复制信息;
所述查找模块,还用于从所述组播起始表中查找所述第二组播标识对应的第二加扰因子和第二组播条目数量;
所述加和模块,用于将所述第二组播条目数量与预设初始复制序列号的和值,作为所述新增组播复制信息对应的新增组播复制序列号;
所述计算模块,用于基于所述第二组播标识、所述第二加扰因子和所述新增组播复制序列号计算所述新增组播复制信息对应的新增存储地址;
所述生成模块,用于在所述组播复制表中所述新增存储地址处,生成存储有所述新增组播复制信息的组播条目;
所述加和模块,还用于将所述组播起始表中所述第二组播标识对应的组播条目数量加1。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括接收模块、计算模块、读取模块、更新模块和减少模块;
所述接收模块,还用于接收组播条目删除指令,所述组播条目删除指令包括第三组播标识和待删除的第一组播条目对应的第一复制序列号;
所述查找模块,还用于从所述组播起始表中查找所述第三组播标识对应的第三加扰因子和第三组播条目数量;
所述计算模块,还用于基于所述第三组播标识、所述第三加扰因子和所述第一复制序列号计算第一组播条目对应的第一存储地址;
所述计算模块,还用于基于所述第三组播标识、所述第三加扰因子和第二复制序列号,计算第二组播条目的第二存储地址,所述第二复制序列号为所述第三组播标识对应的最后一个复制序列号;
所述读取模块,用于从所述组播复制表读取所述第二存储地址对应的所述第二组播条目;
所述更新模块,用于从所述组播复制表中删除所述第一存储地址对应的所述第一组播条目,并在所述第一存储地址处存入所述第二组播条目;
所述减少模块,用于将所述组播起始表中所述第三组播标识对应的组播条目数量减1。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括判断模块、置位模块和加和模块;
所述判断模块,用于判断所述当前复制序列号是否大于所述第一复制序列号;
若所述判断模块的判断结果为是,则触发所述置位模块将所述第二存储地址对应的复制标记和删除标记均置为第一值;
若所述判断模块的判断结果为否,则触发所述置位模块将所述第二存储地址对应的复制标记置为第二值,将所述第二存储地址对应的删除标记置为第一值;
所述判断模块,还用于判断所述目标存储地址对应的删除标记是否为第一值;
若所述判断模块的判断结果为是,则判断所述目标存储地址对应的复制标记是否为第一值;
若所述判断模块判断所述目标存储地址对应的复制标记为第一值,则触发所述读取模块执行所述从所述组播复制表中读取所述目标存储地址对应的目标组播条目的步骤;
若所述判断模块判断所述目标存储地址对应的复制标记为第二值,则触发所述加和模块将当前复制序列号加1;若所述复制模块确定当前复制序列号与所述预设初始复制序列号之间的差值未达到所述第一组播条目数量,则返回所述复制模块执行所述对所述第一组播标识、所述第一加扰因子和所述当前复制序列号进行哈希运算,得到一个组播标识的目标存储地址的步骤;若所述复制模块确定当前复制序列号与所述预设初始复制序列号之间的差值达到所述第一组播条目数量,则停止组播复制,并触发所述减少模块执行所述将所述组播起始表中所述第三组播标识对应的组播条目数量减1的步骤。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311727740.0A CN117411738B (zh) | 2023-12-15 | 2023-12-15 | 组播复制方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311727740.0A CN117411738B (zh) | 2023-12-15 | 2023-12-15 | 组播复制方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117411738A CN117411738A (zh) | 2024-01-16 |
CN117411738B true CN117411738B (zh) | 2024-03-08 |
Family
ID=89487491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311727740.0A Active CN117411738B (zh) | 2023-12-15 | 2023-12-15 | 组播复制方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117411738B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1953414A (zh) * | 2005-10-21 | 2007-04-25 | 中兴通讯股份有限公司 | 一种用于宽带接入设备的组播快速加入方法 |
CN101267331A (zh) * | 2008-04-23 | 2008-09-17 | 华为技术有限公司 | 一种组播转发表查找方法和装置 |
CN101702672A (zh) * | 2009-11-04 | 2010-05-05 | 华为技术有限公司 | 组播数据报文转发方法和转发装置 |
CN102164084A (zh) * | 2011-04-21 | 2011-08-24 | 杭州华三通信技术有限公司 | 一种组播报文转发方法及其设备 |
WO2018177184A1 (zh) * | 2017-03-31 | 2018-10-04 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置、设备、存储介质 |
CN109639579A (zh) * | 2018-12-04 | 2019-04-16 | 盛科网络(苏州)有限公司 | 组播报文的处理方法及装置、存储介质、处理器 |
CN111786890A (zh) * | 2020-06-29 | 2020-10-16 | 新华三信息安全技术有限公司 | 一种组播报文发送方法、相关装置和网络设备 |
CN112187644A (zh) * | 2020-10-28 | 2021-01-05 | 中国科学院声学研究所 | 一种基于标识解析路由的组播***及组播方法 |
CN112202674A (zh) * | 2020-09-27 | 2021-01-08 | 北京物芯科技有限责任公司 | 一种组播报文的转发处理方法、装置、设备及存储介质 |
WO2021073377A1 (zh) * | 2019-10-18 | 2021-04-22 | 华为技术有限公司 | 一种组播流检测方法、设备及*** |
CN115277542A (zh) * | 2022-06-27 | 2022-11-01 | 新华三技术有限公司 | 一种组播流负载分担的方法和网络设备 |
CN115460178A (zh) * | 2022-08-31 | 2022-12-09 | 新华三半导体技术有限公司 | 一种组播复制方法、装置及芯片功能模块 |
CN115955435A (zh) * | 2022-12-16 | 2023-04-11 | 苏州盛科通信股份有限公司 | 一种组播表处理方法、装置及电子设备 |
CN116132384A (zh) * | 2022-12-28 | 2023-05-16 | 南京盛科通信有限公司 | 跨芯片流程处理单元的组播复制方法和装置 |
WO2023115978A1 (zh) * | 2021-12-23 | 2023-06-29 | 北京百度网讯科技有限公司 | 一种报文处理方法、装置及电子设备 |
CN116633900A (zh) * | 2023-06-01 | 2023-08-22 | 北京火山引擎科技有限公司 | 逻辑地址分配方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369907B (zh) * | 2007-08-15 | 2011-09-28 | 华为技术有限公司 | 组播业务的实现方法及其装置和*** |
US9385875B2 (en) * | 2013-01-23 | 2016-07-05 | Nexenta Systems, Inc. | Scalable transport with cluster-consensus rendezvous |
CN105099721B (zh) * | 2014-04-28 | 2018-12-07 | 华为技术有限公司 | 维护组播成员的方法及设备 |
-
2023
- 2023-12-15 CN CN202311727740.0A patent/CN117411738B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1953414A (zh) * | 2005-10-21 | 2007-04-25 | 中兴通讯股份有限公司 | 一种用于宽带接入设备的组播快速加入方法 |
CN101267331A (zh) * | 2008-04-23 | 2008-09-17 | 华为技术有限公司 | 一种组播转发表查找方法和装置 |
CN101702672A (zh) * | 2009-11-04 | 2010-05-05 | 华为技术有限公司 | 组播数据报文转发方法和转发装置 |
CN102164084A (zh) * | 2011-04-21 | 2011-08-24 | 杭州华三通信技术有限公司 | 一种组播报文转发方法及其设备 |
WO2018177184A1 (zh) * | 2017-03-31 | 2018-10-04 | 深圳市中兴微电子技术有限公司 | 一种实现查表处理的方法及装置、设备、存储介质 |
CN109639579A (zh) * | 2018-12-04 | 2019-04-16 | 盛科网络(苏州)有限公司 | 组播报文的处理方法及装置、存储介质、处理器 |
WO2021073377A1 (zh) * | 2019-10-18 | 2021-04-22 | 华为技术有限公司 | 一种组播流检测方法、设备及*** |
CN111786890A (zh) * | 2020-06-29 | 2020-10-16 | 新华三信息安全技术有限公司 | 一种组播报文发送方法、相关装置和网络设备 |
CN112202674A (zh) * | 2020-09-27 | 2021-01-08 | 北京物芯科技有限责任公司 | 一种组播报文的转发处理方法、装置、设备及存储介质 |
CN112187644A (zh) * | 2020-10-28 | 2021-01-05 | 中国科学院声学研究所 | 一种基于标识解析路由的组播***及组播方法 |
WO2023115978A1 (zh) * | 2021-12-23 | 2023-06-29 | 北京百度网讯科技有限公司 | 一种报文处理方法、装置及电子设备 |
CN115277542A (zh) * | 2022-06-27 | 2022-11-01 | 新华三技术有限公司 | 一种组播流负载分担的方法和网络设备 |
CN115460178A (zh) * | 2022-08-31 | 2022-12-09 | 新华三半导体技术有限公司 | 一种组播复制方法、装置及芯片功能模块 |
CN115955435A (zh) * | 2022-12-16 | 2023-04-11 | 苏州盛科通信股份有限公司 | 一种组播表处理方法、装置及电子设备 |
CN116132384A (zh) * | 2022-12-28 | 2023-05-16 | 南京盛科通信有限公司 | 跨芯片流程处理单元的组播复制方法和装置 |
CN116633900A (zh) * | 2023-06-01 | 2023-08-22 | 北京火山引擎科技有限公司 | 逻辑地址分配方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
一种基于分段式存储的组播路由查找方案;张军;程东年;黄慧群;张鹏;;计算机工程与应用;20080701(第19期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117411738A (zh) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0525174A1 (en) | TRACKING SERIAL NUMBERS IN A PACKET DATA TRANSMISSION SYSTEM. | |
US10628382B2 (en) | Teleporting content over network using hash matches | |
WO2013010414A1 (zh) | 构建索引的方法、检索方法、装置及*** | |
WO2021051782A1 (zh) | 区块链的共识方法、装置及设备 | |
US20210157513A1 (en) | Data reading method, apparatus, and system, and distributed system | |
US12026071B2 (en) | Method, electronic device and computer program product for storage management | |
CN111143113B (zh) | 复制元数据的方法、电子设备和计算机程序产品 | |
CN104636437A (zh) | 一种事件通知方法、***的处理方法及装置 | |
CN111159160B (zh) | 一种版本回滚方法、装置、电子设备及存储介质 | |
CN111522811B (zh) | 数据库的处理方法及装置、存储介质、终端 | |
CN114817232A (zh) | 访问数据的方法及装置 | |
CN117112508B (zh) | 基于序号的文件同步方法、装置、计算机设备及存储介质 | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN117411738B (zh) | 组播复制方法、装置、电子设备和存储介质 | |
CN113632427A (zh) | 一种报文匹配方法、装置、网络设备及介质 | |
CN112241336A (zh) | 用于备份数据的方法、设备和计算机程序产品 | |
CN112000482B (zh) | 一种内存管理的方法、装置、电子设备及存储介质 | |
CN110990611B (zh) | 图片缓存方法、装置、电子设备及存储介质 | |
CN111182014A (zh) | 一种数据同步方法和装置 | |
CN110968267A (zh) | 数据管理方法、装置、服务器及*** | |
CN112685219A (zh) | 用于备份数据的方法、设备和计算机程序产品 | |
CN117472918B (zh) | 数据处理方法、***、电子设备及存储介质 | |
CN112527896B (zh) | 区块链账本数据的处理方法、装置、存储介质及电子设备 | |
US12028240B2 (en) | Method, electronic device, and computer program product for cross-regional data searching | |
CN113364875B (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 |