本申请涉及通信,更为具体来说,本申请涉及一种报文转发方法、装置及电子设备。
背景技术:
1、vpp(vector packet processing,矢量数据包处理)是对报文进行批量处理的技术。vpp支持多线程,多个线程通常分布在cpu(central processing unit,中央处理器)的多个内核上。其中,一个线程负责对各级转发表项、节点编排等进行管理维护,将该线程称为第一线程。其他各线程均用于处理报文,其他各线程均称为第二线程。
2、在报文转发过程中,第二线程需要查询转发表项、邻接表、链路层信息等,以便将报文转发给下一跳节点。而实际应用中转发表项、邻接表、链路层信息这些信息可能需要更新,相关技术中由第一线程进行更新,在更新过程中各第二线程将暂停对报文的处理,直至更新完成各第二线程才继续对报文进行处理。
3、但上述相关技术中更新过程中第二线程无法处理报文,会降低报文处理效率,甚至导致报文处理断流、丢包等问题。
技术实现思路
1、基于上述技术缺陷,本申请提出了一种报文转发方法、装置及电子设备,通过执行原子操作来更新第一参数,无需加锁,需要使用第一参数的第二线程只需等待原子操作所花费的时间即可继续转发报文,不会产生断流或丢包等问题。
2、本申请第一方面提供了一种报文转发方法,应用于第一线程,所述方法包括:
3、从与报文转发相关的共享资源存储对象中,获取第一参数的数据长度;
4、若所述第一参数的数据长度小于等于原子操作对应的目标数据长度,则对所述第一参数执行原子操作,得到第二参数,以使第二线程探测到所述原子操作更新完成后基于所述第二参数转发报文。
5、本申请第二方面提供了一种报文转发装置,包括:
6、获取模块,用于从与报文转发相关的共享资源存储对象中,获取第一参数的数据长度;
7、更新模块,用于若所述第一参数的数据长度小于等于原子操作对应的目标数据长度,则对所述第一参数执行原子操作,得到第二参数,以使第二线程探测到所述原子操作更新完成后基于所述第二参数转发报文。
8、本申请第三方面提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现如第一方面所述的方法。
9、本申请第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面所述方法的步骤。
10、本申请的有益效果至少包括:
11、在本申请实施例中,对于数据长度小于等于原子操作对应的目标数据长度的第一参数,在第一参数更新时采用原子操作进行更新,提高了第一线程更新数据的效率。且第二线程只需等待一个原子操作的时间即可成功读取更新得到的第二参数,等待时间很短,不会影响第二线程对报文的处理,减少了因数据更新导致第二线程报文处理断流或丢包的问题发生。
1.一种报文转发方法,其特征在于,应用于第一线程,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述从与报文转发相关的共享资源存储对象中获取第一参数的数据长度之前,还包括:接收所述第一参数的目标值;
3.根据权利要求2所述的方法,其特征在于,所述确定出包含所述第一参数的待更新字段区间,包括:
4.根据权利要求2所述的方法,其特征在于,所述确定出包含所述第一参数的待更新字段区间,包括:
5.根据权利要求4所述的方法,其特征在于,所述查询与所述第一参数所在字段相邻的候选字段,包括:
6.根据权利要求2所述的方法,其特征在于,所述确定出包含所述第一参数的待更新字段区间,包括:
7.根据权利要求2-6任一项所述的方法,其特征在于,基于所述目标值,对所述待更新字段区间中的数据执行原子操作,包括:
8.根据权利要求1-6任一项所述的方法,其特征在于,所述共享资源存储对象包括转发表、邻接表中的一种或多种,所述第一参数包括源mac、目的mac中的一种或多种。
9.一种报文转发装置,其特征在于,包括:
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现如权利要求1-8任一项所述的方法。