本发明专利技术涉及一种多虚拟机应用的虚拟化网卡中断控制方法,网卡接收或发送数据包时,先读取数据包的描述符,获得DMA源地址、目的地址和长度等信息,然后执行DMA操作,操作完成后再将描述符回写,对应虚拟机队列的计数器进行计数,当计数器的数值达到预设阈值时,发送中断请求;计数器工作同时,计时器也进行计时工作,当计时器的数值达到预设时间阈值,则判断数据包是否完成操作,若完成了操作则发送中断请求,否则等数据包完成操作后才发送中断请求;根据需要,还设有不受上述两个阈值约束的立即中断操作;采用本方法将原来软件层的中断工作通过硬件完成,完全解放CPU,降低CPU使用率,同时由于硬件处理速度远高于软件,大大提高了数据处理速度。
【技术实现步骤摘要】
本专利技术提供了 一种高速网卡的中断控制方法,具体涉及一种多虚拟机应用 的虚拟化网卡中断控制方法。
技术介绍
一般来说10M或者100M的网卡,它的硬件中断是来个数据包就中断一次, 这种方式在百兆以下的数据流量时可以正常运作。但在1000M的网卡中, 一般 不采用这种方法,因为大数据流量会导致接收端系统崩溃。这是因为高速数据 流会产生过多的中断,CPU将它所有时间都花费在处理中断上,没有任何系统资 源来将已到达的数据包传给应用程序处理或转发出去。为此,在千兆网卡设计 中引入了一种称之为批量中断(Interrupt Batching)的硬件技术。使用这种 技术的网卡将会每过一定时间来产生中断,中断产生前接收的数据包将存储在 网卡的缓冲中。CPU在处理接收到的数据包时,将关闭网卡中断,这种技术虽然 一定程度的减少了 CPU使用率,但是如果在恰好网卡的缓冲区被填满,且中断 被关闭时,网卡将无法产生中断,那么在缓冲区被清空之前到达的包均被网卡 丢弃。这样的话,就会有掉包的情况出现了,缓冲区里面的数据包被不断地被 覆盖,只有等到CPU处理完当前数据包后,把中断打开,网卡才把当前缓冲区 中的数据包传递过去,开始正常接收后续数据包。随着多核服务器平台的推广和虚拟化应用的普及,采用PCI-E接口的万兆 网卡也得到迅速的发展。但传统的虚拟机监控(Virtual Machine Monitor)的 软交换实现多个虚拟机对网络设备的共享,明显的降低了网卡I/O接口的处理 性能,增长数据包处理的响应时间,并占用较高的CPU使用率,如图1所示。
技术实现思路
为了解决上述缺陷,本专利技术提供了一种能降低CPU负担,避免数据包丢失,且适合于高速、虚拟机应用网络的虚拟网卡应用方法 一种多虚拟机应用的网卡中断控制方法,所述网卡上设置有FPGA,所述FPGA包括MAC模块、内存模 块、PCIe、网络滤波器、DMA控制器、协议处理器、描述符管理器、内存模块; 特征在于是所述DMA控制器还连接有中断控制器,所述中断控制器内设有计 数器和计时器,述所述内存模块对应每个虚拟机划分有相应的虚拟机队列,所 述方法采用如下步骤A、 网卡在收发数据包时,所述协议处理器通过描述符管理器读取所述数据 包的描述符获得DMA的源地址、目的地址和长度信息,并将所述描述符传给所述 DMA控制器;B、 发送数据包时,所述DMA控制器根据描述符的信息将所述数据包直接从 主机中通过协议处理器进行派分,将从主机中读到的数据包寄存到相应内存模 块的虚拟机队列中;接收数据包时,DMA控制器根据描述符的信息将所述数据包 从相应内存模块的虚拟机队列中读出并写入主机内存;C、 所述DMA控制器完成数据包的派分寄存操作后,将描述符进行回写操作, 通知中断控制器数据包的接收或发送操作完成,所述中断控制器的计数器对相 应虚拟机队列的计数执行加1操作;D、 当所述内存模块的虚拟队列相应计数器的数值达到预设数量阈值时,所 述计数器通知中断控制器向相应的虚拟主机发送中断请求。本专利技术的优选技术方案为所述多虚拟机应用的网卡中断控制方法的步骤c中,所述中断控制器的计数器工作同时,中断控制器的计时器同时进行时间计数,所述计时器上预设有时间阀值,当计时器的数值达到所述预设时间阈值时,判断所述DMA控制器是否有数据包接收或发送,当有数据包完成了操作时,将 发送中断请求;否则等有数据包达到后才会发送中断请求。本专利技术的进一步优选技术方案为所述多虚拟机应用的网卡中断控制方法 中,所述中断控制器还执行立即中断操作,既向虚拟机发出立即中断请求,所5述立即中断操作不受所述预设时间阀值和预设数量阀值的约束。本专利技术进一步优选技术方案为所述多虚拟机应用的网卡中断控制方法中, 所述中断控制器在网卡插拔网线时收到网卡接口产生上电或下电信号,并向虛 拟机发出立即中断请求。本专利技术进一歩优选技术方案为所述的多虚拟机应用的网卡中断控制方法 中,所述中断控制器还设有立即中断条件值,当接收到的数据包的端口信息、 长度信息和TCP包头中控制位信息值符合所述立即中断条件值时,中断控制器 向虚拟机发出立即中断请求。本专利技术更进一步优选技术方案为所述的多虚拟机应用的网卡中断控制方 法中,所述立即中断条件值指定的端口号为单个或者多个。本专利技术有益效果利用硬件快速、高效的特点,实现数据包的中断处理, 完全解放了CPU的操作,降低CPU的使用率,减少CPU负担,避免系统崩溃, 同时由于硬件级别的处理速度远高于软件层次的处理速度,所以大大提高了数 据包吞吐的速度,同时縮短了数据处理的响应时间,提高数据输速度,避免了 由于数据包处理的响应时间过长出现的丢包情况,尤其在万兆网卡的虚拟机应 用网络中,大大减少了系统资源的浪费,提高虚拟机网络中整体的数据处理速 率。附图说明图l传统的虚拟机监控(Virtual Machine Monitor)的软交换示意图。图2本专利技术的中断网卡示意图。图3本专利技术工作原理图。图4本专利技术中断控制器内部结构示意图。具体实施例根据图2 4所示,本专利技术的一种多虚拟机应用的网卡中断控制方法,在网卡上设置有FPGA, FPGA包括MAC模块、内存模块、PCIe、网络滤波器、DMA 控制器、协议处理器、描述符管理器、内存模块,DMA控制器还连接有中断控制 器,中断控制器内设有计数器和计时器,内存模块对应每个虚拟机划分有相应 的虚拟机队列首先,网卡在收发数据包时,协议处理器通过描述符管理器读取数据包的 描述符获得DMA的源地址、目的地址和长度信息,并将描述符传给DMA控制器;当发送数据包时,所述DMA控制器根据描述符的信息将所述数据包直接从 主机中通过协议处理器进行派分,将从主机中读到的数据包寄存到相应内存模 块的虚拟机队列中;接收数据包时,DMA控制器根据描述符的信息将所述数据包 从相应内存模块的虚拟机队列中读出并写入主机内存;当DMA控制器完成数据包的派分寄存操作后,将描述符进行回写操作,既 DMA将数据包的描述符回传给虚拟机监控软件,虚拟机监控软件再通知中断控制 器数据包的接收或发送操作完成,中断控制器的计数器对相应虚拟机队列的计 数执行加1操作,当内存模块的虚拟队列相应计数器的数值达到预设数量阈值 时,计数器通知中断控制器向相应的虚拟主机发送中断请求;在计数器工作的 同时,计时器同时进行时间计数,当计时器的数值达到了预设时间阈值时,判 断所述DMA控制器是否有数据包接收或发送,当有数据包完成了操作时,将发 送中断请求;否则等有数据包达到后才会发送中断请求。根据网卡需要,中断控制器还设计了若干种立即中断操作,既向虚拟机发 出立即中断请求,该立即中断操作不受上述计时器和计数器的两个阈值约束1) 当网卡插拔网线时,所述网卡的接口产生上电或下电信号并传送给中断控制器, 所述中断控制器所述收到上电或下电信号后向虚拟机发出立即中断请求;2)中 断控制器还设有立即中断条件值,当接收到的数据包的端口信息、长度信息和 TCP包头中控制位信息值符合立即中断条件信息时,中断控制器向虚拟机发出立 即中断请求。立即中断条件值指定的端口号可以是单个,也可以是多个。本专利技术技术方案中的网卡可采用PCI Express接口, PCI Express可定义多 种中断方式。本文档来自技高网...
【技术保护点】
一种多虚拟机应用的网卡中断控制方法,所述网卡上设置有FPGA,所述FPGA包括:MAC模块、内存模块、PCIe、网络滤波器、DMA控制器、协议处理器、描述符管理器、内存模块;特征在于是:所述DMA控制器还连接有中断控制器,所述中断控制器内设有计数器和计时器,述所述内存模块对应每个虚拟机划分有相应的虚拟机队列,所述方法采用如下步骤: A、网卡在收发数据包时,所述协议处理器通过描述符管理器读取所述数据包的描述符获得DMA的源地址、目的地址和长度信息,并将所述描述符传给所述D MA控制器; B、发送数据包时,所述DMA控制器根据描述符的信息将所述数据包直接从主机中通过协议处理器进行派分,将从主机中读到的数据包寄存到相应内存模块的虚拟机队列中;接收数据包时,DMA控制器根据描述符的信息将所述数据包从相应内存模 块的虚拟机队列中读出并写入主机内存; C、所述DMA控制器完成数据包的派分寄存操作后,将描述符进行回写操作,通知中断控制器数据包的接收或发送操作完成,所述中断控制器的计数器对相应虚拟机队列的计数执行加1操作; D、当所述内存模块 的虚拟队列相应计数器的数值达到预设数量阈值时,所述计数器通知中断控制器向相应的虚拟主机发送中断请求。...
【技术特征摘要】
【专利技术属性】
技术研发人员:曾宇,方信我,郑臣明,温志明,吴平,
申请(专利权)人:曙光信息产业北京有限公司,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。