CN114553771B - 用于虚拟路由器加载的方法及相关设备 - Google Patents
用于虚拟路由器加载的方法及相关设备 Download PDFInfo
- Publication number
- CN114553771B CN114553771B CN202111597767.3A CN202111597767A CN114553771B CN 114553771 B CN114553771 B CN 114553771B CN 202111597767 A CN202111597767 A CN 202111597767A CN 114553771 B CN114553771 B CN 114553771B
- Authority
- CN
- China
- Prior art keywords
- virtual router
- target virtual
- target
- loading
- data
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种用于虚拟路由器加载的方法及相关设备,涉及云计算和通信技术领域。该方法应用于三层虚拟路由器代理组件L3agent,包括:接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求;将虚拟路由器数据获取请求发送至Neutron server,以使Neutron server获取目标虚拟路由器的虚拟路由器数据;接收Neutron server返回的虚拟路由器数据;根据虚拟路由器数据确定目标虚拟路由器的加载方式,进而根据加载方式对目标虚拟路由器进行处理。该方法可以识别出目标虚拟路由器是否为无实际作用的虚拟路由器,并在确定其为无实际作用的虚拟路由器时对其延迟加载,从而达到减少资源浪费的效果。
Description
技术领域
本公开涉及云计算和通信技术领域,尤其涉及一种用于虚拟路由器加载的方法及相关设备。
背景技术
OpenStack Neutron是一套用于实现云计算虚拟网络的软件平台,在应用中Neutron将物理节点分为控制节点、计算节点和网络节点,其中,网络节点用于实现高可用虚拟路由的跨子网通信、网络地址转换(Network Address Translation,NAT)、端口转发等功能。而当用户仅使用到公网IP访问外网,未使用SNAT、端口转发等功能时,网络节点的虚拟路由器将产生资源浪费。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种用于虚拟路由器加载的方法、装置、电子设备及存储介质,以解决资源浪费的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种用于虚拟路由器加载的方法,由三层虚拟路由器代理组件L3 agent执行,该方法包括:接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求;将虚拟路由器数据获取请求发送至Neutron server,以使Neutron server获取目标虚拟路由器的虚拟路由器数据;接收Neutron server返回的虚拟路由器数据;根据虚拟路由器数据确定目标虚拟路由器的加载方式,进而根据加载方式对目标虚拟路由器进行处理。
在本公开一个实施例中,根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求的步骤,包括:根据虚拟路由器更新通知确定待获取数据的目标虚拟路由器的虚拟路由器标识;基于虚拟路由器标识生成虚拟路由器数据获取请求。
在本公开一个实施例中,根据虚拟路由器数据确定目标虚拟路由器的加载方式的步骤,包括:解析虚拟路由器数据,获得目标虚拟路由器的虚拟路由器配置信息,以及获得目标虚拟路由器对应的集中式资源数量;其中,集中式资源数量包括裸金属服务器端口数量、集中式公网IPv6数量和集中式公网IPv4数量;根据虚拟路由器配置信息和集中式资源数量确定目标虚拟路由器的加载方式。
在本公开一个实施例中,根据虚拟路由器配置信息和集中式资源数量确定目标虚拟路由器的加载方式的步骤,包括:判断虚拟路由器配置信息和集中式资源数量是否满足延迟加载条件;若满足,对目标虚拟路由器进行延迟加载处理;若不满足,对目标虚拟路由器按照预设方式进行加载;其中,延迟加载条件包括:L3 agent的模式为网络节点模式、目标虚拟路由器未启用SNAT功能、目标虚拟路由器为DVR分布式模式、目标虚拟路由器未配置端口转发功能、目标虚拟路由器未连接裸金属服务器端口,并且目标虚拟路由器无集中式公网IPv4和IPv6地址。
在本公开一个实施例中,对目标虚拟路由器进行延迟加载处理的步骤,包括:删除目标虚拟路由器的命名空间;停止目标虚拟路由器高可用keepalived进程;删除目标虚拟路由器缓存。
在本公开一个实施例中,在对目标虚拟路由器进行延迟加载处理的步骤之后,还包括:将目标虚拟路由器的当前状态设置为备用状态;根据目标虚拟路由器的当前状态生成状态通知信息;将状态通知信息发送至Neutron Server,以使Neutron Server记录目标虚拟路由器的当前状态。
根据本公开的另一个方面,提供一种用于虚拟路由器加载的方法,由网络服务组件Neutron server执行,该方法包括:接收虚拟路由的端口操作请求;根据端口操作请求确定对虚拟路由所连接端口的更新操作;当更新操作为预设操作时,根据更新操作生成虚拟路由器更新通知,并将虚拟路由器更新通知发送至三层虚拟路由器代理组件L3 agent;其中,预设操作包括以下至少之一:创建虚拟路由器连接子网下的端口、删除虚拟路由器连接子网下的端口,和更新虚拟路由器接口;接收L3 agent基于虚拟路由器更新通知生成的虚拟路由器数据获取请求,根据虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据;将虚拟路由器数据返回至L3agent,以使L3 agent根据虚拟路由器数据对目标虚拟路由器进行处理。
在本公开一个实施例中,根据虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据的步骤,包括:根据虚拟路由器数据获取请求确定目标虚拟路由器的虚拟路由器标识,根据虚拟路由器标识从数据库中获得目标虚拟路由器的虚拟路由器配置信息;根据虚拟路由器配置信息,从数据库中获得目标虚拟路由器对应的端口所在的计算节点的类型信息,从中确定类型为DVR_no_external类型的目标计算节点标识;基于计算节点标识从数据库中获得目标虚拟路由器对应的集中式资源数量;其中,集中式资源数量包括裸金属服务器端口数量、集中式公网IPv6数量和集中式公网IPv4数量;根据虚拟路由器配置信息、集中式资源数量确定虚拟路由器数据。
根据本公开的再一个方面,提供一种三层虚拟路由器代理组件L3agent,包括:第一接收模块,用于接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求;第一接收模块还用于将虚拟路由器数据获取请求发送至Neutron server,以使Neutron server获取目标虚拟路由器的虚拟路由器数据;虚拟路由器管理模块,用于接收Neutron server返回的虚拟路由器数据;虚拟路由器管理模块还用于根据虚拟路由器数据确定目标虚拟路由器的加载方式,进而根据加载方式对目标虚拟路由器进行处理。
根据本公开的再一个方面,提供一种网络服务组件Neutron server,包括:第二接收模块,用于接收虚拟路由的端口操作请求;监听模块,用于根据端口操作请求确定对虚拟路由所连接端口的更新操作;当更新操作为预设操作时,监听模块还用于根据更新操作生成虚拟路由器更新通知,并将虚拟路由器更新通知发送至三层虚拟路由器代理组件L3agent;其中,预设操作包括以下至少之一:创建虚拟路由器连接子网下的端口、删除虚拟路由器连接子网下的端口,和更新虚拟路由器接口;第二接收模块还用于接收L3 agent基于虚拟路由器更新通知生成的虚拟路由器数据获取请求;数据获取模块,用于根据虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据;返回模块,用于将虚拟路由器数据返回至L3 agent,以使L3 agent根据虚拟路由器数据对目标虚拟路由器进行处理。
根据本公开的再一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的用于虚拟路由器加载的方法。
根据本公开的再一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的用于虚拟路由器加载的方法。
本公开的实施例所提供的用于虚拟路由器加载的方法,能够根据目标虚拟路由器的虚拟路由器数据识别出其是否满足延迟加载条件,即能够识别目标虚拟路由器是否为无实际作用的虚拟路由器,并在确定其为无实际作用的虚拟路由器时对其延迟加载,从而达到减少资源浪费的效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开一个实施例的用于虚拟路由器加载的方法的流程图;
图2示出了本公开一个实施例的用于虚拟路由器加载的方法的流程图;
图3示出了本公开一个实施例的用于虚拟路由器加载的方法的虚拟网络组件示意图;
图4示出了本公开一个实施例的用于虚拟路由器加载的方法的交互示意图;
图5示出了本公开一个实施例的用于虚拟路由器加载的方法的应用示意图;
图6示出了本公开一个实施例的一种三层虚拟路由器代理组件的框图;和,
图7示出了本公开一个实施例的一种网络服务组件的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
下面,将结合附图及实施例对本公开示例实施例中的路由策略生成方法的各个步骤进行更详细的说明。
图1示出了本公开一个实施例的用于虚拟路由器加载的方法的流程图,可以由三层虚拟路由器代理组件L3 agent执行;如图1所示,本公开实施例提供的用于虚拟路由器加载的方法可以包括以下步骤:
步骤S101,接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求;
步骤S103,将虚拟路由器数据获取请求发送至Neutron server,以使Neutronserver获取目标虚拟路由器的虚拟路由器数据;
步骤S105,接收Neutron server返回的虚拟路由器数据;
步骤S107,根据虚拟路由器数据确定目标虚拟路由器的加载方式,进而根据加载方式对目标虚拟路由器进行处理。
根据本公开提供的用于虚拟路由器加载的方法,可以自动根据需求进行虚拟路由器变更的消息通知,当根据目标虚拟路由器的虚拟路由器数据识别出其满足延迟加载条件,即当识别目标虚拟路由器为无实际作用的虚拟路由器时对其延迟加载,有效地节约了资源,降低了成本和运维难度。
下面,将结合图1及实施例对本示例性实施例中的用于虚拟路由器加载的方法的步骤S101~S107进行更详细的说明。
步骤S101,接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求。
在一些实施例中,步骤S101中根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求的步骤可以包括:三层虚拟路由器代理组件L3 agent根据虚拟路由器更新通知确定待获取数据的目标虚拟路由器的虚拟路由器标识;基于虚拟路由器标识生成虚拟路由器数据获取请求。
步骤S103,将虚拟路由器数据获取请求发送至Neutron server,以使Neutronserver获取目标虚拟路由器的虚拟路由器数据。Neutron server在根据虚拟路由器数据获取请求获取到相应数据后,可以将相应数据返回给三层虚拟路由器代理组件L3 agent,然后使L3 agent执行步骤S105,即接收Neutron server返回的虚拟路由器数据;
步骤S107,根据虚拟路由器数据确定目标虚拟路由器的加载方式,进而根据加载方式对目标虚拟路由器进行处理。
在一些实施例中,步骤S107中根据虚拟路由器数据确定目标虚拟路由器的加载方式的步骤可以包括:解析虚拟路由器数据,获得目标虚拟路由器的虚拟路由器配置信息,以及获得目标虚拟路由器对应的集中式资源数量;其中,集中式资源数量包括裸金属服务器端口数量、集中式公网IPv6数量和集中式公网IPv4数量;根据虚拟路由器配置信息和集中式资源数量确定目标虚拟路由器的加载方式。
进一步地,在一些实施例中,上述根据虚拟路由器配置信息和集中式资源数量确定目标虚拟路由器的加载方式的步骤可以包括:判断虚拟路由器配置信息和集中式资源数量是否满足延迟加载条件;若满足,对目标虚拟路由器进行延迟加载处理;若不满足,对目标虚拟路由器按照预设方式进行加载。其中,延迟加载条件可以包括:L3 agent的模式为网络节点模式、目标虚拟路由器未启用SNAT功能、目标虚拟路由器为DVR分布式模式、目标虚拟路由器未配置端口转发功能、目标虚拟路由器未连接裸金属服务器端口,并且目标虚拟路由器无集中式公网IPv4和IPv6地址。
当上述条件均满足时,可以确定目标虚拟路由器为无实际作用的虚拟路由器,以在后续步骤中进行相应处理。
进一步地,在一些实施例中,对目标虚拟路由器进行延迟加载处理的步骤,包括:删除目标虚拟路由器的命名空间;停止目标虚拟路由器高可用keepalived进程;删除目标虚拟路由器缓存。通过本步骤中执行的内容,可以减少资源浪费。
在一些实施例中,在对目标虚拟路由器进行延迟加载处理的步骤之后,还可以包括:将目标虚拟路由器的当前状态设置为备用状态;根据目标虚拟路由器的当前状态生成状态通知信息;将状态通知信息发送至Neutron Server,以使Neutron Server记录目标虚拟路由器的当前状态。
图2示出了本公开一个实施例的用于虚拟路由器加载的方法的流程图,可以由网络服务组件Neutron server执行;如图2所示,本公开实施例提供的用于虚拟路由器加载的方法可以包括以下步骤:
步骤S201,接收虚拟路由的端口操作请求;根据端口操作请求确定对虚拟路由所连接端口的更新操作。
步骤S203,当更新操作为预设操作时,根据更新操作生成虚拟路由器更新通知,并将虚拟路由器更新通知发送至三层虚拟路由器代理组件L3agent。其中,可以通过消息队列将虚拟路由器更新通知发送至L3 agent。其中,预设操作包括以下至少之一:创建虚拟路由器连接子网下的端口、删除虚拟路由器连接子网下的端口,和更新虚拟路由器接口。
步骤S205,接收L3 agent基于虚拟路由器更新通知生成的虚拟路由器数据获取请求,根据虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据。
步骤S207,将虚拟路由器数据返回至L3 agent,以使L3 agent根据虚拟路由器数据对目标虚拟路由器进行处理。
在一些实施例中,步骤S205中根据虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据的步骤可以包括:根据虚拟路由器数据获取请求确定目标虚拟路由器的虚拟路由器标识,根据虚拟路由器标识从数据库中获得目标虚拟路由器的虚拟路由器配置信息;根据虚拟路由器配置信息,从数据库中获得目标虚拟路由器对应的端口所在的计算节点的类型信息,从中确定类型为DVR_no_external类型的目标计算节点标识;基于计算节点标识从数据库中获得目标虚拟路由器对应的集中式资源数量。
其中,集中式资源数量包括裸金属服务器端口数量、集中式公网IPv6数量和集中式公网IPv4数量;根据虚拟路由器配置信息、集中式资源数量确定虚拟路由器数据。在一些实际应用中,集中式资源可以看作是需要网络节点提供流量转发的资源。
图3示出了本公开一个实施例的用于虚拟路由器加载的方法的虚拟网络组件示意图,如图3所示,虚拟网络组件示意图包括部署于控制节点中的网络服务组件Neutronserver 310,部署于网络节点中的三层虚拟路由器代理组件L3 agent 320;其中,Neutronserver 310中包括监听模块311、节点信息获取模块312和资源统计模块313,L3 agent 320中包括虚拟路由器管理模块321;本实施例中用于虚拟路由器加载的方法的具体步骤可以包括:
网络服务组件Neutron server 310接收虚拟路由的端口操作请求;
Neutron server 310中的监听模块311确定端口操作请求中对虚拟路由所连接端口的更新操作,当更新操作为预设操作时,根据更新操作生成虚拟路由器更新通知,并将虚拟路由器更新通知通过消息队列发送给三层虚拟路由器代理组件L3 agent 320;其中,预设操作包括以下至少之一:创建虚拟路由器连接子网下的网络接口(Port)、删除虚拟路由器连接子网下的Port和虚拟路由器接口发生更新;
L3 agent 320根据虚拟路由器更新通知确定待获取数据的目标虚拟路由器的虚拟路由器标识,基于虚拟路由器标识生成虚拟路由器数据的获取请求,并将获取请求发送至Neutron server 310;
Neutron server 310可以基于虚拟路由器数据获取请求中的虚拟路由器标识从数据库中获得目标虚拟路由器的虚拟路由器配置信息;
Neutron server 310中的节点信息获取模块312从数据库中获得目标虚拟路由器对应的端口所在的计算节点的类型信息,从中确定类型为DVR_no_external类型的目标计算节点标识;
Neutron server 310中的资源统计模块313可以基于计算节点标识从数据库中获得集中式资源数量;其中,集中式资源可以看做是需要网络节点提供流量转发的资源;具体地,上述从数据库中获得集中式资源数量,可以包括:资源统计模块313获取目标虚拟路由器连接的裸金属服务器端口数量;资源统计模块313获取目标虚拟路由器连接的集中式公网IPv6数量;资源统计模块313获取目标虚拟路由器连接的集中式公网IPv4数量;
Neutron server 310根据虚拟路由器配置信息、目标计算节点标识、集中式资源数量确定虚拟路由器数据,并将虚拟路由器数据返回至L3 agent320;
L3 agent 320中的虚拟路由器管理模块321根据虚拟路由器数据确定目标虚拟路由器的加载方式;
具体地,当虚拟路由器数据满足预设条件时,对目标虚拟路由器进行延迟加载处理;在一些实际应用中,进行延迟加载处理可以包括:删除目标虚拟路由器相应的命名空间、停止目标虚拟路由器高可用keepalived进程、删除目标虚拟路由器缓存;
在延迟加载处理完成后,虚拟路由器管理模块321可以将目标虚拟路由器的当前状态设置为备用状态;虚拟路由器管理模块321还可以根据目标虚拟路由器的当前状态生成状态通知信息,并将状态通知信息发送至Neutron Server 310;
最后由Neutron Server 310记录目标虚拟路由器的状态信息。
图4示出了本公开一个实施例的用于虚拟路由器加载的方法的交互示意图,如图4所示,包括:
步骤1、Neutron Server组件接收Port相关请求,监听模块判决此操作是否需要向L3 Agent发送虚拟路由器更新通知,若需要,则通过消息队列发送通知。
步骤2、L3 Agent收到更新通知,根据虚拟路由器ID向Neutron Server请求虚拟路由器详情。
步骤3、Neutron Server读取数据库获取虚拟路由器配置信息。
步骤4、节点信息获取模块读取数据库获取计算节点类型信息。
步骤5、资源统计模块计算虚拟路由器连接的裸金属服务器Port数量。
步骤6、资源统计模块计算集中式公网IPv6数量。
步骤7、资源统计模块计算集中式公网IPv4数量。
步骤8、Neutron Server将获取的虚拟路由器配置信息返回L3 Agent。
步骤9、L3 Agent中的虚拟路由器管理模块根据节点配置、Router信息及资源数量统计判断虚拟路由器是否进行延迟加载。
步骤10、虚拟路由器管理模块处理非延迟加载的虚拟路由器,删除延迟加载虚拟路由器相关命名空间、停止高可用进程、删除缓存。
步骤11、虚拟路由器管理模块将处理完成的虚拟路由器状态上报。
步骤12、Neutron Server记录虚拟路由器状态,完成虚拟路由器处理。
本公开提供的用于虚拟路由器加载的方法,可以具有以下有益效果:
(1).OpenStack Neutron网络节点可以自动延迟加载虚拟路由器,仅在需要处理网络流量时进行创建,节约网络节点资源。在公有云计算节点均配置为DVR模式的大规模环境下尤为有效。
(2).由于仅加载有效的虚拟路由器,单个网络节点可承载更多数量的虚拟路由器,从而提升了节点使用效率。
(3).由于节点效率的提升,网络节点在集群中占比减少,可将节约出的节点作为其他用途。
(4).由于节点数量的减少,可降低OpenStack数据库和消息队列组件的压力,提升集群的稳定性,降低运维压力。
图5示出了本公开一个实施例的用于虚拟路由器加载的方法的应用示意图,如图5所示,在一些实施例中,可以预先设置OpenStack云计算基础环境,设置位于控制节点的Neutron Server,设置于计算和网络节点的Neutron Agent,包括Neutron OpenvSwitchAgent、DHCP Agent、L3 Agent和Metadata Agent。
Neutron Server节点代码修改加入上述监听模块、节点信息获取模块、资源统计模块,可以将neutron.conf配置文件中router_distributed设置为true启用分布式路由,将max_l3_agents_per_router设置为2,将2个L3Agent分配给单个虚拟路由器,进而实现高可用。
Neutron L3 Agent节点修改加入上述虚拟路由器管理模块,将网络节点L3 Agent配置文件中agent_mode设置为dvr_snat模式,将计算节点L3Agent配置文件中agent_mode设置为dvr模式,即网络和计算节点均启用DVR分布式路由功能且网络节点负责SNAT等功能。
通过Neutron API创建虚拟网络,创建虚拟子网。创建distributed分布式且ha高可用模式的虚拟路由器,连接虚拟子网并且连接外部网络。在虚拟子网中创建虚拟机,将浮动IP(公网IP)绑定到虚拟机,实现虚拟机的互联网访问。
按照本实施例部署的虚拟机访问互联网网络流量可以如图5所示:OpenStack管理平台通过Neutron Server向Neutron Agent提供配置信息,Neutron L3 Agent在配置为DVR模式的计算节点创建分布式虚拟路由器,包括qrouter和fip命名空间等其他实现分布式虚拟路由器的配置,绑定公网IP的虚拟机流量从虚拟网卡到达OVS(OpenvSwitch)虚拟交换机br-int网桥,根据br-int交换机转发流表进入虚拟路由器qrouter命名空间,根据路由转发到fip命令空间,经过NAT后通过虚拟交换机br-int和br-ex网桥到达通向互联网的物理网卡。
本实例部署中网络节点的虚拟路由器在只有通过浮动IP公网访问时,均处于延迟加载状态。当虚拟路由器启用SNAT功能或配置端口转发后,将自动在网络节点配置虚拟路由器处理网络流量。因此在本实例部署情况下,当大部分虚拟机只使用浮动IP访问公网,集群可只保留比例很低的节点作为网络节点,后期根据网络节点实际负载情况进行扩容。
通过本公开提供的用于虚拟路由器加载的方法,可以通过监听模块自动判断是否需要进行虚拟路由器的更新通知。可以通过资源统计模块计算虚拟路由器关联资源数量,自动根据数量判断是否延迟加载。可以通过中虚拟路由器管理模块根据虚拟路由器数据自动实现是否延迟加载的判断,进而对虚拟路由器的命令空间、进程等进行自动配置。
需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
图6示出了本公开一个实施例的一种三层虚拟路由器代理组件600的框图;如图6所示,包括:
第一接收模块601,用于接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求;
第一接收模块601还用于将虚拟路由器数据获取请求发送至Neutron server,以使Neutron server获取目标虚拟路由器的虚拟路由器数据;
602虚拟路由器管理模块,用于接收Neutron server返回的虚拟路由器数据;
虚拟路由器管理模块602还用于根据虚拟路由器数据确定目标虚拟路由器的加载方式,进而根据加载方式对目标虚拟路由器进行处理。
图6实施例的其它内容可以参照上述其它实施例。
图7示出了本公开一个实施例的一种网络服务组件700的框图;如图7所示,包括:
第二接收模块701,用于接收虚拟路由的端口操作请求;
监听模块702,用于根据端口操作请求确定对虚拟路由所连接端口的更新操作;当更新操作为预设操作时,监听模块702还用于根据更新操作生成虚拟路由器更新通知,并将虚拟路由器更新通知发送至三层虚拟路由器代理组件L3 agent;其中,预设操作包括以下至少之一:创建虚拟路由器连接子网下的端口、删除虚拟路由器连接子网下的端口,和更新虚拟路由器接口;
第二接收模块701还用于接收L3 agent基于虚拟路由器更新通知生成的虚拟路由器数据获取请求;
数据获取模块703,用于根据虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据;进一步地,在一些实际应用中,数据获取模块703还可以包括节点信息获取模块705和资源统计模块706,节点信息获取模块705用于从数据库中获得目标虚拟路由器对应的端口所在的计算节点的类型信息,并从中确定类型为DVR_no_external类型的目标计算节点标识;资源统计模块706可以基于计算节点标识从数据库中获得集中式资源数量;
返回模块704,用于将虚拟路由器数据返回至L3 agent,以使L3 agent根据虚拟路由器数据对目标虚拟路由器进行处理。
图7实施例的其它内容可以参照上述其它实施例。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
特别地,根据本公开的实施例,以下过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。
需要说明的是,本公开所示的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的方法。
根据本发明实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (10)
1.一种用于虚拟路由器加载的方法,其特征在于,所述方法由三层虚拟路由器代理组件L3 agent执行,包括:
接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据所述虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求;
将所述虚拟路由器数据获取请求发送至所述Neutron server,以使所述Neutronserver获取所述目标虚拟路由器的虚拟路由器数据;
接收所述Neutron server返回的所述虚拟路由器数据;
根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,进而根据所述加载方式对所述目标虚拟路由器进行处理;
其中,根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,包括:解析所述虚拟路由器数据,获得所述目标虚拟路由器的虚拟路由器配置信息,以及获得所述目标虚拟路由器对应的集中式资源数量;判断所述虚拟路由器配置信息和所述集中式资源数量是否满足延迟加载条件;若满足,对所述目标虚拟路由器进行延迟加载处理;若不满足,对所述目标虚拟路由器按照预设方式进行加载。
2.根据权利要求1所述的方法,其特征在于,所述根据所述虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求的步骤,包括:
根据所述虚拟路由器更新通知确定待获取数据的所述目标虚拟路由器的虚拟路由器标识;
基于所述虚拟路由器标识生成虚拟路由器数据获取请求。
3.根据权利要求1所述的方法,其特征在于,所述集中式资源数量包括裸金属服务器端口数量、集中式公网IPv6数量和集中式公网IPv4数量。
4.根据权利要求1所述的方法,其特征在于,所述延迟加载条件包括:所述L3 agent的模式为网络节点模式、所述目标虚拟路由器未启用SNAT功能、所述目标虚拟路由器为DVR分布式模式、所述目标虚拟路由器未配置端口转发功能、所述目标虚拟路由器未连接裸金属服务器端口,并且所述目标虚拟路由器无集中式公网IPv4和IPv6地址。
5.根据权利要求4所述的方法,其特征在于,所述对所述目标虚拟路由器进行延迟加载处理的步骤,包括:
删除所述目标虚拟路由器的命名空间;停止所述目标虚拟路由器高可用keepalived进程;删除所述目标虚拟路由器缓存。
6.根据权利要求4所述的方法,其特征在于,在所述对所述目标虚拟路由器进行延迟加载处理的步骤之后,还包括:
将所述目标虚拟路由器的当前状态设置为备用状态;
根据所述目标虚拟路由器的当前状态生成状态通知信息;
将所述状态通知信息发送至所述Neutron Server,以使所述Neutron Server记录所述目标虚拟路由器的当前状态。
7.一种用于虚拟路由器加载的方法,其特征在于,所述方法由网络服务组件Neutronserver执行,包括:
接收虚拟路由的端口操作请求;
根据所述端口操作请求确定对所述虚拟路由所连接端口的更新操作;
当所述更新操作为预设操作时,根据所述更新操作生成虚拟路由器更新通知,并将所述虚拟路由器更新通知发送至三层虚拟路由器代理组件L3agent;其中,所述预设操作包括以下至少之一:创建虚拟路由器连接子网下的端口、删除虚拟路由器连接子网下的端口,和更新虚拟路由器接口;
接收所述L3 agent基于所述虚拟路由器更新通知生成的虚拟路由器数据获取请求,根据所述虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据;
将所述虚拟路由器数据返回至所述L3 agent,以使所述L3 agent根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,进而根据所述加载方式对所述目标虚拟路由器进行处理;
其中,所述L3 agent根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,包括:解析所述虚拟路由器数据,获得所述目标虚拟路由器的虚拟路由器配置信息,以及获得所述目标虚拟路由器对应的集中式资源数量;判断所述虚拟路由器配置信息和所述集中式资源数量是否满足延迟加载条件;若满足,对所述目标虚拟路由器进行延迟加载处理;若不满足,对所述目标虚拟路由器按照预设方式进行加载。
8.根据权利要求7所述的方法,其特征在于,所述根据所述虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据的步骤,包括:
根据所述虚拟路由器数据获取请求确定所述目标虚拟路由器的虚拟路由器标识,根据所述虚拟路由器标识从数据库中获得所述目标虚拟路由器的虚拟路由器配置信息;
根据所述虚拟路由器配置信息,从所述数据库中获得所述目标虚拟路由器对应的端口所在的计算节点的类型信息,从中确定类型为DVR_no_external类型的目标计算节点标识;
基于所述计算节点标识从所述数据库中获得所述目标虚拟路由器对应的集中式资源数量;其中,所述集中式资源数量包括裸金属服务器端口数量、集中式公网IPv6数量和集中式公网IPv4数量;
根据所述虚拟路由器配置信息、集中式资源数量确定所述虚拟路由器数据。
9.一种三层虚拟路由器代理组件L3 agent,其特征在于,包括:
第一接收模块,用于接收网络服务组件Neutron server发送的虚拟路由器更新通知,根据所述虚拟路由器更新通知生成目标虚拟路由器的虚拟路由器数据获取请求;
所述第一接收模块还用于将所述虚拟路由器数据获取请求发送至所述Neutronserver,以使所述Neutron server获取所述目标虚拟路由器的虚拟路由器数据;
虚拟路由器管理模块,用于接收所述Neutron server返回的所述虚拟路由器数据;
所述虚拟路由器管理模块还用于根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,进而根据所述加载方式对所述目标虚拟路由器进行处理;
其中,所述虚拟路由器管理模块用于根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,包括:解析所述虚拟路由器数据,获得所述目标虚拟路由器的虚拟路由器配置信息,以及获得所述目标虚拟路由器对应的集中式资源数量;判断所述虚拟路由器配置信息和所述集中式资源数量是否满足延迟加载条件;若满足,对所述目标虚拟路由器进行延迟加载处理;若不满足,对所述目标虚拟路由器按照预设方式进行加载。
10.一种网络服务组件Neutron server,其功能在于,包括:
第二接收模块,用于接收虚拟路由的端口操作请求;
监听模块,用于根据所述端口操作请求确定对所述虚拟路由所连接端口的更新操作;
当所述更新操作为预设操作时,所述监听模块还用于根据所述更新操作生成虚拟路由器更新通知,并将所述虚拟路由器更新通知发送至三层虚拟路由器代理组件L3 agent;其中,所述预设操作包括以下至少之一:创建虚拟路由器连接子网下的端口、删除虚拟路由器连接子网下的端口,和更新虚拟路由器接口;
所述第二接收模块还用于接收所述L3 agent基于所述虚拟路由器更新通知生成的虚拟路由器数据获取请求;
数据获取模块,用于根据所述虚拟路由器数据获取请求获取目标虚拟路由器的虚拟路由器数据;
返回模块,用于将所述虚拟路由器数据返回至所述L3 agent,以使所述L3 agent根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,进而根据所述加载方式对所述目标虚拟路由器进行处理;
其中,所述L3 agent根据所述虚拟路由器数据确定所述目标虚拟路由器的加载方式,包括:解析所述虚拟路由器数据,获得所述目标虚拟路由器的虚拟路由器配置信息,以及获得所述目标虚拟路由器对应的集中式资源数量;判断所述虚拟路由器配置信息和所述集中式资源数量是否满足延迟加载条件;若满足,对所述目标虚拟路由器进行延迟加载处理;若不满足,对所述目标虚拟路由器按照预设方式进行加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111597767.3A CN114553771B (zh) | 2021-12-24 | 2021-12-24 | 用于虚拟路由器加载的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111597767.3A CN114553771B (zh) | 2021-12-24 | 2021-12-24 | 用于虚拟路由器加载的方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114553771A CN114553771A (zh) | 2022-05-27 |
CN114553771B true CN114553771B (zh) | 2023-10-13 |
Family
ID=81670155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111597767.3A Active CN114553771B (zh) | 2021-12-24 | 2021-12-24 | 用于虚拟路由器加载的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114553771B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116155635A (zh) * | 2022-12-30 | 2023-05-23 | 天翼云科技有限公司 | 公有云的组播系统、方法、装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102123105A (zh) * | 2011-04-20 | 2011-07-13 | 杭州华三通信技术有限公司 | Vrrp标准协议与vrrp负载均衡协议之间的切换方法和设备 |
CN102843286A (zh) * | 2011-06-24 | 2012-12-26 | 中兴通讯股份有限公司 | 虚拟路由器的实现方法、装置及系统 |
CN107770062A (zh) * | 2016-08-16 | 2018-03-06 | 北京金山云网络技术有限公司 | 一种数据包发送方法、装置及网络架构 |
KR20180104377A (ko) * | 2017-03-13 | 2018-09-21 | 한국전자통신연구원 | 패킷 광 전송 네트워크를 통한 클라우드 간 가상 네트워킹 제공 방법 |
CN110635999A (zh) * | 2018-06-22 | 2019-12-31 | 复旦大学 | 一种基于路由器虚拟化技术的云计算平台网络控制方法 |
CN110659109A (zh) * | 2019-09-26 | 2020-01-07 | 上海仪电(集团)有限公司中央研究院 | 一种openstack集群虚拟机监控系统及方法 |
CN110838992A (zh) * | 2018-08-15 | 2020-02-25 | 丛林网络公司 | 在不同网络堆栈中的内核模块间传送分组的系统和方法 |
CN110838975A (zh) * | 2018-08-15 | 2020-02-25 | 丛林网络公司 | 虚拟网络中租户工作负载的安全转发 |
CN111277432A (zh) * | 2020-01-10 | 2020-06-12 | 腾讯科技(深圳)有限公司 | 配置信息更新方法、装置、电子设备及存储介质 |
CN112187517A (zh) * | 2020-09-07 | 2021-01-05 | 烽火通信科技股份有限公司 | 一种数据中心sdn虚拟路由的配置方法、平台及控制器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10855531B2 (en) * | 2018-08-30 | 2020-12-01 | Juniper Networks, Inc. | Multiple networks for virtual execution elements |
US10841226B2 (en) * | 2019-03-29 | 2020-11-17 | Juniper Networks, Inc. | Configuring service load balancers with specified backend virtual networks |
-
2021
- 2021-12-24 CN CN202111597767.3A patent/CN114553771B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102123105A (zh) * | 2011-04-20 | 2011-07-13 | 杭州华三通信技术有限公司 | Vrrp标准协议与vrrp负载均衡协议之间的切换方法和设备 |
CN102843286A (zh) * | 2011-06-24 | 2012-12-26 | 中兴通讯股份有限公司 | 虚拟路由器的实现方法、装置及系统 |
CN107770062A (zh) * | 2016-08-16 | 2018-03-06 | 北京金山云网络技术有限公司 | 一种数据包发送方法、装置及网络架构 |
KR20180104377A (ko) * | 2017-03-13 | 2018-09-21 | 한국전자통신연구원 | 패킷 광 전송 네트워크를 통한 클라우드 간 가상 네트워킹 제공 방법 |
CN110635999A (zh) * | 2018-06-22 | 2019-12-31 | 复旦大学 | 一种基于路由器虚拟化技术的云计算平台网络控制方法 |
CN110838992A (zh) * | 2018-08-15 | 2020-02-25 | 丛林网络公司 | 在不同网络堆栈中的内核模块间传送分组的系统和方法 |
CN110838975A (zh) * | 2018-08-15 | 2020-02-25 | 丛林网络公司 | 虚拟网络中租户工作负载的安全转发 |
CN110659109A (zh) * | 2019-09-26 | 2020-01-07 | 上海仪电(集团)有限公司中央研究院 | 一种openstack集群虚拟机监控系统及方法 |
CN111277432A (zh) * | 2020-01-10 | 2020-06-12 | 腾讯科技(深圳)有限公司 | 配置信息更新方法、装置、电子设备及存储介质 |
CN112187517A (zh) * | 2020-09-07 | 2021-01-05 | 烽火通信科技股份有限公司 | 一种数据中心sdn虚拟路由的配置方法、平台及控制器 |
Non-Patent Citations (3)
Title |
---|
《Private Virtual Cloud Infrastructure Modelling using "VCPHCF-RTT" Security Agent》;Ritu Maheshwari 等;《IEEE》;全文 * |
《SDN在OpenStack架构中的分析》;吴楠;《电信技术》;全文 * |
《虚拟路由器运行及管理平台的实现技术研究》;朱翔;《中国优秀硕士学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114553771A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111385369B (zh) | 一种域名服务器的分配方法和装置 | |
US11258667B2 (en) | Network management method and related device | |
CN107547689B (zh) | 一种运营商级的网络地址转换cgn方法和装置 | |
CN108737271B (zh) | 一种报文路由方法、装置及系统 | |
CN111212134A (zh) | 一种请求报文处理方法、装置、边缘计算系统和电子设备 | |
CN113810230B (zh) | 对容器集群中的容器进行网络配置的方法、装置及系统 | |
CN111327668B (zh) | 网络管理方法、装置、设备和存储介质 | |
CN113268308B (zh) | 信息处理方法、装置以及存储介质 | |
CN114095430B (zh) | 一种访问报文的处理方法、系统及工作节点 | |
CN112887229B (zh) | 一种会话信息同步方法及装置 | |
CN115225634B (zh) | 虚拟网络下的数据转发方法、装置及计算机程序产品 | |
CN110024358B (zh) | 对由分布式数据存储系统提供的服务的访问 | |
US9344363B2 (en) | Information processing system, relay device, information processing device, and information processing method | |
CN114553771B (zh) | 用于虚拟路由器加载的方法及相关设备 | |
CN107547690B (zh) | Nat中的端口分配方法、装置、nat设备及存储介质 | |
US20240106795A1 (en) | Ipv6 address configuration method and routing device | |
CN113315853B (zh) | 一种云防护节点调度方法、系统及存储介质 | |
CN114697191A (zh) | 一种资源迁移方法、装置、设备及存储介质 | |
CN112702441B (zh) | 基于容器的访问数据处理方法、装置、系统及存储介质 | |
CN112752352B (zh) | 一种中间会话管理功能i-smf确定方法和设备 | |
CN112511440B (zh) | 报文转发方法、系统、存储介质和电子设备 | |
CN114448941A (zh) | 一种网络设备管理方法、装置、电子设备及存储介质 | |
CN115826845A (zh) | 存储资源的分配方法和装置、存储介质、电子装置 | |
CN112929429B (zh) | 请求处理方法、装置和设备 | |
CN110766522B (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 |