本申请涉及通信,特别涉及一种数据转发方法、装置和存储介质。
背景技术:
1、vpp(vector packet processing,矢量数据包处理)是一个快速的、可扩展的2-4层多平台网络协议栈。memif是vpp常见的多实例之间高效的通信方式,memif的master和slave通过套接字传递控制消息。master和slave是一一对应的关系,两者拥有相同的id。
2、目前,在利用vpp进行数据转发时,如图2所示,先在vpp2通过dpdk(data planedevelopment kit,数据平面开发套件)从网口eth0中接收数据报文,通过一组memif的共享内存region接口转发至vpp1,在vpp1侧接收到memif的数据报文后,根据nat(networkaddress translation,网络地址转换)配置的规则修改数据报文报头,并通过另外一组memif的共享内存region转发给vpp2,vpp2再把从memif的共享内存region收到的数据报文通过另外一个网口eth1发送出去,可以看出,该方案的数据转发路径较长,并且经过多次数据拷贝,造成数据转发效率低。
技术实现思路
1、本申请实施例提供了一种数据转发方法,包括:第一容器包括第一处理单元和第二处理单元,所述第一处理单元和第二处理单元分别通过对应的第一数据端口和第二数据端口接收数据并分别存入对应的共享内存区;第二容器访问所述第一容器的共享内存区,对共享内存区的数据进行处理,并将处理后的数据存入共享内存区;其中,所述第一数据端口和第二数据端口分别对应于第一网络和第二网络,第一处理单元访问共享内存区获得的处理后的数据通过第二数据端口转发,第二处理单元访问共享内存区获得的处理后的数据通过第一数据端口转发。
2、在一些实施例中,与第一处理单元和第二处理单元相对应的共享内存区分别设有环形缓冲队列,在所述环形缓冲队列中设置第一标志位,所述第一标志位用于记载在环形缓冲队列中最新的数据处理后的数据包的第一关联信息;所述第一处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第二数据端口转发,所述第二处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第一数据端口转发。
3、在一些实施例中,所述环形缓冲队列还包括第二标志位,第二标志位用于记载所述第一容器中最新接收到的数据包的第二关联信息,第二容器访问所述第一容器的共享内存区,对共享内存区的数据进行处理具体包括:所述第一处理单元和所述第二处理单元分别将第二关联信息发送给第二容器;所述第二容器访问所述共享内存区,对第二关联信息所对应的数据包进行处理。
4、在一些实施例中,所述第二容器包括分别与所述第一处理单元和第二处理单元分别对应的第三处理单元,对第二关联信息所对应的数据包进行处理包括:所述第三处理单元根据地址转换规则,对第二关联信息所对应的数据包进行处理,得到处理后的第一数据包。
5、在一些实施例中,所述环形缓冲队列还包括第三标志位,第三标志位用于记载所述第一容器中最新转发的数据包的第三关联信息,所述第一处理单元和第二处理单元在转发数据包后,分别更新对应的环形缓冲队列的第三标志位。
6、在一些实施例中,所述数据转发方法还包括:所述第三处理单元在对数据包进行处理后,更新对应的环形缓冲队列的第一标志位。
7、在一些实施例中,所述第一关联信息表征所述共享内存区中存储处理后的数据包的地址信息。
8、本申请实施例还提出了一种数据转发装置,所述数据转发装置包括第一容器和第二容器,第一容器包括第一处理单元和第二处理单元,所述第一处理单元和第二处理单元分别通过对应的第一数据端口和第二数据端口接收数据并分别存入对应的共享内存区;第二容器访问所述第一容器的共享内存区,对共享内存区的数据进行处理,并将处理后的数据存入共享内存区;其中,所述第一数据端口和第二数据端口分别对应于第一网络和第二网络,第一处理单元访问共享内存区获得的处理后的数据通过第二数据端口转发,第二处理单元访问共享内存区获得的处理后的数据通过第一数据端口转发。
9、在一些实施例中,与第一处理单元和第二处理单元相对应的共享内存区分别设有环形缓冲队列,在所述环形缓冲队列中设置第一标志位,所述第一标志位用于记载在环形缓冲队列中最新的数据处理后的数据包的第一关联信息;所述第一处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第二数据端口转发,所述第二处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第一数据端口转发。
10、本申请实施例还提出了一种计算机可读存储介质,其上存储有指令,当由处理器执行时,所述指令执行如上所述的数据转发方法的步骤。
1.一种数据转发方法,包括:
2.根据权利要求1所述的数据转发方法,其特征在于,与第一处理单元和第二处理单元相对应的共享内存区分别设有环形缓冲队列,在所述环形缓冲队列中设置第一标志位,所述第一标志位用于记载在环形缓冲队列中最新的数据处理后的数据包的第一关联信息;所述第一处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第二数据端口转发,所述第二处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第一数据端口转发。
3.根据权利要求2所述的数据转发方法,其特征在于,所述环形缓冲队列还包括第二标志位,第二标志位用于记载所述第一容器中最新接收到的数据包的第二关联信息,第二容器访问所述第一容器的共享内存区,对共享内存区的数据进行处理具体包括:
4.根据权利要求3所述的数据转发方法,其特征在于,所述第二容器包括分别与所述第一处理单元和第二处理单元分别对应的第三处理单元,对第二关联信息所对应的数据包进行处理包括:
5.根据权利要求2所述的数据转发方法,其特征在于,所述环形缓冲队列还包括第三标志位,第三标志位用于记载所述第一容器中最新转发的数据包的第三关联信息,所述第一处理单元和第二处理单元在转发数据包后,分别更新对应的环形缓冲队列的第三标志位。
6.根据权利要求2所述的数据转发方法,其特征在于,所述数据转发方法还包括:所述第三处理单元在对数据包进行处理后,更新对应的环形缓冲队列的第一标志位。
7.根据权利要求2所述的数据转发方法,其特征在于,所述第一关联信息表征所述共享内存区中存储处理后的数据包的地址信息。
8.一种数据转发装置,其特征在于,所述数据转发装置包括第一容器和第二容器,第一容器包括第一处理单元和第二处理单元,所述第一处理单元和第二处理单元分别通过对应的第一数据端口和第二数据端口接收数据并分别存入对应的共享内存区;
9.根据权利要求8所述的数据转发装置,其特征在于,与第一处理单元和第二处理单元相对应的共享内存区分别设有环形缓冲队列,在所述环形缓冲队列中设置第一标志位,所述第一标志位用于记载在环形缓冲队列中最新的数据处理后的数据包的第一关联信息;所述第一处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第二数据端口转发,所述第二处理单元基于第一标志位,将所述第一关联信息所对应的数据包通过第一数据端口转发。
10.一种计算机可读存储介质,其上存储有指令,当由处理器执行时,所述指令执行如权利要求1-7任一项所述的数据转发方法的步骤。