NDN实验ndnSIM 2.0: A new version of the NDN simulator for NS-3 全文翻译

Posted 魏晓蕾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NDN实验ndnSIM 2.0: A new version of the NDN simulator for NS-3 全文翻译相关的知识,希望对你有一定的参考价值。

ndnSIM 2.0:A new version of the NDN simulator for NS-3

 

Spyridon Mastorakis, Alexander Afanasyev, Ilya Moiseenko and LixiaZhang

University of California, Los Angeles

fmastorakis, afanasev, iliamo, lixiag@cs.ucla.edu

 

摘要

      命名数据网络(NDN)通信范式的与IP原则的基本差别需要通过实验大量的评估,模拟实验是进行大规模实验必需的工具。我们发布ndnSIM的第一版,基于NS-3的开源NDN模拟器,追溯到2012年6月。从那以后,ndnSIM经历了实质上的发展,直到2015年1月发布了ndnSIM 2.0。本文报告了该新模拟器版本的设计和特征。新版本的目标是将模拟平台与最近的NDN研究进行匹配。因而,它使用ndn-cxx库(具有实验扩展的NDN C++库)和NDN转发守护进程(NFD)来在模拟环境下用实际代码进行实验。

 

1 引言

      命名数据网络(NDN)与今天的因特网体系结构的有根本区别,即名字是通信端结点,NDN期望成为TCP/IP协议栈的继承人。这样,就需要在大规模实验中评估NDN体系结构中各种各样的设计选项。然而,在真实世界的基础设施中进行这样的实验是不可行的,基于模拟的评估成为必需。ndnSIM的主要目标是一直提供给NDN团体一个基于NS-3模拟框架的通用的用户友好的开源的模拟平台。

      ndnSIM的第一个公开发行版于2012年6月发布。从那以后,ndnSIM变成受全球许多研究者欢迎的工具。在本文写作之时,ndnSIM邮件列表有超过300个订阅者,超过100份基于ndnSIM的研究论文发表。

      自从第一版ndnSIM发布,尽管NDN组发布了协议的更新版本,主要特征是ndn-cxx库(拥有实验扩展的NDN C++库),新的模块化NDN转发守护进程。ndn-cxx库实现了主要的NDN基元,可以被用来实现各种应用程序。它是一个活跃的开发项目,用在真实应用程序实验的实践中。NFD是一个网络转发者,与NDN协议一起进化。NFD的主要设计目标是支持NDN体系结构的多种实验,同时强调模块化和可扩展性来允许新协议设计特征、算法和应用程序能够容易进行实验。NFD的主要功能是转发兴趣包和数据包。为了这样做,他将低层的网络传输机制抽象到NDN接口,维持基本的数据结构,如内容缓存(CS)、待定兴趣表(PIT)和转发信息表(FIB),并实现包处理逻辑。除了基本的包转发之外,它也支持多转发策略和一个管理接口来配置、控制和监控NFD。

      该新ndnSIM发布版的目标是匹配模拟平台与前面提到的NDN研究的最近发展,并在真实实验中加强了使用模拟器编写的代码的能力,并在模拟环境的真实实验中编码。以这种方式,ndnSIM 2.0提供了一个更好的用户体验和更现实的模拟行为。换句话说,相较于第一版,ndnSIM2.0有下面的主要增强和特征:

      (1)所有的NDN转发和管理直接使用NFD源代码实现。

      (2)ndnSIM直接使用来自ndn-cxx库的实现。

      (3)使用的包格式转变到最近的NDN包格式。

      这个版本的模拟器,就像之前版本的模拟器,使用不同的C++类以模块化方式实现,来建模每个NDN条目的行为:应用程序和网络设备接口,NFD的FIB,PIT和CS等。该模块化结构允许任何组件容易地修改和替换,对其他组件没有或有很小影响。另外,新版本提供了一个更广泛的接口和辅助器的集合,以形成每个组件和NDN交通流的详细轨迹。

      为了更多地提高用户体验,我们鼓励研究团体提交bug报告提供给我们更有价值的反馈。我们也欢迎对新特征开发的需求。更多关于模拟器、基本例子和教程的信息可以访问ndnSIM网站:http://www.ndnsim.net/

 

2 设计

      我们的目标是通过对ndnSIM 2.0的设计被我们的目标指导来获得命名数据网络转发器(NFD)的完全集成。在这一部分,我们呈现了ndnSIM的整体设计,并说明它主要的结构化组件和他们相互交互的方式。

 

2.1 设计汇总

      相较于第一版ndnSIM, ndnSIM 2.0的设计包括各种改变,主要是由于NFD的集成。尽管安装在每个模拟节点的NDN协议栈(ndn::L3Protocol)仍然保持着ndnSIM的核心组件,包处理基于NFD实现(拥有NS-3较小的特定变化)。

      NFD集成的结果,任何NDN转发实验(例如,定制的转发策略)使用的代码通过真实的NFD实现可以直接被ndnSIM使用,反之亦然,提供给研究者灵活性来模拟不同策略分配给不同命名空间的场景。换句话说,转发面板扩展可以被用在ndnSIM模拟实验和真实的NFD部署中,使用之前的模拟器版本是不可行的。此外,每个命名空间策略特征,对于兴趣包选择器和加密操作的全特征支持,全特征NDN包格式的使用以前不可能被模拟。这些新特征确保模拟实验是最现实的。尽管这些引进的特征,ndnSIM 2.0仅仅比ndnSIM 1.0稍微慢一些。然而,它的内存消耗比ndnSIM 1.0高,但它仍然有一个合理的限制,因此所需要的模拟实验可以运行在一些一般用途的硬件上。

      ndnSIM作为一个新的网络层协议模型实现,并可以运行在任何可用的链路层协议模型之上(点对点,CSMA,无线等)。除此之外,模拟器提供了一个接口的大量集合(例如,接口、网络设备接口和应用程序接口抽象)和辅助器(例如,应用程序、FIB、全局路由、链路控制、NDN栈和策略选择辅助器)来执行每个组件详细的轨迹行为,和NDN交通流。

      该ndnSIM发布版的基本组件如图1所示,模拟器的2.0版和1.0版的设计原则和特征之间的比较如表1所示。这些组件列出如下:

      (1) ndn::L3Protocol:NDN栈实现的NS-3抽象。它的主要任务是初始化模拟场景中每个节点的NFD实例,并提供轨迹源来测量NDN性能(发送/接收兴趣包和数据包,已满足的/未满足的兴趣包)。

      (2) NFD:命名数据网络转发守护进程的实现,包括:

            <1>nfd::Forwarder:NFD的主要类,拥有NDN路由器节点的所有接口和表,并实现NDN转发管道。

            <2>nfd::Face:NFD接口抽象的基类,NFD接口抽象实现需要的通信原语来实际发送和接收兴趣包和数据包。


             <3>nfd::Cs:数据包的缓存被NFD使用。当前的ndnSIM发行版也包括旧的ndn::ContentStore抽象,从之前的版本移植,来允许对内容缓存操作模拟实验更丰富的选择(当提到缓存替换策略,nfd::Cs并没有那么灵活)。

             <4>nfd::Pit:NFD的待定兴趣表(PIT)记录了向一个(或更多)上游内容源转发的兴趣包。以这种方式,数据包可以向下游发送到一个一个(或更多的)请求者。

             <5>nfd::Fib:转发信息表(FIB)被用来转发兴趣包向一个(或更多的)可能源。

             <6>nfd::fw::Strategy:NFD中的转发策略做出决定关于是否、什么时候、向哪里兴趣包可以被转发。nfd::fw::Strategy是一个抽象类,需要被所有的内置或定制的转发策略实现。

      (3) ndn::AppFace: nfd::Face抽象的实现,nfd::Face允许和应用程序通信。

      (4) ndn::NetDeviceFace:nfd::Face抽象的实现,nfd::Face允许和其他模拟节点通信。

      (5) BasicNDN applications:内置的NDN消费者和生产者应用程序的实现,可以产生NDN流量。这些应用程序包括可以被用户在模拟场景中配置的参数,因此依据用户定义的样式生成了NDN流量。

      (6) Tracehelpers:轨迹辅助器的集合,可以简化各种必需的统计信息的收集和汇聚,并在文本文件中模拟和写这些信息。

 

2.2 核心NDN协议

      ndnSIM体系结构的核心组件是ndn::L3Protocol。像之前版本的模拟器,该组件是NDN协议栈的一个实现,可以被以IPv4或IPv6协议栈相似的方式安装在每个节点。然而,当这个版本的模拟器被安装在NS-3节点上,它执行NFD实例的初始化,并创建必需的NFD的管理器(例如,FibManager,FaceManager,StrategyChoiceManager),表(例如,PIT,FIB,策略选择,测量值),和特殊接口(例如,空接口,内部接口)。除此之外,ndn::L3Protocol类定义了一个代码重构API来处理注册到NFD的新nfd::Face实例,使用AddFace方法,并允许NDN级的包轨迹。

 

2.3 命名数据网络转发守护进程

      这完全是ndnSIM体系结构的新组件。它主要的功能是转发兴趣包和数据包。为了这个目标,NFD抽象了低层网络传输原语到nfd::Face实例,保持良好设计的数据结构——CS、PIT和FIB,并实现了包处理逻辑。ndnSIM集成了NFD代码库来执行所有的兴趣包和数据包处理行为。在这节的前半部分,我们详细描述NFD,在后半部分,我们谈到针对前述集成我们必须处理的主要挑战。

 

2.3.1 NFD内部结构

      依据NFD开发者指南,NFD的基本模块如下:

      (1) ndn-cxx库、核心和工具:提供了在不同NFD模块之间共享的各种通用服务。

      (2) Faces:在各种低层传输机制上实现NDN接口抽象。

      (3) 实现内容缓存(CS)、待定兴趣表(PIT)、转发信息表(FIB)、策略选择、测量和其他数据结构,以支持NDN数据包和兴趣包的转发。

      (4) 转发:基本包处理管道的实现,与接口、表和策略的交互。

      (5) 管理:实现NFD管理协议,允许应用程序配置NFD,并设置/查询NFD的内部状态。

      (6) RIB管理:管理路由信息表(RIB)。该组件还没有被ndnSIM支持。

      NFD中的包处理包括转发管道。转发管道(或仅仅管道)是一系列步骤,操作在包或PIT条目之上,被特定事件触发:兴趣包的接收、检测接收到的兴趣包是有环路的,当兴趣包被转发出接口等。转发策略(或仅仅策略)是一个关于兴趣包转发的决策制定者,这被附加到管道的结束或开始处。换句话说,策略做出决定,是否、什么时候、哪里转发兴趣包,而管道提供兴趣包和支持信息的策略来做出决定。因为在NDN中处理兴趣包和数据包的方式不同(例如,一个节点服务请求,而其他节点满足待定请求),NFD的转发管道分离成兴趣包处理路径和数据包处理路径。转发管道和转发策略的概念在下面详细描述。

      NFD的许多方面通过一个配置文件配置。当前,NFD定义了6个顶层配置部分:

      (1) 总体:总体部分定义了影响整个NFD行为的各种参数。

      (2) 表:表部分指定为配置NFD表:内容缓存、PIT、FIB、策略选择和测量。

      (3) 日志:日志部分定义了日志的配置。

      (4) 接口系统:接口系统部分完全控制了允许的接口协议、信道、信道创建参数和启用的多播接口。

      (5) 授权:授权部分提供了一个细粒度的管理操作的控制。

      (6) 路由信息表:路由信息表部分控制NFD RIB管理器的行为和安全参数。

 

2.3.2 NFD集成的挑战

      面对该集成,我们必须处理下面的挑战:

      (1) 我们必须能够使用NFD中的模拟时间。因此,我们利用ndn-cxx库提供的定制时钟类,以便转换ndnSIM时间到system_clock::time_point和steady_clock::time_point。

      (2) NFD的调度程序重定向到ns3::Simulator,以便NFD可以调度将被模拟器执行的事件。

      (3) 为了优化NFD使用的签名过程,为了和它的管理者通过管理协议交互,我们设计了一个定制的密钥链来在模拟期间提供高性能(例如,小的加密开销)。然而,对于模拟实验,需要真实的加密操作,全特征的密钥链结构的使用可以在模拟场景中被选择。

      (4) NFD的转发管道必须通过之前满足的兴趣包和之前过期的待定兴趣包信号被延长,以便已满足兴趣包和超时兴趣包事件的轨迹能够被模拟。

      (5) 我们能够在内部配置NFD参数,使用专门设计的配置文件来避免分析原始外部文件的开销,因此优化模拟过程。

 

2.3.3 接口抽象

      与之前ndnSIM版本的相应抽象相似。然而,在发布版中,使用接口抽象的更新实现(例如,nfd::Face),包含需要的低层通信原语来处理兴趣包和数据包。像在文献[7]中提到的,这些原语包含发送兴趣包/数据包的函数并在接口上终止通信。

 

2.3.4 NFD的内容缓存

      在NDN通信模型中,内容缓存为数据包提供了网络内缓存。到达的数据包尽可能长时间地放在缓存中,以便满足未来的请求相同数据包的兴趣包。以这种方式,协议性能被增强,使得NDN针对包丢失和错误更健壮,并内在地支持多播。

      就许多其他的转发组件来说,该版本的ndnSIM使用来自NFD代码库的内容缓存实现。该实现完全考虑兴趣包选择器,然而当提到缓存替换策略却并不灵活。该扩展CS的灵活性的特征当前处于活跃的开发中,并且目前,我们也已经移植了旧的ndnSIM1.0内容缓存到新的代码库,这在2.6节讨论。

 

2.3.5 待定兴趣包表

      在我们的实现中,NFD的nfd::Pit类用作PIT抽象。PIT维护向上游转发的一个(或多个)可能的匹配数据包的数据源的兴趣包的状态。它提供向数据消费者反向转发数据包的方向。除此之外,为了防止环路,PIT也包含最近被满足的兴趣包。

      关于PIT结构的更多信息,和在其上执行的操作,我们可以参考文献[7]。

 

2.3.6 转发信息表

      NFD的nfd::Fib类用作FIB抽象。该抽象用于兴趣包向可能的内容源转发的转发策略。对每个需要被转发的兴趣包,最长前缀匹配查询在FIB上执行。

      FIB仅通过FIB管理协议更新,被FIB管理器操作于NDN转发者一边。为了简化通用操作,我们创建了一个FIB辅助器,对于高层FIB操作,准备了特殊签名的兴趣包命令,并向FIB管理器发送。当前,FIB辅助器实现了两个高层操作(图2):

      (1) AddRoute:创建一个新的FIB条目,添加路由到FIB条目,或者在FIB条目中更新现存记录的代价。

      (2) RemoveRoute:从FIB条目中移除路由记录(拥有空的下一跳记录的FIB条目将被自动删除)。

      发送到FIB管理器的兴趣包命令用前面小节提到的定制的密钥链签名,为了做模拟实验,这被专门设计来消除签名的加密开销。如果需要,全特征加密支持可以通过转换到ndn-cxx库提供的标准的密钥链被重新允许。

 

2.3.7 转发策略抽象

      像前面提到的,NFD的转发策略抽象做出考虑兴趣包转发的决定。这就是说,不管兴趣包是否被转发,它将被转发到的上游接口和它将被转发到选择的上游接口的时间。ndnSIM/NFD以一个抽象接口(策略API)为特征,提供了转发策略的基本实现,而不需要重新实现完全的兴趣包处理管道。转发管道的概述如图3所示,并在本节的下面部分详细描述。


      实现的转发管道允许特定转发策略每个命名空间的选择。每命名空间转发策略在策略选择表中注册并维护。策略选择表通过管理协议更新,通过策略选择管理器操作。与FIB操作相似,我们创建了一个策略选择辅助器,当策略选择在模拟场景中被要求时向管理器准备和发送专门签名的兴趣包命令。

      下面的内置转发策略当前是可用的:

      (1) 广播:向所有的上游接口转发每个兴趣包。

      (2) 客户控制策略:允许本地消费者应用程序选择每个发送兴趣包的出接口。

      (3) 最佳路由:通过最低路由代价转发兴趣包到上游接口。

      (4) NCC:重新实现CCNx 0.7.2的默认策略。

      一个新的转发策略可以实现一个完整的定制过程或者在现存的转发策略中覆盖特定的动作。创建新策略的初始化步骤是创建一个类,也就是说MyStrategy源自于nfd:Strategy类。该子类必须至少覆盖触发器,该触发器标志为纯虚拟化的,并通过期望的策略逻辑实现他们。它也可能覆盖任何其他可用的被标记为虚拟的触发器。

      如果策略需要存储信息,我们需要决定是否信息与命名空间或兴趣包相关。信息与命名空间相关,但并不针对应该被存储在测量条目中兴趣包。与兴趣包相关的信息应该被存储在PIT条目、PIT下游记录或者PIT上游记录中。做出该决定后,需要声明源自于StrategyInfo类的数据结构。在现存的实现中,这样的数据结构被声明为嵌套类,它提供了自然的分组和特定策略实体的范围保护,但并不需要遵循相同的模型。如果需要定时器,EventId域需要被添加到该数据结构中。

      最后一步是至少实现“兴趣包接收后”触发器,下面列出三个其他触发器:

      (1) 接收兴趣包之后:当兴趣包被接收时,传递必需的检查,需要被转发,进来的兴趣包管道通过PIT条目、进来的兴趣包和FIB条目调用该触发器。

      (2) 满足兴趣包之前:当PIT条目被满足,数据包发送到下游接口之前,进来的数据包管道通过PIT条目、数据包和其进接口调用触发器。

      (3) 兴趣包过期之前:当PIT条目因为它在所有的内部记录过期之前未被满足而过期时,在删除之前,兴趣包未满足管道通过PIT条目调用该触发器。

      动作是被每个转发策略做出的转发决定,并被作为nfd::Strategy类的非虚拟保护方法实现。提供的动作列出如下:

      (1) 发送兴趣包:当进入出兴趣包管道时被触发。

      (2) 拒绝待定兴趣包:当进入兴趣包拒绝管道时被触发。

      为了简化指定期望的每名字前缀转发策略的操作为一个、更多或所有的拓扑节点,我们提供了一个策略选择辅助器,通过向管理器发送特殊签名的兴趣包命令与NFD的策略选择管理器进行交互。该辅助器的操作如图4所示。


2.4 应用程序接口

      该类允许与NDN网络的模拟应用程序通信。特别地,该抽象提供了函数来发送兴趣包和数据包和发送兴趣包和发送数据包方法的重载来从NDN栈接收包。我们应该注意“发送”这个词指的是从NDN栈发送的包,因此从应用程序接收。

 

2.5 网络设备接口

      该组件允许模拟节点之间的通信。每个ndn::NetDeviceFace实例与一个NetDevice对象持续相关,在该接口的生存时间内该对象不能被改变。为了在模拟节点之间发送包,兴趣包和数据包转换到NDN包格式,使用ndn-cxx库的惯例,然后被封装到NS-3的包实例中。

 

2.6 旧内容缓存

      像上面提到的,当提到缓存替换策略时,因为NFD的内容缓存并不灵活,我们移植旧的ndnSIM 1.0内容缓存实现到新的代码库(见表2)。这些实现以不同的缓存替换策略为特征,但对兴趣包选择器拥有有限的支持。

 

2.7 基本的NDN应用程序

      由于引入ndn-cxx库,包括在当前ndnSIM发布版中的基本应用程序是与之前发布版中的同样的应用程序,只在之前发布版上有微小改动。

      (1) ConsumerCbr:依据用户定义的模式,产生兴趣包流量的消费者应用程序(例如,预定义的频率,恒定速率,兴趣包间随机一致分布的沟壑的恒定平均速率,随机指数等)。用户定义的兴趣包名字前缀和序列号是可用的。此外,依据与TCP RTO相似的基于RTT的超时时间,该应用程序提供兴趣包重传。


      (2) ConsumerBatches:消费者应用程序在特定的模拟实验时间点生成特定的兴趣包数量。

      (3) ConsumerWindow:消费者应用程序生成可变速率的兴趣包流量。它实现了简单的基于滑动窗口的兴趣包生成机制。

      (4) ConsumerZipfMandelbrot:请求内容的消费者应用程序(例如,请求中的名字)遵循Zipf-Mandelbrot分布。

      (5) Producer:简单的应用程序接收兴趣包流量并生成数据包流量。特别地,它用具有同样大小和名字的数据包响应每个进来的兴趣包,以作为响应进来的兴趣包。

      应用程序和模拟器核心的交互使用nfd::Face抽象的ndn::AppFace实现。ndn::App基类负责ndn::AppFace实例的创建/删除和他们在协议栈中的注册。

 

2.8 轨迹辅助器

      轨迹辅助器简化了模拟实验中各种必需的统计信息的收集和汇聚,并将该信息写入文本文件。在我们的实现中,来自NFD的轨迹事件的性能直接被添加到轨迹器中。这里是三种这样的辅助器:

      (1) 包级轨迹辅助器:该组包括L3RateTracer和L2Tracer。前者以字节记录了速率,被NDN节点转发的兴趣包/数据包的数量,而后者仅记录在第二层被丢弃的包(例如,由于传输队列溢出)。

      (2) 内容缓存轨迹辅助器:通过使用CsTracer,在模拟节点的内容缓存获得缓存命中/丢失的统计是可能的。

      (3) 应用层轨迹辅助器:通过使用AppDelayTracer,在发出的兴趣包和接收到的响应数据包之间得到数据相关延迟是可能的。

 

3 当前版本的限制和未来计划

      我们模拟器的最终目标是提供一个API,将被研究者用来以便利的方式移植和模拟任何真实的NDN应用程序。然而,该想法还未实现。为了完成该目标,ApiFace必须用ndn-cxx ndn::Face仿真来替代,这被真实的NDN应用程序使用。除此之外,ndnSIM 2.0不支持NFD的RIB管理器的使用。这也是我们在未来计划提供的一个特征。该提供的FibHelper不仅仅实现了一些从NFD的FIB中移除路由的功能,而且创建/更新路由功能,这是我们在未来计划支持的东西。最后,之前的模拟器版本提供的TCP接口和UDP接口是临时禁用的,但我们计划不久启用它们。

 

4 相关工作

      在最近这些年里,NDN研究的兴趣在增长。结果,开发评估提出的NDN研究方法通常便利的方式是绝对必需的。

      针对这个目标的最受欢迎的方法之一是ndnSIM的之前版本。该版本,就像当前的版本,以模块化方式实现并以仿真目的被优化。然而,之前的版本包括NDN包转发的独立实现,并使用一个弃用的NDN包格式。此外,ndnSIM 1.0没有实现NDN选择器的全特征处理,结果,对于精确的模拟结果拥有限制。

      另一个现存的成就由Chioccheti等人呈现,ccnSim是一个可扩展的数据块级模拟器,适合分析NDN网络的缓存性能。它用C++语言的OMNeT++框架开发而成。然而,它主要为NDN路由器的各种缓存替换策略的实验而优化,并不提供转发过程的任何灵活性。结果,ccnSim不能被用于在NDN体系结构的关键核心组件的实验中,这是转发策略层。

      CCN-lite是CCNx-NDNx协议的轻量级实现。它提供了一个使用OMNeT++模拟平台的模拟模式。CCN-lite支持调度,在数据块级和包级和包分片。它也支持没有任何IP层可能的本地部署。然而,该努力主要意图是运行在资源约束设备,并没有被优化来提供高性能,因为它的数据结构依赖于链路列表。

      内容中心网络包级模拟器(CCNPL-Sim)是开发于Orange Labs的另一个NDN模拟器。CCNPL-Sim利用结合的广播和SSim模拟器内部基于内容的路由方案(CBCB)实现来处理事件管理和基于名字的转发和路由。尽管SSim模拟调度的高效性,CCNB的强制做出使其他路由协议的评估,比如OSPFN和NLSR,因此限制该模拟器的实验范围是不可能的。

      另一个最近提出方案是Mini-CCNx。Mini-CCNx是Mininet-HiFi的一个分叉,特别定制来支持CCNx-NDNx节点的仿真。主要目标是向已执行的测试添加现实的行为。Mini-CCNx提供灵活性,因为基于容器的仿真的以Mininet为特征,一个简单的配置GUI接口。然而,它基于NDNx的包格式,这是NDN通信模型的过期版本。它主要聚焦于仿真节点硬件,而不是通信模型自身。

      现存研究网络测试床/基础设施(例如,GENI,开放网络实验室(ONL),Emulab等)计算资源的汇聚也为执行实时研究实验提供了一个有价值的选择。这些测试床提供了研究者需要的硬件和软件系统来评估他们的设计。然而,连同有限的实验规模一起,为了配置和管理所有委托资源引入的复杂性是两个关键原因,引导研究者诉诸于模拟实验。

 

5 汇总

      在该模拟器版本中,我们聚焦于我们的努力来用ndnSIM通过集成命名数据网络转发守护进程(NFD)提供一个更加现实的模拟行为,使用直接的ndn-cxx库和最近的NDN包格式。ndnSIM提供了大规模实验框架,而它的模块化设计向研究者提供了灵活性来修改它的组件,拥有最小的改变来让实现其他部分。关于当前版本的详细信息和其他文档可以访问ndnSIM网站:http://ndnsim.net

      我们希望NDN研究团体认可ndnSIM是一个有价值的工具,我们期望接收到团体的宝贵反馈,以便更多地改进模拟器。

 

参考文献

[1] V. Jacobson, D. K. Smetters, J. D.Thornton, M. F. Plass, N. H. Briggs, and R. L. Braynard, “Networking namedcontent,” in Proceedings of ACM CoNEXT, 2009.

[2] L. Zhang et al., “Named data networking(NDN) project 2010 - 2011 progress summary,” PARC,http://www.named-data.net/ndn-ar2011.html, Tech. Rep., November 2011.

[3] L. Zhang et al., “Named data networking(NDN) project,” PARC, Tech. Rep. NDN-0001, October 2010.

[4] L. Zhang, A. Afanasyev, J. Burke, V.Jacobson, K. Claffy, P. Crowley, C. Papadopoulos, L. Wang, and B. Zhang, “Nameddata networking,” ACM SIGCOMM Computer Communication Review, July 2014.

[5] (2012, May) ns-3. [Online]. Available: http://www.nsnam.org/

[6] A. Afanasyev, I. Moiseenko, and L. Zhang, “ndnSIM:NDN simulator for NS-3,” NDN, Technical Report NDN-0005, October 2012.[Online]. Available: http://named-data.net/techreports.html

[7] A. Afanasyev, J. Shi, B. Zhang, L. Zhang,I. Moiseenko, Y. Yu, W. Shang, Y. Huang, J. P. Abraham, S. DiBenedetto, C. Fan,C. Papadopoulos, D. Pesavento, G. Grassi, G. Pau, H. Zhang, T. Song, H. Yuan,H. B. Abraham, P. Crowley, S. O. Amin, V. Lehman, , and L.Wang, “NFD developersguide,” NDN Project, Tech. Rep. NDN-0021, July 2014.

[8] NDN Project, “NFD - named data networkingforwarding daemon,” Online: http://named-data.net/doc/NFD/0.2.0/, 2014.

[9] ——, “NDN Packet Format Specification,”Online: http://named-data.net/doc/ndn-tlv/, 2014.

[10] D. Rossi, G. Rossini, “Caching performanceof content centric networksunder multi-path routing (and more),” TelecomParisTech, Tech. Rep., 2011.

[11] G. Rossini and D. Rossi, “ccnSim: anhighly scalable CCN simulator,” in IEEE ICC, 2013.

[12] C. Scherb, M. Sifalakis, and C. Tschudin,“CCNlite,” Available: http://www.ccn-lite.net, 2013.

[13] L. Muscariello. (2011) Content centricnetworking packet level simulator. Orange Labs. [Online]. Available: http://perso.rd.francetelecom.fr/muscariello/sim.html

[14] A. Carzaniga, M.J. Rutherford, andA.L.Wolf, Ed., A Routing Scheme for Content-Based Networking. IEEE INFOCOM,March 2004.

[15] L. Wang, A. Hoque, C. Yi, A. Alyyan, andB. Zhang, “OSPFN: An OSPF based routing protocol for Named Data Networking,”NDN, Tech. Rep NDN-0003, 2012.

[16] NDN Project, “NLSR - Named Data Link StateRouting Protocol,” Online: http://named-data.net/doc/NLSR/0.1.0/, 2014.

[17] C. Cabral, C. E. Rothenberg, and M. F.Magalh˜aes, “Reproducing real NDN experiments using mini-CCNx,” in Proceedingsof the 3rd ACM SIGCOMM workshop on Information-centric networking, 2013.

[18] (2015, January) GENI (Global Environmentfor Network Innovations). [Online]. Available: http://www.geni.net

[19] (2015, January) Open Networking Lab.[Online]. Available: http://onlab.us

[20] (2015, January) Emulab - Network EmulationTestbed. [Online]. Available: http://www.emulab.net

以上是关于NDN实验ndnSIM 2.0: A new version of the NDN simulator for NS-3 全文翻译的主要内容,如果未能解决你的问题,请参考以下文章

NDN helper 学习记录

ndnSIM学习——ndnSIM源码阅读计划

Paper | MFQE 2.0: A New Approach for Multi-frame Quality Enhancement on Compressed Video

NDN与TCP/IP

Python——字符串2.0(实验)

NDN Protocol:分布式存储预言机