一种支持高速IPv6转发的路由器体系结构FIS*A Router Architecture—FIS Facilitating High-speed IPv6Forwarding***,***D** Y**-b**,S* J**-s**(国防科技大学计算机学院,湖南长沙410073)(School of Computer Science, National University of Defense Technology, Changsha 410073,China)摘要:本文提出了一种在交换网络中执行转发操作的路由器体系结构(Forwarding In Switch, FIS),采用多个低速的具有独立转发和交换功能的转发交换结点FSN(Forwarding and Switching Node),组成多级流水线结构,以流水的方式执行报文转发和交换。
本文对FIS中实现IPv6转发的关键技术—IPv6转发表的分解、转发表到FSN结点的映射、IPv6转发引擎的设计及报文调度算法进行了深入的研究,基于FIS体系结构,提出了易于硬件实现的IPv6查找机制和基于hash老化的报文调度算法,为下一步FIS原型系统的实现提供了切实可行的方案。
Abstract: A router architecture performing forwarding in switch (FIS) is proposed that consists of multi-stage, lower speed nodes called FSN performing IP-lookups and switching independently, thus IP-lookups and switching for multiple packets being pipelined. We investigate the key technologies of IPv6 forwarding for this architecture including the partition of IPv6 forwarding table, the logical mapping from forwarding table to FSN nodes, the design of IPv6 forwarding engine as well as the packet scheduling algorithm. Consequently based on FIS architecture a scalable IPv6 lookup mechanism and a packet scheduling algorithm based on hash miss are proposed which provide a practical way to implement FIS prototype.关键词:FIS路由器体系结构;转发表分解;转发表映射;IPv6转发Keywords:FIS router architecture; partition of forwarding table; mapping of forwarding table; IPv6 forwarding中图分类号:TP393 文献标识码:A1.引言目前IPv4 地址枯竭问题日益凸显,以IPv6为核心的下一代互联网随之提上日程。
IPv6采用128位地址长度,地址资源极其丰富,有人形容,世界上的每一粒沙子都会有一个IP地址。
与IPv4相比,除了丰富的地址空间,IPv6还兼具QoS、组播、安全和IP移动性等方面的优势。
IPv6核心路由器是用于下一代互联网建设的关键技术设备,IPv6路由器设计的主要障碍是相对较慢的IP 查找算法。
目前路由器采用精确转发、集中式交换的体*基金资助:国家自然科学基金资助项目(******)系结构,即首先由转发部件对报文进行精确查表确定其转发决策,然后由集中式的交换网络将报文交换至目的端口。
在这种传统的路由器体系结构中,转发部件难以满足FIB表容量增长和线速转发的需求,而集中式的交换网络难以满足端口速率和端口密度的需求。
本文提出一种基于部分转发和流水交换的并行路由器体系结构,路由器由多个结点构成,每个结点是独立的具有一定转发和交换能力的功能部件,称之为转发交换结点FSN (Forwarding and Switching Node)。
每个FSN结点仅保存转发表的一部分,完成报文的部分转发操作,直至出口FSN结点才得到报文的最终转发决策,称之为部分转发技术。
FIS 体系结构的优势在于通过分解路由表,降低了单个转发部件的查找复杂度;报文流被分派到多个FSN结点并行处理,降低了高速报文缓冲对存储器带宽的需求。
FIS通过同时开发报文转发和交换操作的并行度,缓解了高链路速率和FIB处理极限在路由器体系结构设计中的尖锐矛盾。
2.FIS关键技术IPv6路由查找仍然是最长前缀匹配,在FIS中实现IPv6转发有着得天独厚的优势:部分查找技术通过分解IPv6转发表降低了查找复杂度,流水处理方式有利于执行IPv6更长位宽(128bits)的查找。
本节基于FIS体系结构,突破了IPv6转发表的分解、转发表到FSN结点的映射及FSN结点转发引擎设计一系列关键技术,提出了一种可扩展的流水化IPv6查找机制。
该方案硬件实现简单,以低成本的执行部件FSN获得更高的交换性能和IPv6查找性能。
2.1F IS体系结构在如图1所示基于FIS的并行路由器体系结构实例中,3级3×3的转发交换结点FSN 构成3级流水线, 到达报文被分派到3个FSN结点并行处理。
每个FSN结点保存路由转发表的一部分,执行部分IP查找,降低了报文转发操作的硬件实现复杂度;FSN结点直接对变长报文进行交换,消除了对报文的分割和重组操作(Segmentation and Reassembly,简称SAR),报文调度过程简单,避免了系统加速,易于低成本的硬件实现并获得较高性能。
FIS 体系结构的实现取决于以下三大关键技术:(1)IP路由表的分解算法:如何合理地分解IP查找树,有效降低报文转发复杂度。
(2)子树到FSN结点的映射算法:研究分解后的路由转发表在多个FSN结点的映射算法,保证报文部分转发的正确性和路由转发表在FSN结点分布的均衡性。
(3)FSN结点的IP查找和交换机制:设计单个FSN结点的报文转发和交换策略,以高效的查表和简单的报文调度机制实现多路径负载均衡及报文流的顺序。
Stage 1Stage 2Stage 32.2 I Pv6图2 IPv6转发表的分解 为了降低单个FSN 结点的IP 查找复杂度,需要对原始的IP 路由表进行分解。
我们将IPv6转发表分解成S 种前缀长度范围的前缀集合,属于同一种前缀长度范围的前缀信息被表示为二叉Trie 的形式,以子树为单位存储前缀信息。
如图2所示,IPv6转发表被分割成S 层,,l h S 表示根结点位于第1l -级,子树最大高度为h 的子树集合。
与其他基于二叉Trie 树的IP 查找算法不同的是,这里的子树只需保存与前缀相关的结点信息,忽略与前缀无关的结点。
定义前缀长度为PLen ,hash 函数h x,y (IP),该函数的结果是IP 地址的第x 位到第y 位。
,l h S 涵盖了前缀长度范围为[],PLen l l h ∈+的全部前缀,并以子树的形式保存这些将前缀信息。
我们为每一层子树关联一个hash 函数。
子树的访问过程为:对子树的根结点作hash 运算,得到的hash 值就是访问子树的地址。
文献[1]中的研究结果表明:hash 函数应选取靠近前缀长度的位作为其结果,实际上这是因为不同的前缀,越靠近前缀长度的那些位差异性越大。
为了能够把子树尽量均匀地映射到hash 表内,我们选取靠近子树根结点的地址域作为hash 函数的值。
假设层29,5S 共有子树12777 个,那么hash 表的地址宽度为2log 1277714=⎡⎤⎢⎥,29,5S 的Hash 函数为h 16,29 。
2.3 子树的表示我们将IPv6转发表组织成分层结构,并以子树为逻辑单元组织前缀信息。
子树可以表示为与根结点相关的全部前缀的集合,如图3所示,每个子树块保存子树的根结点信息和子树中包含的前缀信息。
我们采用文献[2]提出的CAM 结点的存储方式来保存子树的前缀信息:每个前缀表项包含匹配位(match bits )、匹配长度(match length )、下一跳(next hop )三个信息域。
最大子树高度为h ,每个前缀项包含h bits 的匹配位,2log (1)h +⎡⎤⎢⎥bits 的匹配长度和10 bits 的下一跳信息(支持1024个端口)。
例如,子树高度为3,包含前缀*,10*,111*,可将这些前缀分别表示为(未显示10 bits 的下一跳信息):000 00,100 10,111 11。
子树块只能保存固定数目的前缀,当子树块内所有前缀项已被占满而出现溢出前缀时,开辟专用的存储空间存储少量的溢出前缀,子树块中保存溢出前缀指针。
图3 子树的表示2.4 子树到FSN 结点的映射——二分映射算法子树到FSN 结点的映射算法用于建立子树到FSN 结点的逻辑映射关系,它一方面要保证报文流水转发的正确性,实现IPv6最长前缀匹配;一方面要使子树在FSN 结点的分布尽量均匀。
FIS 体系结构采用一种基于二分查找策略的子树映射算法。
二分查找算法由Waldvogel 等人提出,其基本思想为:按照前缀长度组织hash 表,每一个hash 表保存一种长度的前缀,采用二分查找策略对hash 表进行搜索[3]。
该方案可扩展性好,能有效降低查找过程中的访存开销,访存次数独立于路由表的增长。
最坏情况下的hash 查找次数为log 2(IP 地址长度)。
I n c r e a s i n gS u b t r i e L e v e lb图4 hash 表的二分查找过程为了实现二分查找算法,需要在高层子树中加入指向低层子树更长前缀的标记。
标记保存在hash 表中,图4显示了根据标记进行二分查找的例子。
假设存在前缀P1 = 00*,P2 = 1011*,P3 = 10100*,P4 = 101000*,子树高度为1,那么这些前缀在层1,1S ,3,1S ,5,1S hash 表中的分布状态如图4b 所示。
假设查找101000,按照二分查找算法,从中间层hash 表开始查找,地址信息的高4位1010命中根结点为101的子树块,但未匹配子树块中的任何前缀,也没有任何信息指明下一步查找的方向——查找高半层子树或低半层子树。