首页> 中国专利> 软件定义信息中心网络中基于内容的流量工程

软件定义信息中心网络中基于内容的流量工程

摘要

一种由网络控制器实施的方法,所述方法包括获取内容的元数据,其中所述内容由客户端设备请求,基于所述内容的所述元数据将一个或多个网络资源分配给所述内容,以及将标识所述分配的网络资源的消息发送给交换机以引导所述内容提供给所述客户端设备,其中所述交换机由所述网络控制器控制并且用于使用所述分配的网络资源将所述内容转发给所述客户端设备。

著录项

  • 公开/公告号CN104885431A

    专利类型发明专利

  • 公开/公告日2015-09-02

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201380064375.8

  • 申请日2013-12-13

  • 分类号H04L29/08(20060101);H04L29/06(20060101);H04L12/721(20060101);H04L12/851(20060101);

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 10:40:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-20

    授权

    授权

  • 2015-09-30

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20131213

    实质审查的生效

  • 2015-09-02

    公开

    公开

说明书

相关申请案交叉申请

本发明要求2012年12月13日由塞德里克·韦斯特法尔(Cedric Westphal) 等人递交的发明名称为“透明管理开放流(OpenFlow)网络中的内容分发 的端点不可知方法(An End-Point Agnostic Method to Transparently Manage  Content Distribution in an OpenFlow Network)”的第61/736,833号美国临 时专利申请案以及2012年12月19日由Cedric Westphal等人递交的发明 名称为“提取用于软件定义信息中心网络中的流量工程和防火墙应用的 元数据和上下文的方法(A Method to Extract Metadata and Context for  Traffic Engineering and Firewalling Applications in a Software Defined  Information Centric Network)”的第61/739,582号美国临时专利申请案的 在先申请优先权,这两个在先申请的内容均以引入的方式并入本文本,如 全文再现一般。

关于由联邦政府赞助研究或开发的声明 研究或开发

不适用。

参考缩微胶片附录

不适用。

背景技术

缓存提供了一种临时存储内容或对象的通用机制,通常响应于对缓存 设备中存储的内容的频繁请求或需求。如果缓存位于或靠近客户端设备发 送请求的区域,那么内容的最终接入延迟可能较低。传统缓存方案可能要 求对包含客户端和服务器的端主机进行某种形式的修改。例如,在传统缓 存方案中,代理服务器可用于指向缓存,并且对于一种特定类型的流量, 客户端设备的网络配置可更改以指向该代理服务器。在客户端数目为上千 甚至上百万量级的通用网络中,例如在内容分发系统和使用此类系统的公 司(例如,NETFLIX、AKAMAI和FACEBOOK)中,传统缓存方案可能 无法很好地扩展。此外,传统缓存方案可能容易出现错误并且可能在某些 大型系统中难以维护。例如,如果代理变更了其因特网协议(IP)地址, 则可能需要重新配置使用该代理的客户端(对于某些网络,可为上百万量 级)。此种量级的客户端重配置可能实施起来比较复杂。

研究人员尝试的某些缓存方案试图修改端点处的网络配置以指向代 理,随后这些方案可用于执行内容识别和后续内容到流的映射。在这些方 案中,连接时可能需要对使用代理的客户端(尽管不是服务器)进行重配 置。然而,由于可能需要在大量客户端设备上进行客户端配置的修改(或 运行脚本),所以实际限制可能会导致该方案繁琐并且容易出错。

此外,研究人员尝试的其它缓存方案试图修改客户端和服务器中的网 络栈以支持动态内容识别和内容到流的映射。在该情况下,服务器网络可 被修改以实施反馈机制,这样当内容在网络中推送时可能会生成标记。该 方法可能无需动态内容识别,并且内容可在本质上被映射到传输控制协议 (TCP)流。然而,实际限制可包括向每个服务器提出修改的潜在困难。

发明内容

在一项实施例中,本发明包括一种由网络控制器实施的方法,所述方 法包括获取内容的元数据,其中所述内容由客户端设备请求,基于所述内 容的所述元数据将一个或多个网络资源分配给所述内容,以及将标识所述 分配的网络资源的消息发送给交换机以引导所述内容提供给所述客户端 设备,其中所述交换机由所述网络控制器控制并且用于使用所述分配的网 络资源将所述内容转发给所述客户端设备。

在另一项实施例中,本发明包括一种装置,包括接收器,用于从位于 与所述装置相同的网络中的交换机接收内容的元数据,其中所述内容由客 户端设备请求;耦合到所述接收器的处理器,用于基于所述内容的所述元 数据将一个或多个网络资源分配给所述内容,以及使用所述分配的网络资 源引导所述内容提供给所述客户端设备;以及耦合到所述处理器的发射器, 用于将标识所述分配的网络资源的消息发送给所述交换机。

在又一项实施例中,本发明包括一种由位于符合软件定义网络(SDN) 标准的网络中的交换机实施的方法,所述方法包括接收对内容的请求,其 中所述请求来源于客户端设备,提取所述内容的元数据,将所述元数据转 发给用于管理所述网络的控制器,以及从所述控制器接收标识分配用于将 所述内容提供给所述客户端设备的一个或多个网络资源的指令,其中所述 控制器至少部分基于所述元数据分配所述一个或多个网络资源。

在又一项实施例中,本发明包括一种位于网络中的交换机,所述交换 机包括至少一个接收器,用于接收对内容的请求,其中所述请求来源于客 户端设备;耦合到所述至少一个接收器的处理器,用于提取所述内容的元 数据;以及耦合到所述处理器的一个或多个发射器,用于将所述元数据转 发给管理所述网络的控制器,其中所述至少一个接收器进一步用于从所述 控制器接收标识分配用于将所述内容提供给所述客户端设备的一个或多 个网络资源的指令,所述控制器至少部分基于所述元数据分配所述一个或 多个网络资源。

结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和 其它特征。

附图说明

为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的 以下简要说明,其中的相同参考标号表示相同部分。

图1是显示网络模型的实施例的端到端视图的示意图。

图2是显示突出某些网络部件的实施例网络架构的示意图。

图3是软件定义网络(SDN)实施形式的实施例的图。

图4是显示消息交换协议的实施例的图。

图5是消息交换协议的另一实施例的图。

图6是显示模拟结果的图。

图7是显示模拟结果的另一图。

图8是可由网络控制器实施的方法的实施例的流程图。

图9是可由SDN交换机实施的方法的实施例的流程图。

图10是网络单元的实施例的图。

图11是计算机系统的实施例的图。

具体实施方式

首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但 所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前 已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图 和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附 权利要求书的范围以及其等效物的完整范围内修改。

OpenFlow可用作内容缓存的使能技术。OpenFlow是一种可使研究人 员在园区网中运行实验协议的开源软件定义网络(SDN)标准或协议。在 传统的路由器或交换机中,快速包转发(数据路径)和高层路由决策(控 制路径)可在同一设备上实施。OpenFlow方法可将数据路径和控制路径功 能分离。例如,数据路径或数据平面仍可驻留在交换机上,但是高层路由 决策可移至集中式网络控制器,集中式网络控制器可使用监控网络域的网 络服务器来实施。OpenFlow交换机和OpenFlow控制器可通过OpenFlow协 议进行通信,该协议定义了那些表示为packet-received、send-packet-out、 modify-forwarding-table和get-stats的消息。

OpenFlow交换机的数据平面可展示清洁流表抽象层。流表中的每个条 目可包含一组待匹配的包字段,以及与包字段关联的动作(例如, send-out-port、modify-field或drop)。在使用中,当OpenFlow交换机接 收到一个以前从未见过的包并且该包没有匹配的流条目时,OpenFlow交换 机可将包发送给监控交换机的OpenFlow控制器。控制器随后可决定如何 处理这个包。例如,控制器可丢弃这个包,或者将流条目加至交换机,该 条目指示交换机如何在未来转发类似包。实际上,由于存在能够在网络中 配置所有设备的集中式控制器,与其它类型的网络相比,OpenFlow网络可 能相对易于管理和配置。此外,控制器可检查流经网络的网络流量并且基 于网络流量的性质作出路由决策。

此外,可基于SDN实施信息中心网络(ICN)架构以通过在不同的级或 层操作内容来缓解与传统网络关联的问题。ICN可使用内容名称来提供内容 路由和内容分发等网络业务。为了推进内容业务,ICN架构可建立内容管理 层以基于内容名称处理路由。在ICN中,某些网络节点可被假设为具有不同 的临时存储级。ICN节点可提供缓存来存储按内容名称索引的内容。

本发明可通过教示一种用于在网络环境中进行内容管理的端点(例如, 服务器、客户端等)不可知方法克服前述问题或限制。所公开的实施例可 识别网络中的一个或多个数据流或业务流并将业务流映射到一个或多个 内容(例如,音频、文本、图像、视频等)。另一方面,所公开的实施例 可识别内容,将识别的内容映射到一个或多个数据流,以及路由数据流。 此外,端点(服务器和客户端)不可知方法可用于在内容的网络层或信息中 心网络(ICN)上提取内容元数据,ICN可基于SDN。内容元数据可描述文 件名称、内容大小、多用途网络邮件扩展(MIME)类型等内容属性。提取 内容元数据可“免费”实现为ICN范式的附属品。内容元数据在被提取之后 可用于基于大小和热度的函数执行各种元数据驱动业务或功能,例如有效防 火墙、流量工程(TE)、网络资源的其它分配,以及全网缓存管理。各种目 的或目标,例如带宽优化、缓存上的磁盘写优化等,可在设计这些功能时使 用,并且优化目的可随应用而改变。例如,本文所公开的实施例可在不对服 务器或客户端作出任何修改的情况下减少网络内容和/或带宽使用的接入 延迟。

图1是显示网络模型100的实施例的端到端视图的示意图,网络模型 100可包括一个或多个网络或网络域。例如,图1描绘的网络模型100包括 客户端网络110、业务提供商网络120,以及两者之间的中间网络130。一个 或多个终端用户或客户端(例如,客户端112)可位于客户端网络110中, 一个或多个服务器(例如,服务器122)可位于业务提供商网络120中。 网络130连接客户端网络110和业务提供商网络120。应注意,尽管客户 端112、服务器122以及它们的中间网络节点被描绘为不同网络,但是取 决于不同实施方案,它们也可位于同一网络中。

网络130可被实施为SDN网络(例如,将OpenFlow用作通信协议)。 在该情况下,网络130的主要部件可包括一个或多个缓存元件(例如,缓 存132、134和136)、一个或多个代理元件(例如,代理138)、一个或 多个交换机(例如,OpenFlow交换机140),以及至少一个控制器(例如, OpenFlow控制器142)。控制器142可用于运行控制所有其它网元的模块。 代理138和缓存132至136可与控制器142进行通信,从而代理138和缓 存132至136可被视作非转发OpenFlow元件。

SDN网络130可由控制器142控制(在不失一般性的情况下,网络130 中仅示出一个控制器142)。控制器142可运行(控制平面内的)内容管理 层,内容管理层管理内容名称(例如,以文件名称形式),将这些名称转换 为可路由地址,以及管理缓存策略和流量工程。例如,控制平面可将关于内 容层的信息转换为流规则,流规则随后可被下推到包含交换机140的交换机。 网络130中的某些或所有交换机可拥有能力解析来自包的内容元数据并将内 容元数据传递给控制器142中的内容管理层。

本发明可采用网络运营商的观点。假设内容由客户端112从服务器122 请求,这两个部件均在网络130之外。在实施例中,网络130可使用管理内 容的控制平面进行操作。即,当来自客户端112的内容请求到达网络130中 时,控制平面可(在缓存(例如,缓存132)内部,或源服务器122外部) 定位内容的合适副本。此外,当来自服务器122的内容对象到达网络130中 时,控制平面可拥有能力路由内容并(在路径上或路径之外)对发往缓存的 内容流做分叉。此外,控制平面可利用内容中心网络(CCN)的兴趣和数据 包等语义来识别内容。或者,控制平面可例如使用SDN概念建立在现有网络 之上。本发明可在任一上下文中工作,但是本文中大多描述为建立于SDN之 上,这样传统客户端和传统服务器可与缓存网络130集成。

业务提供商网络120可使用一个或多个指定的入口交换机连接到网络 130。所公开的实施方案可能不要求任何对客户端网络110或业务提供商 网络120的修改。网络130可实施为可以插入现有网络架构中的内容分发 系统。例如,网络130可插入在两者之间并且可通过某种隧道协议连接每 个网络。网络130可在使网络管理变得相对容易和无缝的同时降低内容访 问的延迟。

当客户端112想要通过发送包含对内容的请求的包来连接服务器122 (例如,提供或发起内容的内容服务器)时,入口OpenFlow交换机(例 如,交换机140)可将包转发给控制器142。控制器142可写入流以将传 输控制协议(TCP)连接从客户端112转移到代理138。代理138可解析 客户端的请求以检查内容是否在网络130中的某个位置进行缓存。如果内 容未在网络130中缓存,那么代理138可通知控制器142,控制器142随 后可选择缓存来存储内容,例如通过写入流将内容副本从服务器122转移 到缓存。在每个步骤中,控制器142可在网络130中维持所有缓存的全局 状态,例如哪个缓存存储指定内容。

在使用中,当请求先前缓存且被索引的内容时,内容可从缓存(例如, 缓存132)而不是服务器122返回。可对客户端112透明的代理138(或 未在图1中示出的另一代理)可用于在服务器122和缓存132之间复用。 当控制器142看见客户端112正从服务器122请求内容时,控制器142可 将流重定向到代理138并分配端口号。因此,控制器142可知晓代理138 上的端口号之间的映射、源端口和源IP地址之间的映射,以及目的端口 和目的IP地址之间的映射。当缓存缺失情况下的服务器122(或缓存命中 情况中的缓存132)发回携带内容的数据流时,则可使用控制器142中存 储的信息将数据流映射回原始服务器122。

网络130可独立于包含在服务器122和客户端112的端设备上运行的 任意软件允许内容识别和映射,端设备可对内容位置保持不可知。此外, 可能无需对端设备或其本地网络110和120进行修改。如果服务器120和 客户端112位于图1所示的两个不同网络中,那么网络130可插入在服务 器120和客户端112之间作为可以无缝识别内容的中间网络。另外,从端 设备角度而言,内容管理和路由过程可保持透明,即端设备可能不会注意 到内容请求或提供方式的任何变化。因此,本发明与现有机制不同,现有 机制要求对端设备或其本地网络的配置进行某种形式的修改。

本发明可将识别的内容映射到网络130中的一个或多个数据流或业务 流。可使用包头中交换机可辨认的字段将识别的内容映射回网络130中的 数据流,字段包括端口号、私有IP地址、虚拟局域网(VLAN)标签,或 包头中的字段的任意组合。OpenFlow控制器142可维护映射具有服务器和 客户端证书的代理138上的端口号的数据库。因此,在客户端的端处,数 据流可从代理138而非服务器122发起,因为OpenFlow可允许在经过代 理138的数据流中将源地址和端口号重写为服务器120的源地址和端口号。

缓存132至136可位于由控制器142控制的网络130中。一旦识别出 内容,控制器142可决定对内容进行缓存。具体而言,控制器142可选择 缓存(假设缓存132),写入合适的流以将内容副本重定向到缓存132, 将缓存132的位置记录为内容的位置。在内容服务中,当控制器142看见 对同一内容的新请求时,控制器142可将新请求重定向到控制器142存储 内容的缓存132。从缓存132而非服务器122获取内容可能导致访问延迟 缩短,因为与服务器122相比看,缓存132地理上距离客户端112更近。 此外,由于无需每次都从服务器122获取内容,所以可节省缓存132和服 务器122之间的网络带宽,从而提升总体网络效率。

图2是显示网络架构200的实施例的示意图,该网络架构突出了图1 所示的某些网络设备中的详细部件。架构200可以是用于使用内容语义的 显式有限性质的可扩展架构。架构200中的每个网络设备可被实施,然而, 例如使用硬件或硬件和软件的组合来实施更为合适。例如,代理138可以纯 Python的形式写入并且可使用称作tproxy库的库。tproxy库可提供方法处 理超文本传输协议(HTTP)头,因为没有其它方式来访问代理138中的 任何TCP或IP信息。代理138可使用应用编程接口(API),例如表征状 态转移(REST)API与控制器142进行通信。例如,代理138和控制器 142之间的通信可使用以下命令进行实例化以调用定义为tproxy的代理函 数:

sudo tproxy<script.py>-b 0.0.0.0:<port number>

根据所公开的实施方案,代理138可在不同端口上运行代理函数的多 个实例。每个实例可代理一个<客户端,服务器>对。表1示出了代理算法 的实施例。本领域普通技术人员将认识到表1中的伪码和本文所公开的其 它表的功能,出于简洁性目的,这些表不在本文中详细描述。

表1:代理138实施的示例性算法

在一些实施例中,所公开的缓存(例如,缓存132至136)与现有因 特网缓存在许多方面均有不同。例如,所公开的缓存可与OpenFlow控制 器(例如,控制器142)连接。因此,所公开的缓存可能不会简单地实施 传统的缓存协议,因为这里缓存可能无需这么做。标准的因特网缓存可看 见请求,并且如果存在缓存缺失,可将请求转发给目标服务器。当目的服 务器发回响应时,标准的因特网缓存可保存内容副本并通过请求元数据对 副本进行索引。因此,TCP连接可在标准的因特网缓存和服务器之间建立, 并且TCP连接可使用套接接口。相比之下,所公开的缓存的某些实施例可 能仅仅看见对请求的响应而不是请求本身。由于在这些实施例中,所公开 的缓存可能仅仅监听连接的一侧,所以该缓存不具有与服务器的TCP会话, 因此无法使用套接级抽象层进行操作。因此,在这些实施例中,所公开的 缓存可监听并读取来自网络接口的包。

在实施例中,所公开的缓存(例如,缓存132、134或136)可包括含 可使用Redis服务器来实施的队列的多个部件或模块、监视用于文件写入 的缓存目录的模块、返回内容的网络服务器,以及侦听网络接口并组装包 的模块。如图2所示,缓存132包括Redis队列212、捕捉器模块214、看 门狗模块216,以及网络服务器218。

Redis队列212可在后端运行,后端用作简单的排队机制。Redis是一 个开源、支持网络、基于内存、具有可选持久化的键值数据存储器。Redis 队列212可用于在捕捉器模块214和看门狗模块216之间传递数据(例如, IP地址)。捕捉器模块214可将IP地址放入Redis队列212中,Redis队 列212可由看门狗模块216读取。

捕捉器模块214可负责监听接口、读取包,和/或组装包。捕捉器模块 214可以C++等任意编程语言写入并且可使用称作libpcap库的库。可执行 程序可将接口名称作为命令行参数并且可开始监听该接口。捕捉器模块 214可收集具有相同确认(ACK)号的包。当捕捉器214看见完成(FIN) 包时,捕捉器模块214可提取ACK号并且组装具有相同ACK号的所有包。 在该步骤中,捕捉器模块214可丢弃重复的包。由于缓存132和服务器122 之间不存在TCP连接,所以缓存132在重构包时可知晓某些包是否缺失, 但是缓存132可能不会请求在该路径上(例如,在分叉交换机和缓存132 之间)丢弃的缺失包。换言之,缓存132可监听客户端-代理连接并且知道 某些包是否缺失,但是可能无法替代缺失包。捕捉器模块214随后可从提 取且组装的包中提取数据并且可使用默认名称写回到磁盘文件中。捕捉器 模块214还可将从包中提取的源IP放入Redis队列212。

看门狗模块216可使用一组REST调用与控制器142通信。看门狗模 块216可以Python形式写入并且可使用称作inotify库的库来监听用于文 件写入事件的缓存目录。当捕捉器模块214将文件写入磁盘时,看门狗模 块216可被调用。看门狗模块216可调用控制器142的API以获取文件名 称(使用Redis队列212中存储的IP作为参数)。看门狗模块216随后可 将HTTP头从文件剥离,更改文件名称,并写回文件名称。在保存文件之 后,看门狗模块216可将确认消息(表示为ACK)发回给控制器142,指 示文件已在缓存132中缓存。

网络服务器218可实施为任意缓存服务器模块(例如,SimpleHTTPServer 的扩展版本)。当客户端请求内容时,网络服务器218可将内容返回给客户端。 网络服务器218可以任意合适的编程语言(例如,Python)写入。表2所示为 缓存132使用的实施算法的实施例。

表2:缓存132实施的示例性算法

控制器142可以任意合适的形式来实施,例如实施为Floodlight控制器, 其可为企业级的、Apache许可的、基于Java的OpenFlow控制器。控制器142 可包括缓存管理器模块(表示为CacheManager),其可基于Java。Floodlight 可配备有标准的转发模块,其可建立任意主机之间的路径。控制器142可订阅 表示为PACKET_IN事件的消息并且可维护两个用于查询的数据结构。表示为 cacheDictionary的第一数据结构222可用于将<客户端,服务器>对映射到请求 文件名称。可使用REST API对第一数据结构222进行查询来获取具有<客户 端,服务器>信息的请求所对应的文件名称。表示为requestDictionary的第二 数据结构224可将内容及其位置的映射存储为缓存的IP和端口号。表3所示 为控制器算法的实施例。

表3:控制器142实施的示例性算法

如上所述,所公开的机制可在网络层观察和提取内容元数据,并且使用 内容元数据来优化网络行为。将控制平面和转发平面分离的新兴SDN理念展 示了ICN架构的示例性实施例。具体而言,本发明教示现有SDN控制平面 如何扩充来包括支持TE和防火墙的内容管理层。所公开的机制可能不需要 涉及任何应用层。

图3是SDN实施方案300的实施例的图,SDN实施方案300突出了扩 充的控制平面302和转发平面304之间的交互。控制平面302可以是并入了 传统控制平面310和内容管理层320的增强型控制平面,内容管理层320具 有图3所示的用于每个任务的多个模块。转发平面(有时称作数据平面)304 也可以是增强型平面,用于将内容元数据330发回给实施控制平面302的控 制器,以及控制器可作出转发决策。控制平面302可将流推送回转发平面304。 因此,实施方案300形成了闭合的反馈回路。

在使用中,OpenFlow控制器可部署模块化系统以及用于模块监听 PACKET_IN消息等OpenFlow事件332的机制。因此,内容管理层320可实 施为控制器上的模块或单元。内容管理层320可订阅PACKET_IN消息。当 内容管理层320获取包时,内容管理层320可提取元数据并且随后丢弃该包。 本架构允许控制器侧在必要时具有链接在一起的多个内容管理层。此外,控 制平面310可将流334发给实施转发平面304的交换机,并且流334建立了 规则用于确定在交换机中缓存的一个或多个流表中的流条目。

传统控制平面310可包括流推送器312、拓扑管理器314、路由引擎316、 以及动态流量分配引擎318。内容管理层320可包括内容名称管理器322、缓 存管理器324、以及内容元数据管理器326。内容元数据管理器326可包括键 值存储器,其将内容名称(例如,全局唯一的内容名称)映射到某个网络提 取的元数据。例如,内容大小或长度在本文中论述为在键值存储器中保存的 内容元数据的示例性形式。

内容管理层320中的模块可完成各种功能,例如内容识别、内容命名、 将内容语义映射到TCP/IP语义,以及管理内容缓存策略。例如,内容识别 可使用HTTP语义,这指示了如果网络中的客户端向另一设备发出HTTP GET 请求并且接收到HTTP响应,那么可得出初始请求是通过HTTP携带的内容 所满足的内容请求(然而,应注意该响应可能是错误,在这种情况下,可忽 略该请求及其响应)。此外,内容识别还可在代理中处理,代理可直接负责 靠近客户端的连接管理。内容管理层320还可从代理收集内容信息,该代理 解析HTTP头以识别内容。

存在多个缓存和代理节点,它们可以与OpenFlow控制器交谈并通告它 们的能力。因此,控制器可决定(基于某些优化标准)在选定位置缓存内容。 代理节点可用于对缓存之间的TCP连接进行透明解复用。另外,以下描述了 一些额外的功能。

为了通过使用内容元数据(例如,内容长度)执行网络资源分配,例如 TE和防火墙,首先需要提取内容元数据。本文论述了两个提取级:网络层中 利用ICN语义的第一级,以及进入应用层的第二级。

在实施例中,网络层机制可用于提取内容长度。由于内容可通过其名称 在ICN中唯一标识,所以控制器(例如,控制器142)可辨别出对新内容的 请求(也就是说,控制器没有在键值存储器中存储元数据的内容)。对于新 内容,控制器可在交换机(例如,入口交换机)处建立计数器来计算内容流 的大小或长度。控制器还可指示将流存储在缓存中,并且可从缓存中的内存 足迹中获取完整的对象大小。因此,当同一内容稍后通过网络时,查找键值 存储器可允许控制器基于内容大小分配资源。此外,第一次观察到的内容流 可基于某个阈值动态归类为长流或短流,这可由控制器确定。内容流在归类 之后可相应地分配有资源以优化某些约束条件。

在实施例中,应用层机制可用于提取内容长度。具体而言,入口交换机 可用于读取来自客户端的传入流中包含的HTTP头。通过解析HTTP头,交 换机甚至可在第一次观察到内容流时提取内容大小。HTTP头的解析可允许 控制器检测长或短流并相对较早采取合适的动作。本实施例的优势在于其可 从第一次出现内容流开始允许TE和防火墙。

对于具有提取内容元数据能力的网元或设备,它们可向控制器通告该能 力。能力通告可使用OpenFlow协议在带内进行,因为OpenFlow协议支持设 备注册和通告特性。在实施例中,能力通告本质上涉及若干步骤。在第一步 异步存在通告中,设备可通过将hello消息(有时表示为HELLO)发送给分 配的控制器来通告其存在。在第二步同步特性查询中,分配的控制器可确认 设备的通告并请求设备通告其特性。在第三步同步特性回复中,设备可对使 用特性列表对控制器作出回复。通过为每个适用设备执行这三个步骤,控制 器可以建立与所有设备的会话并知晓它们的能力。控制器随后可在必要时对 网络设备进行编程。

鉴于上述建立,控制器可获取网络中的内容元数据。此外,SDN范式可 允许控制器具有网络的全局视图。因此,平台可以支持各种服务的实施形式, 包括以下段落中论述的四个示例性服务。这四个示例性服务为元数据驱动流 量工程、差分内容处理、元数据驱动内容防火墙,以及元数据驱动缓存管理。

TE服务可由内容元数据驱动。在各种内容元数据中,由于控制器可获取 内容长度,所以控制器可以在一组约束条件下解决优化问题以得出应当在哪 个路径上转发内容。大型现代网络通常具有两个给定设备之间的路径分集。 该属性可被用于执行TE。例如,如果长流在两个设备之间的第一路径上运行, 那么控制器可指示另一长流在两个设备之间的第二路径上运行。该TE方法 相对有效并且可扩展,因为它不需要业务提供商单独传送内容元数据,这节 省了两端的网络带宽。

其它类型的元数据也可在TE中使用。深度报文检测(DPI)机制可使控 制器获取富内容元数据。因此,存在此类内容元数据提取服务时,内容管 理层320可基于其它元数据,例如内容的MIME类型进行转发决策。MIME 类型可定义内容类型(有时称作因特网媒体类型)。基于MIME类型,内容 可被归类为各种类型,例如应用、音频、图像、信息、模型、分片对象、文 本、视频等。网络管理员可以基于MIME类型描述一组策略。以延迟界限为 例。如果MIME类型具有实时流媒体内容,例如视频剪辑,那么控制器可选 择满足分发约束条件(已设置的延迟界限)的路径。如果没有路径满足延迟 界限要求,那么可选择提供最低过量延迟的路径作为最优路径。该方法可用 于通过为每个流媒体内容选择不同的路径来处理交换机上的多个流媒体内容。

防火墙服务可由内容元数据驱动。例如,当内容开始进入网络时,控制 网络的控制器可获取内容的长度大小。因此,控制器能够在交换给定数据量 之后终止处理同一内容的内容流,给定数据量由控制器确定。该机制像防火 墙一样操作,这样它开启了网络以传送不超过允许的数据量。与某些传统防 火墙相比,基于内容大小的防火墙机制可提供更强的安全或健壮性。例如, 通过传统防火墙,网络管理员可拦截一组地址(或者某些其它参数),但是 攻击者有可能欺骗IP地址并且绕过基于地址的防火墙。在所公开的基于内容 大小的防火墙下,网络可能不会通过携带欺骗的IP地址的内容流,因为网络 知晓允许的数据量已通过网络发送。

缓存管理可由内容元数据驱动。各种内容的对象大小在缓存中(例如, 缓存132)可变化,缓存实施的缓存策略不仅需要知晓内容的热度及其访问 频率,还需要知晓内容大小以确定保存内容的最佳“价值”。控制器可访问 内容请求以及内容大小,从而控制器可作出更多明智的决策。

如前所述,可能无需修改客户端网络和业务提供商网络,并且代理节 点可提供隧道将每个客户端和每个服务器连接到OpenFlow网络。实际上, 客户端所请求的内容可在本地OpenFlow网络中缓存,这可称作缓存命中, 或者在本地OpenFlow网络中不可用,这可称作缓存缺失。在缓存缺失情 况下,控制器可指示其本地网络在服务器返回内容时对内容进行缓存。

图4是显示消息交换协议400的实施例的图,在缓存缺失情况下,消 息交换协议400可由本文所公开的网络模型(例如,网络模型100)来实 施。首先,在建立阶段中,一个或多个缓存、代理节点和交换机与控制器 注册。例如,如图4所示,控制器402可通过将hello消息(表示为HELLO) 发送给代理408发起建立。代理408可通过将端口号列表发回控制器402 作出响应。类似地,缓存412将hello消息发送给控制器402,并且可进一 步将端口号列表发送给控制器402。应注意,某些消息,例如从控制器发 送到其它设备的ACK消息,在图4中省略。

在建立阶段之后,客户端404可发出TCP同步(SYN)包,该包可通 过隧道(遵循隧道协议)去往所公开的网络中的OpenFlow交换机406。 交换机406可能没有找到匹配流并且可将包发送给控制器402。随后,控 制器402可从包中提取各种信息字段,例如客户端IP地址(表示为 client_ip)、客户端端口号(表示为client_port)、服务器IP地址(表示 为server_ip),以及服务器端口号(表示为server_port)。控制器402随 后可从代理408上可用的端口列表中分配端口号。交换机406可将表示为 PACKET_IN的消息发送给控制器402,指示交换机406获取的内容元数 据(例如,内容长度)。随后,控制器402可将正向流和反向流写入发送 包的交换机406。最后,控制器402可将包推送回交换机406,并且包可 去往代理408。

之后,客户端404可确定在客户端404和服务器416之间建立TCP 会话。因此,客户端404可发送预期发往服务器416的对内容的HTTP获 取(GET)请求。GET请求可路由经过代理408,代理408可解析请求并 提取内容名称和目标服务器名称(即,服务器416的名称)。此外,代理 408可将内容名称解析为IP地址。代理408可使用内容名称查询控制器 402。相应地,如果内容名称标识的内容不在控制器402管理的网络的任 意位置缓存,那么控制器402可返回特定的值,指示内容未被缓存。

由于发生了缓存缺失,所以代理408可连接到服务器416。此外,代 理408可使用内容信息更新控制器402,内容信息包含服务器IP地址、服 务器端口、内容的统一资源标识符(URI),以及内容的文件名称。例如, 对于请求,代理408可将<url,file_name,dst_ip,dst_port>形式的消息发送 给控制器402。之后,控制器402可使用从代理408接收到的信息填充 requestDictionary。控制器402可进一步选择存放内容的缓存412。控制器 402可计算分叉点使得流量复制被最小化。控制器402可使用缓存412的 IP来填充cacheDictionary以记录内容被缓存的地址。

控制器402可将分叉流写入选择的交换机414。应注意,如果需要, 可选择另一交换机410。由于服务器416返回了内容,所以缓存412可接 收内容的一个副本。缓存412可保存内容并且可在控制器402中查询文件 名称。完成之后,缓存412可将ACK发送给控制器402,指示该内容已被 缓存。预期发往客户端404的内容的第二副本可去往代理408。此外,在 入口交换机中,第二副本可命中反向流,其可将其源IP和端口重写为服 务器的源IP和端口。最终,内容的第二副本可到达客户端404,完成事务。

在实施例中,正向流、反向流和分叉流可具有以下配置:

1.正向流:

如果src_ip=客户端ip、src_port=client_port、dest_ip=server_ip并 且dest_port=server_port,

则dest_ip=proxy_ip并且dest_port=X

2.反向流:

如果src_ip=proxy_ip并且dest_ip=client_ip,

则src_ip=server_ip并且src_port=server_port

3.分叉流:

如果src ip=服务器ip,

则做分叉并输出到两个端口。

可以看出在图4所示的缓存缺失之后,当同一客户端或另一客户端下 次对同一内容进行请求时,控制器可知晓内容保存的位置(即,缓存命中) 并且控制器可将该请求重定向到该缓存。虽然缓存命中未使用另一附图进 行图示,但是该过程可以类似地进行理解。具体而言,如果发生了缓存命 中,那么客户端404(出于方便而在图4中使用的部件号)可发送预期发 往服务器416的TCP SYN包,并且该包可通过隧道去往所公开的网络中 的OpenFlow交换机406。之后,交换机406可能未找到匹配流并且可将 该包发送给控制器402。控制器402可从包中提取client_ip、client_port、 server_ip和server_port。控制器402可从控制器402在代理408上拥有的 端口的列表中分配一个端口号。控制器402可将正向和反向流写入到发送 该包的交换机406中。最后,控制器402可将该包推送回交换机406。

该包可去往代理408,并且客户端404可以认为其已与服务器416建 立TCP会话。客户端404随后可发送HTTP GET请求。代理408可解析 请求以提取内容名称和目标服务器名称。代理408可进一步将名称解析为 IP地址。代理408可使用内容名称查询控制器402。控制器402可从其 cacheDictionary中获取缓存IP并且可将缓存412的IP发回给代理408。代 理408可指向缓存412,缓存412随后可返回内容。在出口交换机中,反 向流可被命中并且源IP和源端口可被重写。

图5是消息交换协议500的另一实施例的图,消息交换协议500显示 了网络中的内容的端到端流。在图5所示的示例中,假设TE的目标在于 通过对跨冗余路径的传入内容进行均衡负载来优化链路带宽利用率。然而, 应理解,优化标准的选择可随实施方案的不同而大不相同。例如,缓存网 络运营商可能想要优化磁盘写入,而另一运营商可能想要优化链路带宽使用。 由于架构独立于底层优化问题,所以优化目标可以是外部可配置的。在实施 方案中,有时具有一个优化目标就足够了。

消息交换协议500可划分为三个阶段:建立阶段,其中相关设备,包 含缓存504和交换机508可连接或耦合到控制器506并通告它们的能力; 元数据收集阶段,其中网络设备可将内容元数据报告给控制器506,以及 第三阶段,TE。

建立阶段中的初始步骤可与参照图4描述的步骤类似。首先,在建立 阶段,包含缓存504和交换机508的各种网元可开机并连接到控制器506。 网元可向控制器506通告它们的能力。具体而言,缓存504可将hello消 息发送给控制器506,控制器506可使用特性请求消息对缓存504作出响 应。缓存504随后可使用指示特性或能力列表的特性回复消息作出响应。 类似地,交换机508可将hello消息发送给控制器506,控制器506可使用特 性请求消息对交换机508作出响应。交换机508随后可使用指示特性或能力 列表的特性回复消息作出响应。此时,控制器506可具有其管理的整个网络 的地图,因此控制器506可知晓哪些网元或节点可以提取元数据并缓存内容。

控制器506可在所有入口交换机中写入特殊的流,配置这些交换机提取 内容元数据。例如,控制器506可将流写入缓存504,请求缓存504报告内 容元数据。位于客户端网络中的客户端502可尝试建立与服务器510的TCP 连接,服务器510可位于内容或业务提供商网络中。交换机508(例如, OpenFlow交换机)可将包从客户端502转发给控制器506。控制器506可写 入流以将所有包从客户端502重定向到代理(未在图5中示出)。在这个阶 段,客户端可透明连接到代理。

之后,在元数据收集阶段,客户端502可发送对内容的GET请求。代理 可解析请求并查询控制器506以查看内容是否在由控制器506管理的网络中 缓存。对内容的第一请求可导致缓存缺失,因为内容还未被缓存。因此,控 制器506可能没有返回任何缓存IP,并且代理可将该请求转发给提供商网络 中的服务器510。

服务器510可发回到达入口交换机508的内容。交换机508可(通过内 容查询信息)询问控制器506应当将内容缓存在何处。这标志着内容的显式 开始。特殊的流可在内容路径和内容的缓存位置中从控制器506推送到每个 交换机。这时,控制器可能知晓内容的缓存位置。

之后,如果同一客户端或另一客户端请求同一内容,那么控制器506可 按内容名称查找其缓存字典。控制器可识别存储内容的缓存504,代理可将 请求重定向到缓存504。同时,控制器506可使用TE模块来计算内容应当在 哪个路径上推送以提高网络中的总体带宽利用率。表4所示为可由控制器 506使用的路径选择算法的实施例。应理解,在特定场景中使用的优化算 法可取决于实际问题定义并且算法可以是灵活的。控制器506可将流写入 所有适用的交换机以转发内容。

表4:控制器506实施的示例性路径选择算法

本发明教示对现有OpenFlow协议的某些修改以支持所公开的机制。以 通过HTTP发送的内容为例,因为这种类型的内容构成了大多数因特网流量。 所属领域普通技术人员将认识到通过应用本文所教示的机制可以类似地对其 它类型的内容进行寻址。在高层,网元可能需要向管理网络的控制器通告解 析和缓存内容元数据的能力,该控制器还能够写入流。

在交换机及其对应的控制器之间的握手阶段,交换机可能需要通告其解 析内容元数据的能力。控制器可维护包含所有或一些通告了元数据解析能力 的交换机的键值数据存储器或表。

在实施例中,交换机及其对应的控制器之间的握手可按如下执行。控制 器或交换机可通过发送hello消息发起握手,并且另一侧可进行回复并建立传 输层安全(TLS)会话。之后,控制器可发送表示为 OFPT_FEATURES_REQUEST(OFPT表示开放流包类型)的消息以询问交换 机其特性。交换机可使用表示为OFPT_FEATURES_REPLY消息的回复消息 通告其特性或能力,例如使用ofp_capabilities结构的实例。额外的字段可添 加至ofp_capabilities结构以指示提取内容元数据、缓存内容,和/或代理内容 的能力。

一旦控制器连接到其域内的所有网元,那么控制器可知晓哪些元件可以 提取元数据。控制器实施的控制平面可能需要通过写入flowmod消息请求网 元解析内容元数据来配置网元。因此,额外的动作可添加在OpenFlow的顶 部,这可称作EXTRACT_METADATA。在实施例中,具有该动作的flowmod 如下所示:

if;actions=EXTRACT_METADATA,NORMAL,

这本质上意味着交换机可从HTTP元数据中提取元数据,将元数据放入 PACKET_IN消息中,以及将PACKET_IN消息发回给控制器。之后,交换机 可对该包执行正常转发动作。

本发明在OpenFlow中引入了一种新型的flowmod。这种新类型可提供写 入具有终止条件的flowmod,如下所示:

if<conditions>;actions=<set of actions>

;until=<set of conditions>

由于控制器知晓给定内容的长度,所以控制器可以使用每流字节计数器 来为上述“until”子句设置条件。例如,如果已知从源IP地址192.168.122.21 到目的IP地址63.212.171.121的内容长度为x字节,那么网络中的每个 flowmod的形式如下:

if src_ip=192.168.122.21

and dst_ip=63.212.171.121;

actions=<output to some port>

;while=byte_counter<x

应注意,内容长度可在HTTP头中进行编码(应注意,扩展该机制来提 取MIME类型等其它内容元数据相对简单)。一旦交换机用于解析内容流, 当交换机看见内容流中包含的HTTP包时,交换机可从HTTP头中读取内容 长度。此外,交换机可以(contentname,contentsize,srcip,srcport,destip,destport) 形式构建元组。该元组可被封装在PACKET_IN消息中,PACKET_IN消息可 发回给控制器。

为了展示所公开的方法的益处或优势,以下论述涉及网络TE或流量优 化。此处的一个目的在于使用通过OpenFlow收集并且可供控制器使用的内 容元数据优化网络的某个参数。该问题可被划分为两个子问题。第一个子问 题涉及在缓存中存储内容,因为当控制器确定在缓存中存储内容时控制器可 能需要通往缓存的路径。假设网络在入口交换机和选择的缓存之间具有多个 替代路径,这可能是使用路径分集来最大化链路使用率的好机会。因此,此 处的一个目标在于最小化最大链路使用率,也就是说,对以下公式进行求解,

minmaxΣρPΣepbe+Fce

subject to be≤ce

第二个子问题涉及内容获取。此处的一个目的在于最小化客户端请求内 容时看见的时间延迟,也就是说,对以下公式进行求解:

mineEFre

表5总结了上述两个公式中使用的符号。

表5:本文使用的部分符号

be链路e上的后台流量 ce链路e的容量 re链路e的速率 F 内容大小 P 源和目的地之间的所有路径的集合 E 所有链路的集合

此处可以考虑的另一有趣的优化问题为磁盘输入/输出(I/O)优化。鉴于 网络中存在许多缓存,每个缓存在给定时间可具有已知的负载量,因此最好 优化所有缓存上的磁盘写入并且基于该度量阐述该问题。应注意,待使用的 实际优化约束可随应用要求而改变并且可以是用户可编程的。例如,优化约 束可在控制器的内容管理层中进行编程。

基于内容的管理可引入网络研究团体未探索的新机会或方法。与传统网 络中可能不具有显式结束标记的IP流不同(应注意,IP流可能超时,这是隐 式标记,但是可能需要合适的超时值),内容可能具有显式开始和结束语义。 因此,确定流所需的资源量以及跟踪通过网络单元或设备的数据量可被简化。 检测显式标记或事件的能力可能允许网络执行防火墙功能,例如仅仅允许所 需的内容量通过,并且内容流结束之后网络资源可自动去分配。

本发明可使用缓存作为主要的ICN能力,这可能导致内容访问延迟缩 短。使用终端用户不可知方法进行内容分发的访问延迟缩短增加了整体的网 络效率。该设计模式可要求流量工程、负载均衡等其它网络业务使用内容名 称而不是使用可路由地址进行。本发明受ICN中的观察所启发,通过在缓存 中观察网内内容流或内容状态可以获取内容的各种信息,或者通过在交换机 中使用深度报文检测(DPI)可以获取内容的各种信息。

在评估方面,本发明表明知晓解TE之前的内容大小可以有效用于减少 链路中的积压,这反过来缩短了网络延迟。在示例性建立中,源和目的地之 间有两条平行链路可用。比如说,两条链路的容量均为1千比特每秒(kbps)。 因此,系统的总容量为2kbps。在任何时间点输入均不应超过2kbps;否则, 队列可能变得不稳定。此外,假设内容大小为帕累托分布。鉴于帕累托分布 定义的阿尔法(α)值,可使用关系式计算形状参数的值:这样帕 累托分布的均值为1.95。此外,假设内容的确定性到达时间在t=1second秒 至t=10000秒的范围内为每秒一次。

使用这些条件,流量可基于以下策略之一分配给每条链路。第一策略(策 略1)假设在分配链路之前内容大小未知。因此,在任何时间点,如果两条 链路均为全容量,那么可随机挑选或选择一条链路。或者,可选择任意一个 空链路。或者,第二策略(策略2)假设在分配链路之前内容大小已知。在 这种情况下,在任意时间点,可选择具有最小积压的链路作为最优链路。

图6是显示使用模拟程序MATLAB获取的模拟结果的图。图6通过描 绘两种策略之下系统中的总积压之间的百分比(%)差别来研究策略1和策 略2,其中α从1:1增长为2:5。对于α的每个值,通过对两个队列中的积压 进行平均来计算给定策略的平均积压。图6表明大小感知的策略2更好地减 少了等待发送的数据量,从而缩短了系统中的延迟。例如,当负载/容量比为 0:95时,策略2的平均增益最多为40%,而策略1的平均增益最多为26%。

对于低流量负载,几乎不需要或无需进行流量优化。然而,对于高流量 负载,链路可能会变得高度积压,并且策略1和策略2的吞吐量均为最优。 最好在链路利用率为1或接近1的区域中操作。使用该度量,与策略1相比, 策略2显示了巨大的提升。

图7是显示使用类似策略获取的模拟结果的另一图。假设所有其它条件 与图6的建立相同,第一策略假设在分配链路之前内容大小未知。因此,在 任何时间点,如果两条链路均为全容量,那么可随机挑选或选择一条链路。 或者,可选择任意一个具有最少流量的链路。或者,第二策略假设在分配链 路之前内容大小已知。在这种情况下,在任意时间点,可选择具有最小积压 的链路作为最优链路。应注意,这两种策略的吞吐量均为最优,但是差别在 于第一策略仅仅查看当前链路状态,而第二策略使用内容元数据来预测或估 计未来链路状态。图7示出了第一策略和第二策略之间的堆积差(即,第一 策略堆积减去第二策略堆积)。可以看出第二策略极大地降低了堆积。

图8是可由网络控制器(例如,控制器142)实施的方法800的实施 例的流程图。网络控制器可遵循OpenFlow协议,并且由控制器管理的网 络可以是实施SDN标准的ICN。方法800开始于步骤810,在步骤810中, 控制器可通过从控制器控制的交换机接收元数据获取由客户端设备所请 求的内容的元数据。应注意,如果需要,可通过任何其它方式获取元数据。 客户端设备可驻留在网络之内或之外。在实施例中,内容具有文件名称、 内容大小和MIME类型,并且内容元数据包括文件名称、内容大小和MIME 类型中的至少一项。

在步骤820中,控制器可基于内容的元数据将一个或多个网络资源分 配给内容。控制器可通过网络资源的分配执行TE,因为控制器具有网络 的全局视图和知识。如果内容大小获取为元数据,那么控制器可选择基于 预定大小阈值将携带内容的数据流归类为长流或短流,并且长流或短流可 至少部分地确定分配的网络资源。在实施例中,分配一个或多个网络资源 可包括选择至少部分覆盖网络中的缓存和客户端设备之间的路径的本地 路径,其中缓存用于存储内容的副本并且使用选择的本地路径将内容提供 给客户端设备。在这种情况下,可遵循约束条件集从网络中可用的多条路 径中选择本地路径,目的是优化本地路径的带宽,或者优化缓存上的磁盘 写入操作,或者这两者。例如,如果存在流量堆积,那么在进行选择时, 在多条路径中,选择的本地路径具有最少的流量堆积。

在步骤830中,控制器可将标识分配的网络资源的消息发送给交换机 以引导内容提供给客户端设备。交换机随后可使用分配的网络资源将内容 转发给客户端设备。在步骤840中,控制器可监控流经网络的数据流的量, 其中数据流包括内容。在步骤850中,一旦数据流的量超过预定阈值(阈 值取决于应用),控制器可终止或阻止数据流流经网络。步骤840和850 允许控制器作为元数据驱动防火墙。

应注意,图8所示的方法800覆盖将内容提供给客户端设备的必要步 骤的一部分,因此其它步骤只要合适也可由控制器执行。例如,如果内容 从网络之外的服务器发送并且第一次流经网络,那么控制器可确定内容在 网络中不可用。此外,控制器可指派或指示位于网络中的缓存存储内容的 副本,并且记录标识内容和缓存的信息。否则,如果内容副本已经存储在 网络的缓存中,那么控制器可确定缓存的位置,并且将请求重定向到缓存。

图9是可由SDN交换机(例如,交换机140)实施的方法900的实施 例的流程图。SDN交换机可以位于由SDN控制器(例如,控制器142) 管理的网络或网络域(例如,网络130)中。方法900开始于步骤910, 在步骤910中,SDN交换机可接收对内容的请求,其中该请求来源于客户 端设备(例如,客户端112)。在步骤920中,SDN交换机可将包含内容 的数据流转发回客户端设备。应注意,数据流的源可以是网络之外的服务 器或网络内的缓存。在实施例中,数据流包括HTTP包头,HTTP包头又 包括唯一标识内容的内容名称和由内容名称确定的内容大小。

在步骤930中,SDN交换机可通过在网络层而非应用层上解析HTTP 包头来提取内容元数据。元数据的提取可在转发数据流期间执行。在实施 例中,内容具有文件名称、内容大小和MIME类型,并且内容元数据包括 文件名称、内容大小和MIME类型中的至少一项。在步骤940中,SDN 交换机可将元数据转发给控制交换机的控制器。在步骤950中,SDN交换 机可从控制器接收标识分配用于将内容提供给客户端设备的一个或多个 网络资源的指令。一个或多个网络资源可能已经由控制器至少部分基于元 数据进行分配。在实施例中,由指令标识的网络资源可包括至少部分覆盖 内容源和客户端设备之间的连接的本地数据路径。由于本地数据路径由控 制器确定,所以如果存在流量堆积,那么当接收到指令时,在网络中可用 于内容的多条本地数据路径中,本地数据路径可能具有最少的流量堆积。

应注意,图9所示的方法900包括将内容提供给客户端设备的必要步 骤的一部分,因此其它步骤只要合适也可由SDN交换机执行。例如,如 果内容从网络之外的服务器发送,那么SDN交换机可将内容的副本转发 给位于同一网络中的缓存。否则,如果内容已经存储在缓存中,那么交换 机可将对内容的请求转发给缓存,这样内容的副本可从缓存中获取。此外, 在防火墙应用中,交换机可持续将数据流引导到客户端设备,直到通过交 换机或网络的内容的数据量超过预定阈值。

与现有尝试相比,所公开的网络可提供各种优势或益处。首先,不需 要在包含客户端和服务器的端点或主机处进行修改。第二,所公开的内容 管理网络可对端主机保持透明,这样端主机可能无法感知任何流路径中存 在的缓存或代理。第三,所公开的网络可使用SDN(例如,OpenFlow)和 ICN无缝管理。第四,所公开的网络可缩短内容访问的延迟,因此,客户 端可注意到内容的访问速度更快。第五,通过删除冗余流(例如,如果内 容已经存储在缓存中,那么内容无需从服务器发往缓存)可减少网络中的 带宽使用或消耗。

图10是网络设备或单元1000的实施例的图,网络设备或单元1000可为 通过网络传送包的任意设备。例如,网络单元1000可对应于缓存132至136、 代理138或交换机140中的任一项。网络单元1000可包括耦合到接收器(Rx) 1012的一个或多个入端口1010,接收器1012可用于从其它网络部件接收包 或帧、对象、选项,和/或类型长度值(TLV)。

网络单元1000可包括与接收器1012和发射器1032通信的逻辑单元或处 理器1020。尽管处理器1020被图示为单个处理器,但是它并非受到此类限 制而是可以包括多个处理器。处理器1020可以实施为一个或多个中央处理器 (CPU)芯片、核(例如,多核处理器)、现场可编程门阵列(FPGA)、专 用集成电路(ASIC),和/或数字信号处理器(DSP)。处理器1020可使用 硬件或硬件和软件的组合来实施。处理器1020可用于实施本文所述的任意 功能模块或单元,例如Redis队列212、捕捉器214、看门狗216、网络服 务器218、缓存字典222、请求字典224、转发平面304的至少一部分、包 含流推送器312、路由引擎314、拓扑管理器316以及动态流量分配引擎 318的控制平面310、包含内容名称管理器322、缓存管理器324以及内容 元数据管理器326的内容管理层320,或本领域普通技术人员所知的任意 其它功能部件,或任意组合。

网络单元1000可进一步包括存储器1022,其可为用于存储流表的存储 器,或用于存储缓存的流表的缓存存储器。存储器可例如,存储Redis队列 212、缓存字典222,和/或请求字典224。网络单元1000还可包括耦合到 发射器(Tx)1032的一个或多个出端口1030,发射器1032可用于将包或 帧、对象、选项,和/或TLV发送给其它网络部件。应注意,实际上存在由 网络单元1000处理的双向流量,因此一些端口可接收并发送包。在此意义上, 入端口1010和出端口1030可位于同一处,或可视作耦合到收发器(Rx/Tx) 的相同端口的不同功能。处理器1020、存储器1022、接收器1012以及发 射器1032还可用于实施或支持本文描述的任意方案和方法,例如方法800 和方法900。

应理解,通过将可执行指令编程和/或加载至网络单元1000,处理器1020 和存储器1022中的至少之一被改变,将网络单元1000的一部分转换成特定 机器或装置(例如,具有本发明所宣扬的功能的SDN交换机)。可执行指令 可存储于存储器1022上,并加载至处理器1020中用于执行。加载可执行软 件至计算机所实现的功能可以通过公知设计规则转换成硬件实施,这在电 力工程和软件工程领域是很基础的。决定使用软件还是硬件来实施一个概 念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领 域转换至硬件领域中所涉及的任何问题。一般来说,经常变动的设计更适 于在软件中实施,因为重新编写硬件实施比重新编写软件更为昂贵。通常, 稳定及大规模生产的设计更适于在如ASIC这样的硬件中实施,因为运行 硬件实施的大规模生产比软件实施更为便宜。设计通常可以以软件形式进 行开发和测试,之后通过公知设计规定转变成专用集成电路中等同的硬件 实施,该集成电路硬线软件指令。由新ASIC控制的机器是一特定的机器 或装置,同样地,编程和/或加载有可执行指令的计算机可视为特定的机器 或装置。

上述方案可以在网络部件上实施,例如计算机或网络部件,其具有足 够的处理能力、存储资源以及网络吞吐能力来处理其上的必要工作量。图 11是计算机系统或网络设备1100的实施例的图,计算机系统或网络设备 1100适用于实施本文所公开的系统和方法的一个或多个实施例,例如SDN 控制器142。

计算机系统1100包括处理器1102,该处理器与包含以下项的存储器 设备通信:辅助存储器1104、只读存储器(ROM)1106、随机存取存储 器(RAM)1108、输入/输出(I/O)设备1110,以及发射器/接收器1112。 尽管处理器1102被图示为单个处理器,但是它并非受此限制而是可以包 括多个处理器。处理器1102可以实施为一个或多个CPU芯片、核(例如, 多核处理器)、FPGA、ASIC,和/或DSP。处理器1102可用于实施本文所 述的任意方案,包括方法800和方法900。处理器1102可使用硬件或硬件 和软件的组合来实施。处理器1102可用于实施本文所述的任意功能模块 或单元,例如Redis队列212、捕捉器214、看门狗216、网络服务器218、 缓存字典222、请求字典224、转发平面304的至少一部分、包含流推送 器312、路由引擎314、拓扑管理器316以及动态流量分配引擎318的控 制平面310、包含内容名称管理器322、缓存管理器324以及内容元数据 管理器326的内容管理层320,或本领域普通技术人员所知的任意其它功 能部件,或任意组合。

辅助存储器1104通常包括一个或多个磁盘驱动器或磁带驱动器,用 于数据的非易失性存储,而且如果RAM 1108的容量不足以存储所有工作 数据,辅助存储器则用作溢流数据存储设备。辅助存储器1104可以用于 存储程序,当选择执行这些程序时,这些程序将加载至RAM 1108中。ROM 1106用于存储在程序执行期间读取的指令以及可能读取的数据。ROM 1106为非易失性存储设备,其存储容量相对于辅助存储器1104的较大存 储容量而言通常较小。RAM 1108用于存储易失性数据,还可能用于存储 指令。对ROM 1106和RAM 1108二者的存取通常比对辅助存储器1104 的存取快。

发射器/接收器1112(有时称作收发器)可用作计算机系统1100的输 出和/或输入设备。例如,如果发射器/接收器1112用作发射器,则其可将 数据传出计算机系统1100。如果发射器/接收器1112用作接收器,其可将 数据传入计算机系统1100。此外,发射器/接收器1112可包括一个或多个 光发射器、一个或多个光接收器、一个或多个电发射器,和/或一个或多个 电接收器。发射器/接收器1112可采用以下形式:调制解调器、调制解调 器组、以太网卡、通用串行总线(USB)接口卡、串行接口、令牌环卡、 光纤分布式数据接口(FDDI)卡,和/或其它公知的网络设备。发射器/接 收器1112可使处理器1102与因特网或一个或多个内网通信。I/O设备1110 为可选或可与计算机系统1100的其余部分分离。I/O设备1110可包括视 频监控器、液晶显示器(LCD)、触屏显示器,或其它类型的显示器。I/O 设备1110可包括一个或多个键盘、鼠标、轨迹球或其它公知的输入设备。

与网络单元1000类似,应理解通过将可执行指令编程和/或加载至计算 机系统1100,处理器1102、辅助存储器1104、RAM 1108和ROM 1106中的 至少之一被更改,将计算机系统1100的一部分转换成特定机器或装置(例如, 拥有本发明宣扬的功能的SDN控制器或交换机)。可执行指令可存储于辅助 存储器1104、ROM 1106,和/或RAM 1108上,并加载至处理器1102中用于 执行。

本发明的任意处理可通过使处理器(例如,通用CPU)执行计算机程 序来实施。在这种情况下,计算机程序产品可以提供给使用任意类型的非 瞬时计算机可读介质的计算机或网络设备。计算机程序产品可存储在计算 机或网络设备的非瞬时计算机可读介质中。非瞬时计算机可读介质包括任 意类型的有形存储介质。非瞬时计算机可读介质的示例包括磁存储介质 (例如,软盘、磁带、硬盘驱动器等)、光磁存储介质(例如,磁光盘)、 只读光盘(CD-ROM)、可录光盘(CD-R)、可写光盘(CD-R/W)、数 字多功能光盘(DVD)、蓝光(注册商标)光盘(BD),以及半导体存 储器(例如,掩膜ROM、可编程ROM(PROM)、可擦除PROM、闪存 ROM和RAM)。计算机程序产品还可提供给使用任意类型的瞬时计算机 可读介质的计算机或网络设备。瞬时计算机可读介质的示例包括电信号、 光信号和电磁波。瞬时计算机可读介质可以通过有线通信线(例如,电线 和光纤)或无线通信线向计算机提供程序。

本发明公开了至少一项实施例,而且所属领域的一般技术人员对实施 例和/或实施例的特征做出的变化、组合和/或修改均在本发明的范围内。 通过组合、整合和/或忽略各项实施例的特征而得到的替代性实施例也在本 发明的范围内。在明确说明数字范围或限制的情况下,此类表达范围或限 制可以被理解成包括在明确说明的范围或限制内具有相同大小的迭代范 围或限制(例如,从约为1到约为10包括2、3、4等;大于0.10包括0.11、 0.12、0.13等)。例如,只要公开具有下限Rl和上限Ru的数字范围,则 明确公开了此范围内的任何数字。具体而言,在所述范围内的以下数字是 明确公开的:R=R+k*(Ru–R),其中k为从1%到100%范围内以1%递增的 变量,即,k为1%、2%、3%、4%、5%……50%、51%、52%……95%、 96%、97%、98%、99%或100%。此外,由上文所定义的两个数字R定义 的任何数字范围也是明确公开的。除非另有说明,否则术语“约”是指随后 数字的±10%。相对于权利要求的任一元素使用术语“选择性地”意味着所 述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权利 要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理 解为提供对如“由……组成”、“基本上由……组成”以及“大体上 由……组成”等较窄术语的支持。因此,保护范围不受上文所陈述的说明 限制,而是由所附权利要求书界定,所述范围包含所附权利要求书的标的 物的所有等效物。每一和每条权利要求作为进一步揭示内容并入说明书中, 且所附权利要求书是本发明的实施例。对所述揭示内容中的参考进行的论 述并非承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期 之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和 公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的 示例性、程序性或其它细节。

虽然本发明多个具体实施例,但应当理解,所公开的系统和方法也可 通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本发明的 实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细 节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征 可以省略或不实施。

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为 离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或 方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项 也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件 间接地耦合或通信。其它变更、替换、更替示例对本领域技术人员而言是 显而易见的,均不脱离此处公开的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号