CN118018341A - 一种公有云中虚拟实例实现云内云间组播功能的方法 - Google Patents

一种公有云中虚拟实例实现云内云间组播功能的方法 Download PDF

Info

Publication number
CN118018341A
CN118018341A CN202311712690.9A CN202311712690A CN118018341A CN 118018341 A CN118018341 A CN 118018341A CN 202311712690 A CN202311712690 A CN 202311712690A CN 118018341 A CN118018341 A CN 118018341A
Authority
CN
China
Prior art keywords
multicast
cloud
domain
group
virtual instance
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.)
Pending
Application number
CN202311712690.9A
Other languages
English (en)
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.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology 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 Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202311712690.9A priority Critical patent/CN118018341A/zh
Publication of CN118018341A publication Critical patent/CN118018341A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种公有云中虚拟实例实现云内云间组播功能的方法,本发明主要解决公有云用户在VPC内或VPC间的虚拟实例支持组播,同时也解决用户线下IDC与云上虚拟实例之间进行组播通信的问题。支持在组播成员添加到组播组时,同时支持云上虚拟实例静态添加/离开组播组和通过IGMP协议动态添加/离开到组播组的功能,从而达到云上客户在有组播需求的业务中使用组播技术服务,为客户提供时延低,访问快,不丢包的组播服务的效果,并适用于多种领域以及直播业务服务,在数据中心计算节点上联交换机路由器无需改变的情况下,支持在虚拟网络中实现组播。

Description

一种公有云中虚拟实例实现云内云间组播功能的方法
技术领域
本发明涉及IT与软件开发技术领域,特别是一种公有云中虚拟实例实现云内云间组播功能的方法。
背景技术
随着网络的发展,客户的很多业务在网络上互相交互的数据类型越来越多,很多客户都有组播支持的需求,如网络会议,IPTV业务,金融交易业务,证券行情业务等,同时,随着云计算的发展,很多客户之前在传统网络通过路由器支持组播技术的业务,越来越多的迁移到公有云云平台上。这对于公有云而言,支持组播技术需求来承载那些上云业务越来越迫切。
公有云上实现组播技术现有方案主要通过物理路由设备支持组播协议功能来满足客户组播的需求,如组播成员需要加入组播组,其上联支持组播技术的路由器通过IGMP/MLD协议了解虚拟实例的加组/离组、或者接收指定组播源的组播需要,路由器一跳一跳地向源方向发送组播协议报文。传播链路中的PIM路由器通过组播报文建立组播源到组播成员的SPT,组播源发出的组播报文就能通过SPT路径转发到相关的组播成员了;
上述方案中主要是通过物理网络设备来实现组播功能,但其在虚拟网络和物理网络交互互通时,或者在公有云中的纯虚拟网络中支持组播功能比较受限。
或通过在云上VPC中部署支持组播路由的第三方应用来实现虚拟路由支持组播协议,实现组播转发功能。通过隧道打通方式将线下数据中心与云上VPC打通,接入部署第三方支持组播路由的应用,实现云下与云上组播通信的交互;
上述方案虽然实现了虚拟网络中组播通信以及虚拟网络与线下IDC的组播通信,但其在虚拟路由中引入支持组播路由的第三方应用,因此需要支持组播功能的VPC中,每个VPC的虚拟路由中都依赖第三方应用,并且虚拟路由要求开启组播并支持PIM协议,如果线下IDC与云上虚拟实例进行组播通信,虚拟路由需要与数据中心支持组播的路由器通过隧道建立邻居,并验证PIM邻居是否正常建立。在虚拟路由器所在的服务器上配置复杂,容易出错,并且对技术人员要求高。
基于此,本发明提出一种公有云中虚拟实例实现云内云间组播功能的方法来解决上述问题。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本发明的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述和/或现有的云内云间组播设计中存在的问题,提出了本发明。
因此,本发明其中的一个目的是提供一种公有云中虚拟实例实现云内云间组播功能的方法,其通过支持组播成员静态指定加入/离开组播组和组播成员动态加入/离开组播组两种方式满足客户的不同需求,公有云上虚拟实例支持组播功能不需要该虚拟实例所在宿主机计算节点上联物理交换机或路由设备支持组播协议,部署在计算节点上的云平台控制器组件通过截取客户虚拟实例发出的IGMP协议报文并解析,发送给云平台Server服务组件,将该虚拟实例作为组播成员加入/离开到相应的组播组,并携带相应的组播源地址信息,通过该方式实现组播成员动态加组和离组;而组播成员静态加组或离组则通过用户调用云平台提供的API接口实现,对于线下IDC与云上虚拟实例实现组播通信,则只需要在公有云Region的出口专线交换机上支持组播协议,将IDC中主机发出的组播流量引入到云中,然后通过专线网关转发到组播网关,再将组播报文分发到云上的虚拟实例,且Region出口的专线交换机配置信息是云平台自动下发数据进行配置的,此过程无需在虚拟路由上支持组播,进行相关的复杂配置,也无需引入第三方应用来进行组播的支持。
为达到上述效果,本发明提供如下技术方案:一种公有云中虚拟实例实现云内云间组播功能的方法,方法包括以下步骤:
S1:与组播相关组件网络架构拓扑,计算节点与组播网关集群互联,组播网关负责转发组播报文,组播网关集群与VGW网关集群互联,VGW将专线等发送的组播报文根据组播路由信息转发到组播网关;
S2:设计组播域、组播组和组播成员的对象模型,其中,在用户租户中,组播资源分为:组播域,组播组和组播成员,组播域为组播数据的传播范围;
S3:组播成员加入到组播域中的组播中;
S4:在计算节点上,平台控制器组件在租户网络截获组播成员发送出的IGMP报文并解析,然后转换为组播成员加入/离开哪个组播组、订阅哪些感兴趣和不感兴趣的组播源、加入到哪个组播域的过程;
S5:计算节点上OVS上设计的流表pipeline来实现IGMP报文的截获,平台控制器解析和处理报文,转换成一些动作并上报给平台Server;
S6:通过截获IGMP协议数据报文,并解析转换上送到控制器后,控制器对报文进行处理;
S7:在云平台server端根据接收的信息将组播成员添加到组播组,或者从组播组移除该组播成员;
S8:控制器除了处理截获的IGMP报文,还会周期性的根据本地控制器Cache保存的组播成员和组播组的关系周期性的给本计算节点的相关虚拟实例发送IGMP Member Query报文;
S9:组播网关转发表的设计;
S10:将组播数据报文发送出去。
作为本发明的一种优选方案,其中:所述S1中如果组播源和组播成员都在云上,不管组播成员和组播成员在同一VPC还是不同VPC,组播源发送的组播数据报文均会被转发组播网关,然后组播网关根据云平台下发的组播组和组播成员的关系信息生成本地转发表,然后组播网关接收组播数据报文后,根据生成的本地转发表将组播数据报文转发到不同的组播成员中,通过组播网关集群的转发,将组播源发送出的组播数据报文转发到同VPC或者不同VPC的组播成员中,通过VGW网关将云外的组播流量转发到云内虚拟实例中。
作为本发明的一种优选方案,其中:所述S2中组播域分为静态组播域和动态组播域,分别表示该组播域下组播成员加入组播组的方式,所述静态组播域中,组播成员加入组播组通过云平台接口调用完成,所述动态组播域中,组播成员加入组播组时通过IGMP协议完成。
作为本发明的一种优选方案,其中:所述租户、组播域、VPC、组播组及组播成员的模型限制关系为:一个租户可以创建多个组播域,每个组播域通过设置一个或多个VPC来指定组播范围,不同组播域内组播组地址可以重复,但一个VPC只能加入到一个组播域中,在一个组播域内,其可以创建多个组地址不同的组播组,一个组播组可以加入多个组播成员,组播成员添加到组播组时,在指定组播地址的同时,可以指定组播源地址订阅感兴趣的组播源以及其不感兴趣的组播源。
5.如权利要求4所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述S3具体过程为:
S301:租户首先创建组播域,再创建组播域的时指定一个或多个VPC,定义组播的范围。VPC可以在创建组播域时指定,也可以创建完组播域后,在向组播域中添加VPC列表中增加VPC的id来增加组播的范围。同时创建组播域时还需要指定组播域下组播组成员加入组播组的加入方式,以及组播域中的组播组是云内组播还是云间组播。
S302:如果组播域指定该组播域下组播成员加入组播组的方式为静态加入方式,需在该组播域下创建组播组,指定组播IP,然后再给该组播组添加组播成员;
S303:如果组播域指定该组播域下组播成员加入组播组的方式为动态加入方式,则无需创建组播组。在组播域的vpc范围内的虚拟实例中发送出IGMPv2或IGMPv3加组/离组报文,云平台会在其所在的宿主节点的自动感知并分析IGMP协议报文,获取到组播IP信息,如果是IGMPv3,还会感知<S,G>表现信息,同时获取该虚拟实例的ip、mac、所属vpc信息以及宿主机位置信息,构建一定的数据结构上报给云平台Server服务,然后云平台Server服务自动创建组播组及该组播组下的组播成员,并按照模型关系持久化到数据库中。
S304:在组播域中指定VPC中任意一台组播源发送组播报文信息,如果在该组播域下已经静态或动态创建了与组播源发的组播报文相同的组播IP的组播组,则该组播组下的所有成员就能收到该组播源的组播报文。
作为本发明的一种优选方案,其中:所述S5中的流表程序具体为:
#dispatcher流表:
table={dispatcher},priority=1000,igmp,reg5=0x7ba2f,
dl_dst=01:00:5e:00:00:00/ff:ff:ff:80:00:00,nw_dst=224.0.0.0/4,actions=move:NX M_NX_REG5[0..23]->NXM_OF_ETH_DST[0..23],CONTROLLER:65535
#l2_lookup:
#组播数据报文出报文table={l2_lookup},priority=2000,ip,reg5=0x339b9,dl_dst=01:00:5e:00:00:00/ff:ff:ff:80:00:00actions=mod_nw_ttl:64,goto_table:{l3_input}
#本计算节点上组播成员接收的组播数据报文
#在l2_lookup(table60)和ingressct(table70)之间增加组播处理表象multicast(table=61)。mac:fa:16:3e:37:66:dd为本计算节点一个虚拟实例的mac地址
table={l2_lookup},priority=100,reg5=0xa8af8,dl_dst=fa:16:3e:37:66:ddactions=set_field:0xa8af8->tun_id,set_field:0x19f->reg7,goto_table:{multicast}
#组播成员在本计算节点,修改目的mac为组播mac。mac:fa:16:3e:73:81:62为组播成员的mac地址
table={multicast},priority=1000,ip,reg5=0x52e1e,dl_dst=fa:16:3e:73:81:62,nw_dst=239.0.0.106actions=set_field:01:00:5e:00:00:6a->eth_dst,goto_table:{ingressct}
table={multicast},priority=50actions=goto_table:{ingressct}
#route:
#组播路由表。fe:16:19:41:8e:67为mcgw的linklocal port的mac地址
table={route},
priority=10004,ip,metadata=0x339b900000009,nw_dst=224.0.0.0/4actions=set_field:fe:16:19:41:8e:67->eth_dst,set_field:0x339b9->reg5,dec_ttl,resubmit(,dispatcher);
其中,NXM_NX_REG5的备注说明:NXM_NX_REG5寄存器存储VNI的值信息,reg7备注说明:reg7寄存器存储虚拟实例网卡对于在ovs的ofport值,metadata用于区分不同的子网。
作为本发明的一种优选方案,其中:所述控制器通过解析虚拟实例的IGMPMembership Report消息来获取虚拟实例的加组/离组信息,或者发送IGMP MembershipQuery来查询虚拟实例所在组播组的信息,包括其接收指定组播源的组播报文信息,并将组播成员和组播组的关系信息保存到本地控制器的Cache中,然后将该信息转换为向云平台发送加组/离组的消息,然后将消息转换为请求上报给云平台Server的组播成员对象。
作为本发明的一种优选方案,其中:所述消息结构具体表示为:
type MulticastMemUpdatedMsg struct{
ctx context.Context
ofportuint32//虚拟实例在本宿主机的识别ID
vniuint32//虚拟实例的vni
fixIp string//虚拟实例的fixIp
mac string//虚拟实例的mac
underlayIp string//虚拟实例所在宿主机的underlayIP
actionint//动作:0:updated;1:Leave
groupAddresses map[string]*updateGroupInfo//虚拟实例携带的组播组地址信息}。
作为本发明的一种优选方案,其中所述上报给云平台Server的请求参数中的组播成员对象参数具体表示为:
type MulticastMemberParam struct{
Vniuint32`json:"port_vni"`
FixIp string`json:"fix_ip"`
Mac string`json:"mac_address"`
UnderlayIp string`json:"underlay_ip"`
Cookie uint64`json:"cookie"`
MulticastGroups[]*MulticastGroup`json:"multigroups"`
}
type MulticastGroup struct{
McGroupIp string`json:“multigroup_ip”`
IncludeSips[]string`json:"include_sips"`
ExcludeSips[]string`json:"exclude_sips"`
Action intjson:“action”//update,leave
JoinType intjson:"join_type"`
}。
作为本发明的一种优选方案,其中:所述中在组播网关设计的组播转发表记录的属性包括:Vni、GroupIp、Mask、SourceIp、RemoteVni、HostIp、VmIp、OverlayDmac、ExCount和ExcludeSip,各属性具体含义为:Vni为组播源所在VPC的Vni,GroupIp和Mask为组播报文的组播组地址,SourceIp为组播成员订阅的组播源地址,RemoteVni,HostIp,VmIp,OverlayDmac分别为加入组播组地址的组播成员所在VPC的vni,宿主机Ip,组播成员Ip,以及组播成员的mac地址,ExcludeSip为组播成员不订阅的组播源的地址列表,ExCount为组播成员不订阅组播源地址列表的个数,所述S10具体为:计算节点上控制器和VGW网关都会从云平台Server服务中获取VPC的组播路由,对组播报文进行转发,对于云下IDC与云上组播成员进行组播通信,云平台Server在收到组播成员加/离组信息后,还会自动对本Region的边界组播交换机或路由器下发相关配置信息,通过PIM-SM协议与云下IDC的组播路由器通信交互,将组播流量引入到云内。
本发明的有益效果:
1、本发明独有组播成员加入/离开组播组的机制,特别是组播组动态管理组播成员的方式,通过对计算节点上OVS流表的编排设计,截获组播成员发出的IGMP加组/离组报文,并上送到控制器处理,该过程在租户虚拟网络完成IGMP的通信,无需计算节点宿主机上联的交换机或路由器支持组播协议;
2、本发明方法计算节点控制器收到上送的IGMP报文后,解析分析IGMP报文信息,按一定流程处理后获取虚拟实例的VNI、待加入/离开的组播组信息,并依据云平台Server设计的组播模型关系将其转换为组播成员和组播组关系信息上报到Server,加入到相应组播域,并持久化,从而实现组播成员的自动加/离组。控制器周期性的向本计算节点组播成员发送IGMP Membership Query报文查询虚拟实例的所在的组播组状态,周期性的根据控制器Cache中组播成员和组播组的关系信息转换成组播对象上报给云平台Server服务,解决虚拟实例的组播协议报文信息丢失和网络异常导致上报失败的问题。该过程无需VPC的虚拟路由转发组播协议报文;
3、本发明组播网关集群上的控制器根据云平台Server服务持久化的组播域、组播组和组播成员信息向组播网关数据转发面下发组播转发表记录,数据转发面根据组播转发表进行组播报文转发,组播转发表的设计支持组播源将组播数据报文转发给同VPC、跨VPC的组播成员;
4、本发明方法组播支持云上和云下IDC Hosts通信,先通过专线将线下IDC Hosts与云上虚拟实例通道打通,然后通过组播域定义组播传播的范围,支持线下IDC主机和云上虚拟实例加入到相同组播域,在VGW下发组播路由将组播报文转发到组播网关,组播网关再转发给相应的组播成员;
5、本发明组播模型关系的定义,定义了组播域、组播组、组播成员关系,并将VPC与组播域关联加入到组播域中,实现同组播域下组播报文的转发通信。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:
图1为本发明组播拓扑架构示意图;
图2为本发明组播模型关系示意图;
图3为本发明组播流表设计Pipeline示意图;
图4为本发明IGMP报文处理流程示意图;
图5为本发明组播转发表示意图;
图6为本发明组播路由设计字段示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
实施例1
参照图1~3,为本发明第一个实施例,该实施例提供了一种公有云中虚拟实例实现云内云间组播功能的方法,包括以下步骤:
S1:与组播相关组件网络架构拓扑,计算节点与组播网关集群互联,组播网关负责转发组播报文,组播网关集群与VGW网关集群互联,VGW将专线等发送的组播报文根据组播路由信息转发到组播网关;
S2:设计组播域、组播组和组播成员的对象模型,其中,在用户租户中,组播资源分为:组播域,组播组和组播成员,组播域为组播数据的传播范围;
S3:组播成员加入到组播域中的组播中;
S301:租户首先创建组播域,再创建组播域的时指定一个或多个VPC,定义组播的范围。VPC可以在创建组播域时指定,也可以创建完组播域后,在向组播域中添加VPC列表中增加VPC的id来增加组播的范围。同时创建组播域时还需要指定组播域下组播组成员加入组播组的加入方式,以及组播域中的组播组是云内组播还是云间组播。
S302:如果组播域指定该组播域下组播成员加入组播组的方式为静态加入方式,需在该组播域下创建组播组,指定组播IP,然后再给该组播组添加组播成员;
S303:如果组播域指定该组播域下组播成员加入组播组的方式为动态加入方式,则无需创建组播组。在组播域的vpc范围内的虚拟实例中发送出IGMPv2或IGMPv3加组/离组报文,云平台会在其所在的宿主节点的自动感知并分析IGMP协议报文,获取到组播IP信息,如果是IGMPv3,还会感知<S,G>表现信息,同时获取该虚拟实例的ip、mac、所属vpc信息以及宿主机位置信息,构建一定的数据结构上报给云平台Server服务,然后云平台Server服务自动创建组播组及该组播组下的组播成员,并按照模型关系持久化到数据库中。
S304:在组播域中指定VPC中任意一台组播源发送组播报文信息,如果在该组播域下已经静态或动态创建了与组播源发的组播报文相同的组播IP的组播组,则该组播组下的所有成员就能收到该组播源的组播报文;
S4:在计算节点上,平台控制器组件在租户网络截获组播成员发送出的IGMP报文并解析,然后转换为组播成员加入/离开哪个组播组、订阅哪些感兴趣和不感兴趣的组播源、加入到哪个组播域的过程;
S5:计算节点上OVS上设计的流表pipeline来实现IGMP报文的截获,平台控制器解析和处理报文,转换成一些动作并上报给平台Server;
S6:通过截获IGMP协议数据报文,并解析转换上送到控制器后,控制器对报文进行处理;
S7:在云平台server端根据接收的信息将组播成员添加到组播组,或者从组播组移除该组播成员;
S8:控制器除了处理截获的IGMP报文,还会周期性的根据本地控制器Cache保存的组播成员和组播组的关系周期性的给本计算节点的相关虚拟实例发送IGMP Member Query报文;
S9:组播网关转发表的设计;
S10:将组播数据报文发送出去。
实施例2
参照图1~图6,为本发明第二个实施例,该实施例基于上一个实施例。
本实施例中与组播相关组件网络架构拓扑如图1所示,图中计算节点与组播网关集群互联,组播网关负责转发组播报文;组播网关集群与VGW网关集群互联,VGW可以将专线等发送的组播报文根据组播路由信息转发到组播网关;如果组播源和组播成员都在云上,不管组播成员和组播成员在同一VPC还是不同VPC,组播源发送的组播数据报文均会被转发组播网关,然后组播网关根据云平台下发的组播组和组播成员的关系信息生成本地转发表,然后将组播数据报文转发到不同的组播成员中,图1中为线下IDC中的组播源将组播报文发送到线上虚拟实例的数据路径;图1中为组播源和组播成员均在线上,但组播成员跨VPC;图1中和的区别是中组播成员和组播源均在同一VPC中。通过组播网关集群的转发,将组播源发送出的组播数据报文转发到同VPC或者不同VPC的组播成员中;通过VGW网关将云外的组播流量转发到云内虚拟实例中。
对于图1种的拓扑架构,本发明方案设计了组播域、组播组和组播成员的对象模型,如图2所示,在用户租户中,组播资源分为:组播域,组播组和组播成员,组播域为组播数据的传播范围。即组播报文传输范围,同时组播域分两种类型:静态组播域和动态组播域。分别表示该组播域下组播成员加入组播组的方式,静态组播域中,组播成员加入组播组通过云平台接口调用完成;动态组播域中,组播成员加入组播组时通过IGMP协议完成;
租户、组播域、VPC、组播组及组播成员的模型限制关系如下:
一个租户可以创建多个组播域,每个组播域通过设置一个或多个VPC来指定组播范围,不同组播域内组播组地址可以重复,但一个VPC只能加入到一个组播域中;在一个组播域内,其可以创建多个组地址不同的组播组;一个组播组可以加入多个组播成员,组播成员添加到组播组时,在指定组播地址的同时,可以指定组播源地址订阅感兴趣的组播源以及其不感兴趣的组播源,通过对模型的设计并将模型对象持久化到云平台,计算节点及网元节点根据模型数据来下发组播转发表,将组播数据报文转发到相应的组播成员中;
在图2中组播模型中,组播成员加入/离开组播组可以是静态的也可以是动态的,静态的是通过云平台接口调用完成,动态的则是通过组播成员发送IGMP协议,计算节点控制器通过截获IGMP报文并解析,然后上报到云平台Server服务并持久化的方式来完成;
组播成员加入到组播域中的组播中的过程如下:
租户首先创建组播域,再创建组播域的时指定一个或多个VPC,定义组播的范围。VPC可以在创建组播域时指定,也可以创建完组播域后,在向组播域中添加VPC列表中增加VPC的id来增加组播的范围。同时创建组播域时还需要指定组播域下组播组成员加入组播组的加入方式,以及组播域中的组播组是云内组播还是云间组播;
如果组播域指定该组播域下组播成员加入组播组的方式为静态加入方式,需在该组播域下创建组播组,指定组播IP,然后再给该组播组添加组播成员;
如果组播域指定该组播域下组播成员加入组播组的方式为动态加入方式,则无需创建组播组。在组播域的vpc范围内的虚拟实例中发送出IGMPv2或IGMPv3加组/离组报文,云平台会在其所在的宿主节点的自动感知并分析IGMP协议报文,获取到组播IP信息,如果是IGMPv3,还会感知<S,G>表现信息,同时获取该虚拟实例的ip、mac、所属vpc信息以及宿主机位置信息,构建一定的数据结构上报给云平台Server服务,然后云平台Server服务自动创建组播组及该组播组下的组播成员,按照图2的模型关系持久化到数据库中;
在组播域中指定VPC中任意一台组播源发送组播报文信息,如果在该组播域下已经静态或动态创建了与组播源发的组播报文相同的组播IP的组播组,则该组播组下的所有成员就能收到该组播源的组播报文;
本实施例中组播成员动态加入到组播组的过程中,最关键的是在计算节点上,平台控制器组件在租户网络截获组播成员发送出的IGMP报文并解析,然后转换为组播成员加入/离开哪个组播组、订阅哪些感兴趣和不感兴趣的组播源、加入到哪个组播域的过程,为实现完成该过程,该实施例进行如下操作:
设计计算节点上的OVS流表pipeline来实现IGMP报文的截获,并上报计算节点上部署的平台控制器;
平台控制器解析和处理报文,转换成一些动作并上报给平台Server;
图3为在计算节点上OVS上设计的流表pipeline。虚拟实例发出的报文到达dispatcher流表时,对于IGMP的报文根据协议匹配报文然后通过PacketIn的方式上送到控制器,在流表处理时,将VPC的VNI信息携带并上报到控制器;在l2 lookup流表根据vpc+mac匹配组播数据报文,然后跳转到l3 input流表处理,在到达route流表时,根据平台下发的组播路由表,将组播数据报文通过tunnel的方式转发到组播网关;对于组播成员在本计算节点的情况,L2 lookup匹配组播报文跳转到multicast流表,流表根据vni+组播ip+目的mac匹配,将组播报文发送到本计算节点上的组播成员。Multicast流表做了个特殊设计,因为在计算节点上,vni+目的mac就能确认报文发送到计算节点上的哪个虚拟实例,增加组播ip匹配的目的是本发明设计在组播网关发送给组播成员的overlay报文中,目的mac为组播成员的mac地址,在计算节点的multicast流表需要根据组播ip来还原目的mac为组播mac后在发送到组播成员中。流表的详细设计如下:
#dispatcher流表:
table={dispatcher},priority=1000,igmp,reg5=0x7ba2f,
dl_dst=01:00:5e:00:00:00/ff:ff:ff:80:00:00,nw_dst=224.0.0.0/4,actions=move:NX M_NX_REG5[0..23]->NXM_OF_ETH_DST[0..23],CONTROLLER:65535
#l2_lookup:
#组播数据报文出报文table={l2_lookup},priority=2000,ip,reg5=0x339b9,dl_dst=01:00:5e:00:00:00/ff:ff:ff:80:00:00actions=mod_nw_ttl:64,goto_table:{l3_input}
#本计算节点上组播成员接收的组播数据报文
#在l2_lookup(table60)和ingressct(table70)之间增加组播处理表象multicast(table=61)。mac:fa:16:3e:37:66:dd为本计算节点一个虚拟实例的mac地址
table={l2_lookup},priority=100,reg5=0xa8af8,dl_dst=fa:16:3e:37:66:dd actions=set_field:0xa8af8->tun_id,set_field:0x19f->reg7,goto_table:{multicast}
#组播成员在本计算节点,修改目的mac为组播mac。mac:fa:16:3e:73:81:62为组播成员的mac地址
table={multicast},priority=1000,ip,reg5=0x52e1e,dl_dst=fa:16:3e:73:81:62,nw_dst=239.0.0.106actions=set_field:01:00:5e:00:00:6a->eth_dst,goto_table:{ingressct}
table={multicast},priority=50actions=goto_table:{ingressct}
#route:
#组播路由表。fe:16:19:41:8e:67为mcgw的linklocal port的mac地址
table={route},
priority=10004,ip,metadata=0x339b900000009,nw_dst=224.0.0.0/4actions=set_field:fe:16:19:41:8e:67->eth_dst,set_field:0x339b9->reg5,dec_ttl,resubmit(,dispatcher)
其中,NXM_NX_REG5的备注说明:NXM_NX_REG5寄存器存储VNI的值信息,reg7备注说明:reg7寄存器存储虚拟实例网卡对于在ovs的ofport值,metadata用于区分不同的子网。
当IGMP数据包通过截获上送到控制器后,控制器需要对报文进行处理。图4是控制器处理IGMP组播报文的流程。计算节点处理截获虚拟实例的IGMP报文信息,计算节点支持处理的IGMP协议报文主要为:IGMPv2和IGMPv3报文。控制器通过解析虚拟实例的IGMPMembership Report消息来获取虚拟实例的加组/离组信息,或者发送IGMP MembershipQuery来查询虚拟实例所在组播组的信息,包括其接收指定组播源的组播报文信息,并将组播成员和组播组的关系信息保存到本地控制器的Cache中,然后将该信息转换为向云平台发送加组/离组的消息,消息结构具体表示为:
type MulticastMemUpdatedMsg struct{
ctx context.Context
ofportuint32//虚拟实例在本宿主机的识别ID
vni uint32//虚拟实例的vni
fixIp string//虚拟实例的fixIp
mac string//虚拟实例的mac
underlayIp string//虚拟实例所在宿主机的underlayIP
action int//动作:0:updated;1:Leave
groupAddresses map[string]*updateGroupInfo//虚拟实例携带的组播组地址信息};
然后将消息转换为请求上报给云平台Server的组播成员对象,上报给云平台Server的请求参数中的组播成员对象参数具体表示为:
type MulticastMemberParam struct{
Vniuint32`json:"port_vni"`
FixIp string`json:"fix_ip"`
Mac string`json:"mac_address"`
UnderlayIp string`json:"underlay_ip"`
Cookie uint64`json:"cookie"`
MulticastGroups[]*MulticastGroup`json:"multigroups"`
}
type MulticastGroup struct{
McGroupIp string`json:“multigroup_ip”`
IncludeSips[]string`json:"include_sips"`
ExcludeSips[]string`json:"exclude_sips"`
Action intjson:“action”//update,leave
JoinType intjson:"join_type"`
};
在云平台server端就可根据接收的信息将组播成员添加到组播组,或者从组播组移除该组播成员。从而实现虚拟实例动态加组/离组的功能。
图4处理流程中,控制器除了处理截获的IGMP报文,还会周期性的根据本地控制器Cache保存的组播成员和组播组的关系周期性的给本计算节点的相关虚拟实例发送IGMPMember Query报文;同时也会周期性的将本地组播成员和组播组关系转换为请求上报给云平台Server的组播成员对象发送给云平台Server,用来补偿组播成员发送IGMP时或向Server上报时,网络异常导致失败的问题。
组播网关转发表的设计。虚拟实例发出的组播数据报文通过计算节点的流表处理后,封装tunnel报文转发到组播网关,组播网关上的平台控制器会根据云平台Server的数据在本地数据面下发组播报文转发表,转发表包含了组播成员的信息,组播网关根据转发表将组播数据报文转发给组播成员。组播转发表记录的属性包括:Vni、GroupIp、Mask、SourceIp、RemoteVni、HostIp、VmIp、OverlayDmac、ExCount和ExcludeSip,各属性具体含义为:
Vni为组播源所在VPC的Vni,GroupIp和Mask为组播报文的组播组地址,SourceIp为组播成员订阅的组播源地址,RemoteVni,HostIp,VmIp,OverlayDmac分别为加入组播组地址的组播成员所在VPC的vni,宿主机Ip,组播成员Ip,以及组播成员的mac地址,ExcludeSip为组播成员不订阅的组播源的地址列表,ExCount为组播成员不订阅组播源地址列表的个数。
组播源所在的VPC还需要配置组播路由表才能将组播数据报文发送出去。计算节点上控制器和VGW网关都会从云平台Server服务中获取VPC的组播路由,对组播报文进行转发。对于云下IDC与云上组播成员进行组播通信,云平台Server在收到组播成员加/离组信息后,还会自动对本Region的边界组播交换机或路由器下发相关配置信息,通过PIM-SM协议与云下IDC的组播路由器通信交互,将组播流量引入到云内;
该实施例实现了公有云上虚拟实例支持组播功能,除了数据中心连接VGW网关的边界交换机或路由器需要支持组播外,无需数据中心其他交换机和路由器支持组播,减少了物理网络设备的变更;同时也无需用户对组播交换机或路由器进行配置,简化用户的使用。本平台还支持组播成员静态和动态加入/离开组播组两种方式,满足客户的不同使用需求,使用户只需专注在虚拟实例中部署相关组播应用。
此外,本发明中的参考协议包括IGMP协议:rfc1112、IGMPv2协议:rfc2236和IGMPv3协议:rfc337,且本发明中名词解释如下:
组播也叫多播、任播,是一种一对多的通讯方式,一种允许一个组播源发送同一报文到一组主机的技术。接收组播源发送报文的一个或多个主机成为组播接收者,也叫组播成员;
组播域即为组播报文传输的范围,公有云上可以由一个或多个VPC组成一个组播域;
组播组即为由同一个组播地址组成的组播报文传输范围,组播成员可加入/离开组播组,并可以订阅来自同一组播地址的指定源发出的组播报文;
组播成员即为加入到某个组播组的主机或虚拟实例;
组播地址即为组播地址为D类IP地址,前4个bits为:1110;cidr掩码可表示为:224.0.0.0/4;ip值范围为:224.0.0.0-239.255.255.255,组播地址一般出现在报文的目的地址中,不能为报文的源IP地址;
组播Mac地址:前三个字节为:01:00:5e,后三个字节与组播IPv4地址相关。具体关系表示为,第25bit恒为0,剩下23个bits为组播IP地址的后23bits;
组播协议包括:
二层组播协议:IGMP Snooping,组播VLAN等;
三层组播协议:IGMP(v1-v3),PIM-SM,MSDP,MBGP,BIER,MLD,MLD Snooping,BIERv6等;
IGMP协议即为互联网组管理协议,负责IPv4组播成员管理的协议。IGMP协议有三个版本:IGMPv1、IGMPv2和IGMPv3。IGMP报文封装在IP报文中,其IP报文头中的协议类型为2;
组播网关即为公有云平台中由一台或一组Host组成,负责根据转发表转发组播报文的节点;
云内组播即为组播源与组播成员均在公有云平台上,组播报文的传输范围在region内的虚拟网络中;
云间组播即为组播源与组播成员既可以在公有云平台上,也可以在用户线下IDC中,组播源位置不限于在公有云的region内;
OVS即为一种虚拟交换机的实现软件。
重要的是,应注意,在多个不同示例性实施方案中示出的本申请的构造和布置仅是例示性的。尽管在此公开内容中仅详细描述了几个实施方案,但参阅此公开内容的人员应容易理解,在实质上不偏离该申请中所描述的主题的新颖教导和优点的前提下,许多改型是可能的(例如,各种元件的尺寸、尺度、结构、形状和比例、以及参数值(例如,温度、压力等)、安装布置、材料的使用、颜色、定向的变化等)。例如,示出为整体成形的元件可以由多个部分或元件构成,元件的位置可被倒置或以其它方式改变,并且分立元件的性质或数目或位置可被更改或改变。因此,所有这样的改型旨在被包含在本发明的范围内。可以根据替代的实施方案改变或重新排序任何过程或方法步骤的次序或顺序。在权利要求中,任何“装置加功能”的条款都旨在覆盖在本文中所描述的执行所述功能的结构,且不仅是结构等同而且还是等同结构。在不背离本发明的范围的前提下,可以在示例性实施方案的设计、运行状况和布置中做出其他替换、改型、改变和省略。因此,本发明不限制于特定的实施方案,而是扩展至仍落在所附的权利要求书的范围内的多种改型。
此外,为了提供示例性实施方案的简练描述,可以不描述实际实施方案的所有特征(即,与当前考虑的执行本发明的最佳模式不相关的那些特征,或与实现本发明不相关的那些特征)。
应理解的是,在任何实际实施方式的开发过程中,如在任何工程或设计项目中,可做出大量的具体实施方式决定。这样的开发努力可能是复杂的且耗时的,但对于那些得益于此公开内容的普通技术人员来说,不需要过多实验,所述开发努力将是一个设计、制造和生产的常规工作
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (10)

1.一种公有云中虚拟实例实现云内云间组播功能的方法,其特征在于,所述方法包括以下步骤:
S1:与组播相关组件网络架构拓扑,计算节点与组播网关集群互联,组播网关负责转发组播报文,组播网关集群与VGW网关集群互联,VGW将专线等发送的组播报文根据组播路由信息转发到组播网关;
S2:设计组播域、组播组和组播成员的对象模型,其中,在用户租户中,组播资源分为:组播域,组播组和组播成员,组播域为组播数据的传播范围;
S3:组播成员加入到组播域中的组播中;
S4:在计算节点上,平台控制器组件在租户网络截获组播成员发送出IGMP报文并解析,然后转换为组播成员加入/离开哪个组播组、订阅哪些感兴趣和不感兴趣的组播源、加入到哪个组播域的过程;
S5:计算节点上OVS上设计的流表pipeline来实现IGMP报文的截获,平台控制器解析和处理报文,转换成一些动作并上报给平台Server;
S6:通过截获IGMP协议数据报文,并解析转换上送到控制器后,控制器对报文进行处理;
S7:在云平台server端根据接收的信息将组播成员添加到组播组,或者从组播组移除该组播成员;
S8:控制器除了处理截获的IGMP报文,还会周期性的根据本地控制器Cache保存的组播成员和组播组的关系周期性的给本计算节点的相关虚拟实例发送IGMP Member Query报文;
S9:组播网关转发表的设计;
S10:将组播数据报文发送出去。
2.如权利要求1所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述S1中如果组播源和组播成员都在云上,不管组播成员和组播成员在同一VPC还是不同VPC,组播源发送的组播数据报文均会被转发组播网关,然后组播网关根据云平台下发的组播组和组播成员的关系信息生成本地转发表,然后组播网关接收组播数据报文后,根据生成的本地转发表将组播数据报文转发到不同的组播成员中,通过组播网关集群的转发,将组播源发送出的组播数据报文转发到同VPC或者不同VPC的组播成员中,通过VGW网关将云外的组播流量转发到云内虚拟实例中。
3.如权利要求2所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述S2中组播域分为静态组播域和动态组播域,分别表示该组播域下组播成员加入组播组的方式,所述静态组播域中,组播成员加入组播组通过云平台接口调用完成,所述动态组播域中,组播成员加入组播组时通过IGMP协议完成。
4.如权利要求3所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述租户、组播域、VPC、组播组及组播成员的模型限制关系为:一个租户可以创建多个组播域,每个组播域通过设置一个或多个VPC来指定组播范围,不同组播域内组播组地址可以重复,但一个VPC只能加入到一个组播域中,在一个组播域内,其可以创建多个组地址不同的组播组,一个组播组可以加入多个组播成员,组播成员添加到组播组时,在指定组播地址的同时,可以指定组播源地址订阅感兴趣的组播源以及其不感兴趣的组播源。
5.如权利要求4所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述S3具体过程为:
S301:租户首先创建组播域,再创建组播域的时指定一个或多个VPC,定义组播的范围。VPC可以在创建组播域时指定,也可以创建完组播域后,在向组播域中添加VPC列表中增加VPC的id来增加组播的范围。同时创建组播域时还需要指定组播域下组播组成员加入组播组的加入方式,以及组播域中的组播组是云内组播还是云间组播。
S302:如果组播域指定该组播域下组播成员加入组播组的方式为静态加入方式,需在该组播域下创建组播组,指定组播IP,然后再给该组播组添加组播成员;
S303:如果组播域指定该组播域下组播成员加入组播组的方式为动态加入方式,则无需创建组播组。在组播域的vpc范围内的虚拟实例中发送出IGMPv2或IGMPv3加组/离组报文,云平台会在其所在的宿主节点的自动感知并分析IGMP协议报文,获取到组播IP信息,如果是IGMPv3,还会感知<S,G>表现信息,同时获取该虚拟实例的ip、mac、所属vpc信息以及宿主机位置信息,构建一定的数据结构上报给云平台Server服务,然后云平台Server服务自动创建组播组及该组播组下的组播成员,并按照模型关系持久化到数据库中。
S304:在组播域中指定VPC中任意一台组播源发送组播报文信息,如果在该组播域下已经静态或动态创建了与组播源发的组播报文相同的组播IP的组播组,则该组播组下的所有成员就能收到该组播源的组播报文。
6.如权利要求5所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述S5中的流表程序具体为:
#dispatcher流表:
table={dispatcher},priority=1000,igmp,reg5=0x7ba2f,
dl_dst=01:00:5e:00:00:00/ff:ff:ff:80:00:00,nw_dst=224.0.0.0/4,actions=move:NXM_NX_REG5[0..23]->NXM_OF_ETH_DST[0..23],CONTROLLER:65535
#l2_lookup:
#组播数据报文出报文table={l2_lookup},priority=2000,ip,reg5=0x339b9,dl_dst=01:00:5e:00:00:00/ff:ff:ff:80:00:00actions=mod_nw_ttl:64,goto_table:{l3_input}
#本计算节点上组播成员接收的组播数据报文
#在l2_lookup(table60)和ingressct(table70)之间增加组播处理表象multicast(table=61)。mac:fa:16:3e:37:66:dd为本计算节点一个虚拟实例的mac地址
table={l2_lookup},priority=100,reg5=0xa8af8,dl_dst=fa:16:3e:37:66:ddactions=set_field:0xa8af8->tun_id,set_field:0x19f->reg7,goto_table:{multicast}
#组播成员在本计算节点,修改目的mac为组播mac。mac:fa:16:3e:73:81:62为组播成员的mac地址
table={multicast},priority=1000,ip,reg5=0x52e1e,dl_dst=fa:16:3e:73:81:62,nw_dst=239.0.0.106actions=set_field:01:00:5e:00:00:6a->eth_dst,goto_table:{ingressct}
table={multicast},priority=50actions=goto_table:{ingressct}
#route:
#组播路由表。fe:16:19:41:8e:67为mcgw的linklocal port的mac地址
table={route},priority=10004,ip,metadata=0x339b900000009,nw_dst=224.0.0.0/4actions=set_field:fe:16:19:41:8e:67->eth_dst,set_field:0x339b9->reg5,dec_ttl,resubmit(,dispatcher);
其中,NXM_NX_REG5的备注说明:NXM_NX_REG5寄存器存储VNI的值信息,reg7备注说明:reg7寄存器存储虚拟实例网卡对于在ovs的ofport值,metadata用于区分不同的子网。
7.如权利要求6所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述控制器通过解析虚拟实例的IGMP Membership Report消息来获取虚拟实例的加组/离组信息,或者发送IGMP Membership Query来查询虚拟实例所在组播组的信息,包括其接收指定组播源的组播报文信息,并将组播成员和组播组的关系信息保存到本地控制器的Cache中,然后将该信息转换为向云平台发送加组/离组的消息,然后将消息转换为请求上报给云平台Server的组播成员对象。
8.如权利要求7所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述消息结构具体表示为:
type MulticastMemUpdatedMsg struct{
ctx context.Context
ofportuint32//虚拟实例在本宿主机的识别ID
vni uint32//虚拟实例的vni
fixIp string//虚拟实例的fixIp
mac string//虚拟实例的mac
underlayIp string//虚拟实例所在宿主机的underlayIP
action int//动作:0:updated;1:Leave
groupAddresses map[string]*updateGroupInfo//虚拟实例携带的组播组地址信息}。
9.如权利要求8所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述上报给云平台Server的请求参数中的组播成员对象参数具体表示为:
type MulticastMemberParam struct{
Vni uint32`json:"port_vni"`
FixIp string`json:"fix_ip"`
Mac string`json:"mac_address"`
UnderlayIp string`json:"underlay_ip"`
Cookie uint64`json:"cookie"`
MulticastGroups[]*MulticastGroup`json:"multigroups"`
}
type MulticastGroup struct{
McGroupIp string`json:“multigroup_ip”`
IncludeSips[]string`json:"include_sips"`
ExcludeSips[]string`json:"exclude_sips"`
Action intjson:“action”//update,leave
JoinTypeintjson:"join_type"`
}。
10.如权利要求9所述的公有云中虚拟实例实现云内云间组播功能的方法,其特征在于:所述中在组播网关设计的组播转发表记录的属性包括:Vni、GroupIp、Mask、SourceIp、RemoteVni、HostIp、VmIp、OverlayDmac、ExCount和ExcludeSip,各属性具体含义为:Vni为组播源所在VPC的Vni,GroupIp和Mask为组播报文的组播组地址,SourceIp为组播成员订阅的组播源地址,RemoteVni,HostIp,VmIp,OverlayDmac分别为加入组播组地址的组播成员所在VPC的vni,宿主机Ip,组播成员Ip,以及组播成员的mac地址,ExcludeSip为组播成员不订阅的组播源的地址列表,ExCount为组播成员不订阅组播源地址列表的个数,所述S10具体为:计算节点上控制器和VGW网关都会从云平台Server服务中获取VPC的组播路由,对组播报文进行转发,对于云下IDC与云上组播成员进行组播通信,云平台Server在收到组播成员加/离组信息后,还会自动对本Region的边界组播交换机或路由器下发相关配置信息,通过PIM-SM协议与云下IDC的组播路由器通信交互,将组播流量引入到云内。
CN202311712690.9A 2023-12-13 2023-12-13 一种公有云中虚拟实例实现云内云间组播功能的方法 Pending CN118018341A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311712690.9A CN118018341A (zh) 2023-12-13 2023-12-13 一种公有云中虚拟实例实现云内云间组播功能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311712690.9A CN118018341A (zh) 2023-12-13 2023-12-13 一种公有云中虚拟实例实现云内云间组播功能的方法

Publications (1)

Publication Number Publication Date
CN118018341A true CN118018341A (zh) 2024-05-10

Family

ID=90959490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311712690.9A Pending CN118018341A (zh) 2023-12-13 2023-12-13 一种公有云中虚拟实例实现云内云间组播功能的方法

Country Status (1)

Country Link
CN (1) CN118018341A (zh)

Similar Documents

Publication Publication Date Title
US8009671B2 (en) Multicast method and multicast routing method
US7080157B2 (en) Performing multicast communication in computer networks by using overlay routing
US6873627B1 (en) System and method for sending packets over a computer network
US7590749B2 (en) Method and apparatus for multicast management of user interface in a network access device
EP0980608B1 (en) Multicast switching
US8429296B2 (en) Method and apparatus for distributing routing instructions over multiple interfaces of a data router
US7941826B2 (en) Enforcing access control on multicast transmissions
EP1722520A1 (en) A method for implementing multicast based on multiple service transmission plate
US20020085506A1 (en) Subgroup multicasting in a communications network
EP1890423A2 (en) Mapping of a source specific multicast group address to a source address
US8681668B2 (en) Methods and apparatus for transmitting multicast traffic in a data network
CN102215172B (zh) 一种实现跨虚拟专用局域网组播的方法和系统
US10999090B2 (en) Multicast flow prioritization
US20150002616A1 (en) Apparatus and method for processing multicast traffic in openflow environment
US10567180B2 (en) Method for multicast packet transmission in software defined networks
CN118018341A (zh) 一种公有云中虚拟实例实现云内云间组播功能的方法
US10764337B2 (en) Communication system and communication method
US20050195805A1 (en) Traffic distribuiton method and traffic distribution system of IP key telephone
CN108696444B (zh) 基于sdn网络的一对多数据流转发方法
US20230388142A1 (en) Hybrid mode multicast routing
Mauthe et al. Group support in multimedia communications systems
US10069762B1 (en) Group based multicast in networks
Brandt et al. A flexible reflector for media streams
CN114679562A (zh) 一种多平台视频会议的数据传输系统及方法
Manolov et al. An Investigation into Multicasting

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination