用于VRF资源分配的接口配置更新方法、装置与电子设备转让专利

申请号 : CN202110477642.0

文献号 : CN113206760B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 霍云峰

申请人 : 杭州迪普科技股份有限公司

摘要 :

本公开提供一种用于VRF资源分配的接口配置更新方法、装置与电子设备。接口配置更新方法包括:响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址;根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令;在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值;读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。本公开实施例可以避免接口变更VRF过程中的接口配置失败。

权利要求 :

1.一种用于VRF资源分配的接口配置更新方法,其特征在于,包括:响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址;

根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令;

在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值;

读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。

2.如权利要求1所述的接口配置更新方法,其特征在于,所述状态标识符包括所述目标接口变更VRF的起始时间。

3.如权利要求1所述的接口配置更新方法,其特征在于,所述预设数据表为结构体链表,所述根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表包括:根据所述接口名称、所述VRF识别符、所述状态标识符注册接口结构体信息;

将所述接口结构体信息写入所述结构体链表。

4.如权利要求1~3任一项所述的接口配置更新方法,其特征在于,读取所述预设数据表之后,还包括:在所述目标接口的所述状态标识符不为所述预设值时,在预设时长后将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令。

5.如权利要求2所述的接口配置更新方法,其特征在于,读取所述预设数据表之后,还包括:在所述目标接口的所述状态标识符不为所述预设值时,判断当前时间与所述状态标识符对应的时间之差是否超过预设时长;

如果超过所述预设时长,将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令;

如果没有超过所述预设时长,重新读取所述预设数据表。

6.如权利要求1所述的接口配置更新方法,其特征在于,所述在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值包括:响应所述用户态程序的配置更新完成消息,将所述状态标识符设置为所述预设值。

7.如权利要求1所述的接口配置更新方法,其特征在于,所述在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值包括:响应所述用户态程序的状态标识符更新指令,将所述状态标识符设置为所述预设值。

8.一种用于VRF资源分配的接口配置更新装置,其特征在于,包括:接口配置生成模块,设置为响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址;

标识信息注册模块,设置为根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令;

标识信息更新模块,设置为在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值;

IP地址设置模块,设置为读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。

9.一种电子设备,其特征在于,包括:

存储器;以及

耦合到所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1‑7任一项所述的接口配置更新方法。

10.一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如权利要求1‑7任一项所述的接口配置更新方法。

说明书 :

用于VRF资源分配的接口配置更新方法、装置与电子设备

技术领域

[0001] 本公开涉及信息技术领域,具体而言,涉及一种用于VRF资源分配的接口配置更新方法、装置与电子设备。

背景技术

[0002] 随着网络技术的日益发展,网络设备支持的功能越来越多。网络设备虚拟化的应用实现了一机多用的目的,灵活分配资源提高资源利用率,并且各虚拟设备之间相互独立物理隔离、安全隔离,拥有独立的硬件资源和管理权限,可视为物理设备,灵活组网,可以为不同的网络系统分配独享的网络资源,同时减少用户投资。VRF(Virtual  Routing Forwarding,虚拟路由以及转发)技术是一种将一台物理设备虚拟成多台逻辑设备的新型虚拟化技术。划分逻辑设备时,每台逻辑设备只拥有独立的路由表和一组接口的集合。VRF主要是转发层面的隔离,系统资源是共享和抢占式的。
[0003] 用户设置VRF时需要给VRF划分系统资源(如分配接口),为了提高了工作效率,相关技术使用自动化脚本工具批量下发接口配置信息和接口IP地址。在此过程中,常会出现以下故障:网络设备运行正常,但是由于电路维护或者其他的原因导致网络设备重启后,通讯功能不正常,给用户的工作带来很大的不便和困扰,甚至带来经济损失。
[0004] 需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

[0005] 本公开的目的在于提供一种用于VRF资源分配的接口配置更新方法、装置与电子设备,用于至少在一定程度上克服使用VRF技术的网络设备常出现的重启后出现通讯故障的问题。
[0006] 根据本公开实施例的第一方面,提供一种接口配置更新方法,包括:响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址;根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令;在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值;读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。
[0007] 在本公开的一种示例性实施例中,所述状态标识符包括所述目标接口变更VRF的起始时间。
[0008] 在本公开的一种示例性实施例中,读取所述预设数据表之后,还包括:
[0009] 在所述目标接口的所述状态标识符不为所述预设值时,在预设时长后将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令。
[0010] 在本公开的一种示例性实施例中,所述预设数据表为结构体链表,所述根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表包括:
[0011] 根据所述接口名称、所述VRF识别符、所述状态标识符注册接口结构体信息;
[0012] 将所述接口结构体信息写入所述结构体链表。
[0013] 在本公开的一种示例性实施例中,读取所述预设数据表之后,还包括:
[0014] 在所述目标接口的所述状态标识符不为所述预设值时,判断当前时间与所述状态标识符对应的时间之差是否超过预设时长;
[0015] 如果超过所述预设时长,将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令;
[0016] 如果没有超过所述预设时长,重新读取所述预设数据表。
[0017] 在本公开的一种示例性实施例中,所述在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值包括:
[0018] 响应所述用户态程序的配置更新完成消息,将所述状态标识符设置为所述预设值。
[0019] 在本公开的一种示例性实施例中,所述所述在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值包括:
[0020] 响应所述用户态程序的状态标识符更新指令,将所述状态标识符设置为所述预设值。
[0021] 根据本公开实施例的第二方面,提供一种接口配置更新装置,包括:
[0022] 接口配置生成模块,设置为响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址;
[0023] 标识信息注册模块,设置为根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令;
[0024] 标识信息更新模块,设置为在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值;
[0025] IP地址设置模块,设置为读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。
[0026] 根据本公开的第三方面,提供一种电子设备,包括:存储器;以及耦合到所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任意一项所述的方法。
[0027] 根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项所述的接口配置更新方法。
[0028] 本公开实施例通过在预设数据表中写入更新后的目标接口的状态标识符,并仅在状态标识符为预设值时对用户态程序下发目标接口的IP地址,可以避免IP地址在配置信息修改完成之前下发到用户态程序,进而避免目标接口的IP地址被后来的配置信息更新动作清除,能够成功解决使用VRF技术的网络设备常出现的重启后出现通讯故障的问题。
[0029] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

[0030] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031] 图1是本公开示例性实施例中接口配置更新方法的流程图。
[0032] 图2是本公开一个实施例中步骤S2的子流程图。
[0033] 图3是本公开一个实施例中步骤S4的子流程图。
[0034] 图4是本公开一个实施例中接口配置更新过程的整体流程图。
[0035] 图5是本公开示例性实施例中一种接口配置更新装置的方框图。
[0036] 图6是本公开示例性实施例中一种电子设备的方框图。

具体实施方式

[0037] 现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
[0038] 此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0039] 下面结合附图对本公开示例实施方式进行详细说明。
[0040] 图1是本公开示例性实施例中接口配置更新方法的流程图。
[0041] 参考图1,接口配置更新方法100可以包括:
[0042] 步骤S1,响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址;
[0043] 步骤S2,根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令;
[0044] 步骤S3,在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值;
[0045] 步骤S4,读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。
[0046] 本公开实施例通过在预设数据表中写入更新后的目标接口的状态标识符,并仅在状态标识符为预设值时对用户态程序下发目标接口的IP地址,可以避免IP地址在配置信息修改完成之前下发到用户态程序,进而避免目标接口的IP地址被后来的配置信息更新动作清除,能够成功解决使用VRF技术的网络设备常出现的重启后出现通讯故障的问题。
[0047] 本公开发明人发现,使用VRF技术的网络设备常出现重启后通讯故障,经过数据分析与实验,发现该问题是由于重启后内核重新分配VRF资源时,新接口的IP地址未能成功下发到用户态程序导致的。在此基础上,发明人通过实验得出以下原因:
[0048] 系统为VRF划分资源时,首先在内核注销该VRF的原有接口并删除原有接口的配置信息(包括IP地址),然后注册新接口并在对新接口初始化后通过netlink通信机制给用户态程序发送接口变更事件,以删除用户态程序记录的之前的接口配置信息并下发新的接口配置信息。与此同时,在内核创建新接口的IP地址并将该IP地址下发给用户态程序的数据库进程以保存。由于这两种动作是并发执行的,当设备重启时,数据库原有的接口配置信息已经丢失,在设备重启恢复接口配置信息时,新接口的配置信息无法正常下发,但是新接口的IP地址能够正常下发并被用户态程序记录到数据库中。因此,后续当新接口的配置信息成功下发时,用户态程序根据配置信息更新指令删除数据库中的原有配置信息,也同时删除了刚刚记录的新接口的IP地址,从而引起了重启后设备出现通讯故障的问题。
[0049] 在此基础上,发明人设置了接口配置更新方法100来解决以上问题。接口配置更新方法100可以由系统中的内核态程序来执行。
[0050] 下面,对接口配置更新方法100的各步骤进行详细说明。
[0051] 在步骤S1,响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址。
[0052] VRF也可以被称为VPN路由转发实例(VPN Routing&Forwarding Instance)。每一个VRF可以被视为虚拟的路由器,该虚拟路由器包括如下元素:一张独立的路由表,当然也包括了独立的地址空间;一组归属于这个VRF的接口的集合;一组只用于本VRF的路由协议。在一台物理设备上,可以设置多个VRF,即将一台物理设备虚拟成多台逻辑设备。
[0053] 因此,在为VRF划分资源时,需要为该VRF划分对应的接口,并生成该接口相关的配置信息和IP地址,下发给用户态程序,以供该用户态程序通过该接口使用对应的VRF实现网络通讯。
[0054] 在本公开实施例中,接口更新指令例如为VRF新建指令、VRF更新指令或者其他用于指示为一个VRF划分接口的指令。内核态的系统进程可以响应该接口更新指令确定一个目标接口,并更新该接口对应的VRF(即将该目标接口划分给该VRF),同时,生成该目标接口的配置信息和IP地址。
[0055] 在一个实施例中,目标接口的IP地址的生成以及后续的下发可以通过脚本程序来实现,该脚本程序与生成接口配置信息的内核态程序并行运行。生成目标接口的IP地址的过程可以为:在判断目标接口的地址合法后,通过netlink消息在内核中创建该目标接口的IP地址。netlink是一种异步通信机制,即将内核与用户态程序之间传递的消息保存在socket缓存队列中,发送消息时只是把消息保存在接收者的socket接收队列中,而不需要等待接收者收到消息。
[0056] 在步骤S2,根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令。
[0057] 在本公开实施例中,当为一个VRF分配该目标接口后,即可以记录该目标接口的接口名称、该VRF的识别符以及状态标识符到预设数据表。
[0058] 图2是本公开一个实施例中步骤S2的子流程图。
[0059] 参考图2,在一个实施例中,预设数据表为结构体链表,步骤S2包括:
[0060] 步骤S21,根据接口名称、VRF识别符、状态标识符注册接口结构体信息;
[0061] 步骤S22,将接口结构体信息写入结构体链表。
[0062] 图2所示过程也可以通过如下实施例实现:
[0063] 在内核内存中注册结构体链表,链表中的结构体包含以下成员:接口名称(ifname)、VRF识别符(vrf_id)、该接口的状态标识符。
[0064] 绑定该目标接口与对应的VRF,命令行通过系统调用在内核中处理接口变更VRF的流程,内核处理完成之后,在内核通过netlink机制向用户态程序发送接口变更事件(配置更新指令)时,对已经申请好内存的目标接口的结构体信息进行设置,设置此时内核划分VRF接口资源的接口名称ifname、该接口所属的VRF的识别符以及该接口的状态标识符,并将此结构体信息作为节点信息挂在预设结构体链表上。
[0065] 在一个实施例中,状态标识符例如为目标接口变更VRF的起始时间(running_time)。该起始时间可以通过时间戳表示,该时间戳可以通过该起始时间与预设时间点的差值来确定。
[0066] 在结构体链表中保存接口信息的同时,可以通过netlink机制向用户态程序发送接口变更事件(配置更新指令),以使用户态程序删除原有接口配置信息,更新目标接口的接口配置信息。
[0067] 用户态程序有一个监听进程,用于监听内核通过netlink向用户态程序发送的接口变更VRF的信息,该进程在接收到接口变更VRF的信息之后,清除目标接口变更VRF之前的配置信息,设置目标接口当前所属VRF的配置信息。
[0068] 在步骤S3,在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值。
[0069] 步骤S3既可以由内核态程序主导,也可以由用户态程序主导。
[0070] 在本公开的一个实施例中,当步骤S3由内核态程序主导时,可以为响应所述用户态程序的配置更新完成消息,将所述状态标识符设置为所述预设值。即,可以设置用户态程序在根据配置更新指令完成配置信息删除和配置信息更新后,发送一个配置更新完成消息。该配置更新完成消息例如可以包括目标接口的接口名称。
[0071] 内核态程序在接收到该配置更新完成消息后,自动根据该接口名称,在预设数据表(例如结构体链表)中将该目标接口的状态标识符设置为预设值。
[0072] 在本公开的另一个实施例中,当步骤S3由用户态程序主导时,可以为响应所述用户态程序的状态标识符更新指令,将所述状态标识符设置为所述预设值。即,可以设置用户态程序在根据配置更新指令完成配置信息删除和配置信息更新后,遍历内核中的接口信息结构体链表(即预设数据表),更新该目标接口对应的状态标识符为预设值,以表示该目标接口变更绑定VRF的整个流程的结束。
[0073] 在一个实施例中,上述预设值例如可以为零。即,可以在用户态程序完成所述目标接口的配置更新后,在预设数据表中将该目标接口的状态标识符清零。
[0074] 在步骤S4,读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。
[0075] 步骤S4同样可以由生成目标接口的IP地址的脚本程序来完成。在生成目标接口的IP地址后,即可以监控该预设数据表中该目标接口的状态标识符的值。如果发现该目标接口的状态标识符的值为预设值(例如为零),则说明该目标接口的配置信息已经成功下发,此时可以对用户态程序发送IP地址设置指令,使用户态程序将该目标接口的新IP地址记录在数据库中,而无需担心该IP地址在配置更新过程中被删除。
[0076] 在本公开的一个实施例中,如果该目标接口的状态标识符不为该预设值,可以循环读取预设数据表,直至发现该目标接口的状态标识符的值为该预设值。
[0077] 但是,在实际工况中可能存在一种情况,即用户态程序的监听进程由于一些意外原因被关掉,此时用户态程序无法监听内核发送的接口变更VRF的消息,目标接口的配置信息无法成功下发,则目标接口的状态标识符的值不会被更新。
[0078] 此时,为了防止程序出现死循环,在本公开的另一个实施例中,如果该目标接口的状态标识符不为该预设值,可以在预设时长后将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令。
[0079] 通过在预设时长后正常设置IP地址,可以避免用户态程序发生故障导致程序出现死循环。上述预设时长也可以成为老化时间,老化时间能够保证监听进程不存在的时候,IP地址可以正常的设置。
[0080] 在本公开的另一个实施例中,还可以通过另一种方式实现以上目的。
[0081] 图3是本公开一个实施例中步骤S4的子流程图。
[0082] 参考图3,在一个实施例中,步骤S4可以包括:
[0083] 步骤S41,读取所述预设数据表;
[0084] 步骤S42,判断所述目标接口的所述状态标识符是否为所述预设值;
[0085] 步骤S43,在所述目标接口的所述状态标识符为所述预设值时,对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址;
[0086] 步骤S44,在所述目标接口的所述状态标识符不为所述预设值时,判断当前时间与所述状态标识符对应的时间之差是否超过预设时长,如果超过所述预设时长,进入步骤S45,如果没有超过所述预设时长,返回步骤S41重新读取所述预设数据表。
[0087] 步骤S45,将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令。
[0088] 通过循环读取预设数据表并进行判断,可以及时发现状态标识符的变更情况,及时下发IP地址设置指令,并且能够在用户态程序出现故障时,及时终止程序的死循环,提高可靠性。
[0089] 图4是本公开一个实施例中接口配置更新过程的整体流程图。
[0090] 参考图4,在步骤S401,命令行并发执行流程开始后,首先在内核注册结构体链表。可以响应VRF资源分配请求使命令行并发执行流程开始。
[0091] 在步骤S402,内核处理完接口变更VRF流程后,确定目标接口的变更VRF时间戳。
[0092] 在步骤S403,判断目标接口是否在结构体链表中存在对应节点。如果否,进入步骤S404,如果是,进入步骤S405。
[0093] 在步骤S404,申请内存保存目标接口的结构体信息,并将该结构体信息作为节点挂在结构体链表上。
[0094] 在步骤S405,更新结构体链表中该目标接口的变更VRF时间戳,并对用户态发送配置更新指令。
[0095] 在步骤S406,在用户态处理完接口配置流程之后,将目标接口的变更VRF时间戳清零。
[0096] 在步骤S407,生成目标接口的IP地址。步骤S407可以与步骤S401并行执行。
[0097] 在步骤S408,判断目标接口的变更VRF时间戳是否为零,如果是,进入步骤S412,否则进入步骤S409。
[0098] 在步骤S409,每隔一段时间检查目标接口变更VRF时间戳的值,确定当前时间和目标接口变更VRF时间戳的差值。
[0099] 在步骤S410,判断该差值是否超过预设老化时间,如果是,进入步骤S411,否则返回步骤S409。
[0100] 在步骤S411,将目标接口的变更VRF时间戳清零。
[0101] 在步骤S412,正常执行设置接口IP地址流程后结束。
[0102] 综上所述,本公开实施例可以通过以下顺序执行:
[0103] 首先在内核内存注册接口结构体信息,以保存接口的接口名称,接口所属的VRF识别符,内核向用户态发送接口变更VRF通知的起始时间。内核处理完接口变更流程时,更新接口变更VRF时间戳,如果该接口不存在,需要重新申请一个接口信息,保存接口名称,接口所属的VRF识别符、变更VRF时间戳。用户态监听进程监听到内核发送到用户态的接口变更消息并处理完所有配置流程之后,将该接口的变更VRF时间戳的时间清零,并将变更VRF时间戳的数据更新到内核;设置接口IP地址,遍历内核结构体链表确认该接口的变更VRF时间戳是否是0,如果是0,则正常执行IP地址设置流程,否则命令行进行等待;每隔一段时间检查该接口变更VRF时间戳的值,并将当前时间和该变更VRF时间戳进行比较,如果两者时间间隔大于预设老化时间,将变更VRF时间戳设置成0,正常执行设置IP地址的命令;如果两者时间间隔小于预设老化时间,但是变更VRF时间戳不为0,则重新读取该接口的变更VRF时间戳。
[0104] 本公开实施例通过在在执行设置目标接口的IP地址命令时,检查目标接口的状态识别符来确认接口绑定VRF的流程是否完成,并只有在接口完成绑定VRF完成后,才继续执行设置IP地址命令,可以避免相关技术中出现的重启设备后重新分配VRF资源时目标接口的IP地址丢失导致的通讯故障问题。通过在预设老化时间过后自动进行IP地址设置,可以防止监听进程由于意外情况挂死而出现程序死循环的现象。
[0105] 对应于上述方法实施例,本公开还提供一种接口配置更新装置,可以用于执行上述方法实施例。
[0106] 图5是本公开示例性实施例中一种接口配置更新装置的方框图。
[0107] 参考图5,接口配置更新装置500可以包括:
[0108] 接口配置生成模块51,设置为响应接口更新指令更新目标接口对应的VRF,生成所述目标接口的配置信息以及IP地址;
[0109] 标识信息注册模块52,设置为根据所述配置信息将所述目标接口的接口名称、VRF识别符、状态标识符写入预设数据表,并向用户态程序发送包括所述配置信息的配置更新指令;
[0110] 标识信息更新模块53,设置为在所述用户态程序完成所述目标接口的配置更新后,将所述预设数据表中所述目标接口的所述状态标识符设置为预设值;
[0111] IP地址设置模块54,设置为读取所述预设数据表,在所述目标接口的所述状态标识符为所述预设值时对所述用户态程序发送IP地址设置指令,所述IP地址设置指令包括所述目标接口的IP地址。
[0112] 在本公开的一种示例性实施例中,所述状态标识符包括所述目标接口变更VRF的起始时间。
[0113] 在本公开的一种示例性实施例中,所述预设数据表为结构体链表,标识信息注册模块52设置为:
[0114] 根据所述接口名称、所述VRF识别符、所述状态标识符注册接口结构体信息;
[0115] 将所述接口结构体信息写入所述结构体链表。
[0116] 在本公开的一种示例性实施例中,IP地址设置模块54设置为:
[0117] 在所述目标接口的所述状态标识符不为所述预设值时,在预设时长后将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令。
[0118] 在本公开的一种示例性实施例中,IP地址设置模块54设置为:
[0119] 在所述目标接口的所述状态标识符不为所述预设值时,判断当前时间与所述状态标识符对应的时间之差是否超过预设时长;
[0120] 如果超过所述预设时长,将所述状态标识符设置为所述预设值,并对所述用户态程序发送所述IP地址设置指令;
[0121] 如果没有超过所述预设时长,重新读取所述预设数据表。
[0122] 在本公开的一种示例性实施例中,标识信息更新模块53设置为:响应所述用户态程序的配置更新完成消息,将所述状态标识符设置为所述预设值。
[0123] 在本公开的一种示例性实施例中,标识信息更新模块53设置为:响应所述用户态程序的状态标识符更新指令,将所述状态标识符设置为所述预设值。
[0124] 由于装置500的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。
[0125] 应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0126] 在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0127] 所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0128] 下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0129] 如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630。
[0130] 其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如本公开实施例所示的方法。
[0131] 存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
[0132] 存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0133] 总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0134] 电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0135] 通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
[0136] 在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
[0137] 根据本发明的实施方式的用于实现上述方法的程序产品可以采用便携式紧凑盘只读存储器(CD‑ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0138] 所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0139] 计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0140] 可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0141] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0142] 此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
[0143] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。