转发报文的方法、装置、交换机、设备及存储介质与流程

文档序号:17320948发布日期:2019-04-05 21:32阅读:183来源:国知局
转发报文的方法、装置、交换机、设备及存储介质与流程

本发明涉及数字信息传输技术领域,特别是涉及转发报文的方法、装置、交换机、设备及存储介质。



背景技术:

vswitch(virtualswitch,虚拟交换机)为公有云环境下运行在计算节点宿主机上的虚拟设备,用于通过软件的方式实现物理交换机在二层、三层网络的功能。vswitch主要负责二层基于mac(mediaaccesscontrol)地址和三层基于ip地址(internetprotocoladdress,互联网协议地址)的报文转发,同时具备安全组、acl(accesscontrollist,访问控制列表)等功能。

现有的技术中,在利用虚拟交换机转发报文时,当报文发送端与报文接收端在同一子网时,需要查询二层mac地址表及查询安全组规则;当报文发送端与报文接收端不在同一子网时,需要查询三层路由表、acl、邻居表、安全组等。为了加快报文的转发速度,在首次转发报文后,即在报文发送端与报文接收端已经建立过通信连接之后,会将该与报文对应的连接信息保存到一张快捷表中,当报文发送端与报文接收端再次通信时,直接查询快捷表中的连接信息,即可实现报文的快速转发。

但是现有的利用虚拟交换机转发报文的技术,在与连接信息对应的设备的连接状态发生变更或控制平面配置变更时,会导致连接信息失效,按照过期的连接信息转发报文会造成报文发送错误。



技术实现要素:

本发明实施例的目的在于提供一种转发报文的方法、装置、交换机、设备及存储介质,以实现减少报文转发错误。具体技术方案如下:

第一方面,本发明实施例提供了一种转发报文的方法,应用于交换机,该方法包括:

获取待转发报文;

查询第一数据表中是否包含上述待转发报文的连接缓存信息;

若第一数据表中包含上述待转发报文的连接缓存信息,获取第一数据表中上述连接缓存信息的第一标识,其中,第一标识为连接缓存信息确立时,记录的与上述连接缓存信息对应的连接标识;

获取第二数据表中与上述连接缓存信息对应的连接信息,确定上述连接缓存信息的第二标识,其中,第二标识为连接缓存信息当前的连接标识,且当连接缓存信息的连接信息发生变化时,连接信息发生变化的连接缓存信息当前的连接标识,按照预设变更规则相应改变;

若上述连接缓存信息的第一标识和第二标识相同,按照上述连接缓存信息转发上述待转发报文。

可选的,本发明实施例的转发报文的转发报文的方法还可以包括:

获取由配置更新的设备发送的连接标识,其中,配置更新的设备为连接信息发生变化的报文收发设备;

根据上述配置更新的设备发送的连接标识,相应的更新第二数据表中,与上述配置更新的设备发送的连接标识对应的连接信息。

可选的,在获取第二数据表中与上述连接缓存信息对应的连接信息,确定上述连接缓存信息的第二标识之后,本发明实施例的转发报文的方法还可以包括:

若上述连接缓存信息的第一标识和第二标识不同,删除第一数据表中上述待转发报文的连接缓存信息;

获取上述待转发报文的目的地址,根据上述目的地址确定上述待转发报文的传输路径,其中,目的地址为待转发报文的目标端的地址;

将上述待转发报文的传输路径作为当前的连接缓存信息;

将上述连接缓存信息的第二标识,作为当前的连接缓存信息的第一标识,将当前的连接缓存信息的第一标识与当前的连接缓存信息记录在第一数据表中;

按照上述待转发报文的传输路径,发送上述待转发报文。

可选的,获取上述待转发报文的目的地址,根据上述目的地址确定上述待转发报文的传输路径,可以包括:

若上述目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定上述待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收上述待转发报文的设备的地址;

根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径。

可选的,获取上述待转发报文的目的地址,根据上述目的地址确定上述待转发报文的传输路径,可以包括:

若上述目的地址与当前交换机所在的地址不在同一网段,查询访问控制列表;

在上述访问控制列表允许转发上述待转发报文时,查询路由表及邻居表,确定上述待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收上述待转发报文的设备的地址;

根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径。

可选的,获取第一数据表中上述连接缓存信息的第一标识,可以包括:

在第一数据表中查询上述待转发报文的五元组对应的key,作为上述待转发报文的key;

获取第一数据表中hash桶的上述待转发报文的key偏移处对应的链表头指针;

查询上述链表头指针链接的链表,获取上述连接缓存信息及上述连接缓存信息的第一标识。

可选的,在查询第一数据表中是否包含上述待转发报文的连接缓存信息之后,本发明实施例的转发报文的方法还可以包括:

若上述第一数据表中不包含上述待转发报文的连接缓存信息,获取上述待转发报文的目的地址,其中,上述目的地址为上述待转发报文的目标端的地址;

若上述目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定上述待转发报文的路径信息,其中,上述路径信息包括转发地址,上述转发地址为下一跳接收上述待转发报文的设备的地址;

根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径;

将上述待转发报文的传输路径作为当前的连接缓存信息;

获取上述第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在上述第一数据表中;

按照上述待转发报文的传输路径,发送上述待转发报文。

可选的,在查询第一数据表中是否包含上述待转发报文的连接缓存信息之后,本发明实施例的转发报文的方法还可以包括:

若上述第一数据表中不包含上述待转发报文的连接缓存信息,获取上述待转发报文的目的地址,其中,上述目的地址为上述待转发报文的目标端的地址;

若上述目的地址与当前虚拟机所在的地址不在同一网段,查询访问控制列表;

在上述访问控制列表允许转发上述待转发报文时,查询路由表及邻居表,确定上述待转发报文的路径信息,其中,上述路径信息包括转发地址,上述转发地址为下一跳接收上述待转发报文的设备的地址;

根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径。

将上述待转发报文的传输路径作为当前的连接缓存信息;

获取上述第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在上述第一数据表中;

按照上述待转发报文的传输路径,发送上述待转发报文。

第二方面,本发明实施例提供了一种转发报文的方法,应用于报文收发设备,该方法包括:

监听与当前网络的连接信息,在与当前网络的连接信息发生变化时按照预设更新规则更新连接标识;

向交换机发送更新后的连接标识,以使上述交换机根据上述连接标识更新第二数据表。

第三方面,本发明实施例提供了一种转发报文的装置,应用于交换机,上述装换包括:

报文获取模块,用于获取待转发报文;

查询模块,用于查询第一数据表中是否包含上述待转发报文的连接缓存信息;

第一标识获取模块,用于若上述第一数据表中包含上述待转发报文的连接缓存信息,获取上述第一数据表中上述连接缓存信息的第一标识,其中,上述第一标识为上述连接缓存信息确立时,记录的与上述连接缓存信息对应的连接标识;

第二标识确定模块,用于获取第二数据表中与上述连接缓存信息对应的连接信息,确定上述连接缓存信息的第二标识,其中,上述第二标识为上述连接缓存信息当前的连接标识,且当上述连接缓存信息的连接信息发生变化时,连接信息发生变化的连接缓存信息当前的连接标识,按照预设变更规则相应改变;

第一报文转发模块,用于若上述连接缓存信息的第一标识和第二标识相同,按照上述连接缓存信息转发上述待转发报文。

可选的,上述转发报文的装置还可以包括:

连接标识获取模块,用于获取由配置更新的设备发送的连接标识,其中,上述配置更新的设备为连接信息发生变化的报文收发设备;

标识更新模块,用于根据上述配置更新的设备发送的连接标识,相应的更新上述第二数据表中,与上述配置更新的设备发送的连接标识对应的连接信息。

可选的,上述转发报文的装置还可以包括:

连接信息删除模块,用于若上述连接缓存信息的第一标识和第二标识不同,删除上述第一数据表中上述待转发报文的连接缓存信息;

第一传输路径确定模块,用于获取上述待转发报文的目的地址,根据上述目的地址确定上述待转发报文的传输路径,其中,上述目的地址为上述待转发报文的目标端的地址;

第一缓存信息确定模块,用于将上述待转发报文的传输路径作为当前的连接缓存信息;

第一数据表更新模块,用于将上述连接缓存信息的第二标识,作为当前的连接缓存信息的第一标识,将当前的连接缓存信息的第一标识与当前的连接缓存信息记录在上述第一数据表中;

第二报文转发模块,用于按照上述待转发报文的传输路径,发送上述待转发报文。

可选的,上述第一传输路径确定模块,可以包括:

第一路径信息确定子模块,用于若上述目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定上述待转发报文的路径信息,其中,上述路径信息包括转发地址,上述转发地址为下一跳接收上述待转发报文的设备的地址;

第一安全组匹配子模块,用于根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第一设备连接子模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径。

可选的,上述第一传输路径确定模块,可以包括:

访问查询子模块,用于若上述目的地址与当前交换机所在的地址不在同一网段,查询访问控制列表;

第二路径信息确定子模块,用于在上述访问控制列表允许转发上述待转发报文时,查询路由表及邻居表,确定上述待转发报文的路径信息,其中,上述路径信息包括转发地址,上述转发地址为下一跳接收上述待转发报文的设备的地址;

第二安全组匹配子模块,用于根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第二设备连接子模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径。

可选的,上述第一标识获取模块,可以包括:

key获取子模块,用于在上述第一数据表中查询上述待转发报文的五元组对应的key,作为上述待转发报文的key;

指针获取子模块,用于获取上述第一数据表中hash桶的上述待转发报文的key偏移处对应的链表头指针;

标识查询子模块,用于查询上述链表头指针链接的链表,获取上述连接缓存信息及上述连接缓存信息的第一标识。

可选的,上述转发报文的装置还可以包括:

第一目的地址获取模块,用于若上述第一数据表中不包含上述待转发报文的连接缓存信息,获取上述待转发报文的目的地址,其中,上述目的地址为上述待转发报文的目标端的地址;

第一传输路径确定模块,用于若上述目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定上述待转发报文的路径信息,其中,上述路径信息包括转发地址,上述转发地址为下一跳接收上述待转发报文的设备的地址;

第一规则匹配模块,用于根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第二传输路径确定模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径;

第二缓存信息确定模块,用于将上述待转发报文的传输路径作为当前的连接缓存信息;

第一记录模块,用于获取上述第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在上述第一数据表中;

第三报文转发模块,用于按照上述待转发报文的传输路径,发送上述待转发报文。

可选的,上述转发报文的装置还可以包括:

第二目的地址获取模块,用于若上述第一数据表中不包含上述待转发报文的连接缓存信息,获取上述待转发报文的目的地址,其中,上述目的地址为上述待转发报文的目标端的地址;

控制列表查询模块,用于若上述目的地址与当前虚拟机所在的地址不在同一网段,查询访问控制列表;

第二传输路径确定模块,用于在上述访问控制列表允许转发上述待转发报文时,查询路由表及邻居表,确定上述待转发报文的路径信息,其中,上述路径信息包括转发地址,上述转发地址为下一跳接收上述待转发报文的设备的地址;

第二规则匹配模块,用于根据上述路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第三传输路径确定模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为上述待转发报文的发送对象,以确定上述待转发报文的传输路径;

第三缓存信息确定模块,用于将上述待转发报文的传输路径作为当前的连接缓存信息;

第二记录模块,用于获取上述第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在上述第一数据表中;

第四报文转发模块,用于按照上述待转发报文的传输路径,发送上述待转发报文。

第四方面,本发明实施例提供了一种转发报文的装置,应用于报文收发设备,该装置包括:

连接信息监听模块,用于监听与当前网络的连接信息,在与当前网络的连接信息发生变化时按照预设更新规则更新连接标识;

连接标识发送模块,用于向交换机发送更新后的连接标识,以使上述交换机根据上述连接标识更新第二数据表。

第五方面,本发明实施例提供了一种交换机,包括处理器和机器可读存储介质,上述机器可读存储介质存储有能被上述处理器执行的机器可执行指令,上述处理器被上述机器可执行指令促使:实现上述第一方面的任一方法步骤。

第六方面,本发明实施例提供了一种报文收发设备,包括处理器和机器可读存储介质,上述机器可读存储介质存储有能被上述处理器执行的机器可执行指令,上述处理器被上述机器可执行指令促使:实现上述第二方面的方法步骤。

第七方面,本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现上述第一方面的任一方法步骤。

第八方面,本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现上述第二方面的方法步骤。

第九方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一方法步骤。

第十方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面的方法步骤。

第十一方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面任一方法步骤。

第十二方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第二方面的方法步骤。

本发明实施例提供的转发报文的方法、装置、交换机、设备及存储介质,该转发报文的方法可以包括:获取待转发报文;查询第一数据表中是否包含上述待转发报文的连接缓存信息;若上述第一数据表中包含上述待转发报文的连接缓存信息,获取上述第一数据表中上述连接缓存信息的第一标识,其中,上述第一标识为上述连接缓存信息确立时,记录的与上述连接缓存信息对应的连接标识;获取第二数据表中与上述连接缓存信息对应的连接信息,确定上述连接缓存信息的第二标识,其中,上述第二标识为上述连接缓存信息当前的连接标识,且当上述连接缓存信息的连接信息发生变化时,连接信息发生变化的连接缓存信息当前的连接标识,按照预设变更规则相应改变;若上述连接缓存信息的第一标识和第二标识相同,按照上述连接缓存信息转发上述待转发报文。连接缓存信息的第一标识和第二标识均相同,说明连接缓存信息未失效,按照此时的连接缓存信息转发上述待转发报文,能够减少报文转发错误。当然,实施本发明的任一产品或方法必不一定需要同时达到以上的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术的交换机转发报文的流程示意图;

图2为本发明实施例的应用于交换机的转发报文的方法的一种流程示意图;

图3为本发明实施例的应用于报文收发设备的转发报文的方法的流程示意图;

图4为本发明实施例的应用于交换机的转发报文的方法的另一种流程示意图;

图5为本发明实施例的采用rcu方式删除连接缓存信息的示意图;

图6为本发明实施例的应用于交换机的转发报文的装置的示意图;

图7为本发明实施例的应用于报文收发设备的转发报文的装置的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1为现有技术中交换机转发报文的流程示意图,当交换机接收到报文后,首选判断该报文的目的地址与交换机的地址是否处于同一网段,判定是否为二层数据包。若处于同一网段,即为二层数据包,则查询mac表然后匹配安全组规则并发送该报文;若该报文的目的地址与交换机的地址不在同一网段,即不是二层数据包,则需要查询acl、路由表及邻居表等并匹配安全组规则,然后发送该报文。现有技术中当一台设备,例如虚拟机,需要与另外一台虚拟机进行通信时,尤其是与东西向的另一台虚拟机通信时,需要查询多个转发信息表,会导致报文转发性能的明显下降。

为了加快报文转发速度,在首次转发报文后,即在报文发送端与报文接收端已经建立过通信连接之后,会将与报文对应的连接信息保存到一张快捷表中,当报文发送端与报文接收端再次通信时,直接根据快捷表中的连接信息进行转发。但是在与连接信息对应的设备的连接状态发生变更或控制平面配置变更时,会导致连接信息失效,按照失效的连接信息转发报文会造成错误,而遍历快捷表中的所有连接信息以清除失效的缓存信息,尤其是在快捷表中的连接信息的数量较多时,处理时间非常长,严重影响报文的转发速度,报文转发效率低。

基于tcp(transmissioncontrolprotocol,传输控制协议)/udp(userdatagramprotocol,用户数据报协议)等四层常见协议,对于安全组等有状态的防火墙,需要基于五元组信息建立相应连接表项,以保证回包在没有匹配安全组规则的情况下可以通过。本发明实施例旨在基于连接的基础上,缓存报文转发的表项信息,实现报文(数据包)的发送设备及接收设备在建立过连接的基础上,减少转发查表的耗时,将原有的数次查表处理简化为单次的查表后快速转发,实现虚拟交换机的快速传输路径,同时避免按照失效的连接信息转发报文会造成错误。

参见图2,本发明实施例提供了一种转发报文的方法,应用于交换机,该方法包括:

s201,获取待转发报文。

本发明实施例的报文转发方法应用于交换机,该交换机可以为物理交换机也可以为虚拟交换机,此处以虚拟交换机为例。即虚拟交换机接收并获取由报文收发设备发送的待转发报文。

s202,查询第一数据表中是否包含待转发报文的连接缓存信息。

第一数据表中记录了已经建立过连接的两个报文收发设备的连接缓存信息及该连接缓存信息的第一标识。报文的连接缓存信息包含该报文的传输路径,还可以包括传输路径上的各报文收发设备的标识,如id或ip地址等。当第一数据表中存在一连接缓存信息,使得该连接缓存信息中传输路径的报文发送设备与报文接收设备的标识,如id或ip地址,与待转发报文中的报文发送设备与报文接收设备的标识相同时,将该连接缓存信息作为该待转发报文的连接缓存信息,并判定第一数据表中包含该待转发报文的连接缓存信息。

例如,若第一待转发报文中报文发送设备的ip地址为13,报文接收设备的ip地址为25;查询第一数据表,发现第一连接缓存信息中传输路径的报文发送设备的ip地址为13,报文接收设备的ip地址为25;则判定第一数据表中包含第一待转发报文的连接缓存信息,且第一待转发报文的连接缓存信息为第一连接缓存信息。

可选的,第一数据表中记录了连接缓存信息的五元组。若第一数据表中存在与待转发报文的五元组相同的五元组,则判定第一数据表中包含待转发报文的连接缓存信息,将第一数据表中与待转发报文的五元组相同的五元组对应的连接缓存信息,作为该待转发报文的连接缓存信息。五元组包括源ip地址、源端口、目的ip地址、目的端口和传输层协议。通过五元组确定待转发报文的连接缓存信息,判定结果更加准确。

s203,若第一数据表中包含待转发报文的连接缓存信息,获取第一数据表中连接缓存信息的第一标识,其中,第一标识为连接缓存信息确立时,记录的与连接缓存信息对应的连接标识。

本发明实施例中的设备具体为报文收发设备,可以为物理设备也可以为虚拟设备。连接缓存信息中记录了传输路径上的各报文收发设备的标识,将与连接缓存信息中各设备的标识所对应的设备,作为与该连接缓存信息对应的各设备。第一数据表中记录了连接缓存信息的第一标识。连接缓存信息的第一标识可以为与该连接缓存信息对应的各报文收发设备的第一标识。例如,在将连接缓存信息写入第一数据表时,与该连接缓存信息对应的各设备(报文收发设备)为设备1、设备2及设备3;设备1的连接标识为7,设备2的连接标识为6,设备3的连接标识为9,则该连接缓存信息的第一标识可以为7,6,9。

在公有云vpc(virtualprivatecloud,专有网络)中,vpc支持多个用户同时使用,每个用户对应一个vxlan(virtualextensiblelan,虚拟扩展局域网)标识,例如vxlanid,以保证相互间隔离。针对每个用户,在虚拟交换机上存储独立的数据结构,记录第二连接缓存信息、第三连接缓存信息。因此连接缓存信息的第一标识还可以为与该连接缓存信息对应的各用户的第一标识。例如,在将连接缓存信息写入第一数据表时,与该连接缓存信息对应的各用户为用户1与用户2,用户1的连接标识为1,用户2的连接标识为8;则该连接缓存信息的第一标识可以为1,8。

s204,获取第二数据表中与连接缓存信息对应的连接信息,确定连接缓存信息的第二标识,其中,第二标识为连接缓存信息当前的连接标识,且当连接缓存信息的连接信息发生变化时,连接信息发生变化的连接缓存信息当前的连接标识,按照预设变更规则相应改变。

第二数据表中记录了与连接缓存信息对应的连接信息,与连接缓存信息对应的连接信息可以为与该连接缓存信息对应的各报文收发设备的连接标识,也可以为与该连接缓存信息对应的各用户的连接标识。连接缓存信息的第二标识为该连接缓存信息当前的连接标识。与连接缓存信息对应的连接信息发生改变时,该连接缓存信息的第二标识也会按照预设变更规则相应改变。预设变更规则为任意能够实现第二标识变更的规则。

例如,与连接缓存信息对应的设备(报文收发设备)为设备1、设备2、设备3及设备4;设备1的连接标识为11,设备2的连接标识为11,设备3的连接标识为9,设备4的连接标识为13,则确定该连接缓存信息当前的第二标识为11,11,9,13。若设备2的连接信息发生改变,设备2的连接标识更新为12,相应的该连接缓存信息的第二标识变更为11,12,9,13。

例如,与连接缓存信息对应的用户为用户1与用户2,用户1的连接标识为6,用户2的连接标识为13;则确定该连接缓存信息当前的第二标识为6,13。若用户1的连接信息发生改变,用户1的连接标识更新为7,相应的该连接缓存信息第二标识变更为7,13。

s205,若连接缓存信息的第一标识和第二标识相同,按照连接缓存信息转发待转发报文。

例如,连接缓存信息的第一标识为11,9,13;该连接缓存信息的第二标识为11,9,13。则连接缓存信息的第一标识和第二标识相同,按照连接缓存信息中的传输路径转发待转发报文。

在本发明实施例中,连接缓存信息的第一标识和第二标识相同,说明连接缓存信息未失效,按照此时的连接缓存信息转发待转发报文,实现待转发报文的快路径的转发,能够避免报文转发失败,报文转发效率高。

可选的,在本发明实施例的转发报文的方法中,第一数据表与第二数据表存储在缓存中。将第一数据表与第二数据表以缓存的形式进行存储,读取速度快,报文转发速度快,效率高。

可选的,本发明实施例的转发报文的方法还包括:

步骤一,获取由配置更新的设备发送的连接标识,其中,配置更新的设备为连接信息发生变化的报文收发设备。

在报文收发设备检测到自身的连接信息发生变化时,该设备会按照预设更新规则更新连接标识。报文收发设备检测到自身的连接信息发生变化,是指报文收发设备检测到影响报文收发的配置的变更,例如,报文收发设备的地址发生变更,报文收发设备的安全组规则发生变更,或报文收发设备对应的交换机接口发生变更,又例如,在公有云vpc中,控制平面配置发生变更,报文收发设备负责的用户的业务发生迁移等。

步骤二,根据配置更新的设备发送的连接标识,相应的更新第二数据表中,与配置更新的设备发送的连接标识对应的连接信息。

在第二数据表中,将与配置更新的设备发送的连接标识对应的连接信息中的,设备的连接标识的值或用户的连接标识的值,更新为配置更新的设备发送的连接标识的值。例如,虚拟交换机接收到有设备1发送的设备1的连接标识为3的报文,虚拟交换机将第二数据表的连接信息中的设备1的连接标识更新为3。又例如,虚拟交换机接收到有设备1发送的用户4的连接标识为3的报文,虚拟交换机将第二数据表的连接信息中的用户4的连接标识更新为3。

在本发明实施例中,根据连接标识更新第二数据表中相应的连接信息,能够保证第二数据表中记录的各连接信息,与各设备当前实际的连接信息相同,从而避免报文转发失败。

可选的,在获取第二数据表中与连接缓存信息对应的连接信息,确定连接缓存信息的第二标识之后,该方法还包括:

步骤一,若连接缓存信息的第一标识和第二标识不同,删除第一数据表中待转发报文的连接缓存信息。

例如,连接缓存信息的第一标识为9,11;该连接缓存信息的第二标识为11,11。则在第一数据表中删除该连接缓存信息。当同一连接缓存信息的第一标识与第二标识不同时,说明该连接缓存信息已经失效,继续按照该连接缓存信息发送报文的话,会造成报文发送失败。在第一数据表中删除失效的连接缓存信息,后续不再根据该连接缓存信息转发报文,能够防止报文转发失败。

步骤二,获取待转发报文的目的地址,根据目的地址确定待转发报文的传输路径,其中,目的地址为待转发报文的目标端的地址。

在连接缓存信息失效时,虚拟交换机需要查询mac表或路由表等,以确定待转发报文的传输路径。

步骤三,将待转发报文的传输路径作为当前的连接缓存信息。

虚拟交换机获取当前的传输路径及当前的传输路径上的各报文收发设备的标识,作为当前的连接缓存信息。

步骤四,将连接缓存信息的第二标识,作为当前的连接缓存信息的第一标识,将当前的连接缓存信息的第一标识与当前的连接缓存信息记录在第一数据表中。

将被删除的连接缓存信息的第二标识,作为当前的连接缓存信息的第一标识,记录在第一数据表中。

步骤五,按照待转发报文的传输路径,发送待转发报文。

虚拟交换机通过传输路径标识的接口,向传输路径标识的下一跳接收待转发报文的设备发送该待转发报文。

在连接信息发生变更,如增设或减少报文收发设备,变更安全组规则,变更报文收发设备的接口或地址等,或控制平面配置变更时,如将用户a的报文转发服务由虚拟交换机a迁移到虚拟交换机b上,会造成连接缓存信息失效。在连接缓存信息的第一标识与第二标识不同时,删除该连接缓存信息,并通过查询mac表或路由表等,确定待转发报文的传输路径。相比于每次检测到设备的连接信息变更,遍历第一数据表中的所有连接缓存信息,以清除失效的连接缓存信息,可以大大增加报文的转发速度,尤其是在第一数据表中的连接缓存信息达百万级时,遍历的处理时间将非常长,严重影响控制平面命令下发的处理时间,采用本发明实施例的判定第一标识与第二标识的方法,可以大大提升报文的转发效率。

在本发明实施例中,给出了在连接缓存信息失效的情况下,报文的转发方法,同时还给出了新的连接缓存信息的建立方法,以方便后续根据新的连接缓存信息转发报文,以提高报文的转发速度,报文转发效率高。

可选的,获取待转发报文的目的地址,根据目的地址确定待转发报文的传输路径,包括:

步骤一,若目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址。

在osi模型(opensysteminterconnection,开放式通信系统互联参考模型)中,第二层数据链路层基于mac地址,每个第二层数据链路层中每个主机或虚拟机会有一个固定的mac地址。mac地址表中记录了不同mac地址与接口的对应情况,通过查询mac地址表,确定与待转发报文中目的地址相对应的接口,以确定待转发报文的传输路径信息。

步骤二,根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则。

虚拟交换机将路径信息中的转发地址对应的设备,作为需要进行安全组规则匹配的设备,通过与该转发地址对应的接口,向需要进行安全组规则匹配的设备发送报文,以匹配安全组规则。

步骤三,在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径。

安全组规则用于保护各报文收发设备的信息安全,只有在安全组规则匹配成功时,从能够建立设备间的通信连接。在设备间安全组规则匹配失败时,设备间禁止建立通信。安全组规则根据实际情况进行设定,可以为基于身份的安全策略、基于规则的安全策略或基于角色的安全策略等。匹配安全组规则成功,是指待转发报文的指定信息符合预设的规则,例如待转发报文的源ip地址处于指定的地址段,则认为匹配安全组规则成功。

在本发明实施例中,给出了基于mac地址的报文转发方法,实现第二层数据链路层中报文的转发。

可选的,获取待转发报文的目的地址,根据目的地址确定待转发报文的传输路径,包括:

步骤一,若目的地址与当前交换机所在的地址不在同一网段,查询访问控制列表。

在osi模型中,当目的地址与当前虚拟机所在的地址不在同一网段时,需要对报文进行第三层网络层的转发。虚拟交换机查询acl(accesscontrollist,访问控制列表),确定是否允许该待转发报文的发送设备,访问该待转发报文的接收设备,即是否允许待转发报文的转发。当然通过查询acl还可以确定待转发报文转发的优先级等。

步骤二,在访问控制列表允许转发待转发报文时,查询路由表及邻居表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址。

路由表中记录了从当前虚拟交换机,到达其他特定网络终端,如除当前虚拟交换机外的其他交换机或路由器等,的路径。邻居表中记录了当前虚拟交换机与邻居交换机(通信距离为1跳的交换机)的各个接口的对应情况。当前虚拟交换机首先通过查询路由表确定下一跳接收待转发报文的交换机,然后查询邻居表,确定与下一跳接收待转发报文的交换机通信的接口,从而确定了待转发报文的路径信息。

步骤三,根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则。

步骤四,在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径。

在本发明实施例中,给出了基于路由表及邻居表的报文转发方法,实现第三层网络层中报文的转发。

可选的,获取第一数据表中连接缓存信息的第一标识,包括:

步骤一,在第一数据表中查询待转发报文的五元组对应的key,作为待转发报文的key。

在本发明实施例中,第一数据表采用hash桶(哈希桶)的方式实现,通过待转发报文的五元组,得到相应的hash桶的key。五元组包括源ip地址、源端口、目的ip地址、目的端口和传输层协议。相应的hash桶中也存储了源ip地址、源端口、目的ip地址、目的端口和传输层协议等信息,并且hash桶中还存储了与连接缓存信息相对应的key。

步骤二,获取第一数据表中hash桶的待转发报文的key偏移处对应的链表头指针。

步骤三,查询链表头指针链接的链表,获取连接缓存信息及连接缓存信息的第一标识。

链表头指针链接的链表中记录了该链表对应的连接缓存信息,及该连接缓存信息的第一标识。链表对应的连接缓存信息是指五元组与该链表对应的hash桶中的五元组相同的连接缓存信息。

在本发明实施例中,给出了第一数据表中查询连接缓存信息及设备的第一标识的方法,通过hash桶查找连接缓存信息及设备的第一标识,寻找准确,查询效率高。

可选的,在本发明实施例一种可能的实施方式中,针对每个hash桶设置一个读写锁。

针对每个hash桶维护一个读写锁,读写锁允许多个进程同时读取一个hash桶,但是最多同时允许一个进程对hash桶进行写入操作,且读写锁不允许对一个hash桶同时进行读取和写入操作。

在本发明实施例中,针对每个hash桶设置一个读写锁,能够适用于多核并发情况,并且保证读写锁的粒度足够小,每个读写锁仅负责一个hash桶,不同的流不会触发锁等待。

可选的,在删除第一标识与第二标识不同的连接缓存信息时,使用read-copyupdate方式处理,以保证数据平面在处理完本次待转发报文前数据结构不会释放。

在本发明实施例中,使用read-copyupdate方式处理,在当前的连接缓存信息更新完成前,原连接缓存信息不会被删除,防止虚拟交换机因访问已经删除的数据而导致系统崩溃。

可选的,在查询第一数据表中是否包含待转发报文的连接缓存信息之后,该方法还包括:

步骤一,若第一数据表中不包含待转发报文的连接缓存信息,获取待转发报文的目的地址,其中,目的地址为待转发报文的目标端的地址。

步骤二,若目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址。

步骤三,根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则。

步骤四,在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径。

步骤五,将待转发报文的传输路径作为当前的连接缓存信息。

步骤六,获取第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在第一数据表中。

步骤七,按照待转发报文的传输路径,发送待转发报文。

在本发明实施例中,给出了基于mac地址的报文转发方法,实现第二层数据链路层中基于mac地址的慢路径的报文转发。

可选的,在查询第一数据表中是否包含待转发报文的连接缓存信息之后,该方法还包括:

步骤一,若第一数据表中不包含待转发报文的连接缓存信息,获取待转发报文的目的地址,其中,目的地址为待转发报文的目标端的地址。

步骤二,若目的地址与当前虚拟机所在的地址不在同一网段,查询访问控制列表。

步骤三,在访问控制列表允许转发待转发报文时,查询路由表及邻居表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址。

步骤四,根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则。

步骤五,在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径。

步骤六,将待转发报文的传输路径作为当前的连接缓存信息。

步骤七,获取第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在第一数据表中。

步骤八,按照待转发报文的传输路径,发送待转发报文。

在本发明实施例中,给出了基于路由表及邻居表的报文转发方法,实现第三层网络层中基于ip地址的慢路径的报文转发。

可选的,针对sr-iov(single-rooti/ovirtualization,单根i/o虚拟化)等技术方案,本发明实施可以将连接缓存信息下发至各收发报文的虚拟机对应的网卡,以实现网卡层面的快速转发,此时虚拟交换机变更为转发规则生成器。虚拟交换机将第一数据表及第二数据表中的内容下发至报文收发虚拟机所在的宿主机的网卡。对于支持sr-iov配置流(报文流)转发的网卡,在记录连接缓存信息时,可以生成双向的两条规则调用物理网卡提供的流规则(传输规则)下发接口,后续数据包将直接在网卡完成转发。当待转发报文到达宿主机的网卡时,网卡根据第一数据表及第二数据表,利用上述转发报文的方法转发待转发报文,例如网卡获取待转发报文,查询第一数据表中是否包含上述待转发报文的连接缓存信息;若上述第一数据表中包含上述待转发报文的连接缓存信息,网卡获取上述第一数据表中上述连接缓存信息的第一标识;网卡获取第二数据表中与上述连接缓存信息相关的连接信息,确定上述连接缓存信息的第二标识;若上述连接缓存信息的第一标识和第二标识相同,网卡按照上述连接缓存信息转发上述待转发报文。当网卡流规则不匹配时,再上发至虚拟交换机进行处理。通过网卡直接转发报文,实现物理层面转发,能够进一步加快报文的转发速度。

本发明实施例中,以网卡、虚拟交换机的快路径、虚拟交换机的慢路径的三种转发方式,进一步加快报文转发速率,从而解决当前虚拟机基于virtio(virtio是半虚拟化hypervisor中位于设备之上的抽象层)的虚拟网卡驱动转发性能过低,以及基于sr-iov的网卡virtualfunction(虚函数)直通虚拟机内部导致虚拟交换机无法控制报文处理的问题。

参见图3,本发明实施提供了一种转发报文的方法,应用于报文收发设备,该方法包括:

s301,监听与当前网络的连接信息,在与当前网络的连接信息发生变化时按照预设更新规则更新连接标识。

与当前网络的连接信息发生变化,是指报文收发设备检测到影响报文收发的配置的变更,例如,报文收发设备的地址发生变更,报文收发设备的安全组规则发生变更,或报文收发设备对应的交换机接口发生变更,又例如,在公有云vpc中,控制平面配置发生变更,报文收发设备负责的用户的业务发生迁移等。

预设更新规则为任意能够不重复的更新连接标识的规则。例如,将各报文收发设备或用户的连接标识的初始值设定为1,每次报文收发设备检测到自身的连接信息发生变化时,便在当前的连接标识的基础上,将数值增加1,得到更新后的连接标识。每次报文收发设备的连接信息变更后,其连接标识均会发生改变,便于交换机识别报文收发设备的当前状态,防止交换机错误更新第二数据表。

在报文收发设备检测到自身与当前网络的连接信息发生变化时,该报文收发设备会按照预设更新规则更新相应的连接标识。例如,报文收发设备1的连接标识为3,当报文收发设备1检测到自身的安全组规则发生变更时,报文收发设备1将报文收发设备1的连接标识更新为4。又例如,报文收发设备1服务的用户3的连接标识为2,当用户3的服务迁移到报文收发设备2时,报文收发设备1将用户3的连接标识更新为3。

s302,向交换机发送更新后的连接标识,以使交换机根据连接标识更新第二数据表。

例如,报文收发设备1向虚拟交换机发送报文收发设备1的连接标识更新为4的信息,虚拟交换机接收该信息后,将第二数据表的连接信息中报文发设备1的连接标识更新为4。又例如,报文收发设备1向虚拟交换机发送用户3的连接标识更新为3的信息,虚拟交换机接收该信息后,将第二数据表的连接信息中用户3的连接标识更新为3。

可选的,下面对本发明实施例的应用于报文收发设备的转发报文的方法进行举例说明。对于报文收发设备a,服务于用户b,其连接标识为user_age=7;当用户b中断服务后,报文收发设备a服务于用户c,则报文收发设备a更新连接标识为user_age=8,报文收发设备a在向虚拟交换机发送报文时,将user_age=8添加到该报文中,以使虚拟交换机在接收到该报文后,更新第二数据表中报文收发设备a的连接标识。

在本发明实施例中,当报文收发设备的连接信息发生改变时,更新连接标识,并向交换机发送更新后的连接标识,以使交换机根据连接标识更新第二数据表,后续交换机根据第一数据表及第二数据表发送待转发报文,能够避免报文转发失败,报文转发效率高。

可选的,向交换机发送更新后的连接标识,包括:

每次向交换机发送待转发报文时,将更新后的连接标识加入到待转发报文中。

每次发送待转发报文时,将当前的连接标识加入到待转发报文中,相比于报文收发设备每次更新连接标识后单独发送连接标识,可以节约信令负载;

可选的,向交换机发送更新后的连接标识,包括:

每次更新连接标识后,即时向交换机发送更新后的连接标识。

报文收发设备每次改变连接标识后,即时向虚拟交换机发送当前的连接标识,相比于将连接标识加入到待转发报文中,可以保证第二数据表记录的连接信息中的连接标识与真实的连接标识强一致性,避免因延时造成待转发报文的转发失败。

参见图4,图4为本发明实施例的应用于交换机的转发报文的方法的另一种流程示意图,包括:

s401,虚拟交换机接收报文。

虚拟交换机为公有云vpc技术中的核心组件,负责虚拟机的隔离,网络中第二、三层报文的转发,及安全处理等功能。目前vpc技术有多种方案隔离方案,其中以vxlan(virtualextensiblelan)最为普遍,vxlan报文在原有内层报文的基础上封装udp和vxlan头,以在underlay网络上实现自然的第三层路由转发。在接收报文时,虚拟交换机作为vxlan的终结点,会解封收到的vxlan报文,并根据相应转发表项,将报文转发给虚拟机;当虚拟机向外发送报文时,虚拟交换机获取虚拟机发送的报文,并封装vxlan报文,然后查询路由并对外发出,因此在underlay网络上交互的报文都是封装的。

公有云vpc(virtualprivatecloud,专有网络)支持多个用户同时使用,每个用户对应一个vxlan标识,例如vxlanid,以保证相互间隔离。针对每个用户,在虚拟交换机上存储独立的数据结构,记录第二层连接缓存信息及第三层连接缓存信息,根据收到的报文进行第二层数据链路层基于mac地址的fdb(forwardingdatabase)转发或进行第三层网络层查找路由邻居转发。

s402,虚拟交换机查询是否包含与该报文对应的连接缓存信息,若包含该报文对应的连接缓存信息,则执行步骤s403;若不包含该报文对应的连接缓存信息,则执行步骤s405。

虚拟交换机根据报文的五元组,在第一数据表中查询待转发报文的五元组对应的key,作为待转发报文的key;获取第一数据表中hash桶的待转发报文的key偏移处对应的链表头指针;查询链表头指针链接的链表,获取连接缓存信息及连接缓存信息的conn_age(此处conn_age即为第一标识)。连接缓存信息中包含报文的传输路径。虚拟交换机能够在第一数据表中找到报文对应的连接缓存信息,则判定包含该报文对应的连接缓存信息;虚拟交换机不能够在第一数据表中找到报文对应的连接缓存信息,则判定不包含该报文对应的连接缓存信息。

连接缓存信息的conn_age为该连接缓存信息建立时,该连接缓存信息对应的用户的thread_age(此处thread_age即为第二标识)。在公有云vpc环境下,针对每个用户维护一个user_age(此处user_age即为连接标识),报文收发设备,例如虚拟机,在发送报文时,将用户的user_age加入到报文中。虚拟交换机接收报文时,读取用户的user_age,将该用户的thread_age的值更新为该用户user_age的值。

第一数据表采用hash桶(哈希桶)的方式实现,各hash桶中存储了已成功转发过的报文的五元组及相应的key,key偏移处对应链表头指针,链表头指针连接链表,链表中记录了连接缓存信息及与连接缓存信息对应的各设备的第一标识。针对每个hash桶维护一个读写锁,读写锁允许多个进程同时读取一个hash桶,但是最多同时允许一个进程对hash桶进行写入操作,且读写锁不允许对一个hash桶同时进行读取和写入操作。读写锁能够适用于多核并发情况,并且保证读写锁的粒度足够小,每个读写锁仅负责一个hash桶,不同的流不会触发锁等待。

s403,虚拟交换机获取与连接缓存信息对应的thread_age与conn_age,判定该连接缓存信息的conn_age与thread_age是否相同,若不同则执行s404,若相同则执行s412。

虚拟交换机查询缓存的第二数据表,第二数据表中记录了各用户的标识以及每个用户各自对应的thread_age。第二数据表可以为hash表,也可以为列数据等。

第二数据表中的thread_age是根据报文收发设备发送的user_age维护的。在公有云vpc环境下,针对每个用户维护一个user_age,当有影响用户的连接缓存信息的配置更新时,增加该用户的user_age的值,由此通知数据平面配置有变动。报文收发设备在发送报文时,将用户的user_age加入到报文中。数据平面中的虚拟交换机接收报文时,读取用户的user_age,若用户的user_age的值与该用户的thread_age的值不同,则将该用户的thread_age的值更新为该用户的user_age的值。报文收发设备将user_age加入到需要发送的报文中,相比与专门发送user_age,可以节约信令负载。

s404,删除该连接缓存信息。

若连接缓存信息的第一标识与第二标识不同,说明该连接缓存信息已经失效,继续按照该连接缓存信息发送报文,会造成报文发送失败,因此需要删除该连接缓存信息。

可选的,在删除第一标识与第二标识不同的连接缓存信息时,使用rcu(read-copyupdate)方式处理,以保证数据平面在处理完本次待转发报文前数据结构不会释放。使用rcu方式,在当前的连接缓存信息更新完成前,原连接缓存信息不会被删除,防止虚拟交换机因访问已经删除的数据而导致系统崩溃。

例如,参见图5,图5为本发明实施例的采用rcu方式删除连接缓存信息的示意图。在转发报文时,当连接建立后(报文转发完成后),保存连接缓存信息及当前用户的conn_age=1。然后,虚拟交换机收到第一报文,读取第一报文中当前用户的user_age=1,记录当前用户的thread_age=1;因为发生配置变更,更新用户的user_age=2,此时虚拟交换机收到第二报文,第二报文中当前用户的user_age=2。对于第一报文,比较thread_age与conn_age是否相同,conn_age=thread_age,可以进行快转,即虚拟交换机根据缓存中的连接缓存信息进行转发。读取第二报文中当前用户的user_age=2,相应的更新当前用户的thread_age=2,比较thread_age与conn_age是否相同,对于第二报文conn_age不等于thread_age。因此需要删除缓存中的连接缓存信息,需要进行慢转,即虚拟交换机重新查找mac表或路由表等转发表进行转发。但是对于第一报文,此时虚拟交换机正在读取缓存中的连接缓存信息,若此时释放该连接缓存信息,虚拟交换机会因为读取已释放的内存而导致系统崩溃。因此采用rcu方式,在新的连接缓存信息建立前,缓存不会释放当前的连接缓存信息。对于第一报文按照当前的连接缓存信息进行报文的快路径转发,对于第二报文查找mac地址表或路由表等进行报文的慢路径转发,建立新的连接缓存信息,记录当前用户的conn_age=2。

通过rcu方式,及结合conn_age、thread_age和user_age转发报文的方案保证报文转发过程中,数据平面和控制平面连接缓存信息更新的同步。

s405,查询报文的源地址与目的地址是否在同一网段,若报文的源地址与目的地址在同一网段执行s406,若报文的源地址与目的地址不在同一网段执行s407。

在osi模型中,第二层数据链路层基于mac地址,第三次网络层基于ip地址。报文的源地址与目的地址在同一网段,报文进行第二层数据链路层的转发;报文的源地址与目的地址不在同一网段,报文进行第三层网络层的转发。

s406,查询mac地址表,确定报文的传输路径,然后执行s410。

mac地址表具体为fdb地址表,fdb地址表维护与虚拟交换机通信的各报文收发设备的mac地址。通过查询mac地址,可以确定下一跳的接收报文设备,及虚拟交换机与下一跳的接收报文设备间通信的接口。

s407,查询acl。

acl是路由器与交换机接口的指令列表,用来控制接口进出的报文。虚拟交换机通过查询acl确定是否允许该报文的发送设备,访问该报文的接收设备,即是否允许报文的转发。当然通过查询acl还可以确定待转发报文转发的优先级等。

s408,查询路由表。

路由表中记录了从当前虚拟交换机,到达其他特定网络终端的路径。虚拟交换机通过查询路由表,确定转发报文的路径。

s408,查询邻居表,确定报文的传输路径。

邻居表中记录了当前虚拟交换机与邻居交换机(通信距离为1跳的交换机)的各个接口的对应情况。虚拟交换机查询邻居表,确定下一跳接收报文的设备的接口,以而确定报文的传输路径。

s410,匹配安全组规则。

安全组规则用于保护各报文收发设备的信息安全,只有在安全组规则匹配成功时,从能够建立设备间的通信连接。在设备间安全组规则匹配失败时,设备间禁止建立通信。

对于每个虚拟机,可以关联相应的安全组,同一安全组内各虚拟机之间相互可信,可以直接通信。不通过安全组中的虚拟机相互通信,或虚拟机访问公网时,会匹配安全组规则。当匹配安全组规则成功时,建立通信连接以保证回包可以直接转发。对于每个第二层子网,还可以关联acl规则,实现无状态的规则匹配,当报文需要跨子网传输时,匹配acl规则。通过设置安全组及acl实现两个层次的安全限制保护。

s411,记录连接缓存信息。

在确定报文的传输路径且安全规则匹配成功后,虚拟交换机缓存与该报文对应的连接缓存信息。连接缓存信息包括传输路径,及conn_age,连接缓存信息中还可以包括五元组等信息。

s412,根据报文的传输路径,发送该报文。

在本发明实施例中,连接缓存信息的第一标识和第二标识相同,说明连接缓存信息未失效,按照此时的连接缓存信息转发待转发报文,实现待转发报文的快路径的转发,能够避免报文转发失败。相比于每次检测到连接信息变更,遍历第一数据表中的所有连接缓存信息,以清除失效的连接缓存信息,可以大大增加报文的转发速度,尤其是在第一数据表中的连接缓存信息达百万级时,遍历的处理时间将非常长,严重影响控制平面命令下发的处理时间,采用本发明实施例的判定第一标识与第二标识的方法,可以大大提升报文的转发效率。报文转发效率高。

目前针对于虚拟交换机而言,主要存在自研虚拟交换机和ovs(openvswitch,开源虚拟交换机)两种方案。针对自研虚拟交换机方案,转发一条虚拟机交互的报文至少要经过两个以上的查表操作,浪费时间。相对于数据平面,控制平面的变更较少。对于同一条流,在同样的配置下每次查表得到的结果都是相同的。在多数场景下,都需要匹配安全组并建立连接,本发明将连接创建提前到收包时的首次处理,在转发报文时先查找是否存在对应的连接,若存在则按照连接缓存信息转发报文,避免再次查询路由表等,提升报文的转发效率。对于ovs方案,报文首包在内核状态未匹配时,会上送用户态,导致首包存在内核态与用户态的切换,并且ovs方案整体过于臃肿,不利于公有云环境快速变化的需求迭代。本发明实施例中的转发报文的方法,包括自研虚拟交换机方案和ovs方案的优点,逻辑架构简单清晰,易于调整变更,减少了首包的处理延时,加快了后续报文的转发速度。

当然本发明实施例中的转发报文的方法可以应用到ovs方案中,ovs在接收到报文后,查询是否存在该报文相应的连接缓存信息,当存在该报文相应的连接缓存信息,且该连接缓存信息相应的第一标识与第二标识相同时,按照该连接缓存信息发送报文;否则上送用户态,按照现有的ovs方案发送报文,并在报文发送完成后,生成并记录连接缓存信息。本发明实施例中给出了ovs方案中转发报文的方法,能够减少转发报文的错误。

参见图6,本发明实施例提供了一种转发报文的装置,应用于交换机,可以包括:

报文获取模块601,用于获取待转发报文;

查询模块602,用于查询第一数据表中是否包含待转发报文的连接缓存信息;

第一标识获取模块603,用于若第一数据表中包含待转发报文的连接缓存信息,获取第一数据表中连接缓存信息的第一标识,其中,第一标识为连接缓存信息确立时,记录的与连接缓存信息对应的连接标识;

第二标识确定模块604,用于获取第二数据表中与连接缓存信息对应的连接信息,确定连接缓存信息的第二标识,其中,第二标识为连接缓存信息当前的连接标识,且当连接缓存信息的连接信息发生变化时,连接信息发生变化的连接缓存信息当前的连接标识,按照预设变更规则相应改变;

第一报文转发模块605,用于若连接缓存信息的第一标识和第二标识相同,按照连接缓存信息转发待转发报文。

在本发明实施例中,连接缓存信息的第一标识和第二标识相同,说明连接缓存信息未失效,按照此时的连接缓存信息转发待转发报文,实现待转发报文的快路径的转发,能够避免报文转发失败,报文转发效率高。

可选的,本发明实施例的转发报文的装置还包括:

连接标识获取模块,用于获取由配置更新的设备发送的连接标识,其中,配置更新的设备为连接信息发生变化的报文收发设备;

标识更新模块,用于根据配置更新的设备发送的连接标识,相应的更新第二数据表中,与配置更新的设备发送的连接标识对应的连接信息。

在本发明实施例中,根据连接标识更新第二数据表中相应的连接信息,能够保证第二数据表中记录的各连接信息,与各设备当前实际的连接信息相同,从而避免报文转发失败。

可选的,本发明实施例的转发报文的装置还包括:

连接信息删除模块,用于若连接缓存信息的第一标识和第二标识不同,删除第一数据表中待转发报文的连接缓存信息;

第一传输路径确定模块,用于获取待转发报文的目的地址,根据目的地址确定待转发报文的传输路径,其中,目的地址为待转发报文的目标端的地址;

第一缓存信息确定模块,用于将待转发报文的传输路径作为当前的连接缓存信息;

第一数据表更新模块,用于将连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,将当前的连接缓存信息的第一标识与当前的连接缓存信息记录在第一数据表中;

第二报文转发模块,用于按照待转发报文的传输路径,发送待转发报文。

在本发明实施例中,给出了在连接缓存信息失效的情况下,报文的转发方法,同时还给出了新的连接缓存信息的建立方法,以方便后续根据新的连接缓存信息转发报文,以提高报文的转发速度,报文转发效率高。

可选的,第一传输路径确定模块,包括:

第一路径信息确定子模块,用于若目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址;

第一安全组匹配子模块,用于根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第一设备连接子模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径。

在本发明实施例中,给出了基于mac地址的报文转发方法,实现第二层数据链路层中报文的转发。

可选的,第一传输路径确定模块,包括:

访问查询子模块,用于若目的地址与当前交换机所在的地址不在同一网段,查询访问控制列表;

第二路径信息确定子模块,用于在访问控制列表允许转发待转发报文时,查询路由表及邻居表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址;

第二安全组匹配子模块,用于根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第二设备连接子模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径。

在本发明实施例中,给出了基于路由表及邻居表的报文转发方法,实现第三层网络层中报文的转发。

可选的,第一标识获取模块,包括:

key获取子模块,用于在第一数据表中查询待转发报文的五元组对应的key,作为待转发报文的key;

指针获取子模块,用于获取第一数据表中hash桶的待转发报文的key偏移处对应的链表头指针;

标识查询子模块,用于查询链表头指针链接的链表,获取连接缓存信息及连接缓存信息的第一标识。

在本发明实施例中,给出了第一数据表中查询连接缓存信息及设备的第一标识的方法,通过hash桶查找连接缓存信息及设备的第一标识,寻找准确,查询效率高。

可选的,本发明实施例的转发报文的装置还包括:

第一目的地址获取模块,用于若第一数据表中不包含待转发报文的连接缓存信息,获取待转发报文的目的地址,其中,目的地址为待转发报文的目标端的地址;

第一传输路径确定模块,用于若目的地址与当前交换机所在的地址处于同一网段,查询mac地址表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址;

第一规则匹配模块,用于根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第二传输路径确定模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径;

第二缓存信息确定模块,用于将待转发报文的传输路径作为当前的连接缓存信息;

第一记录模块,用于获取第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在第一数据表中;

第三报文转发模块,用于按照待转发报文的传输路径,发送待转发报文。

在本发明实施例中,给出了基于mac地址的报文转发方法,实现第二层数据链路层中基于mac地址的慢路径的报文转发。

可选的,本发明实施例的转发报文的装置还包括:

第二目的地址获取模块,用于若第一数据表中不包含待转发报文的连接缓存信息,获取待转发报文的目的地址,其中,目的地址为待转发报文的目标端的地址;

控制列表查询模块,用于若目的地址与当前虚拟机所在的地址不在同一网段,查询访问控制列表;

第二传输路径确定模块,用于在访问控制列表允许转发待转发报文时,查询路由表及邻居表,确定待转发报文的路径信息,其中,路径信息包括转发地址,转发地址为下一跳接收待转发报文的设备的地址;

第二规则匹配模块,用于根据路径信息中的转发地址,确定需要进行安全组规则匹配的设备,并匹配安全组规则;

第三传输路径确定模块,用于在匹配安全组规则成功时,将安全组规则匹配成功的设备作为待转发报文的发送对象,以确定待转发报文的传输路径;

第三缓存信息确定模块,用于将待转发报文的传输路径作为当前的连接缓存信息;

第二记录模块,用于获取第二数据表中与当前的连接缓存信息对应的连接信息,确定当前的连接缓存信息的第二标识,将当前的连接缓存信息的第二标识作为当前的连接缓存信息的第一标识,把当前的连接缓存信息的第一标识与当前的连接缓存信息记录在第一数据表中;

第四报文转发模块,用于按照待转发报文的传输路径,发送待转发报文。

在本发明实施例中,给出了基于路由表及邻居表的报文转发方法,实现第三层网络层中基于ip地址的慢路径的报文转发。

本发明实施例还提供了一种转发报文的装置,应用于报文收发设备,装置包括:

连接信息监听模块701,用于监听与当前网络的连接信息,在与当前网络的连接信息发生变化时按照预设更新规则更新连接标识;

连接标识发送模块702,用于向交换机发送更新后的连接标识,以使交换机根据连接标识更新第二数据表。

在本发明实施例中,当报文收发设备的连接信息发生改变时,更新连接标识,并向交换机发送更新后的连接标识,以使交换机根据连接标识更新第二数据表,后续交换机根据第一数据表及第二数据表发送待转发报文,能够避免报文转发失败,报文转发效率高。

本发明实施例还提供了一种交换机,包括处理器和机器可读存储介质,上述机器可读存储介质存储有能被上述处理器执行的机器可执行指令,上述处理器被上述机器可执行指令促使执行以下步骤:

步骤一,获取待转发报文。

步骤二,查询第一数据表中是否包含待转发报文的连接缓存信息。

步骤三,若第一数据表中包含待转发报文的连接缓存信息,获取第一数据表中连接缓存信息的第一标识,其中,第一标识为连接缓存信息确立时,记录的与连接缓存信息对应的连接标识。

步骤四,获取第二数据表中与连接缓存信息对应的连接信息,确定连接缓存信息的第二标识,其中,第二标识为连接缓存信息当前的连接标识,且当连接缓存信息的连接信息发生变化时,连接信息发生变化的连接缓存信息当前的连接标识,按照预设变更规则相应改变。

步骤五,若连接缓存信息的第一标识和第二标识相同,按照连接缓存信息转发待转发报文。

在本发明实施例中,连接缓存信息的第一标识和第二标识相同,说明连接缓存信息未失效,按照此时的连接缓存信息转发待转发报文,实现待转发报文的快路径的转发,能够避免报文转发失败,报文转发效率高。

当然,上述处理器被上述机器可执行指令促使,还能够实现上述应用于交换机的转发报文的方法的任意步骤。

本发明实施例还提供了一种报文收发设备,包括处理器和机器可读存储介质,上述机器可读存储介质存储有能被上述处理器执行的机器可执行指令,上述处理器被上述机器可执行指令促使执行以下步骤:

步骤一,监听与当前网络的连接信息,在与当前网络的连接信息发生变化时按照预设更新规则更新连接标识。

步骤二,向交换机发送更新后的连接标识,以使上述交换机根据上述连接标识更新第二数据表。

在本发明实施例中,当报文收发设备的连接信息发生改变时,更新连接标识,并向交换机发送更新后的连接标识,以使交换机根据连接标识更新第二数据表,后续交换机根据第一数据表及第二数据表发送待转发报文,能够避免报文转发失败,报文转发效率高。

当然,上述处理器被上述机器可执行指令促使,还能够实现上述应用于报文收发设备的转发报文的方法的任意步骤。

可读存储介质可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,可读存储介质还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现上述应用于交换机的转发报文的方法的任意步骤。

本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现上述应用于报文收发设备的转发报文的方法的任意步骤。

本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述应用于交换机的转发报文的方法的任意步骤。

本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述应用于报文收发设备的转发报文的方法的任意步骤。

本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述应用于交换机的转发报文的方法的任意步骤。

本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述应用于报文收发设备的转发报文的方法的任意步骤。

对于转发报文的装置/交换机/报文收发设备/可读存储介质/计算机程序产品/计算机程序的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用对应的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1