通用客户驻地设备
交叉引用
本申请要求2014年10月30日提交的、标题为“UNIVERSAL CUSTOMER PREMISEEQUIPMENT”的美国临时申请No.62/072,971,2014年11月4日提交的、标题为“UNIVERSALCUSTOMER PREMISE EQUIPMENT”的美国临时申请No.62/075,175,2015年10月13日提交的、标题为“UNIVERSAL CUSTOMER PREMISE EQUIPMENT”的美国临时申请No.62/241,059以及2015年10月28日提交的、标题为“UNIVERSAL CUSTOMER PREMISE EQUIPMENT”的美国非临时申请No.14/925,809的权益和优先权,这些申请出于所有目的通过其整体引用而合并在此。
技术领域
本公开一般涉及数据路由和转发,并且更具体地,涉及用于改善配置、部署和管理客户驻地设备(CPE)的效率和健壮性的技术。
背景技术
传统地,CPE是提供用于使某些基于网络的服务便利于客户的基于硬件的解决方案的装置。在一些实例中,CPE对网络运营者提供分界点(demarcation point)以用于将他们的服务提供给客户。换句话讲,CPE充当网络运营者的延伸,驻存(reside)在客户驻地并且使由网络运营者提供的服务便利于客户。
CPE一般可以指的是诸如电话、路由器、交换机、驻存网关(RG)、机顶盒、固定移动融合产品、家庭联网适配器以及因特网接入网关的装置,这些装置使得消费者能够经由LAN(局域网)、数字订户线路(DSL)或者其它宽带因特网路由器、因特网协议语音(VoIP)基站或者由特定的服务提供者使用的其它系统,访问通信服务提供者的服务并且将它们分布在他们的房子周围。同样包括按键电话系统和大多数专用分机交换。传统地,该术语指的是放置在电话线路的客户的一端并且通常由电话公司拥有的设备。今天,几乎任何最终用户设备可以被称作客户驻地设备并且它可以由客户或者由提供者拥有。
尽管,在整个说明书中讨论CPE,但是在若干实施例中,也可以使用网络装置代替CPE以执行这里讨论的若干实施例。而且,在一些实例中,CPE可以自身执行网络装置的功能,诸如网络分组的转发。
发明内容
本公开一般涉及数据路由和转发,并且更具体地,涉及用于改善配置、部署和管理客户驻地设备(CPE)的效率和健壮性的技术。
传统地,一旦CPE物理地位于客户的驻地,对CPE的任何改变就导致技术人员访问客户,从而导致较高的成本和不便。而且,如果CPE不支持某种功能或服务或者如果CPE需要升级,那么CPE通常必须被替换,从而导致对客户或者网络运营者的另外成本。而且,CPE是单功能装置并且客户可能不能够使用同一CPE启用和使用多个服务和功能。
公开的方面讨论用于改善路由和转发网络分组的效率和健壮性、远程部署新的服务、改变配置、改善装置的不同组件之间的通信以及更新/改变装置上的某些可执行映像的技术。而且,公开的方面也可以允许不同的网络运营者对CPE上的某些可执行映像的同时控制和升级。
在公开的某些方面,示例装置包括存储器、用于接收和传输网络分组的多个物理网络接口以及与存储器通信的一个或多个处理实体。所述一个或多个处理实体可以被配置为:提供用于提供路由功能的第一路由器,其中,第一路由器没有被虚拟化;使得虚拟机能够执行用于提供路由功能的第二路由器;以及使用第一路由器或者第二路由器从装置转发网络分组。在某些实施例中,装置是CPE。在其它实施例中,装置是网络装置。在某些实施例中,网络分组在第一路由器处的转发可以包括执行网络分组的路由或者交换。在某些实例中,路由可以指的是在开放系统互连(OSI)模型网络堆栈的层级3(L3)层处处理和转发分组,而交换可以指的是网络分组在OSI模型网络堆栈的层级2(L2)层的处理和转发。
在某些实施例中,一个或多个处理器还可以被配置为从用户空间执行与第一路由器相关联的指令。在某些实施例中,第一路由器使用由内核分配的一个或多个实时线程在用户空间中处理网络分组。
在某些实施例中,装置通过多个物理网络接口的一个接收网络分组并且将网络分组拷贝到用户空间以由第一路由器进行处理。装置还可以在第一路由器处处理网络分组并且将网络分组从第一路由器发送到第二路由器,其中,网络分组在不离开装置的情况下被传送到第二路由器。在某些实施例中,装置响应于对数据模型的改变而更新虚拟机的状态,其中,对数据模型的改变基于接收到的操作模式命令并且数据模型包括用于暴露(expose)与虚拟机相关联的可更新参数的接口。在某些实例中,装置还被配置为升级在虚拟机中执行的第二路由器。
在公开的某些方面,在装置处转发网络分组的示例方法可以包括:在装置的物理网络接口处接收网络分组;使用来自内核的装置驱动将网络分组从物理网络接口拷贝到通过从用户空间执行的指令可访问的存储器;以及在装置的用户空间中使用路由器处理网络分组以用于网络分组的转发。在某些实施例中,装置是CPE。在其它实施例中,装置是网络装置。在某些实施例中,转发网络分组包括通过另一个物理网络接口传输分组。在某些其它实施例中,转发网络分组包括将分组发送到在装置上的虚拟机中执行的另一个路由器。在某些实施例中,网络分组在第一路由器处的转发包括执行网络分组的路由或者交换。在某些实例中,路由可以指的是在开放系统互连(OSI)模型的层级3(L3)层处处理和转发分组,而交换可以指的是网络分组在OSI模型的层级2(L2)层处的处理和转发。
在某些实施例中,示例方法也可以包括从远程装置接收操作模式命令,基于操作模式命令更新数据模型的参数,以及基于数据模型的更新的参数对与在装置上的虚拟机中执行的另一个路由器相关联的状态进行更新。
在某些实施例中,示例非暂时性计算机可读存储介质,其中,非暂时性计算机可读存储介质可以包括指令,所述指令由处理实体可执行以用于:接收网络分组;使用在内核中执行的指令将网络分组从物理网络接口拷贝到通过从用户空间执行的指令可访问的存储器;以及在装置的用户空间中使用路由器处理网络分组以用于网络分组的转发。这种示例非暂时性计算机可读存储介质将用于执行整个公开中所讨论的若干实施例的指令存储在装置上。
附图说明
图1例示包括示例客户驻地设备(CPE)、呼叫家庭服务器(call home server)以及配置服务器的示例系统。
图2是例示根据公开的某些方面的用于配置CPE的方法的示例流程图。
图3是用于例示示例CPE的某些方面的示例框图。
图4是用于例示示例CPE的某些方面的另一示例框图。
图5是根据公开的某些方面的、例示在CPE上执行的虚拟机(VM)的管理的另一示例框图。
图6是根据公开的某些方面的、例示由CPE执行的路由功能的框图。
图7是根据公开的至少一个实施例的、例示VM间通信的框图。
图8是例示根据公开的某些方面的对于CPE的部署模型的方法的示例流程图。
图9是根据一些实施例的计算机系统的框图。
具体实施方式
词语“示例性”在这里用于意指“用作示例、实例或者例示”。在这里描述为“示例性”的任何实施例或者设计不一定被解释为相比其它实施例或者设计是优选的或者有利的。
客户驻地设备(CPE)是位于订户的驻地的任何终端/装置以及相关联的设备。在一些实例中,CPE与网络运营者或者运营商的电信信道连接。CPE可以在分界点(“分界(demarc)”)处连接到网络运营者。分界是在建筑物、综合体(complex)或者系统中建立以将客户设备与位于网络运营者的分布基础设施或者中心局中的设备分离的点。
CPE一般指的是诸如电话、路由器、交换机、驻存网关(RG)、机顶盒、固定移动融合产品、家庭联网适配器以及因特网接入网关的装置,这些装置使得消费者能够经由LAN(局域网)、数字订户线路(DSL)或者其它宽带因特网路由器、因特网协议语音(VoIP)基站或者由特定的服务提供者提供的其它装置,访问通信服务提供者的服务并且将它们分布在他们的房子周围。同样包括按键电话系统和大多数专用分机交换。传统地,该术语指的是放置在电话线路的客户的一端并且通常由电话公司拥有的设备。今天,几乎任何最终用户设备可以被称作客户驻地设备并且它可以由客户或者由提供者拥有。在一些实例中,CPE可以实现利用图9中公开的组件描述的一个或多个组件或者功能。
尽管,在整个说明书中讨论CPE,但是在若干实施例中,也可以使用网络装置代替CPE以执行这里讨论的若干实施例。而且,在一些实例中,CPE可以自身执行网络装置的功能,诸如网络分组的转发。
传统地,一旦CPE物理地位于客户的驻地,对CPE的任何改变就导致技术人员访问客户,从而导致较高的成本和不便。而且,如果CPE不支持某种功能或服务或者如果CPE需要升级,那么CPE通常必须被替换,从而导致对客户或者网络运营者的另外成本。而且,CPE是单功能装置并且客户可能不能够使用同一CPE启用和使用多个服务和功能。
公开的方面公开用于配置和更新CPE的新技术,使得可以以安全的方式远程地并且动态地配置、更新和升级CPE,而很少或者没有技术人员对客户驻地的访问。
图1例示包括示例客户驻地设备(CPE)102、呼叫家庭服务器104以及配置服务器106的示例系统。可以使用关于图3-9公开的技术根据在本公开中公开的一个或多个方面实现CPE 102。在一些实例中,根据在这里公开的某些方面,CPE 102也可以被称作通用CPE(uCPE)或者虚拟CPE(vCPE)。
当CPE 102使用基础(base)安装启动时,它与呼叫家庭服务器104通信并且向呼叫家庭服务器104提供它的IP地址以及其它能力参数。呼叫家庭服务器104可以与配置服务器106通信并且将适当的配置提供给CPE 102。在一些实例中,配置服务器106和/或其它装置,单独地或者与其它装置一起,还可以执行操作系统服务、后台(back-office)系统服务(OSSBSS)系统。OSSBSS可以在针对网络运营者的后端服务上提供操作支持,以用于计费、配置、库存等。
在一些实例中,诸如Brocade系统控制器(BSC)的单独控制器可以被用作呼叫家庭服务器和/或配置服务器。在又其它实现中,OSSBSS也可以由相同或者不同的控制器实现。
图2是例示根据公开的某些方面用于配置CPE的方法的示例流程图。
远离与网络运营者相关联的呼叫家庭服务器104驻存的CPE 102可以与呼叫家庭服务器104通信。在一个示例配置中,CPE 102可以位于客户场所处,并且呼叫家庭服务器可以驻存在由网络运营者操作的服务器设施处。在框202处,CPE 102使用本地存储在CPE 102上的初始启动代码序列启动。
在框204处,在CPE 102启动之后,它通过动态主机配置协议(DHCP)或者任何其它合适的手段本地获取它的IP地址。
在框206处,在某些实施例中,CPE 102可以被预配置(pre-provision)为呼叫该呼叫家庭服务器104并且请求它的配置。其它动态技术可以被用于由CPE远程地发现呼叫家庭服务器104的身份。
在框208处,呼叫家庭服务器104可以与配置服务器106通信并且向配置服务器106指示与CPE 102相关联的一个或多个参数。例如,呼叫家庭服务器104可以将CPE的IP地址、CPE 102的硬件和/或软件能力、与CPE 102的客户维持占有(possession)相关联的任何服务级别协议限制等传送到配置服务器106。响应于来自呼叫家庭服务器106的通信,配置服务器106可以使用合适的协议向CPE 102提供另外的配置信息。配置信息可以包括,但不限于,运行时间参数和/或可执行代码。
在某些实施例中,配置服务器106使用诸如网络配置协议(NETCONF)的协议将配置信息传送到CPE 102。NETCONF提供使用简单远程过程调用(RPC)层安装、改变和管理网络装置的配置的机制。在某些实施例中,CPE 102可以使用zerotouch NETCONF协议与呼叫家庭服务器104通信。Zerotouch NETCONF协议可以提供用于在新部署的CPE 102(配置有它的工厂默认设置)与呼叫家庭服务器104之间建立安全NETCONF连接的技术。NETCONF和zerotouch NETCONF的某些方面通过由因特网工程任务组(IETF)建立和维护的标准定义。
图3是根据公开的某些方面的、用于例示示例CPE的某些方面的示例框图。
在某些实施例中,CPE 300可以作为网络装置操作,具有诸如路由、交换和防火墙能力的网络能力以用于相应地执行网络分组的层级3(L3)和层级2(L2)处理和转发。CPE300可以将网络堆栈306中的网络功能实现为主机软件堆栈的部分(参考图3中的主机304)。网络堆栈306可以被称作路由器或者路由堆栈。
如这里所描述的,路由器可以指的是处理网络分组并且在物理或者逻辑装置之间转发它们的任何逻辑路由实体。路由器执行因特网上的“流量引导(traffic directing)”功能。如所提到的,在整个说明书中,路由器可以被配置为对网络分组执行路由操作、交换操作、防火墙操作和/或任何其它合适的网络操作。
如这里所描述的,路由器还可以提供基于端口和基于VLAN(虚拟局域网)的联网、L2(层2)和L3(层3)虚拟专用网、因特网可访问性、IPv4/IPv6路由、L2(层2)和L3(层3)COS(服务等级)、BFD(双向转发检测)、报告和服务级别协议、简单网络管理协议(SNMP)以及SDN(软件定义网络)管理的一个或多个。
网络分组典型地包括头部和有效载荷。有效载荷可以包括数据,并且用于网络分组的头部可以包括描述有效载荷的内容、对于网络有效载荷的路由、与网络分组相关联的服务质量、流信息等的属性。网络分组典型地被从一个路由器转发到另一个通过,直到它到达它的目的地节点。而且,网络分组可以指的是OSI模型的任何层的分组,并且可以与其它术语(诸如数据报、协议数据单元等)可互换地使用。
网络堆栈306可以实现用于CPE 300的路由和防火墙功能的路由器。例如,网络堆栈306可以实现与控制平面以及一个或多个数据平面和/或v平面(vplane)相关联的功能。控制平面和/或数据平面可以使用关于图9描述的一个或多个计算装置或者计算装置的组件实现。在某些实施例中,CPE 300可以使用一个或多个SDN(软件定义网络)原理实现。在某些实例中,网络光纤可以指的是用于互连若干组件以路由分组的网络拓扑。在一个实现中,CPE 300的网络堆栈306实现用于网络分组的处理和转发的路由器的数据平面方面,并且可以对于控制平面功能与远程装置通信。
控制平面可以负责系统配置、路由表信息的管理和交换。控制平面可以通过生成并且处理目的地为CPE 300的组件(诸如数据平面)或者由这些组件发起的控制平面分组来执行这些任务。例如,控制平面可以与其它网络装置或者系统交换拓扑信息,并且使用诸如路由信息协议(RIP)、开放最短路径优先(OSPF)或者边界网关协议(BGP)的路由协议构造/维护路由表。在一些实例中,控制平面可以被称作管理平面。
控制平面可以包括用于执行上述功能的一些的一个或多个控制器。所述一个或多个控制器可以使用一个或多个处理实体以处理控制平面分组。
处理实体可以指的是物理处理器(诸如
或者
处理器)或者专用集成电路(ASIC)。在另一个实施例中,处理实体可以是一组处理器。在另一个实施例中,处理实体可以是多核处理器的处理器核。在又另一个实施例中,处理实体可以是来自一个或多个处理器的一组核。处理实体可以是一个处理器、一组处理器、一个处理器的一个核或者一个或多个处理器的一组核的任何组合。
数据平面可以负责基于从控制平面接收的路由和配置信息将网络分组转发到网络中的下一跳。在某些实现中,数据平面可以支持与路由实体相关联的层2和层3路由功能、有状态和无状态防火墙、应用流、应用逻辑网关、网络访问装置(NAD)能力,并且在一些实例中,可以支持层4路由和更高层级检查能力的部分或者全部实现。在一些实例中,数据平面也可以被称作转发平面。数据平面可以使用如上所述的一个或多个处理实体实现,以处理通过一个或多个接口从网络或者关于控制平面从控制平面接收的分组。每个数据平面可以具有一个或多个物理(例如,网络接口卡,NIC)或者虚拟接口(例如,本地环回)。在某些实现中,接口可以通过端口号可寻址。
可以在配置控制平面和数据平面中使用物理和虚拟处理实体以及一个或多个装置的任何组合。例如,控制平面和数据平面的任何一个可以是物理实体或者虚拟实体,这些物理实体或者虚拟实体在单个系统或者多个系统上操作以提供它们各自的功能,而不背离本发明的范围。
至少在一个示例实施例中,由网络运营者操作的远程服务器可以提供控制平面功能,而CPE可以提供数据平面功能。
除了网络堆栈306之外,图3例示其中虚拟化技术被用于执行在这里描述的实施例的示例执行环境。一般地,“虚拟化技术”可以被用于提供共享相同的物理资源的不同操作环境之间的隔离。换句话讲,虚拟化可以提供计算资源从物理约束的逻辑抽象。一个常见的抽象被称作虚拟机(也被称作访客(guest))或者VM,该虚拟机或者VM在维持抽象的同时将在VM中运行的内容直接接口提供到物理硬件。一般地,虚拟化技术允许运行在同一物理硬件上的多个VM独立地操作并且彼此隔离。系统上的一个或多个VM由虚拟化的机器监视器,或者VMM 312(也被称作超管理器(hypervisor))管理。VMM 312是负责托管(host)和管理VM的软件或者固件层。VMM 312通常在比VM高的特权级别执行,并且管理系统的处理器和存储器,以及为每个VM分配其它资源。一般地,直接在装置上(即,不在VM内)运行的软件可以被称作主机304。在图3中,在系统上运行的网络堆栈306、虚拟机监视器312以及任何其它相关联的操作系统或者非虚拟化的应用进程和/或功能可以被称作主机304。
图3例示执行VMM 312的装置硬件302。VMM 312管理第一VM 308(VM1)、第二VM 310(VM2)以及任何另外的VM 312。如图10中更详细描述的,装置硬件302除了其它组件之外可以包括一个或多个处理器以用于操作计算系统。在某些实现中,处理器可以包括对虚拟化技术的硬件支持。例如,
和
品牌处理器提供支持虚拟化技术的硬件挂接(hook)。Qualcomm
也提供软件抽象层,该软件抽象层通过物理硬件资源的虚拟化和划分,使得多个操作系统和其它客户端能够在单个处理器上并发地执行。如上所述,某些处理器可以被构架为在可能的时候共享硬件资源,以更高效地利用某些硬件组件。例如,多个处理核可以共享处理器上的高速缓存和某些总线。而且,在一些实现中,多个执行线程可以在共享执行管道以及1级和2级高速缓存的同一线程上操作。
在某些实施例中,如图3中所示,VM1 308可以执行来自与网络堆栈306和/或CPE300的CPE提供者相同或者不同的供应商的路由器。而且,在某些实施例中,VM2 310可以执行防火墙以用于提供防火墙功能。在某些实例中,在主机304中或者至少在比VM高的特权级别并且作为网络堆栈306的部分而执行的路由器可以具有另外的功能。而且,在网络堆栈306中实现的路由器相对于在VM中实现的路由器可以具有较高的性能,因为网络堆栈306可以具有对硬件的直接访问,以及更健壮的资源分配。例如,操作系统可以使在用户空间中运行的实时线程专用于网络堆栈306,这可以导致以最优性能对路由、交换和防火墙功能分配诸如处理器核的某些专用硬件资源。
在某些实现中,在虚拟机中执行路由和交换功能可以使得能够部署具有来自CPE提供者的全特征路由能力的CPE。然而,在VM中提供运行路由、交换和联网功能的能力允许CPE 300部署之后的灵活性。例如,如果客户想要订购不同的服务(其需要具有不由CPE 300的网络堆栈306中的驻存路由和交换提供的某些构建版本的某些路由器),那么在这种实例中,CPE 300可以远程地配置为从任何数量的供应商下载包括必要路由器的映像并且在VM中执行路由和/或交换映像。
图4是根据公开的某些方面的、例示示例CPE的更详细框图。如图4中所示,CPE 400可以包括存储器430和系统硬件420。系统硬件420可以包括一个或多个处理实体422以及物理网络接口424。物理网络接口424可以提供用于从CPE传输和接收网络分组的物理端口。换句话讲,物理网络接口是CPE与专用或公共网络之间的互连点。例如,以太网端口可以是物理网络接口。来自系统硬件420的一个或多个处理器422可以将软件从存储装置925和/或网络加载到存储器430中以用于执行与CPE 400相关联的操作。
存储器430可以被逻辑地分割成若干区域,包括内核空间(或者内核)404以及用户空间408。从内核空间404加载的指令当被加载在一个或多个处理实体422中时可以在内核模式中执行。类似地,从用户空间408加载的指令当被加载在一个或多个处理实体422中时可以在用户模式中执行。在内核模式中从内核404执行的指令在一些实例中可以具有较高的特权并且可以能够执行特权指令,诸如操纵与处理器相关联的某些控制寄存器。
在某些实施例中,如先前所讨论的,虚拟机管理器(VMM)406可以连同内核404一起被实现、添加或者运行以支持虚拟化环境。在这种环境中,内核404、VMM 406以及用户空间408的部分可以认为是主机环境402的部分。VMM 406可以管理一个或多个虚拟机(VM)或者访客404。换句话讲,主机402可以包括VMM 406并且托管访客404。访客404可以认为是用户空间408的部分。
在某些实施例中,CPE 400可以具有使用基于内核的虚拟机(KVM)和/或快速仿真器(Qemu)的基于软件的虚拟化环境(即,仿真)或者硬件支持的虚拟化环境。例如,KVM可以允许由处理器虚拟化支持的资源的虚拟化以及命名空间的虚拟化。另一方面,Qemu仿真处理器/内核没有虚拟化的资源。例如,Qemu仿真网络接口卡(NIC)接口。
在某些实施例中,LibVert 416被用作VMM 406与访客404之间的另外层。在某些实施例中,LibVert 416可以提供应用可编程接口(API)到Qemu中。Libvert还提供用于管理虚拟化功能(诸如开始、停止和管理VM)的工具集。另外,在某些实施例中,根据公开的方面,LibVert命令通过数据模型410暴露,使得可以使用操作模式命令(诸如命令行接口(CLI)、代表性状态转移(REST)和NETCONF)远程地或者通过连接的终端管理虚拟机。使用这种操作模式命令,一个或多个虚拟机404的虚拟机生命周期可以由配置服务器306或者OSSBSS远程地管理。
操作模式命令可以被用于暴露环境的某些状态。在某些实现中,在操作模式中,远程实体可以重置某些资源,但是可能不被允许改变配置。这种配置改变在配置模式中基于具体的安全上下文执行。在某些方面,VM生命周期管理,诸如开始、停止或者改变VM配置,可以通过更新数据模型410(导致命令通过Libvirt 416到达VM)通过来自用户空间408的命令而执行。例如,使用操作模式命令,用户可以登录并且可以通过修改数据模型参数开始和管理VM。
在某些实例中,诸如开放堆栈的协议可以被用于直接通过LibVert 416API管理访客404。在公开的某些其它方面,如以上简要地讨论的,代替使用诸如开放堆栈的协议,所有命令通过用户空间408中由主机402维护的数据模型410隔绝(sequester)。这可以允许使用一个模型跟踪关于CPE 400执行的所有网络动作,代替随着时间跨越实现地跟踪各种状态机中的状态(潜在地导致跨越装置的状态的不同步传播以及错误)。
在一个实现中,可以使用又另一个下一代(YANG)模型实现数据模型410。YANG是用于NETCONF的数据建模语言。YANG可以被用于对网络元件的配置数据以及状态数据两者建模。而且,YANG可以被用于定义由网络元件发出的事件通知的格式。因此,使用YANG实现的数据模型410允许CPE 400具有使用统一模型维持过渡和静态状态的能力。
例如,在某些实施例中,所有可更新的操作模式状态可以使用用户接口层作为参数被暴露。与操作模式状态相关联的这些参数的每一个被映射到数据模型410中。所以,为了添加新的特征,像可以具有对于它的现有Linux守护进程的DHCP服务器一样,特征可以作为映射到数据模型410中的许多参数暴露给用户。所以,对DHCP服务器的任何改变直接反映在数据模型410中。这种统一数据模型410的实现允许系统中各种数据元素的更好同步。例如,如果系统守护进程或者用户访问数据元素,那么数据元素的真实和当前拷贝可以通过访问数据模型410而访问。
而且,支持联网基础设施的CPE 400的若干方面作为用户空间408的部分而实现以增加系统的响应性。
传统地,在内核处在物理网络接口424处接收的分组由以太网驱动在内核空间中处理。内核的联网堆栈可以执行网过滤(net filtering)、路由并且然后通过不同的物理网络接口送出经处理的分组。
相反,如这里所公开的,CPE 400在内核中提供影子(shadow)接口驱动。这些影子接口驱动负责获得分组并且将它们移动到用户空间分组管道(框412和414),同时对内核性能带来可以忽略的成本。在用户空间408中,使用负责处理网络分组的实时线程处理分组。
“线程”可以指的是处理器或者处理核上的执行的线程,并且可以包括与特定的任务相关联的指令流或者指令的有序序列。内核404可以将实时线程指派给特定的任务。实时线程可以使用比其它线程或任务高的优先级执行或者可以被指派专用资源。传统地,实时线程被指派给诸如音频或者视频的任务,这些任务需要恒定的吞吐量以避免抖动。
在某些实现中,将实时线程指派给特定的任务,诸如处理网络分组,可以导致将物理核指派给该线程的处理,从而导致网络分组的相对无抖动和优先的处理。在又其它实施例中,内核404或者用户空间402代码可以将亲和性(affinity)指派给实时线程,使得特定的核被指派给实时线程。而且,随着核的数量增加,由于核作为专用资源被指派给具体任务的处理,所以系统的性能可以随着核的数量而线性地增加。
如上所述的实现可以避免需要较低延迟和恒定吞吐量的任务(诸如实时任务)当在内核空间中处理时可能被较高优先级线程(诸如内核线程或者其它实时线程)阻塞、导致对于像VoIP的甚至实时分组处理任务的分组处理的差性能的情况。因此,公开的方面通过在用户空间408中指派由操作系统提供的实时线程来在用户空间408中执行关键的分组处理。
在某些方面,内核的开放构建服务可以用使用实时线程的层级2(L2)分组管道412和层级3(L3)分组管道414替换。在某些实施例中,L2分组管道412和L3分组管道414可以直接与虚拟机通信。这种实现允许L2分组处理、L3分组处理和虚拟机间的通信。因此,代替使用V交换机,虚拟机404可以使用在主机402的用户空间408中提供的路由能力彼此通信。
V交换机是在Apache许可下实现的虚拟交换机。上述实现可以提供相比通过V交换机提供的VM通信的若干优点。例如,这里描述的实现可以提供相比V交换机的更好的通信延迟以及较低的抖动,特别是在低功率机器上。例如,通过V交换机的最大性能是每秒钟大约1.2至1.5百万分组,这小于千兆字节的吞吐量。并且传统地,在低功率装置上,使用V交换机吞吐量是大约200兆字节。因此,代替使用V交换机,虚拟机404可以使用在主机402的用户空间408中提供的路由能力彼此通信。
在某些情况下,其中两个VM可以各自实现路由器并且彼此通信,传统地,网络分组通过诸如以太网接口的物理网络接口424到达主机402,并且被传递到在第一VM中实现的第一路由器。为了使第一VM与第二路由器通信,网络分组通过V交换机返回并且到达第二路由器(诸如防火墙),并且返回离开系统。在这种实现中,网络功能(网络地址转换(NAT)、服务点(POS)等)在虚拟机中发生。
相反,根据公开的方面,某些联网功能通过由CPE 400自身实现的主机402的用户空间408处理。因此,在VM 404中实现的某些路由能力可以使用在主机402中实现的联网功能,这可以以比在虚拟机404中实现所有的联网功能低得多的延迟执行。而且,管理端口可以以类似的方式配置到在系统中本机(native)操作的任何其它网络接口。在某些方面,除了在传统系统中主机402处执行的管理相关的功能之外,在主机402处实现的联网功能包括转发相关的功能。因此,路由器的一个在主机中实现并且第二路由器在VM中实现。L2和/或L3分组管道可以在主机中操作的第一路由器与VM中操作的第二路由器之间通信时使用。
这种实现允许CPE系统的灵活性,其中在系统部署到客户驻地之后,系统可以使用作为主机402的部分而实现的本机路由能力提供路由功能或者可以通过在访客402中提供路由能力来增强或者替换网络功能。
与虚拟机或者主机的内核空间相对,公开的方面使用实时线程在主机的用户空间408中执行路由功能,显著地增加对于分组的分组处理和转发的联网功能的性能。
另外,CPE 400可以提供综合软件平台以启用网络运营者或者CPE提供者的多个服务,提供端到端“打电话回家(phone home)”解决方案,用于配置下载、生命周期管理和故障排除,并且提供到SDN控制器架构的无缝集成。
VM生命周期管理:
图5是根据公开的某些方面的、例示在CPE上执行的VM的管理的另一个示例框图。图5中的粗线例示操作模式命令如何可以管理在CPE上执行的VM的操作模式状态。操作模式命令可以被用于访问由数据模型410暴露的装置环境的某种状态。在某些实现中,使用操作模式命令,远程实体可以重置某些资源,但是可能不被允许改变配置。这种配置改变在配置模式中基于具体的安全上下文执行。在某些方面,VM生命周期管理操作,诸如开始、停止或者改变VM配置,可以通过操作模式命令执行。在图5中,粗线502指示操作模式命令。操作模式命令可以使用命令行接口(CLI)、代表性状态转移(REST)、NETCONF或者任何其它合适的手段发出。
操作模式命令更新数据模型410的参数。所有命令通过用户空间408中由主机402维护的数据模型410隔绝。这可以允许使用一个模型跟踪关于CPE 400执行的所有网络动作,代替随着时间跨越实现跟踪各种状态机中的状态(潜在地导致跨越装置的状态的不同步传播以及错误)。
在一个实现中,可以使用又另一个下一代(YANG)模型实现数据模型410。YANG是用于NETCONF的数据建模语言。YANG可以被用于对网络元件的配置数据以及状态数据两者建模。而且,YANG可以被用于定义由网络元件发出的事件通知的格式。因此,使用YANG实现的数据模型410允许CPE 400具有使用统一模型维持过渡和静态状态的能力。
例如,在某些实施例中,在数据模型410中表示的所有可更新的操作状态可以使用用户接口层作为参数被暴露。与操作模式状态相关联的这些参数的每一个被映射到数据模型410中。所以,为了添加新的特征,像可以具有对于它的现有Linux守护进程的DHCP服务器一样,特征可以作为映射到数据模型410中的许多参数暴露给用户。对DHCP服务器的任何改变直接反映在数据模型410中。这种统一数据模型410的实现允许系统中各种数据元素的更好同步。例如,如果系统守护进程或者用户访问数据元素,那么数据元素的真实和当前拷贝可以通过访问数据模型410而访问。
在一个实施例中,对数据模型410做出的、与对VM的更新有关的任何改变被传播(粗线504)到LibVirt 416库。LibVirt库与VMM 406协调并且更新VM以及相应地在VM内执行的路由器,如由粗线506所示。
在一些实施例中,诸如开放流的协议可以被用于直接更新VM。然而,更新VM的这种带外实现不提供将数据模型410同步到对VM或者与VM相关联的路由器做出的改变的机制,风险在于在表示CPE的操作状态时数据模型的准确性和完整性。
本机CPE分组处理:
图6是根据公开的至少某些方面的、例示由CPE执行的路由功能的框图。
当运送到客户时,根据公开的方面,CPE 400可以提供本机CPE分组处理。换句话讲,路由器可以被设计到CPE 400的主机402中。在一些实例中,CPE 400可以提供路由能力,诸如交换和路由,甚至不设置虚拟机。然而,预安装或者在CPE 400部署在客户驻地之后的任何随后的时间点,路由器可以在VM内安装或者升级。
如这里所描述的,在主机402中本机运行路由器向CPE提供如部署那样将网络分组路由到客户的能力。客户和/或网络运营者可以在VM中安装另一个路由器以对装置提供部分或者全部路由能力。
根据公开的方面,在CPE 400中的主机402中执行的路由器可以被优化以用于执行分组处理。在某些实施例中,支持联网基础设施的CPE 400的若干方面作为用户空间408的部分而实现以增加系统的响应性。
传统地,在内核处在物理网络接口处接收的分组由以太网驱动在内核空间中处理。内核的联网堆栈可以执行网过滤、路由并且然后通过不同的物理网络接口送出经处理的分组。
相反,如这里所公开的,CPE 400在内核中提供影子接口驱动。这些影子接口驱动负责获得网络分组并且将它们移动到用户空间分组管道(框412和414),同时对内核性能带来可以忽略的成本。图6例示网络分组到达物理网络接口424(诸如Eth0 606)并且调用在内核404中执行的Eth0驱动602(粗线610)。在内核404中执行的Eth0驱动602将网络分组从Eth0 606拷贝到用户空间408存储器(粗线614)。
在用户空间408中,使用负责处理网络分组的实时线程处理网络分组。L2分组管道412或者L3分组管道414可以被用于网络分组的处理。图6例示Eth0驱动602将控制转移到L2分组管道412并且处理分组。
在某些实现中,将实时线程指派给特定的任务,诸如处理网络分组,可以导致将物理核指派给该线程的处理,从而导致网络分组的相对无抖动和优先的处理。在又其它实施例中,内核404或者用户空间402代码可以将亲和性指派给实时线程,使得特定的核被指派给实时线程。而且,随着核的数量增加,因为核可以作为专用资源被指派给网络分组的处理,所以对于分组处理的性能可以随着核的数量而线性地增加。
如上所述的实现可以避免需要较低延迟和恒定吞吐量的任务(诸如实时任务)当在内核空间中处理时可能被较高优先级线程(诸如内核线程或者其它实时线程)阻塞、导致对于像VOIP的甚至实时分组处理任务的分组处理的差性能的情况。因此,公开的方面通过在用户空间408中指派由操作系统提供的实时线程来在用户空间408中执行关键的分组处理。
VM间通信:
如图6中所示,第二路由器可以在访客的VM 3中实现,并且来自CPE 400的主机402的路由器可以与在VM中实现的路由器通信。例如,在一个实现中,CPE 400中的本机路由器可以执行路由功能并且VM 3中的第二路由器可以实现防火墙。
如图6中所示,在L2分组管道412中处理分组之后,CPE 400可以将控制变换(shift)到LibVirt 416,以将网络分组转移到VM 3用于进一步处理。在处理网络分组之后,VM 3中的第二路由器可以通过LibVirt 416和VMM 406(线620)、Eth1驱动604(线622)以及然后Eth1 608(线612)将网络分组送出第二物理网络,诸如Eth1 608接口。
图7是根据公开的至少某些方面的、例示VM间通信的框图。
如图7中所示,在VM 2中实现的第一路由器可以与在VM 3中实现的第二路由器通信。通信可以通过LibVirt 416路由到适当的分组管道并且通过Libert 416回到VM 3。
传统地,在这种设置中,V交换机将被用于VM间通信。如先前所讨论的,V交换机是在Apache许可下实现的虚拟交换机。通过V交换机的最大性能是每秒钟大约1.2至1.5百万分组,这小于千兆字节的吞吐量。并且传统地,在低功率装置上,使用V交换机吞吐量是大约200兆字节。一般地,当在同一装置上执行的两个VM之间通信时,V交换机引入缓慢瓶颈。
因此,代替使用V交换机,根据公开的方面,VM 404可以使用在主机402的用户空间408中提供的路由能力彼此通信。CPE 400的主机402中的路由器或者路由能力可以被用于在VM之间路由分组。更具体地,L2和L3分组管道可以被用作桥,以用于以比V交换机高得多的速度的VM间通信。L2和L3分组管道可以使得能够进行比V交换机快的VM间通信,至少因为分组的处理被指派用户空间中的实时线程,如先前更详细地描述的那样。
图8是例示对于CPE的部署模型的公开的某些方面的示例流程图。
在框802处,部署到客户驻地的CPE被接通并且使用来自CPE自身的驻存固件/软件映像启动,并且获取它的IP地址。CPE可以使用DHCP协议获取它的IP地址。在框804处,如果CPE没有连接到由网络运营者维护的远程服务器,那么在框806处,用户可以使用web图形用户界面(GUI)本地检查CPE的状态。与网络运营者相关联的远程服务器可以是呼叫家庭服务器、配置服务器或者任何其它服务器。
在框808处,如果CPE可以连接到远程服务器,那么CPE向网络运营者注册它自己。例如,CPE在向网络运营者注册它自己之前可以唯一地将它自己识别为由网络运营者操作或者维护的装置。
在框810处,可以检查CPE软件/固件映像以确定它是否最新的。例如,在一个实现中,CPE上的驻存映像的散列(hash)和/或版本可以与来自网络运营者的最新映像的散列和/或版本相比较。可以在CPE与远程服务器之间的安全通信信道上执行关于更新版本以及它的散列的通信。如果当前安装在CPE上的软件/固件映像过时或者损坏,那么在框812处,网络运营者可以将更新的软件/固件映像下载到CPE上。在框814处,一旦CPE软件/固件被更新,CPE GUI就可以显示已连接和/或就绪状态。
在框816处,网络用户可以登录到由网络运营者提供的网络门户以用于配置和维护CPE。网络用户可以访问与特定CPE相关联的门户仪表板(dashboard)(框818)。在框820处,基于来自网络用户的输入,网络门户可以确定网络用户是否打算添加与CPE相关联的服务(在框820处)并且将网络用户带到新的服务选择窗格(pane)(框822)。类似地,基于来自网络用户的输入,在框824处,网络门户可以确定网络用户是否打算配置服务并且将网络用户带到服务配置窗格(框826)。一旦确定新的配置和服务,网络运营者就可以对CPE进行标记,以用于CPE下一次启动时的升级/更新。在一些实例中,网络用户可以强制CPE上的重启。
已描述了CPE 300和CPE 400的多个方面,现在将关于图9描述可以实现公开的各种方面的计算系统的示例。根据一个或多个方面,如图9中所例示的计算机系统可以合并为CPE 300和400的部分,它可以实现、执行和/或实行在这里描述的特征、方法和/或方法步骤的任何一个和/或全部。例如,计算机系统900可以表示CPE 300或者CPE 400的组件的一些。在一些实施例中,系统900被配置为实现上述方法的任何一个。图9提供计算机系统900的一个实施例的示意例示,如这里所描述的,计算机系统900可以执行由各种其它实施例提供的方法,和/或可以起网络装置或者网络装置的组件或者分布式网络系统300的作用。图9仅意图提供各种组件的一般化例示,可以在适当的情况下利用它们的任何一个和/或全部。因此,图9广泛地例示如何以相对单独或者相对更加集成的方式实现个体系统元件。
计算机系统900被示出包括可以经由总线905电气耦合(或者适当地,可以另外处于通信中)的硬件元件。硬件元件可以包括一个或多个处理器910,其没有限制地包括一个或多个通用处理器和/或一个或多个专用处理器(诸如数字信号处理芯片、图形加速处理器和/或类似物);一个或多个输入装置915,该输入装置915可以没有限制地包括无线接收器、无线传感器、鼠标、键盘和/或类似物;以及一个或多个输出装置920,该输出装置920可以没有限制地包括显示单元、打印机和/或类似物。
在一些实施例中,一个或多个处理器910可以被配置为执行以上关于图9描述的功能的子集或者全部。处理器910可以包括例如一般处理器和/或应用处理器。在一些实施例中,处理器被集成到处理视觉跟踪装置输入和无线传感器输入的元件中。
计算机系统900还可以包括一个或多个非暂时性存储装置925(和/或处于与其通信中),该非暂时性存储装置925可以没有限制地包括本地和/或网络可访问存储,和/或可以没有限制地包括磁盘驱动器、驱动器阵列、光学存储装置、固态存储装置,诸如随机存取存储器(“RAM”)和/或只读存储器(“ROM”),它们可以可编程、可闪速更新和/或类似物。这种存储装置可以被配置为实现任何适当的数据存储,其没有限制地包括各种文件系统、数据库结构和/或类似物。
计算机系统900也可以包括通信子系统930,该通信子系统930可以没有限制地包括调制解调器、网络卡(无线或者有线)、红外通信装置、无线通信装置和/或芯片集(诸如
装置、802.11装置、WiFi装置、WiMax装置、蜂窝通信设施等)和/或类似物。通信子系统930可以允许数据与网络(诸如下述网络,举一个示例)、其它计算机系统和/或在这里描述的任何其它装置交换。在许多实施例中,计算机系统900还将包括非暂时性工作存储器935,如上所述,该非暂时性工作存储器935可以包括RAM或者ROM装置。在一些实施例中,通信子系统930可以与被配置为从接入点或者移动装置传输和接收信号的收发器950接口。一些实施例可以包括单独的一个接收器或多个接收器以及单独的一个传输器或多个传输器。
计算机系统900也可以包括被示为当前位于工作存储器935内的软件元素,包括操作系统940、装置驱动、可执行库和/或其它代码,诸如一个或多个应用程序945,如这里所描述的,其可以包括由各种实施例提供的计算机程序,和/或可以被设计为实现由其它实施例提供的方法和/或配置系统。仅仅通过示例的方式,关于以上讨论的方法而描述的一个或多个过程,例如关于图9所描述的,可以实现为由计算机(和/或计算机内的处理器)可执行的代码和/或指令;然后,在一方面,这种代码和/或指令可以被用于配置和/或改编(adapt)通用计算机(或者其它装置)以执行根据所描述的方法的一个或多个操作。
这些指令和/或代码的集合可以存储在计算机可读存储介质(诸如上述存储装置925)上。在一些情况下,存储介质可以合并在计算机系统(诸如计算机系统900)内。在其它实施例中,存储介质可以与计算机系统分离(例如,可移除介质,诸如紧凑盘),和/或提供在安装包中,使得存储介质可以被用于利用存储在其上的指令/代码对通用计算机进行编程、配置和/或改编。这些指令可以采取由计算机系统900可执行的可执行代码的形式和/或可以采取源和/或可安装代码的形式,其在计算机系统900上编译和/或安装(例如,使用各种一般可用的编译器、安装程序、压缩/解压缩实用工具等的任何一个)时然后采取可执行代码的形式。
可以根据具体的需求做出大量变化。例如,也可以使用定制硬件,和/或特定的元素可以以硬件、软件(包括可移植软件,诸如小应用程序等)或者二者实现。而且,可以采用到诸如网络输入/输出装置的其它计算装置的连接。
一些实施例可以采用计算机系统(诸如计算机系统900)以执行根据公开的方法。例如,所描述的方法的过程的一些或者全部可以响应于处理器910执行包含在工作存储器935中的一个或多个指令的一个或多个序列(其可以合并到操作系统940和/或其它代码(诸如应用程序945)中)而由计算机系统900执行。这种指令可以从另一个计算机可读介质(诸如存储装置925的一个或多个)读入到工作存储器935中。仅仅通过示例的方式,包含在工作存储器935中的指令的序列的执行可以使处理器910执行这里所描述的方法(例如关于图8描述的方法)的一个或多个过程。
如这里所使用的,术语“机器可读介质”和“计算机可读介质”指的是参与提供使机器以具体的方式操作的数据的任何介质。在使用计算机系统900实现的实施例中,各种计算机可读介质可以涉及提供指令/代码给处理器910以用于执行和/或可以被用于存储和/或携载这种指令/代码(例如,作为信号)。在许多实现中,计算机可读介质是物理和/或有形的存储介质。这种介质可以采取许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质包括例如光盘和/或磁盘,诸如存储装置925。易失性介质没有限制地包括动态存储器,诸如工作存储器935。传输介质没有限制地包括同轴电缆、铜线和光纤,包括包含总线905的导线,以及通信子系统930的各种组件(和/或通信子系统930通过其提供与其它装置的通信的介质)。因此,传输介质也可以采取波的形式(没有限制地包括无线电、声和/或光波,诸如在无线电波和红外数据通信期间生成的那些)。
物理和/或有形的计算机可读介质的常见形式包括例如软盘、柔性盘、硬盘、磁带或者任何其它磁性介质、CD-ROM、任何其它光学介质、穿孔卡、纸带、具有孔图案的任何其它物理介质、RAM、PROM、EPROM、FLASH-EPROM、任何其它存储器芯片或者盒、如下文描述的载波、或者计算机可以从其读取指令和/或代码的任何其它介质。
各种形式的计算机可读介质可以涉及将一个或多个指令的一个或多个序列携载到处理器910以用于执行。仅仅通过示例的方式,指令可以初始携载在远程计算机的磁盘、光盘或者固态硬盘上。远程计算机可以将指令加载到它的动态存储器中并且将指令作为信号在传输介质上发送以由计算机系统900接收和/或执行。根据本发明的各种实施例,可以是电磁信号、声学信号、光学信号和/或类似物的形式的这些信号是可以在其上编码指令的载波的所有示例。
通信子系统930(和/或其组件)一般将接收信号,并且总线905然后可以将信号(和/或由信号携载的数据、指令等)携载到工作存储器935,处理器910从工作存储器935检索并且执行指令。由工作存储器935接收的指令可以在由处理器910执行之前或者之后可选地被存储在非暂时性存储装置925上。存储器935可以包含根据这里描述的数据库和方法的任何一个的至少一个数据库。存储器935因此可以存储在本公开的任何一个(包括图1-8和相关描述)中讨论的值的任何一个。
在一些实现中,计算机系统900,诸如前面的图中讨论的CPE,可以使用基于X86的架构以用于它的处理需要。然而,本发明的实施例不限于基于X86的架构。在某些实施例中,计算机系统900可以以在1-2机架单元(RU)形状因子实现。在某些实施例中,可以使用商业成品(COTS)或者COGS组件实现计算机系统以包含成本。
在这里描述的方法可以由图9中的各种框实现。例如,处理器910可以被配置为执行流程图中的框的功能的任何一个。存储装置925可以被配置为存储中间结果,诸如在这里提及的框的任何一个内讨论的全局唯一属性或者局部唯一属性。存储装置925也可以包含与本公开的任何一个相一致的数据库。存储器935可以类似地被配置为记录执行在这里提及的框的任何一个中描述的功能的任何一个所必要的信号、信号的表示或者数据库值。可能需要被存储在诸如RAM的临时或者易失性存储器中的结果也可以包括在存储器935中,并且可以包括与可以存储在存储装置925中的相类似的任何中间结果。根据这里描述的本公开,输入装置915可以被配置为从卫星和/或基站接收无线信号。根据本公开的任何一个,输出装置920可以被配置为显示图像、打印文本、传输信号和/或输出其它数据。
以上讨论的方法、系统和装置是示例。各种实施例可以适当地省略、代替或者添加各种过程或者组件。例如,在替代配置中,所描述的方法可以按照与描述的不同的次序来执行,和/或可以添加、省略和/或组合各种阶段。关于某些实施例而描述的特征可以在各种其它实施例中组合。可以以类似的方式组合实施例的不同方面和元素。技术演变,并且因此,许多元素是不将本公开的范围限制到那些具体示例的示例。
在描述中给出具体细节以提供实施例的彻底理解。然而,实施例可以不使用这些具体细节而实践。例如,众所周知的电路、处理、算法、结构和技术没有示出不必要的细节以便避免模糊实施例。该描述仅提供示例实施例,并且不打算限制本发明的范围、可适用性或者配置。然而,实施例的前面的描述将向本领域那些技术人员提供实现本发明的实施例的使能描述。可以在元素的功能和布置方面做出各种改变而不背离本发明的精神和范围。
而且,一些实施例描述为如流程图或者框图描绘的处理。尽管每个可以将操作描述为顺序的处理,但是可以并行地或者并发地执行许多操作。另外,可以重新布置操作的次序。处理可以具有没有包括在图中的另外的步骤。而且,方法的实施例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或者它们的任何组合实现。当以软件、固件、中间件或者微代码实现时,执行相关联任务的程序代码或者代码段可以存储在诸如存储介质的计算机可读介质中。处理器可以执行相关联的任务。
已描述了若干实施例,但是可以使用各种修改、替代构造和等同物而不背离公开的精神。例如,以上的元素可以仅仅是较大系统的组件,其中其它规则可以优先于本发明的应用或者另外修改本发明的应用。许多步骤可以在考虑以上的元素之前、期间或者之后进行。因此,以上的描述不限制公开的范围。
已描述了各种示例。这些和其它示例在下面的权利要求书的范围内。