APP下载

基于NDN的高效发布/订阅系统设计与实现

2018-03-03谢英英

关键词:发布者命名模块

谢英英,石 涧,雷 凯

(北京大学深圳研究生院 互联网研发中心,深圳 518055)

0 引 言

命名数据网络(named data networking, NDN)[1]颠覆了TCP/IP(transmission control protocol/internet protocol)网络中IP的主导地位,数据名称取代了IP作为网络中的唯一标识,网络层的数据请求、路由、转发以上层应用直接关心的数据名称作为第一语义,而不用关心数据所在位置,NDN的这一改变解决了当今TCP/IP网络在内容分发、移动性、网络安全等方面的不适应性[2],因此成为一种主流的未来网络架构。除了NDN系统架构、拥塞控制、转发策略等这些NDN传统的研究方向,NDN下实际应用的设计和部署能为验证NDN的架构正确性和优势提供真实的场景和流量,也是当前NDN的一大研究热点。

发布/订阅[3]系统广泛应用于分布式计算、数据同步等场景,是多对多异步通信的一种有效解决方案。在发布/订阅系统中,发布者和订阅者实现了解耦,但是这种解耦在TCP/IP网络下是以复杂的中间件为代价的,中间件解决了IP网络层拓扑和发布/订阅应用层逻辑拓扑不一致带来的矛盾。NDN由于具有上下逻辑拓扑一致性、天然适合多播、网内缓存、多路径转发等特点,能有效简化发布/订阅系统的中间件设计,减少发布/订阅系统对网络的负荷、降低往返时延,改善发布/订阅系统的服务质量。

文献[4-5]是最早提出信息中心网络(information centric networking, ICN)中发布/订阅解决方案的2篇文献,文献[4]提出在ICN中提供类似于IP单播的转发服务用于发布/订阅中更新数据的推送,文献[5]中特定节点维护订阅列表这一数据结构以维护订阅者多播树。这方面的早期研究对于信息中心网络的网络架构改动较大。近年来,对于信息中心和发布/订阅模式结合的研究主要集中在物联网场景下,文献[6-7]分别是面向车联网和移动ad-hoc网络场景的信息中心网络发布/订阅系统解决方案,这些方案考虑到物联网数据产生的周期性,因此采用订阅者周期性向发布者发送数据请求包,轮询是否有数据更新的设计方式。这种轮询的方式只适合于物联网这样周期性产生监控数据的应用场景,对于数据产生时间间隔比较大、数据产生周期不规律的场景不适用,而且周期性地轮询Interest包会带来很大的网络开销。因此本文提出的发布/订阅系统采用发布者主动推送数据更新的方式进行设计,适用的场景更加广泛,减少了订阅者无效数据请求对网络造成的额外负荷。

本文的贡献可总结为以下4点:

1)分析了NDN下实现发布/订阅系统相比于TCP/IP网络下实现发布/订阅系统的不同和优势;

2)设计了NDN下的一种通用的发布/订阅系统,并在此基础上利用NDN的命名机制针对小块数据传输的场景对系统设计进行优化,进一步降低了系统对网络的负荷;

3)根据NDN工作组发布的NFD-android项目,在Android平台上实现了分别代表大块数据和小块数据发布/订阅应用场景的新闻和天气信息发布/订阅系统;

4)对系统进行功能验证以及性能评测。

1 背 景

1.1 TCP/IP网络下的发布/订阅系统

TCP/IP网络下的发布/订阅系统解决的是多对多异步通信下发布者和订阅者之间的解耦问题。解耦是指发布者发布数据而不需要关心发布的数据将发送给哪些订阅者,订阅者订阅数据而不需要关心订阅的数据具体来源于哪个发布者。TCP/IP网络是基于端到端通信的,为了实现发布者和订阅者之间的解耦,就需要复杂的中间件。TCP/IP网络下的发布/订阅系统模型如图1所示,中间件有订阅注册器、发布匹配器、路由算法等,订阅注册器负责维护订阅者对发布者的订阅,发布订阅器负责将发布者发布的信息与订阅者相匹配,路由算法负责在发布者和订阅者之间选择最佳路径进行传输[8]。

图1 TCP/IP网络下的发布/订阅系统模型Fig.1 Publish/subscribe system model in TCP/IP network

1.2 NDN实现发布/订阅系统的优势

NDN实现发布/订阅系统相比于TCP/IP网络更有优势的原因主要在于NDN具有上下拓扑一致性、网内缓存、天然适合多播、多路径路由和转发这4个特性。以下将从这4个方面分别进行阐述。

NDN网络层拓扑和应用层逻辑拓扑具有一致性。NDN采用7层架构,保留了细腰沙漏模型,在细腰处采用命名数据取代IP。数据命名具有可读化、层次化的特点,例如本系统发布者之间同步数据层的数据名称为”/ndn/broadcast/ChronoSync-0.3/weather/(Digest)”。NDN名称中携带了路由信息,同时也是数据的唯一标识[9],这使得NDN在网络层具有语义,具有应用层与网络层的拓扑一致性。与TCP/IP网络相比,在NDN中获取数据不需要先获取数据所在位置,减少了中间件的开发,提高了通信效率。以数据命名为第一语义也使NDN实现发布/订阅系统可以有效地应对节点移动、拓扑动态变化[10]。

NDN天然适合多播场景与发布/订阅系统中广泛存在的发布者与订阅者之间的一对多的关系相契合,这种上下逻辑拓扑的一致性可有效地降低系统对网络的负荷、减少发布者的开销。转发请求表(pending interest table,PIT)记录节点接收到的Interest包的名称以及入接口,具有相同名称的Interest包在PIT中会聚合成一条记录了多个入接口的PIT条目。在发布/订阅系统中,当多个订阅者向发布者请求相同数据时,发布者只需要发送一个数据包就能满足多个订阅者的数据请求,在TCP/IP网络中则需要为每一个订阅者的IP单独发送一个数据包。

NDN的中间节点可以将流经它的Data包缓存到内容存储库(content store,CS)中,并且能够作为此后相应Interest包的回复。在发布/订阅系统中,NDN的网内缓存相当于把发布者发布的数据储存到离订阅者更近的网络节点上,当缓存命中时,可以有效降低订阅者获取更新数据的时延,改善用户体验,而且重复数据包的传输路径缩短了,减轻了网络负荷,有利于改善整体网络状况。

NDN的多路径路由和转发特性增加了节点的连通性,可以有效挖掘数据包从源端到目的地的最短路径,增强发布/订阅系统应对网络故障的健壮性。转发信息表(forwarding information base,FIB),PIT,CS和接口(Face)是NDN节点的4个主要组成部分。FIB可以为一个命名前缀提供多个转发接口,而且NDN能够根据转发策略实时地、单跳地为Interest包选择多个Face进行转发,相比于IP的单一最佳路径路由,NDN的多路径路由和转发特性更有利于实现高效的发布/订阅系统。

2 发布/订阅模式设计

本节首先提出了一种通用的发布/订阅模式设计,然后针对小块数据传输的场景,利用NDN Interest包名称中可以携带一定量数据的特点,提出了一种适合小块数据传输场景的优化设计,相比于通用的发布/订阅模式,将发布者发布更新数据的通信过程缩短了一半。

2.1 通用情况下的发布/订阅模式设计

通用情况下的发布/订阅模式是指同时适用于大块数据传输和小块数据传输的发布/订阅模式。要实现的是多个发布者和多个订阅之间的发布/订阅活动,这可以剖解为2部分:一个发布者和多个订阅者之间的发布和订阅活动,这部分的设计将在2.1.1部分具体介绍;多个发布者之间的全数据集同步,这部分是利用NDN工作组提出的ChronoSync协议[11]实现的,将在2.1.2部分具体介绍。每个部分都从命名设计和通信协议设计2个部分具体阐述。

2.1.1 发布者和订阅者之间的通信

发布者和订阅者之间的通信可以根据功能分为四大类:连接控制、订阅管理、推送通知和拉取数据。对这四大通信类型的数据包的命名分别进行设计,如图2所示。四大通信类型消息的命名前缀相同,用于数据包在网络中的路由。命名中第2部分为FaceUri,有利于系统与本机的FaceUri进行比对,判断是否是发给自己的数据包。命名中还加入了时间戳,用于区分同一用户不同时刻发送的相同类型数据包。名称的最后一部分是数据类型,这里的数据类型根据应用场景而不同,比如在新闻信息发布/订阅系统中,这里的数据类型可能是一类新闻,比如财经新闻、科技新闻、娱乐新闻等。

通用情况下,发布/订阅模式可以采用发布者推送数据更新通知,然后订阅者拉取数据的形式,数据类型放在名称中,而数据具体内容放在Data包的内容中。当发布者有新的信息产生时,通过检索本地维护的订阅列表,确定需要向哪些订阅者推送psync-notify Interest包,而新产生信息的类型包含在psync-notify Interest包的名称中,订阅者接收到psync-notify Interest包之后通过解析名称得知发布者有数据更新,然后发送一个内容为空的Data包作为回复。紧接着订阅者发送psync-get Interest包来获取更新数据的内容。 类似的,对于订阅者订阅信息和取消订阅信息这2个功能,也是通过将订阅信息的类型放在subscribe Interest和unsubscribe Interest包的名称中实现的,发布者接收到兴趣包之后,解析名称以获取订阅或者取消订阅信息的类型,然后更新本地的订阅列表。

图2 通用情况发布/订阅系统命名Fig.2 Naming scheme for common publish/subscribe system

2.1.2 发布者之间的通信

整个被观察数据集可以由多个发布者共同维护,因此需要进行发布者之间的全数据集同步,为了实现分布式的发布者同步功能,利用NDN工作组发布的ChronoSync协议进行设计。发布者之间的通信涉及3个过程:建立连接、同步数据层同步数据集摘要、应用层获取应用数据。

对每个通信过程的数据包分别进行命名设计,如表1所示。连接层命名用于在一个局域网中的发布者之间建立连接,互相之间获取对方的FaceUri, FaceUri作为后续建立发送兴趣包的Face接口的依据。m_username是用户输入的发布者用户名,m_session是用户进入系统的时间,m_username和m_session一起作为区分不同发布者的身份标识。获取m_FaceUri是发布者之间建立连接通信过程的真正目的。m_module用于区分具体应用,在本文实现的天气信息和新闻信息发布/订阅系统中可以是news或者weather,用于区分是News模块还是Weather模块的发布者之间的通信。同步数据层命名中/ndn/broadcast/ChronoSync-0.3作为广播包的路由前缀,Digest是发布者全数据集摘要,反映了发布者目前同步过的全部数据。应用数据层命名中/m_userame/m_module/RandomString/作为路由前缀,其中,RandomString是10位的随机字符串,每个发布者的随机字符串都不同。Seq_num是发布者目前最新发布数据的序列号,发布者从序列号0开始发布数据,序列号提供了发布者目前发布的数据总数信息。

表1 发布者之间同步的命名Tab.1 Naming scheme in synchronization between publishers

发布者连接WIFI之后对局域网内所有可能存在的IP进行Ping操作,一旦某个IP能Ping通,则以这个IP为FaceUri建立Face接口,从这个Face接口发送连接Interest包,对方收到连接请求包之后将自己保存的FaceUri列表放在Data包的数据区,对连接Interest包进行回复。发布者A接收到这个连接回复Data包之后对数据区进行解析获取FaceUri,更新本地维护的FaceUri列表,成功建立连接。

建立连接之后,发布者A和发布者B向网络中广播同步数据层Interest包,同步数据层Interest包中包含了发布者目前的全数据集摘要Digset1,当发布者A发布新的数据之后,发布者A的全数据集摘要更新为Digest2,这时同步数据层Interest包得到满足,发布者A回复一个数据区存放了新产生数据名称的同步数据层Data包。这就是发布者之间同步数据层同步数据集摘要的完整过程。

发布者B接收到同步数据层Data包之后,提取数据区的内容得到新产生数据的名称,然后以这个名称发送应用数据层Interest包,发布者A对这一应用数据层Interest包回复带有相应数据的应用数据层Data包。至此,发布者A与发布者B之间完成了一次全数据集同步,接下来,发布者A和发布者B分别向网络中广播数据集摘要为Digest2的同步数据层Interest包,进入下一轮的全数据集同步过程。

2.2 小块数据传输场景的发布/订阅模式优化设计

在小块数据传输的场景下,由于要传输的数据比较小,因此可以将数据作为Interest包的名称的一部分,采用发布者主动推送数据的形式。发布者和订阅者之间的通信可以简化为3个过程:连接控制、订阅管理和发布推送。对3个通信过程的命名设计如表2所示,与通用情况的命名设计不同的是,直接将数据类型和数据内容附加在名称的后面,使得发布者推送数据成为可能。比如在天气信息发布/订阅系统中,数据类型可以是城市名称,数据内容为对应城市的温度。

当发布者有新的信息产生时,通过检索本地维护的订阅列表,确定需要向哪些订阅者推送Psync Interest包,而新产生信息的类型以及内容就包含在Psync Interest包的名称中,订阅者接收到Psync Interest包之后通过解析名称就可以获取推送的内容,然后发送一个内容为空的Data包。订阅者回复一个内容为空的Data包的目的有2个:①告知发布者自己已经接收到了推送数据,②解除Psync Interest包对中间路由器中PIT资源的占用。连接控制和订阅管理2个通信过程和通用情况的相应通信过程类似,因此不再赘述。

表2 小块数据发布/订阅模式的命名设计Tab.2 Naming scheme in publish/subscribe model for small chunk of data

3 系统实现与评测

3.1 系统实现

本系统在Android平台上对NDN工作组发布的NFD-android项目进行二次开发,根据本文提出的发布/订阅通信协议和NDN工作组提出的ChronoSync协议实现了一个NDN下的发布/订阅系统,该系统功能由分别代表小块数据和大块数据传输的Weather模块和News模块实现,这两大模块实现了三大功能:小块数据传输下发布者与订阅者之间的发布/订阅、大块数据传输下订阅者与发布者之间的发布/订阅、发布者之间的全数据集同步。

基于Android的命名数据网络发布/订阅系统架构如图3所示,Android操作系统层包括Linux内核、系统类库、运行时、应用程序框架层,除此之外还包括用于支持在Android系统中开发NDN应用的JNDN通用库,而JNDN通用库由用C++编写的cryptopp库、ndn-cxx库、nfd库等组成,cryptopp库是一个加密类库,ndn-cxx是实现了命名数据网络协议的C++类库,nfd是用C++实现的命名数据网络转发守护进程。

Android应用层划分为2层,底层为基本服务模块,包括General模块、Faces模块、Routes模块和Logcat模块,这些模块提供了对NFD运行情况的控制和统计,便于查看和调试,涉及到NFD的底层代码和JNI机制的调用;上层为发布/订阅模式的具体实现层,包括News模块和Weather模块,它们分别实现了命名数据网络在大块数据和小块数据情况下的发布/订阅功能,News模块和Weather模块内部又分为2个模块:ChronoSync实现了发布者之间的全数据集同步,PLSync和PSSync分别实现了适合于大块数据和小块数据传输的发布者和订阅者之间的部分数据集同步。

3.2 系统功能评测

针对系统的News模块和Weather模块均考虑到3种应用场景:多个发布者、一个发布者和多个订阅者、多个发布者和多个订阅者。因此,测试用的3种网络拓扑如图4所示。测试过程中,为了尽可能单独测试每个功能,在每一个应用场景下又设计了若干个不同的测试用例,测试用例汇总如表3所示。

测试结果显示,本系统实现了全部的预定功能,具体有:发布者之间、发布者和订阅者之间建立连接、断开连接;发布者发布信息;订阅者订阅信息、取消订阅信息;发布者与订阅者进行部分数据集同步;发布者与订阅者进行全数据集同步;对订阅者错误的容错处理。

图3 系统总体架构图Fig.3 system architecture

图4 系统功能测评网络拓扑图Fig.4 Network topologies for system functional test

表3 测试用例汇总表Tab.3 Summary of test cases

3.3 系统性能测评

在ndnSIM 2.4模拟器上对设计的2种发布/订阅协议进行性能测评,评测所用网络拓扑为一个3级树状拓扑(如图5所示),根节点作为发布者,4个叶节点分别作为订阅者。发布者有15个主题可供订阅者订阅,每个订阅者随机订阅n个主题,发布者每次随机选取一个主题发布内容,总共发布m次。实验统计随着n和m的变化,通用情况下的发布/订阅模式、小块数据传输场景的发布/订阅模式下2个测评指标的变化,2个评测指标为:①系统效率,即传输的信息数与网络所有节点传输的包总数的比值,传输一个信息指订阅者的一次订阅或者取消订阅、发布者的一次发布;②从发布者发布数据到订阅者接收到数据的时延,订阅者所接收到数据的来源可以是发布者也可以是网络内缓存。实验参数统计见表4。

3.3.1 系统效率

实验统计通用情况下的发布/订阅模式、小块数据传输场景的发布/订阅模式在订阅比例不同(即n=5和n=10时),随着发布次数m的增加,网络内所有节点传输包的总数N的变化,由此得到系统效率的变化,系统效率的计算公式为

图5 实验拓扑图Fig.5 Network topology for simulation

表4 实验参数表Tab.4 Simulation parameters

实验结果如图6所示,从实验结果可以得到以下结论:1)小块数据传输场景的发布/订阅模式比通用情况下的发布/订阅模式的系统效率高。这是因为在设计上小块数据传输场景的发布模式充分利用了传输数据小的特点,巧妙利用NDN的命名机制,使数据发布的通信过程相对于通用情况下的发布/订阅模式减半;2)订阅比例越高,通用情况下的发布/订阅模式系统效率越高,小块数据传输场景的发布/订阅模式系统效率基本不变。这是因为订阅比例越高,不同订阅者订阅相同主题的可能性越高,发布者发布数据时,部分订阅者更有可能从网络缓存中得到数据,因此系统效率有提升;3)订阅比例一定的时候,发布次数越多,通用情况下的发布/订阅模式系统效率有所降低,小块数据传输场景的发布/订阅模式系统效率有所提高。

3.3.2 接收时延

实验统计在n=10时,通用情况下的发布/订阅模式和小块数据传输场景的发布/订阅模式的订阅者接收时延,实验结果如图7所示,小块数据传输场景下订阅者的接收时延明显低于通用情况下订阅者的接收时延,这是因为当发布者发布数据时,通用情况下订阅者经过两轮Interest-Data传输之后接收到所发布的数据,小块数据场景下订阅者经过一轮Interest-Data传输之后就接收到所发布的数据。

图6 系统效率实验结果图Fig.6 Simulation results for system efficiency

图7 接收时延实验结果图Fig.7 Simulation results for system delay

4 总结和未来工作

本文提出了一种NDN下的通用的发布/订阅模式通信协议,充分利用了NDN的上下拓扑一致性、天然适合多播、具有网内缓存、多路径路由和转发的特性。在此基础上,针对小块数据传输的场景,利用NDN命名机制对通用的发布/订阅模式通信协议进行了优化,使发布者发布更新数据的通信过程简化一半。以天气信息和新闻信息的发布/订阅分别作为大块数据和小块数据传输的应用场景,将设计的2种发布/订阅通信协议在Android平台实现,实现了一个NDN下高效的天气信息和新闻信息发布/订阅系统,该系统支持多发布者和多订阅者的分布式发布和订阅活动。

本文还分析了TCP/IP网络和NDN网络实现发布/订阅模式的区别,对本文后续的工作有所帮助。本文的下一步工作将从实验数据测量与对比角度出发,对TCP/IP下的发布/订阅模式和本文设计的发布/订阅模式进行对比,量化分析TCP/IP网络下的发布/订阅系统和本文实现的发布/订阅系统在数据包传输跳数、往返时延、数据请求比等指标上的表现。

[1] ZHANG L, AFANASYEV A, BURKE J, et al. Named data networking[J]. Acm Sigcomm Computer Communication Review, 2014, 44(3):66-73.

[2] 雷凯.信息中心网络与命名数据网络[M].北京:北京大学出版社,2015.

LEI Kai. Information centric networking(ICN) and named data networking(NDN)[M]. Beijing:Peking University Press, 2015.

[3] 汪锦岭.面向Internet的发布/订阅系统的关键技术研究[D].深圳:中国科学院研究生院(软件研究所),2005.

WANG Jinling. Research on Key Technologies in Internet-scale Publish/Subscribe Systems[D]. Shenzhen: Institute of Software, Chinese Academy of Sciences, 2005.

[4] CARZANIGA A, PAPALINI M, WOLF A L. Content-based publish/subscribe networking and information-centric networking[C]//ACM SIGCOMM Workshop on Information-Centric Networking. Toronto, Ontario, Canada: ACM, 2011:56-61.

[5] CHEN J, ARUMAITHURAI M, JIAO L, et al. COPSS: An Efficient Content Oriented Publish/Subscribe System[C]//ACM/IEEE Symposium on Architectures for Networking & Communications Systems. Brooklyn, Ny, USA: IEEE, 2011:99-110.

[6] DRIRA W, FILALI F. A Pub/Sub extension to NDN for efficient data collection and dissemination in V2X networks[C]// IEEE, International Symposium on A World of Wireless, Mobile and Multimedia Networks. Sydney, NSW, Australio: IEEE, 2014:1-7.

[7] DETTI A, TASSETTO D, MELAZZI N B, et al. Exploiting content centric networking to develop topic-based, publish-subscribe MANET systems[J]. Ad Hoc Networks, 2015, 24:115-133.

[8] 马建刚,黄涛,汪锦岭,等.面向大规模分布式计算发布订阅系统核心技术[J].软件学报,2006,17(1):134-147.

MA Jiangang, HUANG Tao, WANG Jinling, et al. Underlying techniques for large-scale distributed computing oriented publish/subscribe system[J]. Journal of Software, 2006, 17(1):134-147.

[9] JACOBSON V L, SMETTERS D K, THORNTON J D, et al. Networking named content[C]// conference on emerging network experiment and technology. Rome, Italy: ACM, 2009: 1-12.

[10] 朴雪威,郑亦哲,雷凯.命名数据网络中的移动管理技术综述[J].计算机应用研究,2017,34(4):961-964.

PU Xuewei, ZHENG Yizhe, LEI Kai. Survey of mobility management technologies based on named data networking[J].Application Research of Computers, 2017, 34(4):961-964.

[11] ZHU Z, AFANASYEV A. Let’s ChronoSync: Decentralized dataset state synchronization in Named Data Networking[C]//IEEE International Conference on Network Protocols.[S.l.]: IEEE, 2014:1-10.

(编辑:魏琴芳)

猜你喜欢

发布者命名模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
命名——助力有机化学的学习
新加坡新法规引争议
基于博弈论的社交网络转发控制机制
有一种男人以“暖”命名
为一条河命名——在白河源
广告发布者的著作权审查义务问题研究
论虚假广告发布者侵权责任
集成水空中冷器的进气模块