加速网络分组处理的制作方法

文档序号:28488919发布日期:2022-01-15 02:04阅读:60来源:国知局
加速网络分组处理的制作方法
加速网络分组处理
1.本技术为分案申请,其母案的发明名称为“加速网络分组处理”,申请日为2016年11月17日,申请号为201680075637.4。
2.本技术要求保护2015年12月22日提交的美国专利申请序列号14/977,810的优先权的权益,通过引用将其以其整体合并于此。
技术领域
3.本文所述实施例总体上涉及通过网络发送或接收的数据分组的处理。一些实施例涉及数据分组处理的硬件加速。


背景技术:

4.当硬件交换机与专门的硬件功能相结合时,该硬件交换机提供网络能力,包括分组交换、安全性、深度分组检查和其他能力。最近,已经出现了提供在大容量计算机架构上执行虚拟交换机和虚拟功能的趋势。业界一直致力于改善虚拟交换机之间的协调,以达到最佳地利用由硬件交换机提供的吞吐量益处连同虚拟交换机的灵活性和功率的目的。
附图说明
5.在不一定按照比例绘制的绘图中,相似的数字可以描述不同视图中的类似组件。具有不同字母后缀的相似数字可以表示类似组件的不同实例。绘图通常以示例的方式而非限制的方式来说明在本文档中讨论的各个实施例。
6.图1图示根据一些实施例的部署用于实施加速网络分组处理的多个交换平台的单个系统的组件。
7.图2图示根据一些实施例的部署用于实施加速网络分组处理的虚拟环境的系统的组件。
8.图3图示根据一些实施例的用来加速网络处理的控制设备。
9.图4图示根据一些实施例的用于加速网络分组处理的方法。
10.图5图示根据一些实施例的用于加速网络分组处理的系统。
具体实施方式
11.一些网络分组处理解决方案已将重点集中在硬件上,使用机架顶(tor)交换机和专用功能硬件来提供网络功能(包括分组交换、安全性、深度分组检查和其他功能)。然而,客户可能经历由硬件限制(诸如有限的存储器、有限的三态内容可寻址存储器(tcam)、减少的被支持数据流的总数等等)造成的降低的功能。此外,硬件交换机在分组解析方面可能过于严格并且硬件交换可能会展示出平台灵活性和可配置性的普遍缺乏。
12.因此,业界的趋势已提供软件定义网络(sdn)以用于使网络功能与底层硬件解耦,这可以帮助增加敏捷性并降低成本。类似地,网络功能虚拟化(nfv)可以用完全部署在软件中的实现来替换固定功能硬件,该软件在通用、基于标准的服务器、大容量服务器等等上更
成本高效地运行。然而,这种软件定义系统可能不会利用硬件交换机的某些合意的特性。
13.这些基于软件的解决方案包括对底层物理架构的各种各样的基于软件的抽象。例如,虚拟交换机允许一个或多个虚拟机(vm)彼此通信。虚拟网络功能(vnf)可以包括在一个或多个大容量硬件服务器架构、硬件交换机、硬件存储装置和/或云基础设施上执行的一个或多个vm(运行不同操作系统(os))。vnf过程用来提供取代定制网络设备的专门网络处理。
14.各种各样的应用编程接口(api)和软件平台都存在于用于准许利用虚拟交换机的网络自动化的行业中。这些方法的一个显著好处是用来在操作系统(os)的用户级定义和定制分组处理规则和对应动作的能力。这些方法的一个问题是底层物理硬件交换机的利用不足,因为大量的规则匹配和分组处理的动作标识是在os的内核空间内进行的,并且不是在底层硬件交换机上进行的,该底层硬件交换机具有显著更好的处理吞吐量。
15.与更好地利用底层交换机架构相关联的一种方法是单根输入/输出(i/o)虚拟化(sr-iov)。在sr-iov的情况下,提供了允许设备适配器在分组处理功能之间分离硬件资源的接口。然而,这是一种二进制方法,在这种情况下特征是:接通或断开。此外,sr-iov激活改变了该架构的配置和管理。因此,sr-iov是分组处理“卸下”解决方案,而不是分组加速解决方案。
16.实施例提供了一种用来加速现有虚拟交换机解决方案的方式,以便更好地利用底层物理交换机硬件,而不改变或修改现有虚拟交换机解决方案如何与设备管理和配置的上层交互。
17.分组处理以细粒度的方式协调并管理多个数据平面组件,以利用硬件交换和sdn/nfv使用二者的合意特征。控制平面组件包括用来确定通信量(例如,数据分组或流)应该指向哪里的机制,而数据平面组件包括向这些目的地转发通信量的机制。实施例提供了用来加速针对多个数据平面组件的分组处理的控制平面方法、系统和设备。除了其他组件之外,该数据平面组件可以包括(以非限制示例的方式)数据平面开发套件(dpdk)组件、现场可编程门阵列(fpga)组件和从加州圣克拉拉的英特尔可得到的red rock canyon(rrc)/fm10k交换组件。根据各个实施例的方法可以基于用户定义的和用户配置的动作以动态且灵活的方式协调这些和其他组件的利用,以减少或最小化能量消耗或提高速度和性能。在实施例中,控制平面可以从基于软件的交换机或虚拟交换机卸下简单的快速分组处理流水线来交换硬件,同时在基于cpu的软件数据平面上提供更复杂的处理。
18.图1图示部署用于实施根据一些实施例的方法的多个交换平台的单个网络100的组件。实施例的说明仅仅呈现领会所描绘的实施例所必需的那些组件,以使得在不偏离本文中的教导的情况下其他组件是可预见的。
19.该系统100实施在现有的基于软件的分组处理流水线(一系列分组处理阶段)中具有增强匹配动作加速的技术,以用于优化的增加带宽、更低的延迟和抖动、以及更低的中央处理单元(cpu)消耗。匹配动作处理指的是系统100通过其来实现分组处理加速的机制。在系统100中找到的匹配动作资源执行该加速。现有的基于软件的控制平面101和102(诸如openstack、opendaylight等等)不需要修改以便实现本文中提出的加速。此外,不需要修改诸如半虚拟化(virtio)113和133的现有的虚拟化构造(提供虚拟环境管理)来使用系统100下面的架构,其包括对分组加速的优化。
20.不存在需要用户学习的附加接口或控制平面以便实现本文中呈现的关于设备(诸
如由vnf 110、120和130管理的vm)之间加速分组处理/通信的优化。
21.具体来说,网络接口控制器(nic)提供一个或多个新颖的物理功能(pf 141)和一个或多个虚拟函数(vf 142和143)。这些功能141-143响应于一个或多个新颖的匹配动作(例如p4)表,并与现有控制平面101和102以及它们的现有api命令协作,以用于通过将基于软件的匹配动作网络分组处理卸下至nic 140的底层交换架构来执行vnf(110、120和130)之间的增强的网络分组处理。该处理在tcam内的nic 140、pf 141和/或vf 142和143上的操作系统(os)内核堆栈115的下面发生。
22.功能141-143提供:1)虚拟交换机(vswitch)加速118,2)vswitch卸下126,3)vnf加速124,4)半虚拟化(虚拟化(vm))加速135。
23.要指出,虽然系统100描绘了支持四种类型的加速(118、124、126和135)的功能141-143;但并不一定在每个实例中都是如此。也就是说,在其他实施例中,nic可以实施四种类型的加速 (118、124、126和135)中的一种和/或配置为支持四种类型的加速 (118、124、126和135)的所有或各种组合。
24.通过匹配动作处理的功能(141、142和143)和支持的四种类型的网络分组加速(118、124、126和135)如下(参考图1的系统100)。
25.要指出,vnf 110被编程用于(在系统100的底层硬件上)处理各种各样的软件,诸如并且以示例的方式,网络应用111(执行一个或多个专用网络分组处理操作)、数据计划开发套件122(dpdk 122)api和虚拟化服务(半虚拟化 113)。vnf 120包括网络应用121、dpdk api选项122和nic vf驱动器123。vnf 130包括网络应用131、dpdk api选项132和虚拟化服务(半虚拟化123)。
26.vnf 110、120 和130位于vswitch 114上方。vswitch 114位于内核堆栈115上方。通过vswitch的访问用于通过链路117来匹配和访问pf 141。由vnf 120的nic vf驱动器123的用于访问vf 142的访问通过链路125 (用于通过vf 142的直接tlv查找)。用于由vnf 130的半虚拟化实例133对vf 143的访问通过链路134和137一直到136,用于半虚拟化tlv驱动查找表134和匹配tlv查找表137的访问直接到vf 143。
27.vswitch加速。
28.通过采用响应于匹配动作表(例如(一个或多个)p4文件)而生成的元数据,发生对于vswitch 114的分组处理流水线的加速。
29.p4文件描述匹配动作流水线的能力。在一个实施例中,匹配动作表的结构是(由p4.org开源编程语言和格式定义的)p4文件,其是:[解析器]-[入口服务质量(qos)]-[过滤]-[隧道/网络地址转换(nat)]-[复制]-[出口qos]。
[0030]
在一个实施例中,解析器也是p4格式。这也提供了用于匹配的帧格式(分组有效负载格式)。
[0031]
此外,p4提供了用于定义匹配文件的机制。文件的非线性设置可以如下显现:
l1l2l3l4》l5源端口目的地介质访问控制(dmac)源互联网协议(ip)目的地l4虚拟网络索引(vni)源虚拟端口源介质访问控制(smac)目的地ip(4/6)源l4网络服务报头(nsh)路径 以太网协议传输控制协议(tcp)nsh服务 最外面的虚拟局域网(vlan)
ꢀꢀ
l4tcam

第二最外面的vlan
ꢀꢀꢀꢀ
最外面的多协议标记交换(mpls)
ꢀꢀꢀꢀ
第二mpls
ꢀꢀꢀ
[0032]
解析树还识别用于内部报头隧道封装的帧的格式:内部报头内部l2内部l3内部l4vnidmac源ip(4/6)目的地l4 smac目的地ip(4/6)源l4 以太网协议
ꢀꢀ
最外面的vlan
ꢀꢀ
[0033]
p4还提供一种用于指定所支持的动作以及哪些表支持哪些动作的机制。一组非限制性动作示例可以如下:
基本动作修改动作隧道/nat动作复制计数设置vlan/vpri虚拟可扩展局域网(vxlan)镜像准许/否定/丢弃压入vlan解封vxlan多播转发至端口弹出vlan封装nsh样本转发至虚拟端口设置差分服务代码点(dscp)解封nsh 跨端口传播路由
ꢀꢀꢀ
set_soft_id
ꢀꢀ
[0034]
使用元数据的vswitch加速。
[0035]
主机以太网控制器(例如nic 140)首先在系统100上处理接收到的-接收到的帧,并且然后主机以太网控制器将处理后的帧一直传递到系统100的各个软件层中以用于进一步附加处理。在接收路径上,以太网控制器可以预处理帧并与帧附加元数据相关联。该预处理的语义是基于匹配动作的。下面的示例说明了利用本文中给出的实施例通过其来使vswitch 114(诸如开放的vswitch(ovs)114)流水线处理加速的处理。
[0036]
tcam预分类。
[0037]
主机控制器将接收到的分组帧推送到流水线中的tcam中。vswitch 114将一组匹配规则编程到tcam中(使用并且存在vswitch 114的api,诸如与ovs相关联的api)。这导致设置包括tcam查找的结果的一定数量的元数据。在匹配时,pf 141将结果(额外的元数据以及或者在封装的vlan中或者在soft_id_value中)附加到接收到的帧中。软件流水线使用嵌入在接收到的帧中的元数据中的该结果,并且可以避免在软件流水线内必须实现该tcam查找。
[0038]
在一个实施例中并且在ovs(114)的情况下,对ovs 114的增强补丁检测分组中的该添加的元数据。如果分组报头中不存在元数据,则ovs 114继续进行其正常的处理路径。然而,当分组报头中存在元数据时,ovs 114跳过117其流水线内的其典型的基于软件的tcam查找处理(在ovs 114处理分组之前,pf 141先前已将tcam查找结果附加到nic 140内的指示)。
[0039]
隧道解封。
[0040]
主机控制器140接收帧,vswitch 114对将外部vxlan、vxlan-通用协议扩展(gpe)+nsh、通用网络虚拟化封装(geneve)或使用通用路由扩展的网络虚拟化(nvgre)报头映射到元数据中的规则编程。在一个实施例中,pf 141处理这些规则,以用于:1)匹配外部报头上
的规则(l2、l3、vni和服务报头);2)对已匹配的外部报头解封,和3)添加一些附加元数据以用于信令传送被移除的报头。该流水线处理检测被移除的外部报头并且相应地处理内部报头。
[0041]
在ovs 114(vswitch 114)的情况下,pf 141使用结合tcam预分类处理的解封处理以用于提供关于外部报头的元数据以及关于在tcam中匹配的规则的元数据。当结合使用时,将tcam预分类规则应用于内部报头。
[0042]
vswitch点击(tap)。
[0043]
点击接口可被用于通过拷贝(与该接口相关联的)一些或所有帧并将该帧发送到不同位置来监视分组处理。这不适当地使系统100的软件和硬件资源受到压力,并且对vswitch114处理具有侵入性。因此,在本文中呈现的教导在这种场景特别有益。系统100使用在匹配动作表中映射至镜像动作的匹配规则来实现该拷贝,这是nic 140内的功能(141-143)过程。
[0044]
在一个实施例中,vswitch 114发送帧并且然后在帧出现之后发生用于加速流水线中的多播复制、隧道封装和监视的过程。以这种方式,在分组的传送期间发生分组加速的执行。
[0045]
vswitch卸下。
[0046]
当对于给定的一组通信量(通过系统100处理的网络分组)以下条件为真时,vswitch卸下126是vswitch加速118的扩展:1)加速流水线具有至(与vnf 120内管理的通信量相关联的)vm的直接连接125;以及2)加速流水线具有用来利用所有相同的规则来完全处理通信量的能力(vswitch 114数据平面处理的那些)。
[0047]
尽管被标识为“卸下”,但是vswitch 114内的规则绝不离开vswitch 114;在这里,处理将规则推送并拷贝到加速流水线中,并将针对这些规则的统计信息推送回到vswitch 114,使得规则保留在软件表中。vswitch卸下126可能发生的情况的常见配置是在使用ovs 114来实施规则时。规则由单独的控制平面软件层来应用;例如openstack和opendaylight(例如第三方api 101和102)。控制流程如下:1)隧道管理器列举虚拟交换机(图1中未示出vswitch 114的多个实例),并且在它们之间创建处于完整的网格拓扑的隧道(每个vswitch连接到每个其他vswitch)。要指出,在一些实施例中,当vswitch需要彼此对话时,就会出现隧道的创建(延迟处理方式)。2)当两个vm/容器想要彼此连接时(来自vnf110-130),至vm/容器相应vswitch的转发规则的填充发生。某些系统将经由虚拟l2学习来填充这些规则;其他系统将规定直接来自于集中控制器的规则。
[0048]
除了(如上所讨论的)隧道规则之外,vswitch 114可以实施访问控制列表(acl)、服务功能分类、服务功能转发、基本入口qos和连接跟踪。
[0049]
vnf加速。
[0050]
在vswitch加速118和vswitch卸下126二者中,vswitch 114正在主机系统100中执行并且对于系统100相关联的底层设备具有完全控制以进行加速处理。在这里,连接的vm/容器对“来自网络的”任何种类的加速不具有任何控制。vm/容器对vswitch 114内发生的那
些不具有任何控制。vnf 120使用与vswitch 114针对以下各项的相同语义:发现哪些表可用,在每个表中有多少个条目可用,以及将什么匹配动作规则用于应用。然而,vnf 120的约束以下面的方式发生:1)主机系统100信任vnf 120以实现加速(否则,主机系统100不能批准来自vnf 120的请求)。2)应用或vnf的规则发生在发送给该vnf 120或从该vnf 120接收的通信量上。因此,vnf加速124的重点是在将该通信量发送到vnf 120之前对通信量进行整饰(groom)。因此,vnf 120不能添加规则来影响去到/来自其他vf (例如vf 143)、其他pf 141或物理上行链路端口的通信量。3)vnf 120不具有超出其自身接口的可见性。因此,vnf 120不能添加影响去到/来自其他vnf (110和/或130)、pf 141、vf 141和143或物理上行链路端口的通信量的规则。4)vnf 120可能不具有对其可用的相同动作集。也就是说,vnf功能通常限于与vnf 120相关的功能,诸如acl(丢弃、计数和监管)、将分组引导至队列、将分组按优先级排序到队列,以及用元数据标记分组以进行预处理。
[0051]
在一个实施例中,vnf 120具有与该vnf 120相关联的多个队列。以以下方式来对vnf 120编程(使用例如数据计划开发套件122(dpdk 122)api):1)配置默认的接收站点缩放(rss)规则以便跨多个队列中传播通信量。在这里,vnf 120可以为每个队列关联一个cpu核以跨多个流缩放分组处理。2)配置充当rss默认传播规则的例外的一组flowdirector
®ꢀ
(intel
®
分组引导产品)规则,其将具体流类型和兆流放置到具体流或给定的具体优先级中。当rss不能有效地用rss传播时,flowdirector
®
的配置帮助处理该通信量。flowdirector
®
的该配置还帮助处理高优先级的通信量。3)配置一组用来丢弃或监管通信量的过滤规则。这可以保护vnf 120免受不想要的通信量的影响,或者防止以太高的速率接收通信量。4)以类似于vswitch加速118的方式,vnf 120还可以基于匹配动作规则关联流上的16位软件标识符(id)。
[0052]
这可以加速vnf 120内的某些转发路径(诸如tcam处理)。
[0053]
半虚拟化加速。
[0054]
半虚拟化加速度135是vswitch卸下126的一个变体,它仍然要求系统100的硬件能够完全转发和执行分组以处理帧,但是vnf 130/vm和底层硬件(134和137)之间不存在直接连接。相反,vnf 130与半虚拟化驱动器136连接(经由软件)。在这种场景下,存在软件循环(这可能是使用dpdk netdev的ovs,或拷贝去到/来自vf 143的帧以及vf 130/vm内的半虚拟化队列的一些其他实体。所呈现的利用dpdk netdev来实施ovs的场景如下。
[0055]
参考图2提供半虚拟化加速的讨论。
[0056]
尽管图2的实施例在半虚拟化的情境内,但是可利用任何可用的虚拟化管理系统来部署其他实施例。
[0057]
图2图示根据一些实施例的部署用于实施加速设备间通信的虚拟环境(诸如半虚拟化)的系统200的组件。实施例的说明仅仅呈现认识所描绘的实施例所需的那些组件,以使得在不偏离本文中的教导的情况下其他组件是可预见的。
[0058]
再次地,系统200图示了许多vnf (210、220和230),每个vnf都具有网络应用(211、221和231)、dpdk选项api(212、222和232)和半虚拟化的实例(虚拟化管理服务-213、223和233)。连接到相应vhost(241、242和243)的每个半虚拟化实例(214、223和233)都具有经由214、224和234用于半虚拟化tlv查找的能力。
[0059]
vhost(241、242和245)位于具有vswitch 240和由dpdk 244提供的服务的os中。内核堆栈250位于vswitch 240和dpdk 244下的os中。内核堆栈250具有至pf 261的直接访问并且dpdk 244和vswitch 240具有至vf 262-265的直接访问。匹配tlv查找配置通过266-268发生。链路251提供卸下到pf 261的操作,pf 261和vf 262-265是nic 260的部分。
[0060]
在ovs下面,发生n个(其数目)dpdk netdevs(linux虚拟非动作netdevs-用于获得状态和能力的函数)的实例化。每个netdev都对应于硬件内的一个vf(诸如vf 261和262)。于是ovs下面的端口的布置看起来如下:1)附接为至ovs内核数据路径的规则非dpdk的pf加速端口。当流需要通过内核的处理时(需要tcp、ip表等等),使用这些接口。2)(一个或多个)默认规则vf:在0个vf和4个vf之间,可访问用于将帧(其是不能被转发的被处理分组)发送至dpdk用户空间流水线以用于处理的硬件。这些vf(诸如vf 142和143)具有与pf 141端口类似的功能,除了分组处理数据平面在dpdk中(具有更高性能但是不具有内核堆栈)。
[0061]
在一个实施例中,如果从加州圣克拉拉的intel
®
可得到的底层red rock canyon(rrc)交换组件在vf(142或143)上可以支持50g带宽,其中通过将来自不同pf 117的多个vf(142和143)连接到半虚拟化队列来分配带宽的附加指派。
[0062]
3)半虚拟化别名(alias)vf:剩余的vf(图2的142或143或261-265)被用作半虚拟化别名端口并且在dpdk用户空间轮询模式驱动器(pmd)的控制下。
[0063]
当发生新的vnf 130/vm至ovs的附接时,该vf 130的分配作为半虚拟化别名vf而出现。当这发生时,具有dpdk netdev的ovs在其虚拟host(vhost)实现和半虚拟化别名vf之间实现一组“硬件卸下虚拟(hov)”路径。软件逻辑的安装如下:1)如果已将关于来自该vnf 130/vm的分组的所有规则放入硬件中,则来自vhost的零拷贝直接进入对应半虚拟化别名vf。2)否则,如果已将关于来自该vnf 130/vm的分组的部分规则集合放入硬件中,则通过ovs用户空间流水线处理该帧,并在完成时将该帧推送到对应的半虚拟化别名vf中。3)否则通过ovs分组处理流水线来传递分组。可以经由pf netdevs(将帧直接转发到端口外部)、或经由dpdk vf 130(在这种情况下由硬件选取使用其下面的嵌入式交换机或经由内核nic接口(knic)推送到内核中进行处理的传输上行链路)来将分组发送到网络中。4)在其他方向上,将在半虚拟化别名vf上接收到的所有分组直接从硬件发送到hov路径上的软件半虚拟化队列(经由vhost)中(在一个实施例中,第三方应用可以提供用于这样做的零拷贝实现)。
[0064]
在硬件中,逆路径的探究发生并且该处理看起来类似于以下各项:1)如果发生了来到该vf 130/vm的分组的所有规则的应用,则将帧转发至对应于该vm的vf 130。pmd拾取该帧并通过hov路径将该帧推送到vm。
2)如果发生了关于该分组的部分规则集合的应用,或者如果该分组在硬件表中丢失,则将帧转发至默认规则vf以用于处理。这些帧被pmd拾取并且在dpdk用户空间流水线中被处理。3)可选地,需要内核处理的具体流被捕获到标准内核处理的pf 141。
[0065]
在对硬件进行编程时,在半虚拟化别名、默认用户空间和内核数据路径之间划分通信量的规则保留会话排序。这是不会经由一条路径转发特定5元组(目的地ip、源ip、l4目的地、l4源、协议)并且然后通过另一条路径转发具有相同5元组的另一帧的一条规则。
[0066]
在软件侧上使用的逆处理:vhost在直接来自于半虚拟化别名、dpdk用户空间和内核数据路径的帧之间进行仲裁。由于这些已经处于会话顺序,所以仅仅处理调度功能。半虚拟化别名具有最高的处理优先级,之后是dpdk用户空间并且然后是内核路径。
[0067]
在该场景中,vnf 130可以通过经由半虚拟化发送标记长度值(tlv)来请求加速。如果该vnf 130具有带别名的vf,则这些tlv通过vf邮箱转换为vnf加速请求。因为该原因并且在一个实施例中,配置提供了对多队列半虚拟化的支持,因为这允许vnf 130启用rss和flowdirector
®
,以便将通信量传播到vm内的多个队列。对于使用多个核的vnf,这允许硬件将通信量传播到多个核,从而vnf 130与vf 130之间的连接看起来是直接连接。
[0068]
在其中dpdk或内核数据路径完全处理该通信量的场景中,通过系统100的处理以两种方式发生:1)内联:用来处理帧的第一数据路径(来自网络的硬件分组,用于来自vhost的分组的软件)可以最小化地处理该帧并将其发送到主数据平面(用户空间、内核或硬件)。这是一种在数据路径之间进行选择的非常有效的机制,因为它不会在数据路径之间“反弹”帧,但它确实需要通过第一数据路径的一定量的处理。该第一数据路径可以是冗余的或者是除了进行该处理的主数据路径之外的开销。2)回弹:在该场景中软件“快速路径”帧进入硬件,如果该硬件不能处理帧自己,然后它将帧回环返回到dpdk或内核。这具有较低量的软件开销,但当帧从硬件反弹回到软件中时,利用额外的外围组件互联高速(pcie)带宽。
[0069]
在一个实施例中,上面提到的技术被实施为用于实现加速的设备间通信或操作(诸如针对单个设备架构的片上vm件通信)的计算设备架构的方法、设备和系统。这为以下各项中的一个、所有或组合提供加速: 1)使用元数据的vswitch加速,2) 用于半虚拟化连接的vm的卸下的vswitch,3) 用于nsh服务链的卸下的vswitch、和/或4)多层通信量预分类(vnf加速和nsh服务链)。
[0070]
下面参考图3-5给出加速设备间通信的这些和其他实施例。
[0071]
图3图示根据一些实施例的用来加速网络处理的控制设备300。该控制设备300包括存储器301、具有指令303的处理器302、交换接口304、一个或多个数据平面接口305。该控制设备300与交换硅310交互(通过交换接口304)并且与一个或多个数据平面处理器320交互(通过(一个或多个)数据平面接口305)。
[0072]
在一个实施例中,该控制设备300是nic。
[0073]
在一个实施例中,该控制设备300是图1的nic 140。
[0074]
在一个实施例中,该控制设备300是图2的nic 260。
[0075]
在一个实施例中,该控制设备300被集成在多核处理器中和/或接口连接至多核处
理器。在一个实施例中,该多核处理器是服务器。
[0076]
在一个实施例中,该控制设备300在具有各种各样的vm、操作系统等的多个异构和虚拟化处理环境中操作。
[0077]
该控制设备300包括用来执行本文中描述的功能的处理器302。将要理解,处理器302所执行的任何或所有功能都可以在一个或多个处理核(例如intel
®
架构核114或控制设备300的核)上利用硬件、软件、固件或其任何组合来执行。
[0078]
在一个实施例中,该处理器302执行上面关于图1的pf 141和vf 142和143所述的处理。
[0079]
在一个实施例中,处理器302执行上面关于pf 261和vf 262-265所述的处理。
[0080]
在一个实施例中,处理器302可以使从表中引用的动作匹配至网络分组中的一部分数据。
[0081]
在一个实施例中,处理器302至少部分由应用编程接口(api)来编程。在一个实施例中,以由dpdk、ovs、opendaylight和openstack中的一个或多个所支持的格式来提供api。
[0082]
在一个实施例中,处理器302被编程为响应于一个或多个表或文件,该表或文件标识处理器302所响应的动作,以达到基于特定标识的动作来执行预定义处理的目的。
[0083]
在一个实施例中,用户接口允许用户访问api以便利用动作来填充表或文件。
[0084]
在一个实施例中,该文件或表是上面参考图1-2讨论的匹配动作文件。
[0085]
该处理器302可以将来自文件/表的动作引用匹配到用于接收到的网络分组的分组报头的一部分。该处理器302与存储器301协作地处理由动作引用标识的动作,以加速用于网络分组的分组处理流水线。
[0086]
在一个实施例中,该存储器301是控制设备300上的随机存取存储器(ram)。
[0087]
处理动作不一定是单个操作;相反,该动作可以触发处理器302来执行一系列预定义的操作。
[0088]
在一个实施例中,该处理器302在处理动作时对某些分组数据执行三元cam查找。上面在图1-2中讨论了这一点,并且其与使用在nic处执行的分组预分类处理的加速具体相关。
[0089]
在一个实施例中,该处理器302在处理动作时解封用于网络分组的外部隧道封装报头,移除该报头,并将指示报头已被移除的元数据添加到报头中。上面参考图1讨论了该处理。
[0090]
在一个实施例中,该处理器302在处理动作时拷贝来自网络分组的分组有效载荷(帧),并且然后将该拷贝的有效载荷发送至网络位置,该网络位置独立于在用于处理分组处理流水线的资源内定义或标识该资源的网络位置。该场景描述了在处理吞吐量中具有显著改善的网络通信量镜像和监视操作,因为在控制设备300上而不是在网络架构内的上层(诸如用于具体vm的os层等等)处发生针对镜像分组的解析、处理和发送。
[0091]
在一个实施例中,该处理器302在处理动作时将网络分组转发规则从第一虚拟交换机拷贝到第二虚拟交换机。上面讨论的场景参考了vswitch卸下加速和图1的讨论。
[0092]
该处理器302被配置为通过交换接口304与底层交换硅310通信。
[0093]
图4图示根据一些实施例的用于加速网络分组处理的方法400。该方法400被实施为通过一个或多个软件模块(在下面这里的方法400被称为“分组加速器”)表示且由来自非
瞬时计算机可读存储介质的一个或多个硬件处理器执行的可执行指令。
[0094]
在一个实施例中,表示分组加速器的可执行指令被存储在非瞬时计算机可读存储介质上,当由一个或多个计算设备执行时执行方法400处理。
[0095]
在一个实施例中,该分组加速器被配置用于作为nic上的固件的执行。在一个实施例中,该分组加速器是图1的pf 141。在一个实施例中,该分组加速器是图1的(一个或多个)vf 142和/或143。在一个实施例中,该分组加速器是图2的pf 261。在一个实施例中,该分组加速器是图2的(一个或多个)vf 262-265。
[0096]
在一个实施例中,该分组加速器被配置用于在一个或多个虚拟交换机、一个或多个物理交换机、一个或多个设备接口、一个或多个虚拟设备接口和/或一个或多个操作系统内的执行。
[0097]
在一个实施例中,该分组加速器被配置用于在一个或多个独立且虚拟环境内的执行(分别在图1和图2的系统100和/或系统200上的执行)。
[0098]
在一个实施例中,该分组加速器被配置用于如图3的控制设备300的执行。
[0099]
在410处,分组加速器使网络数据分组的一部分匹配至匹配动作表中的动作。例如,在上面的图1中讨论了匹配动作文件的处理和文件结构以及匹配至网络分组。
[0100]
在420处,该分组加速器通过执行作为针对网络数据分组的分组处理流水线的一部分的动作来加速网络分组通过机器的处理。即,动作处理以可包括用于以下各项的处理的许多方式来加速分组处理:1)将基于软件的资源的处理卸下到基于硬件的资源;2)重新组织基于软件的资源的处理;和/或3)重新组织基于软件的资源如何访问基于硬件的资源。
[0101]
根据一个实施例,在421处,分组加速器将元数据作为当动作被处理时分组处理的一部分已经被处置/处理的指示插入到网络数据分组中。例如,上面在图1-2中呈现的预分类处理和tcam处理提供与该处理有关的讨论。
[0102]
在一个实施例中,在422处,该分组加速器拷贝用于网络数据分组的分组帧并且将已拷贝的分组帧发送至独立于与分组处理流水线相关联的位置的位置。这是上面参考图1讨论的分组镜像处理情况。
[0103]
在一个实施例中,在423处,分组加速器向与具体处理核相关联的队列指派网络数据分组。这可能需要其他配置依赖性和上面利用图2的半虚拟化加速处理的讨论而呈现的处理。
[0104]
在423和424处的一个实施例中,该分组加速器响应于过滤规则对网络分组过滤。
[0105]
在424和425处的一个实施例中,该分组加速器在网络数据分组上设置资源标识符,其标识当通过分组处理流水线来处理网络数据分组时用于针对网络数据分组来处理的资源。因此,表、元数据和/或分组处理流水线控制结构提供了一种机制,通过该机制不同的异构软件和/或硬件资源帮助通过分组处理流水线((一个或多个)网络/设备)来使网络数据分组加速,以及这些机制被标识为用于网络数据分组的资源标识符。该分组加速器被配置用于标识资源标识符并促使对应的资源进行处理以用于使分组通过(一个或多个)网络/设备的分组的流水线处理加速。
[0106]
在一个实施例中,在426处,该分组加速器依据通信量规则是否被完全卸下到硬件或其他状况来执行各种各样的替换处理。参考图2的半虚拟化假设来讨论这样的状况。因此,该分组加速器可以:1)用于将网络数据分组处理成带别名的虚拟化功能的零拷贝规则;
2)通过os的用户空间并且当已完成将帧推送到带别名的虚拟化功能时处理用于网络数据分组的帧;或3)使网络数据分组传递通过针对os的用户空间流水线。
[0107]
如本文中讨论的示例可以包括逻辑或许多组件、模块或机制,或者可以在该逻辑或许多组件、模块或机制上操作。模块是能够执行具体操作的有形实体(例如硬件)并且可以以某一方式来配置或布置。在一个示例中,可以以具体方式将电路布置为模块(例如内部地或关于诸如其他电路的外部实体)。在一个示例中,可以通过固件或软件(例如指令303(图3)、应用部分或应用)将控制设备300的一个或多个处理器或者一个或多个计算机系统(例如独立、客户端或服务器计算机系统)的至少一部分配置为操作用来执行具体操作的模块。在一个示例中,该软件可以驻留在至少一个机器可读介质上。在一个示例中,当被模块(例如控制设备300)的底层硬件执行时,该软件可以包括用来促使硬件执行具体操作的指令303(图3)。
[0108]
术语“模块”被理解成包括有形实体,该有形实体是被物理构造、具体配置(例如硬连线)、或临时(例如瞬时)配置(例如编程)为以具体方式操作或执行本文中描述的任何操作的至少一部分的实体。考虑到在其中模块被临时配置的示例,不需要在时间上的任何一个时刻来对模块实例化。例如,在模块包括使用软件配置的通用硬件处理器的情况下,该通用硬件处理器可以在不同时间被配置为相应的不同模块。软件可以相应地配置硬件处理器,以例如在一个时间实例构成特定模块并且在不同的时间实例构成不同模块。在本文中可扩展地使用术语“应用、过程或服务”或者其变体以包括例程、程序模块、程序、组件等等,并且可以在各个系统配置(包括单个处理器或多处理器系统、基于微处理器的电子器件、单核或多核系统、其组合等等)上实施。因此,术语“应用、过程或服务”可以被用来指代软件的实施例或被布置成执行本文中描述的任何操作的至少一部分的硬件。
[0109]
尽管机器可读介质可以包括单个介质,但是术语“机器可读介质”可以包括单个介质或多个介质(例如集中式或分布式数据库、和/或相关联的高速缓存和服务器)。
[0110]
术语“机器可读介质”可以包括能够存储、编码或载送用于由机器(例如控制设备300或任何其他模块)执行的指令303并促使机器执行本公开内容的技术中的任一个或多个或者能够存储、编码或载送由这样的指令使用或与这样的指令相关联的数据结构的任何介质。换言之,该处理器302(图3)可以包括指令并且因此可以在各个实施例的上下文中被称为计算机可读介质。其他非限制性机器可读介质示例可以包括固态存储器、和光学以及磁性介质。机器可读介质的具体示例可以包括:非易失性存储器,诸如半导体存储器设备(例如电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、和闪速存储器设备);磁盘,诸如内部硬盘和可移除盘;磁光盘;和cd-rom和dvd-rom盘。
[0111]
可以使用利用许多传输协议(例如帧中继、互联网协议(ip)、tcp、用户数据报协议(udp)、超文本传输协议(http)等等)中的任一个的传输介质来通过通信网络进一步传送或接收该指令303。示例通信网络可以包括局域网(lan)、广域网(wan)、分组数据网(例如互联网)、移动电话网(例如包括码分多址(cdma)、时分多址(tdma)、频分多址(fdma)和正交频分多址(ofdma)以及蜂窝网络(诸如全球移动通信系统(gsm)、通用移动电信系统(umts)、cdma 2000 1x*标准和长期演进(lte)的信道访问方法)、普通旧电话(pots)网络、和无线数据网络(例如包括ieee 802.11标准(wifi)、ieee 802.16标准(wimax
®
)和其他的电气与电子工程师协会(ieee)802标准家族)、端对端(p2p)网络、或现在已知或稍后开发的其他协议。
[0112]
术语“传输介质”应该被理解为包括能够存储、编码或载送用于由硬件处理电路系统执行的指令且包括数字或模拟通信信号的任何无形介质、或用来促进这样的软件的通信的其他无形介质。
[0113]
图5图示根据一些实施例的用于加速网络分组处理的系统500。以大大简化的格式示出的系统500仅仅具有用于领会系统500所必需图示的特定组件。
[0114]
在一个实施例中,该系统是多核服务器510。
[0115]
在一个实施例中,该多核服务器510被配置用于以上面参考图1讨论的方式来执行vswitch加速。
[0116]
在一个实施例中,该多核服务器510被配置用于以上面参考图1讨论的方式来执行vswitch卸下加速。
[0117]
在一个实施例中,多核服务器510被配置用于以上面参考图1讨论的方式来执行vnf加速。
[0118]
在一个实施例中,多核服务器510被配置用于以上面参考图1和/或2讨论的方式来执行半虚拟化加速。
[0119]
在一个实施例中,多核服务器510被配置用于以上面参考图1和/或2讨论的方式来执行针对以下各项的有选择的网络分组加速:vswitch加速、vswitch卸下加速、vnf加速和/或半虚拟化加速。
[0120]
该系统500包括用于使网络分组的一部分匹配至动作的装置和用于处理该动作以加速分组处理流水线的装置,以及可选地用于配置用于匹配的装置和用于处理的装置的装置。
[0121]
该装置用于在网络分组处理期间使网络分组一部分匹配至动作。
[0122]
在一个实施例中,用于匹配的装置包括匹配动作表521或文件,诸如上面参考图1讨论的p4文件。
[0123]
在一个实施例中,用于匹配的装置包括存储器,诸如图3的存储器301。
[0124]
在一个实施例中,用于匹配的装置包括nic上的易失性或非易失性存储器,诸如相应地图1和图2的nic 140或260。
[0125]
在一个实施例中,用于匹配的装置包括可在表示系统500的一个或多个设备上访问的易失性或非易失性存储器。
[0126]
在一个实施例中,用于匹配的装置包括可在表示系统500的一个或多个设备上访问的存储器和存储装置的组合。
[0127]
用于处理的装置被配置成处理(从用于匹配的装置获得的)动作。该动作被处理来使针对网络分组的分组处理的流水线(其与该网络分组相关联或被指派给该网络分组)加速。
[0128]
在一个实施例中,用于处理的装置是以下各项中的一个或多个:一个或多个设备驱动器接口540、一个或多个虚拟接口540、一个或多个虚拟交换机550、一个或多个os内核处理(560)、和/或具有物理交换机570的nic。
[0129]
在一个实施例中,用于处理的装置是在图1、2和/或3中图示的组件设备和模块的各种组合。
[0130]
在一个实施例中,该系统500包括用于将用于处理的装置配置成用户自定义(或用
户定义)动作的装置。
[0131]
在一个实施例中,用于配置的装置是api 520。在一个实施例中,该api 520是使用利用ovs、dpdk、openstack、opendaylight和/或半虚拟化提供的api在图1和2中图示的组件的具体配置的实例。
[0132]
在一个实施例中,用于配置的装置还提供用于配置用于匹配的装置的装置。在一个实施例中,api 520是用于配置的装置并且准许为匹配动作表/文件521中的动作建立文件的表。
[0133]
附加注释和示例:示例1包括包含存储器和处理电路系统的主题(诸如控制设备、平面间控制设备、控制平面处理器、计算机设备和或任何其他电气装置、设备或处理器)。该处理电路系统被配置成使来自表的动作引用匹配至网络数据分组中的数据的一部分。该处理电路系统被进一步配置成与使针对网络数据分组的分组处理流水线加速的存储器协作地处理通过动作引用标识的动作。
[0134]
在示例2中,示例1的主题可以可选地包括其中当处理电路系统处理该动作时,该处理电路系统被进一步配置成在数据的该部分上执行三元cam查找并且根据网络数据分组的预分类将来自查找的结果插入网络分组中。
[0135]
在示例3中,示例1-2的任一个的主题可以可选地包括其中当处理电路系统处理该动作时,该处理电路系统被进一步配置成解封网络数据分组的外部隧道封装的报头,从网络数据分组移除隧道封装的报头,以及将元数据添加到用于指示从网络数据分组移除了隧道封装的报头的网络数据分组的报头中。
[0136]
在示例4中,示例1-3的任一个的主题可以可选地包括其中当处理电路系统处理该动作时,该处理电路系统被进一步配置成拷贝来自网络数据分组的分组有效载荷并且将已拷贝的分组有效载荷发送至独立于处理分组处理流水线的位置的位置。
[0137]
在示例5中,示例1-4的主题可以可选地包括其中当处理电路系统处理该动作时,该处理电路系统被进一步配置成将数据分组转发规则从第一虚拟交换机拷贝至第二虚拟交换机。
[0138]
在示例6中,示例1-5的任一个的主题可以可选地包括其中该处理电路系统是集成在控制设备中的物理功能。
[0139]
在示例7中,示例1-5的任一个的主题可以可选地包括其中该处理电路系统是被编程到控制设备中的虚拟化功能。
[0140]
在示例8中,示例1-7的任一个的主题可以可选地包括数据平面接口,其被配置成将网络数据分组转发至以下各项中的一个:os内核堆栈、虚拟交换机、和设备驱动器。
[0141]
在示例9中,示例1-8的任一个的主题可以可选地包括其中该控制设备是网络接口控制器(nic)。
[0142]
在示例10中,示例1-9的任一个的主题可以可选地包括其中该控制设备被接口连接且集成到多核硬件服务器中。
[0143]
示例11包括诸如包括指令的机器可读介质的主题,当在机器(诸如控制设备、平面间控制设备、控制平面处理器、计算设备、nic卡等等)上执行时该指令促使该机器使网络数据分组的一部分匹配至匹配动作表中的动作以及通过执行作为针对网络数据分组的分组
处理流水线的一部分的动作来通过机器使对网络数据分组的处理加速。
[0144]
在示例12中,示例11的主题可以可选地包括其中用来加速的指令进一步包括将指示当动作被处理时分组处理流水线的一部分被处理的元数据插入网络数据分组中。
[0145]
在示例13中,示例11-12中的任一个的主题可以可选地包括其中用来加速的指令进一步包括用于拷贝针对网络数据分组的分组帧并且将已拷贝的分组帧发送至独立于与分组处理流水线相关联的位置的位置的指令。
[0146]
在示例14中,示例11-13中的任一个的主题可以可选地包括其中用来加速的指令进一步包括用来向与机器的具体处理核相关联的队列指派网络数据分组的指令。
[0147]
在示例15中,示例14的主题可以可选地包括其中用来加速的指令进一步包括用来响应于过滤规则对网络数据分组过滤的指令。
[0148]
在示例16中,示例15的主题可以可选地包括其中用来加速的指令进一步包括用来当通过分组处理流水线处理网络数据分组时在网络数据分组上设置资源标识符的指令,该资源标识符针对网络数据分组标识用于处理的资源。
[0149]
示例17包括一种系统(例如服务器、计算机、协作计算机组等等),其包括用于使网络分组的一部分匹配至动作的装置和用于处理该动作以使基于处理该动作的与网络分组相关联的分组处理流水线加速的装置。
[0150]
示例18包括示例17的主题,并且可选地,其中将网络分组从第一虚拟机(vm)发送至第二vm,并且在同一多核服务器上执行的vm中的每一个执行用于匹配的装置和用于处理的装置。
[0151]
示例19包括示例16-17中的任一个的主题,并且可选地进一步包括用于将用于处理的装置配置成用户自定义动作的装置。
[0152]
示例20包括示例16-17中的任一个的主题,并且可选地包括其中用于处理的装置是以下各项中的一个:虚拟网络交换机、硬件交换机、内核过程、设备驱动器和虚拟化接口。
[0153]
上面的详细描述包括对形成详细描述的一部分的附图的参考。该图以图示的方式示出可以实行的具体实施例。这些实施例在本文中也被称为“示例”。这样的示例可以包括除了示出或描述的那些之外的元件。然而,还预期包括示出或描述的元件的示例。此外,还预期或者关于特定示例(或其一个或多个方面)或者关于本文中示出或描述的其他示例(或其一个或多个方面)使用示出或描述的那些元件(或其一个或多个方面)的任何组合或排列的示例。
[0154]
通过引用将在本文档中提到的公开物、专利和专利文档以其整体合并在这里,就像通过引用单独合并一样。在本文档和通过引用这样合并的那些文档之间存在不一致使用的情况下,在(一个或多个)被合并引用中的使用是本文档的使用的补充;对于不相容的不一致,以本文档中的使用为准。
[0155]
在本文档中,使用术语“一”或“一个”(如在专利文档中常见的那样)来包括独立于“至少一个”或“一个或多个”的任何其他实例或使用的一个或多于一个。在本文档中,术语“或”被用来指代非排他性或,使得“a或b”包括“a而非b”、“b而非a”、以及“a和b”,除非以其他方式指示。在所附权利要求中,术语“包括”和“在其中”被用作相应术语“包含”和“其中”的易懂英语等同物。而且,在下面的权利要求中,术语“包括”和“包含”是开放式的,即包括除了在权利要求中这样的术语后面列出的那些之外的元件的系统、设备、物品或过程仍被
认为落在该权利要求的范围内。此外,在以下权利要求中,术语“第一”、“第二”和“第三”等等仅仅用作标记,并且不打算暗示用于它们的对象的数字顺序。
[0156]
打算使上面的描述成为说明性而非约束性的。例如,可以结合其他来使用上述示例(或其一个或多个方面)。在查阅上面的描述时,诸如由本领域普通技术人员可以使用其他实施例。摘要用来允许读者迅速确定技术公开内容的本质,并且在理解它将不被用来解释或限制权利要求的范围或含义的情况下提交该摘要。而且,在上面的具体实施方式中,各个特征可以被分组在一起以使本公开内容合理化。然而,权利要求可能没有阐述本文中公开的特征,因为实施例可以包括所述特征的子集。进一步地,实施例可以包括比特定示例中公开的 特征更少的特征。因此,由此将下面的权利要求合并在具体实施方式中,其中权利要求独自作为单独的实施例。要参考所附权利要求连同这样的权利要求所赋予的等同物的全范围来确定本文中公开的实施例的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1