一种报文接收方法与芯片组的制作方法

文档序号:7859252阅读:103来源:国知局
专利名称:一种报文接收方法与芯片组的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种报文接收方法与芯片组。
背景技术
现有技术中VM(Virtual Machine,虚拟机)的报文接收流程为报文由通信网络发送至网卡后,网卡将该报文分类存放在目的VF的接收队列,接着网卡发起直接存储器访问,通过芯片组的地址翻译将该报文传输至目的VM的VF驱动缓存中;然后网卡会产生一个报文已到达的MSI-X interrupt发送给VM的Hypervisor (管理程序),VM的Hypervisor会根据所述MSI-X interrupt产生一个虚拟中断给该报文的目的VM,指明一个报文接收操作已完成,使所述目的VM处理该报文。现有技术中,每次产生中断接收报文的过程中,无论当前占有CPU的VM是否 是MSI-X interrupt的目的VM,都要保存CPU正在运行的上下文,切换CPU运行环境,将Hypervisor切入执行,浪费CPU和总线带宽资源。

发明内容
本发明的实施例提供一种报文接收方法与芯片组,可以减少在VM接收报文过程中的CPU运行环境切换次数,节省CPU和总线带宽资源。为达到上述目的,本发明的实施例采用如下技术方案第一方面,公开了一种报文接收方法,包括芯片组将接收到的网卡发送的报文中携带的总线地址进行地址翻译获得物理地址,并将所述报文发送至占用所述物理地址的目的虚拟机VM ;所述芯片组接收所述网卡发送的携带有所述目的VM对应的ID的扩展消息告知中断 MSI-X ;所述芯片组根据所述MSI-X携带的所述目的VM对应的ID,判断当前占用CPU的VM是否为所述MSI-X的目的VM ;若是,则所述芯片组将所述MSI-X发送给所述目的VM,以使得所述目的VM处理所述报文; 若不是,则所述芯片组中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,并将所述MSI-X发送给所述目的VM ;以使得所述目的VM处理所述报文。在第一种可能的实现方式中,所述芯片组包括VT-D或输入输出内存管理单元IOMMU。结合第一方面和第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述总线地址为PCIE总线域地址,所述物理地址为存储器域地址。第二方面,公开了一种芯片组,包括接收器,用于接收网卡发送的携带有总线地址的报文;处理器,用于将所述报文携带的总线地址进行地址翻译获得物理地址;
发送器,用于将所述报文发送至占用所述物理地址的目的虚拟机VM ;所述接收器,用于接收所述网卡发送的携带有所述目的VM对应的ID的扩展消息告知中断MSI-X ;所述处理器,还用于根据所述MSI-X携带的所述目的VM对应的ID,判断当前占用CPU的VM是否为所述MSI-X的目的VM ;若是,则将所述MSI-X发送给所述发送器;若不是,则中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,然后将所述MSI-X发送给所述发送器;所述发送器,还用于将所述处理器发送的所述MSI-X发送给所述目的W,以使得所述目的VM处理所述报文。在第一种可能的实现方式中,所述芯片组包括VT-D或I0MMU。
结合第二方面和第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述总线地址为PCIE总线域地址,所述物理地址为存储器域地址。上述技术方案提供的报文接收方法与芯片组,通过芯片组来判断当前占用CPU的VM是否为所述MSI-X的目的VM ;若是,则将所述MSI-X发送给所述目的W,以使得所述目的VM处理所述报文。此时,CPU的运行环境不必将从所述目的VM切换至Hypervisor,再从Hypervisor切换至目的VM,节省了 CPU和总线带宽资源。若不是,贝U芯片组会中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,然后将所述MSI-X发送给所述目的VM,以使得所述目的VM处理所述报文。此时,CPU的运行环境不必从当前占用CPU的VM切换至Hypervisor,再从Hypervisor切换至目的VM,减少了一次切换,也节省了 CPU和总线带宽资源。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例提供的一种报文接收方法流程示意图;图2为本发明实施例提供的一种芯片组的结构框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种报文接收方法,如图I所示,所述方法包括以下步骤101、芯片组将接收到的网卡发送的报文中携带的总线地址进行地址翻译获得物理地址,并将所述报文发送至占用所述物理地址的目的VM。在VM接收报文的过程中,网络侧发送的报文会先到达网卡,所述报文中携带有MAC(Medium Access Control,介质访问控制层)地址,所述网卡会将的报文存储在L2Sorter/switch/classifier (二层分选机/ 交换机 / 分类器)中,所述 L2Sorter/switch/classifier根据所述报文携带的MAC地址对所述报文分类后,存放到对应的VF(VirtualFunction,虚拟功能)的接收队列里。在这里需要说明的是每个VF都对应有一个VM,所述VF内存储的报文是确定发送至对应的VM的。网卡将接收到的报文存至对应的VF后会发起DMA (Direct Memory Access,直接内存存取)操作,启动DMA引擎,在所述报文中添加含有所述对应的VF所对应的总线地址的报文头。然后,网卡将携带有该总线地址的所述报文发送至芯片组。所述芯片组中存储有总线地址与物理地址的映射表,所述芯片组可以根据所述映射表将所述报文中的总线地址进行地址翻译获得物理地址,然后将所述报文发送给占用所述物理地址的目的VM,所述VM将其存放在地址为所述物理地址的驱动缓存中。102、所述芯片组接收所述网卡发送的携带有所述目的VM对应的ID的MSI-X(Message Signaled Interrupts extension,扩展消息告知中断)。所述网卡将所述报文发送给芯片组后,会产生一个MSI-X发送给所述芯片组,所 述MSI-X中携带有所述报文的目的VM对应的ID。103、芯片组根据所述MSI-X携带的目的VM对应的ID,判断当前占用CPU的VM是否为所述MSI-X的目的VM。每个VM都对应有一个ID,所述MSI-X中携带的ID为所述MSI-X的目的VM对应的ID,若所述MSI-X中携带的ID为当前占用CPU的VM对应的ID,则所述当前占用CPU的VM为所述MSI-X的目的VM。否则,则不是。104、若是,则芯片组将所述MSI-X发送给所述目的VM,以使得所述目的VM处理所述报文。若当前占用CPU的VM是所述MSI-X的目的VM,则所述芯片组直接将所述MSI-X发送给当前占用CPU的VM即目的VM,所述MSI-X表示一个接收操作已完成,所述目的VM接收到所述MSI-X后,会得知自己接收到了一个报文,可以对所述报文进行处理。此时,CPU的运行环境不必将从所述目的VM切换至Hypervisor,再从Hypervisor切换至目的VM,节省了 CPU和总线带宽资源。105、若不是,则芯片组中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,并将所述MSI-X发送给所述目的VM ;以使得所述目的VM处理所述报文。若当前占用CPU的VM不是所述MSI-X的目的VM,则所述芯片组将中止当前占用CPU的VM并保存该VM的上下文,切换CPU的运行环境,将所述目的VM调入执行后,所述芯片组会将所述MSI-X发送给所述目的W,所述MSI-X表示一个接收操作已完成,所述目的VM接收到所述MSI-X后,会得知自己接收到了一个报文,可以对所述报文进行处理。此时,CPU的运行环境不必从当前占用CPU的VM切换至Hypervisor,再从Hypervisor切换至目的VM,减少了一次切换,节省了 CPU和总线带宽资源。这里需要说明的是,本发明实施例中所述的芯片组包括英特尔芯片组的VT-D(Virtualization Technology for Directed,接内存访问的虚拟化技术)或AMD (Advanced Micro Devices,超微半导体)芯片组的 IOMMU (Input/Output MemoryManagement Unit,输入输出内存管理单元)。所述的总线地址可以为PCIE (PeripheralComponent Interconnect Express,外设组件互连标准扩展)总线域地址,所述物理地址可以为存储器域地址。本发明实施例还提供了一种芯片组,如图2所示,所述芯片组包括接收器201,处理器202,发送器203。接收器201,用于接收网卡发送的携带有总线地址的报文。在VM接收报文的过程中,网络侧发送的报文会先到达网卡,所述报文中携带有MAC地址,所述网卡会将的报文存储在L2Sorter/switch/classifier中,所述L2Sorter/switch/classifier根据所述报文携带的MAC地址对所述报文分类后,存放到对应的VF的接收队列里。在这里需要说明的是每个VF都对应有一个VM,所述VF内存储的报文是确定发送至对应的VM的。网卡将接收到的报文存至对应的VF后会发起DMA操作,启动DMA引擎,在所述报文中添加含有所述对应的VF所对应的总线地址的报文头。然后,网卡将携带有该总线地址的所述报文发送至芯片组。所述芯片组的接收器201接收所述网卡发送的携带有该总线地址的所述报文。 处理器202,用于将所述报文携带的总线地址进行地址翻译获得物理地址。所述芯片组中存储有总线地址与物理地址的映射表,所述芯片组的处理器202查找所述映射表可以将所述总线地址翻译成物理地址。发送器203,用于将所述报文发送至占用所述物理地址的目的VM。所述芯片组的发送器203会将所述报文发送至占用所述物理地址的目的VM,所述VM将所述报文存放在地址为所述物理地址的驱动缓存中。所述接收器201,用于接收所述网卡发送的携带有所述目的VM对应的ID的MSI-X。所述网卡将所述报文发送给芯片组后,会产生一个MSI-X发送给所述芯片组,所述MSI-X中携带有所述报文的目的VM对应的ID。所述芯片组的接收器201会接收所述MSI-X。所述处理器202,还用于根据所述MSI-X携带的所述目的VM对应的ID,判断当前占用CPU的VM是否为所述MSI-X的目的VM ;若是,则将所述MSI-X发送给所述发送器;若不是,则中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,然后将所述MSI-X发送给所述发送器;所述发送器203,还用于将所述处理器202发送的所述MSI-X发送给所述目的W,以使得所述目的VM处理所述报文。 每个VM都对应有一个ID,所述MSI-X中携带的ID为所述MSI-X的目的VM对应的ID,若所述MSI-X中携带的ID为当前占用CPU的VM对应的ID,则所述当前占用CPU的VM为所述MSI-X的目的VM。否则,则不是。芯片组的处理器202可以根据所述MSI-X携带的ID,来判断当前占用CPU的VM是否为所述MSI-X的目的VM。若所述处理器202判断出当前占用CPU的VM是所述MSI-X的目的VM,则所述芯片组的发送器203直接将所述处理器202发送过来的所述MSI-X发送给当前占用CPU的VM即目的VM,所述MSI-X表示一个接收操作已完成,所述目的VM接收到所述MSI-X后,会得知自己接收到了一个报文,可以对所述报文进行处理。此时,CPU的运行环境不必将从所述目的VM切换至Hypervisor,再从Hypervisor切换至目的VM,节省了 CPU和总线带宽资源。若当前占用CPU的VM不是所述MSI-X的目的VM,则所述芯片组将中止当前占用CPU的VM并保存该VM的上下文,切换CPU的运行环境,将所述目的VM调入执行后,所述芯片组会将所述MSI-X发送给所述目的VM,所述目的VM接收到所述MSI-X后,得知一个报文接收操作已完成,可以对所述报文进行处理。此时,CPU的运行环境不必从当前占用CPU的VM切换至Hypervisor,再从Hypervisor切换至目的VM,减少了一次切换,节省了 CPU和总线带宽资源。这里需要说明的是,本发明实施例中所述的芯片组包括英特尔芯片组的VT-D或AMD芯片组的I0MMU。所述的总线地址可以为PCIE总线域地址,所述物理地址可以为存储器域地址。本发明实施例提供了一种报文接收方法与芯片组,通过芯片组来判断当前占用CPU的VM是否为所述MSI-X的目的VM ;若是,则将所述MSI-X发送给所述目的VM,以使得所述目的VM处理所述报文。此时,CPU的运行环境不必将从所述目的VM切换至Hypervisor,再从Hypervisor切换至目的VM,节省了 CPU和总线带宽资源。若不是,则芯片组会中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,然后将所述MSI-X发送给所述目的VM,以使得所述目的VM处理所述报文。此时,CPU的运行环境不必从当前占用CPU的 VM切换至Hypervisor,再从Hypervisor切换至目的VM,减少了一次切换,也节省了 CPU和总线带宽资源。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.一种报文接收方法,其特征在于,包括 芯片组将接收到的网卡发送的报文中携带的总线地址进行地址翻译获得物理地址,并将所述报文发送至占用所述物理地址的目的虚拟机VM ; 所述芯片组接收所述网卡发送的携带有所述目的VM对应的ID的扩展消息告知中断MSI-X ; 所述芯片组根据所述MSI-X携带的所述目的VM对应的ID,判断当前占用CPU的VM是否为所述MSI-X的目的VM ; 若是,则所述芯片组将所述MSI-X发送给所述目的VM,以使得所述目的VM处理所述报文; 若不是,则所述芯片组中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,并将所述MSI-X发送给所述目的VM ;以使得所述目的VM处理所述报文。
2.根据权利要求I所述的方法,其特征在于,所述芯片组包括直接内存访问的虚拟化技术VT-D或输入输出内存管理单元IOMMU。
3.根据权利要求I或2所述的方法,其特征在于,所述总线地址为外设组件互连标准扩展PCIE总线域地址,所述物理地址为存储器域地址。
4.一种芯片组,其特征在于,包括 接收器,用于接收网卡发送的携带有总线地址的报文; 处理器,用于将所述报文携带的总线地址进行地址翻译获得物理地址; 发送器,用于将所述报文发送至占用所述物理地址的目的虚拟机VM ; 所述接收器,还用于接收所述网卡发送的携带有所述目的VM对应的ID的扩展消息告知中断MSI-X ; 所述处理器,还用于根据所述MSI-X携带的所述目的VM对应的ID,判断当前占用CPU的VM是否为所述MSI-X的目的VM ;若是,则将所述MSI-X发送给所述发送器;若不是,则中止当前占用CPU的VM并保存其上下文,将所述目的VM调入执行,然后将所述MSI-X发送给所述发送器; 所述发送器,还用于将所述处理器发送的所述MSI-X发送给所述目的W,以使得所述目的VM处理所述报文。
5.根据权利要求4所述的芯片组,其特征在于,所述芯片组包括VT-D或输入输出内存管理单元IOMMU。
6.根据权利要求4或5所述的芯片组,其特征在于,所述总线地址为外设组件互连标准扩展PCIE总线域地址,所述物理地址为存储器域地址。
全文摘要
本发明实施例提供了一种报文接收方法与芯片组,涉及通信领域,可以减少在VM接收报文过程中的CPU运行环境切换次数,节省CPU和总线带宽资源。所述方法包括芯片组将接收到的网卡发送的报文中携带的总线地址进行地址翻译获得物理地址,并将所述报文发送至占用所述物理地址的目的VM;然后根据接收到的网卡发送的MSI-X中携带的所述目的VM对应的ID,判断当前占用CPU的VM是否为MSI-X的目的VM;若是,则将MSI-X发送给目的VM,以使得目的VM处理该报文;若不是,则中止当前占用CPU的VM并保存其上下文,将目的VM调入执行,并将MSI-X发送给目的VM;以使得目的VM处理该报文。
文档编号H04L12/741GK102916882SQ20121031507
公开日2013年2月6日 申请日期2012年8月30日 优先权日2012年8月30日
发明者向光蓉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1