一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于集成流表转发报文的方法及装置与流程

2021-10-23 01:10:00 来源:中国专利 TAG:报文 转发 装置 集成 特别


1.本技术涉及通信领域,特别涉及一种基于集成流表转发报文的方法及装置。


背景技术:

2.开放虚拟交换机(open virtual switch,ovs)用于转发报文,可以将某个虚拟机的报文转发到网络或实体机器,或将来自网络或实体机器的报文转发到某个虚拟机。
3.ovs接收到报文后需要获取对报文进行处理的多个处理操作,该多个处理操作中包括转发该报文的转发操作和在该转发操作之前执行的至少一个其他操作,然后根据该至少一个其他操作对该报文进行处理,再转发处理后的该报文。
4.由于ovs每次只能获取到一个处理操作,所以ovs在接收到报文后需要查找多个表,通过这些表中不同的映射关系多次获取相应的处理操作,才能获取到多个处理操作,导致需要较长的时间才能获取完所有操作,比较费时,对报文进行处理的效率低下。


技术实现要素:

5.为了提高处理报文的效率,本技术实施例提供了一种基于集成流表转发报文的方法及装置。所述技术方案如下:
6.第一方面,本技术例提供了一种基于集成流表转发报文的方法,所述集成流表包括多个流表项,所述多个流表项中的每个流表项包括匹配项与操作集之间的映射关系,所述匹配项包含多个报文头字段,所述操作集包括转发操作,所述方法包括:获取第一报文;从所述第一报文的报文头中提取n组不同的报文头字段,每组报文头字段包括多个第一报文头字段,其中,每组报文头字段所包括的字段种类与所述多个流表项中的一个流表项包含的多个报文头字段的字段种类一致,n为大于或者等于1的整数;将所述n组报文头字段分别与所述多个流表项做匹配,以得到目标流表项,所述目标流表项与所述n组报文头字段集合中的一组报文头字段相匹配,所述目标流表项中包括的操作集为所述第一报文对应的操作集,所述第一报文对应的操作集中还包括在所述确定所述第一报文对应的操作集的操作以及所述转发操作之间,对所述第一报文执行的全部操作;
7.对所述第一报文执行所述操作集中的所述全部操作,以得到所述第一报文对应的第二报文,以及转发所述第二报文。
8.。由于所述集成流表中的目标流表项包括第一报文对应的操作集,该操作集中包括对第一报文处理的全部操作,这样根据多个第一报文头字段,查找一次所述集成流表就可以查找出第一报文对应的全部操作,从而提高对第一报文进行处理和转发的效率。
9.其中,确定所述第一报文对应的操作集对应的操作可以是读取该第一报文对应的操作集或者其他用于使该基于集成流表转发报文的装置的处理电路准备好执行该第一报文对应的操作集中的操作,也就是说,第一报文对应的操作集中包括的操作,是针对第一报文中字段(例如可以是报文头或者载荷,或者报文头和载荷的字段)的操作,可以达到使得转发该第一报文中的信息不需要再借助其他的流表的效果。一种实现方式下,第一报文对
应的操作集中还包括在读取该第一报文对应的操作集以及所述转发操作之间,对所述第一报文中的字段所执行的全部操作,指的是读取该第一报文对应的操作集之后,转发操作之间的操作。在第一方面的一种可能的实现方式中,所述报文头中的字段种类为报文头中的一个字段对应的信息的类型或为该字段在所述第一报文的报文头的位置。
10.在第一方面的一种可能的实现方式中,将所述第一报文的报文头与一串掩码进行与运算,以得到所述第一报文中的所述多个第一报文头字段,所述掩码指示所述多个第一报文头字段在所述第一报文的报文头中的位置。如此使用一串掩码与第一报文的报文头进行与运算,便可提取第一报文的报文头中的所有需要提取的第一报文头字段,相比目前一个一个解析第一报文的报文头中的各报文头字段,可以提高解析的效率,进一步提高对第一报文进行处理和转发的效率。
11.在第一方面的一种可能的实现方式中,生成第一掩码,由于所述第一掩码与所述第一报文的报文头具有相同的字节长度,所述第一掩码中非0的比特位对应于所述目标流表项中包括的多个报文头字段。这样可以使用第一掩码解析第一报文的报文头,可以提高解析第一报文的效率。
12.在第一方面的一种可能的实现方式中,所述多个流表项位于所述集成流表的多个行,所述集成流表的多个行中的每行对应一个到期时间,所述到期时间用于指示从所述集成流表中删除所述到期时间对应行中的流表项的时刻,所述目标流表项位于对应第一到期时间的行。这样在从所述集成流表中查找与所述多个第一报文头字段相匹配的目标流表项,以确定所述第一报文对应的操作集后,将所述目标流表项,从所述第一到期时间对应的行移动到第二到期时间对应的行,所述第二到期时间晚于所述第一到期时间。这样可以按到期时间对流表项进行分类,如此在根据当前时间搜寻到期的流表项时,可以提高搜寻效率。
13.在第一方面的一种可能的实现方式中,将所述第一到期时间更新为第二到期时间。由于第二到期时间晚于第一到期时间,这样在该集成流表中查找出包括第一报文对应的操作集的目标流表项后,可以延长该目标流表项在该集成流表中的存储时间。
14.在第一方面的一种可能的实现方式中,所述第一报文对应的目标流表项中,还包括所述第二到期时间与所述第一到期时间之间的时间差。
15.在第一方面的一种可能的实现方式中,获取第三报文;从所述第三报文的报文头中提取多个第二报文头字段,其中,所述多个第二报文头字段与所述多个流表项中的一个流表项包含的多个报文头字段具有相同的种类;在所述集成流表中不包括与所述多个第二报文头字段相匹配的目标流表项的情况下,从开放虚拟交换机ovs中获取所述第三报文对应的至少一个操作,所述至少一个操作包括转发操作;对所述第三报文执行所述至少一个操作。这样当所述集成流表中没有第三报文对应的操作集时,可以从ovs获取对所述第三报文的至少一个操作,从而保证能够成功对第三报文进行处理和转发。
16.在第一方面的一种可能的实现方式中,从所述ovs中获取所述第三报文的报文头中的多个第二报文头字段和至少一个操作,在所述集成流表中存储包括所述获取的该多个第二报文头字段和该至少一个操作的流表项。这样在下一次接收到第三报文时,可以一次从所述集成流表中查找出第三报文对应的操作集,提高下一次处理和转发与第三报文具有相同的该多个第二报文头字段的报文的效率。
17.在第一方面的一种可能的实现方式中,所述全部操作包括以下操作中的一个或多个:在报文头中添加字段的操作,在报文头中删除字段的操作,修改报文头中的字段的内容的操作,设定报文的优先级操作和设定连线跟踪的操作。
18.第二方面,本技术提供了一种基于集成流表转发报文的装置,
19.所述集成流表包括多个流表项,所述多个流表项中的每个流表项包括匹配项与操作集之间的映射关系,所述匹配项包含多个报文头字段,所述操作集包括转发操作,所述装置包括:
20.处理模块,用于获取第一报文;从所述第一报文的报文头中提取n组不同的报文头字段,每组报文头字段包括多个第一报文头字段,其中,每组报文头字段所包括的字段种类与所述多个流表项中的一个流表项包含的多个报文头字段的字段种类一致,n为大于或者等于1的整数;将所述n组报文头字段分别与所述多个流表项做匹配,以得到目标流表项,所述目标流表项与所述n组报文头字段集合中的一组报文头字段相匹配,所述目标流表项中包括的操作集为所述第一报文对应的操作集,所述第一报文对应的操作集中还包括在所述确定所述第一报文对应的操作集的操作以及所述转发操作之间,对所述第一报文执行的全部操作;对所述第一报文执行所述操作集中的所述全部操作,以得到所述第一报文对应的第二报文;收发模块,用于转发所述第二报文。
21.。由于所述集成流表中的目标流表项包括第一报文对应的操作集,该操作集中包括对第一报文处理的全部操作,这样根据多个第一报文头字段,查找一次所述集成流表就可以查找出第一报文对应的全部操作,从而提高对第一报文进行处理和转发的效率。
22.在第二方面的一种可能的实现方式中,所述装置中的处理模块和收发模块,还可以用于执行第一方面的任意一种可能的实现方式中的方法。关于第二方面中涉及到的与第一方面相应的词语和句子的解释,以及各种实现方法的有益效果的描述,请参考第一方面。
23.第三方面,本技术提供了一种基于集成流表转发报文的装置,所述集成流表包括多个流表项,所述多个流表项中的每个流表项包括匹配项与操作集之间的映射关系,所述匹配项包含多个报文头字段,所述操作集包括转发操作,所述装置包括处理模块和收发模块。所述处理模块用于获取第一报文;从所述第一报文的报文头中提取多个第一报文头字段,其中,所述多个第一报文头字段与所述多个流表项中的一个流表项包含的多个报文头字段具有相同的种类;根据所述多个第一报文头字段查找所述集成流表,当查找出与所述多个第一报文头字段相匹配的目标流表项,根据所述目标流表项确定所述第一报文对应的操作集,所述第一报文对应的操作集中还包括在所述确定所述第一报文对应的操作集以及所述转发操作之间,对所述第一报文执行的全部操作,对所述第一报文执行所述操作集中的所述全部操作;当没有查找出与所述多个第一报文头字段相匹配的目标流表项,则从开放虚拟交换机ovs中获取所述第一报文对应的至少一个操作,所述至少一个操作包括转发操作;对所述第一报文执行所述至少一个操作。所述收发模块,用于转发处理后的第一报文。由于所述集成流表中的目标流表项包括第一报文对应的操作集,该操作集中包括对第一报文处理的全部操作,这样当从集成流表中包括目标流表项时,根据多个第一报文头字段,查找一次所述集成流表就可以查找出第一报文对应的全部操作,从而提高对第一报文进行处理和转发的效率。当所述集成流表中没有目标流表项时,可以从ovs获取对所述第一报文的至少一个操作,从而保证能够成功对第一报文进行处理和转发。
24.在第三方面的一种可能的实现方式中,所述装置中的处理模块和收发模块,还可以用于执行第一方面的任意一种可能的实现方式中的方法。关于第三方面中涉及到的与第一方面相应的词语和句子的解释,以及各种实现方法的有益效果的描述,请参考第一方面。
25.第四方面,本技术提供了一种基于集成流表转发报文的装置,所述装置包括:处理电路和存储介质;所述存储介质存储有一个或多个程序,所述一个或多个程序被配置由所述处理电路执行,所述一个或多个程序包含用于进行如第一方面或第一方面任意可能实施方式中的方法的指令。关于第三方面中涉及到的与第一方面相应的词语和句子的解释,以及各种实现方法的有益效果的描述,请参考第一方面。
26.第五方面,本技术提供了一种基于集成流表转发报文的装置,所述装置包括通信接口、处理电路和存储介质。其中,所述处理电路分别与所述通信接口和存储介质连接。所述存储介质用于存储程序、指令或代码,所述处理电路用于执行所述存储介质中的程序、指令或代码,完成第一方面或第一方面的任意可能的实现方式中的方法。
27.第六方面,本技术实施例提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现上述第一方面或第一方面的任意可能的实现方式的方法。
28.第七方面,本技术提实施例供了一种非易失性计算机可读存储介质,用于存储计算机程序,所述计算机程序通过处理器进行加载来执行第一方面或第一方面的任意可能的实现方式的方法的指令。
29.第八方面,本技术提实施例供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时用于实现上述第一方面或第一方面的任意可能的实现方式的方法。
30.关于第二、三、四、五、六、七和八方面中涉及到的与第一方面相应的词语和句子的解释,以及各种实现方法的有益效果的描述,请参考第一方面,此处不再赘述。
附图说明
31.图1

1是本技术实施例提供的一种系统架构示意图;
32.图1

2是本技术实施例提供的一种系统架构示意图;
33.图1

3是一种使用ovs的虚拟网络系统的示意图;
34.图1

4是本技术实施例提供的一种报文的结构示意图;
35.图2

1是本技术实施例提供的一种基于集成流表转发报文的方法流程图;
36.图2

2是本技术实施例提供的一种流表项的结构示意图;
37.图2

3是本技术实施例提供的另一种流表项的结构示意图;
38.图2

4是本技术实施例提供的一种报文头和掩码的结构示意图;
39.图2

5是本技术实施例提供的第一报文与多个掩码与运算过程的示意图;
40.图2

6是本技术实施例提供的一种报文头与掩码与运算过程的示意图;
41.图2

7是本技术实施例提供的一种平行化解析报文的流程图;
42.图2

8是本技术实施例提供的一种集成流表中行的结构示意图;
43.图2

9是本技术实施例提供的使用链表存储集成流表中行的结构示意图;
44.图2

10是本技术实施例提供的对集成流表进行监控的流程图;
45.图3

1是本技术实施例提供的另一种基于集成流表转发报文的方法流程图;
46.图3

2是本技术实施例提供的一种ovs的结构示意图;
47.图3

3是本技术实施例提供的一种ovs处理报文的示意图;
48.图3

4是本技术实施例提供的一种转发报文的简要框图;
49.图4

1是本技术实施例提供的一种转发报文的装置结构示意图;
50.图4

2是本技术实施例提供的转发报文的装置与ovs之间的结构框图;
51.图4

3是本技术实施例提供的转发报文的装置与ovs集成后的结构框图;
52.图5是本技术实施例提供的一种基于集成流表转发报文的装置结构示意图。
具体实施方式
53.下面将结合附图对本技术实施方式作进一步地详细描述。
54.参见图1

1,本技术实施例提供了一种系统架构,包括:
55.第一设备1和第二设备2,第一设备1和第二设备2之间可以建立有网络连接。
56.第一设备1可以为终端或服务器等,第一设备1中可以包括至少一个虚拟机;第二设备2可以为终端或服务器等。
57.第一设备1可以向第二设备2发送报文,该报文可以来自第一设备1中的某个虚拟机。可选的,在实现时,第一设备1可以获取其包括的某个虚拟机的第一报文,获取用于处理该第一报文的操作,获取的操作中包括转发操作和在该转发操作之前执行的至少一个其他操作,对第一报文执行该至少一个其他操作第一报文对应的第二报文,可以向第二设备2转发第二报文。
58.第二设备2也可以向第一设备1的某个虚拟机发送报文。可选的,第一设备1接收来自第二设备2的第一报文,获取用于处理该第一报文的操作,获取的操作中包括转发操作和在该转发操作之前执行的至少一个其他操作,对第一报文执行该至少一个其他操作得到第一报文对应的第二报文,可以向该某个虚拟机输入第二报文。
59.可选的,第一设备1可以为路由器或交换机等交换设备。参见图1

2,该系统还可以包括第三设备3,第一设备1和第三设备3之间也可以建立有网络连接。第一设备1可以转发第二设备2和第三设备3之间的报文。
60.例如,第一设备1可以接收来自第二设备2的第一报文,获取用于处理该第一报文的操作,获取的操作中包括转发操作和在该转发操作之前对第一报文执行的全部操作,对第一报文执行该全部操作得到第二报文,可以向第三设备3转发第二报文。
61.可选的,第二设备2可以为终端,第三设备3可以服务器;或者,第二设备2可以为服务器,第三设备3可以为终端;或者,第二设备2和第三设备3可以均为终端或服务器。
62.可选的,第一设备1可以根据第二报文的报文头中的接收端信息转发第二报文,该接收端信息可以包括接收端地址,还可以包括接收端端口号等信息。
63.如果该接收端信息对应的接收端为虚拟机,则第一设备1向该虚拟机输入第二报文;如果该接收端信息对应的接收端为第二设备2,则第一设备1向第二设备2转发第二报文;如果该接收端信息对应的接收端为第三设备3,则第一设备向第三设备3转发第二报文。
64.上述所述的报文(为第一报文和/或第二报文),该报文包括报文头和报文内容(也称为载荷),而报文头中包括多个报文头字段。即报文头字段是组成报文头的字段。例如报
文头中通常包括源地址、源端口号、目的地址和目的端口号等字段,这些字段就是报文头字段。接下来举了一种报文的例子,以对报文头和报文头字段进行说明。
65.第一设备、第二设备和第三设备中的任一个都可以包括用于实现本技术实施例方法的装置,该装置可以执行本实施方法中的各步骤的操作,以实现转发报文,由于ovs也是用于转发报文的,可以认为该装置具有ovs的功能。
66.对上述设备中的任一个,设备中还可以包括ovs,即该装置也可以与ovs集成在一起,该装置与ovs通信,可以与ovs配合,以实现转发报文。
67.或者,ovs是该装置的一个部分,例如ovs可以是组成该装置的一个模块。
68.再或者,第一设备中也可以不包括ovs,ovs位于除第一设备以外的其他设备中,该装置与该其他设备通信,可以与该其他设备上的ovs配合,实现转发报文。
69.在本实施例中,第一报文的报文头中存在多个第一报文头字段,该多个第一报文头字段与集成流表中的一个流表项包含的多个报文头字段具有相同的种类。
70.图1

3是一种使用ovs的虚拟网络系统的示意图,例如该架构图中的节点1,节点2和节点3可以对应前文中的一种实现方式下的第一设备、第二设备和第三设备。
71.节点1、节点2和节点3分别为三台安装有ovs软件并配置有网卡(network interface card,nic)的物理主机或服务器,三个节点通过物理交换机107传输信息,每个节点均拥有完整的软件和硬件,为了简洁,图1

3仅示例性地画出了节点1包括的软件和硬件。
72.如图1

1所示,节点1的硬件包括中央处理器101(central processing unit,cpu)、存储器102和网卡103,节点1的软件包括ovs 104、虚拟机(virtual machine,vm)105和vm106,节点1上的vm 105和vm 106通过ovs 104和网卡103与其它节点通信。其中,本技术描述的基于集成流表转发报文的装置,作为软件就可以位于ovs104中;或者独立于ovs104,例如可用框图表示在图上的虚拟机(vm105、vm106)和ovs104之间,报文先使用该装置进行转发,如果装置中的集成流表无法转发该报文,再通过ovs转发;可以使用cpu101的硬件资源执行本技术的方法,也可以使用网卡103的硬件资源来执行本技术的方法。上述虚拟网络系统仅是举例说明,适用于本技术的虚拟网络系统不限于此,例如,节点1还可以安装容器或者其它虚拟操作系统软件,节点的数量还可以是其它数量,每个节点所包括的硬件也都不限于图1

3所示的硬件。
73.例如,参见图1

4所示的虚拟扩展局域网(virtual extensible lan,vxlan)报文的结构,包括报文头、报文内容和帧校验序列(frame check sequence,fcs)。报文头中包括外层媒体介入控制层(media access control,mac)头、外层网络之间互连的协议(internet protocol,ip)头、用户数据报协议(user datagram protocol,udp)头和vxlan头。
74.仍参见图1

4,外层mac头包括的报文头字段分别为目的mac地址、源mac地址、虚似局域网(virtual lan,vlan)类型、vlan标识标签(vlan identify tag,vlan id tag)、以太网类型(ether type)。外层ip头包括的报文头字段分别为ip头其余资料(ip header misc data)、协议、头冗余校验(headerchecksum)、外层源ip和外层目的ip。upd头包括的报文头字段分别为udp源端口、vxlan端口、udp长度和冗余检验(checksum)。vxlan头包括的报文头字段分别为vxlan、虚拟局域网标识(virtual lan identify,vnid)和两个保留字段。
75.在本实施例中,第一设备1对第一报文进行处理,以及转发处理后得到的第二报文的详细过程,可以参见如下任一实施例的实现过程,在此先不进行详细说明。
76.参见图2

1,本技术实施例提供了一种基于集成流表转发报文的方法,该方法的执行主体可以为图1

1或图1

2所示实施例中的第一设备,包括:
77.步骤201:获取第一报文。
78.第一报文可以是来自虚拟机的报文或者可以是来自除第一设备外的其他物理设备发送的报文。其中,该虚拟机可以运行在第一设备中,或者该虚拟机可以运行在除第一设备外的其他物理设备上。
79.例如,当第一设备为网络中的路由器或交换机等网元,第一设备可以接收来自终端、服务器或网络中的其他网元发送的第一报文。或者,
80.当第一设备为服务器时,第一设备可以接收来自终端或其他服务器等设备发送的第一报文,或者,第一设备中可以包括至少一个虚拟机,第一设备可以获取来自某个虚拟机的第一报文。或者,
81.当第一设备为终端时,第一设备可以接收来自其他终端或服务器等设备发送的第一报文,或者,第一设备中包括至少一个虚拟机,第一设备可以获取来自某个虚拟机的第一报文。
82.该集成流表中包括多个流表项,该多个流表项中的每个流表项包括匹配项与操作集之间的映射关系,对于每个流表项中包括的匹配项和操作集,该匹配项包含多个报文头字段,该操作集包括转发操作,以及在该转发操作之间对与该操作集对应的报文所执行的全部操作。
83.其中,确定所述第一报文对应的操作集对应的操作可以是读取该第一报文对应的操作集或者其他用于使该基于集成流表转发报文的装置的处理电路准备好执行该第一报文对应的操作集中的操作,也就是说,第一报文对应的操作集中包括的操作,是针对第一报文中字段(例如可以是报文头或者载荷,或者报文头和载荷的字段)的操作,可以达到使得转发该第一报文中的信息不需要再借助其他的流表的效果。一种实现方式下,第一报文对应的操作集中还包括在读取该第一报文对应的操作集以及所述转发操作之间,对所述第一报文中的字段所执行的全部操作,指的是读取该第一报文对应的操作集之后,转发操作之间的操作。
84.该全部操作所包括的种类包括以下一个或多个:在报文头中添加字段的操作,在报文头中删除字段的操作,修改报文头中的字段的内容的操作,设定报文的优先级操作和设定连线跟踪的操作。一种实现方式下,所述全部操作种类只有上述5种操作中的一类或几类,其他种类的操作都不是本技术描述的“全部操作”。可选的,第一报文的报文头中的字段的种类为该字段对应的信息的类型或为该字段在第一报文的报文头的位置。
85.在本步骤中,假设第一报文的报文头中存在多个第一报文头字段与该集成流表中的一个匹配项包含的多个报文头字段相同,所以该集成流表中包括第一报文对应的操作集。
86.可选的,对于该集成流表中的每个流表项中的匹配项,该流表项中的匹配项可以唯一地标识一路报文流。
87.集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以相同,即对于
集成流表中的任意两个流表项,该两个流表项中的匹配项包括的字段种类相同。这样在本实施例中,每路报文流都使用相同种类的报文头字段来唯一标识。或者,
88.集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以不同,即对于集成流表中的任意两个流表项,该两个流表项中的匹配项包括的字段种类可以不同。
89.由于某些报文流需要报文的报文头中的九元组字段来唯一标识,某些报文流仅使用报文的报文头中的五元组字段就可以唯一标识,或者某些报文流仅使用报文的报文头中的四元组字段就可以唯一标识。因此集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以不同。
90.可选的,流表项中的匹配项可以包括报文头中的九元组字段或该九元组字段中的部分报文头字段等。
91.可选的,该匹配项包括报文头中的九元组字段,即该匹配项包括九个报文头字段,该九个报文头字段可以分别为发送端地址、发送端端口号、接收端地址、接收端端口号、vxlan、协议、外部虚拟局域网(outer vlan)、内部虚拟局域网(inner vlan)和虚拟端口(virtual port,vport)。或者,
92.可选的,该匹配项可以包括该九个报文头字段中的部分报文头字段。例如,该匹配项可以包括发送端地址、发送端端口号、接收端地址和接收端端口号。再例如,该匹配项可以包括发送端地址、发送端端口号、接收端地址、接收端端口号和协议。
93.可选的,上述发送端地址可以为发送端ip,接收端地址可以为接收端ip。
94.可选的,对于上述九个报文头字段,发送端地址可以占用四个字节的长度,发送端端口号可以占用两个字节的长度,接收端地址可以占用四个字节的长度,接收端端口可以占用两个字节的长度,vxlan可以占用三个字节的长度,协议可以占用一个字节的长度,outer vlan、inner vlan和vport占用的长度可以均为两个字节。
95.对于集成流表中的每个流表项,该流表项中的操作集包括转发操作,以及在该转发操作之前执行的至少一种其他操作。
96.可选的,该其他操作可以为以下操作中的任一种:在报文头中添加字段的操作,在报文头中删除字段的操作,修改报文头中的字段的内容的操作,设定报文的优先级操作和设定连线跟踪操作。对于该其他操作,在本实施例中只列举了上述几种,对其他的就不再一一列举。
97.可选的,在报文头中添加字段的操作可以包括在报文头中添加vlan的操作和在报文头中添加vxlan的操作中至少一个。在报文头中删除字段的操作可以包括在报文头中删除vlan的操作和在报文头中删除vxlan的操作中的至少一个。
98.修改报文头中的字段的内容的操作可以包括修改报文头中的发送端mac的操作、修改报文头中的接收端mac的操作、修改报文头中的发送端ip的操作、修改报文头中的接收端ip的操作、修改报文头中的发送端端口号的操作和修改报文头中的接收端端口号的操作中的至少一个。
99.可选的,设定连线跟踪操作可以是记录报文的状态信息的操作。报文的状态信息可以包括该报文的序号等信息。
100.对于记录该报文的状态信息的操作,可以为:从该报文的报文头中提取用于标识报文的标识信息以及获取报文的状态信息,该标识信息可以包括报文的发送端地址、发送
端端口号、接收端地址和接收端端口号中至少一个,将该标识信息和该状态信息对应保存在标识信息与状态信息的对应关系中。
101.可选的,参见图2

2,对于该集成流表中的每个流表项,该流表项中可以直接存储有包括多个操作的操作集。
102.该流表项中的操作集可以包括该多个操作中的每个操作对应的字段,操作对应的字段中包括该操作的名称、该操作的参数大小和该操作的参数。这样在后续从第一映射关系中读取操作时,先从该操作对应的字段中读取该操作的名称和该操作的参数大小,根据该操作的参数大小读取该操作的参数,以实现获取该操作。
103.例如,参见图2

2,该流表项中的操作集包括k 1个操作中的每个操作对应的字段;第一个操作对应的字段中包括操作的名称cmd0、操作的参数大小size0和操作的参数config0;第二个操作对应的字段中包括操作的名称cmd1、操作的参数大小size1和操作的参数config1……
第k 1个操作对应的字段中包括操作的名称cmd
k
、操作的参数大小size
k
和操作的参数config
k
。或者,
104.可选的,参见图2

3,该流表项可以不直接存储包括多个操作的操作集,而是存储有指向包括该操作集的指针。在该操作集中该多个操作中的每个操作对应字段,操作对应的字段中包括该操作的名称、该操作的参数大小和该操作的参数。例如,参见图2

3,该流表项包括指针action pointer,该指针action pointer指向的操作集中包括k 1个操作中的每个操作对应的字段;第一个操作对应的字段中包括操作的名称cmd0、操作的参数大小size0和操作的参数config0;第二个操作对应的字段中包括操作的名称cmd1、操作的参数大小size1和操作的参数config1……
第k 1个操作对应的字段中包括操作的名称cmd
k
、操作的参数大小size
k
和操作的参数config
k

105.可选的,对于在报文头中添加vlan的操作,该操作的参数至少包括添加的vlan的字段内容。
106.对于在报文头中添加vxlan的操作,该操作的参数至少包括添加的vxlan的字段内容。
107.对于在报文头中删除vlan的操作,该操作的参数至少包括用于标识需要删除的vlan的字段标识。
108.对于在报文头中删除vxlan的操作,该操作的参数至少包括用于标识需要删除的vxlan的字段标识。
109.对于修改报文头中的发送端mac的操作,该操作的参数至少包括修改后的发送端的mac地址。
110.对于修改报文头中的接收端mac的操作,该操作的参数至少包括修改后的接收端的mac地址。
111.对于修改报文头中的发送端ip的操作,该操作的参数至少包括修改后的发送端的ip地址。
112.对于修改报文头中的接收端ip的操作,该操作的参数至少包括修改后的接收端的ip地址。
113.对于修改报文头中的发送端端口号的操作,该操作的参数至少包括修改后的发送端的端口号。
114.对于修改报文头中的接收端端口号的操作,该操作的参数至少包括修改后的接收端的端口号。
115.对于设定报文的优先级操作,该操作的参数至少包括优先级。
116.对于设定连线跟踪操作,该操作的参数至少包括用于指示记录报文的状态信息的指示信息。
117.可选的,参见图2

2,对于该集成流表中的每条流表项,该流表项除了包括匹配项和操作集外,还可以包括其他信息。例如,该流表项还可以包括报文统计信息,该报文统计信息可以包括报文数目和/或报文数据量。该报文数目用于记录使用该流表项转发的报文的总数目,该报文数据量用于记录使用该流表项转发的报文的总数据量。
118.其中,该集成流表中的每条流表项可以由技术人员设置的或者在转发报文的过程中生成的。在转发报文的过程生成该流表项的详细过程可以参见图3

1所述的实施例,在此先不做详细说明。
119.步骤202:从第一报文的报文头中提取多个第一报文头字段。
120.其中,提取的多个第一报文头字段与集成流表中的一个流表项包括的多个报文头字段具有相同的种类。
121.在本步骤中,可以将第一报文的报文头与一串掩码进行与运算,以得到第一报文中的多个第一报文头字段,该串掩码指示该多个第一报文头字段在第一报文的报文头中的位置。
122.可选的,在执行本步骤之前,可以生成一串第一掩码,其中,第一掩码与第一报文的报文头具有相同的字节长度,第一掩码在集成流表中对应至少一个目标流表项,第一掩码中非0的比特位对应于目标流表项中包括的多个报文头字段。然后,可以将第一报文的报文头与第一掩码进行与运算,以得到第一报文中的多个第一报文头字段。
123.可选的,第一掩码包括多个掩码字段,第一报文的报文头中的每个报文头字段对应一个掩码字段。对于第一报文的报文头中的每个报文头字段,该报文头字段的长度等于其对应的掩码字段的长度,如果该报文头字段的种类是目标流表项中的一个报文头字段的种类,则该报文头字段对应的掩码字段由比特1组成,如果该报文头字段的种类不是目标流表项中的一个报文头字段的种类,则该报文头字段对应的掩码字段由比特0组成。
124.例如,假设第一掩码在该集成流表中对应的目标流表项包括报文头中的九元组字段,即目标流表项中包括发送端地址、发送端端口号、接收端地址、接收端端口号、vxlan、协议、outer vlan、inner vlan和vport。
125.参见图2

4所示的第一报文的报文头中的每个报文头字段,第一报文的报文头包括版本、服务类型、发送端地址、总长度、发送端端口号、接收端地址、接收端端口号、vxlan、协议、outer vlan、inner vlan和vport十二个报文头字段。同样,对于生成的第一掩码,第一掩码中也可以包括该十二个报文头字段中的每个报文头字段对应的掩码字段。
126.其中,对于版本、服务类型和总长度,这三个报文头字段的种类均不是该目标流表项中的报文头字段的种类,所以版本对应的掩码字段由比特0组成,服务类型对应的掩码字段由比特0组成,以及总长度对应的掩码字段由比特0组成。
127.对于发送端地址、发送端端口号、接收端地址、接收端端口号、vxlan、协议、outer vlan、inner vlan和vport,这九个报文头字段的种类均为该目标流表项中的报文头字段的
种类,所以发送端地址对应的掩码字段由比特1组成,发送端端口号对应的掩码字段由比特1组成,接收端地址对应的掩码字段由比特1组成,接收端端口号对应的掩码字段由比特1组成,vxlan对应的掩码字段由比特1组成,协议对应的掩码字段由比特1组成,outervlan对应的掩码字段由比特1组成,innervlan对应的掩码字段由比特1组成,以及vport对应的掩码字段由比特1组成。
128.可选的,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类相同时,只需要生成一串第一掩码。将第一报文的报文头与该串第一掩码与运算得到一个包括多个第一报文头字段的报文头字段集合。
129.假设第一报文的报文头中存在多个第一报文头字段与该集成流表中的一个匹配项包含的多个报文头字段相同,即在本步骤中提取的包括该多个第一报文头字段的报文头字段集合与集成流表中的一个匹配项相同。
130.可选的,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以不同时,可以生成多串第一掩码。每串第一掩码在集成流表中对应目标流表项,每串第一掩码对应的目标流表项中的报文头字段的种类不同。
131.对于每串第一掩码,将第一报文的报文头与该串第一掩码进行与运算,得到包括多个第一报头字段的一个报文头字段集合,该报文头字段集合中的报文头字段与该串第一掩码对应的目标流表项中的报文头字段具有相同种类。这样可以从第一报文中提取n个报文头字段集合,n为大于1的整数且每个报文头字段集合具有的报文头字段的种类不同。
132.在本实施例中,假设该n个报文头字段集合中存在一个报文头字段集合与集成流表中的一个匹配项相同。
133.例如,参见图2

5,假设可以生成六串第一掩码,分别为第一掩码1、2、3、4、5和6,将第一报文的报文头分别与第一掩码1、2、3、4、5和6进行与运算,得到报文头字段集合1、2、3、4、5和6。
134.其中,可以事先预设至少一个报文头字段集合。且该集成流表中的每个匹配项均为预设的报文头字段集合。
135.可选的,对于每串第一掩码,将第一报文的报文头与该串第一掩码进行一次与运算,以得到第一报文头中的多个报文头字段;如果该多个报文头字段为预设的一个报文头字段集合时,则将该多个报文头字段组成报文头字段集合。如果该多个报文头字段与预设的至少一个报文头字段集合中的每个报文头字段集合均不同时,则丢弃该多个报文字段。
136.可选的,可以向用户提供一个控制界面,用户可以通过该控制界面事先预设至少一个报文头字段集合。
137.在本实施例中,只需要将第一报文的报文头与一串掩码进行一次平行化与运算,就可以得到第一报文头中所需要获取的多个第一报文头字段,从而可以提高了解析第一报文字段的效率。
138.例如,参见图2

6,将第一报文的报文头与图2

4中的一串第一掩码进行与运算,与运算之后,第一报文的报文头中被保留下来的多个第一报文头字段包括发送端地址、发送端端口号、接收端地址、接收端端口号、vxlan、协议、outer vlan、inner vlan和vport九个报文头字段,该九个报文头字段均为需要提取的第一报文头字段并将该九个报文头字段组成报文头字段集合。
139.其中,步骤202为平行化解析操作,参见图2

7,步骤202的平行化解析操作可以大体分为:获取到第一报文,识别第一报文的报文头,截取第一报文的报文头中的各报文头字段,将各报文头字段与一串掩码进行与运算得到报文头字段集合。
140.步骤203:从该集成流表中查找与该多个第一报文头字段相匹配的目标流表项,以确定第一报文对应的操作集。
141.第一报文对应的操作集中在所述确定所述第一报文对应的操作集以及所述转发操作之间,对所述第一报文执行的全部操作。
142.其中,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以相同时,由于在步骤202提取到一个包括该多个第一报文头字段的报文头字段集合,且该报文头字段集合与集成流表中的一个匹配项相同。所以在本步骤中,根据该多个第一报文头字段,从该集成流表中查找到与该多个第一报文头字段相匹配的目标流表项。
143.其中,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以不同时,则在步骤202中提取到n个报文头字段集合,又由于该n个报文头字段集合中存在一个报文头字段集合与集成流表中的一个匹配项相同。在本步骤中可以通过如下(1)至(4)的步骤从该集成流表中查找与该多个报文头字段集合中的某个报文头字段集合相匹配的目标流表项:
144.(1):从该n个报文头字段集合中选择一个报文头字段集合。
145.(2):根据选择的报文头字段集合,查找该集成流表,如果查找出与选择的报文头字段集合相匹配的目标流表项,则执行(3),如果没有查找出与选择的报文头字段集合相匹配的目标流表项,则执行(4)。
146.(3):将目标流表项包括的操作集确定为第一报文对应的操作集,结束返回。
147.(4):从该n个报文头字段集合中选择一个未选择过的报文头字段集合,返回执行(2)。
148.由于该n个报文头字段集合中存在的一个报文头字段集合与集成流表中的一个匹配项相同,所以根据某个报文头字段集合,通过上述(1)至(4)的过程必会查找出第一报文对应的操作集。
149.可选的,从该集成流表项中查找出第一报文对应的操作集中包括多个操作的参数。
150.其中,需要说明的是:该多个操作中包括转发操作,以及在该转发操作之前对第一报文执行的全部操作。
151.可选的,该集成流表中的每个流表项中还可以包括到期时间,该到期时间用于指示从集成流表中删除该流表项的时刻,在本实施例中与该多个第一报文头字段相匹配的目标流表项中包括第一到期时间。
152.可选的,从集成流表中查找出与该多个第一报文头字段相匹配的目标流表项,以确定第一报文对应的操作集合,可以将目标流表项中的第一到期时间更新为第二到期时间,第二到期时间晚于第一到期时间。
153.可以通过增加第一到期时间,以得到第二到期时间。
154.可选的,增加第一到期时间,得到第二到期时间的实现方式有多种。例如,在本实施例中列举如下一种实现方式,具体为:
155.目标流表项中还包括第二到期时间与第一到期时间之间的时间差,可以将第一到期时间增加该时间差,得到第二到期时间。
156.可选的,该集成流表中的每个流表项中包括的时间差可以相同,也可以不同。
157.再例如,在本实施例中还列举了通过如下方式得到第二到期时间,在该种方式中,可以预设一个时间差,该集成流表中的每个流表项可以不包括用于增加到期时间的时间差,这样可以将第一到期时间增加预设的该时间差得到第二到期时间。
158.可选的,在该集成流表中的多个流表项,该多个流表项位于该集成流表的多个行,集成流表中的多个行中的每行对应一个到期时间,目标流表项位于对应的第一到期时间的行;
159.可选的,从集成流表中查找出与该多个第一报文头字段相匹配的目标流表项,以确定第一报文对应的操作集后,可以将目标流表项,从第一到期时间对应的行移动到第二到期时间对应的行。
160.可选的,集成流表中的每个到期时间可以对应一行,每行中可以包括至少一个流表项。也就是说第二到期时间对应一行,这样到期时间为第二到期时间的每个流表项可以位于第二到期时间对应的一行中。或者,
161.可选的,集成流表中的每个到期时间可以对应的至少一行,每行中可以包括一个流表项。也就是说第二到期时间对应至少一行,第二到期时间对应的每行包括一个到期时间为第二到期时间的流表项。
162.可选的,该集成流表中的每行中的流表项可以是用于标识该流表项的索引,用于标识该流表项的索引可以为指向该流表项的指针等。所以上述移动操作可以为:
163.将目标流表项的索引,从第一到期时间对应的行移动到第二到期时间对应的行中。
164.可选的,在集成流表中的每个到期时间可以对应一行,每行中可以包括至少一个流表项的情况下,可以使用链表来实现集成流表中行,每行为一个链表。使用该链表中的一个结点存储该行中的到期时间,使用该链表中的其他结点存储该行中的流表项的索引。
165.可选的,可以使用链表中的第一个结点存储该行中的到期时间,使用该链表中的其他节点存储该行中的流表项的索引。
166.例如,参见图2

8,假设该集成流表中包括k行,分别第1行、第2行
……
第k行,第1行包括到期时间t1和四个流表项的索引,该四个流表项的索引,分别为c0、c1、c2和c3。第1行对应的链表的第一个结点用于存储到期时间t1,其他结点用于存储c0、c1、c2和c3。对于第2行、第3行
……
第k行的含义,可以参照对第1行的含义的说明,就不再分别一一说明。
167.可选的,可以从该集成流表中,获取当前时间对应的行,并从该对应关系中删除该行中的流表项。这样不需要实时检查集成流表中的每个流表项中的到期时间,从而节省了运算资源。
168.在删除时,可以根据该行中的流表项的索引,从集成流表中查找出对应的流表项,提取该流表项中的到期时间,在比较出该到期时间与当前时间相同时,从集成流表中删除该流表项。
169.其中,链表的数目往往是有限的,参见图2

9,假设存在m个链表,m为大于1的整数,该集成流表中最多包括m

1行,且第i个链表中的到期时间t
i
晚于第i

1个链表中的到期时
间t
i
‑1,i=2、3
……
m

1。第m

1个链表中的到期时间为t
m
‑1,第m个链表用于存储到期时间大于t
m
‑1的流表项的索引。
170.所以,将目标流表项,从第一到期时间对应的行移动到第二到期时间对应的行的操作,可以为:
171.如果第二到期时间不晚于到期时间t
m
‑1,将目标流表项的索引,从存储第一到期时间的链表中,移动到存储第二到期时间的链表中。如果第二到期时间晚于到期时间t
m
‑1,将目标流表项的索引,移动到第m个链路中。
172.可选的,如果当前时间到达到期时间t
m
‑1时,可以清空第1个链表至第m

1个链表,再在第1个链表至第m

1个链表中每个链表中存储新到期时间,每个新到期时间均晚于到期时间t
m
‑1,且第i个链表中的新到期时间晚于第i

1个链表中的新到期时间。
173.然后,对于第m个链表中的每个流表项,提取该流表项中的到期时间,将该流表项的索引从第m个链表中移动到存储该到期时间对应的链表中。
174.其中,参见图2

10,上述对该集成流表中的到期时间进行处理的操作,可以概括为:监听该集成流表;当监听到目标流表项被查询到时,检查该目标流表项中的第一到期时间,在检查到第一到期时间变更为第二到期时间时,移动该目标流表项,即将该目标流表项从第一到期时间对应的行移动到第二到期时间对应的行;继续监听该集成流表中的到期时间,即监听该集成流表中是否存在与当前时间相等的到期时间;删除第一映射关系,即在监听出与当前时间相等的到期时间时,将该到期时间对应的行中的流表项从该集成流表中删除。
175.步骤204:对第一报文执行该操作集中的全部操作以得到与该第一报文对应的第二报文,以及转发第二报文。
176.需要说明的是,该全部操作包括多个操作的情况下,可以并行对第一报文执行,也可以串行,在串行执行时,虽然先执行的操作改变了第一报文的字段或者改变了第一报文的某个属性,也就是说第一报文有变化,后执行的操作在此基础上,对变化后的第一报文执行,本技术中,统称这些操作是对第一报文执行的。这也是为什么,步骤204中,描述的是转发第二报文,而实质上,该方法流程的目的是转发第一报文中的信息,步骤204中的转发动作,对应的就是第一报文对应的操作集中的转发操作。
177.可选的,可以根据每个其他操作的参数对第一报文执行该其他操作,执行全部其他操后得到第二报文。
178.例如,如果该其他操作为在报文头中添加vlan的操作,则在第一报文的报文头中添加vlan的字段,得到第二字段,该字段至少携带该其他操作的参数包括的vlan的字段内容。
179.如果该其他操作为在报文头中添加vxlan的操作,则在第一报文的报文头中添加vxlan的字段,得到第二字段,该字段至少携带该其他操作的参数包括的vxlan的字段内容。
180.如果该其他操作为在报文头中删除vlan的操作,则根据该其他操作的参数包括的vlan的字段标识,从第一报文中删除vlan的字段,以得到第二报文。
181.如果该其他操作为在报文头中删除vxlan的操作,则根据该其他操作的参数包括的vxlan的字段标识。从第一报文中删除vxlan的字段,以得到第二报文。
182.如果该其他操作为修改报文头中的发送端mac的操作,则将第一报文中的发送端
mac中的字段内容替换为该其他操作的参数包括的发送端的mac地址,以得到第二报文。
183.如果该其他操作为修改报文头中的接收端mac的操作,则将第一报文中的接收端mac中的字段内容替换为该其他操作的参数包括的接收端的mac地址,以得到第二报文。
184.如果该其他操作为修改报文头中的发送端ip的操作,则将第一报文中的发送端ip中的字段内容替换为该其他操作的参数包括的发送端的ip地址,以得到第二报文。
185.如果该其他操作为修改报文头中的接收端ip的操作,则将第一报文中的接收端ip中的字段内容替换为该其他操作的参数包括的接收端的ip地址,以得到第二报文。
186.如果该其他操作为修改报文头中的发送端端口号的操作,则将第一报文中的发送端端口号中的字段内容替换为该其他操作的参数包括的发送端的端口号,以得到第二报文。
187.如果该其他操作为修改报文头中的接收端端口号的操作,则将第一报文中的接收端端口号中的字段内容替换为该其他操作的参数包括的接收端的端口号,以得到第二报文。
188.如果该其他操作为设定报文的优先级操作,则将第一报文中的优先级字段中的字段内容替换为该其他操作的参数包括的优先级,以得到第二报文。
189.如果该其他操作为设定连线跟踪操作,则根据该其他操作的参数包括的指示信息,获取第一报文的标识信息和状态信息,将第一报文的标识信息和状态信息对应保存的标识信息与状态信息的对应关系中。
190.在本技术实施例中,由于集成流表中的目标流表项中包括处理第一报文的全部操作,这样根据第一报文的报文头中的多个第一报文头字段,查找一次该集成流表就可以查找出第一报文对应的全部操作,从而提高对第一报文进行处理和转发的效率。另外,在解析第一报文的报文头得到该多个第一报文头字段时,使用掩码与第一报文的报文头进行与运算得到该多个第一报文头字段,相比目前一个一个解析第一报文的报文头中的各报文头字段,可以提高解析的效率,进一步提高对第一报文进行处理和转发的效率。
191.参见图3

1,本技术实施例提供了一种基于集成流表转发报文的方法,该方法中与前文所述方法对应的名词、步骤、实现方式以及技术效果,请参考前文的描述,为了行文简洁,下文不再一一描述。该方法的执行主体可以为图1

1或图1

2所示实施例中的第一设备,包括:
192.步骤301:获取第三报文。
193.第三报文可以是来自虚拟机的报文或者可以是来自除第一设备外的其他物理设备发送的报文。其中,该虚拟机可以运行在第一设备中,或者该虚拟机可以运行在除第一设备外的其他物理设备上。
194.例如,当第一设备可以为网络中的路由器或交换机等网元时,第一设备可以接收来自终端、服务器或网络中的其他网元发送的第三报文。或者,
195.当第一设备可以为服务器时,第一设备可以接收来自终端或其他服务器等设备发送的第三报文,或第一设备中可以包括至少一个虚拟机,第一设备可以获取来自某个虚拟机的第三报文。或者,
196.当第一设备可以为终端时,第一设备可以接收来自其他终端或服务器等设备发送的第三报文,.或第一设备中包括至少一个虚拟机,第一设备可以获取来自某个虚拟机的第
三报文。
197.关于该集成流表中的内容可以参见图2

1所示的实施例中的步骤201中关于该集成流表的描述,在此不再详细说明。
198.可选的,在获取到第三报文后,还可以解析出第三报文的协议,如果该协议是预设协议集合中的预设协议,则执行如下步骤302的操作,如果不是,则执行如下步骤304的操作,即直接通过ovs转发第三报文。这样可以只对属于预设协议的报文从该集成流表中查找该报文对应的操作。
199.预设协议的报文通常属于流量较大的报文流,因此在接收属于预设协议的报文时,可以通过如下步骤302的操作加快对该报文进行处理和转发。
200.步骤302:从第三报文的报文头中提取多个第二报文头字段。
201.其中,提取的多个第二报文头字段与集成流表中的一个流表项包括的多个报文头字段具有相同的种类。
202.解析第二报文的报文头中的多个第二报文头字段的详细内容可以参见图2

1所示的实施例中的步骤202中关于解析多个第一报文头字段的描述,在此不再详细说明。
203.可选的,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类相同时,从第三报文的报文头中提取出一个包括多个第一报文头字段的报文头字段集合。
204.可选的,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以不同时,从第三报文的报文头中提取出n个包括多个第一报文头字段的报文头字段集合,n为大于1的整数。
205.步骤303:根据该多个第二报文头字段,查找该集成流表,以确定该集成流表中不包括与该多个第二报文头字段相匹配的目标流表项的情况,执行步骤304。
206.其中,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以相同时,则在步骤302提取到一个包括该多个第二报文头字段的报文头字段集合,所以在本步骤中,根据该多个第二报文头字段,查找该集成流表。
207.其中,当集成流表中的每个流表项中的匹配项包括的报文头字段的种类可以不同时,则在步骤302中提取到n个报文头字段集合,在本步骤中可以通过如下(1)至(5)的步骤查找该集成流表:
208.(1):从该n个报文头集合中选择一个报文头字段集合。
209.(2):根据选择的报文头字段集合,查找该集成流表,如果查找出与选择的报文头字段集合相匹配的目标流表项,则执行(3),如果没有查找出与选择的报文头字段集合相匹配的目标流表项,则执行(4)。
210.(3):将目标流表项包括的操作集确定为第三报文对应的操作集,结束返回。
211.(4):判断该n个报文头字段集合中是否还存在未被选择的报文头字段集合,如果不存在,则结束返回,如果存在,则执行(5)。
212.(5):从该n个报文头字段集合中选择一个未选择过的报文头字段集合,返回执行(2)。
213.由于该集成流表中不包括该n个报文头字段集合,所以根据每个报文头字段集合,通过上述(1)至(5)的过程在该集成流表中均没有查找出第三报文对应的操作集。
214.步骤304:从ovs中获取第三报文对应的至少一个操作和第三报文的报文头中的多
个第二报文头字段,对第三报文执行该至少一个操作。
215.在确定该集成流表中不包括第三报文对应的操作时,ovs可以解析第三报文的报文头中的多个第二报文头字段并根据该多个第二报文头字段确定第三报文对应的至少一个操作。
216.在本步骤中,可以获取该多个第二报文头字段和该至少一个操作,该至少一个操作包括转发操作,对第三报文执行该至少一个操作。
217.可选的,该至少一个操作还可以包括在该转发操作之前执行的至少一个其他操作,可以对第三报文执行该至少一个其他操作,得到第四报文,然后转发第四报文。
218.参见图3

2,ovs包括完整匹配快存(exact match cache,emc)表和数据流表。ovs中还可以包括通信协议,该通信协议可以为openflow通讯协议。
219.可选的,数据流表包括至少一个哈希表,数据流表中存储至少一个报文对应的操作,对于每个报文,该报文对应的至少一个操作存储在数据流表中的不同哈希表中,在该哈希表中可以存储有包括该报文的报文头中的多个报文头字段和该报文对应的一个操作的映射关系。
220.emc表为一张哈希表,emc表中存储有数据流表中的部分报文对应的操作,对于该部分报文中的每个报文,在emc表中存储有包括该报文的报文头中的多个报文头字段和该报文对应的一个操作的映射关系。由于每条映射关系中只包括一个操作,所以在emc表中存储有该报文对应的至少一条映射关系,该报文对应的至少一个操作存储在该至少一条映射关系。
221.在本步骤中,在确定该集成流表中不包括第三报文对应的操作集时,可以向ovs输入第三报文。参见图3

3,ovs接收该第三报文,提取第三报文的报文头中的多个第二报文头字段,根据该多个第二报文头字段查询emc表,如果从emc表中查询到第三报文对应的至少一个操作,根据该至少一个操作处理第三报文,以及可以通过网络适配器(network interface card,nic)转发处理后得到的第四报文。
222.可以理解的是,由于第三报文不在本技术描述的集成流表中,通过ovs流表对第三报文的这一部分处理过程和现有技术的方案类似,下面,就以第三报文由ovs流表处理的过程,来进一步解释本技术技术方案的效果。由于在emc中每条映射关系中只包括一个操作,所以第三报文对应的至少一个操作分布在不同映射关系。假设第三报文对应五个操作,则该五个操作分布在五条映射关系中,该五条映射关系中的每条映射关系包括该多个第二报文头字段和第三报文对应的一个操作。这样在根据该多个第二报文头字段查询emc表时,当查询到包括该多个第二报文头字段的第一条映射关系后,继续根据该多个第二报文头字段查询emc表,查询包括该多个第二报文头字段的第二条映射关系;再继续根据该多个第二报文头字段查询emc表,查询包括该多个第二报文头字段的第三条映射关系;按上述方式,当查询包括该多个第二报文头字段的第五条映射关系后,如果emc表还有未查询的映射关系,则继续查询,直至查询完整个emc表,才确定将第三报文对应的所有操作全部被查询出来。
223.然而,参见图2

1所示的实施例,可知,第一报文携带有需要被转发的信息,第一报文是本技术的基于集成流表转发报文的方法所要处理的报文。在根据第一报文的多个第一报文头字段,查询集成流表时,当查询到与该多个第一报文头字段相匹配的目标流表项时,由于该目标流表项的操作集中包括转发操作和全部操作,其中,所谓的全部操作就是,所述
确定所述第一报文对应的操作集以及所述转发操作之间,对所述第一报文中的字段执行操作,对所述第一报文执行的全部操作,也就是说,不需要跳转到其他流表中查找转发第一报文的信息所需的操作。所以当查询到目标流表项就获取到对第一报文携带的信息进行转发的全部操作,不需要继续查询集成流表中剩下未被查询的流表项,也就是说,对于能够从集成流表中查询到目标流表项的报文,只需要使用集成流表这一张表,就可以支持对这个报文的转发,从而提高了获取对报文处理的操作的效率。
224.如果从emc表中没有查询到该多个第二报文头字段的至少一个操作,则根据该多个第二报文头字段查询数据流表中的哈希表,如果从数据流表中查询到第三报文对应的至少一个操作,根据该至少一个操作处理第三报文,可以通过nic转发处理后得到的第四报文。如果从数据流表中没有查询到第三报文对应的至少一个操作,则根据该通信协议与服务器通信,以从服务器中获取第三报文对应的至少一个操作,根据该至少一个操作处理第三报文,可以通过nic转发处理后得到的第四报文。
225.由于第三报文对应的至少一个操作存储在数据流表中的不同哈希表中,假设第三报文对应五个操作,则该五个操作分布在五个哈希表中。在第一个操作所在的第一哈希表中包括该多个第二报文头字段、该第一个操作和第二哈希表的地址的映射关系,第二哈希表是第二个操作所在的哈希表;在第二哈希表中包括该多个第二报文头字段、第二个操作和第三哈希表的地址的映射关系,第三哈希表是第三个操作所在的哈希表;在第三哈希表中包括该多个第二报文头字段、第三个操作和第四哈希表的地址的映射关系,第四哈希表是第四个操作所在的哈希表;在第四哈希表中包括该多个第二报文头字段、第四个操作和第五哈希表的地址的映射关系,第五哈希表是第五个操作所在的哈希表;在第五哈希表中包括该多个第二报文头字段和第五个操作的映射关系。
226.这样在根据该多个第二报文头字段查询数据流表中的哈希表,首先查询数据流表中的第一个哈希表,在查询完第一个哈希表后,还没有查询到包括该多个第二报文头字段的映射关系,则查询数据流表中的第二个哈希表,直至查询到第一哈希表时,根据该多个第二报文头字段从第一哈希表中查询包括该多个第二报文头字段的第一条映射关系,该第一条映射关系包括该多个第二报文头字段、第一个操作和第二哈希表的地址。根据第二哈希表的地址跳转到第二哈希表中,根据该多个第二报文头字段,从第二哈希表中查询包括该多个第二报文头字段的第二条映射关系,该第二条映射关系包括该多个第二报文头字段、第二个操作和第三哈希表的地址。按上述方式,直到从第五哈希表中查询到包括该多个第二报文头字段的第五条映射关系,该第五条映射关系包括该多个第二报文头字段和第五个操作,由于第五条映射关系中没有包括哈希表的地址,从而停止查询。
227.然而,参见图2

1所示的实施例,在根据第一报文的多个第一报文头字段,查询集成流表时,当查询到与该多个第一报文头字段相匹配的目标流表项时,由于该目标流表项的操作集中包括转发操作和对第一报文处理的全部操作,所以当查询到目标流表项就获取到对第一报文进行处理的全部操作,不会像查询数据流表那样需要在不同的哈希表之间跳转以及查询不同的哈希表,从而提高了获取对报文处理的操作的效率。
228.如果从数据流表中没有查询到第三报文对应的至少一个操作,则根据该通信协议与服务器通信,与服务器通信获取该至少一个操作所需要的时间远大于从数据流表中获取操作的时间,所以从服务器中获取操作的时间更远大于图2

1所示实施例中从集成流表中
获取操作的时间,所以从集成流表中获取操作,并对报文进行处理的效率得到很大的提高。
229.步骤305:在该集成流表中生成包括该多个第二报文头字段和该至少一个操作的流表项。
230.可选的,可以为生成的流表项设置到期时间并存储在该流表项中,在该集成流表中可以将生成的流表项添加到设置的到期时间对应的行中。
231.可选的,将生成的流表项添加到设置的到期时间对应的行中的操作,可以为:
232.判断该集成流表中是否存在包括设置的到期时间的行,如果存在,将该生成的流表项添加到该行中;如果不存在,则在该集成流表中生成包括设置的到期时间和生成的流表项的行。
233.参见图3

4,对于图2

1所述的实施例和图3

1所示的实施例,该两个实施例的流程可以概括为以下操作:获取报文,获取该报文的多个报文头字段,根据该多个报文头字段查找集成流表;如果查找到与该多个报文头字段相匹配的目标流表项,根据该目标流表项包括的操作集处理该报文;如果没有查找到与该多个报文头字段相匹配的目标流表项,从ovs中获取至少一个操作和多个报文头字段,根据该至少一个操作处理该报文,以及,在集成流表中生成包括获取的该多个报文头字段和该至少一个操作的流表项。
234.在本技术实施例中,当查找出集成流表中没有第三报文对应的操作集时,从ovs中获取第三报文对应的至少一个操作,并在该集成流表中生成包括第三报文中的多个第二报文头字段和该至少一个操作的流表项,这样当下一次获取到第三报文时,就可以直接从该集成流表中获取第三报文对应的操作集,以提高下一次对第三报文进行处理和转发的效率。
235.参见图4

1,本技术实施例提供了一种基于集成流表转发报文的装置400,所述装置400可用于实现图2

1或图3

1所示的实施例,还可以实现图1

1或图1

2所示实施例中的第一设备的功能。
236.其中,集成流表包括多个流表项,该多个流表项中的每个流表项包括匹配项与操作集之间的映射关系,该匹配项包含多个报文头字段,该操作集包括转发操作,该装置400包括:
237.处理模块401,用于获取第一报文;从第一报文的报文头中提取多个第一报文头字段,其中,该多个第一报文头字段与该多个流表项中的一个流表项包含的多个报文头字段具有相同的种类;从该集成流表中查找与该多个第一报文头字段相匹配的目标流表项,以确定第一报文对应的操作集,第一报文对应的操作集中还包括包括在所述确定所述第一报文对应的操作集以及所述转发操作之间,对所述第一报文执行的全部操作;对所述第一报文执行该操作集中的全部操作,以得到第一报文对应的第二报文;
238.收发模块402,用于转发该第二报文。
239.收发模块402可以包括物理机的通信接口或者网卡的通信接口,也可以是用于调用物理机的通信接口或者网卡的通信接口的代码。通信接口包括天线,端口等用于实现节点间通信的至少一种器件或者单元。
240.可选的,本实施例的装置400可以通过物理机来实现或通过物理机中的网卡来实现。
241.当通过物理机来实现时,该装置400的代码可以存储于物理机的内存中,通过物理
机的处理器调用内存中的该装置400的代码,从而调用物理机的通信接口实现转发报文的功能。
242.当通过网卡来实现时,该装置400的代码可以存储于网卡的存储介质中,通过网卡的处理电路运行存储介质中的该装置400的代码,以从而调用网卡的通信接口实现转发报文的功能。
243.可选的,所述全部操作为以下操作中的任一个或多个的组合:在报文头中添加字段的操作,在报文头中删除字段的操作,修改报文头中的字段的内容的操作,设定报文的优先级操作和设定连线跟踪的操作。
244.可选的,在从第一报文的报文头中提取多个第一报文头字段的方面,处理模块401,用于将第一报文的报文头与一串掩码进行与运算,以得到第一报文中的该多个第一报文头字段,该掩码指示该多个第一报文头字段在第一报文的报文头中的位置。
245.可选的,处理模块401,还用于:生成第一掩码,其中,第一掩码与第一报文的报文头具有相同的字节长度,第一掩码中非0的比特位对应于该目标流表项中包括的多个报文头字段。
246.可选的,该多个流表项位于该集成流表的多个行,集成流表的多个行中的每行对应一个到期时间,该到期时间用于指示从该集成流表中删除该到期时间对应行中的流表项的时刻,目标流表项位于对应第一到期时间的行。
247.可选的,处理模块401,还用于:
248.从集成流表中查找与该多个第一报文头字段相匹配的目标流表项,以确定第一报文对应的操作集后,将该目标流表项,从第一到期时间对应的行移动到第二到期时间对应的行,第二到期时间晚于第一到期时间。
249.可选的,处理模块401,用于将第一到期时间更新为第二到期时间。
250.可选的,目标流表项中,还包括第二到期时间与第一到期时间之间的时间差,其中,该时间差与目标流表项一一对应的,或者,该集成流表中的至少一条其他目标流表项也使用与该时间差具有相同数值的时间差更改各自对应的到期时间。
251.可选的,处理模块401,还用于:
252.获取第三报文;
253.从第三报文的报文头中提取多个第二报文头字段,其中,该多个第二报文头字段与该多个流表项中的一个流表项包含的多个报文头字段具有相同的种类;
254.在集成流表中不包括与该多个第二报文头字段相匹配的目标流表项的情况下,从ovs中获取第三报文对应的至少一个操作,该至少一个操作包括转发操作;
255.对第三报文执行该至少一个操作。
256.可选的,处理模块401,还用于:
257.从ovs中获取第三报文的报文头中的多个第二报文头字段,在该集成流表中存储包括获取的该多个第二报文头字段和至少一个操作的流表项。
258.可选的,报文头中的字段的种类为该字段对应的信息的类型或为该字段在第一报文的报文头的位置。
259.可选的,需要说明的是:该装置400可以集成在ovs中,也可以不集成在该ovs中。在不集成在该ovs中时,该装置400中的处理模块401可以对该ovs进行监控,并在监控到ovs解
析第三报文的报文头中的一个第二目标字段集合并产生第三报文对应的至少一个操作时,获取该一个第二目标字段集合和该至少一个操作。
260.参见图4

2或4

3,图4

2表示该装置400没有与ovs集成在一起,该装置400可以与ovs通信;图4

3表示该装置400与ovs集成在一起,ovs可以作为该装置400的一个模块。
261.为了便于理解,下面举例描述处理模块401的一种实现方式。处理模块401可以包括控制界面、老化单元、集成流表、监控单元、解析单元和处理单元。以及,应当理解,该实现方式仅为说明,而不是对本技术的方法和装置的实现的限制。处理模块401的具体实现和组成,本技术不做限制。
262.解析单元用于解析报文的报文头的多个报文头字段。该报文可以为上述第一报文或第三报文。
263.可选的,解析单元用于将该报文的报文头与一串掩码进行与运算,以得到该报文头中的多个报文头字段;如果该多个报文头字段为预设的一个报文头字段集合时,则将该多个报文头字段缓存报文头字段集合。
264.其中,解析单元可以将该报文的报文头与不同的多串掩码进行与运算,以得到多个报文头字段集合。
265.预设的报文头字段集合可以是用户事先通过控制界面设置的。
266.处理单元用于根据解析单元解析的报文字段集合中的多个报文头字段查询该集成流表,如果查询到与该多个报文头字段相匹配的目标流表项,则根据该目标流表项中包括的操作集处理该报文并通过收发模块402转发处理后的该报文。
267.可选的,在从该集成流表中查询到目标流表项时,处理单元还可以将该目标流表项中的第一到期时间变更为第二到期时间,第二到期时间晚于第一到期时间。
268.可选的,该目标流表项中可以包括一个时间差,该时间差可以由用户通过该控制界面设置在该目标流表项中。其中,该集成流表中的每条流表项中设置的时间差可以相同,也可以不同。这样处理单元可以从该目标流表项中读取该时间差,将第一到期时间增加该时间差得到第二到期时间,然后将该目标流表项中的第一到期时间变更为第二到期时间。
269.处理单元还用于在没有查询到该报文对应的目标流表项时,将该报文输入到ovs,通过ovs处理该报文。
270.监控单元用于在处理单元没有查询到该报文对应的目标流表项时,对ovs进行监控,并从ovs中获取该报文的报文头中的多个报文头字段和该报文对应的至少一个操作,在该集成流表中存储包括该多个报文头字段和该至少一个操作的流表项。
271.可选的,老化单元可以检查该集成流表,当检查到该集成流表中的某个流表项的到期时间等于当前时间时,删除该流表项。
272.可选的,在该装置400与ovs不集成在一起时,ovs可以通过物体机或物体机的网卡来实现。可选的,该装置400和ovs可以存储在同一存储器,也可以存储在不同存储器中。
273.当该装置400的代码和ovs的代码可以存储在同一存储器时,当通过物理机来实现时,该装置400的代码和ovs的代码可以存储于物理机的内存中,通过物理机的处理器调用内存中的该装置400的代码并运行该装置400的代码实现转发报文的功能;或者,通过物理机的处理器调用内存中的该装置400的代码和ovs的代码,并运行该装置400的代码和ovs的代码实现转发报文的功能。当通过网卡来实现时,该装置400的代码和ovs的代码可以存储
于网卡的存储介质中,通过网卡的处理电路调用存储介质中的该装置400的代码并运行该装置400的代码实现转发报文的功能;或者,通过网卡的处理电路调用存储介质中的该装置400的代码和ovs的代码,并运行该装置400的代码和ovs的代码实现转发报文的功能。
274.当该装置400的代码和ovs的代码可以存储在不同存储器时,该装置400的代码可以存储在物理机的内存中,ovs的代码可以存储在网卡的存储介质中,物理机的处理器调用内存中的该装置400的代码,并运行该装置400的代码获取对该报文进行处理的全部操作,以及根据该全部操作来处理并转发该报文。如果通过该装置400的代码没有获取到对该报文的全部操作,则控制网卡的处理电路调用存储介质中的ovs的代码实现转发该报文。或者,
275.该装置400的代码可以存储在网卡的存储介质中,ovs的代码可以存储在物理机的内存中,网卡的处理电路调用存储介质中的该装置400的代码,并运行该装置400的代码获取对该报文进行处理的全部操作,以及根据该全部操作来处理并转发该报文。如果通过该装置400的代码没有获取到对该报文的全部操作,则由物理机的处理器调用内存中的ovs的代码实现转发该报文。
276.在本技术实施例中,由于集成流表中的第一报文对应的目标流表项中包括对第一报文进行处理的全部操作,这样处理模块根据第一报文的报文头中的多个报文头字段,查找一次该集成流表就可以查找出第一报文对应的全部操作,从而提高处理模块对第一报文进行处理和转发的效率。
277.参见图5,图5所示为本技术实施例提供的一种基于集成流表转发报文的装置500示意图。该装置500包括处理电路501、存储介质502和通信接口503,处理电路501分别与存储介质502和通信接口503连接。
278.该装置500是一种硬件结构的装置,可以用于实现图4

1所述的装置中的功能模块。例如,本领域技术人员可以想到图4

1所示的装置400中的处理模块401可以通过该处理电路501调用存储介质502中的代码来实现,图4

1所示的装置400中的收发模块402可以通过该通信接口503,或者通过处理电路501调用存储介质502中用于调用通信接口503的代码来实现。
279.可选的,该装置500可以包括处理器和内存的物理机,即该处理电路501可以由一个或多个处理器组成,该存储介质502可以为该内存。或者,
280.可选的,该装置500可以为物理机的网卡,该处理电路501和存储介质502分别为网卡中的物理电路和存储介质。
281.该装置500还可用于实现如图1

1至1

2所述的任一实施例中第一设备的功能,或者实现图2

1和图3

1所示的任一实施例。
282.可选的,上述处理电路501可以是通用中央处理器(central processing unit,cpu),微处理器,特定应用集成电路(application

specific integrated circuit,asic),或一个或多个用于控制本技术方案程序执行的集成电路。
283.上述通信接口503,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,ran),无线局域网(wireless local area networks,wlan)等。
284.上述存储介质502可以是只读存储器(read

only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)或者可
存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read

only memory,eeprom)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
285.其中,存储介质502用于存储执行本技术方案的应用程序代码,并由处理电路501来控制执行。处理电路501用于执行存储介质502中存储的应用程序代码,从而实现本专利方法中的功能。
286.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
287.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
288.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜