[发明专利]一种基于比特粒度可编程的路由器及路由方法有效
申请号: | 201210324804.8 | 申请日: | 2012-09-04 |
公开(公告)号: | CN103685041B | 公开(公告)日: | 2017-04-19 |
发明(设计)人: | 刘中金;李勇;杨懋;苏厉;金德鹏;曾烈光 | 申请(专利权)人: | 清华大学 |
主分类号: | H04L12/771 | 分类号: | H04L12/771 |
代理公司: | 北京路浩知识产权代理有限公司11002 | 代理人: | 王莹 |
地址: | 100084 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 比特 粒度 可编程 路由器 路由 方法 | ||
1.一种可编程虚拟路由器,其特征在于包括可编程硬件板卡、总线以及主机,所述硬件板卡通过所述总线与所述主机相连接,通过所述可编程硬件板卡实现比特粒度可编程的数据平面结构,所述数据平面结构支持数据包中任意比特的提取,支持在跨总线长度的边界部分任意比特长度的组合,从而数据包中任意域被进行提取组合,通过多流水线的设计实现多个虚拟路由器;所述主机用于实现虚拟的控制平面,所述虚拟的控制平面与可编程硬件板卡中的多个虚拟路由器动态地连接来形成映射关系;
其中,所述可编程硬件板卡输出的端口判断是在包头处理完毕后才能决定,而此时的总线数据已经没有了包头的数据,需要包头的数据在FIFO中缓存以供输出。
2.如权利要求1中所述的可编程虚拟路由器,其特征还在于,所述可编程硬件板卡包括:
多个输入端口,用于输入数据包,每个输入端口对应有各自的输入队列;
输入仲裁模块,用于以轮询或加权轮询的方式分流数据包到各个数据处理单元;
多个数据处理单元,用于提取数据包的对应时序比特位,并处理固定位宽的数据;
转发单元,用于进行编程定制转发。
3.如权利要求1中所述的可编程虚拟路由器,其特征还在于,所述可编程硬件板卡为FPGA板卡。
4.如权利要求2中所述的可编程虚拟路由器,其特征还在于所述可编程硬件板卡还包括交换单元,用于在数据包通过转发单元确定转发端口后,对确定转发端口的数据包再选择输出端口。
5.如权利要求4中所述的可编程虚拟路由器,所述输入端口和输出端口在网口和总线接口中进行选择。
6.如权利要求4中所述的可编程虚拟路由器,其特征还在于:所述多个数据处理单元结构相同,而且相互级联。
7.一种可编程的路由方法,其特征在于,该方法包括下列步骤:
1)利用可编程硬件板卡实现比特粒度可编程的数据平面结构,所述数据平面结构支持数据包中任意比特的提取,支持在跨总线长度的边界部分任意比特长度的组合,从而数据包中任意域被进行提取组合;
2)实现虚拟的控制平面,所述虚拟的控制平面与可编程硬件板卡中的多个虚拟路由器动态地连接来形成映射关系;
3)通过所述控制平面,对数据平面进行配置和编程;
其中,在包头处理完毕后利用所述可编程硬件板卡决定输出的端口,此时的总线数据已经没有了包头的数据,需要包头的数据在FIFO中缓存以供输出。
8.如权利要求7所述的可编程的路由方法,其特征还在于:所述控制平面还用于生成多个虚拟机来运行不同的控制平面协议,虚拟机的端口和可编程硬件板卡中的多个虚拟路由器动态地连接来形成映射关系。
9.如权利要求7所述的可编程的路由方法,所述步骤1)进一步包括:
10)通过输入端口输入数据包,每个输入端口对应有各自的输入队列;
11)以轮询或加权轮询的方式分流数据包到各个数据处理单元;
12)利用所述数据处理单元提取数据包的对应时序比特位,并处理固定位宽的数据;
13)利用转发单元进行编程定制转发。
10.如权利要求9所述的可编程的路由方法,所述步骤13)进一步包括:
131)用户通过编程接口定义数据包的格式和数据域处理方式;
132)采用统一定义的可扩展流水线结构来处理数据包的各个数据域,采用将条件表达式映射到TCAM的编程方案来实现转发的可编程控制;
133)通过用户设定的规则来选择控制的内部的处理功能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210324804.8/1.html,转载请声明来源钻瓜专利网。