首页 / 专利库 / 钢铁加工 / 直接还原 / 一种数据转发装置和方法

一种数据转发装置和方法

阅读:832发布:2021-08-26

专利汇可以提供一种数据转发装置和方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种数据转发装置,应用于包括多个 服务器 、一个网卡共享设备的网络系统中的网卡共享设备上。在网卡共享设备上虚拟多个虚拟网卡单元,并在各服务器上运行一个或多个与虚拟网卡单元一一对应的虚拟网卡驱动程序,将各服务器发送的数据 帧 通过该共享网卡设备转发到外部网络或转发给其他服务器。基于同样的发明构思,本发明还提出一种方法,能够使多台服务器之间共享网卡资源。,下面是一种数据转发装置和方法专利的具体信息内容。

1.一种数据转发装置,其特征在于,应用于包括多个服务器、一个网卡共享设备的网络系统中的网卡共享设备上,该装置包括:管理单元、多个服务器接口单元、队列池及调度单元、多个虚拟网卡单元、融合交换单元和多个网络接口单元:
所述管理单元,用于建立转发关系表;
所述服务器接口单元,用于获取对应的服务器上运行的虚拟网卡驱动程序需要发送的数据,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧发送给队列池及调度单元;其中,第一融合描述符包含描述符类型和数据帧长度;每个服务器与服务器接口单元一一对应;每个服务器上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应;
所述队列池及调度单元,用于将接收到的第一融合描述符和数据帧,调度到发送该数据帧的虚拟网卡驱动程序对应的虚拟网卡单元;
所述虚拟网卡单元,用于接收到第一融合描述符和数据帧时,根据该第一融合描述符将该数据帧进行处理并封装为融合交换格式再发送给所述融合交换单元;其中,所述融合交换格式为以太网格式、多协议标签交换MPLS格式、因特网协议IP格式或系统定义的专有格式;
所述融合交换单元,用于接收到融合交换格式数据帧时,根据接收到的融合交换格式数据帧的信息字段在所述管理单元建立的转发关系表中进行查找,并根据查找到的结果将该融合交换格式数据帧发送到虚拟网卡单元或网络接口单元中;
所述网络接口单元,接收所述融合交换单元发送的融合交换格式数据帧时,还原该融合交换格式数据帧,并发送到外部网络。
2.根据权利要求1所述的装置,其特征在于,
所述网络接口单元,进一步用于接收外部网络发送的数据帧,将该数据帧封装为融合交换格式并发送给所述融合交换单元;
所述融合交换单元,进一步用于接收到融合交换格式数据帧时,根据接收到的融合交换格式数据帧的信息字段在所述管理单元建立的转发关系表中进行查找,并根据查找到的结果将该融合交换格式数据帧发送到虚拟网卡单元或网络接口单元中;
所述虚拟网卡单元,进一步用于接收到所述融合交换单元发送的融合交换格式数据帧时,还原该融合交换格式数据帧,进一步处理还原格式后的数据帧,根据处理结果为处理后的数据帧构造第二融合描述符,并将处理后的数据帧以及构造的第二融合描述符发送给所述队列池及调度单元;该第二融合描述符包含描述符类型和数据帧长度;
所述队列池及调度单元,进一步用于在接收到第二融合描述符和数据帧时,将该第二融合描述符和数据帧,调度到对应的服务器接口单元,该服务器接口单元与运行发送该第二融合描述符的虚拟网卡单元对应的虚拟网卡驱动程序的服务器对应;
所述服务器接口单元,进一步用于将该数据帧发送给与本服务器接口单元对应的服务器中,并将第二融合描述符的内容发送给该服务器,使所述服务器根据接收到的第二融合描述符的内容对接收到的数据帧进行处理。
3.根据权利要求2所述的装置,其特征在于,
所述第一融合描述符的内容还包含下述之一或任意组合:
数据帧的帧格式、是否添加或修改网络节点标识ID信息、是否重新计算校验和、是否进行加密、指导虚拟网卡单元如何处理数据帧的其它信息;
所述第二融合描述符的内容还包含下述之一或任意组合:
数据帧的帧格式、是否出现错误、虚拟网卡单元对数据帧的字段的判断结果,虚拟网卡单元提取或丢弃数据帧中的信息、虚拟网卡单元对数据帧进行的修改、虚拟网卡单元是否完成解密、虚拟网卡单元发现或已经处理的其它信息。
4.根据权利要求2所述的装置,其特征在于,
所述管理单元,进一步用于对所述队列池及调度单元中的各队列配置传输速率、优先级、调度策略和各队列的当前状态;
所述队列池及调度单元,进一步配置多个队列,并根据所述管理单元对各个队列的配置丢弃部分数据帧,或将数据帧调度到对应的服务器接口单元或虚拟网卡单元。
5.根据权利要求2-4任意一项所述的装置,其特征在于,
所述服务器接口单元,用于与对应的服务器通过外设组件互连标准的总线接口PCI Express点到点连接时,作为PCI Express链路的下游端点,配置多个发送引擎和接收引擎,并与所述队列池及调度单元中配置的队列一一对应;具体用于在对应的服务器上运行的虚拟网卡驱动程序需要发送数据帧时,根据所述发送引擎指向的当前有效的发送缓存buffer描述符从所述服务器内存中读取需要发送的数据帧,将该发送buffer描述符中除buffer空间起始地址之外的内容构造为第一融合描述符,并将该第一融合描述符和该数据帧写入所述队列池及调度单元中对应的队列;通过接收引擎读取服务器当前有效的接收buffer描述符,在该接收引擎对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,并将该数据帧写入所述接收buffer描述符所指的服务器的buffer中,并在回写所述接收buffer描述符时进一步携带该第二融合描述符的内容。
6.根据权利要求2-4任意一项所述的装置,其特征在于,
所述服务器接口单元,用于与对应的服务器通过以太网点到点连接时,配置多个发送引擎和接收引擎,并与所述队列池及调度单元中配置的队列一一对应;具体用于发送引擎接收到服务器发送的描述符和数据帧时,将该描述符的格式变换为第一融合描述符的格式作为第一融合描述符,并将该第一融合描述符和该数据帧发送给所述队列池及调度单元中对应的队列;通过所述接收引擎在该接收引擎对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,将第二融合描述符以及该数据帧发送给对应的服务器,使该服务器上运行的对应虚拟网卡驱动程序进一步处理所述第二融合描述符和数据帧。
7.根据权利要求2-4任意一项所述的装置,其特征在于,
所述管理单元,进一步用于配置网络格式、网络节点标识ID和媒质访问控制MAC地址的对应关系;
所述网络接口单元,具体用于当所述融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,根据该数据帧对应的目的网络节点ID和网络格式,根据所述管理单元配置的对应关系匹配对应的媒质访问控制MAC地址,并将源网络节点ID扩展为48位作为源MAC地址,使用匹配到的MAC地址作为目的MAC地址,扩展后的源网络节点ID作为源MAC地址封装该数据帧为以太网格式的数据帧;
所述虚拟网卡单元,具体用于当所述融合交换格式为以太网格式,且接收到队列池及调度单元发送的数据帧不为以太网数据帧时,根据该数据帧对应的目的网络节点ID和网络格式,根据所述管理单元配置的对应关系匹配对应的MAC地址,并将源网络节点ID扩展为48位作为源MAC地址,使用匹配到的MAC地址作为目的MAC地址,扩展后的源网络节点ID作为源MAC地址封装该数据帧为以太网格式的数据帧。
8.根据权利要求2-4任意一项所述的装置,其特征在于,
所述管理单元,用于为不同的网络格式分配不同的虚拟局域网标识VLAN ID;
所述网络接口单元,具体用于当所述融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,根据该数据帧的网络格式和所述管理单元的分配匹配到对应的VLAN ID,并将该数据帧的源网络节点ID扩展为48位作为源MAC地址,将该数据帧的目的网络节点ID扩展为48位作为目的MAC地址;使用扩展后的目的网络节点ID作为目的MAC地址、扩展后的源网络节点ID作为源MAC地址,以及匹配到的VLAN ID封装该数据帧为以太网格式的数据帧;
所述虚拟网卡单元,具体用于当所述融合交换格式为以太网格式,且接收到队列池及调度单元发送的数据帧不为以太网数据帧时,根据该数据帧的网络格式和所述管理单元的分配匹配到对应的VLAN ID,并将该数据帧的源网络节点ID扩展为48位作为源MAC地址,将该数据帧的目的网络节点ID扩展为48位作为目的MAC地址;使用扩展后的目的网络节点ID作为目的MAC地址、扩展后的源网络节点ID作为源MAC地址,以及匹配到的VLAN ID封装该数据帧为以太网格式的数据帧。
9.根据权利要求2-4任意一项所述的装置,其特征在于,
所述服务器接口单元,用于获取对应的服务器上的虚拟机VM运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧发送给所述队列池及调度单元;将接收到的数据帧,以及第二融合描述符的内容,发送给发送该数据帧的虚拟网卡单元对应虚拟网卡驱动程序运行的VM,使该VM上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理;其中,各服务器上通过虚拟机管理程序VMM实现多个虚拟机VM的虚拟环境,每个VM上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应。
10.根据权利要求9所述的装置,其特征在于,
所述管理单元,进一步用于获知任一VM迁移时,停止所述VM上运行的虚拟网卡驱动程序对应的虚拟网卡单元接收外部网络发送的数据帧的功能;使队列池及调度单元完成数据帧的收发,并停止接收功能的虚拟网卡单元的相关内容复制到目的共享网卡设备上的目的虚拟网卡单元和目的融合交换单元,所述目的虚拟网卡单元为迁移后的VM上运行的虚拟网卡驱动程序对应的虚拟网卡单元;当所述迁移后的VM上的虚拟网卡驱动程序启动时,启动所述目的虚拟网卡单元的收发功能。
11.根据权利要求1-4任意一项所述的装置,其特征在于,该装置还包括:一个或多个共享加速单元;
所述共享加速单元,用于接收到运行该共享加速单元对应的共享设备驱动程序的服务器发送的数据帧时,对该数据帧根据配置进行加速处理,并将处理结果返回发送该数据帧的服务器;若具有网络通信功能时,将处理结果封装为融合交换格式数据帧发送给所述融合交换单元或返回发送该数据帧的服务器。
12.一种数据转发方法,其特征在于,应用于包括多个服务器、一个网卡共享设备的网络系统中的网卡共享设备上,所述网卡共享设备上虚拟多个虚拟网卡;并建立转发关系表;
每个服务器上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与共享网卡设备上的虚拟网卡一一对应;所述方法包括:
获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧调度到发送该数据帧的虚拟网卡驱动程序对应的虚拟网卡上;其中,第一融合描述符包含描述符类型和数据帧长度;
接收到该数据帧和第一融合描述符的虚拟网卡,根据该第一融合描述符处理该数据帧,并将处理后的数据帧封装为融合交换格式数据帧,根据该融合交换格式数据帧的信息字段在建立的转发关系表中进行查找,根据查找结果确定该融合交换格式数据帧转发给服务器或者外部网络;若确定将该融合交换格式数据帧发送给外部网络,则直接还原该融合交换格式数据帧,并发送给外部网络;其中,所述融合交换格式为以太网格式、多协议标签交换MPLS格式、因特网协议IP格式或系统定义的专有格式。
13.根据权利要求12所述的方法,其特征在于,所述方法进一步包括:
接收到外部网络发送的数据帧时,将该数据帧封装为融合交换格式数据帧,根据融合交换格式数据帧的信息字段在建立的转发关系表中进行查找,并根据查找到的结果确定将该融合交换格式数据帧发送到服务器或外部网络;
若确定将该融合交换格式数据帧发送给服务器,则通过对应的虚拟网卡还原该融合交换格式数据帧并进一步处理还原格式后的数据帧,根据处理结果为处理后的数据帧构造第二融合描述符,并将处理后的数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,使所述服务器上运行的虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理;其中,该第二融合描述符包含描述符类型和数据帧长度。
14.根据权利要求13所述的方法,其特征在于,
所述第一融合描述符的内容还包含下述之一或任意组合:
数据帧的帧格式、是否添加或修改网络节点ID信息、是否重新计算校验和、是否进行加密、指导虚拟网卡单元如何处理数据帧的其它信息;
所述第二融合描述符的内容还包含下述之一或任意组合:
数据帧的帧格式、是否出现错误、虚拟网卡单元对数据帧的字段的判断结果,虚拟网卡单元提取或丢弃数据帧中的信息、虚拟网卡单元对数据帧进行的修改、虚拟网卡单元是否完成解密、虚拟网卡单元发现或已经处理的其它信息。
15.根据权利要求13所述的方法,其特征在于,
根据预先配置的传输速率、优先级、调度策略对接收到的数据帧进行部分丢弃处理,或将接收到的数据帧调度给服务器或虚拟网卡。
16.根据权利要求13-15任意一项所述的方法,其特征在于,
本网卡共享设备与所述服务器通过外设组件互连标准的总线接口PCI Express点到点连接时,作为PCI Express链路的下游端点,所述方法进一步包括:配置多个发送引擎和接收引擎,并分别对应一个队列;
所述获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧调度到发送该数据帧的虚拟网卡驱动程序对应的虚拟网卡上,包括:根据所述发送引擎指向的当前有效的发送缓存buffer描述符从所述服务器内存中读取需要发送的数据帧,将该发送buffer描述符中除buffer空间起始地址之外的内容构造为第一融合描述符,并将该第一融合描述符和获取的数据帧通过对应的队列调度到对应的虚拟网卡上;
所述将处理后的数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,包括:通过接收引擎读取服务器当前有效的接收buffer描述符,在该接收引擎对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,并将该数据帧写入所述接收buffer描述符所指的服务器的buffer中,并在回写所述接收buffer描述符时进一步携带该第二融合描述符的内容。
17.根据权利要求13-15任意一项所述的方法,其特征在于,
本网卡共享设备与所述服务器通过以太网点到点连接时,所述方法进一步包括:配置多个发送引擎和接收引擎,并分别对应一个队列;
所述获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,包括:发送引擎接收到服务器发送的描述符和数据帧时,将该描述符的格式变换为第一融合描述符的格式作为第一融合描述符,并将该第一融合描述符和该数据帧发送给对应的队列;
所述将处理后的数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,包括:通过所述接收引擎在对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,将第二融合描述符的内容,以及读取的数据帧发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器。
18.根据权利要求13-15任意一项所述的方法,其特征在于,所述方法进一步包括:配置网络格式、网络节点标识ID和媒质访问控制MAC地址的对应关系;
所述将该数据帧封装为融合交换格式数据帧,包括:当所述融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,根据该数据帧对应的目的网络节点ID和网络格式,在配置的网络格式、网络节点ID和MAC地址的对应关系中匹配对应的MAC地址,并将源网络节点ID扩展为48位作为源MAC地址,使用匹配到的MAC地址作为目的MAC地址,扩展后的源网络节点ID作为源MAC地址封装该数据帧为以太网格式的数据帧。
19.根据权利要求13-15任意一项所述的方法,其特征在于,所述方法进一步包括:为不同的网络格式分配不同的虚拟局域网标识VLAN ID;
所述将该数据帧封装为融合交换格式数据帧,包括:当所述融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,根据该数据帧的网络格式匹配为该网络格式分配的VLAN ID,并将该数据帧的源网络节点ID扩展为48位作为源MAC地址,将该数据帧的目的网络节点ID扩展为48位作为目的MAC地址;使用扩展后的目的网络节点ID作为目的MAC地址、扩展后的源网络节点ID作为源MAC地址,以及匹配到的VLAN ID封装该数据帧为以太网格式的数据帧。
20.根据权利要求13-15任意一项所述的方法,其特征在于,所述方法进一步包括:
所述获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,包括:获取服务器上的虚拟机VM运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符;
所述将处理后的数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,使所述服务器上运行的虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理,包括:将处理后的数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的VM,使该VM上运行的虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理;
其中,各服务器上通过虚拟机管理软件VMM实现多个虚拟机VM的虚拟环境,各VM上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应。
21.根据权利要求20所述的方法,其特征在于,所述方法进一步包括:
获知任一VM迁移时,停止所述VM上运行的虚拟网卡驱动程序对应的虚拟网卡接收外部网络发送数据帧的功能;完成对已接收到的数据帧的转发,并将停止接收功能的虚拟网卡上的相关内容复制到目的虚拟网卡,所述目的虚拟网卡为迁移后的VM上运行的虚拟网卡驱动程序对应的虚拟网卡;
当所述迁移后的VM上的虚拟网卡驱动程序启动后,启动所述目的虚拟网卡的收发功能。
22.根据权利要求12-15任意一项所述的方法,其特征在于,所述方法进一步包括:
接收到运行共享设备驱动程序的服务器发送的数据帧时,对该数据帧根据配置进行加速处理,并将处理结果返回发送该数据帧的服务器;若具有网络通信功能时,将处理结果发送给外部网络或返回发送该数据帧的服务器。

说明书全文

一种数据转发装置和方法

技术领域

[0001] 本发明涉及通信技术领域,特别涉及一种数据转发装置和方法。

背景技术

[0002] 10G以太网的出现,加之行业为满足存储和集群互联需求而对以太网协议进行的关键扩展,数据中心桥接协议(DCB)得到了发展,包括流量优先级控制,带宽管理和拥塞管理,可将使现有结构融合为基于以太网的统一整合型网络结构。这种结构将提供对其所支持的存储和计算处理资源的无缝访问
[0003] 在每台服务器上安装一融合局域网(LAN)/存储网络(SAN)/进程间通信(IPC)数据流的融合网络适配器(CNA)。与普通网络适配器一样,融合网络适配器直接焊接在服务器主板上,或独立设计为一块插卡并通过服务器上的主板插槽,如PCI Express Slot,与CPU/BMC紧密耦合,各服务器独立、直接管理和使用此融合网络适配器。
[0004] 由于各服务器独立配置一块融合网络适配器,无法多台服务器共享一块融合网络适配器。
[0005] 刀片服务器是指在标准高度的机架式机箱内可插装多个卡式的服务器单元,是一种实现HAHD(High Availability High Density,高可用高密度)的服务器平台,为特殊应用行业和高密度计算环境专设计。每一块“刀片”实际上就是一块系统主板。它们可以通过"板载"硬盘启动自己的操作系统,如Windows、Linux等,类似于一个个独立的服务器,在这种模式下,每一块主板运行自己的系统,服务于指定的不同用户群,相互之间没有关联。不过,管理员可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板可以连接起来提供高速的网络环境,并同时共享资源,为相同的用户群服务。在集群中插入新的"刀片",就可以提高整体性能。而由于每块"刀片"都是热插拔的,所以,系统可以轻松地进行替换,并且将维护时间减少到最小。
[0006] 这种结构可以大大减少互联电缆和光纤收发器,可以大大降低由于线缆连接故障带来的隐患,提高系统可靠性。最大限度地节约服务器的使用空间和费用。每个刀片服务器独立拥有其一块或多块网卡的资源,无法在不同刀片服务器间共享。
[0007] 综上所述,现有实现中无论是使用刀片服务器还是为每台服务器配置一块网络适配器,都不能在不同服务器间共享网卡资源。

发明内容

[0008] 有鉴于此,本发明提供数据转发装置和方法,能够使多台服务器之间共享网卡资源。
[0009] 为解决上述技术问题,本发明的技术方案是这样实现的:
[0010] 一种数据转发装置,应用于包括多个服务器、一个网卡共享设备的网络系统中的网卡共享设备上,该装置包括:管理单元、多个服务器接口单元、队列池及调度单元、多个虚拟网卡单元、融合交换单元和多个网络接口单元:
[0011] 所述管理单元,用于建立转发关系表;
[0012] 所述服务器接口单元,用于获取对应的服务器上运行的虚拟网卡驱动程序需要发送的数据,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧发送给队列池及调度单元;其中,第一融合描述符包含描述符类型和数据帧长度;每个服务器与服务器接口单元一一对应;每个服务器上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应;
[0013] 所述队列池及调度单元,用于将接收到的第一融合描述符和数据帧,调度到发送该数据帧的虚拟网卡驱动程序对应的虚拟网卡单元;
[0014] 所述虚拟网卡单元,用于接收到第一融合描述符和数据帧时,根据该第一融合描述符将该数据帧进行处理并封装为融合交换格式再发送给所述融合交换单元;其中,所述融合交换格式为以太网格式、多协议标签交换MPLS格式、因特网协议IP格式或系统定义的专有格式;
[0015] 所述融合交换单元,用于接收到融合交换格式数据帧时,根据接收到的融合交换格式数据帧的信息字段在所述管理单元建立的转发关系表中进行查找,并根据查找到的结果将该融合交换格式数据帧发送到虚拟网卡单元或网络接口单元中;
[0016] 所述网络接口单元,接收所述融合交换单元发送的融合交换格式数据帧时,还原该融合交换格式数据帧,并发送到外部网络。
[0017] 一种数据转发方法,应用于包括多个服务器、一个网卡共享设备的网络系统中的网卡共享设备上,所述网卡共享设备上虚拟多个虚拟网卡;并建立转发关系表;每个服务器上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与共享网卡设备上的虚拟网卡一一对应;所述方法包括:
[0018] 获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧调度到发送该数据帧的虚拟网卡驱动程序对应的虚拟网卡上;其中,第一融合描述符包含描述符类型和数据帧长度;
[0019] 接收到该数据帧和第一融合描述符的虚拟网卡,根据该第一融合描述符处理该数据帧,并将处理后的数据帧封装为融合交换格式数据帧,根据该融合交换格式数据帧的信息字段在建立的转发关系表中进行查找,根据查找结果确定该数据帧转发给服务器或者外部网络;若确定将该融合交换格式数据帧发送给外部网络,则直接还原该融合交换格式数据帧,并发送给外部网络;其中,所述融合交换格式为以太网格式、MPLS格式、IP格式或系统定义的专有格式。
[0020] 综上所述,本发明通过在网卡共享设备上虚拟多个虚拟网卡单元,并在各服务器上运行一个或多个与虚拟网卡单元一一对应的虚拟网卡驱动程序,将各服务器发送的数据帧通过该共享网卡设备转发到外部网络或转发给其他服务器,能够使多台服务器之间共享网卡资源。附图说明
[0021] 图1为本发明具体实施例中资源共享系统示意图;
[0022] 图2为队列池及调度单元结构示意图;
[0023] 图3为本发明实施例中服务器虚拟VM时共享资源系统示意图;
[0024] 图4为本发明实施例中装置的硬件架构组成示意图;
[0025] 图5为本发明实施例中接收服务器发送的数据帧的处理方式流程示意图;
[0026] 图6为本发明实施例中接收外部网络发送的数据帧的处理方式流程示意图。

具体实施方式

[0027] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
[0028] 本发明具体实施中提出一种数据转发装置,应用于包括多个服务器、和一个网卡共享设备的网络系统中的网卡共享设备上。通过在网卡共享设备上虚拟多个虚拟网卡单元,并在各服务器上运行一个或多个与虚拟网卡单元一一对应的虚拟网卡驱动程序,将各服务器发送的数据帧通过该共享网卡设备转发到外部网络或转发给其他服务器,能够使多台服务器之间共享网卡资源。
[0029] 该网卡共享设备可以为在网络系统中新增的设备,也可以为网络系统中与各服务器相连的交换设备,在该交换设备中配置多个虚拟网卡来实现即可。
[0030] 参见图1,图1为本发明具体实施例中资源共享系统示意图。该资源共享系统中包括n个服务器,一个网卡共享设备。数据转发装置应用于该网卡共享设备上。该装置包括、管理单元、n个服务器接口单元,与n个服务器一一对应连接、队列池及调度单元、m个虚拟网卡单元、融合交换单元和x个网络接口单元,其中,n、m、x可以相同也可以不相同,且n、m和x为大于1的自然数。
[0031] 每个服务器上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应。各服务器上运行的虚拟网卡驱动程序对应的虚拟网卡单元标识均不相同。
[0032] 管理单元,用于建立转发关系表。以太网广泛采用生成树和广播方式建立MAC转发表。FC采用网络登录和端口登录方式建立对应关系。每个网络都有各自的机制来使得各个节点能相互发送数据。管理单元根据各种网络格式的预订机制,如交换特殊协议帧、自动学习、手工配置等方式为各种网络格式建立独立的转发关系表。
[0033] 以该装置接收服务器的虚拟网卡驱动程序发送数据帧,进行融合交换处理为例:
[0034] 第一步,服务器接口单元获取对应的服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧发送给队列池及调度单元。
[0035] 其中,第一融合描述符至少包含描述符类型和数据帧长度。第一融合描述符还可以包含的内容为下述之一或任意组合:
[0036] 数据帧的帧格式、是否添加或修改网络节点ID信息、是否重新计算校验和、是否进行加密、指导虚拟网卡单元如何处理数据帧的其它信息。其中,数据帧的帧格式用于指示,虚拟网卡单元采用第一融合描述符支持的多种帧格式中的哪种帧格式进行发送。
[0037] 服务器目前广泛采用的高速串行IO链路有外设组件互连标准的总线接口(PCI Express)、串行快速输入输出互连总线(RapidIO)、以太网等多种点到点形式。
[0038] 从技术上讲,这些类型的服务器接口单元在服务器的配合下均可以实现一个服务器接口单元关联多个队列(具体实现在下文描述),虚拟网卡驱动程序发送一帧数据时通过一个下行队列往虚拟网卡单元发送第一融合描述符和数据帧。虚拟网卡驱动程序接收一帧数据时通过一个上行队列从虚拟网卡单元得到一个第二融合描述符和一个数据帧。
[0039] 下面给出在不同链接方式下,服务器接口单元的具体处理过程:
[0040] 1)、当服务器接口单元与对应服务器通过PCI Express点到点连接时,作为PCI Express链路的下游端点,配置多个发送引擎和接收引擎,与队列池及调度单元中配置的队列一一对应。
[0041] 图1中的服务器包括内存、硬盘、CPU和IO接口等。服务器的IO接口作为PCI Express链路的上游端点。服务器上运行的任一虚拟网卡驱动程序需要发送数据帧时,将该数据帧放置在服务器内存中一个缓存(buffer)空间,并在一个发送buffer描述符循环队列中设置一个buffer描述符,现有网卡广泛采用,不再描述。
[0042] buffer描述符的内容中除了包含buffer空间起始地址、数据帧长度等信息,还有指示网卡如何发送的信息,如本buffer的数据属于哪种帧格式、是否添加或修改网络节点ID信息、是否重新计算某个校验和、是否需要进一步加密、是否需要以TCP负荷形式发送。可选的,进一步还可包含通过多个队列中的哪个队列进行发送。
[0043] 当对应的服务器(如服务器1)上运行的虚拟网卡驱动程序需要发送数据帧时,服务器接口单元(服务器接口单元1)根据所述发送引擎指向的当前有效的发送buffer描述符从所述服务器内存中读取需要发送的数据帧,将该发送buffer描述符中除buffer空间起始地址之外的内容构造为第一融合描述符,并将该第一融合描述符和该数据帧写入所述队列池及调度单元中对应的队列。
[0044] 具体实现时,各发送引擎有地址寄存器,其指向一个buffer描述符循环队列中的一个buffer描述符。地址寄存器初始值由驱动软件设置。发送引擎根据地址寄存器的指示通过PCI Express存储器读操作来读取的当前buffer描述符。如果读取的buffer描述符无效,即没有待发送数据,继续读取当前指向的buffer描述表项。如果读取的buffer描述符有效,准备发送。
[0045] 每读取一个有效buffer描述符,判断对应的下行队列是否有足够空间。有足够空间时,发送引擎将buffer描述符中全部或部分信息以第一融合描述符的格式写入一个下行队列;接着PCI Express存储器读操作读取buffer空间数据附加在后面。其中,无论是buffer描述符中的全部或部分信息,都不包括buffer描述符中的buffer空间起始地址。
[0046] 完成数据帧发送后,一般地触发中断并通过PCI Express存储器写操作回写buffer描述符为无效,以便指示此buffer描述符已经处理完成。接着主动更新其地址寄存器以指向buffer描述符循环队列中下一个buffer描述符。
[0047] 2)、当服务器接口单元与对应服务器通过以太网点到点连接时,配置多个发送引擎,并与所述队列池及调度单元中配置的队列一一对应。
[0048] 服务器上运行的虚拟网卡驱动程序需要发送数据帧时,通过IO接口将该数据帧,以及发送该数据帧的描述符发送给对应的服务器接口单元。
[0049] 服务器接口单元通过所述发送引擎接收到对应服务器发送的描述符和数据帧时,将该描述符的格式变换为第一融合描述符的格式作为第一融合描述符,并将该第一融合描述符和该数据帧发送给所述队列池及调度单元中对应的队列。
[0050] 服务器接口单元接收到的描述符中如果有buffer空间起始地址,还在变化为第一融合描述符格式时,删除描述符中包含的buffer空间起始地址。
[0051] 3)、当服务器接口单元与对应服务器通过串行RapidIO点到点连接时,因为串行RapidIO既能工作在类似PCI Express的存储器读写模式,也能工作在类似以太网的消息传递模式,因此可以参考PCI Express或以太网来实现获取对应服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧发送给队列池及调度单元。
[0052] 第二步,队列池及调度单元将接收到的第一融合描述符和数据帧,调度到发送该数据帧的虚拟网卡驱动程序对应的虚拟网卡单元。
[0053] 管理单元若对所述队列池及调度单元中的各队列配置传输速率、优先级、调度策略和各队列的当前状态。
[0054] 队列池及调度单元,还可以配置多个队列,并用于根据管理单元对各个队列的配置丢弃部分数据帧,或将数据帧调度到对应的虚拟网卡单元。
[0055] 参见图2,图2为队列池及调度单元结构示意图。图2中,队列池及调度单元中配置多个队列,多个队列分为多组上下行队列,服务器上的虚拟网卡驱动程序与虚拟网卡单元之间通过上行队列和下行队列组成的双向队列池进行通信。
[0056] 一个服务器接口单元可能关联一组上下行队列,也可能关联多组上下行队列,图2中显示一个服务器接口单元关联了n组上下行队列。
[0057] 每个服务器接口单元能感知每个关联队列的状态,如每个下行和上行队列中的使用量,并根据预先设置针对每个关联队列的状态给服务器发出信息,如中断消息或流控消息。
[0058] 服务器上的虚拟网卡驱动程序发送数据帧时,对应的服务器接口单元将该数据帧和第一融合描述符通过关联的一个下行队列发送到队列调度单元,再由队列调度单元调度到对应的虚拟网卡单元。
[0059] 服务器接口单元将数据帧和第一融合描述符通过其关联的哪个下行队列发送,根据具体配置实现,如,每个虚拟网卡驱动程序对应一个双向队列,和一个虚拟网卡单元。或每个发送引擎对应一个虚拟网卡驱动程序,一个双向队列,和一个虚拟网卡单元。
[0060] 第三步,虚拟网卡单元,用于根据所述第一融合描述符将该数据帧进行处理并封装为融合交换格式再发送给所述融合交换单元。
[0061] 虚拟网卡单元根据第一融合描述符处理数据帧,同现有实现中,根据普通描述符处理数据帧的方式一致,只是本发明实施例中的第一融合描述符不包含原普通描述符中的buffer起始地址。
[0062] 第三步中融合交换格式为以太网格式、多协议标签交换(MPLS)格式、IP格式或系统定义的专有格式;即将接收到的不同格式的数据帧按照一定规则,重封装为统一的一种格式,并且可以还原为封装前的格式,该统一的格式为本发明具体实施例所提到的融合交换格式。
[0063] 以太网交换被广泛使用,以融合交换格式为以太网格式为例,可以使用以太网交换专用器件作为融合交换单元,以太网交换专用器件一般采用目的MAC或目的MAC+VLAN ID来判断以太网帧的目的端口,并且能根据源MAC或源MAC+VLAN ID在管理单元的指导下或自主学习来建立转发表。
[0064] 除了正常的单播转发,以太网交换器件还有成熟的机制来支持VLAN内广播、组播。以太网目的MAC地址为48比特,前24比特由IEEE分配,后24比特由网络制造商分配。VLAN ID为12比特,一般由网络系统运营商灵活配置。本发明具体给出两种实现方式:
[0065] 第一种,管理单元为各虚拟网卡单元配置网络格式、网络节点ID和MAC地址的对应关系。
[0066] 每个虚拟网卡单元和网络接口单元支持一种网络格式,如以太网/FCoE、FC、串行RapidIO、Infiniband等之一,对应地关联配置一个网络节点ID,如以太网的MAC地址、FC网的端口ID、RapidIO的节点地址、Infiniband的本地标识符LID等。
[0067] 每个网络接口单元支持一种网络格式,如以太网/FCoE、FC、串行RapidIO、Infiniband等之一。可选地,对应地关联配置一个网络类型节点ID,如以太网的MAC地址、FC网的端口ID、RapidIO的节点地址、Infiniband的本地标识符LID等。
[0068] 当融合交换格式为以太网格式,且接收到队列池及调度单元发送的数据帧不为以太网数据帧时,虚拟网卡单元根据该数据帧对应的目的网络节点ID和网络格式,在所述管理单元配置的对应关系中匹配对应的MAC地址,并将源网络节点ID扩展为48位作为源MAC地址,使用匹配到的MAC地址作为目的MAC地址,扩展后的源网络节点ID作为源MAC地址封装该数据帧为以太网格式的数据帧。
[0069] 虚拟网卡单元或网络接口单元在封装融合交换格式时,也提供网络格式和数据帧的源地址给管理单元,以便管理单元建立该网络格式的转发表。本申请具体实施例中提到的网络格式即为数据帧的帧格式。
[0070] 第二种,管理单元为不同的网络格式分配不同的VLAN ID,以便区分以太网、FC、RapidIO、Infiniband等网络格式。
[0071] 当所述融合交换格式为以太网格式,且接收到队列池及调度单元发送的数据帧不为以太网数据帧时,虚拟网卡单元根据该数据帧的网络格式和管理单元的分配匹配到对应的VLAN ID,并将该数据帧的源网络节点ID扩展为48位作为源MAC地址,将该数据帧的目的网络节点ID扩展为48位作为目的MAC地址;使用扩展后的扩展后的目的网络节点ID作为目的MAC地址、扩展后的源网络节点ID作为源MAC地址,以及匹配到的VLAN ID封装该数据帧为以太网格式的数据帧。
[0072] 第四步,融合交换单元根据接收到的融合交换格式数据帧的信息字段在所述管理单元中建立的转发关系表中进行查找,并根据查找到的结果将该融合交换格式数据帧发送到虚拟网卡单元或网络接口单元。在具体实现时,也可能是管理单元。
[0073] 转发关系表是在管理单元中建立,并存储在管理单元中,也可以由管理单元建立并下发给融合交换单元,融合交换单元只需根据这个静态转发关系表转发融合交换格式数据帧,按照正常以太网交换机制工作。
[0074] 第五步,网络接口单元接收到融合交换单元的融合交换格式数据帧,还原该融合交换格式数据帧,并发送到外部网络。
[0075] 第六步,虚拟网卡单元接收到融合交换单元发送的融合交换格式数据帧时,还原该融合交换格式数据帧,进行处理并发送给队列池及调度单元。
[0076] 第四步之后执行第五步还是第6步,根据查找转发关系表的结果确定,如果在转发关系表中查找到的出接口为虚拟网卡单元对应的接口,则转发给虚拟网卡单元,执行第六步;如果查找到的出接口为网络接口单元对应的接口,则转发给网络接口单元,执行第五步。
[0077] 以该装置接收到外部网络发送的数据帧向服务器转发为例,具体处理流程如下:
[0078] 第一步,网络接口单元接收到外部网络发送的数据帧,将该数据帧封装为融合交换格式并发送给所述融合交换单元。
[0079] 第一步中融合交换格式为以太网格式、MPLS格式、IP格式或系统定义的专有格式;即将接收到的不同格式的数据帧按照一定规则,重封装为统一的一种格式,该统一的格式为本发明具体实施例所提到的融合交换格式。
[0080] 以太网交换被广泛使用,以融合交换格式为以太网格式为例,可以使用以太网交换专用器件作为融合交换单元,以太网交换专用器件一般采用目的MAC或目的MAC+VLAN ID来判断以太网帧的目的端口,并且能根据源MAC或源MAC+VLAN ID在管理单元的指导下或自主学习来建立转发表;除了正常的单播转发,以太网交换器件还有成熟的机制来支持VLAN内广播、组播。以太网目的MAC地址为48比特,前24比特由IEEE分配,后24比特由网络制造商分配。VLAN ID为12比特,一般由网络系统运营商灵活配置。本发明具体给出两种实现方式:
[0081] 第一种,管理单元为各虚拟网卡单元配置网络格式、网络节点ID和MAC地址的对应关系。
[0082] 每个虚拟网卡单元支持一种网络格式,如以太网、FCoE、FC、串行RapidIO、Infiniband等之一,对应地关联配置一个网络节点ID,如以太网的MAC地址、FC网的端口ID、RapidIO的节点地址、Infiniband的本地标识符LID等。
[0083] 当融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,网络接口单元根据该数据帧对应的目的网络节点ID和网络格式,根据所述管理单元配置的对应关系匹配对应的MAC地址,并将源网络节点ID扩展为48位作为源MAC地址,使用匹配到的MAC地址作为目的MAC地址,扩展后的源网络节点ID作为源MAC地址封装该数据帧为以太网格式的数据帧。
[0084] 虚拟网卡单元或网络接口单元在封装融合交换格式时,也提供网络格式和数据帧的源地址给管理单元,以便管理单元建立该网络格式的转发表。本申请具体实施例中提到的网络格式即为网络格式。
[0085] 第二种,管理单元为不同的网络格式分配不同的VLAN ID。
[0086] 当所述融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,虚拟网卡单元根据该数据帧的网络格式和管理单元的分配匹配到对应的VLAN ID,并将该数据帧的源网络节点ID扩展为48位作为源MAC地址,将该数据帧的目的网络节点ID扩展为48位作为目的MAC地址;使用扩展后的扩展后的目的网络节点ID作为目的MAC地址、扩展后的源网络节点ID作为源MAC地址,以及匹配到的VLAN ID封装该数据帧为以太网格式的数据帧。
[0087] 第二步,融合交换单元接收到融合格式数据帧时,根据该融合交换格式数据帧的信息字段在所述管理单元中建立的转发关系表中进行查找,并根据查找到的结果将该融合交换格式数据帧发送到虚拟网卡单元或网络接口单元。具体实现时,也可能是管理单元。
[0088] 转发关系表是在管理单元中建立,并存储在管理单元中,也可以由管理单元建立并下发给融合交换单元,融合交换单元只需根据这个静态转发关系表转发融合交换格式数据帧,按照正常以太网交换机制工作。
[0089] 第三步,虚拟网卡单元接收到融合交换单元发送的融合交换格式数据帧时,还原该融合交换格式数据帧,进一步处理还原格式后的数据帧,根据处理结果为该数据帧构造第二融合描述符,并将该数据帧以及构造的第二融合描述符发送给所述队列池及调度单元。
[0090] 其中,该第二融合描述符至少包含描述符类型和数据帧长度。
[0091] 该第二融合描述符的内容还包含下述之一或任意组合:
[0092] 数据帧的帧格式、是否出现错误、虚拟网卡单元对数据帧的字段的判断结果,虚拟网卡单元提取或丢弃数据帧中的信息、虚拟网卡单元对数据帧进行的修改、虚拟网卡单元是否完成解密、虚拟网卡单元发现或已经处理的其它信息。
[0093] 第四步,队列池及调度单元将所述第二融合描述符和数据帧,调度到对应的服务器接口单元,该服务器接口单元与运行发送该第二融合描述符的虚拟网卡单元对应的虚拟网卡驱动程序的服务器对应。
[0094] 若管理单元对所述队列池及调度单元中的各队列配置传输速率、优先级、调度策略和各队列的当前状态,队列池及调度单元,还可以用于配置多个队列,并根据管理单元对各个队列的配置丢弃部分数据帧,或将数据帧调度到对应的服务器接口单元。
[0095] 如图2中,队列池及调度单元可以通过对应的上行队列将该数据帧和第二融合描述符调度到对应的服务器接口单元。
[0096] 第五步,服务器接口单元将获取的数据帧写到与本服务器接口单元对应的服务器中,并将第二融合描述符的内容发送给该服务器,使所述服务器上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理。
[0097] 服务器目前广泛采用的高速串行IO链路有PCI Express、串行RapidIO、以太网等多种点到点形式。下面详细描述通过不同方式连接时,服务器接口单元的具体处理过程:
[0098] 1)、当服务器接口单元与所述服务器通过PCI Express点到点连接时,作为PCI Express链路的下游端点,配置多个接收引擎,与所述队列池及调度单元中的队列对应。
[0099] 接收引擎主动将上行队列中数据帧搬移到服务器的内存中一个个buffer空间,与一般的网络数据接收机制类似:
[0100] 服务器上运行的虚拟网卡驱动程序需要在服务器内存中预留一组或多组buffer空间,对应地在一个或多个接收buffer描述符循环队列中的设置一组buffer描述符,现有网卡广泛采用,不再描述,每个buffer描述符其内包含buffer空闲标识、buffer空间起始地址、buffer长度等信息。可选的,进一步通过多个队列中的哪个队列进行接收。
[0101] 服务器接口单元读取对应的服务器当前有效的接收buffer描述符,在该接收引擎对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,并将该数据帧写入所述接收buffer描述符所指的服务器的buffer中,并在回写所述接收buffer描述符时进一步携带该第二融合描述符的内容。
[0102] 具体实现时,接收引擎有地址寄存器,其指向一个buffer描述符循队列中的一个buffer描述符。地址寄存器初始值由驱动软件设置。接收引擎根据地址寄存器的指示通过PCI Express存储器读操作来读取的当前buffer描述符。如果读取的buffer描述符无效,即非空闲buffer,继续读取当前指向的buffer描述符。如果读取的buffer描述符有效,即空闲buffer,准备接收。
[0103] 每读取一个有效buffer描述符,判断对应的上行行队列是否有数据可以读取。有数据时,接收引擎先读取一个第二融合描述符;根据第二融合描述符接着读取附加在后面数据帧,通过PCI Express存储器写操作写入buffer描述符指示的服务器内存中的一个buffer空间。
[0104] 完成数据帧接收后,一般地触发中断并PCI Express存储器写操作回写buffer描述符以便指示此buffer描述符已经处理完成,指示对应buffer为非空闲状态。回写的buffer描述符进一步携带第二融合接收描述符中部分或全部信息,接着主动更新其地址寄存器指向下一个buffer描述符。
[0105] 2)、当服务器接口单元与对应服务器通过以太网点到点连接时,配置多个接收引擎,与所述队列池及调度单元中的队列对应。
[0106] 服务器接口单元,用于在所述接收引擎对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,将第二融合描述符以及该数据帧发送给对应的服务器,使该服务器上运行的对应虚拟网卡驱动程序进一步处理所述第二融合描述符和数据帧。
[0107] 服务器上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容处理接收到的数据帧。其中,所述对应的虚拟网卡驱动程序,为发送该数据帧的虚拟网卡单元对应的虚拟网卡驱动程序。
[0108] 可选的,所述第二融合描述符格式与服务器IO接口接收数据帧时的描述符格式可能不同,服务器上运行的对应虚拟网卡驱动程序同时结合这两个描述符来处理接收到的数据帧。
[0109] 可选的,指明哪个虚拟网卡驱动程序需要接收该数据帧,如在第二融合描述符中携带,或在以太网帧中增加一个VLAN标签,以便服务器关联到多个虚拟网卡驱动程序的一个。
[0110] 3)、当服务器接口单元与对应服务器通过串行RapidIO点到点连接时,因为串行RapidIO既能工作在类似PCI Express的存储器读写模式,也能工作在类似以太网的消息传递模式,因此可以参考PCI Express或以太网来实现将数据帧发送给与本服务器接口单元对应的服务器中,并将第二融合描述符的内容发送给该服务器,使所述服务器上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理。
[0111] 第六步,网络接口单元接收到融合交换单元的融合交换格式数据帧,还原该融合交换格式数据帧,并发送到外部网络。
[0112] 第二步之后执行第三步还是第六步,根据查找转发关系表的结果确定,如果在转发关系表中查找到的出接口为虚拟网卡单元对应的接口,则转发给虚拟网卡单元,执行第三步;如果查找到的出接口为网络接口单元对应的接口,则转发给网络接口单元,执行第六步。
[0113] 下面详细描述第一融合描述符和第二融合描述符的实现。
[0114] 第一融合描述符指示虚拟网卡单元如何发送一个数据帧。一般至少包含描述符的类型和数据帧的长度信息。
[0115] 还可以包括如下具体信息:
[0116] 数据帧的帧格式,也可称为网络格式,如以太网、光纤通道(FC)、因特网小型计算机系统接口(iSCSI)、快速输入输出互连总线(RapidIO)、多并发互连总线(Infiniband)、远程直接存储器访问(RDMA)等;
[0117] 是否添加或修改网络节点ID信息、如以太网的MAC地址和VLAN标签等;
[0118] 是否重新计算校验和,如以太网帧的FCS、IP头校验和、TCP校验和、UDP校验和等;
[0119] 是否进行加密,如IPSec安全联盟信息等;
[0120] 指导虚拟网卡单元如何处理数据帧的其它信息等其他可选信息。
[0121] 为了更清楚、简洁表示各种网络发送和接收特征,第一融合描述符的类型不止一种。
[0122] 第一融合描述符可以统一定义多种可以区分的格式,如,针对以太网和FCoE定义2种格式、针对RapidIO定义1种格式、针对Infiniband定义1种格式、针对RDMA定义1种格式等。
[0123] 举例如下,其在64比特普通描述符基础上进一步定义扩展类型,普通发送描述符适用于普通以太网帧发送;各种扩展发送描述符适用于其它帧格式或指示虚拟网卡分担更多功能。
[0124] (1)普通发送描述符,适用于普通以太网帧发送。适用于普通以太网帧发送的第一融合描述符包含的内容见表1。
[0125]63-48 47-40 39-32 31-24 23-16 15-0
VLAN HEADLEN MACLEN CMD RSV Length
[0126] 表1
[0127] 其中,Length:待发送的数据长度。
[0128] MACLEN:表示MAC头+VLAN长度,以便虚拟网卡进行IP头checksum计算。
[0129] HEADLEN:表示IP头长度,以便虚拟网卡计算IP头checksum。
[0130] VLAN:提供802.1q/802.1ac标签信息。
[0131] CMD:Command Byte,进一步展开后包含的内容见表2。
[0132]7 6 5 4 3 2 1 0
DEXT VLE RSV RSV IXSM TXSM IFCS EOP
[0133] 表2
[0134] 其中,DEXT:Descriptor extension描述符扩展标识。1’b0表示非扩展(即普通描述符);1’b1表示扩展。
[0135] VLE:VLAN Packet Enable,VLAN使能,表示本帧发送时需要添加VLAN标签。
[0136] TXSM:指示虚拟网卡添加TCP/UDP checksum。
[0137] IXSM:指示虚拟网卡添加IP checksum。
[0138] IFCS:Insert FCS,插入FCS,表示需要添加以太网帧的FCS字段。
[0139] EOP:End of Packet,对应一个帧的最后一个描述符。
[0140] RSV:表示保留未用。
[0141] (2)扩展发送描述符之一,适用于以太网帧和FCoE增强发送。适用于以太网帧和FCoE增强发送的第一融合描述符包含的内容见表3。
[0142]63-48 47-40 39-32 31-24 23-16 15-0
VLAN HEADLEN MACLEN CMD ETYPE Length
Ipsec SA IDX L4LEN RSV ECMD FCoEF MSS
[0143] 表3
[0144] 其中,Length:待发送的数据长度。
[0145] MACLEN:对于非FCoE帧,表示MAC头+VLAN长度,以便虚拟网卡进行IP头checksum计算;对于FCoE帧,表示MAC头+VLAN+FCoE头长度,以便虚拟网卡进行FC-CRC计算。
[0146] HEADLEN:对于IP帧,表示IP头长度,以便虚拟网卡计算IP头checksum;对于FCoE帧,表示FCoE帧头长度,包括MAC头+VLAN+FCoE头+FC头长度。
[0147] VLAN:提供802.1q/802.1ac标签信息。
[0148] L4LEN:L4头长度。
[0149] Ipsec SA IDX:IPsec SA Index,指示安全联盟表的一个表项,以便虚拟网卡采用对应密钥进行加密。
[0150] MSS:Maximum Segment Size。TCP和FCoE帧的最大分片字节数。
[0151] ETYPE:扩展描述符类型编码,8’h02为扩展描述符之一。
[0152] FCoEF:指示虚拟网卡如何给FCoE帧添加E-SOF和E-EOF。
[0153] CMD:Command Byte,进一步展开后包含的具体内容参见表4。
[0154]7 6 5 4 3 2 1 0
DEXT VLE FCoE RSV IXSM TXSM IFCS EOP
[0155] 表4
[0156] 其中,DEXT:Descriptor extension描述符扩展标识。1’b0表示非扩展;1’b1表示扩展(本描述符设置为1’b1)。
[0157] VLE:VLAN Packet Enable,VLAN使能,表示本帧发送时需要添加VLAN标签。
[0158] FCoE:指示虚拟网卡是按FCoE帧处理,还是非FCoE帧。
[0159] TXSM:指示虚拟网卡添加TCP/UDP checksum。
[0160] IXSM:指示虚拟网卡添加IP checksum。
[0161] IFCS:Insert FCS,插入FCS,表示需要添加以太网帧的FCS字段。
[0162] EOP:End of Packet,对应一个帧的最后一个描述符。
[0163] 表3中ECMD:Extension Command Byte,进一步展开后包含的具体内容参见表5。
[0164]7 6-5 4 3 2 1 0
TSE L4T IPV4 Encrypt IPSEC_TYPE RSV RSV
[0165] 表5
[0166] 其中,TSE:指示虚拟网卡必要时启动TCP和FCoE帧分片。
[0167] L4T:L4负载类型(00:UDP;01:TCP;10:SCTP;11:RSV)。
[0168] IPV4:IP包类型(1:IPv4;0:IPv6)。
[0169] Encrypt:指示虚拟网卡是否启动IPSec加密。
[0170] IPSEC_TYPE:是ESP还是HA。
[0171] (3)扩展发送描述符之二,适用于RDMA操作,适用于RDMA操作的第一描述包含的内容参见表6。
[0172]
[0173] 表6
[0174] 其中,Length:待发送的数据长度,DMA的数据长度。
[0175] SEQ:系列号,记录本连接操作序号。
[0176] Source Node ID:本地Node ID,IP+TCP端口号。
[0177] Source Memory Address:本地服务器64比特内存物理地址,DMA的起始地址。
[0178] Remote Node ID:远端Node ID,IP+TCP端口号。
[0179] Remote Memory Address:远端服务器64比特内存物理地址,DMA的起始地址。
[0180] ETYPE:扩展描述符类型编码,8’h03为扩展描述符之二。
[0181] CMD:Command Byte,进一步展开后的内容参见表7。
[0182]7 6 5 4 3 2 1 0
DEXT VLE TCP/ETH WE/RD TOE RSV IFCS RSV
[0183] 表7
[0184] DEXT:Descriptor extension描述符扩展标识。1’b0表示非扩展;1’b1表示扩展(本描述符设置为1’b1)。
[0185] VLE:VLAN Packet Enable,VLAN使能,表示本帧发送时需要添加VLAN标签。
[0186] TCP/ETH:指示虚拟网卡是按RDMA over TCP还是RDMA over Ethernet。
[0187] WE/RD:指示是RDMA读操作,还是RDMA写操作。RDMA读操作
[0188] TOE:指示虚拟网卡执行TCP协议栈。
[0189] IFCS:Insert FCS,插入FCS,表示需要添加以太网帧的FCS字段。
[0190] 第二融合描述符表示虚拟化网卡单元接收一个数据帧时发现的一些信息。一般至少包含数据帧长度和第二融合描述符的类型,还可以包括如下具体信息:
[0191] 数据帧的帧格式,如以太网、FC、iSCSI、RapidIO、Infiniband、RDMA等;
[0192] 是否出现某些错误,如某校验和出错、数据帧长度异常等;
[0193] 虚拟网卡是否已经剥离数据帧的某些字段,如以太网帧的FCS等;
[0194] 虚拟网卡是否完成解密,如IPSec等;
[0195] 虚拟网卡从数据帧提取了某些字段,如以太网帧的VLAN标签、IP报文五元组信息等。
[0196] 虚拟网卡单元对数据帧的字段的判断结果、虚拟网卡单元对数据帧进行的修改等其它可选信息。
[0197] 为了更清楚、简洁表示各种网络发送和接收特征,第二融合描述符的类型不止一种。
[0198] 第二融合描述符可以统一定义多种可以区分的格式,如针对以太网和FCoE定义2种格式、针对RapidIO定义1种格式、针对Infiniband定义1种格式、针对RDMA定义1种格式等。举例如下,其在64比特普通描述符基础上进一步定义扩展类型,普通接收描述符适用于普通以太网帧接收;各种扩展接收描述符适用于其它帧格式或指示虚拟网卡分担更多功能。
[0199] (1)普通接收描述符,适用于普通以太网帧接收,适用于普通以太网帧接收的第二融合描述符包含的内容参见表8。
[0200]63-48 47-40 39-32 31-24 23-16 15-0
VLAN Tag Errors RSV Status RSV Length
[0201] 表8
[0202] 其中,Length:接收的数据长度。
[0203] VLAN:提取的802.1q/802.1ac标签信息。
[0204] Status:状态信息字节,进一步展开后的内容参见表9。
[0205]7 6 5 4 3 2 1 0
PIF IPCS L4CS UDPCS VP EOP SOP DEXT
[0206] 表9
[0207] 其中,DEXT:Descriptor extension描述符扩展标识。1’b0表示非扩展(本描述符设置为1’b0);1’b1表示扩展。
[0208] VP:VLAN Packet,指示输入帧是否携带VLAN标签。
[0209] IPCS:Ipv4Checksum,指示完成了IP头校验,结果在IPE。
[0210] L4CS:L4Checksum,指示完成了L4校验,结果在L4E。
[0211] UDPCS:UDP Checksum,指示完成了L4校验是UDP还是TCP。
[0212] PIF:Non Unicast Address,指示输入帧的MAC是否为单播。
[0213] EOP:End of Packet,对应一个帧的最后一个描述符。
[0214] SOP:Start of Packet,对应一个帧的第一个描述符。
[0215] 表8中Errors:错误信息字节,进一步展开后包含的内容参见表10。
[0216]7 6 5 4 3 2 1 0
IPE L4E RSV RSV RSV RSV RSV RXE
[0217] 表10
[0218] 其中,IPE:Ipv4Checksum Error,IP头校验结果。
[0219] L4E:L4校验结果,如TCP/UDP Checksum Error。
[0220] RXE:其它以太网帧错误,如CRC错误、链路错误、各种长度错误。
[0221] 表8中RSV:表示保留未用。
[0222] (2)扩展接收描述符之一,适用于以太网帧和FCoE增强接收,适用于太帧和FCoE增强接收的第二融合描述符包含的内容参见表11。
[0223]
[0224] 表11
[0225] 其中,Length:接收的数据长度。
[0226] ETYPE:扩展描述符类型编码,8’h01为扩展描述符之一。
[0227] VLAN:提取的802.1q/802.1ac标签信息。
[0228] Status:状态信息字节,进一步展开包含的内容参见表12。
[0229]
[0230] 表12
[0231] 其中,DEXT:Descriptor extension描述符扩展标识。1’b0表示非扩展;1’b1表示扩展(本描述符设置为1’b1)。
[0232] VP:VLAN Packet,指示输入帧是否携带VLAN标签。
[0233] IPCS:Ipv4Checksum,指示完成了IP头校验,结果在IPE。
[0234] L4CS:L4Checksum,指示完成了L4校验,结果在L4E。
[0235] UDPCS:UDP Checksum,指示完成了L4校验是UDP还是TCP。
[0236] PIF:Non Unicast Address,指示输入帧的MAC是否为单播。
[0237] EOP:End of Packet,对应一个帧的最后一个描述符。
[0238] SOP:Start of Packet,对应一个帧的第一个描述符。
[0239] FCSTAT:FCoE Status,FCoE帧的FC状态。
[0240] FCEOFs:与错误信息的FCEOFe共同表示EOF/SOF系列状态。
[0241] 表11中Ext.Status:状态信息扩展字节,进一步展开包含的内容参见表12。
[0242]7 6 5 4 3 2 1 0
SECP UDPV VEXT RSV RSV RSV RSV RSV
[0243] 表13
[0244] 其中,SECP:IPSec命中SA,并进行了处理。
[0245] UDPV:UDP Checksum Valid,表示接收帧为UDP,且含有非零Checksum,Fragment Checksum字段有效。
[0246] VEXT:双VLAN帧。
[0247] 表11中Errors:错误信息字节,进一步展开包含的内容见表14。
[0248]
[0249] 表14
[0250] 其中IPE:Ipv4Checksum Error,IP头校验结果。
[0251] FCEOFe:与状态信息的FCEOFs共同表示EOF/SOF系列状态。
[0252] L4E:L4校验结果,如TCP/UDP Checksum Error。
[0253] RXE:其它以太网帧错误,如CRC错误、链路错误、各种长度错误。
[0254] FCERR:FCoE错误码,3’b000表示无错误;3’b001表示错误的FC CRC;依此定义。
[0255] 表11中Ext.Errors:错误信息扩展字节,进一步展开包含的内容见表15。
[0256]
[0257] 表15
[0258] 其中,SECERR:IPSec错误码,3’b000表示无错误;2’b001表示SA没命中;2’b010表示摘要错误;依此定义。
[0259] 表11中HDR_LEN:头部长度,不同的帧类型长度不同。
[0260] Packet Type:识别的帧类型,分为L2还是非L2,进一步展开包含的内容见表16。
[0261]
[0262] 表16
[0263] 其中,表11中FCoE_PARAM:针对FCoE帧,提取的FCoE一些参数。
[0264] RSS Hash/RSS TYPE:HASH某些字段,以便实现分配到多核CPU之一。
[0265] Fragment Checksum:针对UDP帧,状态信息中UDPV有效时,此字段有效。
[0266] (3)扩展接收描述符之二,适用于RDMA读操作,适用于RDMA操作的第二描述符的内容参见表17。
[0267]
[0268] 表17
[0269] 其中,Length:接收的数据长度。
[0270] ETYPE:扩展描述符类型编码,8’h03为扩展描述符之二。
[0271] VLAN:提取的802.1q/802.1ac标签信息。
[0272] SEQ:系列号,记录本连接操作序号。
[0273] Source Node ID:本地Node ID,IP+TCP端口号。
[0274] Source Memory Address:本地服务器64比特内存物理地址,DMA的起始地址。
[0275] Remote Node ID:远端Node ID,IP+TCP端口号。
[0276] Remote Memory Address:远端服务器64比特内存物理地址,DMA的起始地址。
[0277] Status:状态信息字节,进一步展开包含的内容见表18。
[0278]7 6 5 4 3 2 1 0
RSV IPCS L4CS RSV VP EOP SOP DEXT
[0279] 表18
[0280] 其中,DEXT:Descriptor extension描述符扩展标识。1’b0表示非扩展(本描述符设置为1’b0);1’b1表示扩展。
[0281] VP:VLAN Packet,指示输入帧是否携带VLAN标签。
[0282] IPCS:Ipv4Checksum,指示完成了IP头校验,结果在IPE。
[0283] L4CS:L4Checksum,指示完成了L4校验,结果在L4E。
[0284] EOP:End of Packet,对应一个帧的最后一个描述符。
[0285] SOP:Start of Packet,对应一个帧的第一个描述符。
[0286] 表17中Errors:错误信息字节,进一步展开包含的内容参见表19。
[0287]7 6 5 4 3 2 1 0
IPE L4E RSV RSV RSV RSV RSV RXE
[0288] 表19
[0289] 其中,IPE:Ipv4Checksum Error,IP头校验结果。
[0290] L4E:L4校验结果,如TCP Checksum Error。
[0291] RXE:其它以太网帧错误,如CRC错误、链路错误、各种长度错误。
[0292] 上文列举了不同格式下第一融合描述符合第二融合描述符包含的内容,在具体实现时,可以减少融合交换格式描述符中的内容,也可以在预留字段中再增加内容,但是,与现有各种网络适配器实现区别明显的地方是,第一融合描述符和第二融合描述符中均不包含buffer空间起始地址,即与服务器CPU的IO地址没有关联。
[0293] 进一步,各物理服务器上借助虚拟化VMM实现多个VM的虚拟化运行环境,为每个VM提供虚拟化的CPU、内存、存储、网卡等。
[0294] 这样在各VM上运行与一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应。
[0295] VM上运行的某个虚拟网卡驱动程序需要发送数据帧时,服务器接口单元获取服务器上的VM上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧发送给队列池及调度单元。
[0296] 服务器接口单元需向VM发送数据时,将该数据帧发送给,发送该数据帧的虚拟网卡单元对应的虚拟网卡驱动程序运行的VM,使该VM上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理。
[0297] 同获取服务器的上需要发送的数据帧处理过程一致,只是在虚拟多个VM时,在对应的VM上获取数据帧和描述符。在向服务器写入数据帧和描述符时,将数据帧和描述符写入服务器中对应的VM中即可。
[0298] 当一个VM从一个源服务器迁移到另外一个目的服务器上时,需在目的服务器上运行一个或多个虚拟网卡驱动程序,并建立与目的网卡共享设备中一个或多个虚拟网卡单元的一一对应关系。因为虚拟网卡驱动程序采用队列方式与虚拟网卡单元进行消息传递,第一融合描述符合第二融合描述符与CPU的IO地址没有关联,极大地降低了VM与网卡的关联,因此,容易实现VM的迁移。
[0299] 实现VM迁移的过程具体如下:
[0300] (1)、服务器上停止即将迁移的VM上的虚拟网卡驱动程序的发送功能。
[0301] (2)、管理单元获知任一VM迁移时,即VM上的虚拟网卡驱动程序的发送功能停止时,停止该VM上运行的虚拟网卡驱动程序对应的虚拟网卡单元接收外部网络发送数据帧的功能;使队列池及调度单元完成数据帧的收发。
[0302] (3)、服务器复制源VM的软件现场到目的VM的相同操作系统上。管理单元将停止接收功能的虚拟网卡单元的相关内容复制到目的虚拟网卡单元和目的融合交换单元;所述目的虚拟网卡单元为迁移后的VM上运行的虚拟网卡驱动程序对应的虚拟网卡单元。
[0303] (4)、服务器启动目的VM上虚拟网卡驱动程序。当所述迁移后的VM上的虚拟网卡驱动程序启动时,管理单元启动目的虚拟网卡单元的收发功能。
[0304] 为了增强该装置的功能,该装置还可增加一个或多个共享加速单元。
[0305] 共享加速单元接收到运行该共享加速单元对应的共享设备驱动程序的服务器发送的数据帧时,对该数据帧进行处理,并将处理结果返回发送该数据帧的服务器。
[0306] 该加速单元若具有网络通信功能,则将处理结果发送给网络接口单元或返回发送该数据帧的服务器。
[0307] 参见图3,图3为本发明实施例中服务器虚拟VM时共享资源系统示意图。图3中的VM1上运行虚拟网卡单元1和虚拟网卡单元2对应的虚拟网卡驱动程序;VM5上运行共享加速单元1的共享设备驱动程序。
[0308] 当虚拟网卡单元1对应的虚拟网卡驱动程序需要发送数据帧时,服务器接口单元从VM1上获取需要发送的数据帧,以及发送该数据帧的相关描述信息,根据该相关描述信息构造第一融合描述符,并将构造的第一融合描述符以及数据帧通过队列调度单元调度到虚拟网卡单元1。
[0309] 虚拟网卡单元1根据第一融合描述符处理该数据帧,并封装为融合交换格式数据帧,发送给融合交换单元。
[0310] 融合交换单元根据由管理单元下发到本地的转发关系表,或者在管理单元中存储的转发关系表确定将该融合交换格式数据帧发送给虚拟网卡单元,还是网络接口单元,也可能是管理单元。
[0311] (1)假设转发给网络接口单元2,网络接口单元2还原该融合交换格式数据帧,即还原为虚拟网卡单元根据第一融合描述符处理后,且未封装为融合交换格式数据帧之前的数据帧,并转发给外部网络。
[0312] (2)、假设转发给虚拟网卡单元5,虚拟网卡单元5还原该融合交换格式数据帧,并为还原后的数据帧构造第二融合描述符,将该数据帧以及第二融合描述符调度到对应的服务器接口单元,该服务器接口单元连接的服务器上的VM运行虚拟网卡单元5的虚拟网卡驱动程序,假设为服务器接口单元5。
[0313] 服务器接口单元5将第二融合描述符的内容以及数据帧写入对应服务器中的对应VM,使该VM使用第二融合描述符的内容处理对应的数据帧。
[0314] (3)、假设转发给管理单元,管理单元还原该融合交换格式数据帧,处理并终结该数据帧。
[0315] 当VM1要从服务器1迁移到服务器n时,具体过程如下:
[0316] 第一步、VM1停止其上的虚拟网卡驱动程序的发送功能,网卡共享设备停止虚拟网卡单元1和虚拟网卡单元2的接收外部网络发送的数据帧。
[0317] 第二步、队列池及调度单元完成数据帧的收发。
[0318] 第三步、服务器1上的VM1的软件现场到目的VM的相同操作系统上;网卡共享设备复制虚拟网卡单元1和虚拟网卡单元2的现场到目的网卡共享设备上的虚拟网卡单元上和融合交换单元上。
[0319] 第四步、启动目的VM上的虚拟网卡驱动程序,以及目的虚拟网卡单元的收发功能。至此,VM迁移结束。
[0320] 在具体实现时,有些VM的从1个服务器迁移到另外一个服务器上,且迁移前的服务器和迁移后的服务器连接的不是同一网卡共享设备,因此,需要将源网卡共享设备上的现场相关内容,全部复制到目的网卡共享设备上。
[0321] 由于VM5上运行共享加速单元1的共享设备驱动程序,当共享加速单元1接收到VM5发送的数据帧时,对该数据帧进行加解密、浮点技术、压缩/解压缩、图形图像处理等处理后,发送回服务器n的VM5上,如果共享加速单元1具有通信功能,将处理后的数据帧封装为融合交换格式发送给融合交换单元。
[0322] 以上实施例对本申请具体实施例中的数据转发装置进行了说明,本实施例给出该装置的硬件架构组成。
[0323] 该装置是可以软硬件结合的可编程设备,具体参见图4,图4为本发明实施例中装置的硬件架构组成示意图,该装置包括:FPGA/ASIC和CPU(中央处理器)小系统;其中,[0324] FPGA/ASIC,用于完成装置中的n个服务器接口单元、1个队列池及调度单元、m虚拟网卡单元、1个融合交换单元、1个网络接口单元和1个或多个共享加速单元等单元完成的功能,这里不再详述,在该实施例中以2个加速单元为例。
[0325] CPU小系统,包含CPU、以及正常工作必备的存储器和其它硬件,用于完成装置中的管理单元功能,与FPGA/ASIC互连。
[0326] 其中,任一服务器接口单元用于获取服务器上运行的VM发送的数据帧和发送该数据帧的描述符,构造第一融合描述符,并发送给,队列池及调度单元;获取队列池调度单元中的数据帧和第二融合描述符,并将获取的数据帧以及第二融合描述符的内容写入对应的服务器;
[0327] 队列池及调度单元,用于通过队列将服务器接口单元发送的数据帧和第一融合描述符调度给虚拟网卡单元;接收到虚拟网卡单元发送的第二融合描述符时,通过队列将该数据帧和第二融合描述符调度到对应的服务器接口单元;
[0328] 任一虚拟网卡单元,接收到队列池及调度单元调度来的数据帧和第一融合描述符时,根据第一融合描述符处理该数据帧,并将处理后的数据帧封装为融合交换格式,发送给融合交换单元;接收到融合交换单元发送的融合交换格式数据帧时,还原该数据帧,为该数据帧构造第二融合描述符,并将该数据帧以及构造的第二融合描述符发送给服务器接口单元;
[0329] 融合交换单元,接收到虚拟网卡单元或网络接口单元发送的融合交换格式数据帧时,根据转发关系表,将该融合交换格式数据帧发送给虚拟网卡单元或网络接口单元,或管理单元;
[0330] 网络接口单元,接收融合交换单元发送的数据帧时,还原该融合交换格式数据帧,并转发到外部网络,接收到外部网络发送的数据帧时,将该数据帧封装为融合交换格式数据帧,并发送给融合交换单元;
[0331] 管理单元,配置转发关系表、VIAN标识和网络格式的对应关系、网络格式、网络节点标识和MAC地址的对应关系,对所述队列池及调度单元中的各队列配置的传输速率、优先级、调度策略和各队列的当前状态,并将配置的信息存储到本单元中,和/或,将转发关系表、VIAN标识和网络格式的对应关系、网络格式、网络节点标识和MAC地址的对应关系,存储到网络接口单元和虚拟网卡单元中;将对所述队列池及调度单元中的各队列配置的传输速率、优先级、调度策略和各队列的当前状态,存储到队列池及调度单元中。管理单元也可以通过融合交换单元与外部网络和服务器进行数据帧收发。
[0332] 需要说明的是,图4所示的装置只是一个具体的例子,也可以通过其他的与本实施例描述不同结构实现,如可将FPGA/ASIC中的部分功能采用CPU上运行的程序来实现,或将网络接口单元采用与CPU直接互连的一个或多个普通网卡来实现,因此,本申请对装置的具体结构不作具体限定。
[0333] 本实施中通过在网卡共享设备中虚拟多个虚拟网卡单元,来一一对应完成各服务器上的数据帧的收发,实现了多个服务器资源共享。并且由于本发明具体实现数据帧转发时的第一融合描述符合第二融合描述符中不包含buffer空间起始地址,即与CPU的IO地址没有关联,降低了VM与虚拟网卡单元的关联,因此更容易实现VM的迁移。
[0334] 本发明具体实施例中基于上述技术同样的发明构思,还提出一种数据转发方法。应用于包括多个服务器、一个网卡共享设备的网络系统中的网卡共享设备上,所述网卡共享设备虚拟多个虚拟网卡,并建立转发关系表;所述服务器上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应。
[0335] 参见图5,图5为本发明实施例中接收服务器发送的数据帧的处理方式流程示意图。具体步骤为:
[0336] 步骤501,共享网卡设备获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧调度到发送该数据帧的虚拟网卡驱动程序对应的虚拟网卡上。
[0337] 其中,第一融合描述符包含描述符类型和数据帧长度。
[0338] 所述第一融合描述符的内容还包含下述之一或任意组合:
[0339] 数据帧的帧格式、是否添加或修改网络节点ID信息、是否重新计算校验和、是否进行加密、指导虚拟网卡单元如何处理数据帧的其它信息。
[0340] 该网卡共享设备与所述服务器通过PCI Express点到点连接时,作为PCI Express链路的下游端点,所述方法进一步包括:配置多个发送引擎和接收引擎,并分别对应一个队列;
[0341] 步骤501中获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,包括:根据所述发送引擎指向的当前有效的发送buffer描述符从所述服务器内存中读取需要发送的数据帧,将该发送buffer描述符中除buffer空间起始地址之外的内容构造为第一融合描述符,并将该第一融合描述符和该数据帧通过对应的队列调度到对应的虚拟网卡上。
[0342] 该网卡共享设备与所述服务器通过以太网点到点连接时,所述方法进一步包括:配置多个发送引擎和接收引擎,并分别对应一个队列;
[0343] 所述获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,包括:发送引擎接收到服务器发送的描述符和数据帧时,将该描述符的格式变换为第一融合描述符的格式作为第一融合描述符,并将该第一融合描述符和该数据帧发送给对应的队列。
[0344] 步骤502,该共享网卡设备上接收到该数据帧和第一融合描述符的虚拟网卡,根据该第一融合描述符处理该数据帧,并将处理后的数据帧封装为融合交换格式数据帧,根据该融合交换格式数据帧的信息字段在建立的转发关系表中进行查找,并根据查找结果确定该数据帧转发给服务器或者外部网络;若确定将该融合交换格式数据帧发送给外部网络,则直接还原该融合交换格式数据帧,并发送给外部网络。
[0345] 其中,所述融合交换格式为以太网格式、MPLS格式、IP格式或系统定义的专有格式。
[0346] 参见图6,图6为本发明实施例中接收外部网络发送的数据帧的处理方式流程示意图。具体步骤为:
[0347] 步骤601,网卡共享设备接收到外部网络发送的数据帧时,将该数据帧封装为融合交换格式数据帧,根据融合交换格式数据帧的信息字段在建立的转发关系表中进行查找,并根据查找到的结果将该融合交换格式数据帧发送到服务器或外部网络。
[0348] 步骤602,若网卡共享设备确定将该融合交换格式数据帧发送给服务器,则通过对应的虚拟网卡还原该融合交换格式数据帧并进一步处理还原格式后的数据帧,根据处理结果为该数据帧构造第二融合描述符,并将该数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,使所述服务器上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理。
[0349] 其中,该第二融合描述符至少包含描述符类型和数据帧长度。
[0350] 所述第二融合描述符的内容还包含下述之一或任意组合:
[0351] 数据帧的帧格式、是否出现错误、虚拟网卡单元对数据帧的字段的判断结果,虚拟网卡单元提取或丢弃数据帧中的信息、虚拟网卡单元对数据帧进行的修改、虚拟网卡单元是否完成解密、虚拟网卡单元发现或已经处理的其它信息。
[0352] 该网卡共享设备与所述服务器通过PCI Express点到点连接时,作为PCI Express链路的下游端点,所述方法进一步包括:配置多个发送引擎和接收引擎,并分别对应一个队列;
[0353] 步骤602中,该数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,使所述服务器上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理,包括:
[0354] 在该接收引擎对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,并将该数据帧写入所述接收buffer描述符所指的服务器的buffer中,并在回写所述接收buffer描述符时进一步携带该第二融合描述符的内容。
[0355] 该网卡共享设备与所述服务器通过以太网点到点连接时,所述方法进一步包括:配置多个发送引擎和接收引擎,并分别对应一个队列;
[0356] 步骤602中将该数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,使所述服务器上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理,包括:
[0357] 在该接收引擎对应的队列中有数据帧和第二融合描述符时,读取第二融合描述符,根据该第二融合描述符读取其后的数据帧,将第二融合描述符以及该数据帧发送给对应的服务器,使该服务器上运行的对应虚拟网卡驱动程序进一步处理所述第二融合描述符和数据帧。
[0358] 其中,该共享网卡单元还可根据预先配置的传输速率、优先级、调度策略对接收到的数据帧进行部分丢弃处理,或将接收到的数据帧调度给服务器或虚拟网卡。
[0359] 该方法进一步包括预先配置网络格式、网络节点ID和MAC地址的对应关系;
[0360] 所述将该数据帧封装为融合交换格式数据帧,包括:当所述融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,根据该数据帧对应的目的网络节点ID和网络格式,在配置的网络格式、网络节点ID和MAC地址的对应关系中匹配对应的MAC地址,并将源网络节点ID扩展为48位作为源MAC地址,使用匹配到的MAC地址作为目的MAC地址,扩展后的源网络节点ID作为源MAC地址封装该数据帧为以太网格式的数据帧。
[0361] 该方法进一步包括:为不同的网络格式分配不同的VLAN ID;
[0362] 所述将该数据帧封装为融合交换格式数据帧,包括:当所述融合交换格式为以太网格式,且接收到外部网络发送的数据帧不为以太网数据帧时,根据该数据帧的网络格式匹配为该网络格式分配的VLAN ID,并将该数据帧的源网络节点ID扩展为48位作为源MAC地址,将该数据帧的目的网络节点ID扩展为48位作为目的MAC地址;使用扩展后的扩展后的目的网络节点ID作为目的MAC地址、扩展后的源网络节点ID作为源MAC地址,以及匹配到的VLAN ID封装该数据帧为以太网格式的数据帧。
[0363] 本实施例中进一步包括:各服务器上通过VMM实现多个虚拟机VM的虚拟环境,各VM上运行一个或多个虚拟网卡驱动程序,且每个虚拟网卡驱动程序与虚拟网卡单元一一对应。
[0364] 步骤601中获取服务器上运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,包括:
[0365] 获取服务器上的VM运行的虚拟网卡驱动程序需要发送的数据帧,并获取发送该数据帧的相关描述信息作为第一融合描述符,将该第一融合描述符和获取的数据帧发送给该数据帧的虚拟网卡驱动程序对应的虚拟网卡;
[0366] 步骤602中该数据帧以及构造的第二融合描述符的内容发送给与该虚拟网卡对应的虚拟网卡驱动程序运行的服务器,使所述服务器上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理,包括:
[0367] 将该数据帧,以及第二融合描述符的内容发送给,发送该数据帧的虚拟网卡对应的虚拟网卡驱动程序运行的VM,使该VM上运行的对应虚拟网卡驱动程序根据接收到的第二融合描述符的内容对接收到的数据帧进行处理。
[0368] 该网卡共享设备获知任一VM迁移时,停止该VM上运行的虚拟网卡驱动程序对应的虚拟网卡接收外部网络发送数据帧的功能;完成对已接收到的数据帧的转发,并将该虚拟网卡上的相关内容复制到目的虚拟网卡,所述目的虚拟网卡为迁移后的VM上运行的虚拟网卡驱动程序对应的虚拟网卡。
[0369] 当所述迁移后的VM上的虚拟网卡驱动程序启动时,启动所述目的虚拟网卡的收发功能。
[0370] 该实施例中的网卡共享设备还进一步配置共享加速功能时,所述方法进一步包括:
[0371] 该网卡共享设备接收到运行共享设备驱动程序的服务器发送的数据帧时,对该数据帧进行处理,并将处理结果返回发送该数据帧的服务器;若具有网络通信功能时,将处理结果发送给外部网络或返回发送该数据帧的服务器。
[0372] 综上所述,本发明通过本发明具体实施例中通过通过在网卡共享设备上虚拟多个虚拟网卡单元,并在各服务器上运行一个或多个与虚拟网卡单元一一对应的虚拟网卡驱动程序,将各服务器发送的数据帧通过该共享网卡设备转发到外部网络或转发给其他服务器,实现了多个服务器网卡资源共享。
[0373] 并且由于本发明具体实现数据帧转发时的第一融合描述符合第二融合描述符中不包含buffer空间起始地址,即与CPU的IO地址没有关联,降低了VM与虚拟网卡单元的关联,因此更容易实现虚拟了VM的多个服务器之间共享网卡单元,以及服务器上VM的迁移。
[0374] 在网卡共享设备中还增加了共享加速单元,对应在服务器的操作系统或VM的操作系统上运行共享加速单元的共享驱动程序,来实现对服务器或服务器上的VM实现加速处理的功能,以提高服务器的处理速度。
[0375] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈