可扩展虚拟局域网报文发送方法、计算机设备和可读介质与流程

文档序号:11455660阅读:290来源:国知局
可扩展虚拟局域网报文发送方法、计算机设备和可读介质与流程
本发明涉及信息
技术领域
,特别涉及可扩展虚拟局域网vxlan报文的发送方法、计算机设备和计算机可读介质。
背景技术
:可扩展虚拟局域网(vxlan,virtualextensiblelocalareanetwork)采用mac(mediaaccesscontrol,媒体接入控制)overudp(userdatagramprotocol,用户数据报协议)的技术,是一种覆盖网络技术或隧道技术。vxlan将虚拟机发出的数据包封装在udp中,并使用物理网络的互联网协议ip/mac作为outer-header进行封装,然后在物理ip网上传输,到达目的地后由隧道终结点解封并将数据发送给目标虚拟机。通过vxlan技术发送的报文为vxlan报文,vxlan报文通常包括vxlan隧道头和原始静荷两部分。其中,vxlan隧道头包括:外部目的mac地址,外部源mac地址,外部目的互联网协议(ip,internetprotocol)地址,外部源ip地址,外部udp头和vxlan网络标识(vni,vxlannetworkidentifier);原始静荷部分包括:内部目的mac地址,内部源mac地址,内部802.1q,原以太网有效载荷。实现vxlan报文的发送,需要具备vxlan隧道头和原始静荷两部分的信息才能实现。现有技术中,在运行虚拟机业务的计算机设备上,网卡能够识别虚拟机发送的虚拟局域网(vlan,virtuallocalareanetwork)报文并进行转发。但对于vxlan报文,网卡不具备获取vxlan报文转发所需信息的能力,网卡不能进行vxlan报文的封装和发送。技术实现要素:本发明实施例提供一种vxlan报文的发送方法、计算机设备和计算机可读介质,以解决现有技术中网卡无法处理报文vxlan报文转发的问题。本发明实施例的第一方面提供了一种可扩展虚拟局域网vxlan报文的发送方法,所述方法应用于计算机设备中,所述计算机设备包括中央处理器、网卡和虚拟机,所述网卡包括网卡处理器,所述方法包括:所述网卡处理器接收所述虚拟机发送的第一报文;所述网卡处理器判断所述网卡中是否保存有对所述第一报文进行vxlan封装所需的封装信息;其中,所述封装信息包括封装媒体接入控制mac地址和封装互联网协议ip地址,所述封装mac地址是发送所述第一报文时所要经过的下一跳设备的mac地址,所述封装ip地址是所述第一报文目的端虚拟可扩展局域网隧道端点vtep的ip地址;在所述网卡保存有对所述第一报文进行vxlan封装所需的封装信息时,根据所述封装信息对所述第一报文进行vxlan封装并发送;在所述网卡未保存对所述第一报文进行vxlan封装所需的封装信息时,向所述中央处理器发送获取请求,从所述中央处理器获取所述封装信息并保存,并发送对所述第一报文进行vxlan封装后的报文。其中,所述网卡包括至少一个pf和至少一个vf,计算机设备中的虚拟机通过vf直接将报文发送到网卡并通过网络发送。可选的,所述计算机设备中的每个虚拟机唯一对应一个vf,其通过唯一对应的vf转发报文给网卡。上述方法实施例中,所述网卡处理器在接收到第一报文后,判断网卡中是否保存有对所述第一报文进行vxlan封装的封装信息,如果保存有所述封装信息,则对所述第一报文进行vxlan封装并发送;如果未保存有所述封装信息,则向中央处理器请求所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文,实现了网卡对接收到的报文进行vxlan的封装和发送。结合本发明实施例的第一方面,本发明实施例的第一方面的第一种可能的实现方式中,在判断所述网卡中是否保存对所述第一报文进行vxlan封装所需的封装信息之前,所述方法还包括:所述网卡处理器从接收到的所述第一报文中获取转发所述第一报文的虚拟功能vf的id,根据所述vf的id,查询与所述vf的id对应的vf的属性;当所述vf的属性为vxlan属性时,则获取所述vf的vxlan网络标识vni。所述网卡处理器获取所述vf的vni后,可以根据所述vf的vni和所述第一报文的内层目的mac地址查询网卡中的地址转发表,判断地址转发表中是否存在于所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息。结合本发明实施例的第一方面的第一种可能的实现方式,本发明实施例的第一方面的第二种可能的实现方式中,所述网卡处理器判断所述网卡中是否保存有对所述第一报文进行vxlan封装所需的封装信息包括:所述网卡处理器根据所述vni以及所述第一报文的内层目的mac地址,查询所述网卡中是否存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息;在所述网卡中存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息时,判断所述网卡中保存有对所述第一报文进行vxlan封装所需的封装信息。本发明实施例中,还可以记录网卡查询封装信息的次数。每成功查询到封装信息,记录的次数加1。这样,当网卡中存储空间有限时,可以删除使用次数最小的封装信息的记录,从而可以加入中央处理器新下发的封装信息的记录,在网卡存储空间有限时,能够保存最新的表项,提高网卡转发报文的效率。结合本发明实施例的第一方面,第一方面的第一种和第二种任一可能的实现方式,本发明实施例的第一方面的第三种可能的实现方式中,所述网卡保存对所述第一报文进行vxlan封装所需的封装信息的方式包括:所述网卡保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与隧道标识之间的对应关系,以及保存所述隧道标识与所述封装信息之间的对应关系。可选的,所述网卡也可以直接保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与所述封装信息之间的对应关系之间的对应关系。结合本发明实施例的第一方面,第一方面的第一种至第三种任一可能的实现方式,本发明实施例的第一方面的第四种可能的实现方式中,所述网卡处理器发送对所述第一报文进行vxlan封装后的报文包括:所述网卡中的虚拟交换机接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送;或,所述网卡处理器根据获取到的对所述第一报文进行vxlan封装所需的封装信息,对所述第一报文进行vxlan封装并通过所述网卡中的虚拟交换机发送。其中,当网卡中的虚拟交换机接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送时,网卡在将所述第一报文和所述vni发送给所述中央处理器后,就不需要保存所述第一报文,可以节省因保存第一报文所占用的网卡的存储空间,提高网卡的存储空间的利用率。结合本发明实施例的第一方面,第一方面的第一种至第四种任一可能的实现方式,本发明实施例的第一方面的第五种可能的实现方式中,所述方法还包括:所述网卡接收发送给所述虚拟机的第二报文,所述第二报文为vxlan报文;所述网卡处理器判断所述网卡是否保存所述第二报文中的封装mac地址和封装ip地址;当所述网卡未保存所述第二报文的封装mac地址和封装ip地址时,将所述第二报文发送给所述中央处理器。可选的,上述中央处理器中相关的封装ip地址和封装mac地址,也可以通过管理员预先配置的方式,保存在中央处理器中。结合本发明实施例的第一方面,第一方面的第一种至第五种任一可能的实现方式,本发明实施例的第一方面的第六种可能的实现方式中,所述网卡支持单根输入输出虚拟化sr-iov,支持虚拟交换机vswitch转发功能。并且,所述网卡与所述中央处理器通过pcie链路连接。本发明实施例的第二方面,提供了一种计算机设备,包括中央处理器、网卡和虚拟机,所述网卡包括网卡处理器,所述网卡处理器包括报文处理单元和表项管理单元;所述报文处理单元,用于接收所述虚拟机发送的第一报文,判断所述网卡中是否保存有对所述第一报文进行可扩展虚拟局域网vxlan封装所需的封装信息,在所述网卡未保存对所述第一报文进行vxlan封装所需的封装信息时,向所述中央处理器发送获取请求;其中,所述封装信息包括封装媒体接入控制mac地址和封装互联网协议ip地址,所述封装mac地址是发送所述第一报文时所要经过的下一跳设备的mac地址,所述封装ip地址是所述第一报文目的端虚拟可扩展局域网隧道端点vtep的ip地址;所述表项管理单元,用于接收所述中央处理器发送的对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址并保存;所述网卡处理器,用于发送对所述第一报文进行vxlan封装后的报文。其中,所述网卡包括至少一个pf和至少一个vf,所述虚拟机通过vf直接将报文发送到网卡并通过网络发送。可选的,所述虚拟机唯一对应一个vf,其通过唯一对应的vf转发第一报文给网卡。结合本发明实施例的第二方面,本发明实施例的第二方面的第一种可能的实现方式中,所述中央处理器包括报文接收单元和获取发送单元;所述报文接收单元,用于接收所述报文处理单元发送的获取请求,所述获取请求包含所述第一报文和转发所述第一报文的虚拟功能vf的vxlan网络标识vni;所述获取发送单元,用于根据所述报文接收单元接收到的获取请求,获取对所述第一报文进行vxlan封装的封装信息,并发送给所述表项管理单元。上述计算机设备中,所述报文处理单元接收所述虚拟机发送的第一报文,判断所述网卡中是否保存有对所述第一报文进行vxlan封装所需的封装信息,如果保存有所述封装信息,则对所述第一报文进行vxlan封装并发送;如果未保存有所述封装信息,则向中央处理器请求所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文,实现了网卡对接收到的报文进行vxlan的封装和发送。结合本发明实施例的第二方面,第二方面的第一种可能的实现方式,本发明实施例的第二方面的第二种可能的实现方式中,所述报文处理单元,还用于从接收到的所述第一报文中获取转发所述第一报文的虚拟功能vf的id,根据所述vf的id,查询与所述vf的id对应的vf的属性;当所述vf的属性为vxlan属性时,则获取所述vf的vxlan网络标识vni。所述报文处理单元可以根据获取到的所述vf的vni,以及所述第一报文的内层目的mac查询所述网卡中是否保存对所述第一报文进行vxlan封装所需的封装信息。结合本发明实施例第二方面的第二种可能的实现方式,本发明实施例的第二方面的第三种可能的实现方式中,所述报文处理单元判断所述网卡中是否保存对所述第一报文进行vxlan封装所需的封装信息包括:所述报文处理单元根据所述vni以及所述第一报文的内层目的mac地址,查询所述网卡中是否存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息;在所述网卡中存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息时,判断所述网卡中存在对所述第一报文进行vxlan封装所需的封装信息。进一步的,所述报文处理单元还可以记录查询封装信息的次数。每成功查询到封装信息,记录的次数加1。这样,当网卡中存储空间有限时,可以删除使用次数最小的封装信息的记录,从而可以加入中央处理器新下发的封装信息的记录,在网卡存储空间有限时,能够保存最新的表项,提高网卡转发报文的效率。结合本发明实施例的第二方面,第二方面的第一种至第三种任一可能的实现方式,本发明实施例的第二方面的第四种可能的实现方式中,所述表项管理单元保存对所述第一报文进行vxlan封装所需的所述封装信息包括:所述表项管理单元保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与隧道标识之间的对应关系,以及保存所述隧道标识与所述封装信息之间的对应关系。可选的,所述表项管理单元也可以直接保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与所述封装信息之间的对应关系之间的对应关系。结合本发明实施例的第二方面,第二方面的第一种至第四种任一可能的实现方式,本发明实施例的第二方面的第五种可能的实现方式中,所述网卡处理器还包括虚拟交换机,所述网卡处理器发送对所述第一报文进行vxlan封装后的报文包括:所述网卡处理器中的报文处理单元根据所述表项管理单元获取到的所述封装mac地址和封装ip地址,对所述第一报文进行vxlan封装并通过所述虚拟交换机发送;或,所述网卡处理器中的虚拟交换机接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送。其中,当网卡中的虚拟交换机接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送时,报文处理单元在将所述第一报文和所述vni发送给所述中央处理器后,网卡就不需要保存所述第一报文,可以节省因保存第一报文所占用的网卡的存储空间,提高网卡的存储空间的利用率。结合本发明实施例的第二方面,第二方面的第一种至第五种任一可能的实现方式,本发明实施例的第二方面的第六种可能的实现方式中,所述报文处理单元,还用于接收发送给所述虚拟机的第二报文,所述第二报文为vxlan报文,判断所述表项管理单元是否保存所述第二报文中的封装mac地址和封装ip地址;当所述表项管理单元未保存所述第二报文的封装mac地址和封装ip地址时,将所述第二报文发送给所述报文接收单元;所述获取发送单元,还用于从所述报文接收单元接收所述第二报文,获取所述第二报文的封装mac地址和封装ip地址。可选的,上述中央处理器中相关的封装ip地址和封装mac地址,也可以通过管理员预先配置的方式,保存在中央处理器中。结合本发明实施例的第二方面,第二方面的第一种至第六种任一可能的实现方式,本发明实施例的第二方面的第七种可能的实现方式中,所述网卡支持单根输入输出虚拟化sr-iov,支持虚拟交换机vswitch转发功能。并且,所述网卡与所述中央处理器之间通过pcie链路连接。本发明实施例的第三方面,提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,在所述计算机可读指令被计算机设备中的处理器执行时,执行如下步骤:接收虚拟机发送给网卡的第一报文;判断所述网卡中是否保存有对所述第一报文进行可扩展虚拟局域网vxlan封装所需的封装信息;其中,所述封装信息包括封装媒体接入控制mac地址和封装互联网协议ip地址,所述封装mac地址是发送所述第一报文时所要经过的下一跳设备的mac地址,所述封装ip地址是所述第一报文目的端虚拟可扩展局域网隧道端点vtep的ip地址;在所述网卡保存对所述第一报文进行vxlan封装所需的封装信息时,根据所述封装mac地址和所述封装ip地址对所述第一报文进行vxlan封装并发送;在所述网卡未保存对所述第一报文进行vxlan封装所需的封装信息时,向所述计算机设备中的中央处理器发送获取请求,从所述中央处理器获取所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文。其中,所述网卡包括至少一个pf和至少一个vf,计算机设备中的虚拟机通过vf直接将报文发送到网卡并通过网络发送。可选的,所述计算机设备中的每个虚拟机唯一对应一个vf,其通过唯一对应的vf转发报文给网卡。上述计算机可读介质的实施例中,在接收到第一报文后,判断网卡中是否保存有对所述第一报文进行vxlan封装的封装信息,如果保存有所述封装信息,则对所述第一报文进行vxlan封装并发送;如果未保存有所述封装信息,则向中央处理器请求所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文,实现了网卡对接收到的报文进行vxlan的封装和发送。结合本发明实施例的第三方面,本发明实施例的第三方面的第一种可能的实现方式中,在所述处理器执行判断所述网卡中是否保存对所述第一报文进行vxlan封装所需的封装信息之前,还包括:从接收到的所述第一报文中获取转发所述第一报文的虚拟功能vf的id,根据所述vf的id,查询与所述vf的id对应的vf的属性;当所述vf的属性为vxlan属性时,则获取所述vf的vxlan网络标识vni。上述获取所述vf的vni后,可以根据所述vf的vni和所述第一报文的内层目的mac地址查询网卡中的地址转发表,判断地址转发表中是否存在于所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息。结合本发明实施例的第三方面或第三方面的第一种可能的实现方式,本发明实施例的第三方面的第二种可能的实现方式中,所述判断所述网卡中是否存在对所述第一报文进行vxlan封装所需的封装信息包括:获取转发所述第一报文的vf的vxlan网络标识vni;根据所述vni以及所述第一报文的内层目的mac地址,查询所述网卡中是否存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息;在所述网卡中存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息时,判断所述网卡中存在对所述第一报文进行vxlan封装所需的封装信息。本发明实施例中,所述处理器还可以根据所述计算机可读介质中的计算机可读指令,记录查询封装信息的次数。每成功查询到封装信息,记录的次数加1。这样,当网卡中存储空间有限时,可以删除使用次数最小的封装信息的记录,从而可以加入中央处理器新下发的封装信息的记录,在网卡存储空间有限时,能够保存最新的表项,提高网卡转发报文的效率。结合本发明实施例的第三方面,第三方面的第一种至第二种任一可能的实现方式,本发明实施例的第三方面的第三种可能的实现方式中,所述保存对所述第一报文进行vxlan封装所需的封装信息的方式包括:保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与隧道标识之间的对应关系,以及保存所述隧道标识与所述封装信息之间的对应关系。可选的,也可以直接保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与所述封装信息之间的对应关系之间的对应关系。结合本发明实施例的第三方面,第三方面的第一种至第三种任一可能的实现方式,本发明实施例的第三方面的第四种可能的实现方式中,所述发送对所述第一报文进行vxlan封装后的报文包括:接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送;或,根据获取到的对所述第一报文进行vxlan封装所需的封装信息,对所述第一报文进行vxlan封装并发送。其中,当接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送时,在将所述第一报文和所述vni发送给所述中央处理器后,就不需要保存所述第一报文,可以节省因保存第一报文所占用的网卡的存储空间,提高网卡的存储空间的利用率。结合本发明实施例的第三方面,第三方面的第一种至第四种任一可能的实现方式,本发明实施例的第三方面的第五种可能的实现方式中,所述处理器还用于执行如下步骤:接收发送给所述虚拟机的第二报文,所述第二报文为vxlan报文;判断所述网卡是否保存所述第二报文中的封装mac地址和封装ip地址;当所述网卡未保存所述第二报文的封装mac地址和封装ip地址时,将所述第二报文发送给所述中央处理器。本发明实施例提供的一种vxlan报文封装和转发的方法、计算机设备和计算机可读介质,网卡在接收到第一报文后,判断网卡中是否保存有对所述第一报文进行vxlan封装的封装信息,如果保存有所述封装信息,则对所述第一报文进行vxlan封装并发送;如果未保存有所述封装信息,则向中央处理器请求所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文,实现了网卡对接收到的报文进行vxlan的封装和发送。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中一种计算机设备的结构示意图;图2为本发明实施例一种计算机设备200的结构示意图;图3为本发明实施例中计算机设备200的一种具体实现结构示意图;图4为本发明实施例一种计算机设备200在linux运行环境下一种具体实现结构示意图;图5为本发明实施例一种可扩展虚拟局域网vxlan报文的发送方法的流程示意图;图6为本发明实施例一种计算机设备600的结构示意图;图7为本发明实施例一种计算机设备600的一种具体实现结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。参考图1,图1为现有技术中一种计算机设备100的结构示意图。计算机设备100包括中央处理器101和网卡102,网卡102包括网卡处理器1021。网卡102支持虚拟交换机(vswitch,virtualswitch)转发功能的卸载,支持单根输入输出虚拟化(sr-iov,single-rooti/ovirtualization)功能,能够基于vswitch实现vlan报文转发。其中,网卡支持vswitch转发功能的卸载是指在网卡上实现虚拟局域网(vlan,virtuallocalareanetwork)报文转发。vswitch也称为虚拟网络交换机,工作在二层数据网络,通过软件方式实现物理交换机的二层(和部分三层)网络功能。与传统物理交换机相比,虚拟交换机具备配置灵活、扩展性强的优点,一台普通的服务器可以配置几十台甚至上百台虚拟交换机,且端口数目可以灵活选择。并且,虚拟交换机通过虚拟交换,往往可以获得大型物理交换机才能达到的性能。vswitch广泛应用在基于基础架构即服务(iaas,infrastructureasaservice)的internet服务中。虚拟机(vm,virtualmachine)通过vswitch来连接网络,vswitch则通过物理主机上的物理网卡作为上行链路与外界网络进行连接。每个vswitch与物理交换机一样,包含一定数量的端口,相同特性的虚拟端口vport集合就是虚拟局域网vlan,不同vlan内的报文在传输时是相互隔离的,各vlan内的用户不能和其它vlan内的用户直接通信。网卡支持sr-iov功能,是指网卡对所在的计算机设备(例如服务器)呈现多个虚拟的网卡。sr-iov是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。sr-iov标准允许在虚拟机之间高速共享快速外设组件互连(pcie,peripheralcomponentinterconnectexpress)设备。根据sr-iov规范,单个输入输出(i/o,input/output)资源可由多个虚拟机共享。共享的设备将提供专用的资源,并且还使用共享的通用资源。这样,每个虚拟机都可访问唯一的资源。因此,启用了sr-iov并且具有适当的硬件和os支持的pcie设备(例如网卡)可以显示为多个单独的物理设备,每个vm都具有自己的pcie配置空间。sr-iov规范定义了两种功能类型:物理功能(pf,physicalfunction)和虚拟功能(vf,virtualfunction)。其中:pf是全功能的pcie功能,可以像其他任何pcie设备一样被发现、管理和处理。pf拥有完全配置资源,可以用于配置或控制pcie设备。vf是与物理功能pf关联的一种功能,vf可以与物理功能以及与同一物理功能关联的其他vf共享一个或多个物理资源。vf仅允许拥有用于其自身的配置资源。当网卡通过pcie链路与计算机设备中的其它部件连接时,网卡对所在的计算机设备呈现出多个虚拟的pcie网卡。多个虚拟的pcie网卡属于硬件虚拟网卡,这些硬件虚拟网卡可以分配给计算机设备上的普通虚拟机使用,以及分配给计算机设备的管理虚拟机使用。网卡通过pf端口与管理虚拟机连接,通过vf端口与普通虚拟机连接;其中,管理虚拟机用来实现对普通虚拟机的管理。需要说明的是,当网卡支持sr-iov功能时,需要网卡所在的计算机设备在进行bios(basicinput/outputsystem,基本输入输出程序)扫描时,为网卡预留总线资源和预留bar(baseaddressregister,基地址寄存器)资源,计算机设备的操作系统内核需要支持启动sr-iov的功能。现有技术中,sr-iov模式下,虚拟机待发送的报文直接通过网卡进行转发,当虚拟机需要待发送的报文需要进行vxlan封装并发送时,计算机设备100中的网卡102不具备对vxlan报文转发的能力,无法进行有效的报文转发。本发明实施例提供一种新的计算机设备,以解决现有技术中网卡无法实现vxlan报文的封装和发送的问题。vxlan报文包括vxlan隧道头和原始静荷两部分,vxlan隧道头包括:外部目的mac地址,外部源mac地址,外部目的ip地址,外部源ip地址,外部udp头和vni等;原始静荷部分包括:内部目的mac地址,内部源mac地址,内部802.1q,原以太网有效载荷等。其中,外部目的mac地址是转发vxlan报文时所要经过的下一跳设备的mac地址,即封装mac地址;外部目的ip地址是转发vxlan报文目的端的虚拟可扩展局域网隧道端点(vtep,vxlantunnelendpoint)的ip地址,即封装ip地址。其中,转发vxlan报文时所要经过的下一跳设备,是转发vxlan报文时经过的下一设备;以网卡转发vxlan报文,只经过路由设备1和路由设备2到达目的设备时,路由设备1就是网卡转发vxlan报文时所要经过的下一跳设备。在对虚拟机发送的报文做vxlan封装时,vxlan隧道头中的外部源mac地址,外部源ip地址是管理员在部署vtep时静态配置的,外部ip头的其他字段以及外部udp头在封装时可以根据ip、udp协议各字段的含义进行封装,vni配置在虚拟机所对应的vf上,原始静荷部分是虚拟机发送的原始报文。vxlan报文的转发通常是通过设置vtep来实现的,vtep实现了虚拟网络和物理网络的隔离。通过vtep之间建立隧道,在物理网络上传输虚拟网络的数据帧,物理网络不感知虚拟网络。vtep作为一个代理,可以有多种实现方式,并且可以由系统硬件、软件协同实现,作用是对待发送的报文进行vxlan封装,对接收到的vxlan报文解析、报文学习、解封装等。多个计算机设备组成的网络中,从逻辑上可以看成是在多个vtep之间建立的vxlan隧道。vtep将原始净荷封装一个隧道头,隧道头采用udp格式,并通过udp的目的端口号来标识报文是vxlan类型。封装的隧道头中的ip(internetprotocol,互联网协议)信息为本端vtep的ip地址信息以及报文要发送的对端vtep的ip地址信息;封装的隧道头中的源mac地址为本端vtep的mac地址,目的mac地址为本端vtep去往对端vtep的下一跳设备的mac地址,即vxlan报文转发的下一跳设备的mac地址。对于网络传输中的中间设备来说,它们只根据vtep的网络信息进行转发,不需要解析vni及内层报文信息。参考图2,图2为本发明实施例一种计算机设备200的结构示意图。如图2所示,计算机设备200包括中央处理器201和网卡202,网卡202包括网卡处理器2021。本发明实施例通过在网卡202上实现vtep的数据封装、解封装、转发功能,以实现网卡对vxlan报文的封装和转发。即网卡202在收到虚拟机发送的报文时,获取对该报文做vxlan封装所需的封装mac地址和封装ip地址,并根据封装mac地址和封装ip地址对报文做vxlan封装和发送。网卡202获取封装mac地址和封装ip地址的方式,是网卡202就某一待发送的报文向中央处理器201发送获取请求,请求该待发送的报文的封装mac地址和封装ip地址。即在网卡202中未保存与待发送的报文相关的封装mac地址和封装ip地址时,网卡202将待转发报文的信息发送给中央中央处理器201,中央中央处理器201获取待发送报文所需的封装mac地址和封装ip地址后,将获取到的封装mac地址和封装ip地址发送给所述网卡202,网卡202保存获取到的封装mac地址和封装ip地址,根据获取到的封装mac地址和封装ip地址,对待转发报文进行封装和发送。网卡202还可以根据保存的封装信息(封装mac地址和封装ip地址),对后续接收到的与所述待转发报文具有相同目的mac地址、且转发vf的vni相同的报文进行转发。本发明实施例中,转发vf是将虚拟机发送的报文转发给网卡的vf。每个虚拟机对应一个vf,虚拟机在发送报文给网卡进行转发时,通过与其对应的vf将报文发送给网卡。下面结合图2所示的计算机设备200的结构,以网卡202实现vxlan报文的封装和发送为例,对本发明实施例的vxlan报文的发送过程进行描述。当计算机设备200中的某一个虚拟机需要向其它设备发送报文时,该虚拟机将要发送的报文发送给网卡202,网卡202对接收到的报文处理的过程如下:s100:网卡202接收虚拟机发送的第一报文;其中,网卡202接收的第一报文是计算机设备200上的一个虚拟机发送的报文。在sr-iov模式下,计算机设备200上的虚拟机是通过与该虚拟机对应的vf发送所述第一报文,即该虚拟机的转发vf发送第一报文给所述网卡202。s102:网卡202中的网卡处理器2021获取转发所述第一报文的vf对应的vni;具体的,可以是网卡处理器2021获取转发所述第一报文的vf的id,根据获取到的vf的id查找vf配置表,获取该vf的属性和vtag(当vf属性为vlan时,vtag表示vlanid;当vf的属性为vxlan时,vtag表示vni),如果该vf的属性为vxlan,则与该vf的id对应的vni即为该vf的vni。vf配置表的内容可以如表a所示:表项名称表项描述输入/输出vfidvf的id号invf属性vf的vlan/vxlan属性outvtagvf的vlanidorvniout表a本发明实施例中,表a仅列出了与本方案相关的表项内容,其中的vtag为与vf的id和vf属性对应的一个标识,不具有具体的含义。网卡202接收的第一报文中会携带转发该第一报文的vf的id,网卡202在接收到第一报文时,网卡处理器2021能够获知是从哪个vf发送的第一报文。并且,每个vf的配置表中有标识该vf的属性是vlan类型还是vxlan类型的信息。如果是vlan类型,则vf的配置表中的vtag表示vf对应的vlanid;如果是vxlan类型,则vf的配置表中的vtag表示vf对应的vni。网卡处理器2021根据获取到的所述第一报文中的vf的id,判断与该vf的id对应的vf属性是否为vxlan属性,如果是,则从vf的配置表中获取对应的vni。需要说明的是,虚拟机所使用的vf属性,通常是在网卡初始化时配置的,例如管理员在网卡初始化时通过配置,将某一虚拟机所使用的vf的属性配置为vxlan。并且,vni也是预先配置的,每个属性为vxlan的vf对应一个唯一的vni。s104:网卡处理器2021根据获取到的所述vf的vni和所述第一报文的目的mac地址,判断网卡202中是否保存有对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址;其中,所述封装mac地址是发送所述第一报文时所要经过的下一跳设备的mac地址,所述封装ip地址是所述第一报文目的端vtep的ip地址;网卡处理器2021可以根据获取到的转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,在网卡202中(可以是网卡202的一个存储单元或存储表项中)查找与转发所述第一报文的vf的vni和所述第一报文的目的mac地址对应的封装mac地址和封装ip地址,如果能够查到,则确认网卡202保存有对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址。本发明实施例中,内存mac目的地址,是指报文原始报文(即原始静荷)中的目的mac地址。s106:在所述网卡202未保存对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址时,向所述中央处理器201发送请求消息,以请求对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址,所述请求消息携带所述第一报文以及与转发所述第一报文的vf的vni;s108:所述网卡处理器2021获取所述中央处理器201发送的对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址,发送对所述第一报文进行vxlan封装的报文,并保存所述封装mac地址和封装ip地址。其中,网卡处理器2021发送对所述第一报文进行vxlan封装的报文可以包括:网卡处理器2021根据获取到的对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址对所述第一报文进行vxlan封装,并发送封装后的报文;或,网卡处理器2021接收所述中央处理器201发送的对所述第一报文进行vxlan封装后的报文,并发送对所述第一报文进行vxlan封装后的报文。可选的,所述网卡处理器2021还包含虚拟交换机,则网卡处理器2021发送对所述第一报文进行vxlan封装的报文可以包括:网卡处理器2021根据获取到的对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址对所述第一报文进行vxlan封装,并通过虚拟交换机发送封装后的报文;或,网卡处理器2021中的虚拟交换机接收所述中央处理器201发送的对所述第一报文进行vxlan封装后的报文,并发送对所述第一报文进行vxlan封装后的报文。上述网卡处理器2021通过向中央处理器201请求对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址,依据获取到的封装mac地址和封装ip地址能够实现对第一报文进行vxlan的封装和发送;并且,网卡处理器2021保存所述封装mac地址和封装ip地址,使得所述网卡202在收到与所述第一报文的内层目的mac地址相同、且转发vf的vni相同的报文时,能够根据获取到的所述封装mac地址和封装ip地址对后续收到的报文进行vxlan封装和发送。本发明实施例中,可以由所述网卡处理器2021对所述第一报文进行vxlan封装,也可以由所述中央处理器201对所述第一报文进行vxlan封装。当由所述中央处理器201进行封装时,网卡处理器2021向中央处理器201发送所述第一报文和转发所述第一报文的vf的vni以获取封装mac地址和封装ip地址后,不用再缓存所述第一报文,这样可以节省网卡202的内存空间,提升网卡202内存空间的利用率。本发明实施例中,所述网卡202通过地址信息表保存对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址时,可以通过多种方式实现。可以用一个表格记录,也可以用两个表格来记录,本发明实施例不限定具体的记录其对应关系的表格形式,只要网卡202中的网卡处理器2021能够根据表格获取与待封装报文的目的mac地址对应的封装mac地址和封装ip地址即可。下面分别以一个表格形式和两个表格形式对网卡202保存对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址的方式予以说明。当网卡202用一个表格形式时,可以如表1所示,在一个表格中记录vni和内层报文目的mac地址,以及与vni和内层报文目的mac地址对应的封装mac地址和封装ip地址。表1如下所示:表1当网卡202用两个表格形式时,可以用一个表格记录转发vf的vni和内层目的mac地址,再用一个表格记录封装mac地址和封装ip地址,两个表格之间通过一个标识(例如隧道id)建立关联关系。其中,转发vf的vni和内层目的mac地址与隧道id(以标识为隧道id为例进行说明)的对应关系可以如表2所示:表项名称表项描述输入/输出vnivniin目的mac地址目的mac地址in转发出口隧道idout表2隧道id与封装mac地址、封装ip地址之间的对应关系如表3所示:表3上述表3是一个线性表,由“隧道id”作为表项索引,表3中每个表项存放有封装信息,包括封装mac地址和封装ip地址。每新增一个表项,会占用一个未被使用的隧道id。例如,假如表3可以存放1024个表项,隧道id的取值范围为0至1023,初始时所有表项内容(封装mac地址、封装ip地址)为空,每当需要保存一个封装信息时,占用其中一个表项。通过两个表格记录转发vf的vni和内层目的mac地址,与封装mac地址和封装ip地址之间的对应关系,可以节省网卡202的存储空间,避免过多的对应关系表格对网卡202存储空间的占用。例如对于两个以上的报文,其转发vf的vni和内层目的mac地址可能不同,但具有相同封装mac地址和封装ip地址,通过隧道id作为索引建立对应关系,就可以只保存一份封装mac地址和封装ip地址,每一种转发vf的vni和内层目的mac地址组合根据其各自的隧道id,都能够获取对应的封装mac地址和封装ip地址。避免了为每一组转发vf的vni和内层目的mac地址都保存一份封装mac地址和封装ip地址,相应节省了因保存每一项封装mac地址和封装ip地址所占用的网卡存储空间。本发明实施例中,上述表2可以为mac地址转发表。具体实现时,可以对现有的mac地址转发表进行扩展,即对mac地址转发表中的转发出口进行扩展,增加隧道id的信息。经过扩展后的mac地址转发表如表4所示:表4表4记录了与vtag(vtag可以是现有mac表的vlanid,或是本发明中的vni)和目的mac地址对应的转发出口。转发出口中,包括虚拟机网络端口、物理端口或隧道id。当网卡202已经转发过与待转发的报文(例如所述第一报文)内层目的mac地址以及转发vf的vni相同的报文时,网卡处理器2021会在mac地址转发表中记录相应的隧道id。也就是说,如果mac地址转发表的转发出口中包含隧道id,说明网卡已经转发过相同内层目的mac地址和转发vf的vni的报文。上述表3可以为vtep信息表。vtep信息表是由网卡202创建的,当网卡202已经转发过与待转发的报文内层目的mac地址和转发vf的vni相同的报文时,会创建包含隧道id的vtep信息表。本发明实施例中,所述表2、表3、mac地址转发表和vtep信息表只列出了本发明实施例强相关的信息,在具体实现时,所述mac地址转发表和vtep信息表还可以包括其它信息,本发明实施例不做具体的限定。以上述表2为mac地址转发表,上述表3为vtep信息表为例,当网卡202通过两个表格记录内层目的mac地址和转发vf的vni,与封装mac地址和封装ip地址之间的对应关系时,上述步骤s104中,网卡处理器2021根据获取到的转发所述第一报文的转发vf的vni和所述第一报文的内层目的mac地址,判断网卡202是否保存有封装所述第一报文所需的封装mac地址和封装ip地址包括:网卡处理器2021根据获取到的转发所述第一报文的vf对应的vni和所述第一报文的内层目的mac地址查mac地址转发表,判断是否存在与获取到的转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址相关的mac地址转发表;如果查到转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址相关的mac地址转发表,并且查找到的mac地址转发表的转发出口为隧道id,则获取对应的隧道id,再根据获取到的隧道id查vtep信息表,获取vtep信息表中记录的与所述隧道id对应的封装mac地址和封装ip地址。在步骤s106中,所述网卡202向所述中央处理器201发送请求消息,请求对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址。所述中央处理器201获取封装mac地址和封装ip地址的方式可以是:所述中央处理器201根据接收到的转发vf的vni,以及所述第一报文的内层目的mac地址查找对应的fdb(forwarddatabase,转发数据库)表项;从找到的fdb表项中获取对所述第一报文进行vxlan封装的封装ip地址。并根据获取到的封装ip地址查找arp表项,获取对所述第一报文进行vxlan封装的封装mac地址。所述中央处理器201在获取到对所述第一报文进行vxlan封装的封装ip地址和封装mac地址后,可以直接将获取到的封装ip地址和封装mac地址发送给所述网卡202,也可以生成包含所述封装ip地址和封装mac地址的vtep信息表,并将生成的vtep信息表发送给所述网卡202。参考图3,图3为本发明实施例中计算机设备200的一种具体实现结构示意图。如图3所示,所述网卡处理器2021包括:报文处理单元20211和表项管理单元20212;所述中央处理器201包括:报文接收单元2011和获取发送单元2012;所述中央处理器201与所述网卡202通过高速共享快速外设组件互连pcie通道连接。其中,所述报文处理单元20211,用于根据接收到的所述第一报文,判断发送所述第一报文的vf属性,如果vf属性为vxlan属性,则获取转发所述第一报文的vf的vni;并根据获取到的转发vf的vni和所述第一报文的内层目的mac地址,判断网卡202是否保存有封装所述第一报文所需的封装mac地址和封装ip地址;当所述网卡202未保存封装所述第一报文所需的封装mac地址和封装ip地址时,向所述中央处理器201中的报文接收单元2011发送请求消息,以请求对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址。所述表项管理单元20212用于接收所述中央处理器201发送的对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址并保存。具体的,所述表项管理单元20212是从所述中央处理器201中的获取发送单元2012接收所述封装mac地址和封装ip地址并保存。相应的,所述报文处理单元20211可以根据所述表项管理单元20212获取到的所述封装mac地址和封装ip地址,对所述第一报文进行vxlan封装并发送。所述报文处理单元20211也可以根据所述表项管理单元20212获取到的所述封装mac地址和封装ip地址,对与所述第一报文具有相同内层目的mac地址且转发vf的vni相同的报文,进行vxlan封装和发送。对于中央处理器201根据网卡处理器2021的请求获取对所述第一报文进行vxlan封装的封装mac地址和封装ip地址的方式,对于不同的应用环境有不同的实现方式。例如计算机设备200运行windows的操作系统时与运行linux操作系统时的实现方式会略有不同。本发明实施例以计算机设备200运行linux操作系统时为例,对中央处理器201获取对所述第一报文进行vxlan封装的封装mac地址和封装ip地址的方式进行说明。参考图4,图4为本发明实施例一种计算机设备200在linux运行环境下一种具体实现结构示意图。图4中的网卡202支持vswitch转发功能的卸载,支持sr-iov功能,网卡202包括至少一个物理功能pf和至少一个虚拟功能vf,网卡202通过pcie通道与中央处理器201连接,通过端口2022与网络连接。网卡202中的处理器2021包括报文处理单元20211、表项管理单元20212和虚拟交换机20213。中央处理器201运行linux操作系统,在运行linux操作系统过程中,包括运行linux用户态空间和linux内核态空间;linux用户态空间运行至少一个虚拟机,每个虚拟机通过唯一的vf与网卡202的虚拟交换机20213相连;linux内核态空间包括报文接收单元2011、获取发送单元2012、虚拟设备2013和协议栈2014。在所述中央处理器201中的报文接收单元2011接收到所述网卡处理器2021中的报文处理单元20211发送的所述转发vf的vni以及所述第一报文时,所述获取发送单元2012根据报文接收单元2011接收到的vni,在linux设备链表中查找与该vni对应的vxlan设备(该vxlan设备是一个虚拟设备,例如可以是通过linux操作系统自带的vxlan功能创建的虚拟设备),根据所述第一报文的内层目的mac地址在该vxlan设备的数据空间中的fdb表中查找对应的fdb表项(每个vxlan设备都有专属于该vxlan设备的数据空间,该数据空间保存着与本设备相关的fdb表项),根据mac地址查找fdb表项,得到与内层目的mac地址对应的封装ip地址,即目的端vtep的ip地址。fdb表可以如表5所示:表项名称表项描述输入/输出目的mac地址目的mac地址in封装ip地址目的端vtep的ip地址out表5获取发送单元2012获取到封装ip地址(即目的端vtep的ip地址)后,将该封装ip地址作为封装所述第一报文的目的ip地址,并查找协议栈2014中的arp表项(arp表项记录封装ip地址与所要经过的下一跳设备的mac地址的对应关系),获取与所述封装ip地址对应的发送所述第一报文所要经过的下一跳设备的mac地址,从而得到完整的对所述第一报文进行vxlan封装所需的信息。arp表项可以如表6所示:表6所述获取发送单元2012单元将获取到的所述封装mac地址和封装ip地址发送给网卡202,可以是将上述封装mac地址和封装ip地址转换成网卡202存储的形式,例如mac地址转发表和vtep信息表的形式,再并发送给网卡202;也可以将所述封装mac地址和封装ip地址直接发送给网卡202。并且,所述获取发送单元2012可以将所述第一报文和封装信息(包括但不限于源ip地址、目的ip地址、源mac地址、目的mac地址和vni,其中源ip地址和源mac地址是管理员静态配置的的)发送给协议栈2014,协议栈2014根据封装信息,实现所述第一报文的vxlan封装,将封装完的vxlan报文发送给网卡202,网卡202发送所述封装后的vxlan报文。上述获取到的封装mac地址,是所述中央处理器201从arp表中获取的,因此,当vxlan封装信息由管理员静态配置时,管理员仅需要配置封装ip地址,而不需要配置封装mac地址(封装mac地址会随着下一跳设备的变化而变化,并由主机arp动态维护)。这样,管理员配置会更简单、组网也会更灵活。需要说明的是,本发明实施例中表5和表6,从简明的角度仅列出了与本发明相关的信息,在具体实现时,这些表中还可以包括其它信息,本发明实施例不做限定。本发明实施例中,网卡202还对接收到的或已经保存的封装mac地址和封装ip地址表进行管理。以网卡202通过mac地址转发表和vtep信息表保存封装mac地址和封转ip地址为例,网卡202每查到一次mac地址转发表进行vxlan报文的封装时,该mac地址转发表的使用次数加1;当网卡202接收到所述中央处理器201下发mac地址转发表且mac地址转发表存储空间已满时,可以主动老化(即删除)使用频率最低的表项,从而可以插入新下发的表项。这样就保证了当网卡202空间有限时,网卡202上仅保存使用频率最高的转发表项。网卡上的mac地址转发表和vtep信息表一一对应,vtep信息表的创建和使用次数刷新跟随其对应的mac地址表项,能够进一步提升网卡的空间利用率和表项的管理效率,对使用频率高的表项能够持续在网卡保持,提升网卡转发vxlan报文的效率。上述mac地址转发表中表项的使用次数可以记录在该mac地址转发表中,vtep信息表中表项的使用次数可以记录在该vtep信息表中;也可以单独用一个表项记录mac地址转发表和vtep信息表中表项的使用次数,本发明实施例不做限定。下面以图4所示的计算机设备的架构为例,对本发明实施例一种实现vxlan报文的发送方法流程进行说明。当虚拟机1需要发送第一报文时,虚拟机1将报文通过与其对应的vf(本发明实施例以vf1为例进行说明)发送给网卡202。网卡202中的虚拟交换机20213从vf1接收到虚拟机1发送的第一报文,将所述第一报文发送给报文处理单元20211。报文处理单元20211根据获取到的所述第一报文,判断vf1的属性是否是vxlan属性,如果是vxlan属性,则查询表项管理单元20212中是否保存有对所述第一报文进行vxlan封装的封装mac地址和封装ip地址。如果所述表项管理单元20212中包含有对所述第一报文进行vxlan封装的封装mac地址和封装ip地址,则根据所述表项管理单元20212中的封装mac地址和封装ip地址对所述第一报文进行vxlan封装,并将进行vxlan封装后的所述第一报文通过所述虚拟交换机20213发送到端口2022,通过端口2022将进行vxlan封装后的所述第一报文通过网络发送。如果所述表项管理单元20212中没有包含有对所述第一报文进行vxlan封装的封装mac地址和封装ip地址,则所述报文处理单元20211通过物理功能pf(本发明实施例以pfn为例进行说明)将所述第一报文以及所述vf1的vni发送给中央处理器201中的报文接收单元2011。报文接收单元2011将接收到所述第一报文以及所述vf1的vni发送给获取发送单元2012,获取发送单元2012根据通过查找fdb表项和arp表项获取对所述第一报文进行vxlan封装的封装mac地址和封装ip地址,通过pf(以通过pf2为例进行说明)将所述封装mac地址和封装ip地址发送给表项管理单元20212,表项管理单元20212保存从所述获取发送单元2012获取到的所述封装mac地址和封装ip地址。当中央处理器201对所述第一报文进行vxlan封装时,可以是所述协议栈2014对所述第一报文进行vxlan封装,并通过pf(本发明实施例以pf1为例进行说明)将进行vxlan封装后的所述第一报文发送给虚拟交换机20213,所述虚拟交换机20213通过端口2022将进行vxlan封装后的所述第一报文发送到网络。当所述第一报文通过所述网卡进行vxlan封装时,获取发送单元2012将所述第一报文通过pf(例如pfn)发送给报文处理单元20211,报文处理单元20211根据所述表项管理单元20212已经保存的所述封装mac地址和封装ip地址对所述第一报文进行vxlan封装,并通过虚拟交换机20213将进行vxlan封装后的第一报文通过端口2022发送到网络。本发明实施例中,计算机设备200中的fdb表项来源有两个:一个是管理员的配置,另一个是对网卡上送vxlan报文的学习。如果所有fdb表项是由管理员配置的,则当所述计算机设备200从网络接收到目的地是所述计算机设备200上的某一虚拟机的报文时,由于转发表项是管理员静态配置下发给网卡202的,网卡202解封装接收到vxlan报文获取内层原始静荷后,可以根据配置的转发表项转发原始净荷到目的虚拟机。如果fdb转发表项是通过vxlan报文学习获得,则网卡202接收到目的地为所述计算机设备上的某个虚拟机的vxlan报文后,需要判断该报文所包含的vtep信息和mac地址转发信息网卡是否已经包含,如果没有包含,则网卡将该vxlan报文上送给中央中央处理器201进行vxlan报文学习。这样,无论采用管理员配置还是报文学习的方式,网卡上的表项均来源于计算机设备200(即计算机设备200中的中央处理器201),能够实现计算机设备200的统一管理。本发明实施例中,结合图4所示的计算机设备200,网卡202将vxlan报文上送给中央中央处理器201进行vxlan报文学习的过程如下:s200:网卡202接收通过网络发送给所述计算机设备200的第二报文,所述第二报文目的地为所述计算机设备上的某个虚拟机;s202:网卡202中的网卡处理器2021判断所述第二报文是否是vxlan报文;判断是否为vxlan报文,可以通过判断所述第二报文中所使用的udp目的端口号是否是4789来判断,如果是4789,即可判断所述第二报文为vxlan报文。根据rfc7348的规定,使用udp端口号4789作为vxlan报文的标识。s204:在该第二报文是vxlan报文时,所述网卡处理器2021解析所述第二报文,得到vni、内层报文(原始净荷)的源mac地址、目的mac地址和外层报文(vxlan隧道)的源mac地址、源ip地址信息;判断网卡202中是否存在该第二报文对应的封装mac地址(外层报文的源mac地址)和封装ip地址(外层报文的源ip地址)。如果不存在,将该第二报文转发到中央处理器201;如果已经存在,则直接跳转到s210;以网卡通过vtep信息表和mac地址转发表记录封装ip地址和封装mac地址为例,网卡202判断是否存在所述第二报文所包含封装mac地址和封装ip地址时,首先根据所述第二报文中的vni和内层报文的源mac地址查mac地址转发表;如果能找到,说明网卡202包含该第二报文所对应的mac地址转发表。根据找到mac地址转发表所指示的隧道id,查询vtep信息表,将查询到的vtep信息表中的封装ip地址和封装mac地址,与对所述第二报文解析得到外层报文源ip地址和源mac地址进行比较,如果都相同,则说明网卡202已包含所述第二报文所包含的封装ip地址和封装mac地址。如果没有或不同,则判定网卡202未包含所述第二报文所包含的封装ip地址和封装mac地址。s206:所述中央处理器201接收到虚拟交换机20213发送的第二报文后,对该第二报文进行解析,以图4所示实施例为例,可以在协议栈2014中对报文进行解析,解析后如果判断是vxlan报文,则对该vxlan报文进行学习:如果已存在fdb表项,则刷新fdb表项,更新封装ip地址;如果不存在,则创建fdb表项,供后续所述计算机设备200中的虚拟机发送报文做vxlan封装时使用。s208:所述中央处理器201的获取发送单元2012获取解封装的vxlan原始净荷,并将原始净荷和vni下发给网卡202。即所述获取发送单元2012将获取到的所述第二报文的原始净荷和vni,通过物理功能pf发送给网卡处理器202中的报文处理单元20211。需要说明的是,上述获取发送单元2012获取解封装后的原始净荷可以有多种方法。以linux操作系统实现的计算机设备为例:可以利用linux创建的虚拟网桥,将处理该vxlan报文对应的vxlan设备挂接在虚拟网桥上,这样,解封装后的原始净荷就会被转发到虚拟网桥上,获取发送单元2012可以在虚拟网桥的入口获取原始净荷。当然,也可以修改vxlan设备的接收处理流程,在vxlan设备完成报文学习和解封装后,获取原始净荷。s210:网卡202根据第二报文的vni和内层目的mac地址,查转发表将内层原始静荷转发给对应的虚拟机。即网卡处理器2021中的报文处理单元20211根据所述第二报文的vni和内层目的mac地址,通过所述虚拟交换机20213将所述第二报文发送给目的虚拟机。上述步骤s204中,网卡处理器2021中的报文处理单元20211将所述第二报文发送给所述中央处理器201后,也可以直接根据所述第二报文的vni和内层目的mac地址,通过所述虚拟交换机20213将所述第二报文发送给目的虚拟机,不需要所述中央处理器201中的获取发送单元2012将所述第二报文的原始静荷和vni通过物理功能pf发送给网卡处理器202中的报文处理单元20211。参考图5,图5为本发明实施例一种可扩展虚拟局域网vxlan报文的发送方法的流程示意图。本发明实施例的一种可扩展虚拟局域网vxlan报文的发送方法应用于计算机设备中,所述计算机设备包括中央处理器、网卡和虚拟机,所述网卡包括网卡处理器,如图5所示,所述方法包括:步骤500:所述网卡处理器接收所述虚拟机发送的第一报文;步骤502:所述网卡处理器判断所述网卡中是否保存有对所述第一报文进行vxlan封装所需的封装信息;其中,所述封装信息包括封装媒体接入控制mac地址和封装互联网协议ip地址,所述封装mac地址是发送所述第一报文时所要经过的下一跳设备的mac地址,所述封装ip地址是所述第一报文目的端vtep的ip地址;步骤504:在所述网卡保存有对所述第一报文进行vxlan封装所需的封装信息时,根据所述封装信息对所述第一报文进行vxlan封装并发送;步骤506:在所述网卡未保存对所述第一报文进行vxlan封装所需的封装信息时,向所述中央处理器发送获取请求,从所述中央处理器获取所述封装信息并保存,并发送对所述第一报文进行vxlan封装后的报文。其中,所述网卡是支持单根输入输出虚拟化sr-iov并且支持虚拟交换机vswitch转发功能的网卡。计算机设备中的虚拟机通过vf直接将报文发送到网卡并通过网络发送,相应的,网卡包括至少一个pf和至少一个vf。上述方法实施例中,所述网卡处理器在接收到第一报文后,判断网卡中是否保存有对所述第一报文进行vxlan封装的封装信息,如果保存有所述封装信息,则对所述第一报文进行vxlan封装并发送;如果未保存有所述封装信息,则向中央处理器请求所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文,实现了网卡对接收到的报文进行vxlan的封装和发送。可选的,在所述步骤502之前,所述方法还包括:步骤501:所述网卡处理器从接收到的所述第一报文中获取转发所述第一报文的虚拟功能vf的id,根据所述vf的id,查询与所述vf的id对应的vf的属性;当所述vf的属性为vxlan属性时,则获取所述vf的vxlan网络标识vni。相应的,所述网卡处理器判断所述网卡中是否保存有对所述第一报文进行vxlan封装所需的封装信息包括:所述网卡处理器根据所述vni以及所述第一报文的内层目的mac地址,查询所述网卡中是否存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息;在所述网卡中存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息时,判断所述网卡中保存有对所述第一报文进行vxlan封装所需的封装信息。可选的,所述网卡可以通过查询相关的地址信息表(可以是上述表1,也可以是上述表2、表3)来查询所述网卡中保存有对所述第一报文进行vxlan封装所需的封装信息。并且,所述网卡还可以记录上述地址信息表的使用次数,所述网卡每查询一次地址信息表,且查询到对需要转发的报文进行vxlan封装所需的封装信息时,使记录地址信息表的使用次数加1。这样,当网卡中地址信息表的表项占满网卡可使用的存储空间时,可以删除使用次数最小的表项,从而可以加入中央处理器新下发的表项,在网卡存储空间有限时,能够保存最新的表项,提高网卡转发报文的效率。所述网卡保存对所述第一报文进行vxlan封装所需的封装信息的方式,可以采用上述表1的方式,也可以采用上述表2和表3的方式,例如用mac转发表保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与隧道标识之间的对应关系,用vtep信息表保存所述隧道标识与所述封装信息之间的对应关系。通过表2、表3(或mac转发表、vtep信息表)的方式,能够节省网卡的存储空间,避免过多表项对网卡存储空间的占用。在图5所示的方法实施例中,所述计算机设备中的网卡还可以包括虚拟交换机。相应的,所述网卡处理器发送对所述第一报文进行vxlan封装后的报文包括:所述网卡中的虚拟交换机接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送;或,所述网卡处理器根据获取到的对所述第一报文进行vxlan封装所需的封装信息,对所述第一报文进行vxlan封装并通过所述网卡中的虚拟交换机发送。其中,当网卡中的虚拟交换机接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送时,不需要网卡中保存所述第一报文,可以节省因保存第一报文所占用的网卡的存储空间,提高网卡的存储空间的利用率。当所述网卡接收到从网络侧发送给所述计算机设备中的某一虚拟机的第二报文时,所述方法还包括:所述网卡接收发送给所述虚拟机的第二报文,所述第二报文为vxlan报文;所述网卡处理器判断所述网卡是否保存所述第二报文中的封装mac地址和封装ip地址;当所述网卡未保存所述第二报文的封装mac地址和封装ip地址时,将所述第二报文发送给所述中央处理器。所述网卡处理器将所述第二报文发送给所述中央处理器后,所述中央处理器能够根据接收到的第二报文,获取所述第二报文中的封装amc地址和封装ip并保存。例如将封装ip地址保存在fdb表项中,将封装mac地址记录在arp表项中。中央处理器保存所述第二报文中的封装mac地址和封装ip地址,可以在后续收到网卡的获取请求,请求与所述第二报文的vni和内层目的mac地址相同的报文的封装信息时,根据保存的所述第二报文的封装mac地址和封装ip地址发送给网卡。可选的,上述中央处理器中相关的封装ip地址和封装mac地址,也可以通过管理员预先配置的方式,保存在中央处理器中。上述实现vxlan报文转发方法的实施例,还可以参考上述图2、图3和图4相关的实施例描述的方案实现,不再赘述。参考图6,图6为本发明实施例一种计算机设备600的结构示意图。如图6所示,计算机设备600包括中央处理器601、网卡602和虚拟机603,所述网卡602包括网卡处理器6021,所述网卡处理器6021包括报文处理单元60211和表项管理单元60212;所述报文处理单元60211,用于接收所述虚拟机603发送的第一报文,判断所述网卡602中是否保存有对所述第一报文进行vxlan封装所需的封装信息,在所述网卡602未保存对所述第一报文进行vxlan封装所需的封装信息时,向所述中央处理器601发送获取请求;其中,所述封装信息包括封装mac地址和封装ip地址,所述封装mac地址是发送所述第一报文时所要经过的下一跳设备的mac地址,所述封装ip地址是所述第一报文目的端vtep的ip地址;所述表项管理单元60212,用于接收所述中央处理器601发送的对所述第一报文进行vxlan封装所需的封装mac地址和封装ip地址并保存;所述网卡处理器6021,用于发送对所述第一报文进行vxlan封装后的报文。其中,所述网卡602支持单根输入输出虚拟化sr-iov,支持虚拟交换机vswitch转发功能。计算机设备600中的虚拟机603通过vf直接将报文发送到网卡602并通过网络发送,相应的,网卡包括至少一个pf和至少一个vf。所述网卡602与所述中央处理器601通过pcie链路连接。上述计算机设备600中,所述报文处理单元60211接收所述虚拟机603发送的第一报文,判断所述网卡602中是否保存有对所述第一报文进行vxlan封装所需的封装信息,如果保存有所述封装信息,则对所述第一报文进行vxlan封装并发送;如果未保存有所述封装信息,则向中央处理器601请求所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文,实现了网卡602对接收到的报文进行vxlan的封装和发送。参考图7,图7为本发明实施例一种计算机设备600的一种具体实现结构示意图。如图7所示,所述中央处理器601包括报文接收单元6011和获取发送单元6012;所述报文接收单元6011,用于接收所述报文处理单元60211发送的获取请求,所述获取请求包含所述第一报文和转发所述第一报文的vf的vni;所述获取发送单元6012,用于根据所述报文接收单元6011接收到的获取请求,获取对所述第一报文进行vxlan封装的封装信息,并发送给所述表项管理单元60212。可选的,所述报文处理单元60211,还用于从接收到的所述第一报文中获取转发所述第一报文的vf的id,根据所述vf的id,查询与所述vf的id对应的vf的属性;当所述vf的属性为vxlan属性时,则获取所述vf的vni。所述报文处理单元60211可以根据获取到的所述vf的vni,以及所述第一报文的内层目的mac查询所述网卡602中是否保存对所述第一报文进行vxlan封装所需的封装信息。相应的,所述报文处理单元60211判断所述网卡602中是否保存对所述第一报文进行vxlan封装所需的封装信息包括:所述报文处理单元60211根据所述vni以及所述第一报文的内层目的mac地址,查询所述网卡602中是否存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息;在所述网卡中存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息时,判断所述网卡中存在对所述第一报文进行vxlan封装所需的封装信息。具体的,所述报文处理单元60211可以通过在表项管理单元60212查询是否存在相关的地址信息表,例如上述实施例中表1,或上述实施例中的表2、表3,通过相关的地址信息表,查询网卡602的表项管理单元60212中是否存在对所述第一报文进行vxlan封装所需的封装信息。可选的,本发明实施例中还可以记录地址信息表(可以是表1,也可以是表2、表3)的使用次数,所述报文处理单元60211每查询一次表项管理单元60212的地址信息表,且查询到对需要转发的报文进行vxlan封装所需的封装信息时,使记录地址信息表的使用次数加1。这样,当表项管理单元60212中地址信息表的表项占满网卡602可使用的存储空间时,可以删除使用次数最小的表项,从而可以加入中央处理器601新下发的表项,在网卡602存储空间有限时,能够保存最新的表项,提高网卡转发报文的效率。本发明实施例中,所述表项管理单元60212保存对所述第一报文进行vxlan封装所需的所述封装信息包括:所述表项管理单元60212保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与隧道标识之间的对应关系,以及保存所述隧道标识与所述封装信息之间的对应关系。所述网卡602保存对所述第一报文进行vxlan封装所需的封装信息的方式,可以采用上述表1的方式,也可以采用上述表2和表3的方式,例如用mac转发表保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与隧道标识之间的对应关系,用vtep信息表保存所述隧道标识与所述封装信息之间的对应关系。通过表2、表3(或mac转发表、vtep信息表)的方式,能够节省网卡的存储空间,避免过多表项对网卡存储空间的占用。可选的,所述网卡处理器6021还包括虚拟交换机60213,所述网卡处理器6021发送对所述第一报文进行vxlan封装后的报文包括:所述网卡处理器6021中的报文处理单元60211根据所述表项管理单元60212获取到的所述封装mac地址和封装ip地址,对所述第一报文进行vxlan封装并通过所述虚拟交换机60213发送;或,所述网卡处理器60211中的虚拟交换机60213接收所述中央处理器601发送的对所述第一报文进行vxlan封装后的报文并发送。其中,当网卡602中的虚拟交换机60213接收所述中央处理器601发送的对所述第一报文进行vxlan封装后的报文并发送时,报文处理单元60211在将所述第一报文和所述vni发送给所述中央处理器601后,网卡602就不需要保存所述第一报文,可以节省因保存第一报文所占用的网卡的存储空间,提高网卡空间的利用率。可选的,所述报文处理单元60211,还用于接收发送给所述虚拟机603的第二报文,所述第二报文为vxlan报文,判断所述表项管理单元60212是否保存所述第二报文中的封装mac地址和封装ip地址;当所述表项管理单元60212未保存所述第二报文的封装mac地址和封装ip地址时,将所述第二报文发送给所述报文接收单元6011;所述获取发送单元6012,还用于从所述报文接收单元6011接收所述第二报文,获取所述第二报文的封装mac地址和封装ip地址。所述网卡处理器6021将所述第二报文发送给所述中央处理器后,所述中央处理器601能够根据接收到的第二报文,获取所述第二报文中的封装amc地址和封装ip并保存。例如将封装ip地址保存在fdb表项中,将封装mac地址记录在arp表项中。中央处理器601保存所述第二报文中的封装mac地址和封装ip地址,可以在后续收到网卡602的获取请求,请求与所述第二报文的vni和内层目的mac地址相同的报文的封装信息时,根据保存的所述第二报文的封装mac地址和封装ip地址发送给网卡602。可选的,上述中央处理器601中相关的封装ip地址和封装mac地址,也可以通过管理员预先配置的方式,保存在中央处理器601中。上述计算机设备600的具体实现方式,还可以参考上述图2、图3和图4相关的实施例描述的方案实现,不再赘述。本发明实施例还提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,在所述计算机可读指令被计算机设备中的处理器执行时,执行如下步骤:接收虚拟机发送给网卡的第一报文;判断所述网卡中是否保存有对所述第一报文进行可扩展虚拟局域网vxlan封装所需的封装信息;其中,所述封装信息包括封装媒体接入控制mac地址和封装互联网协议ip地址,所述封装mac地址是发送所述第一报文时所要经过的下一跳设备的mac地址,所述封装ip地址是所述第一报文目的端vtep的ip地址;在所述网卡保存对所述第一报文进行vxlan封装所需的封装信息时,根据所述封装mac地址和所述封装ip地址对所述第一报文进行vxlan封装并发送;在所述网卡未保存对所述第一报文进行vxlan封装所需的封装信息时,向所述计算机设备中的中央处理器发送获取请求,从所述中央处理器获取所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文。其中,所述网卡包括至少一个pf和至少一个vf,计算机设备中的虚拟机通过vf直接将报文发送到网卡并通过网络发送。可选的,所述计算机设备中的每个虚拟机唯一对应一个vf,其通过唯一对应的vf转发报文给网卡。上述计算机可读介质的实施例中,在接收到第一报文后,判断网卡中是否保存有对所述第一报文进行vxlan封装的封装信息,如果保存有所述封装信息,则对所述第一报文进行vxlan封装并发送;如果未保存有所述封装信息,则向中央处理器请求所述封装信息并保存,发送对所述第一报文进行vxlan封装后的报文,实现了网卡对接收到的报文进行vxlan的封装和发送。可选的,在所述处理器执行判断所述网卡中是否保存对所述第一报文进行vxlan封装所需的封装信息之前,还包括:从接收到的所述第一报文中获取转发所述第一报文的虚拟功能vf的id,根据所述vf的id,查询与所述vf的id对应的vf的属性;当所述vf的属性为vxlan属性时,则获取所述vf的vxlan网络标识vni。上述获取所述vf的vni后,可以根据所述vf的vni和所述第一报文的内层目的mac地址查询网卡中的地址转发表,判断地址转发表中是否存在于所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息。其中,所述判断所述网卡中是否存在对所述第一报文进行vxlan封装所需的封装信息包括:获取转发所述第一报文的vf的vxlan网络标识vni;根据所述vni以及所述第一报文的内层目的mac地址,查询所述网卡中是否存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息;在所述网卡中存在与所述vf的vni和所述第一报文的内层目的mac地址对应的封装信息时,判断所述网卡中存在对所述第一报文进行vxlan封装所需的封装信息。本发明实施例中,所述处理器还可以根据所述计算机可读介质中的计算机可读指令,记录查询封装信息的次数。每成功查询到封装信息,记录的次数加1。这样,当网卡中存储空间有限时,可以删除使用次数最小的封装信息的记录,从而可以加入中央处理器新下发的封装信息的记录,在网卡存储空间有限时,能够保存最新的表项,提高网卡转发报文的效率。本发明实施例的关于计算机可读介质中,所述保存对所述第一报文进行vxlan封装所需的封装信息的方式包括:保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与隧道标识之间的对应关系,以及保存所述隧道标识与所述封装信息之间的对应关系。可选的,也可以直接保存转发所述第一报文的vf的vni和所述第一报文的内层目的mac地址,与所述封装信息之间的对应关系之间的对应关系。上述计算机可读介质的实施例中,所述发送对所述第一报文进行vxlan封装后的报文包括:接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送;或,根据获取到的对所述第一报文进行vxlan封装所需的封装信息,对所述第一报文进行vxlan封装并发送。其中,当接收所述中央处理器发送的对所述第一报文进行vxlan封装后的报文并发送时,在将所述第一报文和所述vni发送给所述中央处理器后,就不需要保存所述第一报文,可以节省因保存第一报文所占用的网卡的存储空间,提高网卡的存储空间的利用率。上述计算机可读介质的实施例中,所述处理器还用于执行如下步骤:接收发送给所述虚拟机的第二报文,所述第二报文为vxlan报文;判断所述网卡是否保存所述第二报文中的封装mac地址和封装ip地址;当所述网卡未保存所述第二报文的封装mac地址和封装ip地址时,将所述第二报文发送给所述中央处理器。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1