当前位置: 首页 > 专利查询>苹果公司专利>正文

客户端设备上调度分组传输的系统和方法技术方案

技术编号:10482180 阅读:164 留言:0更新日期:2014-10-03 13:54
本发明专利技术公开了一种用于在客户端设备上管理分组调度的计算机实现的方法。例如,该方法的一个实施例包括:接收将被传输的分组;将所述分组入队到在网络堆栈级的队列中;确定分组调度当前正在驱动级还是在网络堆栈级执行;如果调度当前正在所述网络堆栈级执行,则从在所述网络堆栈级的队列选择所述用于传输的分组;并且如果调度当前正在所述驱动级执行,则从在所述驱动级的队列选择所述用于传输的分组。

【技术实现步骤摘要】
【国外来华专利技术】优先权要求本专利申请涉及并要求2012年2月3日由Cahya Masputra等人提交的名称为“SYSTEM AND METHOD FOR INTELLIGENT NETWORK QUEUE MANAGEMENT”的美国临时专利申请61/595,003的权益,其公开内容以引用的方式全文并入本文。相关专利申请的交叉引用本专利申请涉及同时提交的转让给Apple的2012年9月15日由Cahya Masputra等人提交的美国专利申请13/620.920。本专利技术的一个实施例涉及在客户端设备中管理数据网络通信。还描述了其它实施例。
技术介绍
数据网络允许人们使用他们相应的网络“上”的客户端设备相互通信并从网络上的各种来源获得信息。例如,运行在用户的工作站或膝上型计算机中的Web浏览器应用程序可与Web服务器连接来下载网页。该连接可跨越网络的若干中间节点或跳跃,所述节点或跳跃可包括诸如路由器之类的专用计算机。这些设备可发现端节点之间的路由,通过这些路由它们可转发已被拆分为数据分组的消息。每个节点可被赋予一个唯一的或全球的地址,诸如互联网协议(IP)地址。互联网是为人熟知的全球性的交互网络,在其中计算机网络通过路由器相互连接。 计算机网络协议具有分层架构。通常,最上层包括由诸如Web浏览器的应用程序提供的功能性。正是该层,至少在端节点中,可通过网络来引发两台计算机之间的连接。因此,例如,用户可在其计算机上选择期望的网站。Web浏览器(运行于该计算机中)开始一个过程,该过程导致建立与所选择的网站相关联的服务器的连接。Web浏览器通过被称为互联网络协议群或传输控制协议/互联网络协议(TCP/IP)栈的一系列功能发送“向下”请求。该协议栈通常在软件的高层中通过软件实现,经常作为在客户端设备中运行的操作系统(OS)程序的一部分。一旦将所选择的网站解析为Web服务器的IP地址,所述服务器通过网络而接触并与Web服务器中实现的相似协议群的上层程序建立合适的连接。 为了使用该连接,用户计算机中的TCP/IP栈封装来自Web浏览器的请求消息,在本实例中,该请求消息为标识网页的请求。该消息可在其沿协议栈向下的过程中被包括网络访问层的若干垂直层多次封装。它最终到达客户端设备的最低层,即物理层(通常认为其为网络访问层的一部分)。 来自Web浏览器的消息当离开用户计算机的物理层然后在网络中通过一个或多个跳跃后到达Web服务器,并通过Web服务器的协议栈“向上”到达对应于Web浏览器的程序。然后,对应程序可通过收集所请求的网页的数据并将其经过已建立的连接发送回用户计算机,对消息作出响应。 将数据拆分为多个消息或分组,并以与发送请求消息类似的方式发送。应用程序可具有被用户的客户端计算机中的一个或多个处理器执行的若干应用或进程。每个单独的应用可生成不同类型的网络数据流量,它们可具有不同的分组损耗、延迟和流动弹性要求。以举例的方式,社交网络应用可通过网络传送控制数据、文本、音频和视频,它们中的每个都具有相对于上述变量的不同要求。尽管它们可能都共享用户计算机中的相同的低层网络资源,每个应用通常具有其自己的一个或一组端口来传送该数据。在当前的具体实施中,将每个客户端设备通过网络与特定目的节点(即另一个客户端或服务器)互连的路由器包括大型传输和接收缓冲区。因此,分组损耗很少或没有,并且通常允许客户端设备传输分组而不考虑流控制,导致路由器队列内的“缓冲膨胀”。诸如TCP的协议是基于检测到的分组损耗确定拥塞和修改传输速度的自校正协议。 当使用大型缓冲区减轻分组损耗时,TCP协议另外,在当前客户端方的具体实施中,对分组的缓冲发生在驱动级。TCP/IP栈只是将分组向下推送至驱动,并且驱动管理其自己的传输和接收队列。由于在客户端内的驱动级执行的大量缓冲(以太网驱动可在传输之前缓冲队列中的多达4000个分组),网络堆栈不具有准确的网络/拥塞信息。因此,需要更智能的机制来执行客户端设备内的网络排队,在其中利用了使用在驱动层和网络堆栈层之间的反馈通道。
技术实现思路
一种用于在客户端设备上管理分组调度的计算机实现的方法。例如,该方法的一个实施例包括:接收将被传输的分组;将所述分组入队到在网络堆栈级的队列中;确定分组调度当前正在驱动级还是在网络堆栈级执行;如果调度当前正在所述网络堆栈级执行,则从在所述网络堆栈级的队列选择所述用于传输的分组;并且如果调度当前正在所述驱动级执行,则从在所述驱动级的队列选择所述用于传输的分组。 【附图说明】 本专利技术的各实施例以举例的方式进行说明,而不仅限于各个附图的图形,在附图中类似的附图标号表示类似的元件。应当指出,本公开中提到“一”或“一个”实施例未必是同一实施例,并且这样的援引表示至少一个。 图1A-B示出根据本专利技术的实施例的具有网络堆栈的客户端设备的框图。 图2A-B示出根据本专利技术的实施例的两个方法。 图3A-B示出根据本专利技术的两个不同实施例的针对传输数据分组的网络堆栈和驱动之间的通信。 图3C示出根据本专利技术的一个实施例的客户端侧的软件架构。 图4示出示例性的发送器线程和示例性的开始器线程。 图5示出示例性的类队列实例和调度器。 图6示出服务类映射至队列实例的一个实施例。 图7示出服务类映射至队列实例的另一个实施例。 图8示出套接字流量类映射至服务类的实施例。 图9A示出具有内置QFQ调度器配置的一个实施例中链路共享分布的最坏场景。 图9B示出根据一个实施例的分组过滤器(PF)配置的实例。 图1OA示出根据一个实施例的使用流哈希的流控制。 图1OB示出一个实施例中排队算法使用的当前容器组和阴影容器组。 图1lA-B示出根据本专利技术的两个不同实施例的针对接收数据分组的网络堆栈和驱动之间的通信。 图12示出示例性的工作循环线程、轮询器线程和DLIL输入线程。 图13示出根据一个实施例的示例性的线程数据集。 图14示出一个实施例中采用的应用编程接口(API)。 图15示出一个实施例中采用的多个具有API的服务。 图16示出客户端方数据处理设备的一个实施例。 图17示出客户端方数据处理设备的另一个实施例。 【具体实施方式】 本专利技术的一个实施例涉及用于对在客户端设备上执行的网络应用进行主动队列管理的计算机实现的方法。 图1A是客户端计算设备101的框图,在该客户端计算设备上可实现本专利技术的实施例。示出的客户端设备101执行多个应用105-107,该应用105-107通过诸如互联网的网络150与服务器120-121和其它客户端设备122通信。服务器120-121可包括(以举例的方式且不限于)Web服务器、电子邮件服务器、即时消息服务器和文件服务器。在一个实施例中,应用105-107调用网络堆栈102提供的网络应用编程接口(API) 208,以访问网络堆栈102提供的网络资源。 本实施例的网络堆栈102包括队列管理逻辑115用于管理代表应用105-107中的每个的多个网络队列110-112。网络堆栈中的分组调度器116基于分组分类(下面将更详细地描述)调度将被传输至每个队列和从每个队列接收的分组。尽管在图1A中被示出为独立的模块,但应当理解,可将队列管理逻辑11本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/62/201380007685.html" title="客户端设备上调度分组传输的系统和方法原文来自X技术">客户端设备上调度分组传输的系统和方法</a>

【技术保护点】
一种用于在客户端设备上管理分组调度的计算机实现的方法,包括:接收将被传输的分组;在网络堆栈级将所述分组入队到队列中;确定分组调度当前正在驱动级还是在网络堆栈级执行;如果调度当前正在所述网络堆栈级执行,则在所述网络堆栈级从所述队列选择用于传输的分组;以及如果调度当前正在所述驱动级执行,则在所述驱动级从所述队列选择用于传输的分组。

【技术特征摘要】
【国外来华专利技术】2012.02.03 US 61/595,003;2012.09.15 US 13/620,9201.一种用于在客户端设备上管理分组调度的计算机实现的方法,包括: 接收将被传输的分组; 在网络堆栈级将所述分组入队到队列中; 确定分组调度当前正在驱动级还是在网络堆栈级执行; 如果调度当前正在所述网络堆栈级执行,则在所述网络堆栈级从所述队列选择用于传输的分组;以及 如果调度当前正在所述驱动级执行,则在所述驱动级从所述队列选择用于传输的分组。2.根据权利要求1所述的方法,其中对于某些W1-Fi网络接口在所述驱动级执行分组调度,而对于所有其它的介质访问控制(MAC)接口则在所述网络堆栈级执行分组调度。3.根据权利要求2所述的方法,其中所述其它MAC接口包括以太网接口和无线蜂窝接□。4.根据权利要求2所述的方法,其中对于802.1ln数据流量在所述驱动级执行分组调度,而对于802.lla、802.lib、或802.1lg数据流量则在所述网络层执行分组调度。5.根据权利要求4所述的方法,其中所述802.1ln驱动实现无线多媒体扩展(WME),以根据语音、视频、尽力服务和后台四种优先级来调度网络流量。6.根据权利要求1所述的方法,还包括: 根据特定的服务类将所述分组分类;以及 基于用其对所述分组进行分类的服务类将所述分组在特定的传输队列实例中排队。7.根据权利要求6所述的方法,其中所述网络堆栈将用于传输的分组排队,并当所述分组准备好传输时通知所述驱动级。8.根据权利要求7所述的方法,还包括: 从所述驱动级向所述网络堆栈级提供反馈信号,以确保所述网络堆栈知道由所述驱动所管理的通信链路的网络状态。9.根据权利要求8所述的方法,其中所述网络级基于所述检测到的与所述通信链路相关联的网络状态执行分组调度。10.根据权利要求1所述的方法,还包括: 将接口附接于所述网络堆栈;以及 作为应答,声明接口类型和关于是在所述网络堆栈级还是在所述驱动级对所述接口执行分组调度的指示。11.根据权利要求10所述的方法,其中所述接口于在所述网络堆栈级的分组调度和在所述驱动级的分组调度之间切换。12.根据权利要求10所述的方法,其中基于所述接口类型和调度模型,所述网络堆栈选择最合适的分组调度器和排队算法。13.根据权利要求6所述的方法,其中所述网络堆栈自动确定与所述传输队列相关联的队列参数,包括队列大小、流控制水印和丢弃阈值。14.根据权利要求6所述的方法,其中所述网络堆栈级自动配置分组调度参数,包括队列之间的链路共享分布。15.根据权利要求1所述的方法,其中自动执行所述接收、确定以及调度操作,而无需最终用户的干预。16.一种其上存储有程序代码的机器可读介质,所述程序代码在由客户端设备执行时使所述客户端设备执行以下操作: 接收将被传输的分组; 在网络堆栈级将所述分组入队到队列中; 确定分组调度当前正在驱动级还是在网络堆栈级执行; 如果调度当前正在所述网络堆栈级执行,则在所述网络堆栈级从所述队列选择所述用于传输的分组;以及 如果调度当前正在所述驱动级执行,则在所述驱动级从所述队列选择所述用于传输的分组。17.根据权利要求16所述的机器可读介质,其中对于某些W1-Fi网络接口在所述驱动级执行分组调度,而对于所有其它的介质访问控制(MAC)接口则在所述网络堆栈级执行分组调度。18.根据权利要求17所述的机器可读介质,其中所述其它MAC接口包括以太网接口和无线蜂窝接口。19.根据权利要求17所述的机器可读介质,其中对于802.1ln数据流量在所述驱动级执行分组调度,而对于802.lla、802.lib、或802.1lg数据流量则在所述网络层执行分组调度。20.根据权利要求19所述的机器可读介质,其中所述802.1ln驱动实现无线多媒体扩展(WME),以根据语音、视频、尽力服务和后台四种优先级来调度网络流量。21.根据权利要求15所述的机器可读介质,包括附加的程序代码以使所述客户端设备执行以下操作: 根据特定的服务类将所述分组分类;以及 基于用其对所述分组进行分类的服务类将所述分组在特定的传输队列实例中排队。22.根据权利要求21所述的机器可读介质...

【专利技术属性】
技术研发人员:C·马斯普特拉P·波和玛J·刘
申请(专利权)人:苹果公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利