一种数据包转发的方法、装置及系统的制作方法
【技术领域】
[0001] 本发明涉及虚拟化技术领域,具体涉及一种数据包转发的方法、装置及系统。
【背景技术】
[0002] 虚拟化技术目前使用非常广泛,在现有的虚拟化技术中,一个物理主机可以运行 多个虚拟机,每个虚拟机都共享该物理机的硬件资源,但是针对该物理主机上每个虚拟机 的10访问都必须基于该物理主机上的同一个虚拟机监控器(VirtualMachineMonitor, VMM)进行转发,因此,如果该物理主机上虚拟机的数量非常巨大时,所有的数据包都集中通 过VMM,必然造成网络数据流拥塞,从而影响系统性能。
[0003] 现有的虚拟化网络的使用方式,所有的数据包都必须在VMM内进行转发,通过查 找VMM中的转发表,找到每个数据包对应的目的端口,从而通过该端口将数据包转发到对 应的接收设备或发到指定的外网,同时每当端口收到一个新的数据包时,都会对数据包信 息进行记录,从而刷新转发表,将目的端口和指定的MAC地址建立对应关系,如果虚拟机数 量不断增加,每个虚拟机访问的目标主机也不断改变,必然会造成转发表巨大,同时需要经 常刷新,造成访问转发表查找目的端口的时间延长,造成性能瓶颈。
[0004] 现有技术在VMM中通过一个转发表管理所有的虚拟机的上下行端口,当虚拟机数 量增加时,必然会导致表的体积急剧增大,从而延长查找时间,而且业务类型复杂多样,每 个虚拟机都会访问大量不同的目的地址,因此表的体积会随着业务复杂度增加而增大,造 成性能下降。
【发明内容】
[0005] 本发明实施例提供的一种数据包转发的方法,可以使虚拟机上下行的数据包不必 每个都经过虚拟机监控器,从而提高了数据包转发的效率,减轻了虚拟机监控器的负担。本 发明实施例还提供了相应的装置及物理主机。
[0006] 本发明第一方面提供一种数据包转发的方法,所述方法应用于物理主机中的源通 信端口,所述物理主机包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源通信端口 包括每个VM上的虚拟通信端口,以及所述物理网卡上的物理通信端口,每个虚拟通信端口 和每个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数据转发表由与 所述本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,所述 方法包括:
[0007] 接收待发送的数据包,所述待发送的数据包携带目的MAC地址;
[0008] 从所述本通信端口维护的第一数据转发表中,查找与所述本通信端口关联的所述 目的MAC地址对应的目的通信端口标识;
[0009] 当查找到与所述目的MAC地址对应的目的通信端口标识,直接向所述目的通信端 口标识对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟机 的虚拟通信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物理通 信端口时,所述目的通信端口为目的虚拟机的虚拟通信端口。
[0010] 结合第一方面,在第一种可能的实现方式中,所述方法还包括:
[0011] 删除所述本通信端口维护的第一数据转发表中满足删除条件的MAC地址与目的 通信端口标识的对应关系,以保持所述本通信端口维护的第一数据转发表的容量。
[0012] 结合第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中, 所述方法还包括:
[0013] 当未查找到与所述目的MAC地址对应的目的通信端口标识,向所述VMM发送所述 待发送的数据包,所述待发送的数据包由所述VMM从所述VMM中维护的第二数据转发表中, 确定与所述目的MAC地址对应的目的通信端口标识,并向所述目的MAC地址对应的目的通 信端口发送所述待发送的数据包,所述第二数据转发表包含每一个MAC地址与目的通信端 口标识的对应关系。
[0014] 结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,所述向所述 VMM发送所述待发送的数据包之后,所述方法还包括:
[0015] 接收所述VMM发送的所述目的MAC地址与对应的目的通信端口标识的对应关 系;
[0016] 将所述目的MAC地址与对应的目的通信端口标识的对应关系添加到所述第一数 据转发表中,所述目的MAC地址与对应的目的通信端口标识的对应关系用于发送下一个携 带所述目的MAC地址的数据包。
[0017] 结合第一方面第二种可能的实现方式,在第四种可能的实现方式中,所述方法还 包括:
[0018] 当任意一个MAC地址对应的目的通信端口标识发生变更时,接收所述VMM发送的 所述任意一个MAC地址与更新后的目的通信端口标识的对应关系;
[0019] 将所述任意一个MAC地址与更新后的目的通信端口标识的对应关系,更新到所述 第一数据转发表中,所述任意一个MAC地址与更新后的目的通信端口标识的对应关系用于 发送携带所述任意一个MAC地址的数据包到更新后的目的端口。
[0020] 本发明第二方面提供一种数据包转发的装置,所述装置为物理主机中的源通信端 口,所述物理主机包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源通信端口包括 每个VM上的虚拟通信端口,以及所述物理网卡上的物理通信端口,每个虚拟通信端口和每 个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数据转发表由与所述 本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,所述装置 包括:
[0021] 接收模块,用于接收待发送的数据包,所述待发送的数据包携带目的MAC地址;
[0022] 查找模块,用于从所述本通信端口维护的第一数据转发表中,查找与所述本通信 端口关联的所述目的MAC地址对应的目的通信端口标识;
[0023] 发送模块,用于当所述查找模块查找到与所述目的MAC地址对应的目的通信端口 标识,直接向所述目的通信端口标识对应的目的通信端口发送所述待发送的数据包,其中, 当所述源通信端口为虚拟机的虚拟通信端口时,所述目的通信端口为目的物理通信端口, 当所述源通信端口为物理通信端口时,所述目的通信端口为目的虚拟机的虚拟通信端口。
[0024] 结合第二方面,在第一种可能的实现方式中,所述装置还包括:
[0025] 转发表管理模块,用于删除所述本通信端口维护的第一数据转发表中满足删除条 件的MAC地址与目的通信端口标识的对应关系,以保持所述本通信端口维护的第一数据转 发表的容量。
[0026] 结合第二方面或第二方面第一种可能的实现方式,在第二种可能的实现方式中,
[0027] 所述发送模块,还用于当所述查找模块未查找到与所述目的MAC地址对应的目的 通信端口标识,向所述VMM发送所述待发送的数据包,所述待发送的数据包由所述VMM从所 述VMM中维护的第二数据转发表中,确定与所述目的MAC地址对应的目的通信端口标识,并 向所述目的MAC地址对应的目的通信端口发送所述待发送的数据包,所述第二数据转发表 包含每一个MAC地址与目的通信端口标识的对应关系。
[0028] 结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述装置还 包括:添加模块,
[0029] 所述接收模块,还用于接收所述VMM发送的所述目的MAC地址与对应的目的通信 端口标识的对应关系;
[0030] 所述添加模块,用于将所述接收模块接收的所述目的MAC地址与对应的目的通信 端口标识的对应关系添加到所述第一数据转发表中,所述目的MAC地址与对应的目的通信 端口标识的对应关系用于发送下一个携带所述目的MAC地址的数据包。
[0031] 结合第二方面第二种可能的实现方式,在第四种可能的实现方式中,所述装置还 包括:更新模块,
[0032] 所述接收模块,还用于当任意一个MAC地址对应的目的通信端口标识发生变更 时,接收所述VMM发送的所述任意一个MAC地址与更新后的目的通信端口标识的对应关 系;
[0033] 所述更新模块,用于将所述接收模块接收的所述任意一个MAC地址与更新后的目 的通信端口标识的对应关系,更新到所述第一数据转发表中,所述任意一个MAC地址与更 新后的目的通信端口标识的对应关系用于发送携带所述任意一个MAC地址的数据包到更 新后的目的端口。
[0034] 本发明第三方面提供一种物理主机,包括多个虚拟机VM、虚拟机监控器VMM和物 理网卡,每个VM上包括虚拟通信端口,所述物理网卡上包括多个物理通信端口,每个虚拟 通信端口和每个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数据转 发表由与所述本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系 组成,
[0035] 当每个虚拟通信端口和每个物理通信端口中的任意一个作为源通信端口时,所述 源通信端口用于:
[0036] 接收待发送的数据包,所述待发送的数据包携带目的MAC地址;
[0037] 从所述本通信端口维护的第一数据转发表中,查找与所述本通信端口关联的所述 目的MAC地址对应的目的通信端口标识;
[0038] 当查找到与所述目的MAC地址对应的目的通信端口标识,向所述目的通信端口标 识对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟机的虚 拟通信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物理通信端 口时,所述目的通信端口为目的虚拟机的虚拟通信端口。
[0039] 本发明实施例提供的数据包转发的方法,所述方法应用于物理主机中的源通信端 口,所述物理主机包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源通信端口包括 每个VM上的虚拟通信端口,以及所述物理网卡上的物理通信端口,每个虚拟通信端口和每 个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数据转发表由与所述 本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,所述方法 包括:接收待发送的数据包,所述待发送的数据包携带目的MAC地址;从所述本通信端口维 护的第一数据转发表中,查找与所述本通信端口关联的所述目的MAC地址对应的目的通信 端口标识;当查找到与所述目的MAC地址对应的目的通信端口标识,直接向所述目的通信 端口标识对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟 机的虚拟通信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物理 通信端口时,所述目的通信端口为目的虚拟机的虚拟通信端口。与现有技术中虚拟机上下 行的数据包都要经过VMM,由VMM从包含每一个MAC地址与目的通信端口标识的对应关系的 大表中确定待发送的数据包要发往的目的端口相比,本发明实施例提供的数据包转发的方 法,在虚拟机的虚拟通信端口和物理网卡的物理通信端口中维护一个只与本通信端口关联 的第一数据转发表,所述第一数据转发表由与所述本通信端口关联的媒体访问控制MAC地 址与目的通信端口标识的对应关系组成,从而加快了确定目的通信端口的速度,并且在确 定到目的通信端口后,源通信端口直接将数据包发送到目的通信端口,也就是说数据包可 以绕过VMM,从而减轻了VMM的负担,提高了数据包转发的效率。
【附图说明】
[0040] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0041] 图1是本发明实施例中物理主机的一实施例示意图;
[0042] 图2是本发明实施例中数据中心的一实施例示意图;
[0043] 图3是本发明实施例中物理主机的另一实施例示意图;
[0044] 图4是本发明实施例中数据包转发的方法的一实施例示意图;
[0045] 图5是本发明实施例中数据包转发的方法的另一实施例示意图;
[0046]图6是本发明实施例中数据转发的装置的一实施例示意图;
[0047]图7是本发明实施例中数据转发的装置的另一实施例示意图;
[0048]图8是本发明实施例中数据转发的装置的另一实施例示意图;
[0049]图9是本发明实施例中数据转发的装置的另一实施例示意图;
[0050] 图10是本发明实施例中物理主机的另一实施例示意图;
[0051] 图11是本发明实施例中物理主机的另一实施例示意图;
[0052] 图12是本发明实施例中物理主机的另一实施例示意图。
【具体实施方式】
[0053] 本发明实施例提供一种数据包转发的方法,可以使虚拟机上下行的数据包不必每 个都经过虚拟机监控器,从而提高了数据包转发的效率,减轻了虚拟机监控器的负担。本发 明实施例还提供了相应的装置及物理主机。以下分别进行详细说明。
[0054] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的 附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是 本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范 围。
[0055] 为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个元 素,如图1所示:
[0056]虚拟机(Virtual Machine,VM):
[0057] 通过虚拟机软件可以在一台物理主机上模拟出一台或者多台虚拟的计算机,而这 些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟 机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算 机中进行工作。
[0058] 硬件层:
[0059] 虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的 硬件层可包括处理器(如CPU)和内存,还可以包括网卡、存储器等高速或低速输入/输 出(1/0,Input/Output)设备,及具有特定处理功能的其它设备,如输入输出内存管理单元 (IOMMU,Input/OutputMemoryManagementUnit),其中I0MMU可用于虚拟机物理地址和 Host物理地址的转换。
[0060]虚拟机监控器(Virtual Machine Monitor,VMM):
[0061] 作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现 虚拟机的调度和隔离。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如 提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。虚拟机则运行在Host为其准备的虚拟硬件 平台上,Host上运行一个或多个虚拟机。
[0062] 图2为本发明实施例中数据中心的一实施例示意图。数据中心也可以理解为是 云计算中心。数据中心或者云计算中心包括多个物理主机。
[0063] 图3是本发明实施例中物理主机的一实施例示意图。每个物理主机上运行多个虚 拟机,如图3所示的,每个物理主机上运行一百个虚拟机(VirtualMachine,VM),每个物理 主机上运行一个虚拟机监控器(VirtualMachineMonitor,VMM),同时,每个物理主机上还 包括物理网卡,当然物理网卡只是硬件层的一部分硬件资源,本发明实施例提供的数据包 转发的方法尤其涉及到物理网卡。
[0064] 物理网卡上可以包括多个物理通信端口,每个虚拟机包括一个虚拟通信端口,每 个虚拟通信端口和每个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一 数据转发表由与所述本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对 应关系组成,也就是说,在虚拟机的虚拟通信端口维护的第一数据转发表由MAC地址与目 的物理通信端口的标识的对应关系组成,物理通信端口维护的第一数据转发表由MAC地址 与目的虚拟机的虚拟通信端口标识的对应关系组成。当然,在VMM中还维护有第二数据转 发表,所述第二数据转发表包含每一个MAC地址与目的通信端口标识的对应关系。相对来 说,第一数据转发表可以称为快表(Fast-ForwardTable,FFT),第二数据转发表可以成为 慢表(Slow-ForwardTable,SFT) 〇
[0065] 本发明实施例中,在数据包转发过程中,以从虚拟机发出的数据包为例,如图3所 示的通路2,如果虚拟机的虚拟通信端口从本通信端口维护的第一数据转发表中直接确定 了物理网卡上的目的物理通信端口,则不需要将数据包发送给VMM,直接将数据包发送到目 的物理通信端口。如果虚拟机的虚拟通信端口从第一数据转发表中未确定到物理通信端 口,则数据包走图3所示的通路1,虚拟机将数据包发送给VMM,然后由VMM通过第二数据转 发表确定出目的物理通信端口的标识,再由VMM将该数据包发送到该目的物理通信端口。 反过来,从物理网卡到虚拟机的上行数据包的发送过程也与上述的下行过程相同,本处不 做过多赘述。
[0066] 关于虚拟机上下行数据包的转发过程,可以参阅图4进行理解,图4中所涉及到的 第一数据转发表和第二数据转发表可以参阅表1和表2进行理解。
[0067] 表1:第一数据转发表
[0068]
[0069] 可以理解的是,表1只是举例进行说明,具体表1的表项数目可以根据需求确定。
[0070] 对于第二数据转发表可以参阅表2进行理解。如表2所示:
[0071] 表2:第二数据转发表
[0072]
[0073] 其中,TapN是VMM上与VM通信的通信端口,对应着VMN的通信端口vnicN,portO 至port3是VMM上与物理网卡通信的通信端口,对应着物理网卡上的NicO、bondO、Vlan2. 5 和macvlan2。其中,N是大于3的正整数。
[0074] 如图4所示,物理主机中包括一百个虚拟机,虚拟机编号从VM0到V99。每个虚拟 机的MAC地址分别从MAC0到MAC99。虚拟机的虚拟通信端口标识从vnicO到vnic99。每 个虚拟机的虚拟通信端口都维护一个第一数据转发表。本发明实施例中,第一数据转发表 是存储在存储设备中的,虚拟通信端口维护第一数据转发表是指虚拟通信端口负责管理并 使用该第一数据转发表。VMM上与每个虚拟机通信的通信端口标识分别从tapO到tap99。 VMM上与每个物理通信端口通信的通信端口标识分别从portO到port3。物理网卡上的每 个物理通信端口的标识分别为NicO、bondO、Vlan2. 5和macvlan2〇
[0075] 在端口标识从vnicO至vnic99的每个虚拟通信端口,以及NicO、bondO、Vlan2. 5 和macvlan2的物理通信端口分别维护一个本通信端口的第一数据转发表,每个通信端口 维护的第一数据转发表只记录与本端口相关的转发信息,因此,如果虚拟机的数量和物理 网卡的物理通信端口的总数量为104,那么每个第一数据转发表的最大表项只为第二数据 转发表的1/104,因此,在查表确定目的通信端口时,可以提高查找效率。尤其目前芯片的发 展已经从主频的提升切换到了核数的增加上,因此,在核数增大到500甚至1000时,大量的 虚拟机在一个物理主机上创建的场景,更能提高数据包转发的效率。
[0076] 下面分别介绍上行数据包和下行数据包的转发过程:
[0077] 虚拟机VM0产生数据包A后,经由虚拟机的虚拟通信端口vnicO,虚拟通信端口 vnicO查找自身维护的第一数据转发表,通过查表确定出该数据包A携带的MAC0对应物理 通信端口NicO,因此,虚拟通信端口vnicO将数据包A直接发送到物理通信端口NicO,不需 要经过VMM,从而减轻了VMM的负担,提高了数据包转发的效率。
[0078] 物理通信端口macvlan2接收到数据包B,物理通信端口macvlan2查找自身维护的 第一数据转发表,通过查表确定出该数据包B携带的MAC99对应的虚拟机的虚拟通信端口 vnic99,因此,通信端口vnicO将数据包B直接发送到虚拟机的虚拟通信端口vnic99,不需 要经过VMM,从而减轻了VMM的负担,提高了数据包转发的效率。
[0079] 如果通信端口vnicO在自身维护的第一数据转发表中未查找到MAC0对应的物理 通信端口,则通信端口vnicO将数据包A发送到VMM,由VMM从第二数据转发表中查找MAC0 对应的目的通信端口,查找到为portO,则VMM将数据包A从通信端口portO发送到物理通 信端口NicO,因通信端口vnicO所维护的第一数据转发表中没有记录MAC0与NicO的对应 关系,因此VMM在确定出MAC0与NicO的对应关系后,可以将该对应关系发送给通信端口 vnicO,通信端口vnicO将该对应关系添加到自身维护的第一数据转发表中,当下次再发送 数据包给NicO时,就可以从第一数据转发表中查找到该对应关系,从而可以绕开VMM,将数 据包直接发送到物理通信端口NicO。
[0080] 如果物理通信端口macvlan2在自身维护的第一数据转发表中未查找到MAC99对 应的虚拟机的虚拟通信端口,则物理通信端口macvlan2将数据包B发送到VMM,由VMM从第 二数据转发表中查找MAC99对应的目的通信端口,查找到为tap99,则VMM将数据包B从通 信端口tap99发送到虚拟机的虚拟通信端口vnic99,因物理通信端口macvlan2所维护的第 二数据转发表中没有记录MAC99和vnic99的对应关系,因此VMM在确定出MAC99和vnic99 的对应关系后,将该对应关系发送给物理通信端口macvlan2,物理通信端口macvlan2将该 对应关系添加到自身维护的第一数据转发表中,当下次再发送数据包给vnic99时,就可以 从第一数据转发表中查找到该对应关系,从而可以绕开VMM,将数据包直接发送到通信端口 vnic99〇
[0081] 为了保持第一数据转发表的轻量化,每个虚拟通信端口和每个物理通信端口都会 定期删除自身维护的数据转发表中满足删除条件的对应关系,满足删除条件可以理解为是 在一段时间内使用频率低于预置门限,或者,按照使用频率排序,只保留前M个对应关系,M 之后对应关系都删除。这样,可以避免第一数据转发表体积过大,影响查找效率。
[0082]
参阅图5,本发明实施例提供的数据包转发的方法的一实施例包括:
[0083] 101、物理主机中的源通信端口接收待发送的数据包,所述待发送的数据包携带目 的媒体访问控制MAC地址,其中,所述物理主机包括多个虚拟机VM、虚拟机监控器VMM和物 理网卡,所述源通信端口包括每个VM上的虚拟通信端口,以及所述物理网卡上的物理通信 端口,每个虚拟通信端口和每个物理通信端口中都维护有本通信端口的第一数据转发表, 所述第一数据转发表由与所述本通信端口关联的媒体访问控制MAC地址与目的通信端口 标识的对应关系组成。
[0084] 102、从所述本通信端口维护的第一数据转发表中,查找与所述本通信端口关联的 所述目的MAC地址对应的目的通信端口标识。
[0085] 103、当查找到与所述目的MAC地址对应的目的通信端口标识,直接向所述目的通 信端口标识对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚 拟机的虚拟通信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物 理通信端口时,所述目的通信端口为目的虚拟机的虚拟通信端口。
[0086] 本发明实施例提供的数据包转发的方法,所述方法应用于物理主机中的源通信端 口,所述物理主机包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源通信端口包括 每个VM上的虚拟通信端口,以及所述物理网卡上的物理通信端口,每个虚拟通信端口和每 个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数据转发表由与所述 本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,所述方法 包括:接收待发送的数据包,所述待发送的数据包携带目的MAC地址;从所述本通信端口维 护的第一数据转发表中,查找与所述本通信端口关联的所述目的MAC地址对应的目的通信 端口标识;当查找到与所述目的MAC地址对应的目的通信端口标识,直接向所述目的通信 端口标识对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟 机的虚拟通信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物理 通信端口时,所述目的通信端口为目的虚拟机的虚拟通信端口。与现有技术中虚拟机上下 行的数据包都要经过VMM,由VMM从包含每一个MAC地址与目的通信端口标识的对应关系的 大表中确定待发送的数据包要发往的目的端口相比,本发明实施例提供的数据包转发的方 法,在虚拟机的虚拟通信端口和物理网卡的物理通信端口中维护一个只与本通信端口关联 的第一数据转发表,所述第一数据转发表由与所述本通信端口关联的媒体访问控制MAC地 址与目的通信端口标识的对应关系组成,从而加快了确定目的通信端口的速度,并且在确 定到目的通信端口后,源通信端口直接将数据包发送到目的通信端口,也就是说数据包可 以绕过VMM,从而减轻了VMM的负担,提高了数据包转发的效率。
[0087] 可选地,在上述图5对应的实施例的基础上,本发明实施例提供的数据包转发的 方法的第一个可选实施例中,所述方法还可以包括:
[0088] 删除所述本通信端口维护的第一数据转发表中满足删除条件的MAC地址与目的 通信端口标识的对应关系,以保持所述本通信端口维护的第一数据转发表的容量。
[0089] 可见,本发明实施例中,删除满足删除条件的MAC地址与目的通信端口标识的对 应关系,可以保持第一数据转发表的轻量化,从而进一步提高数据包转发的效率。
[0090] 可选地,在上述图5对应的实施例或第一个可选实施例的基础上,本发明实施例 提供的第二个可选实施例中,所述方法还可以包括:
[0091] 当未查找到与所述目的MAC地址对应的目的通信端口标识,向所述VMM发送所述 待发送的数据包,所述待发送的数据包由所述VMM从所述VMM中维护的第二数据转发表中, 确定与所述目的MAC地址对应的目的通信端口标识,并向所述目的MAC地址对应的目的通 信端口发送所述待发送的数据包,所述第二数据转发表包含每一个MAC地址与目的通信端 口标识的对应关系。
[0092] 可见,本发明实施例提供中,在通过第一数据转发表无法查找到目的通信端口标 识时,可以通过VMM查找相应的目的通信端口标识,从而保证了每个数据包都能得到转发。
[0093] 可选地,在上述数据包转发的方法的第二个可选实施例的基础上,本发明实施例 提供的第三个可选实施例中,所述向所述VMM发送所述待发送的数据包之后,所述方法还 可以包括:
[0094] 接收所述VMM发送的所述目的MAC地址与对应的目的通信端口标识的对应关系;
[0095] 将所述目的MAC地址与对应的目的通信端口标识的对应关系添加到所述第一数 据转发表中,所述目的MAC地址与对应的目的通信端口标识的对应关系用于发送下一个携 带所述目的MAC地址的数据包。
[0096] 可见,本发明实施例中,通信端口可以将VMM确定的目的MAC地址与目的虚拟机的 通信端口标识或目的物理通信端口的标识的对应关系及时添加到第一数据转发表中,从而 使后面相同MAC地址的数据包可以得到快速转发。
[0097] 可选地,在上述数据包转发的方法的第二个可选实施例的基础上,本发明实施例 提供的第四个可选实施例中,所述方法还可以包括:
[0098] 当任意一个MAC地址对应的目的通信端口标识发生变更时,接收所述VMM发送的 所述任意一个MAC地址与更新后的目的通信端口标识的对应关系;
[0099] 将所述任意一个MAC地址与更新后的目的通信端口标识的对应关系,更新到所述 第一数据转发表中,所述任意一个MAC地址与更新后的目的通信端口标识的对应关系用于 发送携带所述任意一个MAC地址的数据包到更新后的目的端口。
[0100] 可见,本发明实施例中,当一个MAC地址对应的目的通信端口标识发生变更时,如 VMM在更新第二数据转发表后,会将MAC地址与更新后的目的通信端口标识的对应关系发 送给每个通信端口,从而使包含该MAC地址的端口更新第一数据转发表中MAC地址与更新 后的目的通信端口标识的对应关系,从而保证后续携带所述任意一个MAC地址的数据包能 快速的发送到更新后的目的端口。
[0101] 图5对应的实施例及其可选实施例可以参阅图1至图4部分的描述进行理解,本 处不做过多赘述。
[0102] 参阅图6,本发明实施例提供的数据包转发的装置20,所述装置20为物理主机中 的源通信端口,所述物理主机包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源 通信端口包括每个VM上的虚拟通信端口,以及所述物理网卡上的物理通信端口,其特征在 于,每个虚拟通信端口和每个物理通信端口中都维护有本通信端口的第一数据转发表,所 述第一数据转发表由与所述本通信端口关联的媒体访问控制MAC地址与目的通信端口标 识的对应关系组成,所述装置20包括:
[0103] 接收模块201,用于接收待发送的数据包,所述待发送的数据包携带目的MAC地 址;
[0104] 查找模块202,用于从所述本通信端口维护的第一数据转发表中,查找与所述本通 信端口关联的所述目的MAC地址对应的目的通信端口标识;
[0105] 发送模块203,用于当所述查找模块202查找到与所述目的MAC地址对应的目的 通信端口标识,直接向所述目的通信端口标识对应的目的通信端口发送所述待发送的数据 包,其中,当所述源通信端口为虚拟机的虚拟通信端口时,所述目的通信端口为目的物理通 信端口,当所述源通信端口为物理通信端口时,所述目的通信端口为目的虚拟机的虚拟通 信端口。
[0106] 本发明实施例中提供的数据包转发的装置20,所述装置20为物理主机中的源通 信端口,所述物理主机包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源通信端口 包括每个VM上的虚拟通信端口,以及所述物理网卡上的物理通信端口,其特征在于,每个 虚拟通信端口和每个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数 据转发表由与所述本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应 关系组成,所述装置20包括:接收模块201接收待发送的数据包,所述待发送的数据包携带 目的MAC地址;查找模块202从所述本通信端口维护的第一数据转发表中,查找与所述本通 信端口关联的所述目的MAC地址对应的目的通信端口标识;发送模块203当所述查找模块 202查找到与所述目的MAC地址对应的目的通信端口标识,直接向所述目的通信端口标识 对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟机的虚拟 通信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物理通信端口 时,所述目的通信端口为目的虚拟机的虚拟通信端口。与现有技术中虚拟机上下行的数据 包都要经过VMM,由VMM从包含每一个MAC地址与目的通信端口标识的对应关系的大表中确 定待发送的数据包要发往的目的端口相比,本发明实施例提供的数据包转发的装置,在虚 拟机的虚拟通信端口和物理网卡的物理通信端口中维护一个只与本通信端口关联的第一 数据转发表,所述第一数据转发表由与所述本通信端口关联的媒体访问控制MAC地址与目 的通信端口标识的对应关系组成,从而加快了确定目的通信端口的速度,并且在确定到目 的通信端口后,源通信端口直接将数据包发送到目的通信端口,也就是说数据包可以绕过 VMM,从而减轻了VMM的负担,提高了数据包转发的效率。
[0107] 可选地,在上述图6对应的实施例的基础上,参阅图7,本发明实施例提供的数据 转发的装置20的第一个可选实施例中,所述装置20还包括:
[0108] 转发表管理模块204,用于删除所述本通信端口维护的第一数据转发表中满足删 除条件的MAC地址与目的通信端口标识的对应关系,以保持所述本通信端口维护的第一数 据转发表的容量。
[0109] 可见,本发明实施例中,删除满足删除条件的MAC地址与目的通信端口标识的对 应关系,可以保持第一数据转发表的轻量化,从而进一步提高数据包转发的效率。
[0110] 可选地,在上述图6对应的实施例的基础上,参阅图7,本发明实施例提供的数据 转发的装置20的第二个可选实施例中,
[0111] 所述发送模块203,还用于当所述查找模块202未查找到与所述目的MAC地址对 应的目的通信端口标识,向所述VMM发送所述待发送的数据包,所述待发送的数据包由所 述VMM从所述VMM中维护的第二数据转发表中,确定与所述目的MAC地址对应的目的通信 端口标识,并向所述目的MAC地址对应的目的通信端口发送所述待发送的数据包,所述第 二数据转发表包含每一个MAC地址与目的通信端口标识的对应关系。
[0112] 可见,本发明实施例提供中,在通过第一数据转发表无法查找到目的通信端口标 识时,可以通过VMM查找相应的目的通信端口标识,从而保证了每个数据包都能得到转发。
[0113] 可选地,在数据转发的装置20的第二个可选实施例的基础上,参阅图8,本发明 实施例提供的数据转发的装置20的第三个可选实施例中,所述装置20还包括:添加模块 205,
[0114] 所述接收模块201,还用于接收所述VMM发送的所述目的MAC地址与对应的目的通 信端口标识的对应关系;
[0115] 所述添加模块205,用于将所述接收模块201接收的所述目的MAC地址与对应的目 的通信端口标识的对应关系添加到所述第一数据转发表中,所述目的MAC地址与对应的目 的通信端口标识的对应关系用于发送下一个携带所述目的MAC地址的数据包。
[0116] 可见,本发明实施例中,通信端口可以将VMM确定的目的MAC地址与目的虚拟机的 通信端口标识或目的物理通信端口的标识的对应关系及时添加到第一数据转发表中,从而 使后面相同MAC地址的数据包可以得到快速转发。
[0117] 可选地,在数据转发的装置20的第二个可选实施例的基础上,参阅图9,本发明 实施例提供的数据转发的装置20的第四个可选实施例中,所述装置20还包括:更新模块 206,
[0118] 所述接收模块201,还用于当任意一个MAC地址对应的目的通信端口标识发生变 更时,接收所述VMM发送的所述任意一个MAC地址与更新后的目的通信端口标识的对应关 系;
[0119] 所述更新模块206,用于将所述接收模块接收的所述任意一个MAC地址与更新后 的目的通信端口标识的对应关系,更新到所述第一数据转发表中,所述任意一个MAC地址 与更新后的目的通信端口标识的对应关系用于发送携带所述任意一个MAC地址的数据包 到更新后的目的端口。
[0120] 可见,本发明实施例中,当一个MAC地址对应的目的通信端口标识发生变更时,如 VMM在更新第二数据转发表后,会将MAC地址与更新后的目的通信端口标识的对应关系发 送给每个通信端口,从而使包含该MAC地址的端口更新第一数据转发表中MAC地址与更新 后的目的通信端口标识的对应关系,从而保证后续携带所述任意一个MAC地址的数据包能 快速的发送到更新后的目的端口。
[0121] 图6至图9对应的实施例及其可选实施例可以参阅图1至图5部分的描述进行理 解,本处不做过多赘述。
[0122] 在上述虚拟机容错的装置的多个实施例中,应当理解的是,在一种实现方式下,接 收模块、发送模块可以是由输入/输出I/O设备(比如网卡)来实现,查找模块、添加模块、 转发表管理模块、更新模块可以由处理器执行存储器中的程序或指令来实现的(换言之, 即由处理器以及与所述处理器耦合的存储器中的特殊指令相互配合来实现);在另一种实 现方式下,接收模块、发送模块,查找模块、添加模块、转发表管理模块、更新模块也可以分 别通过专有电路来实现,具体实现方式参见现有技术,这里不再赘述;在再一种实现方式 下,接收模块、发送模块,查找模块、添加模块、转发表管理模块、更新模块也可以通过现场 可编程门阵列(FPGA,Field-ProgrammableGateArray)来实现,具体实现方式参见现有 技术,这里不再赘述,本发明包括但不限于前述实现方式,应当理解的是,只要按照本发明 的思想实现的方案,都落入本发明实施例所保护的范围。
[0123] 本实施例提供了一种物理主机的硬件结构,参见图10所示,一种物理主机的硬件 结构可以包括:
[0124] 收发器件、软件器件以及硬件器件三部分;
[0125] 收发器件为用于完成包收发的硬件电路;
[0126] 硬件器件也可称"硬件处理模块",或者更简单的,也可简称为"硬件",硬件器件主 要包括基于FPGA、ASIC之类专用硬件电路(也会配合其他配套器件,如存储器)来实现某 些特定功能的硬件电路,其处理速度相比通用处理器往往要快很多,但功能一经定制,便很 难更改,因此,实现起来并不灵活,通常用来处理一些固定的功能。需要说明的是,硬件器件 在实际应用中,也可以包括MCU(微处理器,如单片机)、或者CPU等处理器,但这些处理器的 主要功能并不是完成大数据的处理,而主要用于进行一些控制,在这种应用场景下,由这些 器件搭配的系统为硬件器件。
[0127] 软件器件(或者也简单"软件")主要包括通用的处理器(例如CPU)及其一些配 套的器件(如内存、硬盘等存储设备),可以通过编程来让处理器具备相应的处理功能,用 软件来实现时,可以根据业务需求灵活配置,但往往速度相比硬件器件来说要慢。软件处理 完后,可以通过硬件器件将处理完的数据通过收发器件进行发送,也可以通过一个与收发 器件相连的接口向收发器件发送处理完的数据。
[0128] 本实施例中,收发器件用于进行上述实施例中数据包的接收和发送,软件器件或 硬件器件用于确定目的MAC地址对应的目的物理端口、管理第一数据转发表等。
[0129] 硬件器件及软件器件的其他功能在前述实施例中已经详细论述,这里不再赘述。
[0130] 下面结合附图就接收模块、发送模块可以是由输入/输出I/O设备(比如网卡) 来实现,查找模块、添加模块、转发表管理模块、更新模块可以是可以由处理器执行存储器 中的程序或指令来实现的技术方案来做详细的介绍:
[0131] 图11是本发明实施例提供的物理主机4的结构示意图。所述物理主机4包括多 个虚拟机VM、虚拟机监控器VMM和物理网卡,每个VM上包括虚拟通信端口,所述物理网卡 上包括多个物理通信端口,特征在于,每个虚拟通信端口和每个物理通信端口中都维护有 本通信端口的第一数据转发表,所述第一数据转发表由与所述本通信端口关联的媒体访问 控制MAC地址与目的通信端口标识的对应关系组成,所述物理主机4包括处理器410、存储 器450、和输入/输出I/O设备430,所述存储器上运行有主虚拟机4501,所述备端主机上运 行有备虚拟机,存储器450可以包括只读存储器和随机存取存储器,并向处理器410提供操 作指令和数据。存储器450的一部分还可以包括非易失性随机存取存储器(NVRAM)。
[0132] 在一些实施方式中,存储器450存储了如下的元素,可执行模块或者数据结构,或 者他们的子集,或者他们的扩展集:
[0133] 虚拟机4501和虚拟机监控器4052 :其中,虚拟机4501通过虚拟机软件可以在一 台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样 进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟 机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。在本发明实施例中, 通过调用存储器450存储的操作指令(该操作指令可存储在操作系统中),
[0134] 所述I/O设备430用于接收待发送的数据包,所述待发送的数据包携带目的MAC 地址;
[0135] 所述处理器410用于:从所述本通信端口维护的第一数据转发表中,查找与所述 本通信端口关联的所述目的MAC地址对应的目的通信端口标识;
[0136] 所述I/O设备430用于当查找到与所述目的MAC地址对应的目的通信端口标识, 直接向所述目的通信端口标识对应的目的通信端口发送所述待发送的数据包,其中,当所 述源通信端口为虚拟机的虚拟通信端口时,所述目的通信端口为目的物理通信端口,当所 述源通信端口为物理通信端口时,所述目的通信端口为目的虚拟机的虚拟通信端口。
[0137] 可见,与现有技术中虚拟机上下行的数据包都要经过VMM,由VMM从包含每一个 MAC地址与目的通信端口标识的对应关系的大表中确定待发送的数据包要发往的目的端口 相比,本发明实施例提供的物理主机,在虚拟机的虚拟通信端口和物理网卡的物理通信端 口中维护一个只与本通信端口关联的第一数据转发表,所述第一数据转发表由与所述本通 信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,从而加快了确 定目的通信端口的速度,并且在确定到目的通信端口后,源通信端口直接将数据包发送到 目的通信端口,也就是说数据包可以绕过VMM,从而减轻了VMM的负担,提高了数据包转发 的效率。
[0138] 处理器410控制物理主机4的操作,处理器410还可以称为CPU(Central ProcessingUnit,中央处理单元)。存储器450可以包括只读存储器和随机存取存储器,并 向处理器410提供指令和数据。存储器450的一部分还可以包括非易失性随机存取存储器 (NVRAM)。具体的应用中物理主机4的各个组件通过总线系统420耦合在一起,其中总线系 统420除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了 清楚说明起见,在图中将各种总线都标为总线系统420。
[0139] 上述本发明实施例揭示的方法可以应用于处理器410中,或者由处理器410实现。 处理器410可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各 步骤可以通过处理器410中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理 器410可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵 列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实 现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理 器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤 可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执 行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦 写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器450,处理器 410读取存储器450中的信息,结合其硬件完成上述方法的步骤。
[0140] 可选地,处理器410还用于:删除所述本通信端口维护的第一数据转发表中满足 删除条件的MAC地址与目的通信端口标识的对应关系,以保持所述本通信端口维护的第 一数据转发表的容量。
[0141] 可见,本发明实施例中,删除满足删除条件的MAC地址与目的通信端口标识的对 应关系,可以保持第一数据转发表的轻量化,从而进一步提高数据包转发的效率。
[0142] 可选地,输入/输出(I/O)设备430当未查找到与所述目的MAC地址对应的目的 通信端口标识,向所述VMM发送所述待发送的数据包,所述待发送的数据包由所述VMM从所 述VMM中维护的第二数据转发表中,确定与所述目的MAC地址对应的目的通信端口标识,并 向所述目的MAC地址对应的目的通信端口发送所述待发送的数据包,所述第二数据转发表 包含每一个MAC地址与目的通信端口标识的对应关系。
[0143] 可见,本发明实施例提供中,在通过第一数据转发表无法查找到目的通信端口标 识时,可以通过VMM查找相应的目的通信端口标识,从而保证了每个数据包都能得到转发。
[0144] 可选地,输入/输出(I/O)设备430还用于接收所述VMM发送的所述目的MAC地 址与对应的目的通信端口标识的对应关系;
[0145] 处理器410还用于将所述目的MAC地址与对应的目的通信端口标识的对应关系添 加到所述第一数据转发表中,所述目的MAC地址与对应的目的通信端口标识的对应关系用 于发送下一个携带所述目的MAC地址的数据包。
[0146] 可见,本发明实施例中,通信端口可以将VMM确定的目的MAC地址与目的虚拟机的 通信端口标识或目的物理通信端口的标识的对应关系及时添加到第一数据转发表中,从而 使后面相同MAC地址的数据包可以得到快速转发。
[0
147] 可选地,输入/输出(I/O)设备430还用于当任意一个MAC地址对应的目的通信 端口标识发生变更时,接收所述VMM发送的所述任意一个MAC地址与更新后的目的通信端 口标识的对应关系;
[0148] 处理器410还用于将所述任意一个MAC地址与更新后的目的通信端口标识的对应 关系,更新到所述第一数据转发表中,所述任意一个MAC地址与更新后的目的通信端口标 识的对应关系用于发送携带所述任意一个MAC地址的数据包到更新后的目的端口。
[0149] 可见,本发明实施例中,当一个MAC地址对应的目的通信端口标识发生变更时,如 VMM在更新第二数据转发表后,会将MAC地址与更新后的目的通信端口标识的对应关系发 送给每个通信端口,从而使包含该MAC地址的端口更新第一数据转发表中MAC地址与更新 后的目的通信端口标识的对应关系,从而保证后续携带所述任意一个MAC地址的数据包能 快速的发送到更新后的目的端口。
[0150] 参阅图12,本发明实施例提供的物理主机,包括多个虚拟机VM、虚拟机监控器VMM 和物理网卡,每个VM上包括虚拟通信端口,所述物理网卡上包括多个物理通信端口,每个 虚拟通信端口和每个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数 据转发表由与所述本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应 关系组成,
[0151] 当每个虚拟通信端口和每个物理通信端口中的任意一个作为源通信端口时,所述 源通信端口用于:
[0152] 接收待发送的数据包,所述待发送的数据包携带目的MAC地址;
[0153] 从所述本通信端口维护的第一数据转发表中,查找与所述本通信端口关联的所述 目的MAC地址对应的目的通信端口标识;
[0154] 当查找到与所述目的MAC地址对应的目的通信端口标识,向所述目的通信端口标 识对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟机的虚 拟通信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物理通信端 口时,所述目的通信端口为目的虚拟机的虚拟通信端口。
[0155] 与现有技术中虚拟机上下行的数据包都要经过VMM,由VMM从包含每一个MAC地址 与目的通信端口标识的对应关系的大表中确定待发送的数据包要发往的目的端口相比,本 发明实施例提供的物理主机,在虚拟机的虚拟通信端口和物理网卡的物理通信端口中维护 一个只与本通信端口关联的第一数据转发表,所述第一数据转发表由与所述本通信端口关 联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,从而加快了确定目的通 信端口的速度,并且在确定到目的通信端口后,源通信端口直接将数据包发送到目的通信 端口,也就是说数据包可以绕过VMM,从而减轻了VMM的负担,提高了数据包转发的效率。
[0156] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件(例如处理器)来完成,该程序可以存储于一计算机可读存 储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
[0157] 以上对本发明实施例所提供的数据包转发的方法、装置以及系统进行了详细介 绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只 是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发 明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理 解为对本发明的限制。
【主权项】
1. 一种数据包转发的方法,所述方法应用于物理主机中的源通信端口,所述物理主机 包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源通信端口包括每个VM上的虚 拟通信端口,以及所述物理网卡上的物理通信端口,其特征在于,每个虚拟通信端口和每个 物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数据转发表由与所述本 通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,所述方法包 括: 接收待发送的数据包,所述待发送的数据包携带目的MAC地址; 从所述本通信端口维护的第一数据转发表中,查找与所述本通信端口关联的所述目的 MAC地址对应的目的通信端口标识; 当查找到与所述目的MAC地址对应的目的通信端口标识,直接向所述目的通信端口标 识对应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟机的虚 拟通信端口时,所述目的通信端口为目的物理通信端口;当所述源通信端口为物理通信端 口时,所述目的通信端口为目的虚拟机的虚拟通信端口。2. 根据权利要求1所述的方法,其特征在于,所述方法还包括: 删除所述本通信端口维护的第一数据转发表中满足删除条件的MAC地址与目的通信 端口标识的对应关系,以保持所述本通信端口维护的第一数据转发表的容量。3. 根据权利要求1或2所述的方法,其特征在于,所述方法还包括: 当未查找到与所述目的MC地址对应的目的通信端口标识,向所述VMM发送所述待发 送的数据包,所述待发送的数据包由所述VMM从所述VMM中维护的第二数据转发表中,确定 与所述目的MAC地址对应的目的通信端口标识,并向所述目的MAC地址对应的目的通信端 口发送所述待发送的数据包,所述第二数据转发表包含每一个MAC地址与目的通信端口标 识的对应关系。4. 根据权利要求3所述的方法,其特征在于,所述向所述VMM发送所述待发送的数据包 之后,所述方法还包括: 接收所述VMM发送的所述目的MAC地址与对应的目的通信端口标识的对应关系; 将所述目的MAC地址与对应的目的通信端口标识的对应关系添加到所述第一数据转 发表中,所述目的MAC地址与对应的目的通信端口标识的对应关系用于发送下一个携带所 述目的MAC地址的数据包。5. 根据权利要求3所述的方法,其特征在于,所述方法还包括: 当任意一个MAC地址对应的目的通信端口标识发生变更时,接收所述VMM发送的所述 任意一个MAC地址与更新后的目的通信端口标识的对应关系; 将所述任意一个MAC地址与更新后的目的通信端口标识的对应关系,更新到所述第一 数据转发表中,所述任意一个MAC地址与更新后的目的通信端口标识的对应关系用于发送 携带所述任意一个MAC地址的数据包到更新后的目的端口。6. -种数据包转发的装置,所述装置为物理主机中的源通信端口,所述物理主机包括 多个虚拟机VM、虚拟机监控器VMM和物理网卡,所述源通信端口包括每个VM上的虚拟通信 端口,以及所述物理网卡上的物理通信端口,其特征在于,每个虚拟通信端口和每个物理通 信端口中都维护有本通信端口的第一数据转发表,所述第一数据转发表由与所述本通信端 口关联的媒体访问控制MC地址与目的通信端口标识的对应关系组成,所述装置包括: 接收模块,用于接收待发送的数据包,所述待发送的数据包携带目的MAC地址; 查找模块,用于从所述本通信端口维护的第一数据转发表中,查找与所述本通信端口 关联的所述目的MAC地址对应的目的通信端口标识; 发送模块,用于当所述查找模块查找到与所述目的MAC地址对应的目的通信端口标 识,直接向所述目的通信端口标识对应的目的通信端口发送所述待发送的数据包,其中,当 所述源通信端口为虚拟机的虚拟通信端口时,所述目的通信端口为目的物理通信端口,当 所述源通信端口为物理通信端口时,所述目的通信端口为目的虚拟机的虚拟通信端口。7. 根据权利要求6所述的装置,其特征在于,所述装置还包括: 转发表管理模块,用于删除所述本通信端口维护的第一数据转发表中满足删除条件的 MAC地址与目的通信端口标识的对应关系,以保持所述本通信端口维护的第一数据转发表 的容量。8. 根据权利要求6或7所述的装置,其特征在于, 所述发送模块,还用于当所述查找模块未查找到与所述目的MAC地址对应的目的通信 端口标识,向所述VMM发送所述待发送的数据包,所述待发送的数据包由所述VMM从所述 VMM中维护的第二数据转发表中,确定与所述目的MC地址对应的目的通信端口标识,并向 所述目的MAC地址对应的目的通信端口发送所述待发送的数据包,所述第二数据转发表包 含每一个MAC地址与目的通信端口标识的对应关系。9. 根据权利要求8所述的装置,其特征在于,所述装置还包括:添加模块, 所述接收模块,还用于接收所述VMM发送的所述目的MAC地址与对应的目的通信端口 标识的对应关系; 所述添加模块,用于将所述接收模块接收的所述目的MAC地址与对应的目的通信端口 标识的对应关系添加到所述第一数据转发表中,所述目的MAC地址与对应的目的通信端口 标识的对应关系用于发送下一个携带所述目的MC地址的数据包。10. 根据权利要求8所述的装置,其特征在于,所述装置还包括:更新模块, 所述接收模块,还用于当任意一个MAC地址对应的目的通信端口标识发生变更时,接 收所述VMM发送的所述任意一个MAC地址与更新后的目的通信端口标识的对应关系; 所述更新模块,用于将所述接收模块接收的所述任意一个MAC地址与更新后的目的通 信端口标识的对应关系,更新到所述第一数据转发表中,所述任意一个MAC地址与更新后 的目的通信端口标识的对应关系用于发送携带所述任意一个MAC地址的数据包到更新后 的目的端口。11. 一种物理主机,包括多个虚拟机VM、虚拟机监控器VMM和物理网卡,每个VM上包括 虚拟通信端口,所述物理网卡上包括多个物理通信端口,其特征在于,每个虚拟通信端口和 每个物理通信端口中都维护有本通信端口的第一数据转发表,所述第一数据转发表由与所 述本通信端口关联的媒体访问控制MC地址与目的通信端口标识的对应关系组成, 当每个虚拟通信端口和每个物理通信端口中的任意一个作为源通信端口时,所述源通 信端口用于: 接收待发送的数据包,所述待发送的数据包携带目的MAC地址; 从所述本通信端口维护的第一数据转发表中,查找与所述本通信端口关联的所述目的 MAC地址对应的目的通信端口标识; 当查找到与所述目的MAC地址对应的目的通信端口标识,向所述目的通信端口标识对 应的目的通信端口发送所述待发送的数据包,其中,当所述源通信端口为虚拟机的虚拟通 信端口时,所述目的通信端口为目的物理通信端口,当所述源通信端口为物理通信端口时, 所述目的通信端口为目的虚拟机的虚拟通信端口。
【专利摘要】本发明公开了一种数据包转发的方法,应用于物理主机中的源通信端口,源通信端口包括每个VM上的虚拟通信端口,以及物理网卡上的物理通信端口,每个源端口中都维护有本通信端口的第一数据转发表,第一数据转发表由与本通信端口关联的媒体访问控制MAC地址与目的通信端口标识的对应关系组成,方法包括:接收待发送的数据包,待发送的数据包携带目的MAC地址;从本通信端口维护的第一数据转发表中,查找与本通信端口关联的目的MAC地址对应的目的通信端口标识;当查找到与目的MAC地址对应的目的通信端口标识,直接向目的通信端口标识对应的目的通信端口发送待发送的数据包。本发明可以提高数据包转发的效率,减轻虚拟机监控器的负担。
【IPC分类】H04L12/937, H04L12/741
【公开号】CN104883302
【申请号】CN201510119441
【发明人】丁天虹
【申请人】华为技术有限公司
【公开日】2015年9月2日
【申请日】2015年3月18日
转载请注明原文地址:https://www.famiwei.com/read-8136275.html