这篇文章是ICN架构梳理系列的第二篇,COMET: Content mediator architecture for content-aware networks, 这篇论文是来自于欧洲的 FP7 (Frame Project 7)项目,于2011年发表。
这篇文章读下来呢,感觉跟DONA的感觉很不一样,DONA提出的是一种架构性的设计,而COMET给人的感觉是设计了一套系统,两篇论文给人的感觉很不一样,不知道这是否能反映出美国人和欧洲人思路的差异性?
言归正传,首先从系统架构开始看起。然后再从系统中的各个模块出发依次进行介绍与分析。
1.系统架构
COMET将用户获取内容过程中的网络划分为两层,上层叫Content Mediation Plane,如图1-1中间上部粉色部分,主要用于进行内容的解析、路由以及其他高级功能,而底层叫Content Forwarding Plane,主要是用于进行内容的传输,如图1-1中间下部黄色部分。两个平面之间的关系可以类比SDN的控制平面以及数据平面之间的关系。
图1-1 COMET架构图
内容的请求者与内容的提供者之间通过CFP与CMP的合作,完成内容的获取以及通信过程。在有了对系统的认识的情况下,介绍一下系统的工作流程与系统的模块功能。
2.模块介绍
图1-1中,我们看到除了整体的大块CMP与CFP之外,其中还有很多的小模块,这些小模块都有着各自的功能,对整个COMET的正常运行起着重要作用,下面将一一介绍这些模块。
Content Resolution Functional blocks(CRF) 内容解析功能模块
这一模块的功能在内容注册以及内容消耗这两个过程中被触发。内容的发布者有新的内容需要注册给网络的时候,会联系CRF要求分发内容标识或者是全局唯一的内容名,之后CRF会在系统中注册内容及其对应的内容发布者。考虑到可扩展性,单个CRF不可能记录整个网络中的所有内容,因此要将内容进行分域管理。
另一个应用到CRF的场景是内容的消费,将用户对内容的请求解析为内容相关的特征,比如说内容的记录,内容的元数据以及从内容名到内容标识的转换。
Path Management Functional block (PMF) 路径管理模块
PMF是CMP与CFP交互的一个模块。PMF主要收集底层网络可达性的情况(包括底层的拓扑等等),并将这些信息上报给CMF模块。
Server and Network Monitoring Functional block (SNMF) 服务器与网络监测模块
这一模块的功能正如其名字一样,主要负责监视服务器与网络的状况,负责收集内容服务器的可用性与负载情况,底层网络中每条链路的流量情况,主要包括接入线路的负载以及对等线路的负载(对等线路,指的是跨域流量?),同样,这些收集的信息也要上报给CMF模块。
Content Mediation Functional block (CMF) 内容调度模块
内容调度模块是CMP的中心模块,它收集CRF、PMF以及SNMF所收集到的信息,同时还在用户请求内容期间与内容请求者进行交互。除此之外,CMF还要与CFP中的CAFF进行交互,这一交互主要负责路径的配置。总体上来说,CMF的主要功能是针对用户的请求,转化成最恰当的内容传输决策,让用户从较优化的路径上获取较合适的内容服务器上的内容。
Content-Aware Forwarding Functional block (CAFF)内容感知转发模块
内容感知转发模块是CFP中唯一的功能模块,可以按照CMF的规划在指定的路径中传输内容,也可以增强其能力,实现QoS、流量分类、多播、NAT等功能。
3.系统工作流程
3.1内容的发布
内容的发布主要包括三个步骤,分别是内容标识的分发,内容的放置以及内容的注册。
内容标识在COMET中是为了实现对内容的唯一标识,不管是内容ID还是内容名,只要保证全局唯一即可。所谓的ID,指的是针对机器可读的形式,所谓的内容名,指的是针对人类可读的形式。内容的标识主要是将内容的一到若干个副本放置在网络中的若干个节点中,同时需要将内容所在的位置报告给COMET系统,以此实现网络可以实现基于内容的路由,这一效果的实现主要靠的是内容注册这一子操作,同时内容的注册也只能在前两步完成之后进行。最终的结果是,COMET记录网络中某个位置存储某个内容。
3.2内容的消费
内容的消费主要有三个操作组完成,第一个操作是与内容消费无关、一直在进行的操作,叫做Awareness(感知)操作,另外两个则分别是内容的解析与内容的传输。
Awareness操作主要有三个内涵,分别是routing awareness, server awareness, 以及network awareness。 Routing awareness主要的职责是实现对网络拓扑的收集与认知,获取网络的可达性信息;server awareness获取的主要是服务器的性能信息,以便进行负载均衡;network awareness主要的工作是进行网络测量与监控,获取底层网络链路的状态信息,以便进行流量工程类似的工作。
内容解析则是伴随着用户对内容的请求而产生的,当用户请求内容时,COMET会确定内容所在的位置以及传输内容的通道是什么,这主要包括四个步骤,第一个是内容名的解析,用户对内容的请求的形式是内容名或者内容ID,COMET据此判断出内容所处的位置;第二个步骤是路径发现,根据routing awareness所提供的信息,获取到从内容源到内容请求者之间路径的信息(可能包含多条路径);接下来就是针对路径发现所提供的路径进行决策的过程,就叫做决策过程,根据之前两个步骤提供的信息选择最优化路径;最后一个步骤是路径配置,负责将选择的路径在网络层进行真实的配置。
内容的传输则依靠更底层的网络能力进行区别传输以及QoS保障等。
4.实现方式
他们给的实现方式有两种,分为耦合和非耦合两种,其实就是Look up by Name 与 Forward by Name两种机制。非耦合的需要提供一个类似DNS的实体来完成对应的功能,耦合的就是逐跳解析、逐跳转发,注意在耦合的结构中,内容请求是由CMF转发到CMF的,而内容返回的路径则是按照CMP中在内容请求时已经配置好了的路径在CFP中反向返回。
5.弊端
COMET的弊端或许正如实现方式那部分那样的含混不清吧,尽管在之前描述了很多功能模块,也描述了一些流程,但是缺少对细节的设计,论文的思路也并不算清晰,而且,更多的感觉是这是一个系统,而不是一个网络架构。对于CMP与CFP两者之间的关系,没有给出很明确的说明,给人的感觉是CMP传输内容请求,CFP传输内容,但是两个平面像是一个是数据平面,一个是数据控制平面的混杂,个人认为这样的结构不清晰,也不优美