具有入口控制的业务量管理的制作方法

文档序号:8225869阅读:298来源:国知局
具有入口控制的业务量管理的制作方法
【技术领域】
[0001] 本发明涉及业务量管理,并且更具体地,涉及具有入口控制的业务量管理。
【背景技术】
[0002] 一般而言,服务提供商网络被配置为提供到成千上万用户的网络连接。用户可包 括个人和/或企业,其通过各自的网络节点耦合到提供商网络。每个网络节点的用户侧都 可包括一个或多个用户设备(例如计算设备、电话、视听设备等),其可以经由用户网络互 连。
[0003] 用户设备被配置为发送和/或接收网络业务量,其包括声音、视频和/或数据。 可以为各个网络节点定义各个用户和提供商网络之间的业务量,例如通过服务等级协议 (ServiceLevelAgreement,SLA)。例如,SLA可包括数据速率和/或流量约束和/或按用 户和/或业务量类型(即业务量类别)中定义的承诺。
[0004] 提供商网络包括多个网络设备,例如路由器,其被配置为管理通过提供商网络的 网络业务量的流动。每一个网络设备被配置为接收和/或发送多个业务量流。因此,网络 设备物理资源,例如端口,由多个业务量流共享。
[0005] 业务量管理被配置为管理端口被业务量流的共享。业务量管理被配置为至少部分 地基于与业务量流相关联的业务量类别,选择,即,调度用于与调度决定一起传输的分组。 传统的业务量管理通常以为分组处理而优化的专用硬件来实现。专用硬件不可由服务提供 商编程,和/或如果一起使用来自多个提供商的网络设备,则可能存在互操作性的挑战。
[0006] 业务量计量被配置为限制接收的分组速率。传统的业务量计量通常以专用硬件实 现。网络设备的计量精度通常利用这样的硬件实现,针对相对较小的带宽流或相对高的带 宽(例如线路速率或接近线路速率)流,但不能同时针对上述两者。
[0007] 附图简沐
[0008] 随着下面的详细描述的进行,并参考所述附图,所要求保护的主题的实施例的特 征和优点将变得明显,其中相同的数字表示相同的部件,并且其中:
[0009] 图1示出了与本发明的各种实施例相一致的示例性网络系统;
[0010] 图2示出了与本发明的各种实施例相一致的示例性网络设备;
[0011] 图3A示出了用于一个分组处理流水线的分组处理流水线功能块的示例性序列;
[0012] 图3B示出了将图3A的分组处理流水线的功能块映射到多个线程的一个示例;
[0013] 图3C示出了将多个分组处理流水线的功能块映射到多个处理器核的示例;
[0014] 图3D示出了将多个分组处理流水线的功能块映射到多个处理器核的另一个示 例;
[0015] 图4示出了与本发明的一个实施例相一致的示例性调度器模块;
[0016] 图5示出了与本发明的各种实施例相一致的示例性调度层次结构;
[0017] 图6示出了与本发明的各种实施例相一致的示例性分层调度器数据结构;
[0018] 图7示出示出了与本发明的多个实施例相一致的被配置为排列多个分组的示例 性操作的流程图;
[0019] 图8示出了排列操作的示例性流水线化的实现;
[0020] 图9A和9B示出了与本发明的一个实施例相一致的被配置为排列多个分组的示例 性操作的流程图;
[0021] 图10示出了与本发明的一个实施例相一致的示例性出列操作;
[0022] 图11是与本发明相一致的示例性管道预取状态机;
[0023] 图12示出了调度器和网络接口端口的相对定时和同步的示例;
[0024] 图13示出了与本发明的一个实施例相一致的被配置为初始化令牌桶的示例性操 作的流程图;
[0025] 图14示出了与本发明的一个实施例相一致的配置为更新令牌桶的示例性操作的 流程图;
[0026] 图15示出了与本发明的一个实施例相一致的配置为消耗令牌的示例性操作的流 程图;以及
[0027] 图16A和16B包括与本发明的各种实施例相一致的被配置为示出了示例性的分层 调度器的性能的两个图。
[0028] 虽然下面的详细描述将参考所给示例性的实施例进行,但对于本领域技术人员来 说,各种替换、修改和变化将是显而易见的。
[0029] 详细说明
[0030] 一般而言,本发明涉及具有入口控制的业务量管理。与本发明一致的系统和方法 被配置为利用可编程网络设备,提供可编程的出口业务量管理,可编程网络设备具有大约 每秒数个、数十个或更多千兆比特的线路速率。所述系统和方法被配置为根据由例如服务 等级协议(SLA)中指定的策略,优先传输与多个用户和多个业务量类别相关的分组。所述 系统和方法进一步被配置为提供对数千个(例如64k,其中k是1024)分组队列(以及与 每个队列相关联的分组流)以及具有多个调度级别(例如五个)的分层调度的支持。如本 文所述,所述系统和方法被配置为对于排列操作,对多个分组并行地操作,以及对于出列操 作,对多个管道并行地操作,因此"隐藏"预取等待时间。在一些实施例中,所述系统和方法 可以包括拥塞检测机制(例如尾部丢弃、随机早期检测)。如本文所述,所述系统和方法进 一步被配置为对于诸如业务量整形、严格优先级和加权轮叫之类的功能,提供相对高级别 的精度。
[0031] 同样地,与本发明一致的入口控制被配置为在可编程网络设备上实现,并进一 步被配置为对于相对低的带宽(例如大约Mbps(每秒兆比特))和相对高的(例如大约 Gbps(每秒千兆比特))带宽的分组流,提供相对高的精确度(例如大约1% )。
[0032] 图1示出了与本发明的各种实施例相一致的示例性网络系统100。系统100通常 包括提供商网络102,通过各自的网络节点105a,...,105n耦合到提供商网络102的多个 客户端系统l〇4a,...,104n,以及一个或多个其他网络106。提供商网络102被配置为向 所述多个用户,即客户(例如,订户、企业)提供网络服务。提供商网络102包括多个网络 设备108a,. . .,108n。每一个网络设备108a,. . .,108n被耦合到一个或多个其他网络设备 108a,...,108n,并且至少一个网络设备被耦合到其它网络106。如本文所用,网络设备包 括但不限于路由器、交换机和/或集线器。
[0033] 提供商网络102被配置为提供到每个客户端系统104a,...,104n的网络连接和 网络服务。例如,例如客户端系统l〇4a的客户端系统可以通过提供商网络102耦合到其它 网络106和/或另一个客户端系统104b,...,104n。每一个客户端系统可以包括一个或多 个计算机节点元件(例如主机服务器系统、台式计算机、膝上型计算机、平板计算机等)、交 换机、路由器、集线器、网络存储设备、网络附接的设备、非易失性存储器(NVM)存储设备、 基于云的服务器和/或存储系统、刀片服务器、视听设备(例如电视机、收音机接收器等)、 智能手机,功能手机等。每个客户端系统104a,...,104n被配置为通过各自的网络节点 105a,...,105n将来往于提供商网络102传送包含数据的分组。所述分组包括数据,其中 可能包括语音数据、视频数据和/或其它数据,例如文件传送数据。
[0034] 提供商网络102 (包括网络设备108a,. . .,108n)、客户端系统104a,. . .,104n和/ 或其他网络106也可以使用交换式结构的通信协议,例如以太网通信协议、Infiniband(无 限带宽)通信协议等,进行相互通信。以太网通信协议能够使用传输控制协议/因特网协 议(TCP/IP)提供通信。以太网通信协议符合或兼容由电气和电子工程师协会(IEEE)发布 的命名为"IEEE802. 3标准"的以太网标准(发布于2002年3月)和/或该标准的更高版 本,例如,发布于2012年的用于以太网的IEEE802. 3标准。所述InfiniBand协议符合或 兼容由InfiniBand贸易协会(IBTA)发布的InfiniBand?规范,发表于2001年6月的命名 为"InfiniBand?体系结构规范"的第1卷、版本1. 2. 1,和/或该规范的更高版本,例如,发 布于2008年1月的InfiniBand?体系结构规范,第1卷(一般规范),版本1. 2. 1,以及发 布于2012年11月的第2卷(物理规范),版本Release1.3。当然,在其他实施例中,交换 结构通信协议可以包括自定义的和/或专有的交换结构通信协议。
[0035] 网络102和/或其他网络106可包括任何分组交换网络,诸如,例如在IEEE802.3 标准中阐述的以太网网络和/或例如IEEE 802. 11标准中阐述的无线局域网络。无 线协议可以符合或兼容无线标准,所述无线标准由IEEE发表于2012年4月,命名为 "802. 11-2012-用于信息技术的IEEE标准-本地和城域网系统间的电信和信息交换-特定 要求第11部分:无线LAN媒体访问控制(MAC)和物理层(PHY)规范",和/或该标准的更高 版本。
[0036] 图2示出了与本发明的各种实施例相一致的示例性网络设备200。网络设备200 是图1中的网络设备108a,...,108n的一个例子。网络设备200通常包括处理器210、桥 接芯片组212、系统存储器214和网络接口 216。处理器210被配置为执行与网络设备200 相关联的操作。处理器210可以包括一个或多个处理单元,例如核220a,...,220n、与各个 核220a,. . .,220n相关联的各自的缓存存储器222a,. . .,222n以及处理器缓存存储器224。 桥接芯片组212被配置为耦合处理器210、系统存储器和/或网络接口 216。
[0037] 网络接口 216被配置为将网络设备200耦合到一个或多个其他网络设备 108a,...,108n和/或其他网络106。网络接口 216可包括处理器228、主机接口 230、媒体 接入控制(MAC)电路232、物理层电路层(PHY) 233和网络接口存储器234。处理器228被 配置为执行与网络接口 216相关联的操作。主机接口 230被配置为将网络接口 216耦合到 桥接芯片组212。
[0038] MAC232和PHY233被配置为将网络设备200经由物理介质耦合到一个或多个其 他网络设备108a,...,108n和/或其他网络106。MAC232被配置为对于发送和接收功能 执行媒体访问管理。如本文所述,PHY233包括一个或多个端口 235a,...,235n,每个端口 235a,...,235n都能够传输多个业务量流。每个端口,例如端口 235a,都包括发送电路236, 被配置为将数据和/或消息分组和/或帧发送到一个或多个其他网络设备l〇8a,...,108n 和/或其他网络106。每一个端口,例如端口 235a,包括接收电路237,被配置为从一个或多 个其他网络设备108a,...,108n和/或其他网络106接收数据和/或消息分组和/或帧。
[0039] 如本文所述,系统存储器214可以被配置为存储操作系统OS240、网络接口控制 器"NIC"驱动程序242、多个应用程序编程接口API243、多个入口模块244、多个出口模 块246、多个数据结构248以及被配置为在分组处理之后和传输之前存储分组的多个队列 250〇
[0040] 系统存储器214可被配置为存储虚拟机监视器(VMM) 252,然后可包括多个虚拟机 (未示出)。OS240可以被配置为利用被配置为用于有效和相对快速的分组处理的软件框 架,。例如,所述软件框架可以符合或兼容Intel?数据平面开发套件(DTOK),所述DPDK被配 置为优化在Intel??体系结构处理器上的分组处理。
[0041] 入口模块244可包括多个初始处理模块245、监管器模块247和负载平衡器249。 出口模块246可以包括调度器模块253(例如分层调度器)和分组输入/输出(I/O)模块 255。如本文所述,在一些实施例中,出口模块246可以包括拥塞管理模块257。API243可 以被配置为提供应用程序编程接口,例如,用于调度器模块253的,并且可以包括调度器配 置、排列和/或出列功能。API243可以被,例如服务提供商用于实现用于每个网络节点和 相关联的用户的与SLA相关的策略。
[0042] 网络设备200被配置为对于提供商网络102所承载的网络业务量提供业务量管理 功能。网络设备200可以通过例如端口235a的Rx 237接收多个分组流中的多个分组,处 理所述分组,并通过例如端口235a的Tx 236发送所述处理后的分组。如本文所述,初始处 理模块245可以包括分组I/O接收模块272和流分类模块274,其被配置为处理接收到的分 组,以用于例如,识别相关联的业务量流、识别源和/或目的地、和/或识别业务量类别。如 本文所述,在一些实施例中,监管器模块247可以被配置为限制可被网络设备200进一步处 理的分组的数量。负载均衡器249被配置为跨多个处理器核和/或跨多个线程分配分组处 理活动。
[0043] 出口模块246被配置为管理来自网络设备200的处理后的分组的传输。调度器模 块253被配置为排列准备传输的处理后的分组,选择用于传输的下一分组,以及出列所选 择的下一分组。PKt I/O Tx模块255被配置为通知例如网络接口216,所述出列后的分组 准备好传输。拥塞管理模块257被配置为基于策略,在在某一时间段内接收到比可以发送 的分组更多的分组的情况下,有选择性地丢弃分组。
[0044] 入口模块244和出口模块246被配置为利用处理器210体系结构。入口、出口和 其它分组处理功能可以被分配在处理器核220a,...,220n和/或多个线程之间。因此,入 口、出口和/或其它分组处理功能可以被并行地执行,并且可以被流水线化。流水线被配置 为提高分组处理效率并且可便于在一段相对短的时间内处理相对大量的分组流(例如数 万或更多)。
[0045] 图3A示出了一个分组处理流水线300的分组处理流水线的功能块的示例性序列。 网络设备200可以被配置为实现多个分组处理流水线。分组处理流水线300的功能块可以 由处理器210的一个或多个核220a,. ..,220n和/或网络接口 216来执行。分组处理流水 线300包括分组输入/输出接收模块"PktI/ORx" 302、分组解析器模块"Pkt解析304和 流分类器模块"Classif"306。例如,PktI/ORx302、Pkt解析 304 和Classif306 可以 被包含在图2中的初始处理模块245中。分组处理流水线300还包括业务量计量和/或策 略模块"监管器" 308、负载均衡模块"负载均衡器" 310、工作模块"工作器" 312、拥塞管理模 块"丢弃器"314、分层调度器模块"HierSched"316和分组输入/输出发送模块"Pkt1/ 0TX"318。例如,监管器308可对应于监管器247,负载均衡器310可以对应于负载均衡器 249,工作器312可对应于工作模块254,丢弃器314可对应于拥塞管理模块257,Hiersched 316可对应于调度器模块253,并且PktI/OTX318可对应于PktI/OTX255。
[0046] 响应于来自PktI/OTX318的通知,输入分组可以由PKtI/ORx302从Rx237 接收,并且处理后的分组可以由Tx236发送。通常,每个分组包括与路由(例如寻址)和 控制相关联的分组报头和包含数据的分组有效负载。例如,分组可以被网络接口 216的端 口 235a的Rx237接收,并且可以由NIC驱动程序242进行初始处理。如本文所述,例如, NIC驱动程序242可以被配置为轮询模式驱动程序。接收到的分组(即输入分组)随后可 被Pkt解析304进行解析。Pkt解析304被配置为识别每一个输入分组的协议栈。Pkt解 析304还被配置为检查输入分组的分组报头的完整性。然后输入分组可被Classif306映 射为业务量流。例如,映射可包括精确匹配查找表,该表使用了可配置的散列函数(例如 jhash、CRC(循环冗余校验)等)以及桶逻辑来管理冲突。每个业务量流都对应于源和目的 地之间的一种分组传送类型。源和/或目的地可包括,例如客户端系统104a,...,104n(和 /或客户端系统内的客户端设备)、提供商网络102、其他网络106和/或耦合到其它网络 106的其他客户端系统(未示出)。分组类型可对应于有效负载的类型,并且还可以对应于 业务量类别,所述负载是,例如,分组携带的语音、视频、数据。
[0047] 如本文所述,监管器308被配置为执行业务量计量和/或监管功能。如本文所述, 业务量计量和/或监管被配置为限制数据速率。作为业务量计量和/或监管的结果,一个 或多个输入分组可能会被丢弃。负载均衡器310被配置为将输入分组(即在计量/监管中 留下来的)分配到例如工作器312的多个工作器模块,并向每个工作器模块提供均匀的负 荷。每个工作器模块,例如,工作器312,都可对应于服务提供商特定的应用程序工作负载线 程(例如互联网协议(IP)堆栈等)。负载均衡器310可以进一步被配置为保持业务量流与 工作器模块的紧密度以及每个流内的分组的顺序。保持业务量流与工作器模块的紧密度可 以被配置为通过当处理分组流时,利用数据局部性来支持高效的分组处理。
[0048] 如本文所述,丢弃器314被配置为对于分层调度器316执行拥塞管理。拥塞管理 可包括每当目标调度器队列已满时,都丢弃分组,直到大量分组已被从目标出口队列发送、 随机早期检测(RED)和/或加权RED(WRED)。加权RED被配置为基于当前的调度器队列负 载水平和分组优先权丢弃分组。因此,当遇到拥塞时,相对较低优先级的分组可能会在相对 较高优先级的分组之前被丢弃。
[0049] 如本文所述,分层调度器模块316被配置为至少部分地基于一些标准,调度(即选 择)用于传输的下一分组。分层调度器316被配置为将分组排列在多个队列中等待传输, 并且当被选择用于传输时出列分组。分层调度器模块316可以被配置为实现业务量整形、 严格优先级、上限执行和/或加权轮叫。如本文所述,分层调度器模块316被配置为管理成 千上万的队列。
[0050] 网络设备200还可以包括多个基础结构模块255,其被配置为支持分组处理流水 线300功能。基础结构模块255包括缓冲管理器模块256,被配置为提供对全局缓冲池和按 线程私有缓冲缓存的支持;队列管理模块258,被配置为对分组处理流水线模块之间的消 息传递提供支持;和/或省电电模块2
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1