1.本发明涉及数据传输技术领域,具体涉及一种数据转发方法、装置、设备和存储介质。
背景技术:2.随着科学技术的飞速发展,云计算、分布式机器学习等业务在数据中心得到了大规模的应用,这也对数据中心的网络的功能和性能提出了更高的要求,例如,快速且灵活的数据包解析、带内聚合计算等。而数据中心的传统的网络设备仅能根据已有的协议规范进行数据的转发,并不能满足用户日益增加的个性化的转发需求。
3.因此如何提供一种能够满足用户不同转发需求的转发方法,已经成为亟需解决的技术问题。
技术实现要素:4.为了解决现有技术存在的数据转发格式固定、不能满足用户需求的问题,本发明提供了一种数据转发方法、装置、设备和存储介质,其具有灵活进行数据转发、满足用户需求等特点
5.根据本发明具体实施方式提供的一种数据转发方法,包括:
6.基于预设解析规则对接收到的数据包进行解析,得到所述数据包的数据域和载荷,所述数据域至少包括数据包的协议头数据;
7.基于匹配条件对所述数据域进行筛选,得到符合所述匹配条件的目标数据;
8.基于预设计算规则对和所述目标数据相关联的目标载荷进行计算,得到新的载荷;
9.将所述数据域和所述新的载荷重组成新的数据包;
10.基于预设转发规则从所述数据域的所述协议头数据中得到转发端口,将所述新的数据包转发至所述转发端口。
11.进一步地,所述基于预设解析规则对接收到的数据包进行解析,得到所述数据包的数据域和载荷,包括:
12.基于所述数据包的各层级网络协议间的跳转条件,对所述数据包逐层进行解析,直至得到最低层的网络协议下的数据包的数据域和载荷。
13.进一步地,所述跳转条件包括相邻网络协议间的跳转标志位,所述基于所述数据包的各层级网络协议间的跳转条件,对所述数据包逐层进行解析,直至得到最低层的网络协议下的数据包的数据域和载荷,包括:
14.自最高层级的网络协议开始,对网络协议中的跳转标志位进行识别,基于识别到的跳转标志位所表征的目标网络协议,跳转至所述目标网络协议进行所述跳转标志位,直至跳转至最低层的网络协议得到所述数据包的数据域和载荷。
15.进一步地,所述基于匹配条件对所述数据域进行筛选,得到符合所述匹配条件的
目标数据,包括:
16.从所述数据域中提取出所述匹配条件中的目标位置所表征的目标数据;
17.将所述目标数据与所述匹配条件中的示例数据进行比较,得到匹配标识,所述匹配标识至少具有两种状态,其中第一状态表征相匹配,第二状态表征不匹配;
18.对所述匹配标识进行识别,若所述匹配标识为所述第二状态,则将所述数据域作为所述目标数据。
19.进一步地,所述基于预设计算规则对和所述目标数据相关联的目标载荷进行计算,得到新的载荷,包括:
20.基于用户指定的数据分配关系从所述目标载荷中获取至少两组待计算数据;
21.将每组待计算数据输入至相关联的计算函数中,基于各函数间的调用关系进行计算,得到所述新的载荷。
22.进一步地,所述将所述数据域和所述新的载荷重组成新的数据包,包括:
23.基于所述数据域与原载荷间的位置和排列关系,对所述数据域和所述新的载荷依次进行拼接。
24.进一步地,所述基于预设转发规则从所述数据域的所述协议头数据中得到转发端口,将所述新的数据包转发至所述转发端口,包括:
25.将从所述协议头数据中获取到的网络地址作为关键字,在预设键值存储系统中查找和所述关键字相关联的键值;
26.将所述新的数据包转发至所述键值对应的转发端口。
27.根据本发明具体实施方式提供的一种数据转发装置,包括:
28.解析模块,用于基于预设解析规则对接收到的数据包进行解析,得到所述数据包的数据域和载荷,所述数据域至少包括数据包的协议头数据;
29.筛选模块,用于基于匹配条件对所述数据域进行筛选,得到符合所述匹配条件的目标数据;
30.载荷模块,用于基于预设计算规则对和所述目标数据相关联的目标载荷进行计算,得到新的载荷;
31.重组模块,用于将所述数据域和所述新的载荷重组成新的数据包;以及
32.转发模块,用于基于预设转发规则从所述数据域的所述协议头数据中得到转发端口,将所述新的数据包转发至所述转发端口。
33.根据本发明具体实施方式提供的一种设备,包括:存储器和处理器;
34.所述存储器,用于存储程序;
35.所述处理器,用于执行所述程序,实现如上所述的数据转发方法的各个步骤。
36.根据本发明具体实施方式提供的一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上所述的数据转发方法的各个步骤。
37.本发明所提供的数据转发方法,可以基于预设解析规则对接收到的数据包进行解析,得到数据包的数据域和载荷,其中数据域至少包括数据包的协议头数据。然后基于匹配条件对数据域进行筛选,得到符合匹配条件的目标数据。再基于预设计算规则对和目标数据相关联的目标载荷进行计算,得到新的载荷。将数据域和新的载荷重组成新的数据包。基于预设转发规则从数据域的协议头数据中得到转发端口,将新的数据包转发至所述转发端
口。该数据转发方法能够根据用户不同的数据转发需求进行数据的转发,且具有数据包载荷的计算能力,能够满足用户的个性化的转发需求。
附图说明
38.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
39.图1是根据一示例性实施例提供的数据转发方法的流程图;
40.图2是根据一示例性实施例提供的数据域筛选的流程图;
41.图3是根据一示例性实施例提供的新的载荷确定流程图;
42.图4是根据一示例性实施例提供的数据转发装置的结构图;
43.图5是根据一示例性实施例提供的设备的结构图。
具体实施方式
44.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.参照图1所示,本发明的实施例提供了一种数据转发方法,该方法可以包括以下步骤:
46.101、基于预设解析规则对接收到的数据包进行解析,得到数据包的数据域和载荷,数据域至少包括数据包的协议头数据。
47.对于网络中传输的数据包,可以分为报文头部和载荷两部分,其中从报文头部按照一定的规则所提取出的数据集合就是数据域,其可包括协议头数据的部分获取全部的数据,用户可根据需要进行数据的提取。其中数据域的提取用户可基于自定义的解析函数来获取自身所需要的协议头数据,本发明在此不再赘述。
48.102、基于匹配条件对数据域进行筛选,得到符合匹配条件的目标数据。
49.用户可根据所需要的匹配条件对得到的数据域进行筛选,进而得到自己想要的目标数据,如数据域中的数据集合为{a,b,c,d},但有的网络报文中的a=1,有的网络报文中的a=2等,当用户想要筛选的条件是a=1时,只要对数据域中a=1的数据报文进行筛选后进行后续的计算即可,而不必再考虑其他的筛选条件。
50.103、基于预设计算规则对和目标数据相关联的目标载荷进行计算,得到新的载荷。
51.在得到用户想要的目标数据后,即可按照用户设定的计算规则对目标数据相对应的目标载荷进行计算,用户可根据载荷的长度对载荷数据进行逻辑运算、比较运算等数据处理得到自己想要的载荷数据。其中计算是用户自定义的函数,用户自定义的函数包括了输入的数据格式、计算方法、输出数据格式。例如,定义的是对其载荷内的前4字节和后续的4字节进行加法计算,得到4字节的计算结果,用其替换原有载荷中的这8字节。条件是由用
户自定义的,以数据域的数据为输入,定义运算规则,如输出1表示符合条件,0表示不符合条件。
52.104、将数据域和新的载荷重组成新的数据包。
53.在对载荷计算完成得到新的载荷后,按照报文头部和载荷的位置关系,将得到的新的载荷和数据域进行拼接后得到新的数据包。
54.105、基于预设转发规则从数据域的协议头数据中得到转发端口,将新的数据包转发至转发端口。
55.在网络报文的发送中常用的转发操作是以数据域中的一些元素作为输入,在一个查找表(和字典结构相似)中进行端口的查找,其输出的就是需要进行数据转发的端口的标号,例如1端口、2端口、3端口等。
56.该数据转发方法实现了灵活的数据包解析、用户自定义的转发、带内聚合计算等。相比于传统的网络设备仅能支持已有的规范协议,能够满足用户的个性化需求,增强了数据转发色可操作性。
57.作为上述实施例可行的实现方式,基于预设解析规则对接收到的数据包进行解析,得到数据包的数据域和载荷的具体过过程可包括:
58.基于数据包的各层级网络协议间的跳转条件,对数据包逐层进行解析,直至得到最低层的网络协议下的数据包的数据域和载荷。
59.其中跳转条件可包括相邻网络协议间的跳转标志位,基于数据包的各层级网络协议间的跳转条件,对数据包逐层进行解析,直至得到最低层的网络协议下的数据包的数据域和载荷,包括:
60.自最高层级的网络协议开始,对网络协议中的跳转标志位进行识别,基于识别到的跳转标志位所表征的目标网络协议,跳转至目标网络协议进行跳转标志位,直至跳转至最低层的网络协议得到数据包的数据域和载荷。
61.具体的,数据包按照协议树的跳转条件依次完成数据包的解析处理。根据网络结构中各个层次中的网络协议间的从属关系,逐层级的提取网络协议中的跳转标志位根据跳转标志位的填充值得到该跳转标志位所表征的所要跳转的下一层级的网络协议,进而实现逐层的跳转。例如某一网络的结构从上之下依次为以太网、虚拟局域网、网络传输协议(ipv4),最后为在同一层级的传输控制协议(tcp)和用户数据包协议(udp),那么数据的解析过程可为:
62.在解析以太网eth时,当跳转标志位ethtype=0x9100,则下一层报文协议为vlan,下一步跳转到vlan(虚拟局域网)执行。
63.当ethtype=0x0800,则下一层报文协议为ipv4,下一步跳转到ipv4执行。
64.在解析vlan时,当跳转标志位type=0x0800,则下一层报文协议为ipv4,下一步跳转到ipv4执行。
65.在解析ipv4时,当跳转标志位protocol=6,则下一层报文协议为tcp,下一步跳转到tcp执行。
66.当跳转标志位protocol=17,则下一层报文协议为udp,下一步跳转到udp执行。
67.可以理解的是,本领域技术人员还可根据需要选择其他的解析方式进行网络协议的解析,本发明在此不做限制。
68.参照图2所示,在本发明的一些具体实施例中,基于匹配条件对数据域进行筛选,得到符合匹配条件的目标数据,可包括以下步骤:
69.201、从数据域中提取出匹配条件中的目标位置所表征的目标数据。
70.202、将目标数据与匹配条件中的示例数据进行比较,得到匹配标识,其中匹配标识至少具有两种状态,其中第一状态表征相匹配,第二状态表征不匹配。
71.203、对匹配标识进行识别,若匹配标识为第二状态,则将数据域作为目标数据。
72.具体的,根据数据域中的网络地址可确定该数据的传输方向,可根据传输方向进行数据的筛选,例如筛选数据域的条件是发往用户a的,可将传输方向作为筛选的条件,将符合和不符合分别作为相应的匹配标识,对匹配状态进行表征,符合该条件的网络数据包要进行后续的计算。
73.进一步地,参照图3所示,基于预设计算规则对和目标数据相关联的目标载荷进行计算,得到新的载荷,可包括:
74.301、基于用户指定的数据分配关系从目标载荷中获取至少两组待计算数据。
75.302、将每组待计算数据输入至相关联的计算函数中,基于各函数间的调用关系进行计算,得到新的载荷。
76.具体的,对目标载荷的计算可基于符号式编程进行,在用户提前指定输入的数据、计算步骤和方法、以及输出的数据。符号式编程适合数据流的处理,可用作网络数据包处理的自定义。例如:
77.a=variable('a')
78.b=variable('b')
79.c=b*a
80.d=c+constant(1)
81.#compiles the function
82.f=compile(d)
83.d=f(a=np.ones(10),b=np.ones(10)*2)。
84.该计算过程表示将得到的a和b相加后得到c,将c和1作为输入的函数进行相加后得到d,然后再将d进行下一步的计算。
85.将数据域和新的载荷重组成新的数据包具体可包括:
86.基于数据域与原载荷间的位置和排列关系,对数据域和新的载荷依次进行拼接。因为在同一网络协议中数据域和载荷间的位置和各自所占的位数都是确定的,将得到的新的数据对应进行填充拼接即可得到新的数据包。
87.进一步地优选的,基于预设转发规则从数据域的协议头数据中得到转发端口,将新的数据包转发至转发端口,包括:
88.将从协议头数据中获取到的网络地址作为关键字,在预设键值存储系统中查找和关键字相关联的键值。
89.然后将新的数据包转发至键值对应的转发端口。
90.转发端口的确定可根据查找表进行,查找表是以key-value的形式进行存储的,数据域里的部分数据可以作为key,在查找表可以得到value,value值里含有转发端口的信息。转发端口可为一个数字,比如1-48为交换机前面板的序号,再根据转发端口和序号间的
对应关系即可找到相应的转发端进行转发。
91.基于同样的设计思路参照图4所示,本发明的实施例还提供了一种数据转发装置,该装置可以执行上述实施例所述的数据转发方法的各个步骤,该装置可以包括:
92.解析模块401,用于基于预设解析规则对接收到的数据包进行解析,得到数据包的数据域和载荷,其中数据域至少包括数据包的协议头数据。
93.筛选模块402,用于基于匹配条件对数据域进行筛选,得到符合匹配条件的目标数据。
94.载荷模块403,用于基于预设计算规则对和目标数据相关联的目标载荷进行计算,得到新的载荷。
95.重组模块404,用于将数据域和新的载荷重组成新的数据包。以及
96.转发模块405,用于基于预设转发规则从数据域的所述协议头数据中得到转发端口,将新的数据包转发至转发端口。
97.该装置在运行时具有和上述实施例所述的数据转发方法相同的有益效果,其具体实现方式可参照上述实施例所提供的数据转发方法的实现过程,本发明在此不再赘述。
98.参照图5所示本发明的实施例还提供了一种设备,该设备可以包括:存储器501和处理器502.
99.其中存储器501,用于存储程序.
100.处理器502,用于执行该程序,实现如上所述的数据转发方法的各个步骤。
101.本发明的实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如上实施例所述的数据转发方法的各个步骤。
102.对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
103.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
104.本发明各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。
105.本发明各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
106.本发明所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
107.作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模
块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
108.另外,在本发明各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
109.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
110.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
111.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
112.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。