CN104954247B - 用于数据中心覆盖网络的主机网络加速器 - Google Patents
用于数据中心覆盖网络的主机网络加速器 Download PDFInfo
- Publication number
- CN104954247B CN104954247B CN201410751364.3A CN201410751364A CN104954247B CN 104954247 B CN104954247 B CN 104954247B CN 201410751364 A CN201410751364 A CN 201410751364A CN 104954247 B CN104954247 B CN 104954247B
- Authority
- CN
- China
- Prior art keywords
- hna
- network
- outflow
- packet
- mainframe
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- 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/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- 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/12—Avoiding congestion; Recovering from congestion
-
- 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
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)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的实施方式涉及一种用于数据中心覆盖网络的主机网络加速器。描述一种高性能、可扩展和无掉话的数据中心交换结构和基础设施。数据中心交换结构可以利用低成本、现成的基于分组的交换部件(例如以太网IP(IPoE))和覆盖转发技术而不是专有交换结构。在一个示例中,主机网络加速器(HNA)被定位于数据中心的服务器(例如虚拟机或者专用服务器)与提供在服务器之间的点到点连通的IPoE核心网络之间。HNA是在一个或者多个集成电路上嵌入虚拟路由器的硬件设备,其中虚拟路由器被配置为向虚拟机延伸一个或者多个虚拟网络和使用覆盖网络通过交换结构无缝地传送分组。换而言之,HNA提供与用于通过数据中心的核心交换网络传达分组流的覆盖技术的基于硬件的无缝接入接口。
Description
有关申请的交叉引用
本申请要求对2014年3月31日提交的第61/973,045号美国临时申请的权益,其全部内容通过引用结合于此。
技术领域
本发明涉及计算机网络,并且更具体地涉及提供虚拟网络的数据中心。
背景技术
在典型的基于云的数据中心中,互连的服务器的大型汇集提供用于执行各种应用的计算和/或存储容量。例如数据中心可以包括设施,该设施主控用于订户、例如数据中心的消费者的应用和服务。数据中心可以例如主控所有基础设施装备、比如联网和存储系统、冗余功率供应和环境控制。在多数数据中心中,经由由一层或者多层物理网络交换机和路由器提供的高速交换结构来互连存储系统和应用服务器的群集。更复杂的数据中心提供遍布全球而扩展的基础设施而订户支持装备位于各种物理主控设施中。
数据中心往往利用具有专有通信技术的专有交换结构或者现成的(off-the-shelf)交换部件,这些专有通信技术或者现成的交换部件交换符合常规的基于分组的通信协议的分组。专有交换结构可以提供高的性能、但是有时可能成本更高,而在一些情况下可以提供用于网络的单点故障。现成的的基于分组的交换部件可以成本更低、但是可能造成有损、非确定性的行为。
发明内容
一般而言,本公开内容描述一种高性能、可扩展和无掉话的数据中心交换结构和基础设施。数据中心交换结构可以利用低成本、现成的的基于分组的交换部件(例如以太网IP(IPoE))和覆盖转发技术而不是专有交换结构。
在一个示例中,主机网络加速器(HNA)被定位于数据中心的服务器(例如虚拟机或者专用服务器)与提供在服务器之间的点到点连通的IPoE核心网络之间。HNA是在一个或者多个集成电路上嵌入虚拟路由器的硬件设备,其中虚拟路由器被配置为向虚拟机延伸一个或者多个虚拟网络和使用覆盖网络通过交换结构无缝地传送分组。换而言之,HNA提供与用于通过数据中心的核心交换网络传达分组流的覆盖技术的基于硬件的无缝接入接口。
另外,HNA在集成电路中结合和实施流控制、调度和服务质量(QoS)特征以便基于非专有、基于分组的交换协议(例如以太网IP)和覆盖转发技术——也就是说,无需专有交换结构——提供高性能、可扩展和无掉话的数据中心交换结构。
这样,这里描述的技术可以提供向在数据中心的下层物理网络的边缘操作的HNA的虚拟路由器延伸的多点到多点、无掉话和可扩展的物理网络。作为结果,主控用于各种租户的用户应用的服务器或者在利用低成本、行业标准转发技术之时虚拟机体验高速和可靠的第3层转发而无需专有交换结构。
在附图和以下描述中阐述本发明的一个或者多个实施例的细节。本发明的其它特征、目的和优点将从描述和附图中以及从权利要求中变得清楚。
附图说明
图1是图示具有数据中心的示例网络的框图,在该数据中心中可以实施这里描述的技术的示例。
图2A是图示示例实现的框图,在该实现中在数据中心的服务器内部署主机网络加速器。
图2B是图示示例实现的框图,在该实现中在数据中心的架顶交换机(TOR)中部署主机网络加速器。
图3A是进一步具体图示服务器的示例实现的框图,该服务器具有一个或者多个基于外围部件互连快速(PCIe)的主机网络加速器。
图3B是进一步具体图示TOR的示例实现的框图,该TOR具有一个或者多个基于PCIe的主机网络加速器。
图4是图示具有基于PCIe的主机网络加速器的计算设备的更多细节的框图。
图5是具体图示计算设备可以根据在本公开内容中描述的技术处理的示例隧道分组的框图。
图6是具体图示示例分组结构的框图,该分组结构可以被主机网络加速器用于维护按对“心跳”消息,这些按对“心跳”消息用于在当前未对于给定的源/目的地HNA对通过覆盖网络交换隧道分组的情况下交换更新的流控制信息。
图7是图示根据这里描述的技术的主机网络加速器(HNA)的概念图的框图,这些HNA在网状拓扑中被交换结构互连用于在HNA之间的可扩展、无掉话、端到端通信。
图8是图示根据这里描述的技术的系统的框图,在该系统中,主机网络加速器(HNA)在网状拓扑中被交换结构互连用于在HNA之间的可扩展、无掉话、端到端通信。
图9是图示根据在本公开内容中描述的技术的用于主机网络加速器的数据结构的框图。
图10A-10B是图示根据在本公开内容中描述的技术的在HNA之间交换的示例流控制消息的框图。
图11是根据在本公开内容中描述的技术的主机网络加速器的用于执行流控制的示例操作模式的流程图。
图12A-12B是图示根据这里描述的技术的示例系统的框图,在该系统中,主机网络加速器应用流控制。
图13是图示根据在本公开内容中描述的技术的用于主机网络加速器执行流控制的示例操作模式的流程图。
相似标号贯穿各图和文本表示相似要素。
具体实施方式
图1是图示具有数据中心10的示例网络8的框图,在该数据中心中可以实施这里描述的技术的示例。一般而言,数据中心10为用于被服务提供方网络7耦合到数据中心的客户11的应用和服务而提供操作环境。数据中心10可以例如托管基础设施装备、比如联网和存储系统、冗余功率供应和环境控制。服务提供方网络7可以耦合到被其它提供方监管的一个或者多个网络,并且因此可以形成大规模公用网络基础设施、例如因特网的一部分。
在一些示例中,数据中心10可以代表许多在地理上分布的网络数据中心之一。如图1的示例中所示,数据中心10可以是为客户11提供网络服务的设施。客户11可以是集体实体、比如企业和政府或者个人。例如网络数据中心可以主控用于若干企业和终端用户的web服务。其它示例服务可以包括数据存储装置、虚拟私有网络、流量工程、文件服务、数据挖掘、科学或者超级计算等。在一些实施例中,数据中心10可以是个体网络服务器、网络对等体或者其它数据中心。
在这一示例中,数据中心10包括经由由一层或者多层物理网络交换机和路由器提供的高速交换结构14互连的存储系统和应用服务器12A-12X(这里为“服务器12”)的集合。服务器12为与客户11关联的应用和数据提供执行和存储环境并且可以是物理服务器、虚拟机或者其组合。
一般而言,交换结构14代表提供在服务器12之间的点到点连通的第二层(L2)和第三层(L3)交换和路由部件。在一个示例中,交换结构14包括实施工业标准协议的互连、高性能而又现成的的基于分组的路由器和交换机的集合。在一个示例中,交换结构14可以包括提供以太网网际协议(IP)点到点连通的现成的部件。
在图1中,软件定义的联网(SDN)控制器22提供用于配置和管理数据中心10的路由和交换基础设施的高级控制器。SDN控制器22提供用于根据本公开内容的一个或者多个实施例有助于在数据中心10内的一个或者多个虚拟网络的操作的在逻辑上和在一些情况下在物理上集中的控制器。在一些示例中,SDN控制器22可以响应于从网络监管员24接收的配置输入来操作。在2013年6月5日提交、并且标题为PHYSICAL PATH DETERMINATION FORVIRTUAL NETWORK PACKET FLOWS的第PCT/US2013/044378号国际专利申请中找到关于与数据中心10的其它设备或者其它软件定义的网络结合操作的虚拟网络控制器22的附加信息,该第PCT/US2013/044378号国际专利申请通过引用并入于此,如同在此完整阐述。
虽然未示出,但是数据中心10也可以例如包括一个或者多个非边缘交换机、路由器、集线器、网关、安全设备、比如防火墙、入侵检测和/或入侵防止设备、服务器、计算机终端、膝上型计算机、打印机、数据库、无线移动设备、比如蜂窝电话或者个人数字助理、无线接入点、网桥、线缆调制解调器、应用加速器或者其它网络设备。
一般而言,在交换结构14内的网络流量、比如在服务器12之间的分组流可以使用许多不同物理路径来横贯交换结构的物理网络。例如“分组流”可以由在分组的报头中使用的五个值或者“五元组”——即源IP地址、目的地IP地址、用来通过物理网络路由分组的源端口和目的地端口以及通信协议——定义。例如协议指定通信协议、比如TCP或者UDP,而源端口和目的地端口是指连接的源和目的地端口。与特定流条目匹配的一个或者多个分组数据单元(PDU)的集合代表流。流可以使用PDU的任何参数、比如源和目的地数据链路(例如MAC)以及网络(例如IP)地址、虚拟局域网(VLAN)标签、传送层信息、多协议标签交换(MPLS)或者广义MPLS(GMPLS)标签和接收流的网络设备的入口端口来广义地分类。例如流可以是在传输控制协议(TCP)连接中传输的所有PDU、特定MAC地址或者IP地址发起的所有PDU、具有相同VLAN标签的所有PDU或者在相同交换机端口接收的所有PDU。
根据在本公开内容中描述的技术的各种方面,数据中心10包括定位于服务器12与交换结构14之间的主机网络加速器(HNA)。如图1中所示,每个HNA可以被定位于一个或者多个服务器12与交换结构14之间,该交换结构提供用于在服务器12之间传送分组流的基础设施。如本文进一步所描述的,HNA17提供用于无缝地实现跨交换结构14的覆盖网络的、基于硬件的加速。也就是说,HNA17实施用于实施覆盖网络的功能,该覆盖网络用于建立和支持在数据中心10内的虚拟网络。
如进一步描述的那样,每个HNA 17实施虚拟路由器,该虚拟路由器执行用于在数据中心10内的对应虚拟网络的多个路由实例。服务器12发起的并且符合虚拟网络的分组被HNA 17接收并且自动地封装以形成用于横贯交换结构14的隧道分组。每个隧道分组可以各自包括外部报头和包含内部分组的净荷。隧道分组的外部报头允许交换结构14的物理网络部件向用于HNA 17的网络接口19的物理网络地址“用隧道传输”内部分组。外部报头可以不仅包括隧道分组去往的服务器12的网络接口19的物理网络地址而且包括虚拟网络标识符、比如VxLAN标签或者多协议标签交换(MPLS)标签,该虚拟网络标识符标识虚拟网络之一以及虚拟路由器执行的对应路由实例。内部分组包括具有目的地网络地址的内报头,该目的地网络地址符合用于被虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间。这样,HNA17提供用于覆盖技术的、基于硬件的无缝接入接口,用于以对服务器12透明的方式通过数据中心10的核心交换网络14用隧道传输分组流。
如这里描述的那样,HNA 17集成多个机制、比如流控制、调度和服务质量(QoS)与用于跨越交换结构14无缝地提供覆盖联网的虚拟路由操作。以这一方式,HNA 17能够提供高性能、可扩展和无掉话(drop-free)的数据互连,该数据互连利用低成本、行业标准转发技术而无需专有交换结构。
图2A是图示示例实现的框图,在该实现中在数据中心10的服务器12内部署主机网络加速器(HNA)17。在这一简化示例中,交换结构14由互连的架顶式(TOR)交换机16A-16N(统称为“TOR交换机16”)的集合提供,这些TOR交换机耦合到架式交换机18A-18M(统称为“架式交换机18”)的分布层。TOR交换机16和架式交换机18向服务器12提供冗余(多归属)连通。TOR交换机16可以是提供第2层(MAC)和/或第3层(例如IP)路由和/或交换功能的网络设备。架式交换机18聚合流量流和提供在TOR交换机16之间的高速连通。架式交换机18耦合到IP第三层(L3)网络20,该网络执行用于通过服务提供方网络7路由在数据中心10与客户11之间的网络流量的L3路由。
在这一示例实现方式中,HNA 17被部署为在服务器12的底盘内的专门化的卡。在一个示例中,HNA 17包括用于通过例如以太网或者其它物理网络链路25A-25N与TOR交换机16通信的面向核心的网络接口19。此外,HNA 17包括高速外围接口23A-23N以便可直接在服务器12的输入/端口(I/O)总线21上操作。HNA 17可以例如向服务器12表现为网络接口卡(NIC)并且因此以可以对服务器12透明的方式提供如这里描述的分组流的鲁棒隧道传输。在一个示例中,高速外围接口23包括用于作为扩展卡在服务器12的相应底盘内插入和直接耦合到服务器12的PCIe总线21的外围部件互连快速(PCIe)接口。
图2B是图示示例实现的框图,在该实现中在数据中心10的架顶交换机(TOR)内部署主机网络加速器(HNA)17。如在图2A的示例中那样,交换结构14由互连的TOR交换机16的集合提供,这些TOR交换机耦合到架式交换机18的分布层。然而在这一示例中,HNA 17被集成于TOR交换机16内并且以对服务器12透明的方式相似地提供在服务器12之间的分组流的鲁棒隧道传输。
在这一示例中,HNA 17中的每个HNA提供用于跨越数据中心10的交换结构14传达分组的面向核心的网络接口19。此外,HNA 21可以提供用于与服务器12通信的高速PCIe接口23作为对PCIe总线21的扩展。备选地,HNA 17可以经由以太网或者其它网络链路与服务器12的网络接口卡(NIC)通信。虽然示出为分离地,但是可以在各种组合中使用图2A和图2B的示例,从而HNA 17可以被集成于服务器12、TOR 16、在数据中心10内的其它设备或者其组合内。
图3A是进一步具体图示服务器50的示例实现的框图,该服务器具有一个或者多个基于PCIe的主机网络加速器60A、60B。在这一示例中,服务器50包括相应PCIe总线56A、56B互连的计算刀片52A、52B(统称为“计算刀片52”)的两个集合。
计算刀片52可以各自提供用于执行应用和服务的计算环境。例如计算刀片52中的每一个可以包括计算平台,该计算平台具有为操作系统和在一些情况下为管理程序提供操作环境的一个或者多个处理器、存储器、盘存储装置和其它部件,该管理程序为一个或者多个虚拟机提供虚拟环境。
在这一示例中,计算刀片52中的每个计算刀片包括用于耦合到PCIe总线56之一的PCIe接口。另外,计算刀片52中的每个计算刀片可以是可在服务器50的底架的槽内插入的可去除卡。
HNA 60中的每个HNA相似地包括用于耦合到PCIe总线56之一的PCIe接口。这样,在HNA 60内的存储器和资源经由基于PCIe分组的协议可经由来自计算刀片52的读取和写入请求来寻址。以这一方式,在计算刀片52上执行的应用——包括在计算刀片52提供的虚拟机上执行的应用——可以通过由PCIe总线56提供的直接I/O互连以高速率向相应HNA 60A、60B传输和接收数据
HNA 60包括用于传达基于L2/L3分组的网络的面向核心的网络接口。比如数据中心10的交换结构14。这样,计算刀片52可以与HNA 60交互,就如同HNA是基于PCIe的网络接口卡那样。另外,HNA 60实现用于为建立和支持在数据中心10内的虚拟网络而提供覆盖网络的功能和提供用于保证通过L2/L3网络的鲁棒、无掉话通信的附加功能。
图3B是进一步具体图示TOR交换机70的示例实现的框图,该TOR交换机具有一个或者多个基于PCIe的主机网络加速器74A-74N(统称为“HNA 74”)。在这一示例中,TOR交换机70包括在TOR交换机内集成的多个HNA 74。HNA 74由高速转发ASIC 72互连,这些高速ASIC用于经由面向核心的以太网端口80交换在HNA的网络接口与L2/L3网络14之间的分组。
如图所示,服务器76A-76N中的每个服务器通过PCIe接口耦合到TOR交换机70。这样,在HNA 74内的存储器和资源经由基于PCIe分组的协议可经由来自服务器76的读取和写入请求来寻址。以这一方式、在计算刀片52上执行的应用——包括在计算刀片52提供的虚拟机上执行的应用—可以通过由PCIe总线提供的直接I/O互连—在高速率向相应HNA 74传输和接收数据。服务器76中的每个服务器可以是单独计算设备或者可以是在服务器机架内的单独架装服务器。
图4是图示计算设备100的示例细节的框图,该计算设备具有基于PCIe的主机网络加速器(HNA)111。计算设备100可以例如代表集成基于PCIe的HNA 111的服务器(例如图2A的服务器12或者图3A的服务器50)或者TOR交换机(例如图2B的TOR交换机16或者图3B的TOR交换机70)之一。
在这一示例中,计算设备100包括耦合计算设备100硬件环境的硬件部件的系统总线142。系统总线142将具有多个处理核108A-108J(统称为“处理核108”)的多核计算环境102耦合到存储器144和输入/输出(I/O)控制器143。I/O控制器143经由PCIe总线146提供对存储盘107和HNA 111的访问。
多核计算环境102可以包括例如从四个到数千个的任何数目的处理器和任何数目的硬件核。处理核108中的每个处理核各自包括用于执行指令的独立执行单元,这些指令符合用于该核的指令集架构。处理核108可以各自被实施为分离集成电路(IC)或者可以被组合在各自使用单个IC(即芯片多处理器)而实施的一个或者多个多核处理器(或者“多核处理器”)内。
盘107代表计算机可读存储介质,该计算机可读存储介质包括用任何用于存储信息、比如处理器可读指令、数据结构、程序模块或者其它数据的方法或者技术实施的易失性和/或非易失性、可去除和/或非可去除介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字万用盘(DVD)或者其它光存储装置、磁盒、磁带、磁盘存储装置或者其它磁存储设备或者可以用来存储希望的信息并且可以被核108访问的任何其它介质。
主存储器144包括一个或者多个计算机可读存储介质,该一个或者多个计算机可读存储介质可以包括随机存取存储器(RAM)、比如各种形式的动态RAM(DRAM)、例如DDR2/DDR3SDRAM或者静态RAM(SRAM)、闪存或者任何其它形式的固定或者可去除存储介质,该存储介质可以用来以指令或者数据结构的形式承载或者存储希望的程序代码和程序数据以及可以被计算机访问。主存储器144提供由可寻址存储器位置组成的物理地址空间。
存储器144可以在一些示例中向多核计算环境102呈现非统一存储器访问(NUMA)。也就是说,核108可以无对构成存储器144的各种存储介质的相等存储器存取时间。核108可以在一些实例中被配置为使用存储器144的部分,这些部分为核赋予最低存储器延时以减少总存储器延时。
在一些实例中,可以在一个或者多个核108之间共享用于计算机可读存储介质的物理电子空间(即共享存储器)。例如核108A、108B可以经由存储器总线(未示出)连接到一个或者多个DRAM封装、模块和/或芯片(也未示出),该一个或者多个DRAM封装、模块和/或芯片呈现可由核108A、108B访问的物理地址空间。尽管这一物理地址空间可以向核108A、108B赋予存储器144的部分中的任何部分的最少存储器访问时间,但是存储器144的其余部分中的至少一些部分可以直接可由核108A、108B访问。核108中的一个或者多个核也可以包括L1/L2/L3高速缓存或者其组合。用于核108的相应高速缓存为核108赋予存储介质中的任何存储介质的最低延时存储器访问。
存储器144、网络接口卡(NIC)106A-106B(统称为“NIC 106”)、存储盘107和多核计算环境102为一个或者多个虚拟机110A-110K(统称为“虚拟机110”)提供操作环境。虚拟机110可以代表图2的虚拟机36中的任何虚拟机的示例实例。计算设备100可以将由主存储器144和在虚拟存储器情况下由盘107提供的虚拟和/或物理地址空间划分成为运行用户进程而分配的用户空间以及受保护和一般不可由用户进程访问的内核空间。操作系统内核(在图4中未示出)可以在内核空间中执行并且可以例如包括Linux、Berkeley SoftwareDistribution(BSD)(另一Unix变形的内核)或者可从Microsoft公司获得的Windows服务器操作系统内核。计算设备100可以在一些实例中执行用于管理虚拟机110的管理程序(在图3中也未示出)。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、可从VMware获得的Xen ESXi、可从Microsoft获得的Windows Hyper-V以及其它开源和专有管理程序。
如图4中所示,HNA 111包括PCIe接口145,该PCIe接口连接到作为任何其它基于PCIe的设备的计算设备100的PCIe总线146。PCIe接口145可以提供用于支持与核108和在其上执行的虚拟机110中的任何项的、基于PCIe的通信的物理层、数据链路层和事务层。这样,PCIe接口145响应于来自虚拟机110的读取/写入请求用于根据PCIe协议发送和/或接收分组数据139。作为一个示例,PCIe接口符合PCI快速基础3.0规范(PCI特殊兴趣组(PCI-SIG)2012年12月),通过引用将该规范的全部内容结合于此。
虚拟路由器128包括用于对应虚拟网络的多个路由实例122A-122C(统称为“路由实例122”)。一般而言,在HNA 111上执行的虚拟路由器可由虚拟网络控制器22配置并且提供用于经由覆盖网络通过物理L2/L3交换结构10用隧道传输分组的功能。以这一方式,HNA111提供可以插入到计算设备100中作为自完备、可去除主机网络加速器的基于PCIe的部件,该主机网络加速器无缝地支持使用覆盖联网技术通过数据中心10转发与多个虚拟网络关联的分组而无需计算设备100的任何其它修改或者在其上安装软件。虚拟机110供应的和符合虚拟网络的传出分组经由PCIe接口144由虚拟路由器128接收并且被自动地封装以形成用于横贯交换结构14的传出(outbound)隧道分组。每个隧道分组可以各自包括外部报头和包含原有分组的净荷。关于图1,隧道分组的外部报头允许交换结构14的物理网络部件向其它HNA 17的物理网络地址“用隧道传输”内部分组。这样,HNA 111的虚拟路由器128为用于以对服务器12透明的方式通过数据中心10的核心交换网络14用隧道传输分组流的覆盖技术提供基于硬件的无缝接入接口
路由实例122中的每个路由实例包括转发信息库(FIB)124A-124C(统称为“FIB124”)和流表126A-126C(统称为“流表126”)中的对应一个。虽然图示为分离数据结构,但是流表126可以在一些实例中是实施为单个表或者其它关联数据结构的逻辑表,在该表或者其它关联数据结构中,用于相应流表126的条目可由虚拟网络标识符(例如VRF标识符、比如VxLAN标记或者MPLS标签)标识。FIB 124包括将目的地地址映射到目的地下一跳的查找表。目的地地址可以包括第3层网络前缀或者第2层MAC地址。流表126支持向流转发策略的应用。流表126中的每个流表包括流表条目,这些流表条目各自匹配可以横贯虚拟路由器转发平面128的一个或者多个流,并且包括用于向匹配流应用的转发策略。例如虚拟路由器128尝试匹配路由实例122A处理的分组与流表126A的流表条目之一。如果匹配流表条目对于给定的分组存在,则虚拟路由器128向分组应用在策略中指定的流动作。这可以称为“快路径”分组处理。如果匹配流表条目对于分组不存在,则分组可以代表用于新分组流的初始分组,并且虚拟路由器转发平面128可以请求虚拟路由器代理104在流表中为新分组流安装流表条目。这可以称为用于分组流的初始分组的“慢路径”分组处理。
在这一示例中,虚拟路由器代理104可以是HNA 111的处理器执行的过程或者可以被嵌入于HNA 111的固件或者分立硬件内。虚拟路由器代理104包括配置数据134、虚拟路由和转发实例配置136(“VRF 136”)和策略表138(“策略138”)。
在一些情况下,虚拟路由器代理104与集中式控制器(例如如图1中所示用于数据中心10的控制器22)通信以交换用于虚拟网络被HNA 111支持的控制信息。控制信息可以包括虚拟网络路由、低级配置状态、比如用于路由实例以及用于向配置数据134、VRF 136和策略138安装的转发策略。虚拟路由器代理104也可以报告分析状态、向虚拟路由器128的FIB124安装转发状态、发现VM 110及其属性。如以上指出的那样,虚拟路由器代理104还对于横贯虚拟路由器转发平面128的每个新流的第一(初始)分组应用慢路径分组处理和为新流向流表126安装对应流条目用于虚拟路由器转发平面128对于流的后续分组的快路径处理。
如图4中所示,HNA 111包括定位于虚拟路由器128与网络接口106之间用于使用下层物理网络、比如L2/L3交换结构14(图1)的链路来交换分组的嵌入式通信控制器147。如这里描述的那样,通信控制器147提供如下机制,这些机制允许由虚拟路由器104提供的覆盖转发功能与现成的、基于分组的L2/L3联网部件一起利用而又基于以太网IP和覆盖转发技术提供高性能、可扩展和免掉话的数据中心交换结构而无需专有交换结构。
在这一示例中,在HNA内嵌入的通信控制器147包括调度器148和流控制单元149。如这里描述的那样,调度器148管理用于与经由网络接口106可达的每个HNA的按对、点到点通信的一个或者多个传出队列151。例如关于图1,调度器148管理用于与在数据中心10内和经由L2/L3交换结构14可达的其它HNA 17的点到点通信的一个或者多个传出队列151。在一个示例中,调度器148维护八(8)个传出队列151,这些传出队列用于为在数据中心10发现的或者标识的为每个HNA 12支持八(8)个并行通信流。用于与在数据中心10内的相应HNA通信的传出队列151中的每个传出队列可以与不同优先级级别关联。调度器148按照用于来自虚拟路由器128的任何传出通信的优先级、网络接口106的可用带宽、如流控制单元149报告的在目的地HNA的可用带宽和资源的指示来调度向每个HNA的通信。
一般而言,流控制单元149与在网络内的其它HNA、比如在数据中心10内的其它HNA17的流控制单元通信以使用由虚拟路由器128建立的覆盖网络来为隧道通信提供拥塞控制。如这里描述的那样,每个源/目的地对HNA的流控制单元149利用流控制信息以通过L2/L3交换结构14提供鲁棒、无掉话的通信。
例如,如以下进一步描述的那样,每个源/目的地对HNA周期性地交换关于当前有待源传输的分组数据数量和在目的地当前可用的带宽资源数量的信息。换而言之,每个HNA111的流控制单元149向每个其它HNA 111的每个其它流控制单元149传达当前在传出队列151内有待向该HNA发送的分组数据量、即用于被路由实例122中的一个或者多个路由实例构造的和去往该HNA的传出隧道分组的分组数据量。相似地,每个HNA的每个流控制单元149向每个其它HNA 111的每个其它流控制单元149传达在存储器153内用于从该HNA接收分组数据的可用存储器资源量。以这一方式,为每个源/目的地对HNA 111、比如为数据中心10的HNA 17的每个源/目的地按对组合周期性地交换和维护按对流控制信息。另外,用于每个HNA源/目的地对的流控制信息可以指定待发送的数据量和在每输出队列粒度上可用的带宽量。换而言之,在其中用于每个HNA 111的调度器148维护用于支持向在数据中心10内的每个其它HNA的八(8)个并行通信流的八(8)个输出队列151的示例中,流控制单元149可以维护用于与其它HNA的每个资源/目的地按对组合的输出队列中的每个输出队列的流控制信息。
调度器148基于与传出队列关联的优先级、网络接口106的可用带宽以及如流控制单元149报告的在目的地HNA的可用带宽和资源有选择地从传出队列151传输传出隧道分组。
在一个示例中,流控制单元149修改虚拟路由器128输出的传出隧道分组以嵌入流控制信息。例如流控制单元149可以修改每个传出隧道分组的外部报头以插入隧道分组去往的目的地HNA特有的流控制信息。在隧道分组内插入的流控制信息可以向目的地HNA通知在一个或者多个传出队列151中有待去往目的地HNA的数据量(即一个或者多个队列长度)和/或在存储器153中可用于从传出隧道分组去往的HNA接收数据的空间量。在一些示例实施例中,在隧道分组内插入的流控制信息指定隧道分组去往的HNA被允许向HNA 111发送数据的一个或者多个最大传输速率(例如每优先级的最大传输速率)。
以这一方式,流控制信息在按对HNA组合之间的交换无需利用分离消息,这些消息原本消耗在数据中心10的交换结构14内的附加带宽。在一些实现中,HNA 111的流控制单元149可以在其中针对阈值时间段尚无输出隧道分组、或者不充分的数据量(例如<4KB)被发送到在数据中心内的HNA(例如数据中心10的HNA 12)的情形中根据需要向那些HNA输出用于携带流控制信息的“心跳”消息。以这一方式,心跳消息可以根据需要用来保证流控制信息当前在关于每个源/目的地按对HNA组合的所有HNA可用。在一个示例中,心跳消息被构造和调度为以使得心跳消息即使在其中没有隧道分组当前正在被使用的情形中仍然消耗不超过交换结构14提供的总点到点带宽的1%这样的频率而被发送。
在一些实施例中,流控制单元149可以修改每个传出隧道分组的外部报头以插入隧道分组去往的目的地HNA和从其发送隧道分组的传出队列151的优先级级别特有的序列号。在接收到传入隧道分组时,流控制单元149可以记录分组并且对于用于如基于发送HNA在隧道报头内嵌入的序列号而确定的给定的优先级的、即与传出队列151之一关联的任何遗漏隧道分组和在被设置为等待遗漏隧道分组的定时器到期时请求重传。另外,流控制单元149可以维护用于每个优先级的分离序列号空间。以这一方式,HNA 17的流控制单元149例如可以建立和维护相互之间的鲁棒分组流,即使虚拟路由器128可以在交换结构14的现成的L2/L3路由和交换部件之上利用覆盖转发技术。
图5是具体图示主机网络加速器可以根据在本公开内容中描述的技术处理的示例隧道分组的框图。为了简化和易于图示,隧道分组155并未图示典型隧道分组的每一个字段、而是被提供为突出这里描述的技术。此外,各种实现可以在各种排序中包括隧道分组字段。
在这一示例中,“外”或者“隧道”分组155包括外部报头156和内或者“封装”的分组157。外部报头156可以包括协议或者服务类型(TOS)字段162和以源IP地址字段164和目的地IP地址字段166的形式的公用(即可由用于与内部分组157关联的虚拟网络的下层物理网络交换)IP地址信息。TOS字段可以定义用于由如这里描述的交换结构14的设备和HNA处置分组的优先级。协议字段162在这一示例中指示隧道分组155使用GRE隧道封包、但是可以在其它情况下使用其它形式的隧道封包、例如包括IPinIP、NVGRE、VxLAN和在MPLS之上的MPLS。
外部报头156也包括隧道封包159,该隧道封包在这一示例中包括用于指定GRE协议(这里为MPLS)的GRE协议字段170和用于指定MPLS标签值(这里为214)的MPLS标签字段172。MPLS标签字段是虚拟网络标识符的示例并且可以在虚拟路由器(例如图4的计算设备100的虚拟路由器128)中与用于虚拟网络的路由实例关联。
内部分组157包括内报头148和净荷184。内报头158可以包括协议或服务类型(TOS)字段174以及以源IP地址字段176和目的地IP地址字段178的形式的私有(即,用于特定虚拟路由和转发实例)IP地址信息,连同以源端口字段180和目的地端口字段172的型式的传送层信息。净荷184可以包括应用层(第7层(L7))和在一些情况下包括由用于虚拟网络的虚拟机产生或者用于由该虚拟机消耗的其它L4-L7信息,净荷184可以包并且因此备选地被称为“L4分组”、“UDP分组”或者“TCP分组”。
根据在本公开内容中描述的技术,在转发虚拟路由器(例如虚拟路由器128)生成的隧道分组155时,主机网络加速器可以修改外部报头156以包括隧道分组去往的HNA特有的流控制信息185。在这一示例中,流控制信息185可以包括向接收主机网络加速器指示在用来存储传出隧道分组的一个或者多个传出队列151中有待去往目的地HNA的数据量的第一字段186。例如在HNA支持八个优先级级别并且因此支持用于在数据中心内的每个HNA的八个传出队列的情况下,字段186可以指定在八个传出队列中的每个传出队列内与隧道分组155去往的HNA关联的当前数据量。
此外,流控制185包括指示隧道分组155去往的HNA被允许向HNA发送隧道分组155发送数据的传输速率(例如字节每秒)的第二字段187。另外,流控制信息185包括第三字段188,在该第三字段内,发送HNA为HNA输出隧道分组155的当前时间指定时间戳。这样,隧道分组155的时间戳向接收HNA提供关于流控制信息185有多么当前或者陈旧的指示。
为了对分组重新排序以有助于向HNA的传出(例如PCIe)接口的无掉话分组递送、外部报头156图示可选序列号(“SEQ NO”)字段189,该字段可以包括用于源HNA/目的地HNA对——具体为用于隧道分组的源HNA 111和目的地HNA——的一个或多个优先级的序列号值。在用于优先级的序列号字段189中包括的每个序列号可以在一些实例中是2字节值。因此,在其中HNA实施4个优先级的实例中,序列号字段189将是8字节字段。在接收到包括序列号字段189的传入隧道分组155时,流控制单元149可以对分组155重新排序,并且对于给定优先级的任何丢失的隧道分组(即,与传出队列151之一关联)请求重传,该丢失的分组优先级由正在发送的HNA在被设置为等待丢失的隧道分组的定时器到期时基于嵌入在外部报头156内的序列号字段189的对应序号的值来确定。正如指出的那样,流控制单元149可以维护用于每个优先级的分离序列号空间。以这一方式,HNA 17的流控制单元149例如可以建立和维护在每个其它HNA之间的鲁棒分组流,即使虚拟路由器128可以在交换结构14的现成的L2/L3路由和交换部件之上利用覆盖转发技术。
主机网络加速器111可以被设立例如在存储器153中用于接收分组的大量缓冲存储器以允许存储具有遗漏分组的长系列分组。因此,HNA 111可以减少对于在等待遗漏隧道分组155之时发送重传的需要。存储器153包括与主存储器144相似的一个或者多个计算机可读存储介质。
图6是具体图示示例分组结构的框图,该分组结构可以被主机网络加速器用于维护按对“心跳”消息,这些按对“心跳”消息用于在当前未对于给定的HNA源/目的地对通过覆盖网络交换隧道分组(例如图5)的情况下传达更新的流控制信息。在这一示例中,心跳分组190包括向跟随有包含流控制信息195的净荷193的IP报头194前置的以太网报头192。如在图5中那样,流控制信息195包括指示在与分组190去往的HNA关联的传出队列中的每个传出队列中的当前数据量的第一字段186。此外,流控制信息195包括指示允许的传输速率(例如每秒字节)的第二字段197和用于为HNA输出分组190的当前时间指定时间戳的第三字段188。
在一个示例中,用于心跳分组190的分组结构可以符合在表1中阐述的格式:
字段 | 大小 |
前导码 | 7字节 |
帧开始 | 1字节 |
SRC和DST MAC地址 | 12字节 |
以太类型 | 2字节 |
帧校验和 | 2字节 |
IP报头 | 20字节 |
队列长度 | 8字节 |
允许的速率 | 8字节 |
时间戳 | 4字节 |
表1:心跳分组格式
在这一示例中,心跳分组190可以被实现为具有64字节总帧大小、即初始24字节以太网真报头、20字节IP报头和包含流控制信息的20字节净荷。队列长度和允许的速率各自是8字节字段。在这一实例中,8字节在HNA实现的4个不同优先级之中被均匀地划分(同样对于这一实例实现)。因此,每优先级的每个队列长度和允许的速率是16位值。设想其它精确度级别和优先级数目。
在另一实例中,用于心跳分组190的分组结构可以符合在表2中阐述的格式。
字段 | 大小 |
前导码 | 7字节 |
帧开始 | 1字节 |
SRC和DST MAC地址 | 12字节 |
以太类型 | 2字节 |
帧校验和 | 2字节 |
IP报头 | 20字节 |
队列长度 | 8字节 |
允许的速率 | 8字节 |
时间戳 | 4字节 |
序列号 | 8字节 |
表2:心跳分组格式
在这一示例中,心跳分组190具有与表1呈现的格式相似的格式、但是还包括可选8字节序列号(“SEQ NO”)字段199,该字段对于这一示例实现方式包括用于由HNA实现的4个不同优先级的序列号。序列号字段199具有与隧道分组155的序列号字段189相似的功能。
流控制单元149根据这里描述的技术对流控制和序列编号的使用可以提供向在下层物理网络的边缘操作的HNA的虚拟路由器128延伸并且向虚拟机110延伸一个或者多个虚拟网络的多点到多带你、无掉话和可扩展的物理网络。因此,主控用于各种租户的用户应用的虚拟机110经历如实现虚拟路由器128的HNA提供的在虚拟网络边缘的高速和可靠第3层转发。
图7是图示根据这里描述的技术的主机网络加速器(HNA)的概念图200的框图,这些HNA在网状拓扑中被交换结构互连用于在HNA之间的可扩展、无掉话、端到端通信。如以上描述的那样,HNA通过用隧道传输第3层分组以将每个虚拟网络延伸到它的关联主机来在物理网络之上实施一个或者多个虚拟网络。在所示概念图中,源HNA 17AS-17NS(统称为“源HNA17S”)各自代表作为用于在虚拟网络下层的物理网络的源端点操作的主机网络加速器。目的地HNA 17AD-17ND(统称为“目的地HNA 17D”)各自代表与源HNA 17S中的对应HNA相同的、但是作为用于物理网络的目的地端点操作的HNA设备。例如源HNA 17BS和目的地HNA 17BD可以代表位于TOR交换机或者服务器架内和在TOR交换机或者服务器架内操作的并且均潜在地向/从交换结构204发送和接收IP分组的相同物理HNA设备。然而,这里出于建模和描述的目的,单个HNA设备的相应发送和接收功能被分解成分离单元和参考字符。源HNA 17S可以代表图1-2的HNA 17、图3A的HNA 60、图3B的HNA 74和图4的HNA111中的任何HNA。
源HNA 17S和目的地HNA 17D实施这里描述的流控制技术以有助于在HNA源/目的地对之间的可扩展和无掉话的通信。出于描述的目的,初始地关于简化的模型用公式表示流控制技术,该模型使用具有无限内部带宽和零内部延时的理想交换结构204(该理想交换结构可以代表交换结构14的“理想”实现)。理想交换结构204在概念上作为半双工网络操作,该半双工网络具有恒定单位1带宽的N个输入端口和恒定单位1带宽的N个输出端口。源HNA17S呈现注入带宽Ii,j的集合,其中i对源HNA 17S编索引而j对目的地HNA 17D编索引。在这一简化的模型中,Ii,j(t)对于给定的i、j是恒定的。
理想地,分组根据简化的模型从源HNA 17S中的任何给定的源HNA立刻到达具有无限输入带宽和恒定单位1输出带宽的目的地队列206A-206N(统称为“目的地队列206”)中的任何给定的目的地队列。然而这一简化的模型以一些方式与数据中心10的示例实现相称,在这些实现中,HNA 17被分配比用于分组传输缓冲显著地更多的用于分组的接收缓冲的资源。与目的地队列206中的目的地队列关联的、由目的地HNA 17S中的给定的目的地HNA分配的测量带宽将与在目的地队列中来自源HNA 17S中的不同源HNA当前数据量(例如字节数目)成比例。例如由目的地队列206B关联的目的地HNA 17BD分配的测量带宽将与在目的地队列中来自源HNA 17S中的不同源HNA的字节数目成比例。令q1,q2,...,qN代表来自表示为S1,S2,...,SN的各种源HNA 17S的字节数目。给定的目的地HNA 17BD向源HNA Si的分配的速率为了实现前述比例性而由下式指示(同样对于给定的目的地HNA 17BD):
并且因此:
如果则rate(St)=0并且带宽对于给定的目的地HNA17BD被定义为0。
图8是图示根据这里描述的技术的系统的框图,在该系统中,主机网络加速器(HNA)在网状拓扑中被交换结构互连用于在HNA之间的可扩展、无掉话、端到端通信。如以上描述的那样,HNA通过用隧道传输第3层分组以将每个虚拟网络延伸到它的关联主机来在物理网络之上实施一个或者多个虚拟网络。在所示系统210中,源HNA 17AS-17NS(统称为“源HNA 17S”)各自代表作为用于在虚拟网络下层的物理网络的源端点操作的主机网络加速器。目的地HNA 17AD-17ND(统称为“目的地HNA 17D”)各自代表与源HNA 17S中的对应HNA相同的、但是作为用于物理网络的目的地端点操作的HNA设备。例如源HNA 17BS和目的地HNA17BD可以代表位于TOR交换机或者服务器架内和在TOR交换机或者服务器架内操作的、并且均潜在地向/从交换结构14发送和接收IP分组的相同物理HNA设备。然而,这里出于建模和描述的目的,单个HNA设备的相应发送和接收功能被分解成分离单元和参考字符。源HNA17S可以代表图1-2的HNA 17、图3A的HNA 60、图3B的HNA 74和图4的HNA111中的任何HNA。系统210可以例如代表图1的数据中心10。
源HNA 17S和目的地HNA 17D实现这里描述的流控制技术以有助于在HNA源/目的地对之间的可扩展和无掉话的通信。不同于图7的“理想”交换结构204,交换结构14代表如以上例如关于图1描述的现实L2/L3网络。也就是说,交换结构14具有在HNA源/目的地对之间的有限带宽和非零延时。
系统210图示源HNA 17AS-17NS具有用于缓冲分组的相应传出队列集合212A-212N(统称为“队列212”),这些分组被排队用于源HNA 17S中的任何源HNA经由交换结构14向多个目的地HNA 17D传输,以用于如这里描述的向单独和/或虚拟主机的基于硬件虚拟路由。队列集合212中的每个队列集合可以代表用于单个优先级的图4的示例传出队列151。队列集212是先入先出数据结构,并且队列集合212之一的每个队列具有代表被入队列并且等待由对应源HNA17S传输的数据量、即字节数目(或者在一些实现方式中为分组或者其它构造的数目)的队列长度。虽然这里主要地描述为存储“分组”,但是队列集合212的每个队列可以存储分组、对向主存储器别处存储的分组的引用或者其它对象或者引用,该其它对象或者引用允许将分组入队列/出队列用于传输。另外,队列集合212可以存储去往目的地HNA17D中的任何目的地HNA的分组。例如队列集合212A的队列可以存储去往目的地HNA 17AD的大小为2000字节的第一分组和去往目的地HNA 17BD的大小为3000字节的第二分组。队列的实际队列长度是5000字节,但是测量的队列长度可以被向上或者向下取整为二的幂以产生测量队列长度(“队列长度”)212=4096or213=8192。“队列长度”这里可以备选地在别处称为“队列大小”。
在图示用于目的地HNA 17D中的每个目的地HNA的源HNA17AS的对应队列的图9中图示队列集合212A的示例。队列212A1是用于目的地HNA 17AD(该目的地HNA可以是相同HNA17A)的队列,队列212AB是用于目的地HNA 17BD的队列,以此类推。队列集合212A可以包括数以百计或者甚至数以千计的队列并且可以使用任何适当数据结构、比如链表来实施。回顾图10,为了有助于高效分配交换结构14和在源HNA 17S/目的地HNA 17D对之间的无掉话、可扩展的端到端通信,源HNA 17S向对应目的地HNA 17D报告相应队列集合212的队列长度以报告将向目的地发送的数据量。因此,例如具有队列集合212A的源HNA 17AS可以向目的地HNA17AD报告212A1的队列长度、向目的地HNA 17BD报告212AB的队列长度、以此类推。
图10A图示目的地HNA 17AD在源HNA 17S中的每个源HNA报告的队列长度消息214AA-214NA中接收对应队列长度。为了易于图示,仅示出目的地HNA 17AD从源HNA 17S接收它的队列长度消息。由于系统210是HNA 17的多点到多点网络,所以将有源HNA 17S中的每个源HNA向目的地HNA 17D中的每个目的地HNA发布的队列长度消息。对于所有i,j∈N,令qi,j是从源HNA 17S中的源Si向目的地HNA 17D中的目的地Df传达的队列长度,其中N是HNA17的数目。队列长度消息214XY可以传送qi,j,其中对于i,j∈N,X=i并且Y=j。
目的地Df以将由源HNA 17S中的每个源HNA发送的数据量成比例地在源HNA 17S之中分配它的接收带宽。例如目的地Df可以根据以下公式按照它从源HNA 17S中的每个源HNA接收的队列长度分配它的接收带宽:
其中ri,j是如目的地Df从它的接收带宽分配的从源Si向目的地Df的传输速率。简单明了示出除非目的地HNA 17D中的每个目的地Df然后向对应源HNA17S传达为源Si计算的ri,j的表示。对于j∈N,源HNA 17S中的每个源HNA因此从目的地中的每个目的地Df接收计算的速率r。图10B图示源HNA 17BS从目的地HNA 17D接收速率消息216AA-216AN。为了简洁和易于图示,仅示出源HNA 17AS的速率消息216AA-216AN。然而,由于系统210是HNA 17的多点到多点网络,所以将有目的地HNA 17D中的每个目的地向源HNA 17S中的每个源HNA发布的速率消息。速率消息216XY可以传送ri,j,其中对于i,j∈N,X=i并且Y=j。速率消息216和队列长度消息214可以各自是在源与目的地HNA 17之间交换的心跳消息190或者其它消息的示例,该消息包括关于图5描述的流控制信息185,其中字段186包括速率ri,j而字段187包括队列长度qi,j。
源HNA 17S以从各种目的地HNA 17D接收的速率成比例地为经由交换结构14传送的传出流量分配传输带宽。例如由于源HNA 17S中的每个源Si对于i,j∈N从目的地中的每个目的地Df接收速率ri,j,所以源Si可以根据以下公式分配它发送的实际带宽:
如果则或者 (4)
如果则
其中表示源Si将向目的地Df发送的实际带宽。
这一分配对于如目的地Df确定的并且在速率消息216中向源Si报告的、源Si可以向目的地Df发送的最大速率有助于在HNA之间的可扩展、无掉话、端到端通信的目标。然而,如果源Si具有向其它目的地的其它承诺,则源Si可能具有不足以实现ri,j的传输带宽。考虑如下示例,在该示例中有单个源HNA 17AS和两个目的地HNA17AD-17BD,其中两个目的地HNA17AD-17BD各自指示它们可以接受速率1(即它们无其它源承诺,因为如在队列长度消息214中指示的那样无其它源打算向它们传输)。然而,源HNA 17AS不能递送速率2,因为它被约束成速率1(这里为了易于描述而代表用于源HNA17AS的向交换结构14中的最大传输带宽或者注入速率I)。取而代之,源HNA 17AS可以根据等式(4)在目的地17AD-17BD之中成比例地分配它的传输带宽。这向目的地17AD-17BD中的每个目的地产生继续该例并且令rA为目的地17AD指示的速率而rB为目的地17BD指示的速率,源HNA 17AS根据等式(4)计算和计算这满足注入带宽约束≤1以及接收的注入约束rA和rB,因为对于这些指示的速率中的每个速率而计算的实际传输带宽中的每个实际传输带宽小于速率本身,因为rA+rB>1。这些结果对于如下示例成立,在这些示例中,HNA 17的传输和接收带宽是与1不同的带宽。
这一公式表示产生以下规则:
(1)目的地确定如何向源分配带宽。没有源可以超过它的由目的地向该源分配的带宽(速率r-以字节/秒(B/s)为单位表达)。
(2)源可以由于向其它目的地的承诺而确定向给定的目的地发送少于它的分配的带宽(速率r)。
以下是这里使用的符号表示方案的概要。
(1)qi,j=在源Si中的引向目的地Dj的虚拟输出队列(VOQ)中的字节数目。VOQ可以是用于图8-10B中的队列集合212的另一术语。
(2)ri,j=如目的地Dj确定的、该源Si应当向目的地Dj发送的字节数目/秒。
(3)fi,j=在源Si归一化之后的、源Si将向目的地Dj实际发送的字节数目/秒。等式(4)是归一化的至少部分的示例。
现在将进一步具体描述流控制信息的交换。源HNA经由交换结构14向目的地HNA发送数据分组。首先,源HNA的流控制单元149可以在从源HNA向目的地HNA发送的每个分组中嵌入用于与目的地HNA关联的队列集合212的队列的队列长度。第二,对于目的地HNA从特定源HNA接收的每L字节,目的地HNA的流控制单元149返回确认,该确认包括为该源HNA/目的地HNA对而计算的速率r。在一些示例中,L=4KB。
为了(1)潜在地减少用于源HNA斜升至全速的时间和(2)在丢失L字节或者确认消息的情况下防止死锁,源HNA的流控制单元149向目的地HNA周期性地发送流控制信息,而目的地HNA的流控制单元149向源HNA周期性地发送流控制信息。例如目的地可以配置200Gbps交换结构之中的2Gbps信道(或者总带宽的1%)用于心跳分组、比如图6的心跳分组190的周期性流控制交换。
心跳分组190用作从源HNA到目的地HNA的保活/心跳并且例如在队列长度字段196中包括从源到目的地的队列长度信息q。心跳分组190也例如在速率字段197中包括从目的地到源的速率信息r从而记住每个目的地HNA也是源HNA并且反之亦然。因此,单个心跳分组190可以包括从源到目的地的队列长度信息和从该目的地到该源的速率信息二者。这具有摊销以太网和IP报头的心跳分组190开销的这样的有益效果。
心跳分组190还包括时间戳。在一些情况下,心跳分组190可以在网络优先级被转发,该网络优先级是最低延时/最高优先级。时间戳可以允许HNA同步它们的时钟达到高精确程度。在以上表1中对于提供4个优先级信道的HNA描述用于心跳分组190的总大小。用于表1的队列长度和允许的速率字段大小(以字节为单位)将对于更少/更多优先级信道更小/更大。表1例如示出为队列长度而分配的8字节。如以下进一步具体描述的那样,对于16位粒度(即n=16),8字节为用于对应优先级值的4个不同队列长度提供空间。对于允许的速率的分析相似。
心跳分组190的总帧大小按照表1可以是64字节=512位。这样,在2Gbps(分配的信道带宽),这分解为在相继心跳分组190之间的~4M帧/秒或者250ns。假设每个HNA具有~100个HNA的“跨度”(即与这些HNA通信),那么在最坏情况下,队列长度和速率信息可能陈旧250ns*100=25μs。然而如果与背负的流控制信息及时地传输充分数据以满足以上安排的定时约束,则HNA无需发送心跳分组190。因此,流控制信息可以频繁地超前25μs。进而另外,即使在交换结构14中丢弃包括流控制信息的消息,仍然可以在下一分组中提供这样的流控制信息。
图11是根据在本公开内容中描述的技术的主机网络加速器的用于执行流控制的示例操作模式的流程图。出于示例目的而关于作为图7-10B的系统210的HNA 17操作的计算设备100的HNA 11描述示例操作模式300。对于i,j∈N,每个源Si向目的地Dj报告队列长度qi,j(例如以字节为单位)。也就是说,作为源HNA 17S操作的计算设备100的多个实例的流控制单元149生成或者修改分组以包括用于队列151的队列长度而向作为目的地HNA 17D(这些可以是与源HNA 17S相同的HNA)操作的计算设备100的多个实例传输对应队列长度(302)。可以在图10A的队列长度消息214中包括或者由这些消息代表这些分组。对于i,j∈N,每个目的地Dj确定和向每个源Si报告速率ri,j(例如以字节/秒为单位)。也就是说,使用报告的队列长度,作为目的地HNA 17D操作的计算设备100的流控制单元149可以通过根据代表将从每个源HNA发送的数据量的队列长度成比例地分配接收带宽来确定速率。流控制单元149生成或者修改分组以向作为源HNA 17S操作的计算设备的多个实例传输已确定的对应速率(304)。可以在速率消息216中包括或者由这些速率消息代表这些分组。每个源Si归一化速率以确定实际、归一化的速率以满足源Si的有限带宽约束Bi。也就是说,作为源HNA17S操作的计算设备100的流控制单元149根据从各种目的地接收的速率成比例地分配总传输带宽(306)。源Si确定从Si到目的地Dj的归一化的速率fi,j如下:
简单明了示出调度器148可以应用每个HNA 111为各种目的地HNA而确定的归一化的速率。以这一方式,执行操作模式300的计算设备100可以有助于高效分配交换结构14的有限带宽和在源HNA 17S/目的地HNA 17D对之间的无掉话、可扩展的端到端通信。
现在描述图11的操作模式300的多个示例。下文使用以下紧密矩阵符号表示以提供队列长度和速率的备选表示:
每个源Si也是目的地Di并且具有带宽Bi。在一些示例中,传达qi,j作为根据配置的队列标度值、qut字节而缩放的n位值。换而言之,可以用qut字节为单位测量qi,j,其中put可以是2的幂。在一些情况下,可以在隧道分组155的字段186中包括qi,j。在一些示例中,传达ri,j作为根据配置的速率标度值、ruibps而缩放的k位值。换而言之,可以用rui字节/秒为单位测量ri,j,其中rui可以是2的幂。在一些情况下,可以在隧道分组155的字段187中包括ri,j。作为缩放的范围的示例计算,对于qu=64B和n=16位,qmin是0而qmax是26*216=222=>4MB。作为另一示例,对于ru=16MB/s=128Mbps和k=16位,rmin是0而rmax是128*216=>8Tbps。
以这一方式缩放队列长度和速率值对于HNA 17中的每个HNA可以有助于关于存储器容量、HNA设备的速度等、根据HNA的能力而定的用于耦合到交换结构14的各种HNA的这些值的范围的适当粒度水平。在一些示例中,对于所有i∈N(对于耦合到交换结构14的所有HNA 17),图4的HNA 111的配置数据134存储qut、rui。如以上描述的那样,配置数据134可以由控制器22设置或者在一些情况下可以在HNA 17之中被交换用于向配置数据134存储,其中它可由用于HNA的流控制单元149访问
对于这里描述的流控制操作的描述可以在一些示例中关于多个优先级出现。因而,字段187可以包括用于优先级1-p中的每个优先级ri,j的值,其中p是耦合到交换结构14的HNA 17赋予的优先级数目。类似地,字段186可以包括用于优先级1-p中的每个优先级qi,j的值。p的示例值包括2、4和8,但是其它值是可能的。
图12A是图示根据这里描述的技术的示例系统的框图,在该系统中,主机网络加速器应用流控制。来自源HNA 402A-402B和目的地HNA 402C-402F的每个HNA可以代表这里描述的HNA 17中的任何HNA的示例。源HNA 402A-402B和目的地HNA 402C-402F交换根据这里描述的流控制技术确定的队列长度和速率值以便按照待发送的数据量和目的地HNA 402C-402F的用于接收这样的数据的能力成比例地分配带宽。源HNA 402A有数据要向目的地HNA402C、402D传输,并且这样的数据以满足或者超过源HNA 402A的最大传输速率的速率被入队列。换而言之,源HNA 402A在最大传输容量。源HNA 402B有数据要向目的地HNA 402D、402E和402F传输,并且这样的数据以满足或者超过源HNA 402B的最大传输速率的速率被入队列。换而言之,源HNA 402B在最大传输容量。
对于关于图12A的第一示例确定,为了简化而假设所有队列具有相同队列长度。将所示队列长度设置成对于Q为单位1造成源HNA 402A、402B计算:
其中i=2行代表源HNA 402A-402B而j=4列代表目的地HNA402C-402F。由于列总和为1,所以满足对于目的地402C-402F的目的地带宽约束。然而源HNA 402A-402B归一化行,因为行总和不为1:
在图12A上图示这一结果。
作为关于图12A的第二示例确定,设置队列长度为:
通过为每个元素计算等式(3),目的地HNA 402C-402F确定R为:
并且向源HNA报告。通过为每个元素计算等式(4),源HNA402A-402B确定为:
图12B是图示根据这里描述的技术的另一示例系统的框图,在该示例系统中,主机网络加速器应用流控制。图12B对于不同队列长度图示用于图12A的HNA的概念拓扑。这里,源HNA 402A有数据要向目的地HNA 402E、402F传输;源HNA 402B有数据要向HNA 402E传输;源HNA 402C有数据要向目的地HNA 402F传输;并且源HNA 402D有数据要向目的地HNA 402F传输。在这一示例中,接收带宽满足或者超过目的地HNA 402E、402F的最大接收速率。
这里,目的地HNA 402E、402F计算R为:
并且向源HNA报告。通过为每个元素计算等式(4),源HNA402A-402D确定为:
在这一情况下因为已经满足约束而事实上无需归一化。也就是说,当且仅当R矩阵的行超过传输约束,则对于该行需要归一化。源HNA 402A-402D可以在一些情况下可以避免归一化,因此如果行在对于源HNA的传输约束内,则这与等式(4)相符。
通过为在物理网络、例如交换结构14的边缘操作的HNA高效地和公平地分配接收和传输带宽,数据中心10提供方可以向多个租户赋予高度可扩展的数据服务以有效使用大量内部网络带宽。如以上描述的那样,耦合这些服务与HNA进一步提供的流控制可以有助于向在下层物理网络的边缘操作的HNA的虚拟路由器128延伸的多点到多点、无掉话和可扩展的物理网络。向虚拟机110延伸虚拟路由器128的一个或者多个虚拟网络因而可以由于在交换结构14内使用现成的部件硬件而以成本有效方式向主控的用户应用提供透明、高度地可靠的L2/L3交换。
图13是图示根据在本公开内容中描述的技术的用于主机网络加速器执行流控制的示例操作模式的流程图。关于包括HNA 111的图4的计算设备100描述这一示例操作模式400。流控制单元149将用于从源HNA接收数据的定时器重置成可配置的重置值并且启动定时器以等待来自源HNA的数据(402)。HNA 111耦合到物理网络、例如交换结构14并且配置为实施用于在物理网络之上的一个或者多个虚拟网络的虚拟路由器128。HNA 111接收源HNA供应的分组数据(404)。HNA 111包括可配置阈值,该阈值指定触发确认的接收的数据量。流控制单元149可以向存储器153缓冲接收的分组数据并且根据在隧道报头中嵌入的用于分组的优先级的序列号、例如序列号189对接收的任何数目的分组重新排序。
此外,如果接收的分组数据满足或者超过可配置阈值(406的是分支)或者定时器超时(408的是分支),则流控制单元149向源HNA发送确认消息并且将接收的数据量重置成零(410)。确认消息可以是单独消息、比如心跳消息190或者可以被包括在隧道分组内作为流控制信息字段185和序列号字段189。然而如果定时器超时(408的是分支),则流控制单元149向源HNA发送确认消息并且将接收的数据量重置成零(410)而无论HNA 111是否在定时器时段内接收到阈值数据量(406的否分支)。在发送确认之后,HNA重置和重启定时器(402)。
示例1.一种主机网络加速器,包括:物理网络接口,用于连接到包括多个交换机的交换结构,所述多个交换机通过物理网络为分组提供无连接的、基于分组的交换;输入/输出(I/O)总线接口,用于连接到服务器的I/O总线,所述服务器提供执行与一个或者多个虚拟网络关联的一个或者多个虚拟机的操作环境;以及基于硬件的虚拟路由器,定位于在所述物理网络接口与所述I/O总线接口之间的数据路径上,所述虚拟路由器被配置为应用所述虚拟网络的路由信息以在执行于所述服务器上的所述虚拟机与执行于耦合到所述物理网络的一个或者多个远程服务器上的虚拟机之间路由分组。
示例2.根据示例1的主机网络加速器,其中所述I/O总线接口包括用于存储由所述虚拟机直接写入的传出分组的存储器。
示例3.根据示例1的主机网络加速器,其中所述I/O总线接口包括配置为连接到所述服务器中的相应服务器的外围部件互连快速(PCIe)总线的PCIe接口。
示例4.根据示例1的主机网络加速器,其中所述主机网络加速器包括配置用于插入到所述服务器的槽内的可去除外围部件互连快速(PCIe)卡。
示例5.根据示例1的主机网络加速器,其中所述主机网络加速器包括配置用于插入到所述交换结构中的所述交换机的槽内的可去除外围部件互连快速(PCIe)卡。
6.根据示例1的主机网络加速器,其中所述虚拟路由器被配置为通过所述I/O总线从所述虚拟机接收传出分组,并且根据跨所述交换结构延伸的覆盖网络来构造传出隧道分组,其中所述传出隧道分组封装所述传出分组,并且其中所述虚拟路由器被配置为通过所述物理网络接口从所述交换结构接收传入隧道分组、提取封装在所述传入隧道分组内的内部分组以及根据用于所述虚拟网络的路由信息通过所述I/O总线向所述虚拟机路由所述内部分组。
示例7.根据示例6的主机网络加速器,还包括:多个传出队列,用于缓冲由所述虚拟路由器输出的所述传出隧道分组;以及调度器,所述调度器控制所述传出隧道分组从所述虚拟路由器经由所述交换结构向其它主机网络加速器的传输。
示例8.根据示例7的主机网络加速器,其中所述多个传出队列包括多个输出队列集合,所述输出队列集合中的每个输出队列集合缓冲将向所述主机网络加速器中的对应主机网络加速器发送的所述传出隧道分组的相应集合;其中相应传出队列集合中的每个传出队列集合内的所述传出队列中的每个传出队列被指派不同的优先级;并且其中对于所述相应传出队列集合中的每个传出队列集合,所述调度器基于被指派给所述传出队列的相应优先级来控制所述传出隧道分组的传输。
示例9.根据示例7的主机网络加速器,还包括流控制单元,所述流控制单元与耦合到所述交换结构并且定位于所述交换结构与所述远程服务器之间的其它主机网络加速器的集合中的每个其它主机网络加速器交换流控制信息,其中所述调度器基于接收自所述主机网络加速器中的所述其它主机网络加速器的相应流控制信息来控制所述传出隧道分组从所述虚拟路由器向所述主机网络加速器中的所述其它主机网络加速器中的每个主机网络加速器的传输。
示例10.根据示例9的主机网络加速器,其中由所述流控制单元向所述其它主机网络加速器中的每个主机网络加速器发送的所述流控制信息指定:用于在所述传出队列中等待的、将由所述主机网络加速器向相应主机网络加速器发送的所述隧道分组的分组数据量,所述流控制信息正被发送到的所述相应主机网络加速器被允许向所述主机网络加速器发送隧道分组的最大速率,以及指定主机网络加速器发送流控制信息的时间的时间戳。
示例11.根据示例9的主机网络加速器,其中流控制单元在虚拟路由器在封装来自虚拟机的传出分组时构造的传出隧道分组内插入流控制信息。
示例12.根据示例9的主机网络加速器,其中所述流控制单元向由所述虚拟路由器在封装来自所述虚拟机的传出分组时构造的所述传出隧道分组的外部报头中插入所述流控制信息。
示例13.根据示例9的主机网络加速器,其中对于所述其它主机网络加速器中的每个其它主机网络加速器,所述流控制单元在所述主机网络加速器尚未通过所述交换结构向所述相应主机网络加速器发送传出隧道分组达阈值时间段时发送携带所述流控制信息的心跳消息。
示例14.根据示例1的主机网络加速器,其中所述网络接口使用以太网网际协议(IPoE)协议向所述交换结构传递所述隧道分组。
示例15.一种方法,包括:由主机网络加速器的输入/输出(I/O)总线接口从执行于服务器上的一个或者多个虚拟机接收多个传出分组,其中所述虚拟机与一个或者多个虚拟网络关联;用执行于所述主机网络加速器上的基于硬件的虚拟路由器为所述传出分组选择在所述虚拟网络内的目的地;用所述虚拟路由器基于选择的所述目的地且根据跨交换结构向多个主机网络加速器延伸的覆盖网络来构造传出隧道分组,其中所述传出隧道分组封装所述传出分组;以及由所述主机网络加速器的物理网络接口向所述物理网络转发所述传出隧道分组,其中所述物理网络接口连接到包括多个交换机的交换结构,所述多个交换机通过所述物理网络为所述隧道分组提供无连接的、基于分组的交换。
示例16.根据示例15的方法,还包括:用所述主机网络加速器从耦合到所述物理网络的其它主机网络加速器接收流控制信息;以及用所述主机网络加速器基于接收自所述主机网络加速器中的其它主机网络加速器中的每个主机网络加速器的相应流控制信息来控制所述传出隧道分组从所述虚拟路由器向所述主机网络加速器中的所述其它主机网络加速器的传输。
示例17.根据示例15的方法,包括在向所述网络接口转发所述传出隧道分组之前,用所述主机网络加速器向所述传出隧道分组的外部报头中插入流控制信息。
示例18.根据示例15的方法,还包括:向其它主机网络加速器中的每个主机网络加速器发送流控制信息,流控制信息指定:用于在传出队列中等待的、将由主机网络加速器向相应其它主机网络加速器发送的隧道分组的分组数据量,相应其它主机网络加速器被允许向主机网络加速器发送隧道分组的最大速率,以及指定主机网络加速器发送流控制信息的时间的时间戳。
示例19.根据示例17的方法,还包括在主机网络加速器尚未通过所述交换结构向第二主机网络加速器发送传出隧道分组达阈值时间段时,向所述主机网络加速器且向所述第二主机网络加速器发送携带所述流控制信息的心跳消息。
示例20.根据示例15的方法,其中从所述虚拟机接收所述传出分组包括通过所述I/O总线接收由所述虚拟机向所述主机网络加速器的存储器直接写入的传出分组。
示例21.根据示例15的方法,其中所述I/O总线接口包括连接到所述服务器中的相应服务器的外围部件互连快速(PCIe)总线的PCIe接口。
示例22.根据示例15的方法,其中主机网络加速器包括被配置用于在服务器的槽内插入的可移除外围部件互连快速(PCIe)卡。
示例23.根据示例15的方法,其中主机网络加速器包括被配置用于在交换结构的交换机的槽内插入的可移除外围部件互连快速(PCIe)卡。
已经描述本发明的各种实施例。这些和其它实施例在所附权利要求的范围内。
Claims (17)
1.一种包括可去除外围部件互连快速(PCIe)卡的主机网络加速器,所述可去除外围部件互连快速(PCIe)卡被配置用于插入到服务器的槽内,所述主机网络加速器包括:
物理网络接口,用于将服务器连接到包括多个交换机的交换结构,所述多个交换机通过物理网络为分组提供无连接的、基于分组的交换;
物理输入/输出(I/O)总线接口,用于连接到服务器的I/O总线,所述服务器提供执行与一个或者多个虚拟网络关联的一个或者多个虚拟机的操作环境,其中所述I/O总线接口包括被配置为连接到所述服务器中的PCIe总线的PCIe接口;以及
在一个或多个集成电路内执行的基于硬件的虚拟路由器,被定位于在所述物理网络接口与所述I/O总线接口之间的数据路径上,所述虚拟路由器被配置为应用所述虚拟网络的路由信息,以在执行在所述服务器上的所述虚拟机与执行在耦合到所述物理网络的一个或者多个远程服务器上的虚拟机之间路由分组。
2.根据权利要求1所述的主机网络加速器,其中所述I/O总线接口包括用于存储由所述虚拟机直接写入的传出分组的存储器。
3.根据权利要求1所述的主机网络加速器,
其中所述虚拟路由器被配置为通过所述I/O总线从所述虚拟机接收传出分组,并且根据跨所述交换结构延伸的覆盖网络来构造传出隧道分组,其中所述传出隧道分组封装所述传出分组,并且
其中所述虚拟路由器被配置为通过所述物理网络接口从所述交换结构接收传入隧道分组、提取被封装在所述传入隧道分组内的内部分组以及根据用于所述虚拟网络的路由信息通过所述I/O总线向所述虚拟机路由所述内部分组。
4.根据权利要求3所述的主机网络加速器,还包括:
多个传出队列,用于缓冲由所述虚拟路由器输出的所述传出隧道分组;以及
调度器,所述调度器控制所述传出隧道分组从所述虚拟路由器经由所述交换结构向其它主机网络加速器的传输。
5.根据权利要求4所述的主机网络加速器,
其中所述多个传出队列包括多个输出队列集合,所述输出队列集合中的每个输出队列集合缓冲将被发送到所述主机网络加速器中的对应主机网络加速器的所述传出隧道分组的相应集合;
其中相应传出队列集合中的每个传出队列集合内的所述传出队列中的每个传出队列被指派不同的优先级;并且
其中对于所述相应传出队列集合中的每个传出队列集合,所述调度器基于被指派给所述传出队列的相应优先级来控制所述传出隧道分组的传输。
6.根据权利要求4所述的主机网络加速器,还包括流控制单元,所述流控制单元与耦合到所述交换结构并且定位于所述交换结构与所述远程服务器之间的其它主机网络加速器的集合中的每个其它主机网络加速器交换流控制信息,
其中所述调度器基于从所述主机网络加速器中的所述其它主机网络加速器接收到的相应流控制信息来控制所述传出隧道分组从所述虚拟路由器向所述主机网络加速器中的所述其它主机网络加速器中的每个主机网络加速器的传输。
7.根据权利要求6所述的主机网络加速器,其中由所述流控制单元向所述其它主机网络加速器中的每个主机网络加速器发送的所述流控制信息指定:
用于在所述传出队列中等待的、将由所述主机网络加速器向相应主机网络加速器发送的所述隧道分组的分组数据量,
所述流控制信息正被发送到的所述相应主机网络加速器被允许向所述主机网络加速器发送隧道分组的最大速率,以及
指定所述主机网络加速器发送流控制信息的时间的时间戳。
8.根据权利要求6所述的主机网络加速器,其中所述流控制单元向由所述虚拟路由器在封装来自所述虚拟机的传出分组时构造的所述传出隧道分组内插入所述流控制信息。
9.根据权利要求6所述的主机网络加速器,其中所述流控制单元向由所述虚拟路由器在封装来自所述虚拟机的传出分组时构造的所述传出隧道分组的外部报头中插入所述流控制信息。
10.根据权利要求6所述的主机网络加速器,其中对于所述其它主机网络加速器中的每个其它主机网络加速器,所述流控制单元在所述主机网络加速器尚未通过所述交换结构向所述相应主机网络加速器发送传出隧道分组达到阈值时间段时发送携带所述流控制信息的心跳消息。
11.根据权利要求1所述的主机网络加速器,其中所述网络接口使用以太网网际协议(IPoE)协议向所述交换结构传递所述分组。
12.一种方法,包括:
由主机网络加速器的物理输入/输出(I/O)总线接口从执行在服务器上的一个或者多个虚拟机接收多个传出分组,其中所述虚拟机与一个或者多个虚拟网络关联,其中所述主机网络加速器包括安装在所述服务器的槽内可移除外围部件互连快速(PCIe)卡,并且所述I/O总线接口包括连接到所述服务器的PCIe总线的PCIe接口;
用执行在所述主机网络加速器的一个或多个集成电路上的基于硬件的虚拟路由器为所述传出分组选择在所述虚拟网络内的目的地;
用所述虚拟路由器基于选择的所述目的地并且根据跨交换结构向多个主机网络加速器延伸的覆盖网络来构造传出隧道分组,其中所述传出隧道分组封装所述传出分组;以及
由所述主机网络加速器的物理网络接口向所述物理网络转发所述传出隧道分组,其中所述物理网络接口连接到包括多个交换机的交换结构,所述多个交换机通过所述物理网络为所述隧道分组提供无连接的、基于分组的交换。
13.根据权利要求12所述的方法,还包括:
用所述主机网络加速器从耦合到所述物理网络的其它主机网络加速器接收流控制信息;以及
用所述主机网络加速器基于从所述主机网络加速器中的其它主机网络加速器中的每个主机网络加速器接收到的相应流控制信息来控制所述传出隧道分组从所述虚拟路由器向所述主机网络加速器中的所述其它主机网络加速器的传输。
14.根据权利要求12所述的方法,包括在向所述网络接口转发所述传出隧道分组之前,用所述主机网络加速器向所述传出隧道分组的外部报头中插入流控制信息。
15.根据权利要求12所述的方法,还包括:
向其它主机网络加速器的每个其它主机网络加速器发送流控制信息,所述流控制信息指定:
用于在传出队列中等待的、将由所述主机网络加速器向相应其它主机网络加速器发送的所述隧道分组的分组数据量,
所述相应其它主机网络加速器被允许向所述主机网络加速器发送隧道分组的最大速率,以及
指定所述主机网络加速器发送流控制信息的时间的时间戳。
16.根据权利要求14所述的方法,还包括:在主机网络加速器尚未通过所述交换结构向第二主机网络加速器发送传出隧道分组达到阈值时间段时,向所述主机网络加速器并且向所述第二主机网络加速器发送携带所述流控制信息的心跳消息。
17.根据权利要求12所述的方法,其中从所述虚拟机接收所述传出分组包括:通过所述I/O总线接收由所述虚拟机向所述主机网络加速器的存储器直接写入的传出分组。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461973045P | 2014-03-31 | 2014-03-31 | |
US61/973,045 | 2014-03-31 | ||
US14/309,629 | 2014-06-19 | ||
US14/309,629 US9294304B2 (en) | 2014-03-31 | 2014-06-19 | Host network accelerator for data center overlay network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104954247A CN104954247A (zh) | 2015-09-30 |
CN104954247B true CN104954247B (zh) | 2018-05-01 |
Family
ID=52779511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410751364.3A Active CN104954247B (zh) | 2014-03-31 | 2014-12-09 | 用于数据中心覆盖网络的主机网络加速器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9294304B2 (zh) |
EP (1) | EP2928136B1 (zh) |
CN (1) | CN104954247B (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9356866B1 (en) * | 2014-01-10 | 2016-05-31 | Juniper Networks, Inc. | Receive packet steering for virtual networks |
US9479457B2 (en) | 2014-03-31 | 2016-10-25 | Juniper Networks, Inc. | High-performance, scalable and drop-free data center switch fabric |
US9485191B2 (en) | 2014-03-31 | 2016-11-01 | Juniper Networks, Inc. | Flow-control within a high-performance, scalable and drop-free data center switch fabric |
US10601734B2 (en) * | 2014-07-08 | 2020-03-24 | Nokia Solutions And Networks Oy | Method of operating a network entity |
JP2018502385A (ja) | 2014-12-08 | 2018-01-25 | アンブラ テクノロジーズ リミテッドUmbra Technologies Ltd. | 遠隔ネットワークリージョンからのコンテンツ検索のためのシステム及び方法 |
EP3243314A4 (en) | 2015-01-06 | 2018-09-05 | Umbra Technologies Ltd. | System and method for neutral application programming interface |
WO2016123293A1 (en) | 2015-01-28 | 2016-08-04 | Umbra Technologies Ltd. | System and method for a global virtual network |
CN107852604B (zh) | 2015-04-07 | 2021-12-03 | 安博科技有限公司 | 用于提供全局虚拟网络(gvn)的系统 |
WO2016198961A2 (en) | 2015-06-11 | 2016-12-15 | Umbra Technologies Ltd. | System and method for network tapestry multiprotocol integration |
US10341311B2 (en) * | 2015-07-20 | 2019-07-02 | Schweitzer Engineering Laboratories, Inc. | Communication device for implementing selective encryption in a software defined network |
ES2931177T3 (es) | 2015-12-11 | 2022-12-27 | Umbra Tech Ltd | Sistema y método para lanzamiento de información a través de un tapiz de red y granularidad de una marca |
US10645009B2 (en) * | 2016-03-18 | 2020-05-05 | Futurewei Technologies, Inc. | Method and apparatus for programmable buffers in mobile networks |
US10523598B2 (en) * | 2016-04-04 | 2019-12-31 | Futurewei Technologies, Inc. | Multi-path virtual switching |
US10922286B2 (en) | 2016-04-26 | 2021-02-16 | UMBRA Technologies Limited | Network Slinghop via tapestry slingshot |
US10034407B2 (en) * | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US11012360B2 (en) * | 2016-12-15 | 2021-05-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Flow control in a virtualized communication network |
US10326696B2 (en) | 2017-01-02 | 2019-06-18 | Microsoft Technology Licensing, Llc | Transmission of messages by acceleration components configured to accelerate a service |
US10320677B2 (en) * | 2017-01-02 | 2019-06-11 | Microsoft Technology Licensing, Llc | Flow control and congestion management for acceleration components configured to accelerate a service |
US10200274B1 (en) * | 2017-02-17 | 2019-02-05 | Juniper Networks, Inc. | Enhanced traffic flow in software-defined networking controller-based architecture |
US10243840B2 (en) | 2017-03-01 | 2019-03-26 | Juniper Networks, Inc. | Network interface card switching for virtual networks |
WO2018183553A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups |
CN110710139A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 具有光置换器的无阻塞全网状数据中心网络 |
US10686729B2 (en) | 2017-03-29 | 2020-06-16 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN110741356B (zh) | 2017-04-10 | 2024-03-15 | 微软技术许可有限责任公司 | 多处理器系统中的中继一致存储器管理 |
CN107342893B (zh) * | 2017-06-17 | 2022-11-29 | 刘昱 | 一种基于sdn的网络加速方法及装置 |
US10659254B2 (en) * | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
EP3625679A1 (en) | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for stream processing |
CN111149329A (zh) | 2017-09-29 | 2020-05-12 | 芬基波尔有限责任公司 | 通过多个备用数据路径进行分组喷射的数据中心网络的结构控制协议 |
US10965586B2 (en) | 2017-09-29 | 2021-03-30 | Fungible, Inc. | Resilient network communication using selective multipath packet flow spraying |
US20200169513A1 (en) * | 2017-09-29 | 2020-05-28 | Fungible, Inc. | Fabric control protocol for data center networks with packet spraying over multiple alternate data paths |
WO2019104090A1 (en) | 2017-11-21 | 2019-05-31 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
WO2019152063A1 (en) | 2018-02-02 | 2019-08-08 | Fungible, Inc. | Efficient work unit processing in a multicore system |
US10929175B2 (en) | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
JP6920001B2 (ja) * | 2018-12-04 | 2021-08-18 | 株式会社日立製作所 | マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 |
US10938730B2 (en) * | 2019-01-29 | 2021-03-02 | EMC IP Holding Company LLC | Data transmission techniques between systems having different communication speeds |
CN110022245B (zh) * | 2019-04-10 | 2020-05-29 | 苏州浪潮智能科技有限公司 | 一种调试方法、调试系统及存储介质 |
CN113254070B (zh) | 2020-02-07 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 加速单元、片上系统、服务器、数据中心和相关方法 |
WO2021174223A1 (en) * | 2020-02-28 | 2021-09-02 | Riera Michael F | C2mpi: a hardware-agnostic message passing interface for heterogeneous computing systems |
CN112019645B (zh) * | 2020-07-06 | 2021-07-30 | 中科驭数(北京)科技有限公司 | 基于toe的网络地址管理方法及装置 |
CN114691225A (zh) * | 2022-04-06 | 2022-07-01 | 蔚来汽车科技(安徽)有限公司 | 用于车载冗余系统的切换方法、系统、车辆和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595648A (zh) * | 2012-08-17 | 2014-02-19 | 国际商业机器公司 | 用于在服务器的接收侧进行负载均衡的方法和系统 |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760328B1 (en) | 1999-10-14 | 2004-07-06 | Synchrodyne Networks, Inc. | Scheduling with different time intervals |
US6781959B1 (en) | 2000-07-31 | 2004-08-24 | Cisco Technology, Inc. | Method and apparatus for determining troubleshooting information for completed calls in a telecommunications network |
US7184437B1 (en) | 2002-07-17 | 2007-02-27 | Juniper Networks, Inc. | Scalable route resolution |
US8018860B1 (en) | 2003-03-12 | 2011-09-13 | Sprint Communications Company L.P. | Network maintenance simulator with path re-route prediction |
US7839843B2 (en) | 2003-09-18 | 2010-11-23 | Cisco Technology, Inc. | Distributed forwarding in virtual network devices |
US7519006B1 (en) | 2003-11-26 | 2009-04-14 | Cisco Technology, Inc. | Method and apparatus for measuring one-way delay at arbitrary points in network |
US7916638B2 (en) | 2003-12-24 | 2011-03-29 | Alcatel Lucent | Time-independent deficit round robin method and system |
US7042838B1 (en) | 2004-05-18 | 2006-05-09 | Cisco Technology, Inc. | Method and apparatus for forwarding data in a data communications network |
GB2419701A (en) * | 2004-10-29 | 2006-05-03 | Hewlett Packard Development Co | Virtual overlay infrastructure with dynamic control of mapping |
US7515542B2 (en) * | 2005-07-12 | 2009-04-07 | Cisco Technology, Inc. | Broadband access note with a virtual maintenance end point |
US20070195787A1 (en) * | 2005-10-19 | 2007-08-23 | Alnuweiri Hussein M | Methods and apparatus for per-session uplink/downlink flow scheduling in multiple access networks |
US7873025B2 (en) | 2006-02-23 | 2011-01-18 | Cisco Technology, Inc. | Network device that determines application-level network latency by monitoring option values in a transport layer message |
US8477614B2 (en) | 2006-06-30 | 2013-07-02 | Centurylink Intellectual Property Llc | System and method for routing calls if potential call paths are impaired or congested |
US7633865B2 (en) | 2007-01-19 | 2009-12-15 | Alcatel-Lucent Usa Inc. | Network operations control in packet data networks |
US7639625B2 (en) | 2007-03-02 | 2009-12-29 | Cisco Technology, Inc. | Tracing connection paths through transparent proxies |
US8055789B2 (en) | 2007-03-27 | 2011-11-08 | Amazon Technologies, Inc. | Configuring intercommunications between computing nodes |
US7734859B2 (en) * | 2007-04-20 | 2010-06-08 | Nuon, Inc | Virtualization of a host computer's native I/O system architecture via the internet and LANs |
US7890549B2 (en) | 2007-04-30 | 2011-02-15 | Quantum Leap Research, Inc. | Collaboration portal (COPO) a scaleable method, system, and apparatus for providing computer-accessible benefits to communities of users |
US8339959B1 (en) | 2008-05-20 | 2012-12-25 | Juniper Networks, Inc. | Streamlined packet forwarding using dynamic filters for routing and security in a shared forwarding plane |
US7941539B2 (en) * | 2008-06-30 | 2011-05-10 | Oracle America, Inc. | Method and system for creating a virtual router in a blade chassis to maintain connectivity |
US7983257B2 (en) * | 2008-07-18 | 2011-07-19 | Emulex Design & Manufacturing Corporation | Hardware switch for hypervisors and blade servers |
KR100976443B1 (ko) | 2008-09-04 | 2010-08-18 | 한국전자통신연구원 | 홈네트워크 오류 예측 시스템 및 그 방법 |
US8265071B2 (en) | 2008-09-11 | 2012-09-11 | Juniper Networks, Inc. | Methods and apparatus related to a flexible data center security architecture |
US7937492B1 (en) | 2008-09-30 | 2011-05-03 | Juniper Networks, Inc. | LSP ping and traceroute for bypass tunnels |
US8255496B2 (en) * | 2008-12-30 | 2012-08-28 | Juniper Networks, Inc. | Method and apparatus for determining a network topology during network provisioning |
US8291468B1 (en) | 2009-03-30 | 2012-10-16 | Juniper Networks, Inc. | Translating authorization information within computer networks |
US8638799B2 (en) * | 2009-07-10 | 2014-01-28 | Hewlett-Packard Development Company, L.P. | Establishing network quality of service for a virtual machine |
US8724494B2 (en) | 2009-10-07 | 2014-05-13 | Riverbed Technology, Inc. | Network multi-path discovery |
US8369333B2 (en) * | 2009-10-21 | 2013-02-05 | Alcatel Lucent | Method and apparatus for transparent cloud computing with a virtualized network infrastructure |
US8566257B2 (en) * | 2010-04-26 | 2013-10-22 | International Business Machines Corporation | Address data learning and registration within a distributed virtual bridge |
US9160668B2 (en) * | 2010-05-03 | 2015-10-13 | Pluribus Networks Inc. | Servers, switches, and systems with switching module implementing a distributed network operating system |
US9300576B2 (en) * | 2010-05-03 | 2016-03-29 | Pluribus Networks Inc. | Methods, systems, and fabrics implementing a distributed network operating system |
US20110276963A1 (en) * | 2010-05-04 | 2011-11-10 | Riverbed Technology, Inc. | Virtual Data Storage Devices and Applications Over Wide Area Networks |
US8804719B2 (en) | 2010-06-29 | 2014-08-12 | Cisco Technology, Inc. | In-band multicast trace in IP and MPLS networks |
US9118591B2 (en) * | 2010-07-30 | 2015-08-25 | Broadcom Corporation | Distributed switch domain of heterogeneous components |
US8817593B2 (en) | 2010-11-01 | 2014-08-26 | Avaya Inc. | Method and apparatus providing failover for a point to point tunnel for wireless local area network split-plane environments |
US8509072B2 (en) | 2011-03-07 | 2013-08-13 | Comcast Cable Communications, Llc | Network congestion analysis |
US9141410B2 (en) | 2011-03-08 | 2015-09-22 | Rackspace Us, Inc. | Pluggable allocation in a cloud computing system |
US9042383B2 (en) | 2011-06-30 | 2015-05-26 | Broadcom Corporation | Universal network interface controller |
US8804490B2 (en) | 2011-07-29 | 2014-08-12 | Telefonaktiebolaget L M Ericsson (Publ) | Controller placement for fast failover in the split architecture |
JP6080313B2 (ja) * | 2011-08-04 | 2017-02-15 | ミドクラ エスエーアールエル | 仮想ネットワークを実装及び管理するシステム及び方法 |
US10091028B2 (en) * | 2011-08-17 | 2018-10-02 | Nicira, Inc. | Hierarchical controller clusters for interconnecting two or more logical datapath sets |
US8811212B2 (en) | 2012-02-22 | 2014-08-19 | Telefonaktiebolaget L M Ericsson (Publ) | Controller placement for fast failover in the split architecture |
US9571406B2 (en) | 2011-10-25 | 2017-02-14 | Vmware, Inc. | Network congestion management based on communication delay |
US9178808B2 (en) * | 2011-12-06 | 2015-11-03 | International Business Machines Corporation | Distributing functions in a distributed and embedded environment |
US9231864B2 (en) * | 2012-03-19 | 2016-01-05 | Intel Corporation | Techniques for packet management in an input/output virtualization system |
US9112804B2 (en) | 2012-05-31 | 2015-08-18 | International Business Machines Corporation | Network congestion notification preservation and modification during transmission of network data between physical network and virtual network |
US9094308B2 (en) | 2012-06-06 | 2015-07-28 | Juniper Networks, Inc. | Finding latency through a physical network in a virtualized network |
US9710762B2 (en) | 2012-06-06 | 2017-07-18 | Juniper Networks, Inc. | Dynamic logging |
US8959185B2 (en) | 2012-06-06 | 2015-02-17 | Juniper Networks, Inc. | Multitenant server for virtual networks within datacenter |
US9100289B2 (en) | 2012-11-02 | 2015-08-04 | Juniper Networks, Inc. | Creating searchable and global database of user visible process traces |
US9043526B2 (en) * | 2012-06-20 | 2015-05-26 | International Business Machines Corporation | Versatile lane configuration using a PCIe PIe-8 interface |
US8806025B2 (en) * | 2012-06-25 | 2014-08-12 | Advanced Micro Devices, Inc. | Systems and methods for input/output virtualization |
US8978031B2 (en) | 2012-08-21 | 2015-03-10 | International Business Machines Corporation | Processing of overlay networks using an accelerated network interface card |
US9602430B2 (en) * | 2012-08-21 | 2017-03-21 | Brocade Communications Systems, Inc. | Global VLANs for fabric switches |
US8996781B2 (en) * | 2012-11-06 | 2015-03-31 | OCZ Storage Solutions Inc. | Integrated storage/processing devices, systems and methods for performing big data analytics |
US9363172B2 (en) * | 2012-11-27 | 2016-06-07 | Red Hat Israel, Ltd. | Managing a configurable routing scheme for virtual appliances |
US9201681B2 (en) * | 2013-02-13 | 2015-12-01 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and controller device for quality of service (QOS) caching in a virtualized environment |
US9043501B2 (en) * | 2013-07-25 | 2015-05-26 | International Business Machines Corporation | Input/output monitoring mechanism |
-
2014
- 2014-06-19 US US14/309,629 patent/US9294304B2/en active Active
- 2014-12-09 CN CN201410751364.3A patent/CN104954247B/zh active Active
-
2015
- 2015-03-23 EP EP15160287.7A patent/EP2928136B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595648A (zh) * | 2012-08-17 | 2014-02-19 | 国际商业机器公司 | 用于在服务器的接收侧进行负载均衡的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2928136A3 (en) | 2016-01-20 |
EP2928136A2 (en) | 2015-10-07 |
US9294304B2 (en) | 2016-03-22 |
CN104954247A (zh) | 2015-09-30 |
EP2928136B1 (en) | 2020-05-06 |
US20150280939A1 (en) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104954247B (zh) | 用于数据中心覆盖网络的主机网络加速器 | |
CN104954253B (zh) | 用于数据中心覆盖网络的基于PCIe的主机网络加速器(HNA) | |
US10382362B2 (en) | Network server having hardware-based virtual router integrated circuit for virtual networking | |
CN104954252B (zh) | 在高性能、可扩展和无掉话的数据中心交换结构内的流控制 | |
US11412076B2 (en) | Network access node virtual fabrics configured dynamically over an underlay network | |
US20210320820A1 (en) | Fabric control protocol for large-scale multi-stage data center networks | |
Noormohammadpour et al. | Datacenter traffic control: Understanding techniques and tradeoffs | |
US20200169513A1 (en) | Fabric control protocol for data center networks with packet spraying over multiple alternate data paths | |
US11736402B2 (en) | Fast data center congestion response based on QoS of VL | |
CN203206278U (zh) | 通用网络接口控制器 | |
US9794185B2 (en) | Bandwidth guarantee and work conservation | |
US10419965B1 (en) | Distributed meters and statistical meters | |
WO2021052382A1 (zh) | 云业务的带宽管理及配置方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |