基于NetFPGA的可编程路由器的制作方法

文档序号:7869037阅读:957来源:国知局
专利名称:基于NetFPGA的可编程路由器的制作方法
技术领域
本发明涉及可编程扩展的路由技术,具体是基于NetFPGA的可编程路由器,并可高效转发数据包。
背景技术
经过四十多年的发展,现有的TPC/IP体系结构无法适应不断进步的信息通信技术与持续业务创新的要求,迫使人们重新研究未来互联网的体系结构及其机理。未来网络研究旨在从互联网基本组成、工作原理和实现机理方面进行理论和方法·探索和算法设计。未来网络体系结构、协议、算法等在实际应用前需要大量的理论分析与仿真实验,需要在试验网络体系结构中进行评估与验证。但由于传统路由器封闭性,在现有互联网部署与验证新体系结构、新协议、算法十分困难。路由器作为网络核心设备,其可编程性、可重构性、可管理性等方面变得更加重要。可编程路由器允许用户进行配置或编程,在一个实际物理网络上快速部署新的体系结构与协议栈,这样可以有效解决传统路由器部署协议难的问题。其在灵活性、动态性、可扩展性、可管理性及可编程性等方面显示出极大的优势和远景。可编程路由器不仅具有路由器转发功能,而且具备可定制性。通过简单的编程配置,即可运行一种新协议,由此可对协议进行验证。与传统路由器类似,其包括控制平面、转发平面,控制平面负责路由计算、路由表维护、路由管理等,转发平面使用NetFPGA快速转发数据包。目前,与本发明最接近的是一种可编程路由器,使用Click和XORP实现。XORP旨在解决商业路由器的封闭性,提供一个开放的、可扩展的路由器软件平台,方便研究者部署和实现路由协议。Click是一个针对路由器数据平面的模块化可编程平台,其目的是在数据平面上实现灵活的功能配置和模块的可重用性。路由器在整体实现上,控制平面采用XORP完成路由计算、路由表维护等功能,而Click主要完成数据平面的协议栈处理、数据包查找与转发等功能。不足之处是,该路由器仍基于TCP/IP协议实现,对非IP协议处理能力有限。为方便新协议的试验,需要支持非IP协议,摆脱TCP/IP的束缚。另外,Click的实现方式,决定了其对数据包的转发只是软件层面的转发,决定了其转发性能相对硬件形式不高。新协议的验证需要生产环境,需要相对较高的转发性能。

发明内容
针对现有技术的上述不足,本发明公开了一种新型的可编程路由器,不仅可以支持IP隧道形式实现新协议、新扩展,而且支持验证未来网络的Clean-Slate思想,支持部署非IP协议。此外还提供一种较高的转发性能,用于协议、算法、体系结构的验证。本发明涉及一种基于NetFPGA的可编程路由器,包括控制平面和转发平面。其中控制平面包括Wffff-模式模块、CLI-模式模块、管理代理模块、可编程接口模块和通信控制模块。
WWW-模式模块,用于提供web管理服务,通过web方式完成对路由器的信息查看和配置WffW-模式模块。为用户提供web管理界面,使用户可以通过此界面配置新协议、配置路由器端口 MAC地址、查看逻辑转发表、查看路由器流量状态等信息。
CLI-模式模块,用于提供telnet服务,为用户提供一个telnet命令行接口界面, 使用户可以通过命令行为方式对路由器进行管理配置。
管理代理模块,用于提供Wffff-模式服务与CLI-模式服务的底层数据支持,创建代表路由器当前状态的全局变量,将WffW-模式服务与CLI-模式服务注册到全局变量的管理命令链表,以方便扩展新功能;接收用户命令,并将命令解释为实际可执行的函数,读取可编程路由器当前逻辑转发表、数据包收发状态等信息。全局变量包括路由器当前流量状态、 映射转发表链表、协议识别、端口信息、管理命令链表以及用户自定义的变量。
可编程接口模块,用于提供用户自定义模块的接口,包括映射转发表(Map Forward Information Table)接口,在映射转发表发生变化时更新硬件(NetFPGA)中的映射转发表;和数据包处理函数接口(packet_handler),用户完成自定义数据包处理,注册用户自定义的数据包处理函数,完成自定义的初始化;该模块通过使用统一的MFIT (映射转发表)机制兼容各种新协议,(如图4所示)其中MFIT的表项为标准地址SA(standard address)、下一跳地址 MAC address、待转发的端口( interface)。SA (standard address) 为新协议目的地址经过哈希计算后所形成的定长逻辑地址,MAC address为下一跳的MAC 地址,interface为下一跳的接口。通过注册用户自定义的数据包处理函数(packet_ handler)实现逻辑映射表的维护及异常数据包的处理。用户实现自定义的初始化代码,注册为路由器系统中的uSer_init,由系统初始化时调用。用户可以增加自定义功能命令,注册到路由器的命令链表中,增加了系统的开放性。
通信控制模块,用于提供控制平面与转发平面进行交互的接口函数,接收转发平面发送上来的数据包时调用数据包处理函数接口,调用已注册的用户自定义的数据包处理函数;控制平面向转发平面发送数据包时,以Iibnet库实现数据包发送接口,将用户自定义的数据包封装成以太网数据包发送。该模块的交互信息有两种数据流与控制信息流。 数据流包括路由数据包和异常数据包;控制信息流包括转发表数据、寄存器初始化及配置数据。通信控制模块屏蔽了底层硬件,采用Iibnet库(小型接口函数库,提供低层网络数据包的构造、处理和发送功能)构造数据包进行发送,使用Iibpcap库(网络数据包捕获函数库)监听接收数据,通过ioctl函数实现对寄存器的配置与读取。
转发平面采用NetFPGA完成转发数据包。NetFPGA标准路由器UDP (用户数据通道)主要包括输入判决模块、输出端口查询模块、输出队列模块。其中输出端口查询模块改写为上述映射转发表查找模块,首先将待转发的数据包目的地址进行哈希计算,然后在映射转发表中查找相应表项,如果没有则将该数据包上传控制平面处理,如果有则根据表项修改包头MAC地址,加入相应端口转发队列。
转发平面接收到数据包,首先根据用户在协议识别中设置的新协议识别标识判断出该数据包是否为新协议,如果不是则上传至控制平面处理,如果是则根据设置的新协议的逻辑目的地址起始位置、逻辑目的地址长度取出目的地址,采用哈希算法转换为定长8 字节的标准地址,查找映射转发表,未找到相应项则上传至控制平面处理,根据查找到的目的下一跳地址、待转发的端口,修改数据包目的下一跳地址,并送到相应下一跳待转 发端口输出队列。
本发明主要采用映射转发表MFIT机制与注册数据包处理函数实现其对新协议的可扩展性支持,采用NetFPGA可编程硬件实现数据包的高效转发。在既保证可编程性的同时又具备较高的性能,符合未来网络试验床的要求,方便验证各种新协议。同时提供了良好的交互界面,包括web管理界面与telnet命令行模式,用户可以查看当前流量状态、转发表信息,方便进行管理配置。
本发明的基于NetFPGA的可编程路由器与传统的可编程路由器比较,具有以下优占-^ \\\ ·将传统封闭的路由流程开放出来,用户自定义数据包处理函数。
提供了 web管理及telnet管理,用户可在此基础上进行二次开发,丰富路由器管理功能。
提供统一的映射转发表MFIT,结构上更简单,利于快速转发。
转发平面基于NetFPGA实现,具备更高的转发性能,传统的可编程路由器都为软件路由器,转发性能不高。
基于二层MAC协议,可验证三层网络协议,更利于新的网络体系架构的验证,传统的可编程路由器基于IP协议,一般采用IP隧道的方式验证其它协议,实现方式复杂。
该基于NetFPGA的可编程路由器可作为未来网络试验床的重要组成部分,应用于新的网络体系架构的验证,新协议、新扩展的研究。


图I为可编程路由器体系结构; 图2为WffW-模式模块实现流程图;图3为CLI-模式模块实现流程图;图4为映射转发表MFIT项格式;图5为可编程路由器工作流程图。
具体实施方式
如图I所示为可编程路由器体系结构示意图,该系统主要由以下模块组成 WWW-模式模块、CLI-模式模块、管理代理模块、可编程接口模块、通信控制模块、转发平面的NetFPGA板卡。
①WffW-模式模块,该模块提供web管理界面,使用户可以通过此界面配置新协议、 配置路由器端口 MAC地址、查看转发表信息、查看路由器流量状态等信息。首先创建服务端套接字,监听8080端口,当接收到请求时就将产生的客户端套接字压入www请求任务队列。 同时创建了一个容量为10的线程池,使用该线程池处理www请求,降低服务器消耗。如图2 示,www请求处理线程首先获取任务队列线程互斥锁,然后检查队列中是否存在未处理的请求。如果没有则释放线程互斥锁退出,循环等待再次进入检查。如果有,则摘取一个任务, 释放线程互斥锁对该请求进行下一步操作。检查该请求是否为标准HTTP格式,接收数据, 获取用户请求的url及参数信息。
针对用户提交的url进行检测,有四种处理结果。请求列表,即用户请求当前支持的所有命令,查询全局变量中注册的命令列表,文本方式返回。查看状态,查询路由器全局变量中流量信息,文本方式返回数据,该流量信息由一个状态线程实时维护。运行命令,即用户输入的配置命令、查看命令,首先字符串匹配全局变量中已注册的命令,返回命令处理句柄,向句柄传入用户输入的参数,进行相应函数处理,处理结束后,返回结果。对于其它不识别的urI,统一返回路由器首页信息。②CLI-模式模块,该模块提供一个telnet命令行接口界面,使用户可以简单高效的操作路由器,从而对路由器进行管理配置。如图3示,首先创建套接字,监听23端口,接收到连接请求时则将套接字传递给子线程处理。将接收到的请求内容过滤掉换行、回车等无意义字符后,在系统已注册的命令中进行匹配操作,查找到处理句柄后,调用相关函数处理,返回结果。③管理代理模块,该模块提供Wffff模式服务与CLI模式服务底层命令数据支持。创建并维护一个全局的结构体变量current_state,该结构体涉及路由器当前所有状态信息,主要包括流量状态、映射转发表链表、协议识别、端口信息、管理命令链表以及用户自定义部分,如数据包处理句柄。该模块将web管理及telnet管理用到的命令注册在current_state管理命令链表中,接收用户命令,进行链表遍历,查找到相应命令句柄进行处理。支持的命令有
流量状态输出该命令读取current_state中流量状态结构体,以文本形式返回给请求者。包括四个端口的接收发送字节数、接收发送数据包数、由于队列满丢弃的数据包数、由于校验失败丢弃的数据包数。同时与该功能配合工作的有一流量状态线程,该线程为守护线程,在系统初始化时启动,其功能在于通过通信控制模块提供的寄存器读接口实时读取NetFPGA相关状态寄存器的值,即接收发送字节数等信息,将数据存放在current_State的流量状态成员中。映射转发表输出读取current_state输出映射转发表的各项信息,返回调用。静态映射转发表配置添加删除映射转发表的静态项,添加时将逻辑目的地址转换为standard address后,写入current_state映射转发表。由守护线程监测到变化后写入NetFPGA硬件。协议识别配置配置新协议识别标识、逻辑目的地址起始位置、逻辑目的地址长度,写入current_state结构体。调用通信控制模块提供的寄存器读写接口,写入NetFPGA硬件。端口信息输出读取current_state输出四个端口的MAC地址、逻辑地址。端口信息配置配置四个端口的MAC地址、逻辑地址,写入current_state结构体。调用通信控制模块提供的寄存器读写接口,写入NetFPGA硬件。此外,用户可根据需要实现自定义的命令函数,注册入管理命令链表,即可为路由器增加新功能。④可编程接口模块主要用于与用户自定义模块对接。本发明提供映射转发表(MapForward Information Base)机制,将非IP协议及IP协议在运行时维护的路由表转换为标准格式的映射转发表,转发平面在转发时只需查找映射转发表,根据表项修改头部目的MAC地址、源MAC地址,送入相应端口发送队列。映射转发表MFIT,如图 4 所不,其结构为 standard address、mac、interface。其中standard address为数据包目的逻辑地址经过哈希映射后的值,8字节;mac为待转发的目的mac地址,6字节interface为待转发的端口,I字节。用户可以实现类似传统路由器中的路由表、ARP表,然后将两者相应表项处理生成MFIT,只是在生成SA时必须经过系统提供的哈希函数对新协议定义的逻辑地址进行映射。 默认状态下,数据包处理函数不会对接收的数据包作任何处理,此处完全对用户开放,需要用户自定义适应新协议的数据包处理函数,并注册在current_state中的packet_handler。使用一个数据包守护线程,当接收到新的数据包时,调用packet_handler进行处理。用户实现维护current_State中MFIT的必要代码,根据需要对接收到的数据包进行相关操作。此外,异常数据包的处理,也在这里实现。用户实现自定义的初始化代码,注册为current_state中的user_init,由系统初始化时统一调用。用户可以实现一些自定义的功能命令,注册在管理命令链表中,即可在管理路由器时调用。⑤通信控制模块主要提供上层软件与NetFPGA板卡进行交互的接口函数。包括两类函数,数据包的接收与发送,控制信息的读取与配置。数据包接收采用Iibpcap库监听实现,Iibpcap捕获以太网数据包,调用packet_handler进行下一步处理;数据包发送提供发送以太网数据的接口,用户将构造好的二层以上的数据包传入,然后使用Iibnet库构造以太网数据包进行发送。控制信息的读取与配置,使用ioctl实现,通过控制NetFPGA标准驱动,实现PCI总线通信,DMA数据传输。⑥硬件转发平面基于NetFPGA实现,使用NetFPGA高效转发数据包。该部分在NetFPGA标准路由器的基础上修改了转发模块部分。NetFPGA标准路由器UDP主要包括input_arbiter 模块、output_port_lookup 模块、oq_queues 模块。修改 output_port_lookup模块写为上述映射转发表查找模块。其在处理以太网数据包时,首先根据用户在协议识别配置命令中设置的新协议识别标识判断出该数据包是否为新协议,否则上传至控制平面处理。如果为新协议则根据配置的新协议的逻辑目的地址起始位置、逻辑目的地址长度取出目的地址,经哈希算法转换为定长8字节的SA,查找映射转发表,未找到相应项则上传至控制平面处理。根据查找到的目的MAC、interface,修改数据包目的MAC地址,并送到相应下一跳端口输出队列。图5所示为可编程路由器系统的初始化过程,详细步骤如下
I.建立全局变量current_State,进行初始化,包括建立线程锁、映射转发表、路由状态、协议识别、端口信息、管理命令链表等。初始化管理代理,即注册系统命令到命令链表,这些命令可以通过web方式或telnet方式调用。2.初始化硬件,读取配置文件,配置四个端口的MAC地址,配置映射转发表。该配置文件可以由用户在系统启动前更改。进入用户自定义部分,调用usr_init句柄,该函数由用户实现并注册在全局变量current_state中,初始化自定义的结构体及启动一些必要的线程。3.依次启动一系列守护线程创建状态守护线程,用于实时更新路由器各端口的流量信息;创建映射转发表守护线程,用于实时更新路由器的映射转发表信息;创建数据包接收线程,接收发送到软件层处理的数据包,调用用户注册的packet_handler处理;仓1|建WWW线程,即提供WWW-mode服务,等待用户连接,并处理连接请求;创建CLI线程,即提供CLI-mode服务,等待用户连接,并处理用户输入的命令。
权利要求
1.基于NetFPGA的可编程路由器,其特征在于包括控制平面和转发平面,所述转发平面采用NetFPGA完成转发数据包,所述控制平面包括 Wffff-模式模块,用于提供web管理服务,通过web方式完成对路由器的信息查看和配置WWW-模式模块; CLI-模式模块,用于提供telnet服务,使用户可以通过命令行为方式对路由器进行管理配置; 管理代理模块,用于提供WWW-模式服务与CLI-模式服务的底层数据支持,创建代表路由器当前状态的全局变量,将Wffff-模式服务与CLI-模式服务注册到全局变量的管理命令链表,以方便扩展新功能; 可编程接口模块,用于提供用户自定义模块的接口,包括映射转发表接口,在映射转发表发生变化时更新硬件中的映射转发表;和数据包处理函数接口,用户完成自定义数据包处理,注册用户自定义的数据包处理函数,完成自定义的初始化; 通信控制模块,用于提供控制平面与转发平面进行交互的接口函数,接收转发平面发送上来的数据包时调用数据包处理函数接口,调用已注册的用户自定义的数据包处理函数;控制平面向转发平面发送数据包时,以Iibnet库实现数据包发送接口,将用户自定义的数据包封装成以太网数据包发送。
2.根据权利要求I所述基于NetFPGA的可编程路由器,其特征在于所述映射转发表包括标准地址、下一跳地址、待转发的端口。
3.根据权利要求I所述基于NetFPGA的可编程路由器,其特征在于所述全局变量包括路由器当前流量状态、映射转发表链表、协议识别、端口信息、管理命令链表以及用户自定义的变量。
4.根据权利要求I或3所述基于NetFPGA的可编程路由器,其特征在于所述转发平面接收到数据包,首先根据用户在协议识别中设置的新协议识别标识判断出该数据包是否为新协议,如果不是则上传至控制平面处理,如果是则根据设置的新协议的逻辑目的地址起始位置、逻辑目的地址长度取出目的地址,采用哈希算法转换为定长8字节的标准地址,查找映射转发表,未找到相应项则上传至控制平面处理,根据查找到的目的下一跳地址、待转发的端口,修改数据包目的下一跳地址,并送到相应下一跳待转发端口输出队列。
全文摘要
本发明公开了一种基于NetFPGA的可编程路由器,涉及到计算机网络技术。包括WWW-模式模块、CLI-模式模块、管理代理模块、可编程接口模块、通信控制模块、转发平面的NetFPGA板卡。该可编程路由器开放编程接口,用户可自定义实现路由协议及更上层协议,不局限于IP隧道方式,提供统一的映射转发表格式;允许用户自定义数据包处理过程;提供了web、telnet管理方式,用户可自定义增加功能命令;基于NetFPGA的实现方式保证了路由器较高的转发性能。该基于NetFPGA的可编程路由器可作为未来网络试验床的重要组成部分,应用于新的网络体系架构的验证,新协议、新扩展的研究。
文档编号H04L12/741GK102984075SQ20121054711
公开日2013年3月20日 申请日期2012年12月17日 优先权日2012年12月17日
发明者唐红, 张健, 徐川, 赵国锋 申请人:重庆邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1