Toward an Ideal NDN Router on a Commercial On-the-shelf Computer

Abstract
  本文阐述了理论上的NDN转发引擎如何在目前现有的计算机中工作。本文利用现有的已经成熟的高速技术设计了一个转发引擎样例,并通过分析最新的原型实现来了解其性能瓶颈。通过CPU管道和指令层面的微架构分析,我们发现动态随机存取存储器(DRAM)的延迟是高速转发引擎的一个瓶颈。最后,本文设计了2个对预取友好的报文处理机制来缓解DRAM的访问延迟。基于这两个机制的原型在现有的计算机上可以达到4千万/s的报文转发速率。

Introduction
  软路由是指利用现有的计算机配合软件形成路由解决方案,多核CPU和快速联网技术的研究进展确保了它的可行性。现有计算机的低成本、节能性和灵活性使得它可以作为部署IP软路由和NDN软路由的平台。快速IP报文转发一直是一个研究热点,目前基于CPU的转发引擎的硬件架构都是以IP转发的数据是存储在快速存储设备(比如SRAM)为前提设计的。Dobrescu利用多核CPU或多个服务器实现并行处理。这个研究中所用的转发引擎和服务器都是现有的商用计算机,这表明使用软路由来实现快速报文转发不需要使用特定的设备(比如GPGPU)。相继地,如何压缩数据结构成为一个研究问题,许多基于树的结构用于存储数据。其中,Degermark等人设计了一个multi-bit树的数据结构,将树中连续的元素替换为单个元素。这使得最新的SRAM可以容纳日益增长的IP前缀。
  受上述方案影响,由于NDN中的名字前缀空间比IP前缀空间大得多,时间复杂度也更大,为了实现快速报文转发,很多研究方案致力于设计复杂的数据结构或者算法(比如基于布隆过滤器、 基于树、基于哈希表的数据结构和算法)来优化时间复杂度。但是他们都以数据主要存储在快速存储器为前提,而实际情况是,大部分数据是存储在DRAM。即便是在IP报文转发中,如何缓解慢速存储器的延迟也没有很好的解决方案。因此,设计高速NDN软路由的数据结构和算法的时候,要从访问的DRAM的次数和它们的时间复杂度这个角度来考虑。由于基于布隆过滤器就比基于哈希表访问DRAM的次数更多,我们主要研究基于树和基于哈希表的数据结构和算法。
  解决DRAM延迟的一个解决方案是使用压缩的数据结构,减少访问DRAM的次数。基于树的数据结构通常比基于哈希表的数据结构的存储空间更小,因为很多公共的前缀是共用的。但是,虽然基于树的数据结构适用于NDN硬路由,但是不适用于NDN软路由。NDN软路由中,数据不能被固定在CPU缓存中,因为CPU缓存的删除和替换是由CPU来管理,而不是由用户空间程序和操作系统来管理。也就是说,由于从DRAM取数据是不可避免的,采用压缩数据结构的方式并不是一个好的解决方法。
  为了解决这个问题,本文提出隐藏DRAM的延迟和减少DRAM的访问次数是实现高速NDN软路由的关键。因为即便是采用复杂的数据结构和算法,DRAM的访问次数也不可能变成0。最新的CPU支持指令和数据的预取,这使得指令和数据可以在实际被使用之前就预取到CPU缓存中,隐藏了DRAM的访问延迟。由于基于树的数据结构很难在访问DRAM之前知道要访问哪里,很难实现预取策略。因为树的查找是自顶向下,在取到父节点之前,不能估计下一个要取的节点的地址。基于哈希的数据结构是个可行的方案,如果提前知道哈希键,其访问模式是可以预测的。

你可能感兴趣的:(Toward an Ideal NDN Router on a Commercial On-the-shelf Computer)