CN112041826A - 用于网络接口卡的细粒度业务整形分流 - Google Patents
用于网络接口卡的细粒度业务整形分流 Download PDFInfo
- Publication number
- CN112041826A CN112041826A CN201980026359.7A CN201980026359A CN112041826A CN 112041826 A CN112041826 A CN 112041826A CN 201980026359 A CN201980026359 A CN 201980026359A CN 112041826 A CN112041826 A CN 112041826A
- Authority
- CN
- China
- Prior art keywords
- network interface
- interface card
- packet
- communication
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000007493 shaping process Methods 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 67
- 230000005540 biological transmission Effects 0.000 claims description 174
- 238000004891 communication Methods 0.000 claims description 105
- 238000012546 transfer Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 abstract description 31
- 230000003111 delayed effect Effects 0.000 abstract description 11
- 238000004422 calculation algorithm Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000008713 feedback mechanism Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007618 network scheduling algorithm Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/387—Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
- H04L47/323—Discarding or blocking control packets, e.g. ACK packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/568—Calendar queues or timing rings
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了一种具有业务整形能力的网络接口卡(140)和利用网络接口卡(140)进行网络业务整形的方法。该网络接口卡(140)和方法可以对源自在主机网络设备上实行的一个或多个应用(150a‑c)的业务进行整形。该应用(150a‑c)可以在虚拟机或容器化计算环境中实行。该网络接口卡(140)和方法可以执行或包括几个业务整形机制,包括例如但不限于:延迟的完成机制、时间索引数据结构(130)、分组构建器(142)和存储器管理器(147)。
Description
相关申请的交叉引用
本申请是2018年9月28日提交的美国专利申请No.16/146,373的延续,其公开内容通过引用并入本文。
背景技术
业务整形(traffic shaping)是一种技术,该技术利用各种机制来调节网络数据业务以对被确定为较之被优先的业务流而言不那么重要或不太被期望的业务流进行整形、速率限制、步测、优先处理或延迟,或实施网络资源跨被同等地优先处理的分组流的分布。用于对业务进行整形的机制包括:分类器,该分类器用于基于策略而在不同队列之间匹配和移动分组;特定于队列的整形算法,该整形算法用于延迟、丢弃或标记分组;以及调度算法,该调度算法用于合理地优先处理跨不同队列的分组指派。当考虑到维持大量业务类别的期望的网络性能的要求时,或当在各种网络主机架构中部署业务整形***时,采用这些机制的业务整形***很难扩展。
发明内容
至少一个方面涉及网络接口卡。该网络接口卡包括网络接口卡存储器,该网络接口卡存储器被配置成存储时间索引数据结构,该时间索引数据结构存储与将由网络接口卡传输的相应通信相关联的标识符以及指针集。每个指针集对应于存储在时间索引数据结构中的标识符中的一个。每个指针集中的每个指针指向网络接口卡存储器中的位置或网络接口设备所耦接到的主机计算设备的主机存储器中的位置。网络接口卡包括调度逻辑。该调度逻辑被配置成接收将由网络接口卡传输的新通信的通知,该新通信源自在主机计算设备上实行的多个虚拟化计算环境中的源虚拟化计算环境。该通知包括报头数据和指向要包括在通信中的数据的指针集。调度逻辑被配置成基于分配给源虚拟化计算环境的网络接口卡存储器中的可用容量来确定是丢弃分组还是调度新通信的传输。调度逻辑被配置成响应于确定要调度通信的传输,在被调度的传输时间处将与通信相关联的标识符存储在时间索引数据结构中,并将与通信相关联的指针集存储在网络接口卡存储器中。该网络接口卡包括分组生成逻辑,该分组生成逻辑被配置成在标识符被存储在时间索引数据结构中的通信的被调度的传输时间到来后,使用存储在与通信相关联的网络接口卡存储器中的指针集来生成数据分组。网络接口卡包括被配置成传输生成的数据分组的收发器。该网络接口卡包括传输完成逻辑,该传输完成逻辑被配置成在完成为通信而生成的数据分组的传输后,生成要传送给在发起该通信的源虚拟化计算环境中实行的应用的传输完成消息。
至少一个方面涉及一种网络业务整形的方法。该方法包括在主机计算设备的网络接口卡处接收将由网络接口卡传输的新通信的通知,该新通信源自在主机计算设备上实行的多个虚拟化计算环境中的源虚拟化计算环境。该通知包括报头数据和指向要包括在通信中的数据的指针集。该方法包括基于分配给源虚拟化计算环境的网络接口卡存储器空间中的可用容量来确定是丢弃分组还是调度新通信的传输。该方法包括:响应于确定要调度通信的传输,在被调度的传输时间处将与通信相关联的标识符存储在时间索引数据结构中;并将与通信相关联的指针集存储在网络接口卡存储器中。指针集对应于存储在时间索引数据结构中的标识符,并且指针集中的每个指针指向网络接口卡存储器中的位置或主机计算设备的主机存储器中的位置。该方法包括:在标识符被存储在时间索引数据结构中的通信的被调度的传输时间到来后,使用存储在与通信相关联的网络接口卡存储器中的指针集来生成数据分组。该方法包括传输生成的数据分组。该方法包括:在完成为通信而生成的数据分组的传输后,生成要传达给在发起该通信的源虚拟化计算环境中实行的应用的传输完成消息。
至少一个方面涉及一种其上存储有指令的非暂时性计算机可读介质,该指令被配置成致使主机计算设备的网络接口卡的一个或多个处理器实行一种网络业务整形的方法。该方法包括:接收将由网络接口卡传输的新通信的通知,该新通信源自在主机计算设备上实行的多个虚拟化计算环境中的源虚拟化计算环境。该通知包括报头数据和指向要包括在通信中的数据的指针集。该方法包括基于分配给源虚拟化计算环境的网络接口卡存储器空间中的可用容量来确定是丢弃分组还是调度新通信的传输。该方法包括:响应于确定要调度通信的传输,在被调度的传输时间处将与通信相关联的标识符存储在时间索引数据结构中,并将与通信相关联的指针集存储在网络接口卡存储器中。指针集对应于存储在时间索引数据结构中的标识符,并且指针集中的每个指针指向网络接口卡存储器中的位置或主机计算设备的主机存储器中的位置。该方法包括:在标识符被存储在时间索引数据结构中的通信的被调度的传输时间到来后,使用存储在与通信相关联的网络接口卡存储器中的指针集来生成数据分组。该方法包括:在完成为通信而生成的数据分组的传输后,生成要传达给在发起该通信的源虚拟化计算环境中实行的应用的传输完成消息。
这些和其他方面以及实施方式在下面详细讨论。前述信息和以下详细描述包括各个方面和实施方式的说明性示例,并且提供用于理解所要求保护的方面和实施方式的性质和特征的概述或框架。附图提供对各个方面和实施方式的说明和进一步理解,并且被并入本说明书中并构成本说明书的一部分。
附图说明
附图并非旨在按比例绘制。在各个附图中,相似的附图标记和名称指示相似的元素。为了清楚起见,并非在每个附图中都标记了每个组件。在附图中:
图1是根据一些实施方式的具有网络设备的网络环境的框图;
图2A是示例性虚拟机环境的框图;
图2B是示例性容器化环境的框图;
图3是示出根据一些实施方式的网络接口卡的操作的流程图;
图4A到图4C是示出根据一些实施方式的网络接口卡的操作的框图;并且
图5是根据说明性实施方式的示例性计算***的框图,该示例性计算***可被采用以实现本文所描述和图示的***和方法的要素。
具体实施方式
本公开总体上涉及用于网络接口卡的精细粒度业务整形的***和方法。业务整形是一种技术,该技术利用各种机制来调节网络数据业务以对被确定为较之被优先的业务流而言不那么重要或不太被期望的业务流进行整形、速率限制、步测、优先处理或延迟,或实施网络资源跨被同等地优先处理的分组流的分布。用于对业务进行整形的机制包括:分类器,该分类器用于基于策略而在不同队列之间匹配和移动分组;特定于队列的整形算法,该整形算法用于延迟、丢弃或标记分组;以及调度算法,该调度算法用于合理地优先处理跨不同队列的分组指派。当考虑到维持大量业务类别的期望的网络性能的要求时,或当在各种网络主机架构中部署业务整形***时,采用这些机制的业务整形***很难扩展。
业务整形***应被设计成在管理较高级别的拥塞控制(诸如在传输控制协议(TCP)中使用的)的同时,实现高效的存储器使用和主机处理器功耗。业务整形***可以包括若干不同的机制和/或技术,用于高效且可靠地控制来自多个到许多不同的虚拟机和/或通过网络接口卡共享带宽的应用实例的流程。本文所描述的各种业务整形机制和技术包括延迟的完成机制、时间索引数据结构、分组构建器和存储器管理器。
通常,业务整形机制已经在网络设备的OS或网络接口驱动器内实行。本公开的实施例可以在网络接口卡本身中的逻辑上实行延迟的完成机制、时间索引数据结构、分组构建器和存储器管理器。在网络接口卡中实行这些机制可以在减少网络设备上的计算负荷的同时提高网络接口卡的吞吐量。在一些实施方式中,业务整形机制可以在并入网络接口卡的微处理器、现场可编程门阵列(FPGA)或专用集成电路(ASIC)中的逻辑上实行。
延迟的完成机制可以对分组进行延迟、步测或速率限制,以避免突发或不必要的传输延迟。使用延迟的完成可以达成网络资源和主机处理资源的较高利用率。分组延迟机制可以减少对大型存储器缓冲区的需要。例如,当分组被延迟时,反馈机制可以施加“反压”,也就是说将反馈发送到发送模块(例如设备或软件部件,诸如软件应用),以便致使发送模块降低其发送分组的速率。延迟的完成机制可能会阻止应用发送额外分组进行传输,直到应用接收到确认先前转发的分组已成功被传输的消息为止。例如,延迟的完成机制将分组传输完成消息传达到发送模块,例如软件应用或客体操作***,该模块可以抑制网络接口卡请求额外的分组传输,直到它接收到指示先前请求的分组传输已完成的传输完成消息为止。如本文所述,在一些实施方式中,网络接口卡基于存储在网络接口卡上的业务整形策略来处理接收到的分组,以为每个分组确定传输时间。例如,速率限制策略可以包括速率步测策略或目标速率限制。另外或替代地,速率限制策略可以包括与特定分组类别或特定分组类别的总速率相关联的具体策略。在没有分组延迟机制的情况下,发送模块可能会继续生成可被缓冲或丢弃的分组,以至于浪费额外的存储器和主机处理器功率来排队或重新生成分组。
网络接口卡可以将与时间索引数据结构中的相应分组相关联的标识符存储在与为相应分组确定的传输时间相关联的位置处。时间索引数据结构可以包括单个基于时间的队列,诸如定时轮或日历队列数据结构,以从多个队列或TCP套接字接收与分组相关联的标识符。可以基于确定的传输时间来***和提取分组标识符。在一些实施方式中,网络接口卡可以确定已经达到在单个时间索引队列中编入索引的时间,并且作为响应,在与达到的时间相关联的位置处传输与时间索引数据结构中存储的标识符相关联的分组。例如,网络接口卡或网络接口卡可以确定已经达到时间t0,并且因此,网络接口卡和/或网络接口驱动器可以致使与指定t0传输时间的标识符相关联的分组由网络设备的网络接口卡传输。在一些实施方式中,在网络接口卡传输分组之后,网络接口卡可以将传输完成通知传达回到发起所传输的分组的应用。时间索引数据结构可以与延迟的完成机制结合使用。在一些实施方式中,网络设备被配置成在网络设备的TCP层处从多个应用接收分组。接收到的分组源自在主机计算设备上(例如,在主机计算设备所托管的一个或多个虚拟机或容器化实行环境上(在本文中统称为“虚拟计算环境”))实行的应用。
分组构建器可以基于时间索引数据结构中的分组标识符以及存储在网络接口卡存储器中的相关联的相应指针集,来构建用于传输的分组。每个标识符可以是例如指向包含指针集的存储器中的区域的指针。每个指针集包括多个指针,其中每个指针指向主机存储器中的存储器位置,该存储器位置存储将构成与标识符相关联的分组的数据的一部分。当时间索引数据结构达到对应于时间索引数据结构中的标识符的传输时间的时间时,分组构建器可以使用该标识符从网络接口卡存储器中检索指针集,并使用该指针集来构建用于传输的分组。在一些实施方式中,指针集可以采取散集(scatter gather)列表的形式。指针集中的每个指针都可以指向存储器中包含分组的适当字段、分量或有效负荷的区域。分组构建器因此可以基于指针集来构建分组报头和有效负荷。在一些实施方式中,分组构建器可以使用例如直接存储器访问(DMA)来直接访问主机存储器。通过在时间索引数据结构中维持仅单个标识符,可以将时间索引数据结构的大小最小化。此外,通过仅将指针集存储在网络接口卡存储器中,网络接口卡不必将用于传输的所有排队的分组的整体存储在其自己的本地存储器中;因此,可以最小化网络接口卡的存储器大小,并且可以优化主机网络设备与网络卡之间的传输。此外,通过使用分组标识符和指针集进行网络接口卡中的调度和其他业务整形操作,网络接口卡可以接收通知并调度(或不调度)分组传输,而不必接收大量分组数据。因此,从应用到网络接口卡的业务突发(按照每秒字节数)可能会小得多,并且不太可能使主机设备与网络接口卡之间的接口的可用带宽不堪重负。当分组准备好即将传输时,网络接口卡仅需要接收该分组的大部分数据。此外,网络接口卡永远不需要接收分组的未被调度用于传输的大部分数据(例如,由于分配给发起通知的虚拟机的网络接口卡存储器中的可用容量缺乏,导致通知被丢弃)。因此,主机到网络接口卡的接口带宽会保留给实际要被传输的分组,并且基本上以传输速率使用带宽,该传输速率由网络接口卡本身而不是由应用、虚拟机、或生成分组的容器控制。当分组生成应用、虚拟机或容器之间几乎没有协调时,这可能特别有价值。
网络接口卡可以实现存储器管理器,该存储器管理器可以控制可用于在网络设备上实行的每个虚拟机或容器的网络接口卡资源的量。在一些情况下,每个虚拟机可能会实行许多应用(数十个或更多个)。业务整形的其他方法(诸如延迟的完成)可以控制在个别应用实例处发起的或在逐流基础上的业务。然而,在云计算环境中,单个虚拟机或容器同时实行许多应用是可能的。例如,单个虚拟机或容器托管一百个或更多个应用是可能的,所有这些应用都试图同时传输分组。其他业务整形机制可能为不同业务类别采用不同的传输队列;然而,这些机制还缺乏按源区分业务的能力。因此,对于托管虚拟机的主机设备或容器化环境,使每个虚拟机或容器具有单独的业务整形控制能力可能是有益的。存储器管理器可以通过分配网络接口卡存储器的可用于每个虚拟机或容器的部分,为每个虚拟机或容器提供单独的业务整形控制。因此,存储器管理器可以确保没有单个虚拟机或容器能够使网络接口卡的资源超载而导致损害其他虚拟机或容器。例如,基于由存储器管理器分配给源虚拟化计算环境的网络接口卡存储器中的可用容量缺乏,网络接口卡的调度逻辑可致使分组被丢弃。然而,如果存在可用于源虚拟化计算环境的容量,则调度逻辑可以调度分组的传输。
在上述实施方式中,诸如在主机网络设备的真实OS上、在虚拟机的客体OS上或在由超级监督者管理的客体OS中的TCP栈的上层上运行的软件应用等的分组源不必知道在网络接口卡上实现的业务整形策略或算法。因此,可以降低在虚拟机环境中实现网络接口驱动器和客体操作***的成本。此外,分组源也不必知道其他配置参数,例如分组分类规则和其他速率限制策略。因此,与其中应用或用户配置此类详细算法和策略的方法相比,可以以更可靠的方式执行业务整形。
图1是具有网络设备110的示例性网络环境100的框图。概括而言,图示的网络环境100包括互相连接的网络节点750的网络700。网络节点750作为数据源、数据目的地(或数据宿)和/或通过网络700将数据从源传播到目的地的中间节点(诸如交换机、路由器和/或网关)参与网络700。网络700包括网络设备110,网络设备110具有到各种其他参与的网络节点750的链路600。更详细地参看图1,网络700是促进参加者设备之间的交互的网络。说明性示例网络700是互联网;然而,在其他实施方式中,网络700可以是另一网络,诸如数据中心内的局域网、网络结构或任何其他局域网或广域网。网络700可以由多个连接的子网络或自主网络组成。网络700可以是局域网(LAN)(诸如公司内联网)、城域网(MAN)、广域网(WAN)、诸如互联网的互联网络或对等网络(例如,自组织(ad hoc)WiFi对等网络)。可以使用任何类型和/或形式的数据网络和/或通信网络用于网络700。它可以是公共网络、专用网络或公共网络和专用网络的组合。一般而言,网络700用于在计算设备(例如,网络节点750)之间传递信息,并且数据业务整形***的网络设备110根据其配置来促进该通信。
如图1中所示,网络设备110是托管在真实操作***(OS)上实行的一个或多个应用150a到150c(一般地应用150)的主机或服务器。如下面进一步讨论的,在其他实施方式中,网络设备110可以是托管正在实行应用150的虚拟机或容器的服务器。网络设备110包括网络接口驱动器120、存储器115、网络接口卡140、真实OS 220和应用150。网络接口卡140包括调度器141、分组构建器142、收发器143、传输完成逻辑144、存储器管理器147和存储器146。存储器146可以包括时间索引数据结构(诸如定时轮130),尽管为了清楚起见,定时轮130被图示为在存储器146外部。在一些实施方式中,网络设备110具有与如图5中示出的计算***1010的配置类似的配置。例如,存储器115可以具有与如图5中示出的存储器1070的配置类似的配置,并且网络接口卡140可具有与如图5中示出的网络接口卡1022和/或网络接口控制器1020的配置类似的配置。下面参考图5更详细地描述计算***1010。在图1中图示的网络设备110的一些实施方式中,图5中图示的计算***1010中示出的元件并不必全部存在。
再次参看图1,在一些实施方式中,网络设备110托管一个或多个应用150(例如,应用150a、150b和150c)。应用150a到150c中的一个或多个可以是在网络设备110的真实操作***上运行的软件应用。如关于图2A和图2B进一步讨论的那样,在一些实施方式中,软件应用150a到150c中的一个或多个可以是在虚拟机环境中由超级监督者管理的客体OS上运行的软件应用,也可以是虚拟机环境的客体OS的协议栈(例如,TCP栈)的上层。例如,参看图2A,在图2A中,应用150a到150c可以各自是在真实OS 220上运行的软件应用230、在虚拟机1的由超级监督者250管理的客体OS 260上运行的软件应用265、或虚拟机1的客体OS 260的协议栈261的上层。下面参考图2A更详细地描述了超级监督者250以及其相关的虚拟机环境。
回头参看图1,网络设备110包括存储器115。在一些实施方式中,存储器115可以存储将在网络设备110的处理器上实行的输送协议模块145(诸如,TCP协议模块或网络栈的TCP层)的计算机可实行指令。在一些其他实施方式中,存储器115可以存储网络接口驱动器120的计算机可实行指令。存储器115可以存储与网络接口驱动器120的操作和使用有关的数据和/或指令。存储器115可以包括例如随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、铁电随机存取存储器(FRAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)和/或快闪存储器。
上述在网络设备的TCP层内发生的功能性可以另外或替代地在网络协议栈的输送层、网络层或组合的输送/网络层内的另一网络协议模块中实行。例如,可以在用户数据报协议(UDP)模块、可靠数据报协议(RDP)模块、可靠用户数据报协议(RUDP)模块或数据报拥塞控制协议(DCCP)模块中实现该功能性。如本文中所使用的,网络层、输送层或组合的输送/网络层通常将被称为网络协议栈的分组层。
网络接口驱动器120可以包括在真实OS上运行的网络接口驱动器软件模块。网络接口驱动器(诸如,网络接口驱动器120)可以是存储在存储器115中的计算机可实行指令的集合,所述计算机可实行指令当由处理器实行时帮助促进网络通信。在一些其他实施方式中,网络接口驱动器120可以被实现为在硬件处理器或其他集成电路中实现的逻辑,或者被实现为硬件和软件逻辑的组合。网络接口驱动器120可以经由虚拟机的客体OS(或者在一些实施方式中,通过超级监督者和客体OS)(如果在虚拟机环境中操作)或经由容器化环境的容器管理器直接与软件应用150a到150c中的一个(例如,图2A中的应用265)通信(如果在网络设备110的真实OS 220上操作)。在一些实施方式中,网络接口驱动器120被包括在网络设备110的真实OS的传输控制协议(TCP)栈的第一层内,并且与TCP栈的上层中包括的软件模块或应用进行通信。在一个示例中,网络接口驱动器120被包括在TCP栈的输送层内,并且与TCP栈的应用层中包括的软件模块或应用进行通信。在另一示例中,网络接口驱动器120被包括在TCP栈的链路层内,并且与TCP栈的互联网/输送层中包括的TCP/IP模块通信。在一些实施方式中,该功能性被另外或替代地配置成从另一网络或输送层协议模块(诸如,用户数据报协议(UDP)模块、可靠数据报协议(RDP)模块、可靠用户数据报协议(RUDP)模块或数据报拥塞控制协议(DCCP)模块)接收分组。在一些其他实施方式中,网络接口驱动器120可以被包括作为网络接口卡140的一部分。
网络接口卡140包括网络接口卡存储器146。在一些其他实施方式中,存储器146可以存储网络接口卡140的计算机可实行指令。存储器146可以存储与网络接口卡140的操作和使用有关的数据和/或指令。存储器146可以包括例如随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、铁电随机存取存储器(FRAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)和/或快闪存储器。另外或替代地,存储器146可以存储由调度器141以及网络接口卡140的其他模块和逻辑利用的速率限制算法、速率限制策略或计算机可实行指令。在一些实施方式中,存储器146可以存储与已经由网络设备110传输和/或已被调度用于未来传输的分组的流或类别相关联的统计信息或度量。例如,存储器146可以存储统计信息或度量,诸如将应用速率限制的每个分组类别中的分组的先前和即将到来的传输时间以及历史传输速率。统计数据还可以包括与每个类别相关联的当前在定时轮130(在下面进一步讨论)中的分组的数量。在一些实施方式中,存储器146存储计算机可实行指令,该计算机可实行指令当由网络接口卡140实行时致使网络接口卡140实施图3中示出的处理阶段,下面将进一步描述。
如上面所提及的,网络接口卡140包括调度器141。调度器(诸如调度器141)可以是存储在例如存储器146中的计算机可实行指令的集合,该计算机可实行指令当由处理器实行时致使实现下面讨论的功能性。在一些其他实施方式中,调度器141可以被实现为在硬件处理器或其他集成电路中实现的逻辑,或者被实现为硬件和软件逻辑的组合。在一些实施方式中,调度器141被利用来管理***到定时轮数据结构130中并从中提取的分组标识符的序列。在一些实施方式中,在进行调度或做出任何决策之前,调度器141可以:a)至少将分组报头复制到网络接口卡存储器146;b)准备指向分组报头和分组有效负荷的描述符(其可能或可能不被复制到网络接口卡存储器146);以及c)实行调度决策并使该描述符的标识符在时间索引数据结构130中排队。
另外或替代地,调度器141可以实现可用于不同操作***内核的已知的、现有的网络调度算法。在一些实施方式中,调度器141可以实现定制的、用户定义的调度算法。例如,调度器141可以包括能够计算接收到的分组的时间戳的速率限制策略算法。在一些实施方式中,调度器141可以实现加权公平排队算法,以确保多个分组流以最小-最大公平分配方案与它们的权重成比例地共享带宽。另外或替代地,调度器141可以巩固时间戳,以使得较大的时间戳表示较小的目标传输速率。在一些实施方式中,调度器141可以存储和/或从存储器146中检索速率限制调度算法。另外或替代地,调度器141可以评估由网络接口驱动器120接收的分组,并且将分组标识符存储在定时轮数据结构130中。在一些实施方式中,调度器141可以评估接收的分组数据,以确定与接收的分组相关联的传输时间戳。另外或替代地,调度器141可以为接收到分组确定更新的传输时间戳,该接收到的分组已经具有由发起该分组的应用、虚拟机或容器所应用的时间戳,并且可以将更新的传输时间戳应用于分组标识符。在一些实施方式中,调度器141可以指导定时轮数据结构130将具有传输时间戳的分组标识符存储在定时轮数据结构130中的适当时隙处。另外或替代地,调度器141可以指导定时轮130当已经达到传输时间时提取存储的分组标识符,例如包括传输时间戳的分组标识符。下面参考图4A到图4C更详细地描述调度器141。
网络接口卡140还可以包括诸如存储器管理器147的存储器分配逻辑。存储器管理器147可以对可用于在网络设备110上实行的每个虚拟机或容器的存储器146中的存储器空间量实施限制。(下面参考图2A和图2B进一步详细描述在网络设备110上实行的虚拟机或容器与应用之间的关系)。在一些情况下,每个虚拟机或容器可以实行许多应用(数十个或更多个)。存储器管理器147可以将存储器146的各部分分配给每个虚拟机或容器。因此,存储器管理器147可以确保没有单个虚拟机或容器能够使存储器146过载而导致损害在其他虚拟机或容器上实行的应用。
网络接口卡140具有可以被分配用于指针(即,分组描述符)的可配置的量的存储器146。用于描述符的可配置的量的存储器146必须与用于路由表和/或可实行代码的容量需求保持平衡。然后,必须在将由网络接口卡140传输的分组的所有生产者之间共享可配置的量的存储器146,其中生产者可以包括虚拟机、主机OS上的作业等。在生产者之间共享可能会被超额订阅(基于并非所有生产者都会同时使用其全部分配这一假设)。存储器管理器147可以具有针对每个生产者的几个可配置限制,例如针对具有不同服务质量(QoS)标志的分组的不同限制。例如,存储器146可以存储至多10万个分组,其中相当于2万个分组的容量被分配给五个生产者中的每个。对于每个生产者,存储器管理器147可以允许生产者用高优先级分组填充所有2万个分组容量,但是将低优先级分组的上限限制为每个生产者1万个。在该示例中,也有可能为六个生产者中的每个分配2万个分组容量,从而导致相当于2万个分组的容量被超额订阅。但是除非组合的生产者各自使用高优先级分组最大化其分配,否则生产者将不会使总分配的存储器146最大化。
在一些实施方式中,存储器管理器147可以基于多种其他因素或计算中的一个或多个来分配存储器。例如,存储器管理器147可以基于由某些虚拟机或容器对存储器146的历史使用来分配存储器146中的空间。如果虚拟机或容器通常在存储器146中使用至多例如10MB的空间,则存储器管理器147可以为该虚拟机或容器分配10MB或10MB加上1MB、2MB、5MB或10MB等的额外余量。在另一示例中,存储器147可基于给定虚拟机或容器将需要多少容量的预测来分配存储器146中的空间。一些虚拟机或容器在一天或一周的不同时间期间可能会使用更多容量;因此,存储器管理器147可以采用动态分配方案,该动态分配方案根据使用中的可预测变化来改变存储器分配。在一些实施方式中,由存储器管理器147进行的存储器分配可以是用户可配置的。
在示例性操作中,当网络接口卡140接收到源自源虚拟化计算环境(例如,虚拟机或容器)的新通信的通知时,调度器141可以基于存储器管理器147做出的分配来确定存储器146中是否有任何容量可用于源。如果存储器146中没有容量可用于源,则网络接口卡140可以丢弃该分组。调度器141可以通过多种机制来丢弃分组。例如,调度器141可以简单地忽略该通知;然而,通常仅在调度器141在应用150上实施数据速率上限(诸如20Gbps上限)的情况下才使用该机制。该机制将造成可能与本文所公开的细粒度业务整形不兼容的更加任意的方式的业务整形。用于丢弃分组的第二机制可以包括:如果应用150没有剩余配额用于分组传输,则应答通知、丢弃分组并且将完成消息发送回应用150。下面将就传输完成逻辑144进一步讨论完成消息。第三机制涉及减慢分组发送器(即,应用150)的速度,而不是完全丢弃分组。如果调度器141确定存储器146中有容量可用于源,并且应用150还有一些剩余配额用于传输,则调度器141可以应答该通知、将分组排队到定时轮130、在被调度的时间处传输分组并且将延迟的完成消息递送给应用150。
如上面所提及的并且如图1中所示,网络接口卡140包括定时轮数据结构130(也被称为定时轮130)。定时轮数据结构是时间索引队列,该时间索引队列可以被实现为循环缓冲区,该循环缓冲区用于在O(1)中的给定时间处对对象进行排队,并在O(1)中的特定时间取得要处理的对象。可以根据由算法执行的基本运算的数量来估计该算法的时间复杂度。该估计可以用O(n)的形式表示。例如,如果运行时间的值T(n)以不依赖于输入大小的值为边界,则算法可以具有恒定时间(例如,O(n),其中n=1)。如上所述,在定时轮数据结构中访问单个元素(例如,分组标识符)需要恒定的时间(例如,O(1)),因为仅需执行一次操作来定位该元素。在一些实施方式中,定时轮数据结构130可以将由调度器141提供的分组标识符存储在与由生成分组的应用150指定的时间戳相关联的时隙中,或者根据由调度器141确定的更新的传输时间戳进行存储。在当前时间达到或超过时间戳时,定时轮130可以将分组标识符推送到分组构建器142以进行分组生成。在一些实施方式中,诸如分组构建器142或调度器141等另一组件周期性地轮询定时轮130,并且提取其时间戳已经达到或超过当前时间的分组标识符。下面参考图4A到图4C更详细地描述定时轮数据结构130以及其操作。在一些其他实施方式中,代替定时轮,可以使用诸如日历队列等不同的时间索引数据结构来调度分组的传输。
网络接口卡140包括分组构建器142。分组构建器142包括可以使用存储在存储器146中的与通信相关联的指针集生成数据分组的分组生成逻辑。每个指针可以是网络接口卡描述符。描述符可以描述分组;例如,通过指定存储器位置和分组数据的长度。在一些实施方式中,分组数据可以在主机存储器115中。在一些实施方式中,分组数据可以在网络接口卡存储器146中。分组构建器142可以基于定时轮130中的标识符来构建分组以用于传输。
分组构建器142的示例性操作如下所述。在当前时间达到或超过与分组标识符的时间戳相关联的时隙时,定时轮130可以将分组标识符推送到分组构建器142用于分组生成和传输。在一些实施方式中,分组构建器142可以被配置成查询定时轮130以确定是否已经达到在定时轮130中被编入索引的时间,并且基于确定已经达到它们在定时轮130中被编入索引的传输时间,从定时轮130中提取适当的分组标识符。当时间索引数据结构130达到对应于时间索引数据结构中的标识符的传输时间的时间时,定时轮130可以将分组标识符推送到分组构建器142,该分组构建器142可以使用分组标识符来生成用于传输的分组。该标识符可以是例如指向存储器146中的包含与分组标识符相关联的指针集的区域的指针。该指针集可以指向网络接口卡140或网络设备110上的存储器位置,该存储器位置各自存储构成与标识符相关联的分组的数据的部分。在一些实施方式中,指针可以指示由网络设备110的真实OS指派并且可以由其访问的存储器地址。在一些实施方式中,指针可以指示由虚拟机超级监督者或容器管理器指派并且可以由其访问的存储器地址。在一些实施方式中,指针集可以采取散集列表的形式。指针集中的每个指针都可以指向存储器115中的包含分组的适当字段、分量或有效负荷部分的区域。分组构建器142因此可以基于指针集来构建分组报头和有效负荷。在一些实施方式中,分组构建器142可以使用例如直接存储器访问(DMA)来直接访问主机存储器115。通过在时间索引数据结构130中为每个分组或通信维持仅单个标识符,可以将时间索引数据结构的大小最小化。
网络接口卡140还包括收发器143。收发器143包括被配置成往返网络节点750发送和接收通信的硬件。在一些实施方式中,网络接口卡140可以能够视需要支持例如数据帧速率可能接近每秒100吉比特的光纤通道中的高速数据接收和传输。在一些实施方式中,网络接口卡140可以被配置成支持较低速的通信,例如通过铜(或其他金属)线、无线通道或其他通信介质。
网络接口卡140包括传输完成逻辑144。当网络接口卡140传输数据分组时,传输完成逻辑144可以生成传输完成消息并将其发送到发起通信的源虚拟化计算环境。请求传输数据分组的应用150可以抑制请求额外的分组传输,直到它接收到先前请求的分组传输的完成的通知为止。该传输完成消息向应用150提供反馈机制,并限制应用150将额外分组转发到TCP层。该机制可以与现有的TCP功能性结合使用,该TCP功能性诸如用作有效地限制发送器与接收器之间可能显著的字节数的TCP小队列。
图2A示出了实现虚拟机环境的示例***器200a的框图。在一些实施方式中,服务器200a包括硬件210、在硬件210上运行的真实操作***(OS)220、超级监督者250以及具有客体操作***(客体OS)260和270的两个虚拟机。硬件210可以包括网络接口卡(NIC)215以及其他组件。硬件210可以具有与图5中示出的计算***1010的配置类似的配置。硬件210的NIC 215可以具有与如图1中示出的网络接口卡140的配置类似的配置。在一些实施方式中,真实OS 220具有如图1中示出的协议栈225(例如,TCP栈)或输送协议模块145。在一些实施方式中,真实OS 220包括在真实OS 220上运行的软件应用。在一些实施方式中,客体OS260和270分别包括协议栈261和271。客体OS 260和270中的每个可以托管多种应用,例如软件应用265、266、275和276。服务器200a可以是文件服务器、应用服务器、web服务器、代理服务器、家电、网络家电、网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器或防火墙。
再次参看图2A,服务器200a实行超级监督者250,该超级监督者250分别实例化和管理虚拟机1上的第一客体OS 260和虚拟机2上的第二客体OS 270。在虚拟机1上配置的第一客体OS 260托管第一软件应用265和第二软件应用266。在虚拟机2上配置的第二客体OS260托管第三软件应用275和第四软件应用276。例如,应用可以包括数据库服务器、数据仓库程序、股票市场交易软件、在线银行应用、内容发布和管理***、托管的视频游戏、托管的桌面、电子邮件服务器、旅行预订***、客户关系管理应用、库存控制管理数据库和企业资源管理***。在一些实施方式中,客体OS托管其他种类的应用。
图2B示出了实现容器化环境的示例***器200b的框图。在一些实施方式中,服务器200b包括硬件210、在硬件210上运行的真实操作***(OS)220、容器管理器240、分别执行应用程序241和242的两个容器化环境(例如,容器1和容器2)。硬件210除其他组件外还可包括网络接口卡(NIC)215。硬件210可具有与图5所示的计算***1010类似的配置。硬件210的NIC 215可具有与图1所示的网络接口卡140的配置类似的配置。在某些实施方式中,真实OS 220具有协议栈225(例如TCP栈),并且具有在真实OS 220上运行的软件应用。容器中的每一个(例如,容器1和容器2)可以托管各种应用,例如软件应用241和242。服务器200b可以是文件服务器、应用服务器、Web服务器、代理服务器、家电、网络家电、网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器或防火墙。
再次参看图2B,服务器200b实行容器管理器240,该容器管理器240分别实例化和管理容器1和容器2。容器1托管软件应用241。容器2托管软件应用242。例如,该应用可以包括数据库服务器、数据仓库程序、股票市场交易软件、在线银行应用、内容发布和管理***、托管的视频游戏、托管的桌面、电子邮件服务器、旅行预订***、客户关系管理应用、库存控制管理数据库和企业资源管理***。在一些实施方式中,容器(例如,容器1或容器2)可以托管其他种类的应用。在一些实施方式中,每个容器可以同时托管多个应用。
图3是使用由网络接口卡(诸如,图1中示出的网络接口卡140)执行的示例性方法300进行网络业务整形的流程图。方法300包括接收源自源虚拟化计算环境的新通信的通知(阶段310)。方法300包括确定是丢弃分组还是调度新通信的传输(阶段320)。方法300包括将与通信相关联的标识符存储在时间索引数据结构中,并将与通信相关联的指针集存储在网络接口卡存储器中(阶段330)。方法300包括使用存储在网络接口卡存储器中的指针集来生成数据分组(阶段340)。方法300包括传输所生成的分组(阶段350)。方法300包括将传输完成通知传送回到应用(阶段360)。
方法300包括接收源自源虚拟化计算环境的新通信的通知(阶段310)。新通信的通知可以包括报头数据和指向要包括在通信中的数据的指针集。该通知可以包括请求的传输时间。在一些实施方式中,生成分组的多个应用可以是在一个或多个虚拟机环境中托管的应用,诸如图2A中的应用265、266、275或276中的任何一个。另外或替代地,接收的分组可以由在网络主机的真实OS上实行的应用(诸如,图2A中的应用230)生成。在一些实施方式中,如图2B中所示,应用可以包括在容器化环境中,诸如应用241或242。另外或替代地,接收分组的TCP层可以是虚拟机环境中的客体OS的上层协议栈。
方法300包括确定是丢弃分组还是调度新通信的传输(阶段320)。可以通过诸如先前描述的调度器141的调度逻辑来做出确定。调度器可以基于分配给网络接口卡的存储器(诸如,存储器146)中的源虚拟化计算环境的存储器空间中的可用容量,来确定是丢弃分组还是调度新通信的传输。如果调度器确定分配给源的存储器空间中没有可用的容量,则调度器可以忽略该通知并丢弃分组。如果调度器确定存在可用的容量,则调度器可以通过进行到阶段330来调度分组用于传输。
方法300包括将与通信相关联的标识符存储在时间索引数据结构中以及将与通信相关联的指针集存储在网络接口卡存储器中(阶段330)。调度器可以将标识符存储在时间索引数据结构中,诸如先前描述的定时轮130中。时间索引数据结构可以被配置成包括多个位置或时隙以存储数据或事件。时间索引数据结构包括时间范围,该时间范围是数据或事件可以存储的到未来的最大时间段。例如,时间索引数据结构可以被配置成包括50个时隙,其中每个时隙表示两个事件之间的最小时间粒度。如果配置了包括50个时隙的时间索引数据结构,使得每个时隙表示2微秒的粒度,则时间范围将是100微秒。在该示例中,没有任何数据或事件被调度到未来100毫秒以外。可以基于将要实施的速率限制策略来配置合适的时间范围和定时轮粒度(例如,时隙的数量)。例如,为了实施每秒1兆比特(Mb)的速率,合适的时间范围应为12毫秒。用于时间索引数据结构的合适数量的时隙或位置可以在10个到100万个时隙或位置的范围内。用于时间索引数据结构的合适的时间范围可以在微秒到秒的范围内。在一些实施方式中,可以分层地实现一个或多个定时轮,并且一个或多个定时轮中的每个可以被配置成具有不同数量的时隙和不同定时轮粒度。在该示例中,一个或多个分层定时轮中的每个可以具有不同的时间范围。在一些实施方式中,分组标识符可以对应于由生成分组的应用所请求的时间戳或由调度器确定的经调整的传输时间戳。例如,分组可以包括可以指定所请求的传输时间的标识符,该所请求的传输时间是从当前时间开始的10微秒。调度器可以处理该分组,以基于与该特定类别的分组相关联的速率限制策略来确定立即传输该分组是否将超过速率限制。假设未超出速率限制,则调度器11可以将分组标识符***到时间索引数据结构中的在与未来10微秒的传输时间相关联的位置处。在一些实施方式中,如果所有分组的时间戳为零(例如,传输时间为现在)或小于现在的任何值,则时间索引数据结构可以充当先进先出(FIFO)队列。例如,将立即传输时间戳为零的分组标识符。另外或替代地,将时间戳比现在更早的所有分组标识符***到具有最小时间的数据结构位置,以便可以立即传输它们。将时间戳超出时间索引数据结构的时间范围的任何分组标识符***到数据结构中的最后位置(例如,表示最大时间范围的位置)。
同样在阶段330中,调度器在确定源具有存储器中被分配给其的可用容量后,可以将与通信相关联的指针集存储在网络接口卡存储器中。
在一些实施方式中,调度器可以基于存储在存储器中的速率限制算法或策略来处理接收到的数据分组以确定用于每个分组的传输时间。例如,调度器可以根据与特定类别的分组相关联的速率限制算法或策略来处理分组并应用传输时间戳。在一些实施方式中,调度器被配置成基于速率步测策略或目标速率限制来确定用于每个分组的传输时间。例如,调度器可以基于诸如分组类别速率策略和/或聚合速率策略的速率步测策略来确定用于每个分组的传输时间。在一些实施方式中,调度器可以基于速率步测策略(诸如,加权公平排队策略)来确定传输时间,以处理多个分组流。另外或替代地,每个分组可以具有由生成分组的应用所请求的传输时间戳。在一些实施方式中,调度器可以接收分组,该分组包括在在TCP层处被接收到之前以及在由调度器处理之前由多个应用中的一个指派给该分组的请求的传输时间。调度器可以基本实时地处理分组,以基于超出了至少一个速率限制策略并调用与分组相关联的速率限制算法来确定更新的传输时间。例如,如果处理了接收到的分组,并且调度器确定该分组的传输时间将超出分组类别的速率限制,则调度器可以使用经调整的传输时间戳来更新传输时间,该经调整的传输时间戳使分组能够在稍后的时间被传输,以避免超出用于特定分组类别的速率限制策略所定义的速率限制。调度器可以被配置成经由哈希表或识别与接收的分组相关联的速率限制算法的映射来找出相关联的速率限制算法。
在一些实施方式中,调度器可以确定已经达到了与存储在时间索引数据结构130中的分组标识符相关联的特定传输时间。调度器可以用当前时间来查询时间索引数据结构130,以确定是否存在要被传输的任何分组。例如,调度器可以使用当前CPU时钟时间(或其他一些参考时间值,诸如规则递增的整数值)来查询数据结构。与使用单独的定时器相比(其可能会由于中断而致使大量CPU开销),频繁的轮询可以提供与分组调度和速率限制策略以及减少开销的更大一致性。在一些实施方式中,时间索引数据结构130可以在专用CPU核上实现。另外或替代地,时间索引数据结构130可以在基于中断的***上实现,该***可以以恒定间隔执行数据结构的轮询以确定分组传输调度。例如,可以以等于与每个时隙相关联的时间长度或其倍数的周期来周期性地轮询时间索引数据结构130。在一些实施方式中,可以通过与调度器不同的逻辑(诸如,与分组构建器142类似的分组构建器)来进行定时轮的轮询。
方法300包括使用存储在网络接口卡存储器中的指针集来生成数据分组(阶段340)。该分组可以由诸如先前描述的分组构建器142的分组生成逻辑来生成。在标识符被存储在时间索引数据结构中的通信的被调度的传输时间到来后,分组构建器可以使用存储在与通信相关联的网络接口卡存储器中的指针集来生成数据分组。分组构建器可以从由指针集中的指针所指示的网络设备存储器位置中检索数据,并相应地生成分组。例如,指针集可以存储在网络接口卡存储器146中,并且指针集可以指示网络接口卡存储器146和/或网络设备存储器115中包含分组数据的位置。在一些实施方式中,指针集被存储为散集列表。在一些实施方式中,分组构建器可以使用例如直接存储器访问(DMA)来直接访问主机存储器,以检索存储在由指针集中的指针所指示的存储器位置中的数据。
方法300包括传输所生成的分组(阶段350)。网络接口卡可以通过诸如先前描述的链路600中的一个的网络链路来传输所生成的数据分组。在一些实施方式中,网络接口卡可以基于达到(或超过)存储在时间索引数据结构中的分组标识符中识别的传输时间来传输数据分组。例如,调度器或分组构建器可以轮询时间索引数据结构,并且可以确定已经达到在分组标识符中识别的传输时间。作为响应,调度器可以指导网络接口卡传输所生成的数据分组。在一些实施方式中,调度器可以识别比现在更早的传输时间,并且作为响应,立即传输分组。
在一些实施方式中,方法300可以防止应用中的一个发送额外分组用于传输,直到应用接收到传输完成通知为止。在一些实施方式中,可以通过对由应用向TCP层转发额外数据分组进行速率限制直到接收到指示分组传输已经完成的消息,来部分地达成业务整形。例如,网络接口卡140(如图1中所示并且稍后在图6A到图6B中进行更详细的描述)可以生成完成通知返回给应用150,从而指示分组已通过网络被传输。该传输完成通知向应用提供反馈机制,并限制由应用150将额外分组转发到TCP层。该机制可以与现有的TCP功能性结合使用,该TCP功能性诸如用作有效地限制发送器与接收器之间可能显著的字节数的TCP小队列。
方法300包括将传输完成通知传送回到应用(阶段360)。网络接口卡可以包括传输完成逻辑,该传输完成逻辑被配置成在由网络接口卡完成对分组的传输后,将完成通知传送回到发起分组的应用。完成通知允许应用150将额外分组发送到网络接口卡。将在下面参考图6A到图6B更详细地描述传输完成通知机制。
上述在网络设备的TCP层内发生的功能性可以另外或替代地在网络协议栈的输送层、网络层或组合的输送/网络层内的另一网络协议模块中实行。例如,可以在用户数据报协议(UDP)模块、可靠数据报协议(RDP)模块、可靠用户数据报协议(RUDP)模块或数据报拥塞控制协议(DCCP)模块中实现该功能性。
图4A到图4C是表示如通过诸如网络接口卡140的网络接口卡执行的使用调度器、时间索引数据结构、存储器、存储器管理器和分组构建器来整形网络业务的示例性操作的框图。概括而言,如图4A中所示,网络接口卡140经由网络驱动器120从应用150(例如,应用150a、150b和150c)接收新通信的通知。诸如标记为REQ:A1的通知的通知可以包括报头(或报头的各部分)和指针集,该指针集对应于主机存储器中存储用于分组报头和用于分组有效负荷的额外数据的存储器位置。网络接口卡140包括用于存储指令和数据的一个或多个存储器设备146,以及用于将存储器146的各部分分配给不同的虚拟机、容器或应用150的诸如存储器管理器147的分配逻辑。在图4A到图4C中示出的示例性操作中,为简单起见,将每个应用150视为在不同的虚拟机或容器中实行。网络接口卡140包括调度器141,以根据存储在存储器146中的速率限制算法或策略来处理分组。网络接口卡140还包括时间索引数据结构130,也称为定时轮130,以根据它们的传输时间存储分组标识符,诸如标记为ID:A1的分组标识符。网络接口卡140还包括一个或多个分组构建器142,以基于分组标识符和相关联的指针集来生成分组。如果网络接口卡140从应用接收到新通信的通知,则调度器141可以确定与特定虚拟机或容器相关联的存储器146中的存储器分配是否具有用于处理与分组关联的指针集的容量。如果存储器分配足以存储指针集,则调度器141可以将分组标识符存储在定时轮130中并且将相关联的指针集存储在存储器146中。如果存储器分配缺乏用于存储指针集的容量,则网络接口卡140可以忽略该通知,实质上是丢弃被请求用于传输的分组。当已经达到为分组标识符编入索引的传输时间时(例如,在时间现在420),定时轮130可以将分组标识符推送到分组构建器142以生成分组。图4A到图4C图示了这些操作。
参看图4A,网络接口卡140在其调度器141处从应用150a接收新通信的通知REQ:A1。通知REQ:A1对应于用于经由网络接口卡140从应用150a传输的数据分组。通知REQ:A1可以包括报头或报头数据以及指针集。指针集可以指向主机存储器中存储用于分组报头和/或有效负荷的数据的存储器区域。在网络接口卡140处,指针集(在该情况下为A1)与标识符(在该情况下为ID:A1)相关联。因此,标识符与以下内容相关联:接收到的新通信的通知;用于传输的分组;以及指向数据的指针集,其将最终被网络接口卡140用来生成分组。
存储器管理器147已经在存储器146中为每个虚拟机或容器分配了空间。在图4A到图4C中,为了说明网络接口卡140以及其组件的操作,将每个应用150视为在单独的虚拟机或容器中实行。在图4A中,存储器管理器147已经在存储器146中为来自分别托管应用150a和150b的虚拟机中的每个的三个指针集分配了空间。实际上,用于虚拟机的存储器分配可以是单个指针集或许多指针集。在一些实施方式中,可以按照字节、千字节或兆字节而不是根据指针集的数量来分配存储器空间,并且每个指针集的大小可以不同,以使得适合特定存储器分配的指针集数量取决于指针集的总大小。
如图4A中所示,网络接口卡140的调度器141从应用150a接收通知REQ:A1,并检查存储器146的可用容量。在图4A中示出的示例中,存储器146具有分配给实行应用150a的虚拟机的可用容量。因此,调度器将与通知相关联的分组标识符添加到定时轮130,并且将与分组相关联的指针集添加到存储器146。
如图4A中进一步示出,调度器141处理接收到的通知以确定每个分组的传输时间。调度器141可以通过识别与分组相关联的速率限制算法或策略并将初始或更新的传输时间指派给与分组相关联的标识符来确定每个分组的传输时间。调度器141可以从存储器146中检索速率限制算法或策略,以确定每个分组的初始或更新的传输时间。调度器141可以将接收到的通知识别为属于特定类别的分组。特定类别的分组可能需要与分组类别相关联的特定速率限制算法或策略。调度器141可以利用特定的速率限制算法或策略来确定该类别的每个分组的初始或更新的传输时间。在一些实施方式中,调度器141可以评估由应用150请求的分组传输时间,并且确定所请求的传输时间是否超出了与分组类别相关联的速率限制算法或策略(例如,考虑到其他最近传输的分组或该类别中已经被调度用于未来传输的分组的传输历史,所请求的时间处的传输是否会导致该分组类别的传输速率过高)。调度器141可以处理通知,并且确定应用150所请求的传输时间违反了与分组类别相关联的速率限制或策略。如果超出或以其他方式违反了速率限制或策略,则调度器141可以确定不超出或违反每个分组的速率限制或策略的更新的传输时间。调度器141可以确定请求的或更新的传输时间是当前时间,并且可以实行指令以立即将标识符转发给分组构建器142,以生成对应于标识符的分组。
如图4A中所示,调度器141将与该分组相关联的标识符ID:A1存储在定时轮130中的与为该分组确定的传输时间相关联的位置处。定时轮130可以是时间索引数据结构或队列,它们能够基于相关联的分组的确定的传输时间来存储和提取分组标识符。在一些实施方式中,定时轮130中的每个时隙存储单个数据元素或事件(例如,与分组相关联的标识符)。在一些实施方式中,每个时隙可以存储多个数据元素或事件。定时轮130可以包括预配置数量的时隙或位置,并且每个时隙或位置可以表示特定的时间增量。在一些实施方式中,可以基于网络接口卡140处的数据业务和拥塞的变化水平来动态地调整时隙或位置的数量。定时轮130可以包括任何数量的时隙或位置,其中每个时隙被定义为需要充分处理要整形的业务的量。定时轮130中所有时隙或位置的总和表示定时轮130能够支持的时间范围或向前排队时间帧。可以基于要实施的速率限制策略来配置合适的时间范围和定时轮粒度(例如,时隙的数量)。例如,要实施每秒1兆比特(Mb)的速率,合适的时间范围将为12毫秒。定时轮130的合适数量的时隙或位置可以在10个到1,000,000个时隙或位置的范围内。定时轮130的合适的时间范围可以在10微秒到1秒的范围内。例如,如图4A中所示,定时轮130具有10个时隙,并且每个时隙可表示2微秒。因此,图4A中示出的示例性定时轮130的时间范围是20微秒,并且定时轮130的粒度是2微秒。在一些实施方式中,定时轮130将具有最大时间范围,没有分组标识符将超过该最大时间范围被调度。定时轮130可能不需要存储具有比现在更早的时间戳的分组标识符,因为应当立即传输具有比现在更早的传输时间的分组。一旦定时轮130中的时隙变得比现在更早,则可以使该时隙中的元素离队并准备进行传输。
例如,如图4A中所示,假设调度器141已经处理了与分组标识符ID:A1相关联的分组。与标识符A1相关联的指针集可以保留在存储器146中,并且调度器141将标识符ID:A1存储在定时轮130中的与为与标识符ID:A1相关联的分组所确定的传输时间相关联的位置处。分组标识符ID:A1包括由调度器141确定的传输时间t0。使分组标识符ID:A1在对应于传输时间t0的时隙处***到定时轮130中。定时轮130存储分组标识符ID:A1,直到确定已经达到为与标识符A1相关联的分组确定的传输时间为止。在一些实施方式中,当时间现在变为t0时,定时轮130可以将分组标识符ID:A1推送到分组构建器。在一些实施方式中,调度器141或分组构建器142可以用当前时间查询时间索引数据结构130,以确定是否存在要传输的任何分组。例如,分组构建器142可以用CPU时钟时间(或表示当前时间的某些其他值,诸如规则递增的整数)来轮询数据结构。分组构建器142可以确定已经达到在分组标识符ID:A1中识别的传输时间,并且因此使用指针集A1来生成用于传输的分组。
如图4B中所示,调度器141处理下一个通知。在这种情况下,调度器从应用150b接收通知REQ:B4。调度器检查存储器146中分配给实行应用150b的虚拟机或容器的空间中的可用容量。在图4A中示出的示例中,存储器146缺乏用于与通知REQ:B4相关联的指针集的容量。因此,调度器141丢弃通知而无需使分组标识符在定时轮130中排队或将相关联的指针集存储在存储器146中。
如图4C中所示,当前时间已经达到或超过了t0,该t0是分组A1被调度用于传输的时间。因此,定时轮130将分组标识符ID:A1推送到分组构建器142以进行分组生成和传输。分组构建器142使用分组标识符ID:A1从存储器146中检索指针集A1。分组构建器142使用指针集A1从主机存储器中检索分组报头数据和有效负荷数据以生成分组PKT:A1。分组构建器142然后可以将分组PKT:A1发送到收发器以进行传输。
在分组的传输之后,传输完成逻辑144可以确定网络接口卡是否成功传输了与存储在时间索引数据结构中的与到达时间相关联的位置处的标识符相关联的分组。如果传输完成逻辑144确定成功传输了与存储在时间索引数据结构中的与到达时间相关联的位置处的标识符相关联的分组,则传输完成逻辑144可以将传输完成通知传送给应用150,该应用150在将额外的数据分组转发到网络接口卡之前,已经等候从网络接口卡140接收传输完成通知。下面更详细地描述了传输完成逻辑144的示例性操作。
传输完成逻辑144可以确定网络接口卡140是否成功传输了与存储在时间索引数据结构130中的与到达时间相关联的位置处的标识符相关联的分组。例如,响应于网络接口卡140成功完成分组A1的传输,传输完成逻辑144可以通过传送消息来向应用150通知分组的成功传输。在多个成功传输完成的事件下,传输完成逻辑144可以传送单个消息或多个传输完成通知。基于来自网络接口卡140的传输完成的通知,应用150确定网络接口卡140已经成功传输了与存储在时间索引数据结构中的与到达时间相关联的位置处的标识符相关联的每个分组。
响应于传输完成逻辑144确定已经成功传输了与存储在时间索引数据结构中的与到达时间相关联的位置处的标识符相关联的分组,传输完成逻辑144可以将传输完成通知传送给应用150,该应用150在将额外的数据分组转发到网络接口卡之前,已经等候从网络接口卡接收传输完成通知。在一些实施方式中,应用150中的每个可以被配置成在将额外的分组转发到网络接口卡之前,等候从网络接口卡140接收传输完成通知。在一些实施方式中,应用150中的每个可以被配置成在将相同类别的额外分组转发到网络接口卡之前,等候从网络接口卡接收有关特定类别的分组的传输完成消息。
图5是图示根据说明性实施方式的可用于实现本文描述和图示的***的元素和方法的计算机***1000的通用架构的框图。
概括而言,计算***1010包括至少一个处理器1050,该至少一个处理器用于根据指令执行动作;以及一个或多个存储设备1070或1075,该一个或多个存储设备1070或1075用于存储指令和数据。所图示的示例计算***1010包括一个或多个处理器1050,该一个或多个处理器1050经由总线1015与具有连接至一个或多个网络设备1024的一个或多个网络接口卡1022的至少一个网络接口驱动器控制器1020、存储器1070以及任何其他设备1080通信;例如,I/O接口。网络接口卡1022可以具有一个或者多个网络接口驱动器端口以与所连接的设备或者组件进行通信。通常,处理器1050将执行从存储器接收的指令。所图示的处理器1050合并或直接连接到高速缓存存储器1075。
更详细地,处理器1050可以是处理例如从存储器1070或高速缓存1075中提取的指令的任何逻辑电路。在许多实施例中,处理器1050是微处理器单元或专用处理器。计算设备1000可以基于能够如本文所述进行操作的任何处理器或处理器的集合。处理器1050可以是单核或多核处理器。处理器1050可以是多个处理器。在一些实施方式中,处理器1050可以被配置为运行多线程操作。在一些实施方式中,处理器1050可以托管一个或多个虚拟机或容器以及用于管理虚拟机或容器的操作的超级监督者或容器管理器。在这样的实施方式中,可以在处理器1050上提供的虚拟化或容器化环境内实施在图3和图5中示出的方法。
存储器1070可以是适合于存储计算机可读数据的任何设备。存储器1070可以是具有固定存储的设备或用于读取可移动存储介质的设备。示例包括所有形式的非易失性存储器、介质和存储器设备,半导体存储器设备(例如,EPROM,EEPROM,SDRAM和闪存设备),磁盘、磁光盘和光盘(例如,CD ROM,DVD-ROM和蓝光盘)。计算***1000可以具有任何数量的存储器设备1070。在一些实施方式中,存储器1070支持可由计算***1010提供的虚拟机或容器执行环境访问的虚拟化或容器化的存储器。
高速缓存存储器1075通常是计算机存储器的形式,其紧邻处理器1050放置以进行快速读取。在一些实施方式中,高速缓存存储器1075是处理器1050的一部分或与处理器1050在同一芯片上。在一些实施方式中,存在多个级别的高速缓存1075,例如,L2和L3高速缓存层。
网络接口驱动器控制器1020管理经由网络接口驱动器1022(也称为网络接口驱动器端口)的数据交换。网络接口驱动器控制器1020处理用于网络通信的OSI模型的物理和数据链路层。在一些实施方式中,一些网络接口驱动器控制器的任务由处理器1050处理。在一些实施方式中,网络接口驱动器控制器1020是处理器1050的一部分。在一些实施方式中,计算***1010具有多个网络接口驱动器控制器1020。在网络接口卡1022中配置的网络接口驱动器端口是用于物理网络链路的连接点。在一些实施方式中,网络接口控制器1020支持无线网络连接,并且与网络接口卡1022相关联的接口端口是无线接收器/发射器。通常,计算设备1010通过与网络接口卡1022中配置的网络接口驱动器端口对接的物理或无线链路与其他网络设备1024交换数据。在一些实施方式中,网络接口控制器1020实现诸如以太网的网络协议。
其他网络设备1024经由网络接口卡1022中包括的网络接口驱动器端口连接到计算设备1010。其他网络设备1024可以是对等计算设备、网络设备或具有网络功能的任何其他计算设备。例如,第一网络设备1024可以是诸如网络集线器、网桥、交换机或路由器之类的网络设备,其将计算设备1010连接至诸如互联网的数据网络。
其他设备1080可以包括I/O接口、外部串行设备端口和任何附加协处理器。例如,计算***1010可以包括用于连接输入设备(例如,键盘、麦克风、鼠标或其他指示设备)、输出设备(例如,视频显示器、扬声器或打印机)或其他存储设备(例如,便携式闪存驱动器或外部介质驱动器)的接口(例如,通用串行总线(USB)接口)。在一些实施方式中,计算设备1000包括诸如协处理器的附加设备1080,例如,数学协处理器可以辅助处理器1050进行高精度或复杂的计算。
本说明书中描述的主题和操作的实现可以在数字电子电路中或在有形介质、固件或硬件(包括在本说明书中公开的结构及其等同结构)上体现的计算机软件中或其一种或多种的组合中实施。本说明书中描述的主题的实现可以实现为在有形介质上体现的一个或多个计算机程序,即,计算机程序指令的一个或多个模块,该计算机程序指令编码在一个或多个计算机存储介质上,以供数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器阵列或设备或其一个或多个的组合,或包括在其中。计算机存储介质还可以是一个或多个单独的组件或介质(例如,多个CD、磁盘或其他存储设备)或包括在其中。该计算机存储介质可以是有形的和非暂时性的。
本说明书中描述的操作可以被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。可以在数据处理装置的本机环境内或者在由数据处理装置托管的一个或多个虚拟机或容器内执行操作。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译或解释语言、声明性或过程语言)编写,并且可以部署为任何形式,包括部署独立程序或适合在计算环境中使用的模块、组件、子例程、对象或其他单元。计算机程序可以但不必对应于文件***中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)、专用于所讨论的程序的单个文件或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。可以部署计算机程序以在一个计算机或位于一个站点或分布于多个站点并通过通信网络互连的多个计算机或一个或多个虚拟机或容器上执行。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),互联网络(例如,互联网)和对等网络(例如ad hoc对等网络)。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
尽管本说明书包含许多具体的实现细节,但是这些细节不应被解释为对任何发明或可能要求保护的内容的范围的限制,而应被解释为对专用于特定发明的特定实施方式的特征的描述。本说明书在单独实施方式的上下文中描述的某些特征也可以在单个实施方式中组合实现。相反,在单个实施方式的上下文中描述的各种特征也可以在多个实施方式中单独实现或以任何合适的子组合来实现。而且,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在某些情况下可以从组合中删除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,在上述实施方式中的各种***组件的分离不应被理解为在所有实施方式中都需要这种分离,并且应当理解,所描述的程序组件和***通常可以一起集成在单个软件产品中或封装成多个软件产品。
对“或”的引用可以被解释为包括性的,使得使用“或”描述的任何术语可以指示单个、多于一个和所有描述术语中的任何一个。标签“第一”、“第二”、“第三”等不一定指示顺序,并且通常仅用于区分相似的项或元素。
对本公开中描述的实施方式的各种修改对于本领域的技术人员而言是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文中定义的一般原理可以应用于其他实施方式。因此,权利要求书旨在不限于本文所示出的实施方式,而是应被赋予与本文所公开的本公开、原理及新颖特征一致的最广范围。
Claims (20)
1.一种网络接口卡,包括:
网络接口卡存储器,所述网络接口卡存储器被配置成存储:
时间索引数据结构,所述时间索引数据结构存储与将由网络接口卡传输的相应通信相关联的标识符;
指针集,其中:
每个指针集对应于存储在所述时间索引数据结构中的所述标识符中的一个;并且
每个指针集中的每个指针指向所述网络接口卡存储器中的位置或所述网络接口设备所耦接到的主机计算设备的主机存储器中的位置;
调度逻辑,所述调度逻辑被配置成:
接收将由所述网络接口卡传输的新通信的通知,所述新通信源自在所述主机计算设备上实行的多个虚拟化计算环境中的源虚拟化计算环境,其中所述通知包括报头数据和指向要包括在所述通信中的数据的指针集;
基于分配给所述源虚拟化计算环境的所述网络接口卡存储器中的可用容量来确定是丢弃所述分组还是调度所述新通信的传输;以及
响应于确定要调度所述通信的传输,在被调度的传输时间处将与所述通信相关联的标识符存储在所述时间索引数据结构中,并将与所述通信相关联的所述指针集存储在所述网络接口卡存储器中;
分组生成逻辑,所述分组生成逻辑被配置成:
在标识符被存储在所述时间索引数据结构中的通信的被调度的传输时间到来后,使用存储在与所述通信相关联的所述网络接口卡存储器中的所述指针集来生成数据分组;
收发器,所述收发器被配置成传输所生成的数据分组;以及
传输完成逻辑,所述传输完成逻辑被配置成在完成为通信而生成的数据分组的传输后,生成要传送给在发起所述通信的所述源虚拟化计算环境中实行的应用的传输完成消息。
2.根据权利要求1所述的网络接口卡,其中,所述指针集被存储为散集列表。
3.根据权利要求1所述的网络接口卡,进一步包括网络接口卡存储器分配逻辑,所述网络接口卡存储器分配逻辑被配置成在所述多个虚拟化计算环境之中分配所述网络接口卡存储器的各部分。
4.根据权利要求1所述的网络接口卡,其中,所述调度逻辑进一步被配置成基于存储在所述网络接口卡存储器中的业务整形策略来计算所述被调度的传输时间以用于通信。
5.根据权利要求4所述的网络接口卡,其中,所述调度逻辑被配置成基于与所述通信相关联的所述报头信息来计算所述被调度的传输时间。
6.根据权利要求4所述的网络接口卡,其中,所述业务整形策略包括分组类别速率策略和/或聚合速率策略。
7.根据权利要求1所述的网络接口卡,其中,所述源虚拟化计算环境抑制请求额外的分组传输,直到接收到先前请求的分组传输完成的通知为止。
8.一种网络业务整形的方法,包括:
在主机计算设备的网络接口卡处接收将由所述网络接口卡传输的新通信的通知,所述新通信源自在所述主机计算设备上实行的多个虚拟化计算环境中的源虚拟化计算环境,其中所述通知包括报头数据和指向要包括在所述通信中的数据的指针集;
基于分配给所述源虚拟化计算环境的网络接口卡存储器空间中的可用容量来确定是丢弃所述分组还是调度所述新通信的传输;
响应于确定要调度所述通信的传输:
在被调度的传输时间处将与所述通信相关联的标识符存储在时间索引数据结构中;并且
将与所述通信相关联的指针集存储在所述网络接口卡存储器中,其中所述指针集对应于存储在所述时间索引数据结构中的所述标识符,并且所述指针集中的每个指针指向所述网络接口卡存储器中的位置或所述主机计算设备的主机存储器中的位置;
在所述标识符被存储在所述时间索引数据结构中的所述通信的被调度的传输时间到来后,使用存储在与所述通信相关联的所述网络接口卡存储器中的所述指针集来生成数据分组;
传输所生成的数据分组;以及
在完成为通信而生成的数据分组的传输后,生成要传送给在发起所述通信的所述源虚拟化计算环境中实行的应用的传输完成消息。
9.根据权利要求8所述的方法,包括将所述指针集存储为散集列表。
10.根据权利要求8所述的方法,包括在所述多个虚拟化计算环境之中分配所述网络接口卡存储器的各部分。
11.根据权利要求8所述的方法,包括基于存储在所述网络接口卡存储器中的业务整形策略来计算所述被调度的传输时间以用于通信。
12.根据权利要求11所述的方法,包括基于与所述通信相关联的所述报头信息来计算所述被调度的传输时间。
13.根据权利要求11所述的方法,其中,所述业务整形策略包括分组类别速率策略和/或聚合速率策略。
14.根据权利要求8所述的方法,其中,所述源虚拟化计算环境抑制请求额外的分组传输,直到接收到先前请求的分组传输完成的通知为止。
15.一种其上存储有指令的非暂时性计算机可读介质,所述非暂时性计算机可读介质被配置成使得主机计算设备的网络接口卡的一个或多个处理器实行一种网络业务整形的方法,所述方法包括:
接收将由所述网络接口卡传输的新通信的通知,所述新通信源自在所述主机计算设备上实行的多个虚拟化计算环境中的源虚拟化计算环境,其中所述通知包括报头数据和指向要包括在所述通信中的数据的指针集;
基于分配给所述源虚拟化计算环境的网络接口卡存储器空间中的可用容量来确定是丢弃所述分组还是调度所述新通信的传输;
响应于确定要调度所述通信的传输:
在被调度的传输时间处将与所述通信相关联的标识符存储在时间索引数据结构中;并且
将与所述通信相关联的指针集存储在所述网络接口卡存储器中,其中所述指针集对应于存储在所述时间索引数据结构中的所述标识符,并且所述指针集中的每个指针指向所述网络接口卡存储器中的位置或所述主机计算设备的主机存储器中的位置;
在所述标识符被存储在所述时间索引数据结构中的所述通信的被调度的传输时间到来后,使用存储在与所述通信相关联的所述网络接口卡存储器中的所述指针集来生成数据分组;
在完成为通信而生成的数据分组的传输后,生成要传送给在发起所述通信的所述源虚拟化计算环境中实行的应用的传输完成消息。
16.根据权利要求15所述的计算机可读介质,其中,所述方法包括将所述指针集存储为散集列表。
17.根据权利要求15所述的计算机可读介质,其中,所述方法包括在所述多个虚拟化计算环境之中分配所述网络接口卡存储器的各部分。
18.根据权利要求15所述的计算机可读介质,其中,所述方法包括基于存储在所述网络接口卡存储器中的业务整形策略来计算所述被调度的传输时间以用于通信。
19.根据权利要求18所述的计算机可读介质,其中,所述方法包括基于与所述通信相关联的所述报头信息来计算所述被调度的传输时间。
20.根据权利要求18所述的计算机可读介质,其中,所述业务整形策略包括分组类别速率策略和/或聚合速率策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410295494.4A CN118295937A (zh) | 2018-09-28 | 2019-09-24 | 用于网络接口卡的细粒度业务整形分流 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/146,373 US11258714B1 (en) | 2018-09-28 | 2018-09-28 | Fine grain traffic shaping offload for a network interface card |
US16/146,373 | 2018-09-28 | ||
PCT/US2019/052560 WO2020068725A1 (en) | 2018-09-28 | 2019-09-24 | Fine grain traffic shaping offload for a network interface card |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410295494.4A Division CN118295937A (zh) | 2018-09-28 | 2019-09-24 | 用于网络接口卡的细粒度业务整形分流 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112041826A true CN112041826A (zh) | 2020-12-04 |
CN112041826B CN112041826B (zh) | 2024-03-29 |
Family
ID=68165752
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410295494.4A Pending CN118295937A (zh) | 2018-09-28 | 2019-09-24 | 用于网络接口卡的细粒度业务整形分流 |
CN201980026359.7A Active CN112041826B (zh) | 2018-09-28 | 2019-09-24 | 用于网络接口卡的细粒度业务整形分流 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410295494.4A Pending CN118295937A (zh) | 2018-09-28 | 2019-09-24 | 用于网络接口卡的细粒度业务整形分流 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11258714B1 (zh) |
EP (2) | EP3776226B1 (zh) |
CN (2) | CN118295937A (zh) |
DK (2) | DK3776226T3 (zh) |
FI (1) | FI4006735T3 (zh) |
WO (1) | WO2020068725A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11909642B2 (en) * | 2020-09-03 | 2024-02-20 | Intel Corporation | Offload of acknowledgements to a network device |
US11997159B2 (en) * | 2020-12-22 | 2024-05-28 | Microsoft Technology Licensing, Llc | Proactive placement of virtualized computing resources and tuning of network resources based on seasonal variations |
US12015562B2 (en) | 2021-04-29 | 2024-06-18 | Oracle International Corporation | Port addressing via packet header modification |
US11496599B1 (en) | 2021-04-29 | 2022-11-08 | Oracle International Corporation | Efficient flow management utilizing control packets |
US12015557B2 (en) | 2021-07-29 | 2024-06-18 | Oracle International Corportion | Efficient flow management utilizing unified logging |
US20230102843A1 (en) * | 2021-09-27 | 2023-03-30 | Nvidia Corporation | User-configurable memory allocation |
US11533362B1 (en) | 2021-12-01 | 2022-12-20 | International Business Machines Corporation | Network interface controller aware placement of virtualized workloads |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6377583B1 (en) * | 1996-06-27 | 2002-04-23 | Xerox Corporation | Rate shaping in per-flow output queued routing mechanisms for unspecified bit rate service |
US6956818B1 (en) * | 2000-02-23 | 2005-10-18 | Sun Microsystems, Inc. | Method and apparatus for dynamic class-based packet scheduling |
US7292578B1 (en) * | 2001-06-19 | 2007-11-06 | Cisco Technology, Inc. | Flexible, high performance support for QoS on an arbitrary number of queues |
US9762502B1 (en) * | 2014-05-12 | 2017-09-12 | Google Inc. | Method and system for validating rate-limiter determination made by untrusted software |
CN108337186A (zh) * | 2017-01-20 | 2018-07-27 | 谷歌有限责任公司 | 用于可扩缩业务整形的设备和方法 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802278A (en) | 1995-05-10 | 1998-09-01 | 3Com Corporation | Bridge/router architecture for high performance scalable networking |
US6501731B1 (en) * | 1998-06-27 | 2002-12-31 | Intel Corporation | CBR/VBR traffic scheduler |
US7106693B1 (en) * | 2000-11-02 | 2006-09-12 | Cisco Technology, Inc. | Method and apparatus for pacing the flow of information sent from a device |
US7934020B1 (en) * | 2003-09-19 | 2011-04-26 | Vmware, Inc. | Managing network data transfers in a virtual computer system |
FI20045222A0 (fi) * | 2004-06-15 | 2004-06-15 | Nokia Corp | Verkkolaitteet ja liikenteenmuokkausmenetelmät |
GB0517304D0 (en) * | 2005-08-23 | 2005-10-05 | Netronome Systems Inc | A system and method for processing and forwarding transmitted information |
US8660137B2 (en) | 2005-09-29 | 2014-02-25 | Broadcom Israel Research, Ltd. | Method and system for quality of service and congestion management for converged network interface devices |
US7813277B2 (en) * | 2007-06-29 | 2010-10-12 | Packeteer, Inc. | Lockless bandwidth management for multiprocessor networking devices |
US7962587B2 (en) * | 2007-12-10 | 2011-06-14 | Oracle America, Inc. | Method and system for enforcing resource constraints for virtual machines across migration |
US8385202B2 (en) * | 2008-08-27 | 2013-02-26 | Cisco Technology, Inc. | Virtual switch quality of service for virtual machines |
US8667187B2 (en) * | 2008-09-15 | 2014-03-04 | Vmware, Inc. | System and method for reducing communication overhead between network interface controllers and virtual machines |
US8174984B2 (en) * | 2009-05-29 | 2012-05-08 | Oracle America, Inc. | Managing traffic on virtualized lanes between a network switch and a virtual machine |
US8499094B2 (en) * | 2010-03-04 | 2013-07-30 | Coraid, Inc. | Modification of small computer system interface commands to exchange data with a networked storage device using AT attachment over ethernet |
US9331963B2 (en) * | 2010-09-24 | 2016-05-03 | Oracle International Corporation | Wireless host I/O using virtualized I/O controllers |
US8856518B2 (en) * | 2011-09-07 | 2014-10-07 | Microsoft Corporation | Secure and efficient offloading of network policies to network interface cards |
JP5962493B2 (ja) * | 2012-12-20 | 2016-08-03 | 富士通株式会社 | プログラム、情報処理装置およびオブジェクト送信方法 |
US9544239B2 (en) * | 2013-03-14 | 2017-01-10 | Mellanox Technologies, Ltd. | Methods and systems for network congestion management |
US9019826B2 (en) * | 2013-05-07 | 2015-04-28 | Vmare, Inc. | Hierarchical allocation of network bandwidth for quality of service |
US9632901B2 (en) * | 2014-09-11 | 2017-04-25 | Mellanox Technologies, Ltd. | Page resolution status reporting |
US9774540B2 (en) * | 2014-10-29 | 2017-09-26 | Red Hat Israel, Ltd. | Packet drop based dynamic receive priority for network devices |
US10116772B2 (en) * | 2014-11-14 | 2018-10-30 | Cavium, Inc. | Network switching with co-resident data-plane and network interface controllers |
US10097478B2 (en) * | 2015-01-20 | 2018-10-09 | Microsoft Technology Licensing, Llc | Controlling fair bandwidth allocation efficiently |
US9838321B2 (en) * | 2016-03-10 | 2017-12-05 | Google Llc | Systems and method for single queue multi-stream traffic shaping with delayed completions to avoid head of line blocking |
US10687129B2 (en) * | 2016-04-25 | 2020-06-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Data center network |
US20190044832A1 (en) * | 2018-03-16 | 2019-02-07 | Intel Corporation | Technologies for optimized quality of service acceleration |
-
2018
- 2018-09-28 US US16/146,373 patent/US11258714B1/en active Active
-
2019
- 2019-09-24 DK DK19783811.3T patent/DK3776226T3/da active
- 2019-09-24 EP EP19783811.3A patent/EP3776226B1/en active Active
- 2019-09-24 DK DK22151467.2T patent/DK4006735T3/da active
- 2019-09-24 CN CN202410295494.4A patent/CN118295937A/zh active Pending
- 2019-09-24 EP EP22151467.2A patent/EP4006735B1/en active Active
- 2019-09-24 WO PCT/US2019/052560 patent/WO2020068725A1/en unknown
- 2019-09-24 FI FIEP22151467.2T patent/FI4006735T3/fi active
- 2019-09-24 CN CN201980026359.7A patent/CN112041826B/zh active Active
-
2021
- 2021-12-28 US US17/563,551 patent/US11831550B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6377583B1 (en) * | 1996-06-27 | 2002-04-23 | Xerox Corporation | Rate shaping in per-flow output queued routing mechanisms for unspecified bit rate service |
US6956818B1 (en) * | 2000-02-23 | 2005-10-18 | Sun Microsystems, Inc. | Method and apparatus for dynamic class-based packet scheduling |
US7292578B1 (en) * | 2001-06-19 | 2007-11-06 | Cisco Technology, Inc. | Flexible, high performance support for QoS on an arbitrary number of queues |
US9762502B1 (en) * | 2014-05-12 | 2017-09-12 | Google Inc. | Method and system for validating rate-limiter determination made by untrusted software |
CN108337186A (zh) * | 2017-01-20 | 2018-07-27 | 谷歌有限责任公司 | 用于可扩缩业务整形的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020068725A1 (en) | 2020-04-02 |
EP3776226B1 (en) | 2022-02-23 |
CN112041826B (zh) | 2024-03-29 |
US11831550B2 (en) | 2023-11-28 |
DK3776226T3 (da) | 2022-05-23 |
EP4006735A1 (en) | 2022-06-01 |
US11258714B1 (en) | 2022-02-22 |
CN118295937A (zh) | 2024-07-05 |
US20220124039A1 (en) | 2022-04-21 |
FI4006735T3 (fi) | 2024-01-30 |
EP3776226A1 (en) | 2021-02-17 |
DK4006735T3 (da) | 2024-01-29 |
EP4006735B1 (en) | 2023-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112041826B (zh) | 用于网络接口卡的细粒度业务整形分流 | |
CN108337186B (zh) | 用于可扩缩业务整形的设备和方法 | |
CN108337185B (zh) | 具有时间索引数据结构的可缩放流量整形的设备和方法 | |
EP2865147B1 (en) | Guarantee of predictable and quantifiable network performance | |
Son et al. | Priority-aware VM allocation and network bandwidth provisioning in software-defined networking (SDN)-enabled clouds | |
US7243351B2 (en) | System and method for task scheduling based upon the classification value and probability | |
US9479457B2 (en) | High-performance, scalable and drop-free data center switch fabric | |
US9703743B2 (en) | PCIe-based host network accelerators (HNAS) for data center overlay network | |
US8149846B2 (en) | Data processing system and method | |
US9485191B2 (en) | Flow-control within a high-performance, scalable and drop-free data center switch fabric | |
CN107181698B (zh) | 单队列多流业务整形的***和方法 | |
Shahzad et al. | Reduce VM migration in bandwidth oversubscribed cloud data centres | |
Iqbal et al. | Instant queue occupancy used for automatic traffic scheduling in data center networks | |
US10097474B1 (en) | Shared rate limiting | |
Susanto et al. | Creek: Inter many-to-many coflows scheduling for datacenter networks | |
Munir et al. | PASE: synthesizing existing transport strategies for near-optimal data center transport | |
Sun et al. | PACCP: a price-aware congestion control protocol for datacenters | |
Meyer et al. | Low latency packet processing in software routers | |
Wu et al. | Adaptive data transmission in the cloud | |
Shen et al. | Rendering differential performance preference through intelligent network edge in cloud data centers | |
Banerjee et al. | Experience-based efficient scheduling algorithm (EXES) for serving requests in cloud using SDN controller | |
Wang et al. | An Incast-Coflow-Aware Minimum-Rate-Guaranteed Congestion Control Protocol for Datacenter Applications | |
Amaro Jr | Improving Bandwidth Allocation in Cloud Computing Environments via" Bandwidth as a Service" Partitioning Scheme | |
CN117795926A (zh) | 复用会话中的数据封包优先级排序 | |
Pothuraju | Measuring and Modeling of Open vSwitch Performance: Implementation in KVM environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40038518 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |