论文部分内容阅读
摘 要:今天互联网架构的很多原则是十九世纪六七十年代设计的,经过五十多年的发展,当今互联网是以内容传输和消费为核心,但网络架构仍为TCP/IP。美国的Van Jacobson提出了一种基于命名数据思想的新型网络,内容中心网络(简称:CCN),CCN网络在底层没有主机概念,CCN的地址用来命名内容而不是主机,这种网络在结构上更加简单,更好地支持内容分发和移动互联网络。本文将详细介绍CCN网络的设计原则及详细设计。
关键词:内容中心网络;设计原则;详细设计
1内容中心网络设计原则
在分析TCP/IP网络的优势和劣势后,根据当前网络状态确定设计原则指导CCN设计。
1.1沙漏模型 沙漏模型使最初的互联网设计优雅而高效,它使用唯一一个通用的核心层IP协议来进行全球互联,这也是TCP/IP协议可以爆发性增加的关键原因,这种无限制的通用设计给上下层协议更高的自由度和容忍度。CCN的设计保留了这种沙漏模型,使用命名内容替换了原有网络中间的IP协议。
1.2重视安全性 当今互联网在设计之处并没有过多考虑安全性,以至于现在的安全问題只能不断修补。而CCN对所有的命名数据提供签名验证,在架构层面提供安全保障。
1.3端到端原则 使得应用能够容忍网络故障,有更稳定的连通性。
1.4网络流量自律性 对于一个稳定的网络来说,流量平衡和拥塞控制是必须的,现有的网络曾因为拥塞控制而修补传输层协议,CCN网络在核心层制定了流量平衡策略。
1.5路由和转发平面分离 这个原则可以保证路由技术和转发技术并行发展,CCN网络希望可以支持最新的各方面技术。
1.6保持中立性 CCN网络希望尽最大努力保证所有用户的自由选择和公平竞争。
2内容中心网络详细设计
2.1网络协议包类型
CCN网络定义了两种基本类型包,兴趣包和数据包,作为协议的基本元素。一个节点通过它的端口发送兴趣包到网络邻节点上来获取期望的数据包,兴趣包和数据包一一对应,来完成数据的请求和接收。
2.1.1兴趣包 兴趣包用来请求特定内容名的数据,一个兴趣包提供前缀名和规则来定义数据块,所以可以做到精确检索,兴趣包中的筛选规则是定位数据包的关键。
2.1.2数据包 数据包用来装载数据。一个数据包不仅包含有效数据,还包括数据的识别名字、加密签名、签名证书和有关签名的其他信息,一般情况下,一个数据包唯一绑定一个识别名称、一个发布者和一个数据块。每一个数据包必须包含一个签名信息,应用程序使用数据之前也验证发布者的签名,这样就确保了所有数据的安全性。
2.2通讯流程
信息中心网络的通信是由数据消费者驱动的,消费者通过广播兴趣包来请求数据,兴趣包中包含它期望的数据的名字。路由器接收到兴趣包后,记录接收兴趣包的接口,并通过转发表(Forwarding Information Base, FIB)转发兴趣包,转发表使用一种基于名字的路由协议。兴趣包找到包含请求数据的节点后,一个数据包会被发送回来,数据包中包含数据名、数据内容以及数据生产者的签名,数据包会沿着兴趣包的路径原路返回到消费者。在整个过程中,兴趣包和数据包都不依靠任何基于位置的地址,兴趣包是按照数据命名来进行路由找到数据包节点的,数据包节点返回时按照兴趣包沿路留下的状态信息进行路由跳转。
内容中心网络的通信流程如图2.2所示:
CCN的路由器会把兴趣包和数据包保存一段时间,当下游的多个兴趣包请求同一个数据时,路由器只会向上游发送一个兴趣包,而把其他的兴趣包接口记录下来保存到待定兴趣表(Pengding Interest Table, PIT),数据包返回来后,路由器根据数据名和PIT中的条目进行匹配,把数据包返回到对应的消费者节点,然后删除这些PIT条目,并把数据包缓存到缓存存储器(Content Store, CS)中。数据包和兴趣包始终是一一对应的,这样有利于流量平衡。
CCN的数据包只对请求它的消费者有直接意义,但是路由器可以缓存数据包以满足未来的潜在兴趣请求。这种机制使得CCN网络天然地支持多种功能的实现,包括内容分发、组播、移动互联、高延时网络。比如用户在一个移动网络中观看网络视频,位置会发生变动,当移动到另一个网络后,虽然原先网络的数据包不会被使用,但会被路由器缓存,用户重新发送兴趣包后,CCN会从网络的最近节点返回数据包,使得网络消耗最小化。这种缓存机制能够数据包的传输性能,也能减少消费者对数据源的依赖。
2.3网络节点模型
CCN网络节点的基本操作与IP节点非常类似:网络包到达节点的一个接口,节点基于包的内容名进行最长前缀匹配查找,根据查找结果确定处理策略。CCN网络节点的核心转发引擎包括三个数据结构:Content Store(缓存存储器)、Pending Interest Table(待定兴趣表)和Forwarding Information Base(转发信息表)。
2.4节点的包处理策略
2.4.1兴趣包处理 当兴趣包到达一个路由器节点时,路由器就根据包中的内容名对其进行最长前缀匹配查找,匹配的顺序依次是CS、PIT、FIB。首先进行CS匹配查找,如果在Content Store中已经存在一个数据包符合兴趣包的内容名,路由器将把这个数据包回复给消费者,并丢弃已经满足的兴趣包。其次进行PIT匹配。如果PIT中存在与兴趣包中内容相匹配的内容名,路由器会在PIT的相应条目中增加此兴趣的接收接口,并把兴趣包丢弃,因为相同的兴趣包已经发送给上游了,当上游返回数据后,路由器会把数据返回给所有的接收接口。如果CS和PIT都没有匹配到,进行FIB匹配,如果FIB中存在与兴趣包相匹配的条目,则兴趣包会根据FIB条目中的转发路径发送到上游,然后在PIT中增加一个条目,记录这个兴趣包以及它的发送接口。如果兴趣包与路由器的三个数据结构没有任何匹配,此兴趣包会被丢弃。因为路由器没有与其对应的数据也不知道该如何找到其对应的数据。 2.4.2数据包处理 数据包的处理流程相对简单,因为数据包不需要路由,它只是沿着PIT中兴趣包的路径向请求者返回。同样根据数据包中的内容名进行最长前缀匹配。如果在PIT中找到匹配,说明数据包是本节点通过请求返回来的,数据包按照匹配结果发送到相应的接口返回到上一个请求节点,并在Content Store中保留备份。如果在PIT中没有匹配,说明数据包不是来自本节点请求,直接丢弃。不像IP网络,CCN网络允许数据包在整个网络中的任意复用,任何一个节点都可以根据自己的策略来确定是否缓存接收到的数据包。
2.5内容命名机制
2.5.1对网络不透明 内容的名字对网络是不透明的,虽然路由器可以识别名字之间的分隔符,但它并不能理解名字所表达的意思。这种机制使得每一个应用都可以根据自己的需求来自定义一些命名结构,也使得命名策略可以独立于网络架构自由发展。
2.5.2分层结构 CCN的命名策略使用分层结构,举例来说,实验室的视频命名为/ustc/nhpcc/406/1.mp4,使用斜杠来作为命名分层的分隔符号。这种分层结构有利于表示内容的实际数据结构,视频第一个版本的第三段可以表示为/ustc/nhpcc/406/1.mp4/1/3。不同的应用会根据特定的需求定制命名规则,只要在消费者和数据源使用相同的规则即可,比如视频分层可以使用版本号和视频段。命名规则可以完全由应用定制并且对网络不透明。
2.5.3 灵活性 并不是所有内容名字都要做到全球唯一,只用于局域网或者小范围网络的数据可以基于本地实际网络情况对数据命名,只要供需双方可以正常沟通即可。
如果需要存取动态生成的数据,消费者一方必须能够在兴趣包中生成还不知道数据的名字。可以使用特定的算法使消费者生成特定的名字发起请求,消费者也可以根据已经得到的数据来生成后续的数据名字,比如消费者请求数据/ustc/nhpcc/406/1.mp4时,首先返回的数据是/ustc/nhpcc/406/1.mp4/1/1,则消费者可以继续请求/ustc/nhpcc/406/1.mp4/1/2。但需要供需双方来确定一个命名规则。
命名策略是CCN网络架构中最重要的部分,理论方面还在不斷发展和完善。不是所有的命名策略都需要提前确定下来,命名策略已经确定了基本原则,后续会随着CCN网络的进展不断完善。
2.6以数据为中心的安全机制
CCN的安全机制是一种以数据为中心的安全,它的安全保护和信任是基于数据的,而不是作为连接的属性或者功能。在CCN网络中,所有的公开内容都要经过数字签名的验证,私人内容又通过加密保护。这也是CCN实现随机存取的一个关键点,因为消费者如果从最近的节点获得内容,就必须对内容就行验证。而现在IP网络的安全机制是基于连接的,每一个消费者客户端必须从数据原始源取得数据才能保证内容安全性。
基于公钥密码的安全机制一直被认为是低效的,而且实际部署比较复杂。在实际应用中,CCN这种细粒度和基于数据的安全机制需要一些创新。除了提供高效率的数字签名,CCN还需要更加灵活的机制来管理用户信任体系。在CCN网络中,密钥可以数据包来传送,这样就降低了密钥的分发成本。CCN网络还提供了数据名称的安全绑定,内容提供者和消费者可以通过应用程序来自定义通信的安全模型,使得整个安全机制更加灵活。安全机制并非本文重点方向,这里不再详细说明。
2.7相关应用和技术
CCNChat是CCNx协议包自带的聊天应用,实现了在CCN网络中多台机器间文字的发送和接收;VoCCN是CCN网络的主要研究者实现的语音通话应用,对会话发起协议做了适配,实现了CCN网络内和CCN/IP网络间语音通话;CCNx协议包还附带了VLC插件,使得VLC播放器可以播放基于CCN网络地址的视频;本文用到的开源技术还有PyCCN、CCNxGST、和NDN的相关项目。
作者简介: 曹铭书 1990年4月1日,男,内蒙古奈曼旗,在职研究生学历,助理工程师,计算机网络。
关键词:内容中心网络;设计原则;详细设计
1内容中心网络设计原则
在分析TCP/IP网络的优势和劣势后,根据当前网络状态确定设计原则指导CCN设计。
1.1沙漏模型 沙漏模型使最初的互联网设计优雅而高效,它使用唯一一个通用的核心层IP协议来进行全球互联,这也是TCP/IP协议可以爆发性增加的关键原因,这种无限制的通用设计给上下层协议更高的自由度和容忍度。CCN的设计保留了这种沙漏模型,使用命名内容替换了原有网络中间的IP协议。
1.2重视安全性 当今互联网在设计之处并没有过多考虑安全性,以至于现在的安全问題只能不断修补。而CCN对所有的命名数据提供签名验证,在架构层面提供安全保障。
1.3端到端原则 使得应用能够容忍网络故障,有更稳定的连通性。
1.4网络流量自律性 对于一个稳定的网络来说,流量平衡和拥塞控制是必须的,现有的网络曾因为拥塞控制而修补传输层协议,CCN网络在核心层制定了流量平衡策略。
1.5路由和转发平面分离 这个原则可以保证路由技术和转发技术并行发展,CCN网络希望可以支持最新的各方面技术。
1.6保持中立性 CCN网络希望尽最大努力保证所有用户的自由选择和公平竞争。
2内容中心网络详细设计
2.1网络协议包类型
CCN网络定义了两种基本类型包,兴趣包和数据包,作为协议的基本元素。一个节点通过它的端口发送兴趣包到网络邻节点上来获取期望的数据包,兴趣包和数据包一一对应,来完成数据的请求和接收。
2.1.1兴趣包 兴趣包用来请求特定内容名的数据,一个兴趣包提供前缀名和规则来定义数据块,所以可以做到精确检索,兴趣包中的筛选规则是定位数据包的关键。
2.1.2数据包 数据包用来装载数据。一个数据包不仅包含有效数据,还包括数据的识别名字、加密签名、签名证书和有关签名的其他信息,一般情况下,一个数据包唯一绑定一个识别名称、一个发布者和一个数据块。每一个数据包必须包含一个签名信息,应用程序使用数据之前也验证发布者的签名,这样就确保了所有数据的安全性。
2.2通讯流程
信息中心网络的通信是由数据消费者驱动的,消费者通过广播兴趣包来请求数据,兴趣包中包含它期望的数据的名字。路由器接收到兴趣包后,记录接收兴趣包的接口,并通过转发表(Forwarding Information Base, FIB)转发兴趣包,转发表使用一种基于名字的路由协议。兴趣包找到包含请求数据的节点后,一个数据包会被发送回来,数据包中包含数据名、数据内容以及数据生产者的签名,数据包会沿着兴趣包的路径原路返回到消费者。在整个过程中,兴趣包和数据包都不依靠任何基于位置的地址,兴趣包是按照数据命名来进行路由找到数据包节点的,数据包节点返回时按照兴趣包沿路留下的状态信息进行路由跳转。
内容中心网络的通信流程如图2.2所示:
CCN的路由器会把兴趣包和数据包保存一段时间,当下游的多个兴趣包请求同一个数据时,路由器只会向上游发送一个兴趣包,而把其他的兴趣包接口记录下来保存到待定兴趣表(Pengding Interest Table, PIT),数据包返回来后,路由器根据数据名和PIT中的条目进行匹配,把数据包返回到对应的消费者节点,然后删除这些PIT条目,并把数据包缓存到缓存存储器(Content Store, CS)中。数据包和兴趣包始终是一一对应的,这样有利于流量平衡。
CCN的数据包只对请求它的消费者有直接意义,但是路由器可以缓存数据包以满足未来的潜在兴趣请求。这种机制使得CCN网络天然地支持多种功能的实现,包括内容分发、组播、移动互联、高延时网络。比如用户在一个移动网络中观看网络视频,位置会发生变动,当移动到另一个网络后,虽然原先网络的数据包不会被使用,但会被路由器缓存,用户重新发送兴趣包后,CCN会从网络的最近节点返回数据包,使得网络消耗最小化。这种缓存机制能够数据包的传输性能,也能减少消费者对数据源的依赖。
2.3网络节点模型
CCN网络节点的基本操作与IP节点非常类似:网络包到达节点的一个接口,节点基于包的内容名进行最长前缀匹配查找,根据查找结果确定处理策略。CCN网络节点的核心转发引擎包括三个数据结构:Content Store(缓存存储器)、Pending Interest Table(待定兴趣表)和Forwarding Information Base(转发信息表)。
2.4节点的包处理策略
2.4.1兴趣包处理 当兴趣包到达一个路由器节点时,路由器就根据包中的内容名对其进行最长前缀匹配查找,匹配的顺序依次是CS、PIT、FIB。首先进行CS匹配查找,如果在Content Store中已经存在一个数据包符合兴趣包的内容名,路由器将把这个数据包回复给消费者,并丢弃已经满足的兴趣包。其次进行PIT匹配。如果PIT中存在与兴趣包中内容相匹配的内容名,路由器会在PIT的相应条目中增加此兴趣的接收接口,并把兴趣包丢弃,因为相同的兴趣包已经发送给上游了,当上游返回数据后,路由器会把数据返回给所有的接收接口。如果CS和PIT都没有匹配到,进行FIB匹配,如果FIB中存在与兴趣包相匹配的条目,则兴趣包会根据FIB条目中的转发路径发送到上游,然后在PIT中增加一个条目,记录这个兴趣包以及它的发送接口。如果兴趣包与路由器的三个数据结构没有任何匹配,此兴趣包会被丢弃。因为路由器没有与其对应的数据也不知道该如何找到其对应的数据。 2.4.2数据包处理 数据包的处理流程相对简单,因为数据包不需要路由,它只是沿着PIT中兴趣包的路径向请求者返回。同样根据数据包中的内容名进行最长前缀匹配。如果在PIT中找到匹配,说明数据包是本节点通过请求返回来的,数据包按照匹配结果发送到相应的接口返回到上一个请求节点,并在Content Store中保留备份。如果在PIT中没有匹配,说明数据包不是来自本节点请求,直接丢弃。不像IP网络,CCN网络允许数据包在整个网络中的任意复用,任何一个节点都可以根据自己的策略来确定是否缓存接收到的数据包。
2.5内容命名机制
2.5.1对网络不透明 内容的名字对网络是不透明的,虽然路由器可以识别名字之间的分隔符,但它并不能理解名字所表达的意思。这种机制使得每一个应用都可以根据自己的需求来自定义一些命名结构,也使得命名策略可以独立于网络架构自由发展。
2.5.2分层结构 CCN的命名策略使用分层结构,举例来说,实验室的视频命名为/ustc/nhpcc/406/1.mp4,使用斜杠来作为命名分层的分隔符号。这种分层结构有利于表示内容的实际数据结构,视频第一个版本的第三段可以表示为/ustc/nhpcc/406/1.mp4/1/3。不同的应用会根据特定的需求定制命名规则,只要在消费者和数据源使用相同的规则即可,比如视频分层可以使用版本号和视频段。命名规则可以完全由应用定制并且对网络不透明。
2.5.3 灵活性 并不是所有内容名字都要做到全球唯一,只用于局域网或者小范围网络的数据可以基于本地实际网络情况对数据命名,只要供需双方可以正常沟通即可。
如果需要存取动态生成的数据,消费者一方必须能够在兴趣包中生成还不知道数据的名字。可以使用特定的算法使消费者生成特定的名字发起请求,消费者也可以根据已经得到的数据来生成后续的数据名字,比如消费者请求数据/ustc/nhpcc/406/1.mp4时,首先返回的数据是/ustc/nhpcc/406/1.mp4/1/1,则消费者可以继续请求/ustc/nhpcc/406/1.mp4/1/2。但需要供需双方来确定一个命名规则。
命名策略是CCN网络架构中最重要的部分,理论方面还在不斷发展和完善。不是所有的命名策略都需要提前确定下来,命名策略已经确定了基本原则,后续会随着CCN网络的进展不断完善。
2.6以数据为中心的安全机制
CCN的安全机制是一种以数据为中心的安全,它的安全保护和信任是基于数据的,而不是作为连接的属性或者功能。在CCN网络中,所有的公开内容都要经过数字签名的验证,私人内容又通过加密保护。这也是CCN实现随机存取的一个关键点,因为消费者如果从最近的节点获得内容,就必须对内容就行验证。而现在IP网络的安全机制是基于连接的,每一个消费者客户端必须从数据原始源取得数据才能保证内容安全性。
基于公钥密码的安全机制一直被认为是低效的,而且实际部署比较复杂。在实际应用中,CCN这种细粒度和基于数据的安全机制需要一些创新。除了提供高效率的数字签名,CCN还需要更加灵活的机制来管理用户信任体系。在CCN网络中,密钥可以数据包来传送,这样就降低了密钥的分发成本。CCN网络还提供了数据名称的安全绑定,内容提供者和消费者可以通过应用程序来自定义通信的安全模型,使得整个安全机制更加灵活。安全机制并非本文重点方向,这里不再详细说明。
2.7相关应用和技术
CCNChat是CCNx协议包自带的聊天应用,实现了在CCN网络中多台机器间文字的发送和接收;VoCCN是CCN网络的主要研究者实现的语音通话应用,对会话发起协议做了适配,实现了CCN网络内和CCN/IP网络间语音通话;CCNx协议包还附带了VLC插件,使得VLC播放器可以播放基于CCN网络地址的视频;本文用到的开源技术还有PyCCN、CCNxGST、和NDN的相关项目。
作者简介: 曹铭书 1990年4月1日,男,内蒙古奈曼旗,在职研究生学历,助理工程师,计算机网络。