可自动配置的传输堆栈的制作方法

文档序号:13261396阅读:151来源:国知局
技术领域本申请一般涉及协议堆栈。更具体地,本申请涉及可自动配置的传输堆栈,它可以基于一组堆栈需求为应用自动地创建和更新传输堆栈。

背景技术:
移动计算装置和互联网无所不在,使得人们可以从任何地方体验数字内容。人们可以使用其移动计算装置中的应用来消费或与来自互联网上的服务提供商的内容交互,诸如以流播放电影或音乐,或者与别人一起玩游戏。移动计算的这些先进之处还提高了可以由这些移动装置复制的内容的质量,并大大地提高了可以产生并捕获数字内容并通过互联网与他人分享的装置的数量。现今,即使是小的移动装置,诸如智能手机都可以产生高质量色彩再现的全高清视频,高速蜂窝和宽带网络使用户可以通过各种互联网服务与他人分享此内容,这些互联网服务诸如YouTube(来自谷歌公司)和Facebook(来自脸谱公司)的内容分享服务。许多计算机应用利用这些计算机网络和互联网服务向其用户提供社交特征,这极大地改进了用户体验。当应用想使用网络时,他通过使用在计算装置的操作系统上运行的一个或多个API使用网络。这些API为应用提供通过网络发送、接收、存储、配置数据或与其它计算机通信的方式。例如,在应用可以使用API通过网络发送或接收数据之前,应用首先需要实例化实现网络API的协议堆栈。然而,实例化API的协议堆栈需要应用显式地实例化并组合实现应用想要使用的API功能的协议元素。更糟糕的是,如果由计算机网络或目标服务器使用的协议改变,则应用将不能与目标服务器通信,因此阻碍其使用。应用开发者需要使用可以对新API构造修改的协议堆栈的代码重写以及重新编辑应用。

技术实现要素:
一个实施例提供一种促进实例化自定义传输堆栈的传输框架系统。操作中,系统可以获得对于自定义堆栈的堆栈需求。堆栈需求规定一个或多个组件的至少组件属性以在所述自定义堆栈中实例化。系统选择满足对于所述自定义堆栈的堆栈需求的堆栈组件;并且实例化自定义堆栈中的堆栈组件。系统例如可以通过分析堆栈需求来确定对于需要在自定义堆栈中被实例化的组件的组件需求来选择堆栈组件。系统通过组件存储库确定满足组件需求的一组匹配组件。如果存在多个匹配组件,则系统选择与自定义堆栈中的其它组件最兼容的匹配组件。在一些实施例中,传输框架在信息中心网络(ICN)架构下操作。在ICN中,每项内容是分别被命名的,每项数据被绑定到将该数据与任何其它项数据相区分的唯一名称,诸如相同数据的其它形式或来自其它源的数据。此唯一名称允许网络装置通过传播指示唯一名称的请求或兴趣来请求数据,可以获得与数据的存储位置、网络位置、应用和传输手段无关的数据。命名数据网络(NDN)或内容中心网络(CCN)是ICN架构的示例,以下词语描述NDN或CCN架构的元件:内容对象(ContentObject):单一一项命名数据,其绑定到唯一名称。内容对象是“永久的”,这意味着内容对象可以在计算装置内或者在不同的计算装置中移动,但不会改变。如果内容对象的任何组成变化,则出现变化的实体创建包括更新内容的新内容对象,并且将新内容对象绑定到新唯一名称。唯一名称(UniqueName):CCN中的名称通常是与位置无关的,唯一地标识内容对象。数据转发装置不管内容对象的网络地址或物理位置如何,可以使用名称或名称前缀将包向生成或存储内容对象的网络节点转发。在一些实施例中,名称可以是层次结构的可变长度标识符(HSVLI)。HSVLI可以分成几个层次组成,这些组成可以以各种方式构造。例如,个别的名称组成parc,home,ccn,和test.txt可以以左对齐的前缀为主的方式构造,形成名称“/parc/home/ccn/test.txt”。因此,名称“/parc/home/ccn”可以是“/parc/home/ccn/test.txt”的“父”或“前缀”。附加组成可以用来区分内容项目的不同形式,诸如合作文档。在一些实施例中,名称可以包括标识符,诸如从内容对象的数据(例如验证和值)和/或从内容对象的名称的元素导出的散列值。基于散列的名称的描述在美国专利申请号13/847,814中描述(发明人IgnacioSolis于2013年3月20日申请的名称为“ORDERED-ELEMENTNAMINGFORNAME-BASEDPACKETFORWARDING”)。名称还可以是扁平标签。后文中“名称”用来指名称数据网络中的一条数据的任何名称,诸如层次名称或名称前缀、扁平名称、固定长度的名称、任意长度的名称或标签(例如多协议标签交换(MPLS)标签)。兴趣(Interest):指示对一条数据的请求的包,包括该条数据的名称(或名称前缀)。数据消费者可以在信息中心网络中传播请求或兴趣,CCN/NDN路由器可以向可以提供所请求数据以满足请求或兴趣的存储装置(例如缓存服务器)或数据生产者播送。在一些实施例中,ICN系统可以包括内容中心网络(CCN)架构。然而,本文中公开的方法还适用于其它ICN架构。对CCN架构的描述在美国专利申请号12/338,175中描述(发明人VanL.Jacobson和DianaK.Smetters于2008年12月18日申请,名称为“CONTROLLINGTHESPREADOFINTERESTSANDCONTENTINACONTENTCENTRICNETWORK”)。在一些实施例中,在获得堆栈需求时,系统可以从传输库组件、从传输应用编程接口(API)组件、从网络包和/或从所述自定义堆栈中的组件获得堆栈需求。在一些实施例中,系统可以从本地存储库获得堆栈组件。在一些实施例中,系统可以在本地存储库中搜索堆栈组件。如果系统确定本地存储库中堆栈组件不可用,则系统可以从远程存储库获得堆栈组件。在一些实施例中,远程存储库包括组件缓存、组件存储服务器和/或组件市场。在一些实施例中,系统可以确定堆栈组件的更新版本是否存在。如果更新版本存在,则系统可以确定实例化堆栈组件的堆栈,并用堆栈组件的更新版本的实例替换堆栈组件的实例。在这些实施例的一些变形中,系统可以分析堆栈组件的更新版本以获得堆栈需求。如果系统确定堆栈组件的堆栈需求已经改变,则系统可以更新堆栈的实现以满足新的堆栈需求。附图说明图1图解说明根据实施例促进自动配置堆栈的示例性环境。图2图解说明根据实施例的示例性传输框架。图3呈现根据实施例图解说明为应用自动配置堆栈的方法的流程图。图4呈现根据实施例图解说明更新传输堆栈以满足远程装置的需求的方法的流程图。图5呈现根据实施例图解说明在接收堆栈组件的更新版本时更新一个或多个堆栈的方法的流程图。图6呈现根据实施例图解说明自动配置堆栈以满足一组传输需求的方法的流程图。图7图解说明根据实施例促进自动配置堆栈的示例性设备。图8图解说明根据实施例促进自动配置堆栈的示例性计算机系统。在图中,相同的附图标记指相同的附图元件。具体实施方式给出以下描述使得本领域技术人员能够制造和使用实施例,以下描述是在特定应用和其需求的背景下提供的。对所公开实施例的各种改进对本领域技术人员是非常显然的,在不偏离本发明的精神和范围下,本文中定义的通用原理可以应用于其它实施例和应用。因此,本发明不局限于所显示的实施例,而是给予与本文中公开的原理和特征一致的最宽范围。概述本发明的实施例提供一种传输框架,其解决了自动配置传输堆栈的问题。例如,传输框架可以创建传输堆栈以适应应用访问本地资源(诸如通过网络通信)所使用的各种应用编程接口(API)的需求。传输框架提供一组组件,这些组件可以组合成传输“堆栈”,实现API的功能。API可以通过请求传输框架创建满足API的堆栈需求的传输堆栈,从而使用传输框架。堆栈需求可以规定要在堆栈中被实例化的一个或多个组件的一组属性,并且可以规定堆栈组件操作所遵循的策略。非常基本的传输堆栈可包括与API接口的组件和与网络接口的组件。这些堆栈组件为传输堆栈提供入口和出口通路,在后文中称作“连接器”。API连接器与本地API通信,网络连接器通过网络与其它装置通信。传输堆栈内的每个组件执行特定功能,一些组件可以执行比相同组件的其它版本更具体或更通用的功能。一些组件可以在定义其行为的加载时间接收参数,一些组件可以基于从本地应用或通过网络从装置上接收的参数在运行时间进行配置。例如,一些组件可以适合随时间变化的操作环境条件或网络条件。传输框架提供在组件和API之间发送配置消息和信息的方式,例如允许堆栈内的组件相互通信。应用可以通过向API发布“呼叫”通过网络通信,这使得API构造消息。此消息会在消息前进到网络时流过适当的传输堆栈,访问各个组件。每个组件使用加载时间和/或运行时间配置信息来对消息执行特定动作,这可以包括修改消息、终止/删除消息和/或创建新消息。在一些实施例中,传输框架可以包括传输框架代理,其动态地配置和/或重新配置软件堆栈(例如运行时)以适应本地操作环境的变化、网络环境的变化或者甚至是传输框架内的变化。例如,传输框架可以包括存储库,存储库包括一组可用的堆栈“组件”。当运行的应用发布对TCP/IPAPI组件的呼叫时,传输框架代理(后文简单称作“传输框架”)可以将呼叫转发到已经对于TCP/IP消息实例化的堆栈。如果这样的堆栈不存在,则传输框架可以通过以满足应用的API呼叫中的堆栈需求的方式组合一组堆栈组件,实例化自定义堆栈。而且,如果运行的应用对传输框架发布要求实例化新的堆栈组件的呼叫,传输框架可以在运行时自动地下载所需的组件,实例化应用的堆栈中的所需组件。传输框架还可以自动地下载并实例化它处理通过网络(例如通过本地转发器)接收的包需要使用的任何组件。在一些实施例中,每个组件版本可以有关联的唯一标识符,该标识符标识组件和其版本(例如唯一名称和版本号,或者全局唯一字母数字标识符)。同样,每个组件版本可以有关联的一组组件属性,其标识由组件执行的一组功能,一组组件特征和组件可以服务的一组角色。这些组件属性可以对应于通用属性分类和/或特定的属性分类。例如,组件可以与规定组件可以编码或解码视频流的通用的“视频编码”或“视频解码”功能属性关联,并且可以包括它支持的每个编码译码器的特定功能属性。传输框架可以通过选择其组件属性满足堆栈需求的组件属性的组件,选择满足堆栈需求的组件。例如,与通用的“安全”功能特征关联的组件还可以与其它特定的特征关联,这些特征诸如加密、解密、认证、数据签名、签名验证、信任评估、过滤等。与通用的“数据处理”功能特征关联的组件还可以与其它特定的特征关联,这些特征诸如编码、解码、封装、解封装、代码转换、压缩、提取(解压缩)等。与通用的“存储”功能特征关联的组件还可以与其它特定的特征关联,这些特征诸如数据存储、从存储装置检索数据、删除重复、分割、版本化等。与通用的“数据传输”功能特征关联的组件还可以与其它特定的特征关联,这些特征诸如流量控制、按次序传送、再传输、包重写等。与通用的“外部服务”功能特征关联的组件还可以与其它特定的特征关联,这些特征诸如外部服务发现、外部服务访问、数据搜索、数据索引、组件搜索等。而且,每个组件可以包括策略以及需要在其堆栈中被实例化的其它组件的堆栈需求。一些堆栈需求可以规定在本地组件被实例化时,在相同的堆栈中要被实例化的一个或多个组件。其它堆栈需求可以规定在特定的网络条件下(例如,当堆栈接收压缩包时)在传输过程中需要被实例化的一个或多个其它组件。在组件已经在堆栈中被实例化之后,堆栈组件的更新版本可以变成可用的,这可能是可行的。当组件的新版本变成可用时,传输框架可以下载组件的更新版本,并用新组件版本的实例替换旧组件版本的任何实例。如果新组件版本的实例包括更新的堆栈需求,则传输框架可以处理新组件的堆栈需求,以下载并实例化在组件的堆栈中还没有被实例化的任何其它所需的组件。图1图解说明根据实施例促进自动配置堆栈的示例性环境100。计算环境100可以包括计算机网络102,诸如内容中心网络(CCN)。环境100还可以包括客户端104、本地计算装置104和远程计算装置114,他们的内部传输堆栈可以通过网络102相互交换网络包。在传统的IP架构中,转发器112是基于IP的转发器,其查看包的标题以确定包的源和目的地,并将包转发到目的地。堆栈执行TCP/UDP,应用通过套接字与堆栈交互。相反,本发明的装置104不使用传统的“堆栈”。而是,装置104实现“传输框架”106,其可以动态地配置自定义堆栈,以满足应用的自定义“环境执行上下文”。装置104可以包括耦连到网络102的任何计算装置,诸如智能手机104.1、平板计算机104.2和/或服务器或个人计算机104.m。具体地,装置104可以包括传输框架106,其可以自动地创建和/或更新对本地应用或本地操作环境的自定义堆栈(例如没有本地用户116、本地操作环境和/或在装置104上运行的任何应用的介入)。装置104还可以包括转发器112(例如局域网中的网络接口卡或路由器),其可以在传输框架106和网络102的自定义堆栈之间传输包。自定义堆栈可以指向和/或来自转发器112、或在装置104上运行的任何应用,堆栈的组件可以包括任何可用的组件,他们可以任何次序组织以满足应用需求。在一些实施例中,传输框架106可以包括一组堆栈配置代理,其可以动态地按需配置堆栈。例如,传输框架106可以包括实现通过库和/或API访问的功能的一组传输库/API组件108。应用可以通过发布对传输框架106的呼叫,访问由传输框架106执行的库或API。传输框架然后将库或API呼叫映射到实现此特定功能的组件108的相应的库/API组件,并将库或API呼叫转发到此库/API组件。库/API组件然后配置或实例化可以执行应用的库/API呼叫的自定义堆栈。例如,库/API组件可以向传输框架106发布请求,请求描述自定义堆栈的功能。此功能描述可以是高水平的,诸如规定预定义的行为或对数据包执行的操作。传输框架106然后通过以实现期望行为或操作的次序将必需的组件组织到自定义堆栈(例如在堆栈组件110)中,实现此行为或操作。替代性地,功能描述可以是低水平的,诸如规定待被使用的特定堆栈组件,并且可以规定对堆栈组件排序的次序。而且,功能描述还可以对于个别组件是特定的或通用的,例如,以请求特定的“流量控制器”(例如TCP流量控制器)或请求任何“流量控制器”。举另一示例,特定的组件描述可以规定实现特定的加密算法的加密组件,而通用组件描述则可以规定可以使用任何可用的“加密”组件。在一些实施例中,装置104中的堆栈可以与装置114中的堆栈交互,例如以实现端对端解决方案。同样,应用可以要求来自传输框架106配置的以满足需求的堆栈的不同的环境执行上下文。例如,在装置104上运行的应用可以要求堆栈按次序将包传送到装置114上的堆栈,执行丢弃或丢失包的重传,以验证接收的包,等等。在一些实施例中,传输框架106可以创建包括应用专用组件(诸如流量控制器组件,“编码”和/或“解码”组件和将数据打包成网络包和/或处理网络包以用于应用的任何其它组件)的自定义堆栈。流量控制器可以控制到达转发器或者由转发器接收的针对应用的包的数目,什么次序,未完成兴趣的数目等。“编码”组件可以将应用的数据(例如来自应用自身的数据结构)转换成转发器112可以使用的通过网络102直接传输的“线”格式(例如网络包)。传输框架106还可以创建处理对于本地应用的互联网协议(IP)包的自定义堆栈。与传统的TCP/IP不同,传输框架106可以创建包括“安全”相关组件的自定义堆栈。此安全组件可以用来签名数据,对一项数据的签名执行验证以加密或解密数据,等等。图2图解说明根据实施例的示例性传输框架200。应用可以动态地配置传输框架200以满足应用的“环境执行上下文”。传输框架内部由可以组合以形成自定义“堆栈”(例如,堆栈是“可组合的”)的组件组成。具体地,传输框架200包括与应用或操作环境接口的传输库/API组件202,并且包括可以组合成一组堆栈(例如堆栈210、220和230)的实现由应用期望的功能的一组堆栈组件204。在一些实施例中,库/API组件202可以使用传输框架200的组件实现,每个库/API组件202可以对应于本地应用和操作环境(例如函数)可用的特征。这允许传输框架200自动地、动态地更新应用和操作环境可用的这组库和API特征。而且,库/API组件本身可以包括策略和一组堆栈需求。传输框架200使用组件的策略和堆栈需求来实例化实现库/API组件的功能的堆栈。传输框架200中的堆栈可以与转发器206交互,转发器206用作多路复用器/多路分解器以与堆栈、应用或网络接口来回转发包。转发器206可以使用规定哪些包可以在每个方向上行进的规则。同样,转发器206不需要修改包;而是,转发器206控制包流进和流出传输框架200的堆栈的方式。例如,转发器206可以将包从一个接口转发到另一接口,从一个应用转发到另一应用,从应用转发到接口或者从接口转发到应用。在一些实施例中,转发器206可以包括逻辑接口、物理接口或局域网中的路由器。在一些实施例中,应用或操作环境可以与库/API组件202接口,但不直接与传输框架200的堆栈接口(例如形成堆栈210,220和230的堆栈组件204)。同样,堆栈可以驻留在库/API组件202和转发器206之间。堆栈的组件针对曾实例化堆栈的应用承担自定义工作。堆栈可以指向/来自转发器206或任何应用,堆栈的组件可以包括可以以任何次序组织的任何可用组件。例如,一组组件212-218可以组织成堆栈210,其处理从应用到转发器206的包的流,另一组组件222-228可以组织成堆栈220,其处理从转发器到应用的另一包的流。在一些实施例中,一组组件232-238可以组织成全双工堆栈230,其可以在任一方向(未显示)上处理应用和转发器之间的包。而且,组件还可以组织成处理应用之间的包的流的应用间堆栈,或者组织成代表转发器处理包的流的“中继”堆栈(例如安全或防火墙相关操作)。在一些实施例中,组件可以源于外部传输框架200。例如,库/API组件可以向传输框架200提供库/API组件需要在堆栈中实例化的组件。替代性地,如果库/API组件请求使用包括传输框架200中丢失的组件的堆栈,则传输框架200可以从远程系统请求此组件。传输框架200可以从另一服务、从远程计算机、从远程计算机上的传输框架等输入组件。在一些实施例中,传输框架200可以从本地组件库访问组件,并实例化需要使用该组件的每个堆栈中的组件。如果组件在本地组件库中不可用,则传输框架200可以从远程系统(例如驻存组件存储库的服务器)访问组件,和/或从组件市场购买组件。组件市场可以包括购买在远程系统上运行的传输框架组件的商店。因此,传输框架200可以从包括基本堆栈组件组的组件存储库开始。这些基本组件组可以局限于实现一组基本库或API特征的库/API组件202。然后,随时间的过去,当用户从操作环境安装要求特定传输堆栈或另外的特征的应用时,传输框架200可以下载并安装与用户的应用有关的附加组件。这有效地将传输框架200定制成用户期望的功能,以及用户运行的应用类型。传输框架200不需要预安装用户的应用不需要的任何堆栈组件。同样,用户或其应用都不需要显式地安装他们需要的任何堆栈组件。因此,传输框架200自动地(例如没有用户或应用介入)检索并安装它需要的组件。在一些实施例中,传输框架200可以上传规定传输框架200是否和/或如何可以购买组件的“策略”。此策略可以规定在用户方可以购买哪种类型的支付组件,对于用户的特定的购买限制和/或购买这些组件的过程。例如,此策略可以在用户一方购买(或下载)组件之前,要求应用或操作系统从用户获得购买(或下载)组件的许可。另一方面,如果用户已经许可本地应用或远程服务安装任何免费(和/或任何付费组件)的许可,则传输框架200可以在应用和/或远程服务进行请求时,继续安装这些类型的组件。对本地用户或应用自动配置堆栈在一些实施例中,传输框架200可以基于来自本地应用或远程传输框架的传输需求自动地(例如没有用户或应用介入)配置堆栈。同样,传输框架200可以根据来自操作环境的需求,诸如来自计算机的操作系统加载组件。如果存在满足传输需求的堆栈,则传输框架200可以使用此现有的堆栈。然而,如果这种堆栈不存在,则传输框架200自动地实例化可以满足传输需求的堆栈(和堆栈组件)。例如,应用可以请求实现“可靠传输”的堆栈,传输框架200可以查询本地组件存储库,远程组件存储库或组件市场,以获得实现可靠地传输包的应用需求的组件。一旦传输框架200获得所需组件,对于包括所需组件的应用,传输框架200自动地实例化自定义堆栈。在一些实施例中,传输框架200可以基于与运行的应用关联的应用定制加载哪些组件。例如,当系统管理员登陆计算机时,传输框架200可以加载为系统管理员记录流量统计的流量控制组件的版本。这允许系统管理员检查应用的流量、行为或性能。另一方面,当普通用户登陆计算机时,传输框架200可以加载实现应用的基本需求的简单的流量控制器。举另一示例,如果用户不是系统管理员,则传输框架200可以加载不会对系统管理员加载的附加组件,诸如监视或管理(例如限制或约束)用户的流量、行为或资源需求的组件。传输框架200可以加载将用户的流量约束到预定配额(例如带宽配额)内和/或执行防火墙(例如控制网络流量或用户可以访问的内容的类型)的组件。图3呈现根据实施例图解说明对于应用自动配置堆栈的方法300的流程图。具体地,系统可以通过传输库或API从应用接收呼叫(操作302)。在一些实施例中,库或API是通过一组传输组件实现的,使得每个组件执行通过库或API可访问的功能。系统可以通过实例化实现此功能的附加组件将附加功能添加到库或API。在接收功能呼叫之后,系统可以识别与功能呼叫关联的堆栈组件(操作304),并将功能呼叫转发到此堆栈组件(操作306)。在一些实施例中,用于库或API功能呼叫的堆栈组件可以包括一组传输需求,他们规定对执行给定操作所需的堆栈的描述。传输需求可以包括策略、一组组件和组件组需要排序成堆栈使用的次序。因此,系统确定库或API的堆栈组件是否规定一组传输需求(操作308)。如果是,则系统生成或更新传输堆栈以满足这组传输需求(操作310)。对远程系统或服务自动配置堆栈传输框架可以基于发送者或接收者的身份(例如本地应用或远程计算机上的应用)加载特定组件,或者提供特定组件。例如,远程视频流服务可以在传输之前,使用自定义压缩和/或加密算法预处理其数据,对于客户端应用,可以作为自定义传输组件的主机,可以解压缩和/或解密服务包。因此,当本地计算机发起与远程视频流服务的会话时,远程服务可以向客户端应用提供此自定义组件,作为对初始化流会话的需求。如果客户端计算机拒绝自定义组件(例如由于当前用户的受限许可),则远程视频流服务可以拒绝建立流会话的请求。另一方面,如果客户端计算机的传输框架接受视频流服务的自定义组件,并在堆栈中加载此组件,则远程视频流服务可以继续将压缩的和/或加密的流流传送到客户端应用。因此,本地应用可以在不知道远程服务的传输需求,并且应用不必规定远程服务到本地传输框架的传输需求时,与远程服务通信。这允许远程服务在任何时间改变其传输需求,而不需要用户安装应用的更新版本。如果远程服务改变其传输需求,则远程服务通知本地传输框架这些传输需求。如果本地传输框架丢失新的或更新的传输需求的必需组件时,本地传输框架可以从远程服务获得此组件(例如如果远程服务已经提供自定义组件),或者可以从预定的组件库或市场请求此组件。图4呈现根据实施例图解说明处理传输堆栈中进入的包的方法400的流程图。操作中,系统可以从网络接口接收包(操作402),标识要处理包的传输堆栈(操作404)。系统还可以确定包是否包括一组传输需求(操作406)。如果是,则系统更新传输堆栈以满足该组传输需求(操作408)。自动更新堆栈组件在一些实施例中,堆栈组件的开发者可以更新堆栈组件以添加新特征,校正安全问题或校正执行错误。当堆栈组件的新版本变成可用时,传输框架可以下载组件的更新版本,用新组件版本的实例替换堆栈中旧组件版本的任何实例。图5呈现根据实施例图解说明更新一个或多个堆栈以包括堆栈组件的更新版本的方法500的流程图。操作中,系统可以获得堆栈组件的更新版本(操作502)。例如,传输框架可以包括可用组件的本地内容存储库,系统可以周期性查询远程组件存储库或市场以更新到本地组件。如果组件存在更新,则系统继续下载组件的更新版本,在本地内容存储库中存储更新版本。如果系统接收组件的更新版本,则系统选择其中的堆栈组件被实例化的堆栈(操作504),用堆栈组件的更新版本替换堆栈中的组件的实例(操作506)。新组件版本可以包括更新的堆栈需求,传输框架可以处理堆栈需求以下载并实例化在当前堆栈中还没有被实例化的任何其它所需组件。系统确定更新的堆栈组件是否包括更新的传输需求组(操作508)。如果包括,则系统更新堆栈,以满足组件的更新的传输需求(操作510)。系统然后确定组件是否在其它堆栈中被实例化(操作512)。如果是,则系统可以返回操作504,以选择另一堆栈来基于堆栈组件的更新版本进行更新。满足传输需求图6呈现根据实施例图解说明自动配置堆栈以满足一组传输需求的方法600的流程图。操作中,系统获得由传输框架的自定义堆栈满足的一个或多个传输需求(操作602)。这些传输需求可以源于应用、操作环境,源于远程服务或源于堆栈组件。系统可以通过选择要满足的需求,来处理这组传输需求(操作604)。系统可以确定组件是否违反所选需求(操作606),如果违反,则前进到从堆栈中去掉组件(操作608)。系统还可以确定在预定的组件存储库中的组件是否可以用来满足需求(操作610)。如果满足,则系统从存储库中获得堆栈组件(操作612),并实例化自定义堆栈中的组件(操作614)。一旦系统已经满足传输需求,系统可以确定是否存在需要被满足的其它传输需求(操作616)。如果存在,则系统返回操作604以满足另一传输需求。对CCN对象自动配置堆栈当在内容中心网络(CCN)中操作时,传输框架可以基于兴趣的名称或名称前缀和/或基于内容对象的名称或名称前缀加载组件。如果传输框架接收对特定的名称前缀的兴趣,则传输框架可以确定如何基于兴趣的名称或名称前缀构造堆栈以处理兴趣。类似地,传输框架可以使用内容对象的名称或名称前缀来确定如何构造用于处理内容对象的堆栈。例如,如果本地应用正在传播对视频流服务的名称前缀(例如,对于来自加利福尼亚州的洛斯加托斯的Netflix公司的视频流服务,名称前缀为“/netflix”)的兴趣,传输框架可以查询传输配置数据库,以确定对于该名称前缀需要实例化哪些传输组件。传输框架还可以查询传输配置数据库以确定可以从哪下载这些组件(如果是本地不可用的)以及这些组件需要如何组合以执行对于名称前缀的自定义堆栈。在一些实施例中,当本地应用传播对特定的名称前缀的兴趣时,网络(例如来自互联网服务提供商(ISP)的网关服务器或与名称前缀关联的内容服务器)可以返回配置计算机可以如何从此名称前缀接收包的控制包。例如,传输框架可以接收规定转发器可以传播对此名称前缀的兴趣的最大速率的控制包。传输框架可以对于应用的数据传输包(例如对于传输兴趣)将此控制包转发到流量控制器组件,这允许流量控制器配置其设置以遵守ISP的流量控制需求。因此,传输框架可以根据从计算机网络(诸如从网络提供商或从内容生产者)接收的外部需求自动配置堆栈。对路径中的网络元件自动配置堆栈在现有系统中,远程实体可以最多规定曾用来生成数据流的编码或加密机制。然而,这要求本地应用已经有与流的编码或加密机制对应的预安装的解码器或解密组件。如果本地应用没有此预安装的组件,则应用会不能处理来自远程实体的流。在一些实施例中,在本地传输框架和远程传输框架之间的路径中的网络元件可能要求本地传输框架安装组件。例如,本地计算机或远程计算机的转发器可能要求本地传输框架安装组件,诸如安装安全相关的组件或流量控制组件。举另一示例,本地网络或ISP的路由器或ISP的网关可以向本地传输框架发送规定当前应用或任何应用的堆栈配置的包。此堆栈配置可以规定对于堆栈要实例化的组件,并且可以规定对于此组件的堆栈中的次序。本地传输框架可以访问策略(例如对于本地用户,对于应用或对于操作环境)以确定是否允许传输框架为用户、应用或操作环境实例化堆栈中的组件。传输框架可以自动地安装组件,不需要用户、应用或操作环境介入。此外部实体可以实现此需求,并且如果包不是由所需组件适当格式化(例如签名)的,则可以拒绝处理来自本地传输框架的包。本地传输框架可以从本地内容库或者从远程服务器为主机的内容库或者内容市场访问此所需组件。在一些实施例中,本地传输框架可以从强加对此组件的需求的实体获得所需组件。对检测的网络服务自动配置堆栈在一些实施例中,传输框架可以检测网络上有传输框架可用的服务(或者可以由网络上的节点诸如路由器通知有服务)。例如,这些服务之一可以是缓存已经由本地装置或其它网络装置(例如相同网络上的对等装置)接收的包或数据的缓存。本地传输框架可以访问缓存服务以访问由应用或操作环境请求的数据,而不需要应用或操作环境规定传输框架可以从此特定缓存访问数据。实际上,本地应用和/或操作环境不需要知道可用服务;传输框架在检测到服务时,自动配置其自身以使用代表本地应用和操作环境的服务。例如,一旦检测到服务,传输框架可以确定堆栈需求是否与可用服务关联。系统可能已经实例化满足堆栈需求的组件,但没有利用可用服务,这一点是可行的。因此,一旦检测兼容的堆栈需求,传输框架可以实例化可以利用可用服务的所需组件的版本。在一些实施例中,传输框架可以基于由本地网络上的网络元件支持的特征加载组件。例如,下一跳邻居可以请求它接收的包以待压缩。响应于检测下一跳邻居(或网络中的另一节点)的此特征,传输框架可以在生成待通过网线传输的包之前加载压缩数据的压缩组件。在一些实施例中,堆栈需求可以规定组件黑名单或参数黑名单。组件黑名单可以规定禁止传输框架加载的一个或多个组件。类似地,参数黑名单可以规定禁止使用特定组件的一个或多个参数。禁止参数可以特定于特定组件或特定类型的组件(例如流量控制器的带宽上限),或者可以是通用的,对所有实例化组件适用。启动时自动配置堆栈在一些实施例中,当计算装置启动时,计算装置的传输框架配置对本地操作环境(例如操作系统)的堆栈。传输框架可以从本地网络的路由器接收配置传输框架如何对操作环境创建堆栈的参数。这些配置参数可以包括需要在堆栈中实例化的一组组件,可以包括这些组件如何在堆栈中排序的描述,这些组件需要遵循的策略和/或一个或多个这些组件的参数。配置参数还可以包括其它配置信息,诸如本地接口的CCN网络信息(例如本地接口的CCN名称前缀),本地接口或服务的互联网协议(IP)地址,网关IP地址等。图7图解说明根据实施例促进自动配置堆栈的示例性设备700。设备700可以包括可以通过有线或无线通信信道相互通信的多个模块。设备700可以使用一个或多个集成电路实现,可以包括比图7中所示的更多或更少的模块。而且,设备700可以集成于计算机系统中,或者实现为能够与其它计算机系统和/或装置通信的单独的装置。具体地,设备700可以包括通信模块702、堆栈接口模块704、堆栈更新模块706、内容选择模块708、组件获得模块710和组件更新模块712。在一些实施例中,通信模块702可以通过计算机网络向其它网络节点发送数据包,或者从其它网络节点接收数据包,计算机网络诸如内容中心网络。堆栈接口模块704可以使用相应的传输堆栈处理来自应用的API呼叫,并且可以使用相应的传输堆栈处理通过计算机网络接收的网络包。堆栈更新模块706可以基于从应用、数据包或堆栈组件接收的堆栈需求创建和/或更新传输堆栈。内容选择模块708可以从例如本地组件存储库、远程组件存储库或组件市场选择满足堆栈需求的堆栈组件。组件获得模块710可以从本地存储库、远程存储库、组件市场获得组件,或从远程网络服务获得网络包。组件更新模块712可以检测更新版本的组件何时变成可用,并用较新版本的组件更新堆栈中的组件。图8图解说明根据实施例促进自动配置堆栈的示例性计算机系统802。计算机系统802包括处理器804、存储器806和存储装置808。存储器806可以包括充当管理存储器的易失性存储器(例如RAM),并且可以用来存储一个或多个内存池。而且,计算机系统802可以耦连到显示装置810、键盘812和定位装置814。存储装置808可以存储操作系统816、传输系统818和数据832。传输系统818可以包括指令,这些指令在由计算机系统802执行时,可以引起计算机系统802执行本申请中描述的方法和/或过程。具体地,传输系统818可以包括用于在计算机网络(诸如内容中心网络)上向其它网络节点发送数据包,或者从其它网络节点接收数据包的指令(通信模块820)。而且,传输系统818可以包括用于使用相应的传输堆栈处理来自应用的API呼叫以及使用相应的传输堆栈处理通过计算机网络接收的网络包的指令(堆栈接口模块822)。传输系统818还可以包括用于基于从应用、数据包或堆栈组件接收的堆栈需求创建和/或更新传输堆栈的指令(堆栈更新模块824)。传输系统818可以包括用于从例如本地组件存储库、远程组件存储库或组件市场选择满足堆栈需求的堆栈组件的指令(组件选择模块826)。而且,传输系统818可以包括用于从本地存储库、远程存储库、组件市场获得组件或者从远程网络装置获得网络包的指令(组件获得模块828)。传输系统818还可以包括用于检测组件的新版本何时变成可用,并用组件的更新版本更新堆栈中的组件的指令(组件更新模块830)。数据832可以包括通过本申请中描述的方法和/或过程作为输入请求的或作为输出生成的任何数据。具体地,数据832可以存储至少:堆栈组件存储库、传输框架和一组传输堆栈的描述。在此详细描述中描述的数据结构和代码通常存储于计算机可读存储介质上,计算机可读存储介质可以是可以存储代码和/或数据以由计算机系统使用的任何装置或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁和光存储装置(诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字通用盘或数字视频盘))或能够存储计算机可读介质的现在已知或以后开发的其它介质。在详细描述部分描述的方法和过程可以体现为代码和/或数据,这些代码和/或数据可以存储在如上文描述的计算机可读存储介质中。当计算机系统读、执行计算机可读存储介质上存储的代码和/或数据时,计算机系统执行体现为数据结构和代码并存储于计算机可读存储介质中的方法和过程。而且,上面描述的方法和过程可以包括于硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、现在已知或以后开发的其它可编程逻辑器件。当硬件模块被激活时,硬件模块执行其中包括的方法和过程。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1