【NDN实验】Consumer-Producer API for Named Data Networking 全文翻译

Consumer-Producer API for Named Data Networking
命名数据网络中的消费者—生产者API
 

llya Moiseenko                         Lixia Zhang

UCLA                                 UCLA

iliamo@cs.ucla.edu                     lixia@cs.ucla.edu

 

摘要

       本文展示了一个NDN通信协议和体系结构模块的新的网络编程接口。这个新的API由与特定消费者数据获取参数控制兴趣包传输和数据包处理的名字前缀相关的消费者上下文和由与特定生产者数据传输参数控制兴趣包解多路复用和数据包生产的名字前缀相关的生产者上下文组成。两个API上下文一旦被标识,即对新的功能是可扩展的。

 

关键词:

       NDN; API; 数据生产者和消费者

 

1   引言

       作为新的体系结构,NDN需要一个新的API。今天的API套接字对NDN通信不能重用,因为它的基本概念是点对点虚拟信道,而这在NDN中不存在。NDN体系结构开发一直在遵循一个应用程序驱动的方法,通过经历设计周期,试点应用程序上的实验,修正。我们对于试点NDN应用程序的经验提供给我们足够的提示来描述新的NDN API的梗概,然后我们能够返回应用程序开发来核实和验证。

       不像TCP/IP的点对点数据传输,数据传输参数是两端点之间信道的性质,在NDN网络中,数据传输参数是命名空间的特性,在该命名空间生产/消费数据的节点。既然相同命名空间的生产者和消费者应用程序不会彼此直接通信,因此他们不会共享相同数据传输参数集,像在TCP/IP网络中的两个端节点那样。

       我们提出的NDN API有两个编程抽象:消费者上下文和生产者上下文。上下文保存所有必需的连续数据传输状态,与特定的名字前缀相关。上下文允许下面的操作:

       setOption(option,value)

       consume(nameprefix), or

       produce(nameprefix, content)

       消费者上下文是一个帮助应用程序设计者执行不可靠的或可靠的给定名字前缀的可能多分段内容获取的抽象。上下文可以执行包排序、包重组,和原始兴趣包和数据包的访问。它也允许应用程序设计者提供事件通知来密切监视数据交付过程和在该过程中可能出现的各种错误。

       生产者上下文是一个帮助应用程序设计者发布一个特定名字前缀下的单个或者多段内容的抽象。

       消费者和生产者上下文允许应用程序设计者插入用户定义的基于内容的安全行为来确保送出的兴趣包或数据包的安全,并验证进来的包。

 

2   消费者上下文

       消费者上下文与获取的、传输的和验证参数的集,在消费者端集成兴趣包和数据包的处理。应用程序设计者与消费者上下文通过调用在表1中列出的API基元交互,并提供回调函数来处理可能被消费者上下文触发的事件。


       应用程序设计者必须做的第一件事是用期望的名字前缀和数据传输参数初始化消费者上下文。名字前缀是一个有意义的特定应用程序名字,期望传回数据包。需要的数据传输参数指定哪种类型的协议机制将用在消费者上下文中。例如,指定对(不可靠的,数据报)指导消费者上下文发送单独的兴趣包并接收单独的数据包,然而对(可靠的,序列)导致消费者上下文涉及必需的机制来发送多个兴趣包,当需要的时候执行兴趣包重传,管理流控窗口大小,并重新集合收到的数据包。

       使用get/setcontextopt()API函数,消费者上下文的任何参数可以被获得或者被修改。应用程序设计者可以指定在数据传输期间消费者上下文可以使用什么兴趣包选择器、什么流控和拥塞控制参数、什么接收发送缓冲区大小。另外,回调函数可以作为一个参数向setcontextopt()基元传递,来在包处理管道中插入用户定义的行为。例如,当消费者上下文重新集合了来自进入数据包的足够的内容,它执行内容回调来向应用程序返回内容。作为另一个例子,验证回调接受一个数据包来执行定制的数据验证操作。其他的回调函数可以被激活来监视事件,比如兴趣包超时、数据包到达等。

       当所有的上下文参数被设置,应用程序设计者可以使用consume()基元开始数据传输,该函数接受名字后缀,增加消费者上下文的名字前缀。名字后缀,比如版本组件,提供获取多个数据对象的灵活性,而没有为每个对象重新创建消费者上下文。

       在消费者上下文中,数据获取在非阻塞方式上有进步。应用程序设计者可以终止在任何时刻的的传送,通过调用stop()基元,这将把消费者上下文重新设置成初始状态。

       当消费者上下文不再需要,应用程序设计者可以通过执行close()基元释放所有相关的资源。

 

3   生产者上下文

       生产者上下文与一个名字前缀相关,该前缀拥有一个包组帧、缓存、基于内容的安全和名字空间注册参数,集成了在生产者端兴趣包和数据包的处理过程。应用程序设计者通过调用在表2中列出的API基元与生产者上下文交互,并提供回调函数来处理可能被生产者上下文触发的事件。


       应用程序设计者必须首先用一个期望的名字前缀和参数初始化生产者上下文来发布数据。名字前缀被用来发布内容,并解多路复用进来的兴趣包。

       任何消费者上下文的参数可以通过使用get/setcontextopt()被获得和修改。应用程序设计者可以指定数据包的大小、新鲜度和安全特性。另外,回调函数可以作为一个参数传到setcontextopt()基元来在包处理管道中插入用户定义的行为。

       在发布任何内容之前,setup()基元必须被调用,以便通过名字前缀建立兴趣包解多路复用,并使用内置的前缀发现/注册协议(与文献[4]相似)来获得一个可路由的前缀,在当兴趣包需要被路由到生产者。

       应用程序设计者可以用produce()基元无缝地转换任何原始的内容(例如,内容缓存)到数据包。生产者上下文将使用自己的参数来在数据包的正确个数包装内容,该数据包与名字和其他包规范一致。

       当生产者上下文不再需要,应用程序设计者执行close()基元。

 

4   使用NDN API上下文

       我们使用NDN FileSync作为用例来展示的新的API。NDN FileSync是一个分布式的点对点应用程序来在共享的目录中支持文件同步。作为一个简单的试点NDN应用程序,它需要可靠的数据交付服务,但没有精心制作的安全模型。

       应用程序的兴趣包包含文件的名字,以便从其他对等体下载该文件。当兴趣包被接收到,应用程序分析该名字来在磁盘上定位该文件,然后在数据包中打包该文件。简单的包名:

       /broadcast/apps/filesync/class217/Reports/Report.pdf/<timestamp>


       感兴趣的读者可以从该文更全面版本发现其他的用例,比如流式直播视频(NDNvideo)和建筑物自动化系统(NDNlighting)。

 

5   参考文献

[1] D. Kulinski and J. Burke,“NDN Video: Live and Prerecorded Streaming over NDN,” NDN, Tech. Rep., 2012.

[2] J. Burke, A. Horn, A.Marianantoni, “Authenticated Lighting Control Using Named Data Networking,”NDN, Tech. Rep., 2012. johnbernando@gmail.com

[3] J. Lindblom, M. Huang, J.Burke, L. Zhang, “FileSync/NDN: Peer-to-Peer File Sync over Named Data Networking,”NDN, Tech. Rep., 2013.

[4] [Online]. Available: https://www.ccnx.org/releases/latest/doc/technical/Registration.html

[5] I. Moiseenko and L.Zhang, “Consumer-Producer API for Named Data Networking,” NDN, Tech. Rep.,February 2014. [Online]. Available: http://named-data.net/publications/techreports/tr17-consumer-producer-api/

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页