路由器中采用IPv6头封装IPv4包的隧道转发系统的制作方法

文档序号:7703039阅读:212来源:国知局
专利名称:路由器中采用IPv6头封装IPv4包的隧道转发系统的制作方法
技术领域
路由器中采用IPv6头封装IPv4包的隧道转发系统属于下一代互联网IPv6高性能 核心路由器技术领域。
背景技术
IPv6协议解决了 IPv4协议地址枯竭、安全性不足以及移动性差等问题。从IPv4 过渡到IPv6是一个渐进而漫长的过程,两者将共存相当长时间。随着IPv6的大规模发 展,出现纯IPv6主干网络,IPv6上引入大量业务。因为IPv6与IPv4协议的不兼容性, 已有的网络用户迁移到纯IPv6网络后,将无法与资源丰富的IPv4网络互联。这使得原 IPv4网络的用户和资源迁移到IPv6网络的过程十分缓慢,导致已建成的纯IPv6网络使 用率不高。为了推动IPv4-IPv6网络的过渡,急需一种可以实现IPv4和IPv6网络互访, IPv4数据包经IPv6网络传输的隧道技术或者协议转换技术。 目前采用IPv4协议封装IPv6报文的隧道技术应用较广,也较成熟,而IPv6协议 封装IPv4报文的隧道技术则不够成熟,目前采用IPv6头封装IPv4报文的隧道技术还没有 统一的国际标准,市场上一些采用IPv6头封装IPv4报文的隧道技术大部分是用软件实现 的,封装的体系结构各不相同,速度低,不能满足高速网络的实际应用需要。
本发明实现路由器中采用IPv6头封装IPv4包的隧道转发,解决IPv4网络通过纯 IPv6主干网络实现互联的问题,方法简单、高效,达到3.2Gbit/s的封装和转发速度。
FPGA(Field Programmable Gate Array)是上世纪80年代末开始使用的大规模可编 程数字集成电路器件。它充分利用计算机辅助设计技术进行器件的开发与应用。用户借 助于计算机不仅能自行设计专用集成电路芯片,还可在计算机上进行功能仿真和实时仿 真,及时发现问题,调整电路,改进设计方案。这样,设计者不必动手搭接电路、调试 验证,只须在计算机上操作很短的时间,即可设计出与实际系统相差无几的理想电路。 而且,FPGA器件采用标准化结构,体积小、集成度高、功耗低、速度快,可无限次反复 编程,因此,成为科研产品开发及其小型化的首选器件,其应用极为广泛。
CAM(ContentAddressable Memory)是一种特殊的存储器,它将输入数据与CAM 中存储的所有数据项同时进行并行比较,迅速判断输入数据是否与CAM中存储的数据项 匹配,并给出数据项对应地址和匹配信息。CAM是目前使用最多的实现快速路由查找的 器件,CAM能够在有限的几个硬件时钟周期内完成关键字的精确匹配查找,如果采用流 水线操作,每个时钟周期输入一个查找的关键字,则CAM能在每个硬件时钟周期流水输 出一个查找结果。 TCAM(Ternary Content Addressable Memory)也是一种CAM,但它的每个存储位 有三种状态0、 1或X(不关心),每一个表项都包含数值比特串和掩码比特串,因此可 以用来确定最长前缀匹配。

发明内容
本发明目的在于提供一种路由器中采用IPv6头封装IPv4包的隧道转发系统,具 体实现采用FPGA和CAM技术。采用本发明的路由器可以连接IPv6主干网和IPv4孤 岛,实现IPv4孤岛之间通过IPv6主干网的透明传输。
本发明的特征 含有 一个集成于FPGA芯片上的隧道处理电路、SRAM单端口存储器、SRAM 双端口存储器、CAM内容可寻址存储器以及CPU控制单元,其中 所述的隧道处理电路,含有IP包输入接口电路、包过滤电路、包输入队列存 储器FIFO、 IPv6协议封装电路、IPv6包队列存储器FIFO、包相关信息提取电路、检索 指令队列存储器FIFO、 CAM控制电路、检索结果队列存储器FIFO、 IPv6数据包相关信 息队列存储器FIFO、 IPv6数据包存储器RAM、包发送电路、CAM维护指令队列存储器 FIFO、第0个上交包队列存储器FIFO、第1个上交包队列存储器FIFO、上交包发送电 路、以及CPU接口电路,其中 IP包输入接口电路,输入端接收上级物理和数据链路层处理电路输出的数据就 绪信号和数据总线信号,输出读信号给上级物理和数据链路层处理电路,所述IP包输入 接口电路数据输出端和包过滤电路的输入端相连,对输入输出的IPv4和IPv6包头信号和 包尾信号分别进行计数,将包头包尾计数输出信号发送给CPU接口电路,并接收CPU接 口电路输入的复位信号和计数器清零信号; 包过滤电路,输入端和IP包输入接口电路相连,还分别和第O个上交包队列存 储器FIFO、包输入队列存储器FIFO输出快满信号相连,输出端分别和第O个上交包队列 存储器FIFO的输入端、包输入队列存储器FIFO的输入端相连,对输入输出的包头信号 和包尾信号进行计数,并发送给CPU接口电路,同时接收CPU接口电路输入的复位信号 和计数器清零信号; 包输入队列存储器FIFO,是一个先进先出队列存储器,数据宽度为36位,输入 端与上述包过滤电路的IP包输出端相连,读信号来自IPv6协议封装电路,复位信号来自 CPU接口电路; IPv6协议封装电路,输入端和所述包输入队列存储器FIFO相连,输出端和IPv6 包队列存储器FIFO相连,此外输入端还接收IPv6包队列存储器FIFO输出的快满信号, IPv6协议封装电路对输入输出的包头信号和包尾信号进行计数,并发送给CPU接口电 路,同时接收CPU接口电路输入的复位信号和计数器清零信号; IPv6包队列存储器FIFO,是一个先进先出队列存储器,数据宽度为40位,数 据输入端与上述IPv6协议封装电路相连,读输入信号和包相关信息提取电路的读输出相 连,输出端和包相关信息提取电路相连,复位信号来自CPU接口电路;
包相关信息提取电路,输入端和IPv6包队列存储器的输出端相连,输出端分别 和检索指令队列存储FIFO、 IPv6数据包存储器RAM、 IPv6数据包相关信息队列存储器 FIFO相连,对输入输出的包头信号和包尾信号进行计数,并发送给CPU接口电路,同时 接收CPU接口电路输入的复位信号和计数器清零信号; 检索指令队列存储器FIFO,是一个先进先出队列存储器,数据宽度为100位, 数据输入端与上述包相关信息提取电路相连,读输入信号和CAM控制电路的读输出相连,数据输出端和CAM控制电路相连; CAM控制电路,输入端分别和检索指令队列存储器FIFO输出端、CAM维护指 令队列存储器FIFO输出端相连,CAM控制电路输出的CAM存储器读写控制命令总线信 号以及双向数据请求总线REQDATA信号和CAM存储器相连,CAM控制电路和SRAM 单端口存储器的数据总线相连,CAM控制电路输入端还和CAM存储器输出的读确认信 号、查找匹配信号、查找输出有效信号相连,CAM控制电路输出的检索信息输出端和 检索结果队列存储器FIFO相连,此外CAM控制电路的读信号分别和检索指令队列存储 器FIFO的读输入端、CAM维护指令队列存储器FIFO读输入端相连,CAM控制电路输 出端和CPU接口电路相连,将路由表保存的表项发送给CPU接口电路,CAM控制电路 对IPv6路由查询次数和查询命中的信息进行计数,将这些信息作为查询状态信息发送给 CPU接口电路,并接收CPU接口电路输入的复位信号和计数器清零信号;
检索结果队列存储器FIFO,是一个先进先出队列存储器,数据宽度为148位, 数据输入端与CAM控制电路的输出相连,读输入信号和包发送电路的读输出相连,数据 输出端和包发送电路的输入端相连; IPv6数据包相关信息队列存储器FIFO,是一个先进先出队列存储器,数据宽度 为60位,数据输入端与上述包相关信息提取电路相连,读输入信号和包发送电路的读输 出相连,数据输出端和包发送电路相连; CAM维护指令队列存储器FIFO,是一个先进先出队列存储器,数据宽度为90 位,数据输入端和CPU接口电路相连,读输入信号和CAM控制电路输出的读信号相连, 数据输出端和CAM控制电路的数据输入端相连; 包发送电路,分别向检索结果队列存储器FIFO、 IPv6数据包相关信息队列存 储器FIFO发出读信号,并和检索结果队列存储器FIFO、 IPv6数据包相关信息队列存储 器FIFO的输出端相连,包发送电路输出的读信号、读地址和IPv6数据包存储器RAM相 连,IPv6数据包存储器RAM的数据输出端和包发送电路相连,包发送电路的输出还和第 l个上交包队列存储器FIFO以及FPGA片外的上行FIFO相连,包发送电路对输入输出的 IPv4、 IPv6包头信号和包尾信号分别进行计数,并发送给CPU接口电路,同时接收CPU 接口电路输入的复位信号和计数器清零信号; IPv6数据包存储器RAM是一个双端口的FPGA片内读写存储器,有一个数据写 入端口和一个数据输出端口,数据写入端口和包相关信息提取电路的IPv6数据输出端相 连,读端口的所有信号和包发送电路相连,IPv6数据包存储器RAM数据宽度为36位, 读写端口分别有14根地址线; 第0个上交包队列存储器FIFO,是一个先进先出队列存储器,数据宽度为36 位,数据输入端与上述包过滤电路相连,读输入信号和上交包发送电路的读输出相连, 数据输出端和上交包发送电路相连; 第l个上交包队列存储器FIFO,是一个先进先出队列存储器,数据宽度为36 位,数据输入端与包发送电路相连,读输入信号和上交包发送电路的读输出相连,数据 输出端和上交包发送电路相连; 上交包发送电路,输入端和第0个上交包队列存储器FIFO、第1个上交包队列 存储器FIFO相连,数据输出端和SRAM双端口存储器的数据输入端相连,上交包发送电
10路发送的CPU中断信号、SRAM双端口存储器数据起始地址和终止地址、SRAM双端口 存储器中待传送数据的长度信号输出端和CPU接口电路相连,CPU接口电路将CPU响应 信号输出给上交包发送电路的输入端,上交包发送电路对输入输出的IPv4、 IPv6包头信 号和包尾信号分别进行计数,并发送给CPU接口电路,同时接收CPU接口电路输入的复 位信号和计数器清零信号; CPU接口电路,和由FPGA实现的隧道处理电路内部各个电路相连,接收各个 电路输入的IPv4、 IPv6输入输出包头信号和包尾信号计数,以及CAM控制电路的查询 状态计数,CPU接口电路与FPGA片外CPU控制单元的CPU地址总线、数据总线、读 写控制信号相连,输出的中断信号和CPU控制单元的中断输入相连,CPU接口电路还和 SRAM双端口存储器数据输出端口的地址总线、数据总线、读写控制信号相连,CPU接 口电路接收CPU控制单元输入的复位信号,并将复位信号传送给FPGA内的其它各个电 路,将清零信号传送给IP包输入接口电路、包过滤电路、IPv6协议封装电路、包相关信 息提取电路、CAM控制电路、上交包发送电路、包发送电路,CPU接口电路还和CAM 维护指令队列存储器FIFO的数据输入端相连,接收CAM控制电路输出的路由表表项数 据,接收上交包发送电路输出的SRAM双端口存储器数据起始地址和终止地址、SRAM 双端口存储器中待传送数据的长度以及中断请求信息,也向上交包发送电路发送CPU中 断响应指示信号; 所述包过滤电路是一个电路组件,其中输入IP包数据寄存器,输入端和IP包 输入接口电路的输出端相连;输入IP包数据寄存器的输出端分别和IPv4数据包寄存器、 IPv6数据包寄存器相连;IPv4数据包寄存器的输出端分别和IPv4数据包延迟寄存器组、 IPv4包头校验和寄存器、生存时间寄存器、包类型寄存器、状态控制机的输入端相连, 同时也接收状态控制机的输出;IPv4数据包延迟寄存器组的输出端和数据选择器A的输 入端相连;IPv4数据包头校验和生成器的输入端分别和IPv4头校验和寄存器输出、生存 时间更新寄存器输出相连;生存时间寄存器的输出端和减一减法器A的输入端以及状态 控制机的输入端相连,减一减法器A的输出端和生存时间更新寄存器的输入端相连,生 存时间更新寄存器的输出端分别和IPv4数据包头校验和生成器、状态控制机相连;数据 选择器A的输入端又分别和IPv4数据包延迟寄存器组的输出端、IPv4数据包头校验和生 成器的输出端以及状态控制机的输出端相连,数据选择器A的输出端和更新后的IPv4数 据包寄存器输入端相连; IPv6数据包寄存器的输出端分别和IPv6数据包延迟寄存器组、跳数寄存器、下 一个头寄存器、IPv6目的地址寄存器、状态控制机的输入端相连,同时也接收状态控制 机的输出;跳数寄存器的输出端和减一减法器B的输入端相连以及状态控制机相连,跳 数更新寄存器的输出端还和状态控制机相连;减一减法器B的输出端和跳数更新寄存器 的输入端相连;数据选择器B的输入端分别和IPv6数据包延迟寄存器组、跳数更新寄存 器、状态控制机的输出端相连,数据选择器B的输出端和更新后的IPv6数据包寄存器输 入端相连;下一个头寄存器的输入端和IPv6数据包寄存器的输出端相连,输出端和状态 控制机相连;IPv6目的地址寄存器的输出端和比较器的输入端相连,比较器的另一个输 入端和本路由器IPv6地址寄存器输出端相连;比较器的输出端和状态控制机的输入端相 连;本路由器IPv6地址寄存器输入端和CPU接口电路的输出相连;
数据选择器C的输入端分别和更新后的IPv4数据包寄存器、更新后的IPv6数据 包寄存器的输出端相连、状态控制机以及包输入队列存储器FIFO的快满信号相连,数据 选择器C的输出端分别和第0个上交包队列存储器FIFO、包输入队列存储器FIFO相连, 同时数据选择器C的包头信号和包尾信号输出端也和计数器的输入端相连;计数器接收 CPU接口电路输出的计数器清零信号,并将包头包尾信号计数信号传送给CPU接口电路 的输入端; 所述IPv6协议封装电路是一个电路组件,其中包输入队列存储器FIFO接口电 路,数据输入端和包输入队列存储器FIFO的数据输出端相连,输出的读信号和包输入队 列存储器FIFO的读输入信号相连,控制输入输出端和状态控制机电路相连;IPv4包头数 据寄存器,输入端和包输入队列存储器FIFO接口电路输出端以及状态控制机电路输出端 相连, 一个输出端和IPv4包头转IPv6隧道包头电路相连,另一个输出端和多路数据选择 器电路输入端相连;IPv4负载数据寄存器,输入端和包输入队列存储器FIFO接口电路输 出端相连,输出端和多路数据选择器电路输入端相连;IPv6数据寄存器,输入端和包输 入队列存储器FIFO接口电路的输出端相连,输出端和多路数据选择器电路输入端相连; IPv6隧道包头数据寄存器,输入端和IPv4包头转IPv6隧道包头电路以及状态控制机电路 相连,输出端和多路数据选择器电路相连;多路数据选择器电路的输出端和IPv6包队列 存储器FIFO的输入端相连;包输入队列存储器FIFO接口电路将接收的数据包头信号和 尾信号发送给计数器电路,多路数据选择器电路也把输出的数据包头、包尾信号传送给 计数器电路,计数器电路输出的输入输出包头包尾信号计数和CPU接口电路的状态计数 器值输入端相连,同时接收CPU接口电路输入的计数器清零信号; 所述包相关信息提取电路是一个电路组件,由一系列的电路组成IPv6包队列 存储器接口电路,所述数据输入端和IPv6包队列存储器FIFO相连,输出的读信号和IPv6 包队列存储器FIFO的读输入信号相连,控制输入输出端和状态控制机电路相连,输出 端和包上交标识寄存器、包优先级寄存器、包源端口编号寄存器、包起始地址寄存器、 包终止地址寄存器、包序列号寄存器、包目的地址寄存器、隧道标识寄存器以及包写入 RAM电路相连;IPv6包信息发送电路的输入端和所述包上交标识寄存器、包优先级寄存 器、包起始地址寄存器、包源端口编号寄存器、包终止地址寄存器、包序列号寄存器相 连,控制信息来自于状态控制机,输出端接IPv6数据包相关信息队列存储器FIFO;检索 指令发送电路的输入端和包序列号寄存器、包目的地址寄存器、隧道标识寄存器相连, 输出端和检索指令队列存储器FIFO相连,控制输入端和状态控制机相连;包写入RAM 电路的输出端和IPv6数据包存储器RAM相连,它的控制输入端和状态控制机相连;计 数器的输入端分别和IPv6包队列存储器FIFO接口电路的输入包头信号以及输入包尾信号 相连,还和包写入RAM电路输出的包头信号和包尾信号相连,同时也和CPU接口电路输 入的计数器清零信号相连,输出的包头尾信号计数和CPU接口电路相连;
所述CAM控制电路是一个电路组件,由一系列的电路组成检索指令队列存储 器FIFO接口电路的数据输入端和检索指令队列存储器FIFO输出端相连,输出的读信号 和检索指令队列存储器FIFO的读信号相连,并且输出端也和状态控制机互连,接收状态 控制机输出的控制信号;CAM写入数据寄存器的输入端和检索指令队列存储器FIFO接 口电路、以及CAM维护指令队列存储器FIFO接口电路的输出端相连,输出端和CAM数据总线读写控制电路相连;CAM操作指令发送电路的输入端和检索指令队列存储器 FIFO接口电路的输出端、CAM维护指令队列存储器FIFO接口电路的输出端相连,输出 端直接和CAM存储器的命令总线INST、 LTIN、 SEGSEL、 GMASK、 CRB和请求选通信 号REQSTB相连;SRAM写入数据寄存器的输入端和CAM维护指令队列存储器FIFO接 口电路输出端,以及检索指令队列存储器FIFO接口电路的输出端相连,输出端和SRAM 数据总线读写控制电路输入端相连;SRAM数据总线读写控制电路的输出端和SRAM读 出数据寄存器、检索结果寄存器以及SRAM单端口存储器相连,控制信号输入端和状态 机输出相连;CPU读出数据寄存器的输入端和CAM读出数据寄存器的输出端、SRAM读 出数据寄存器的输出端相连,输出端和CPU接口电路相连;检索结果寄存器的输入端和 数据包序列号寄存器的输出端相连,输出端和检索结果队列存储器FIFO相连;数据包序 列号寄存器的输入端和检索指令队列存储器FIFO接口电路的输出端以及状态控制机的输 出端相连;计数器的输入端和检索结果寄存器的输出端相连,还和CPU接口电路输入的 计算器清零信号相连,它输出的查询状态计数输出和CPU接口电路相连;
所述包发送电路是一个电路组件,由一系列的电路组成IPv6数据包相关信息 队列存储器FIFO接口电路,数据输入端和IPv6数据包相关信息队列存储器FIFO的输出 端相连,控制输入和输出端与状态机控制电路相连,输出的读信号和IPv6数据包相关信 息队列存储器FIFO读输入端相连,输出端分别和包存储起始地址寄存器、包存储终止地 址寄存器、包长度寄存器、包优先级寄存器、源端口编号寄存器、包序列号寄存器A的 输入端相连;检索结果队列存储器FIFO接口电路,数据输入端和检索结果队列存储器 FIFO的输出相连,控制输入和输出端与状态机控制电路相连,输出端分别和包序列号寄 存器B、目的端口编号寄存器、目的线卡编号寄存器、下一跳IPv6地址寄存器、下一跳 IPv4地址寄存器、隧道IPv6目的地址寄存器的输入端相连;位宽为36位的附加数据寄存 器组的输入端分别和包优先级寄存器、包长度寄存器、源端口编号寄存器、源线卡编号 寄存器、目的端口编号寄存器、目的线卡编号寄存器、下一跳IPv6地址寄存器、下一跳 IPv4地址寄存器、隧道IPv6目的地址寄存器的数据输出端相连;源线卡编号寄存器的输 入来自CPU接口电路;增10加法器,输入端和包存储起始地址的输出相连,输出端与地
址寄存器A相连;地址寄存器B的输入端和包存储起始地址的输出相连;增l加法器的 输出端分别和IPv6数据包存储器读地址寄存器的输出端、地址寄存器C的输入端相连; 多路数据选择器A,输入端分别和地址寄存器A、地址寄存器B、地址寄存器C相连,控 制输入端和状态机控制电路的输出相连,输出端和IPv6数据包存储器读地址寄存器的输 入端相连;数据比较器A,输入端和包存储终止地址寄存器的输出端以及IPv6数据包存 储器读地址寄存器的输出端相连,输出端和状态机控制电路的输入端相连;位宽为36位 的IP数据寄存器,输入端和IPv6数据包存储器RAM的数据输出端相连,输出端和多路 数据选择器B的输入端相连;多路数据选择器B,数据输入端分别和位宽为36位的附加 数据寄存器组的输出端、位宽为36位的IP数据寄存器的输出端相连,输出端和上交数据 包寄存器、带附加数据的IPv4或IPv6数据包寄存器的输入端相连;上交数据包寄存器的 输出端和第1个上交包队列存储器FIFO的输入端相连;带附加数据的IPv4或IPv6包寄 存器的输出端发往与FPGA相连的上行FIFO ;带附加数据的IPv4或IPv6包寄存器的还 将发送的数据包头信号和包尾信号分别传送给计数器,计数器还和CPU接口电路输入的计数器清零信号相连,计数器输出的包头包尾信号计数信号发送给CPU接口电路;
所述CAM存储器,是系统的FPGA片外存储器,读写控制命令总线信号以及数 据请求总线REQDATA信号来自CAM控制电路,输出的地址总线信号和读写信号分别与 SRAM单端口存储器的地址总线和读写信号相连,输出的读确认信号、查找匹配信号、 查找输出有效信号和CAM控制电路输入端相连; 所述SRAM单端口存储器,是系统的FPGA片外静态SRAM存储器,读写输入 信号和地址信号来自CAM存储器的输出,数据输入输出端和CAM控制电路相连;
所述SRAM双端口存储器,是系统的FPGA片外静态双端口 SRAM存储器, 分为数据写入端口和数据输出端口 ,数据写入端口的双向数据总线和上交包发送电路相 连,数据写入端口的读写信号线、地址总线和上交包发送电路的输出端相连,数据输出 端口的双向数据总线和CPU接口电路相连,数据输出端口的读写信号线、地址总线和 CPU接口电路的输出端相连。 通过上述方法构建的路由器中采用IPv6头封装IPv4包的隧道转发系统,由一片 FPGA芯片EP1S25F780、两片IDT75k62100(TCAM)、两片IDT71T75602(SRAM)、 一片 CY7C1300A(SRAM双端口存储器)芯片构成,FPGA和外围芯片采用同一个时钟进行工 作。 FPGA只有一个主时钟CLK,该时钟频率为100MHZ时,上述所有模块的复位 信号来自于CPU接口电路,CPU接口电路的复位信号来自于CPU控制单元,上述所有模 块的时钟都为CLK,但在上面为避免重复,没有提,路由器中采用IPv6头封装IPv4包的 隧道转发系统达到的性能指标为 IDT75k62100和FPGA共用一个主时钟100MHZ CLK,两片IDT71T75602的工 作频率为50MHZ,该50MHZ和主100MHZ的时钟源相同,是100MHZ CLK主时钟经二 分频得到的; 通过利用CAM系统构造的查找表,支持表项条数的动态分配,支持IPv6包的 IPv6路由查找,系统能保证以3.2Gbit/s线速收发数据包。 通过上述方法,使用一片EPlS25780和级联两片IDT75k62100构建的路由查找 器最大支持64K*288bits的IPv6路由表项。 该隧道传输处理系统可以处理IPv6隧道数据包、IPv4数据包和IPv6非隧道数据 包,最大处理32k字节数据包。系统能保证3.2Gbit/s线速收发数据包,如果超过3.2Gbit/ s会丢包,但没有丢的包能正确传送,如果包速率又回到3.2Gbit/s,仍然不会丢包。
支持上交包整包缓存。 通过CPU对FPGA内的各电路模块及CAM系统进行控制和维护。


图1路由器中采用IPv6头封装IPv4包的隧道转发系统在核心路由器线卡中的位 置以及和周围器件的关系 图2路由器中采用IPv6头封装IPv4包的隧道转发系统的芯片之间连接关系
图3路由器中采用IPv6头封装IPv4包的隧道转发系统FPGA内部的各个子电路 之间的关系
图4包过滤电路
图5IPv 6协议封装电路
图6包相关信息提取电路
图7CAM控制电路
图8包发送电路 图9CAM存储器存储的表项数据结构 说明目的IPv6地址128位(127 0),隧道标识占1位,保留位置0。
图10SRAM单端口存储器存储的表项数据结构 说明标识(bit71 69) : 000——IPv4转发;001——上交;010——丢弃,
011——普通IPv6转发;100——IPv6隧道转发; 目的线卡编号bit71 68 ;目的端口编号bit67 64。 IPv6隧道目的地址共128位,由SRAM单端口存储器第三个和第四个表项的 bit63 0构成。
保留位置0。
图11IP包输入接口电路接收的经过上级电路处理的PPP包数据结构
图12包输入队列存储器FIFO中的数据结构 说明(1)bit35 34为包的头尾指示10——数据包开始,00——数据包中间 数据,01——数据包结束,11——数据包错误。bit33 32为MOD域,最后一个32位有 效字节指示,只有在包尾时才有意义00——最后四个字节都有效,01——最后四个字 节中三个字节有效(bit31 8), 10——最后四个字节中两个字节有效(bit31 16), 11—— 最后四个字节中一个字节有效(bit31 24);无效位用0填充。bit31 31,数据包的具 体内容。 图13IPv6数据包相关信息队列存储器FIFO中的数据结构
图14检索指令队列存储器FIFO中的数据结构
图15CAM维护指令队列存储器FIFO数据结构
图16检索结果队列存储器FIFO中的数据结构
图17发送给上行FIFO的数据结构 说明(1)bit35 34为包的头尾指示10——数据包开始,00——数据包中间 数据,01——数据包结束,11——数据包错误。bit33 32为MOD域,最后一个32位有 效字节指示,只有在包尾时才有意义00——最后四个字节都有效,01——最后四个字 节中三个字节有效(bit31 8), 10——最后四个字节中两个字节有效(bit31 16), 11—— 最后四个字节中一个字节有效(bit31 24);无效位用0填充。bit31 31,数据包的具 体内容。 (2)源位置编号bitl5 8,共8位,其中bitll 8标识源端口编号,bitl5 12标识源线卡编号。 (3)目的端口编号bitl9 8,共12位,但目前只用了 bitll 8,其它位置0,
用来指明数据包到达目标线卡后的输出端口。
图18上交数据结构 说明bit35 34为包的头尾指示10——数据包开始,00——数据包中间数据,01——数据包结束,11——数据包错误。bit33 32为MOD域,最后一个32位有 效字节指示,只有在包尾时才有意义00——最后四个字节都有效,01——最后四个字 节中三个字节有效(bit31 8), 10——最后四个字节中两个字节有效(bit31 16), 11—— 最后四个字节中一个字节有效(bit31 24);无效位用0填充。bit31 31,数据包的具 体内容。 图19采用IPv6头封装IPv4报文的隧道数据包的数据结构
具体实施例方式
路由器中采用IPv6头封装IPv4包的隧道转发系统用在线路接口卡上,解决IPv4 网络通过纯IPv6主干网络实现互联的问题,具体实现采用FPGA技术。它由隧道处理电 路和外部SRAM双端口存储器芯片、SRAM单端口存储器芯片、CAM存储器芯片、CPU 控制单元实现,隧道处理电路由一片FPGA实现。该系统在高性能核心路由器中的位置 见附图1,构成该系统的芯片之间连接关系如图2所示。 由图可知,路由器中采用IPv6头封装IPv4包的隧道转发系统从物理和数据链 路层处理电路接收按照PPP协议封装的数据包,该数据包只含有协议域、信息域和填充 域,隧道传输处理系统根据协议域标识提取其中的纯IPv6数据报文和IPv4数据报文。 对IPv4数据报文进行封装,加上IPv6数据包头,成为IPv6隧道数据包;对IPv6数据报 文的目的地址和跳数进行检查,将目的地址为本路由器的IPv6数据包直接上交给CPU控 制单元进行处理。对于目的地址不为本路由器的IPv6数据包,从中提取路由查找信息, 并将查找信息提交给CAM查找系统(CAM+SRAM)进行查找,由FPGA构成的隧道处理 电路,根据查找返回的结果,决定对IPv6数据包是进行普通IPv6转发、采用IPv6头封 装IPv4包的隧道转发、IPv4转发、丢弃还是上交给CPU进行处理。转发的包通过上行 FIFO存储器发送给后续的交换结构协处理器和交换结构进行处理。 隧道传输处理系统上电后,CPU控制单元通过CPU接口电路对整个系统进行初 始化,将CAM配置成288位查找模式,并配置SRAM表项。初始化完成后,系统才可 以正常工作。 系统使用的CAM单个表项的存储位宽为72位,所以支持的表项长度是72bit的 整数倍,由于IPv6包的目的地址是128位,因此至少需要2个CAM表项来存储IPv6包 的目的地址。IPv4包进入路由器之后,离开路由器时,如果采用IPv6头封装IPv4包的隧 道转发,系统除了要提供隧道末端出口的IPv6地址外,还需要提供隧道包离开当前路由 器后途经的下一跳路由器IPv6地址,这样提供查找结果的SRAM至少需要256位。系统 使用的SRAM单端口存储器支持的表项长度是72bit的整数倍,这样以来,实际上SRAM 提供的存储容量为288位,对应SRAM有4个存储单元。288位SRAM必须要有288位 CAM配对,才能在时序上匹配,所以系统采用4个CAM表项共288位来表示一个路由表 项。第一个表项的bit71 69位取100,说明是IPv6表项,bit68如果取1 ,说明查的是 用IPv6封装的隧道包的路由,bit68如果取0,说明查的是普通IPv6包的路由,bit67 64位保留不用,bit63 0对应IPv6目的地址的高64位。第二个表项的bit71 64位保 留不用,bit63 0对应IPv6目的地址的低64位。还有2个表项保留不用,置0,如图 9所示。
系统使用的SRAM单端口存储器支持的每个路由表项结构如图10所示第一个 表项的bit71 69构成路由查找结果的标识位,用于表示查找结果的类型IPv4转发、 普通IPv6转发、IPv6隧道转发、丢弃、数据上交给CPU控制单元;目的线卡编号由第二 个表项的bit71 68构成,共4位,用于表示数据包通过交换结构将要到达的目的线卡; 目的端口编号由bit67 64构成,共4位,用于表示转发的数据包经过交换结构到达目的 线卡后,通过线卡的哪一个端口发送出去;第一个表项和第二个表项的bit63 0里存储 的是下一跳目的地址,如果是普通IPv6转发,则下一跳的IP地址是128位,如果是IPv4 转发,则下一跳的IP地址是32位,此时只有第二个表项的bit31 0位有效;标识位等 于OOO时,数据包以IPv4转发,等于001时,数据包被丢弃,等于010时,数据包被上 交给CPU控制单元,等于011时,数据包以普通IPv6转发,等于100时,数据包以IPv6 隧道转发;SRAM第三和第四个表项的bit63 0里存储的是IPv4数据包以IPv6隧道方 式转发时,IPv6隧道末端出口路由器的128位IPv6目的地址。
整个系统的工作流程如下 l)IP包输入接口电路从物理和数据链路层处理电路读取经过处理的PPP协议数 据包和数据源端口编号,经过处理的PPP协议数据包只含有协议域、信息域和填充域, PPP数据包的其它部分已经在上级电路被剔除了。根据PPP包的16位协议编号,提取其 中的纯IPv6或IPv4数据包,将去掉PPP 16位协议域和填充域的纯IPv6报文或IPv4报文 发送到包过滤电路。 2)包过滤电路接收IPv4和IPv6数据包,如果接收的是单播IPv4数据包,则对 IPv4包的生存时间TTL域进行检查,如果其TTL为O,则将该IPv4数据包丢弃;如果 TTL大于1,则对IPv4数据包的TTL域进行减l操作,如果减1后,TTL等于O,则将该 IPv4数据包发送给第0个上交包队列存储器FIFO ;如果接收的IPv4数据包是多播数据, 也发送给第0个上交包队列存储器FIFO ;如果接收的单播IPv4包的TTL不为0, TTL进 行减1操作后得到的TTL也不为0,则让该IPv4包完成TTL减1操作,重新生成新的首 部校验和后让该包通过,发送给下一级包输入队列存储器FIFO。 包过滤电路接收的IPv6数据包分三种单播、多播、任播。在后续的处理中, 本系统对任播的处理和单播一样,所有对单播的处理方式也同时应用于任播,但不再说 明。 包过滤电路接收到IPv6包后,首先查看包的跳数限制,如果它的跳数限制为 0,就将该IPv6包丢弃;如果它的跳数限制大于或等于l,则将跳数限制进行减l操作, 如果减1后,跳数为0,则将该IPv6数据包发送给第O个上交包队列存储器FIFO;如果 跳数减1后,跳数仍然不为0,包过滤电路就对该IPv6包目的地址进行检查;如果是多播 包就发送给第0个上交包队列存储器FIFO。 如果接收的IPv6数据包的目的地址是本路由器,分两种情况,第一种是情况 该数据包不是IPv6隧道包,则发送给第0个上交包队列存储器FIFO;第二种是情况该 数据包是隧道包,那么小于61字节的包都丢弃,不小于61字节的就发送给下一级包输入 队列存储器FIFO。 如果接收的IPv6数据包的目的地址不是本路由器,也分两种情况第一种情况 是该数据包是IPv6隧道包,那么小于61字节的包都丢弃,不小于61字节的就发送给下一级包输入队列存储器FIFO;第二种情况是该数据包不是IPv6隧道数据包,则对数据包 的大小不进行检查直接发送给下一级包输入队列存储器FIFO。 3)IPv6协议封装电路通过包输入队列存储器FIFO接口电路读取数据包,根据IP 数据的版本号,包输入队列存储器FIFO接口电路知道读入的数据是IPv4数据包还是IPv6
数据包。 如果是IPv4数据,在状态控制机电路的控制下,包输入队列存储器FIFO接口电 路读取IPv4包头数据,并将其保存在IPv4包头数据寄存器中,IPv4包头数据寄存器中的 数据又输出给IPv4包头转IPv6隧道包头电路。IPv4包头转IPv6隧道包头电路对应每一 个IPv4包头,生成一个IPv6封装包头IPv6包头的源地址就是本路由器的IPv6地址, 包头目的地址最高96位bitl27 32置0,最低32位就是当前处理的IPv4数据包的目的 地址,包头下一个首部域设置为十进制的101,跳数限制设为十进制的64,包的流量类 别设置为0,流标号置0。生成的IPv6包头发送到IPv6隧道包头数据寄存器中。多路数 据选择器将保存在IPv6隧道包头数据寄存器中的IPv6包头和保存在IPv4包头数据寄存器 中的数据依次选通发送到下一级的IPv6包队列存储器FIFO中,与此同时包输入队列存储 器FIFO接口电路继续读取IPv4数据包的负载部分,并将它们保存在IPv4负载数据寄存 器中,在发送完IPv4包头数据寄存器中的数据后,多路数据选择器立即选通IPv4负载数 据寄存器的输出,这样IPv6隧道包就像流水一样不断线地发送到下一级的IPv6包队列存 储器FIFO中。 如果是IPv6隧道包,包输入队列存储器FIFO接口电路读取IPv6头,并将IPv6 头丢弃,紧接着读取IPv6隧道包的IPv4包头数据,并将其保存在IPv4包头数据寄存器 中,IPv4包头数据寄存器中的数据又输出给IPv4包头转IPv6隧道包头电路。在状态控 制机电路的控制下,IPv4包头转IPv6隧道包头电路对应每一个IPv4包头,又生成一个 IPv6封装包头IPv6包头的源地址就是本路由器的IPv6地址,包头目的地址最高96位 bitl27 32置0,最低32位就是当前处理的IPv4数据包的目的地址,包头下一个首部域 设置为十进制的101,跳数限制设为十进制的2,包的流量类别设置为0,流标号置0。 生成的IPv6包头发送到IPv6隧道包头数据寄存器中。多路数据选择器将保存在IPv6隧 道包头数据寄存器中的IPv6包头和保存在IPv4包头数据寄存器中的数据依次选通发送到 下一级的IPv6包队列存储器FIFO中,与此同时包输入队列存储器FIFO接口电路继续读 取IPv6隧道包的IPv4数据负载部分,并将它们保存在IPv4负载数据寄存器中,在发送 完IPv4包头数据寄存器中的数据后,多路数据选择器立即选通IPv4负载数据寄存器的输 出,这样已经更新的IPv6隧道包就像流水一样不断线地发送到下一级的IPv6包队列存储 器FIFO中。 包输入队列存储器FIFO接口电路读取的IPv6数据包如果不是隧道包,则不对 IPv6数据包进行任何处理,只将它暂存在IPv6数据寄存器中,通过多路数据选择器,直 接将它传送到下一级的IPv6包队列存储器FIFO。 4)包相关信息提取电路通过IPv6包队列存储器FIFO接口电路从IPv6包队列存 储器FIFO中读取IPv6数据包,每一个节拍读40位,其中8位是边带信息,32位是IP数 据包。IPv6包队列存储器FIFO接口电路中有一个节拍计算器、 一个包计算器,节拍计 算器记录接收的数据包节拍数,每个节拍含32位IP数据,包计算器记录接收的数据包个数。系统初始化时,节拍计算器和包计算器被清O。 IPv6包队列存储器FIFO接口电路 接收一个数据包时,该数据包第一节拍数据对应的节拍计算器值,就是该IPv6数据包在 IPv6存储器RAM中保存的起始地址,数据包最后一节拍数据对应的计算器值,就是该数 据包在IPv6存储器RAM中保存的终止地址。每接收一节拍数据后,计算器值加l。数 据包的起始地址和终止地址被输出,分别保存在包起始地址寄存器、包终止地址寄存器 中。相应地,接收一个数据包时,该数据包第一节拍数据对应的包计算器值,就是该数 据包对应的序列号,该序列号被输出给包序列号寄存器保存。每接收完一个数据包,包 计算器值加1,包计算器加1是在接收数据包的最后一个节拍之后发生的。
在状态控制机电路的作用下,IPv6包队列存储器FIFO接口电路通过包写入 RAM电路,将接收的IPv6包发送到与包相关信息提取电路相连的IPv6数据包存储器 RAM, IPv6数据包存储器RAM是一个读写与时钟同步的双端口 RAM存储器, 一个端口 专门用来写数据, 一个端口专门用来读数据。 在状态控制机电路的作用下,IPv6包队列存储器FIFO接口电路提取数据包的源 端口编号,并将源端口编号发送到源端口编号寄存器。对于接收的IPv6数据包,如果它 的下一个首部域是0,则置上交标识,并将该上交标识输出给包上交标识寄存器,在该寄 存器中进行保存。 在状态控制机电路的作用下,IPv6包队列存储器FIFO接口电路提取包的流量类 别保存在包优先级寄存器中。如果IPv6包是隧道包,就将隧道标识寄存器置l,否则置 0。 包上交标识寄存器、包优先级寄存器、包源端口号寄存器、包终止地址寄存 器、包起始地址寄存器、包序列号寄存器的值输出给IPv6包信息发送电路,IPv6信息发 送电路在状态控制机电路控制下,将数据发送给与包相关信息提取电路相连的IPv6数据 包相关信息队列存储器FIFO。 CAM工作受它的命令总线和请求数据总线控制,检索指令发送电路生成CAM 命令总线控制数据请求选通信号REQSTB、操作指令类型信号INST、查找类型信号 LTIN、段选信号SEGSEL、掩码寄存器选择信号GMASK, CAM命令总线控制数据由检 索指令发送电路发送到检索指令队列存储器FIFO。 包序列号寄存器、隧道标识寄存器和包目的地址寄存器经检索指令发送电路发 送给与包相关信息提取电路相连的检索指令队列存储器FIFO,其中隧道标识寄存器和包 目的地址寄存器保存的数据对应CAM数据总线输入的72位宽度REQDATA数据,用来 进行CAM查找。 5)CAM控制电路内部的检索指令队列存储器FIFO接口电路从检索指令队列存 储器FIFO中读取检索指令,并将REQDATA数据写入CAM写入数据寄存器。CAM 存储器的操作受命令总线的控制,因此读取的总线控制命令REQSTB、 INST、 LTIN、 SEGSEL、 GMASK写入CAM操作指令发送电路。检索指令队列存储器FIFO接口电路 还将检索指令对应的数据包序列号保存到数据包序列号存储器中。 CAM表项和SRAM表项初始化完成后,在CAM运行的过程中,操作系统要不 断地对CAM表项和SRAM表项进行删除、添加等操作,这些操作是CPU通过CPU接 口电路向CAM维护指令队列存储器FIFO发送CAM维护指令来完成的。CAM控制电路通过CAM维护指令队列存储器FIFO接口电路读取CAM维护指令队列存储器FIFO的 CAM维护指令,并将REQDATA数据写入CAM写入数据寄存器,读取的总线控制命令 REQSTB、 INST、 LTIN、 SEGSEL、 GMASK写入CAM操作指令发送电路。CAM维护 指令队列存储器FIFO接口电路还将需要写的SRAM表项保存在SRAM写入数据寄存器 中。 在状态控制机电路的作用下,CAM数据总线读写控制电路和SRAM读写数据总 线控制电路把对应的表项写入CAM和SRAM存储器中,或将查找的结果输出给CAM读 出数据寄存器、SRAM读出数据寄存器。如果是对CAM进行维护操作,CPU读出数据寄 存器将读取的CAM和SRAM数据发送给CPU接口电路,通过CPU接口电路上交CPU。 如果对CAM进行操作的指令来自检索指令队列存储器FIFO接口电路,则将SRAM检索 的结果以及数据包序列号寄存器保存的序列号输出到检索结果寄存器,通过检索结果寄 存器发送到与CAM控制电路相连的检索结果队列存储器FIFO。 6)包发送电路通过IPv6数据包相关信息队列存储器FIFO接口电路,读取包在 IPv6数据包存储器RAM中存储的起始地址、终止地址、上交标识以及数据包序列号, 并将终止地址保存在终止地址寄存器中。检索结果队列存储器FIFO接口电路,读取检 索结果队列存储器FIFO,根据标识位和IPv6数据包相关信息队列存储器FIFO接口电路 得到的上交标识位,状态机控制电路知道包发送电路对数据包进行处理方式要么是按照 IPv4转发,要么是将数据包上交,要么是将数据包丢弃,要么是按照普通IPv6转发该数 据包,要么是按照IPv6隧道方式转发该数据包。此外如果经由IPv6数据包相关信息队列 存储器FIFO接口电路和检索结果队列存储器FIFO接口电路得到的数据包序列号分别保 存到4位的包序列号寄存器A和包序列号寄存器B,包序列号寄存器A和包序列号寄存 器B中的数据输入到数据比较器B,如果比较的结果是两个数据不相等,说明系统出现错 误,数据比较器B向CPU接口电路发送指示信号,通过CPU接口电路对整个系统进行复 位。复位之后按照上面的方法对系统进行初始化。 IPv6数据包相关信息队列存储器FIFO接口电路从IPv6数据包相关信息队列存 储器FIFO读取数据包长度、包优先级、源端口编号,并将其分别保存在数据包长度寄存 器、包优先级寄存器、源端口编号寄存器中。检索结果队列存储器FIFO接口电路读取目 的端口编号、目的线卡编号、下一跳IPv6或IPv4地址、隧道IPv6目的地址,分别将它们 保存在目的端口编号寄存器、目的线卡编号寄存器、下一跳IPv6寄存器或IPv4地址寄存 器、隧道IPv6目的地址寄存器中。 如果数据按照IPv4转发,则将包长度寄存器、包优先级寄存器、源线卡编号寄 存器、源端口编号寄存器、目的端口编号寄存器、目的线卡编号寄存器、下一跳IPv4寄 存器输出的值,保存在3个位宽为36位的附加数据寄存器组中。在状态控制机的作用 下,多路选择器B分3拍将3个位宽为36位的附加数据寄存器组中的数据发送出去,这 些数据作为IPv4数据包的附加数据头,添加在IPv4数据包的前面,发送给上行FIFO。
紧接IPv4附加数据头的就是IPv4数据包,在状态控制机电路的作用下,增10加 法器从输入端接收包存储起始地址,对该地址值实现加10操作,并将结果输出给地址寄 存器A进行保存,多路数据选择器A选择地址寄存器A中的数据输出给IPv6数据包存储 器RAM读地址寄存器,读地址寄存器将读地址发送给IPv6数据包存储器RAM读端口的读地址总线。IPv6数据包存储器RAM将读得的数据发送给位宽为36位的IP数据寄存 器,多路选择器B选通位宽为36位的IP数据寄存器,这样IPv4数据包第一拍数据就紧 随IPv4的附加数据头发送给上行FIFO。 在状态控制机电路的作用下,增1加法器读取IPv6数据包存储器RAM读地址寄 存器的值,对该地址进行加1运算后提交给地址寄存器C。多路数据选择器A选通地址 寄存器C中的数据,将该数据交给IPv6数据包存储器RAM读地址寄存器。此后系统运 行的过程和发送IPv4数据包第一拍数据时一样。 每个时钟周期,数据比较器A将输入的IPv6数据包存储器RAM读地址寄存器 值和输入的包存储终止地址寄存器的值进行比较,如果两者相等,说明该数据包的数据 已经全部输出。如果包存储器电路中还有别的数据,在状态控制机的作用下,包发送电 路对后续的数据包也进行同样的处理。 如果数据按照普通IPv6转发,包发送电路的工作过程和转发IPv4数据包的工作 过程总体相似,只有小部分不一样。不一样的部分是 (1)如果数据按照普通IPv6转发,则将包长度寄存器、包优先级寄存器、源线 卡编号寄存器、源端口编号寄存器、目的端口编号寄存器、目的线卡编号寄存器、下一 跳IPv6寄存器输出的值,保存在6个位宽为36位的附加数据寄存器组中。在状态控制 机的作用下,多路选择器B分6拍将6个位宽为36位附加数据寄存器组中的东西发送出 去,这些数据作为IPv6数据包的附加数据头,添加在IPv6数据包的前面,交给下一级上 行FIFO。 (2)IPv6数据包的第一拍数据的地址是通过包存储起始地址发送给地址寄存器 B,再通过多路数据选择器A发送给IPv6数据包存储器RAM读地址寄存器,不能通过增 IO加法器进行加IO操作。 如果数据按照IPv6隧道转发,包发送电路的工作过程和转发IPv6数据包的工作 过程总体相似,只有小部分不一样。不一样的部分是如果数据按照IPv6转发,则将 包长度寄存器、包优先级寄存器、源线卡编号寄存器、源端口编号寄存器、目的端口编 号寄存器、目的线卡编号寄存器、下一跳IPv6寄存器、隧道IPv6目的地址寄存器输出的 值,保存在10个位宽为36位的附加数据寄存器组中;在状态控制机的作用下,在发送隧 道IPv6数据包时,隧道包128位的IPv6目的地址,来自于IPv6协议封装电路,在这里 要用位宽为36位附加数据寄存器组中保存的通过CAM查表得到的隧道IPv6目的地址取 代。 如果数据不进行IPv4、普通IPv6转发、IPv6隧道转发,还是进行上交,包发送 电路的工作过程和转发IPv6数据包的工作过程总体相似,只有小部分不一样。不一样的 地方是 (1)IPv6数据包的上交时,IPv6数据包的附加数据只有一拍,附加数据只含有源 线卡编号和源端口编号。不足36位的其它数据用0来填充。 (2)通过多路数据选择器B选择的数据发送给上交数据包寄存器,通过上交数据 包寄存器发送给第1个上交包队列存储器FIFO。 如果数据不进行IPv4、普通IPv6转发、IPv6隧道转发,也不需要上交,还是丢 弃,在状态控制机电路的作用下,包发送电路不再对IPv6数据包存储器RAM进行任何操作。多路数据选择器A和多路数据选择器B也不进行任何操作。 跟在被丢弃数据包后面如果还有别的数据包,则状态控制机电路指示IPv6数 据包相关信息队列存储器FIFO接口电路和检索结果队列存储器FIFO接口电路提取下一 个数据包的转发信息,根据转发信息的标识按照上面所说的方式进行数据包的转发、上 交、丢弃处理。 7)只要第0个上交包队列存储器FIFO或第1个上交包队列存储器FIFO不空, 上交包发送电路就能轮流从不空的第0个上交包队列存储器FIFO和第1个上交包队列存 储器FIFO中读取数据包发送给SRAM双端口存储器,当SRAM双端口存储器中存储的 上交数据包字节数达到一定门槛值,或接收一个数据包后一段时间内没有收到新数据包 时,上交包发送电路就向CPU接口电路发送中断信号,并将上交数据包在双端口存储器 RAM中存储的起始地址、终止地址以及待传送数据的长度传送给CPU接口电路,CPU接 口电路将中断信号传送给CPU,如果CPU不忙,就对中断请求进行相应,启动上交包数 据传送,CPU接口电路将上交数据包从SRAM双端口存储器中读出来,再发送给CPU进 行处理。
权利要求
路由器中采用IPv6头封装IPv4包的隧道转发系统,其特征在于,含有一个集成于FPGA芯片上的隧道处理电路、SRAM单端口存储器、SRAM双端口存储器、CAM内容可寻址存储器以及CPU控制单元,其中所述的隧道处理电路,含有IP包输入接口电路、包过滤电路、包输入队列存储器FIFO、IPv6协议封装电路、IPv6包队列存储器FIFO、包相关信息提取电路、检索指令队列存储器FIFO、CAM控制电路、检索结果队列存储器FIFO、IPv6数据包相关信息队列存储器FIFO、IPv6数据包存储器RAM、包发送电路、CAM维护指令队列存储器FIFO、第0个上交包队列存储器FIFO、第1个上交包队列存储器FIFO、上交包发送电路、以及CPU接口电路,其中IP包输入接口电路,输入端接收上级物理和数据链路层处理电路输出的数据就绪信号和数据总线信号,输出读信号给上级物理和数据链路层处理电路,所述IP包输入接口电路数据输出端和包过滤电路的输入端相连,对输入输出的IPv4和IPv6包头信号和包尾信号分别进行计数,将包头包尾计数输出信号发送给CPU接口电路,并接收CPU接口电路输入的复位信号和计数器清零信号;包过滤电路,输入端和IP包输入接口电路相连,还分别和第0个上交包队列存储器FIFO、包输入队列存储器FIFO输出快满信号相连,输出端分别和第0个上交包队列存储器FIFO的输入端、包输入队列存储器FIFO的输入端相连,对输入输出的包头信号和包尾信号进行计数,并发送给CPU接口电路,同时接收CPU接口电路输入的复位信号和计数器清零信号;包输入队列存储器FIFO,是一个先进先出队列存储器,数据宽度为36位,输入端与上述包过滤电路的IP包输出端相连,读信号来自IPv6协议封装电路,复位信号来自CPU接口电路;IPv6协议封装电路,输入端和所述包输入队列存储器FIFO相连,输出端和IPv6包队列存储器FIFO相连,此外输入端还接收IPv6包队列存储器FIFO输出的快满信号,IPv6协议封装电路对输入输出的包头信号和包尾信号进行计数,并发送给CPU接口电路,同时接收CPU接口电路输入的复位信号和计数器清零信号;IPv6包队列存储器FIFO,是一个先进先出队列存储器,数据宽度为40位,数据输入端与上述IPv6协议封装电路相连,读输入信号和包相关信息提取电路的读输出相连,输出端和包相关信息提取电路相连,复位信号来自CPU接口电路;包相关信息提取电路,输入端和IPv6包队列存储器的输出端相连,输出端分别和检索指令队列存储FIFO、IPv6数据包存储器RAM、IPv6数据包相关信息队列存储器FIFO相连,对输入输出的包头信号和包尾信号进行计数,并发送给CPU接口电路,同时接收CPU接口电路输入的复位信号和计数器清零信号;检索指令队列存储器FIFO,是一个先进先出队列存储器,数据宽度为100位,数据输入端与上述包相关信息提取电路相连,读输入信号和CAM控制电路的读输出相连,数据输出端和CAM控制电路相连;CAM控制电路,输入端分别和检索指令队列存储器FIFO输出端、CAM维护指令队列存储器FIFO输出端相连,CAM控制电路输出的CAM存储器读写控制命令总线信号以及双向数据请求总线REQDATA信号和CAM存储器相连,CAM控制电路和SRAM单端口存储器的数据总线相连,CAM控制电路输入端还和CAM存储器输出的读确认信号、查找匹配信号、查找输出有效信号相连,CAM控制电路输出的检索信息输出端和检索结果队列存储器FIFO相连,此外CAM控制电路的读信号分别和检索指令队列存储器FIFO的读输入端、CAM维护指令队列存储器FIFO读输入端相连,CAM控制电路输出端和CPU接口电路相连,将路由表保存的表项发送给CPU接口电路,CAM控制电路对IPv6路由查询次数和查询命中的信息进行计数,将这些信息作为查询状态信息发送给CPU接口电路,并接收CPU接口电路输入的复位信号和计数器清零信号;检索结果队列存储器FIFO,是一个先进先出队列存储器,数据宽度为148位,数据输入端与CAM控制电路的输出相连,读输入信号和包发送电路的读输出相连,数据输出端和包发送电路的输入端相连;IPv6数据包相关信息队列存储器FIFO,是一个先进先出队列存储器,数据宽度为60位,数据输入端与上述包相关信息提取电路相连,读输入信号和包发送电路的读输出相连,数据输出端和包发送电路相连;CAM维护指令队列存储器FIFO,是一个先进先出队列存储器,数据宽度为90位,数据输入端和CPU接口电路相连,读输入信号和CAM控制电路输出的读信号相连,数据输出端和CAM控制电路的数据输入端相连;包发送电路,分别向检索结果队列存储器FIFO、IPv6数据包相关信息队列存储器FIFO发出读信号,并和检索结果队列存储器FIFO、IPv6数据包相关信息队列存储器FIFO的输出端相连,包发送电路输出的读信号、读地址和IPv6数据包存储器RAM相连,IPv6数据包存储器RAM的数据输出端和包发送电路相连,包发送电路的输出还和第1个上交包队列存储器FIFO以及FPGA片外的上行FIFO相连,包发送电路对输入输出的IPv4、IPv6包头信号和包尾信号分别进行计数,并发送给CPU接口电路,同时接收CPU接口电路输入的复位信号和计数器清零信号;IPv6数据包存储器RAM是一个双端口的FPGA片内读写存储器,有一个数据写入端口和一个数据输出端口,数据写入端口和包相关信息提取电路的IPv6数据输出端相连,读端口的所有信号和包发送电路相连,IPv6数据包存储器RAM数据宽度为36位,读写端口分别有14根地址线;第0个上交包队列存储器FIFO,是一个先进先出队列存储器,数据宽度为36位,数据输入端与上述包过滤电路相连,读输入信号和上交包发送电路的读输出相连,数据输出端和上交包发送电路相连;第1个上交包队列存储器FIFO,是一个先进先出队列存储器,数据宽度为36位,数据输入端与包发送电路相连,读输入信号和上交包发送电路的读输出相连,数据输出端和上交包发送电路相连;上交包发送电路,输入端和第0个上交包队列存储器FIFO、第1个上交包队列存储器FIFO相连,数据输出端和SRAM双端口存储器的数据输入端相连,上交包发送电路发送的CPU中断信号、SRAM双端口存储器数据起始地址和终止地址、SRAM双端口存储器中待传送数据的长度信号输出端和CPU接口电路相连,CPU接口电路将CPU响应信号输出给上交包发送电路的输入端,上交包发送电路对输入输出的IPv4、IPv6包头信号和包尾信号分别进行计数,并发送给CPU接口电路,同时接收CPU接口电路输入的复位信号和计数器清零信号;CPU接口电路,和由FPGA实现的隧道处理电路内部各个电路相连,接收各个电路输入的IPv4、IPv6输入输出包头信号和包尾信号计数,以及CAM控制电路的查询状态计数,CPU接口电路与FPGA片外CPU控制单元的CPU地址总线、数据总线、读写控制信号相连,输出的中断信号和CPU控制单元的中断输入相连,CPU接口电路还和SRAM双端口存储器数据输出端口的地址总线、数据总线、读写控制信号相连,CPU接口电路接收CPU控制单元输入的复位信号,并将复位信号传送给FPGA内的其它各个电路,将清零信号传送给IP包输入接口电路、包过滤电路、IPv6协议封装电路、包相关信息提取电路、CAM控制电路、上交包发送电路、包发送电路,CPU接口电路还和CAM维护指令队列存储器FIFO的数据输入端相连,接收CAM控制电路输出的路由表表项数据,接收上交包发送电路输出的SRAM双端口存储器数据起始地址和终止地址、SRAM双端口存储器中待传送数据的长度以及中断请求信息,也向上交包发送电路发送CPU中断响应指示信号;所述包过滤电路是一个电路组件,其中输入IP包数据寄存器,输入端和IP包输入接口电路的输出端相连;输入IP包数据寄存器的输出端分别和IPv4数据包寄存器、IPv6数据包寄存器相连;IPv4数据包寄存器的输出端分别和IPv4数据包延迟寄存器组、IPv4包头校验和寄存器、生存时间寄存器、包类型寄存器、状态控制机的输入端相连,同时也接收状态控制机的输出;IPv4数据包延迟寄存器组的输出端和数据选择器A的输入端相连;IPv4数据包头校验和生成器的输入端分别和IPv4头校验和寄存器输出、生存时间更新寄存器输出相连;生存时间寄存器的输出端和减一减法器A的输入端以及状态控制机的输入端相连,减一减法器A的输出端和生存时间更新寄存器的输入端相连,生存时间更新寄存器的输出端分别和IPv4数据包头校验和生成器、状态控制机相连;数据选择器A的输入端又分别和IPv4数据包延迟寄存器组的输出端、IPv4数据包头校验和生成器的输出端以及状态控制机的输出端相连,数据选择器A的输出端和更新后的IPv4数据包寄存器输入端相连;IPv6数据包寄存器的输出端分别和IPv6数据包延迟寄存器组、跳数寄存器、下一个头寄存器、IPv6目的地址寄存器、状态控制机的输入端相连,同时也接收状态控制机的输出;跳数寄存器的输出端和减一减法器B的输入端相连以及状态控制机相连,跳数更新寄存器的输出端还和状态控制机相连;减一减法器B的输出端和跳数更新寄存器的输入端相连;数据选择器B的输入端分别和IPv6数据包延迟寄存器组、跳数更新寄存器、状态控制机的输出端相连,数据选择器B的输出端和更新后的IPv6数据包寄存器输入端相连;下一个头寄存器的输入端和IPv6数据包寄存器的输出端相连,输出端和状态控制机相连;IPv6目的地址寄存器的输出端和比较器的输入端相连,比较器的另一个输入端和本路由器IPv6地址寄存器输出端相连;比较器的输出端和状态控制机的输入端相连;本路由器IPv6地址寄存器输入端和CPU接口电路的输出相连;数据选择器C的输入端分别和更新后的IPv4数据包寄存器、更新后的IPv6数据包寄存器的输出端相连、状态控制机以及包输入队列存储器FIFO的快满信号相连,数据选择器C的输出端分别和第0个上交包队列存储器FIFO、包输入队列存储器FIFO相连,同时数据选择器C的包头信号和包尾信号输出端也和计数器的输入端相连;计数器接收CPU接口电路输出的计数器清零信号,并将包头包尾信号计数信号传送给CPU接口电路的输入端;所述IPv6协议封装电路是一个电路组件,其中包输入队列存储器FIFO接口电路,数据输入端和包输入队列存储器FIFO的数据输出端相连,输出的读信号和包输入队列存储器FIFO的读输入信号相连,控制输入输出端和状态控制机电路相连;IPv4包头数据寄存器,输入端和包输入队列存储器FIFO接口电路输出端以及状态控制机电路输出端相连,一个输出端和IPv4包头转IPv6隧道包头电路相连,另一个输出端和多路数据选择器电路输入端相连;IPv4负载数据寄存器,输入端和包输入队列存储器FIFO接口电路输出端相连,输出端和多路数据选择器电路输入端相连;IPv6数据寄存器,输入端和包输入队列存储器FIFO接口电路的输出端相连,输出端和多路数据选择器电路输入端相连;IPv6隧道包头数据寄存器,输入端和IPv4包头转IPv6隧道包头电路以及状态控制机电路相连,输出端和多路数据选择器电路相连;多路数据选择器电路的输出端和IPv6包队列存储器FIFO的输入端相连;包输入队列存储器FIFO接口电路将接收的数据包头信号和尾信号发送给计数器电路,多路数据选择器电路也把输出的数据包头、包尾信号传送给计数器电路,计数器电路输出的输入输出包头包尾信号计数和CPU接口电路的状态计数器值输入端相连,同时接收CPU接口电路输入的计数器清零信号;所述包相关信息提取电路是一个电路组件,由一系列的电路组成IPv6包队列存储器接口电路,所述数据输入端和IPv6包队列存储器FIFO相连,输出的读信号和IPv6包队列存储器FIFO的读输入信号相连,控制输入输出端和状态控制机电路相连,输出端和包上交标识寄存器、包优先级寄存器、包源端口编号寄存器、包起始地址寄存器、包终止地址寄存器、包序列号寄存器、包目的地址寄存器、隧道标识寄存器以及包写入RAM电路相连;IPv6包信息发送电路的输入端和所述包上交标识寄存器、包优先级寄存器、包起始地址寄存器、包源端口编号寄存器、包终止地址寄存器、包序列号寄存器相连,控制信息来自于状态控制机,输出端接IPv6数据包相关信息队列存储器FIFO;检索指令发送电路的输入端和包序列号寄存器、包目的地址寄存器、隧道标识寄存器相连,输出端和检索指令队列存储器FIFO相连,控制输入端和状态控制机相连;包写入RAM电路的输出端和IPv6数据包存储器RAM相连,它的控制输入端和状态控制机相连;计数器的输入端分别和IPv6包队列存储器FIFO接口电路的输入包头信号以及输入包尾信号相连,还和包写入RAM电路输出的包头信号和包尾信号相连,同时也和CPU接口电路输入的计数器清零信号相连,输出的包头尾信号计数和CPU接口电路相连;所述CAM控制电路是一个电路组件,由一系列的电路组成检索指令队列存储器FIFO接口电路的数据输入端和检索指令队列存储器FIFO输出端相连,输出的读信号和检索指令队列存储器FIFO的读信号相连,并且输出端也和状态控制机互连,接收状态控制机输出的控制信号;CAM写入数据寄存器的输入端和检索指令队列存储器FIFO接口电路、以及CAM维护指令队列存储器FIFO接口电路的输出端相连,输出端和CAM数据总线读写控制电路相连;CAM操作指令发送电路的输入端和检索指令队列存储器FIFO接口电路的输出端、CAM维护指令队列存储器FIFO接口电路的输出端相连,输出端直接和CAM存储器的命令总线INST、LTIN、SEGSEL、GMASK、CRB和请求选通信号REQSTB相连;SRAM写入数据寄存器的输入端和CAM维护指令队列存储器FIFO接口电路输出端,以及检索指令队列存储器FIFO接口电路的输出端相连,输出端和SRAM数据总线读写控制电路输入端相连;SRAM数据总线读写控制电路的输出端和SRAM读出数据寄存器、检索结果寄存器以及SRAM单端口存储器相连,控制信号输入端和状态机输出相连;CPU读出数据寄存器的输入端和CAM读出数据寄存器的输出端、SRAM读出数据寄存器的输出端相连,输出端和CPU接口电路相连;检索结果寄存器的输入端和数据包序列号寄存器的输出端相连,输出端和检索结果队列存储器FIFO相连;数据包序列号寄存器的输入端和检索指令队列存储器FIFO接口电路的输出端以及状态控制机的输出端相连;计数器的输入端和检索结果寄存器的输出端相连,还和CPU接口电路输入的计算器清零信号相连,它输出的查询状态计数输出和CPU接口电路相连;所述包发送电路是一个电路组件,由一系列的电路组成IPv6数据包相关信息队列存储器FIFO接口电路,数据输入端和IPv6数据包相关信息队列存储器FIFO的输出端相连,控制输入和输出端与状态机控制电路相连,输出的读信号和IPv6数据包相关信息队列存储器FIFO读输入端相连,输出端分别和包存储起始地址寄存器、包存储终止地址寄存器、包长度寄存器、包优先级寄存器、源端口编号寄存器、包序列号寄存器A的输入端相连;检索结果队列存储器FIFO接口电路,数据输入端和检索结果队列存储器FIFO的输出相连,控制输入和输出端与状态机控制电路相连,输出端分别和包序列号寄存器B、目的端口编号寄存器、目的线卡编号寄存器、下一跳IPv6地址寄存器、下一跳IPv4地址寄存器、隧道IPv6目的地址寄存器的输入端相连;位宽为36位的附加数据寄存器组的输入端分别和包优先级寄存器、包长度寄存器、源端口编号寄存器、源线卡编号寄存器、目的端口编号寄存器、目的线卡编号寄存器、下一跳IPv6地址寄存器、下一跳IPv4地址寄存器、隧道IPv6目的地址寄存器的数据输出端相连;源线卡编号寄存器的输入来自CPU接口电路;增10加法器,输入端和包存储起始地址的输出相连,输出端与地址寄存器A相连;地址寄存器B的输入端和包存储起始地址的输出相连;增1加法器的输出端分别和IPv6数据包存储器读地址寄存器的输出端、地址寄存器C的输入端相连;多路数据选择器A,输入端分别和地址寄存器A、地址寄存器B、地址寄存器C相连,控制输入端和状态机控制电路的输出相连,输出端和IPv6数据包存储器读地址寄存器的输入端相连;数据比较器A,输入端和包存储终止地址寄存器的输出端以及IPv6数据包存储器读地址寄存器的输出端相连,输出端和状态机控制电路的输入端相连;位宽为36位的IP数据寄存器,输入端和IPv6数据包存储器RAM的数据输出端相连,输出端和多路数据选择器B的输入端相连;多路数据选择器B,数据输入端分别和位宽为36位的附加数据寄存器组的输出端、位宽为36位的IP数据寄存器的输出端相连,输出端和上交数据包寄存器、带附加数据的IPv4或IPv6数据包寄存器的输入端相连;上交数据包寄存器的输出端和第1个上交包队列存储器FIFO的输入端相连;带附加数据的IPv4或IPv6包寄存器的输出端发往与FPGA相连的上行FIFO;带附加数据的IPv4或IPv6包寄存器的还将发送的数据包头信号和包尾信号分别传送给计数器,计数器还和CPU接口电路输入的计数器清零信号相连,计数器输出的包头包尾信号计数信号发送给CPU接口电路;所述CAM存储器,是系统的FPGA片外存储器,读写控制命令总线信号以及数据请求总线REQDATA信号来自CAM控制电路,输出的地址总线信号和读写信号分别与SRAM单端口存储器的地址总线和读写信号相连,输出的读确认信号、查找匹配信号、查找输出有效信号和CAM控制电路输入端相连;所述SRAM单端口存储器,是系统的FPGA片外静态SRAM存储器,读写输入信号和地址信号来自CAM存储器的输出,数据输入输出端和CAM控制电路相连;所述SRAM双端口存储器,是系统的FPGA片外静态双端口SRAM存储器,分为数据写入端口和数据输出端口,数据写入端口的双向数据总线和上交包发送电路相连,数据写入端口的读写信号线、地址总线和上交包发送电路的输出端相连,数据输出端口的双向数据总线和CPU接口电路相连,数据输出端口的读写信号线、地址总线和CPU接口电路的输出端相连。
2. 根据权利要求1所述的路由器中采用IPv6头封装IPv4包的隧道转发系统,其 特征在于所述的CAM由两片IDT75k62100芯片构成,SRAM单端口存储器由两片 IDT71T75602芯片构成。
3. 根据权利要求1所述的路由器中采用IPv6头封装IPv4包的隧道转发系统,其特征 在于FPGA和片外的CPU控制单元相连。
4. 根据权利要求1所述的路由器中采用IPv6头封装IPv4包的隧道转发系统,SRAM 双端口存储器由一片CY7C1300A芯片构成。
5. 根据权利要求1所述的路由器中采用IPv6头封装IPv4包的隧道转发系统,FPGA 和外围芯片采用同一个主时钟CLK进行工作,IDT75k62100和FPGA共用一个主时钟 CLK,两片IDT71T75602的工作频率为CLK/2,该CLK/2和主CLK的时钟源相同,是 CLK主时钟经二分频得到的。
全文摘要
路由器中采用IPv6头封装IPv4包的隧道转发系统属于IPv6路由器技术领域,其特征在于,它由一片FPGA实现的隧道处理电路和两片级联的CAM、两片单端口SRAM和一片双端口SRAM及CPU控制单元构成,最大支持64K*288bits的V6路由表项,时钟频率为100MHZ时,保证3.2Gbit/s的线速转发。利用CAM构造路由查找表,支持表项条数的动态分配,同时还负责路由表读写及维护。系统接收的IP数据包若是V4包,给V4包加一个V6包头成为V6隧道包;若是V6数据包,就不转换。然后提取包的查找信息,进行路由查找,根据返回的结果,对包进行处理按照V4或V6转发、上交CPU处理、丢弃。
文档编号H04L12/46GK101692647SQ20091009353
公开日2010年4月7日 申请日期2009年10月12日 优先权日2009年10月12日
发明者全成斌, 徐明伟, 杨珂, 赵有健, 陈文龙 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1