基于FPGA的高效无线转发装置及方法与流程

文档序号:13739194阅读:455来源:国知局
基于FPGA的高效无线转发装置及方法与流程

本发明涉及分组转发技术,具体涉及一种基于fpga的高效无线转发装置及方法。



背景技术:

在移动自组织无线网络中,每个节点既是接收者又是转发者。当接收器收到一个分组时,它将经过接收信道解码,最后送入基带,在基带再进行解帧处理,以后送往协议栈的高层交给路由模块,路由模块进行路由表的查找以后再决定该分组的下一跳应该发送给谁,然后这个分组将会被附加上下一跳的链路层地址,再送给发送模块,发送模块进行编码进行调制,最后再发送出去。这个接收,解帧,查路由,再封帧,再转发的过程花费很多的时间,导致分组在每一跳处理的时间较长。

现有的移动自组织网络节点一般都只有一个无线网络接口,它在收到一个分组以后,将进行解调进行解码,再重新组帧以后,根据帧的目的地址判断这个分组是否是送往本地的,如果是的,则送往高层。如果不是,则送给路由协议模块进行选路,以确定下一条的链路层地址。尽管现在大多数无线接收板卡,在内部基带处理模块都配有fpga模块,但是其功能主要用于编解码,没有分组转发功能。这个过程涉及多次的分组拷贝以及查表然后转发等功能需要消耗较长时间。

在有线网络中,高速的数据转发大多都已被硬件实现,可以采用网络处理器(networkcontrolprocessor)等高级处理芯片,分组转发所需的转发表都写入高速网络处理器中,网络处理器可以直接对数据进行解帧查路由转发的功能,速度很快,效率很高。

传统的接收、解码、组帧、查表、再组帧、再编码、发送的流程需要处理的流程长,分组的拷贝次数多,整个分组从接收到发送的耗时长,一般需要近1ms的处理时间,具体时间取决于处理器速度及帧长度,编解码复杂度等。加上无线传输的时间和在空间传播信号的时间,从而导致端到端分组传输时延较长。

发明专利cn201210282888.3公开了一种无线接入点的控制和配置报文快速转发系统,包括:以太网交换芯片;广域网(wan)端口;现场可编程门阵列(fpga)单元,用于从以太网交换芯片或wan端口接收报文,并从哈希表中查找与报文的五元组相应的表项,如果未查找到相应的表项,则将报文发送到处理器单元,随后从处理器单元接收封装的报文并发送到以太网交换芯片单元或wan端口,并在哈希表中建立与封装的报文的五元组相应的新的表项,如果查找到相应的表项,则根据查找到的表项对报文进行封装,并将封装的报文发送到以太网交换芯片单元或wan端口;处理器单元,用于对fpga单元发送的报文进行封装,并将封装的报文发送到fpga单元。该专利申请查表放在哈希表中,并且进行的是常规分组转发交换,并不是用于移动无线自组织网的节点分组转发交换。

发明专利cn201610255096.5公开了一种基于arm+fpga架构的列车以太网交换机,但是没有考虑无线相同端口快速接收,更换mac头,快速转发的需求。



技术实现要素:

本发明的目的在于提供一种基于fpga的高效无线转发装置及方法。

实现本发明目的的技术方案为:一种基于fpga的高效无线转发装置,包括:

协议栈,用于实现ip分组的网络层以上的协议处理;

路由模块,用于运行移动自组织网络路由协议,获取到移动自组织网络每个节点的目的地路由;

fpga转发及编解码模块,用于接收待转发的数据帧,进行编解码后,送调制解调模块、射频处理模块,最终通过无线信道转发给其他无线节点;fpga转发及编解码模块内含fpga转发表。

一种高效无线转发方法,包括以下步骤:

步骤1,当fpga转发及编解码模块收到一个目的地为本节点的链路层分组,首先检查fpga转发表,fpga转发表如表1所示;当转发表所有表项后5项内容均为空,或者在表项里找不到与第2-5项匹配的表项时,fpga将分组解帧后,在转发表里记录本分组的输入链路层地址、输出链路层地址,并分配一个本地id号,附加在解帧的分组头部,送交协议栈处理;

表1fpga转发表

步骤2,路由模块采用第三层路由策略,路由模块确定到某个目的节点的下一跳转发节点,其地址均为第三层网络地址,分组转发时,需确定第三层网络地址所对应的第二层链路层地址;此时路由模块发出地址映射查询消息,以获得下一跳转发节点对应的链路层地址;

步骤3,待转发分组源链路层地址为本节点地址,目的链路层地址为下一跳转发节点链路层地址,交给fpga模块进行编解码发送;

步骤4,路由模块通过与邻居节点交互路由信息获取到目的地路由,一个带本地id的分组找到下一跳转发节点,并获得需要发送的下一跳节点的链路层地址;协议栈将该分组送往fpga发送的同时,将该转发信息写入fpga转发表;写入信息携带该分组id号,根据id号找到对应的表项,填写后5项如表2所示:

表2填写后五项的fpga转发表

后续fpga收到从无线信道发来的分组时,首先检查fpga转发表后5项是否为空,如果为空则解帧后送往路由模块处理,如果不为空,则将入口分组的帧头部字节分别于转发表对应字段比对;如果链路层源地址、网络层源地址、目的地址和tos完全匹配,且链路层目的地是本节点,则直接将链路层分组源地址替换为本节点地址,目的节点地址替换为表2中对应的出口链路层地址,直接送发送单元,不再送交协议层处理;

每个转发表表项的后5项如果设定时间未被使用,或者新的分组来后没有空间了,则老的转发表项被新的分组转发表项覆盖;

如果路由表发生变化,包括增加/删除/修改路由,则修改对应的fpga转发表项。

与现有技术相比,本发明具有如下有益效果:

本发明提出了一种适用于无线网络的基于fpga的快速转发装置及方法,通过将路由和帧的转发关系直接写入fpga转发表来实现fpga层面的快速转发,而不再需要分组经过高层协议栈查表处理,大大提高了分组转发效率,从软件转发切换为硬件转发,降低了分组转发处理时延。

附图说明

图1为本发明基于fpga的高效无线转发装置示意图。

图2为本发明实施例转发关系示意图。

具体实施方式

结合图1,一种基于fpga的高效无线转发装置,如图1所示,包括:

协议栈,用于实现ip分组的各层处理;

路由模块,用于运行移动自组织网络路由协议,获取到移动自组织网络每个节点的目的地路由;

fpga转发及编解码模块,用于接收待转发的数据帧,进行编解码后,送其他调制解调模块,射频处理模块,最终通过无线信道转发给其他无线节点。该模块内含fpga转发表。

可选的,转发装置还包括地址解析模块,用于解析下一跳ip分组对应的链路层地址。如果是采用第二层路由协议(路由协议以链路层地址作为目的地),则该模块可省略。

无线转发方法包括以下步骤:

p100正常或初始分组送协议栈处理消息。当fpga刚收到一个目的地为本节点的链路层分组时,它将首先检查fpga转发表。当转发表所有表项后几项内容都为空,或者在表项里找不到与第2-5项匹配的表项时,fpga将分组解帧后,在转发表里记录本分组的输入链路层地址、输出链路层地址,并分配一个本地id号,附加在解帧的分组头部,送交协议栈处理。此时填写fpga转发表如表1所示:

表1fpga转发表

p101地址映射查询消息。当s102模块采用第三层路由策略时,s102确定到某个目的节点的下一跳转发节点,其地址都是第三层网络地址,分组转发时,需要确定第三层网络地址所对应的第二层链路层地址。此时需要s102发出地址映射查询消息(流程请参见地址解析协议arp(addressresolutionprotocol)),以获得下一跳转发节点对应的链路层地址。

p102待转发分组源链路层地址为本节点地址,目的链路层地址为下一跳转发节点链路层地址,交给fpga模块进行编解码发送。

p103转发关系写入消息。s102模块在通过与邻居节点交互路由信息获取到目的地路由后,一个带本地id的分组可以找到下一跳转发节点,并获得需要发送的下一跳节点的链路层地址。协议栈将该分组送往fpga发送的同时,将该转发信息写入fpga转发表。写入信息携带该分组id号,根据id号找到对应的表项,填写后5项如表2所示:

表2fpga转发表填写完整的转发信息

后续fpga收到从无线信道发来的分组时,首先检查fpga转发表后5项是否为空,如果为空则解帧后送往高层协议栈处理,如果不为空,则将入口分组的帧头部字节分别于转发表对应字段比对。如果链路层源地址、网络层源地址、目的地址和tos完全匹配,且链路层目的地是本节点,则直接将链路层分组源地址替换为本节点地址,目的节点地址替换为表2中对应的出口链路层地址,直接送发送单元,不再送交协议层处理。

每个转发表表项的后5项如果一定时间为空,或者新的分组来后没有空间了,则老的转发表项可以被新的分组转发表项覆盖。

如果高层路由表项发生变化,例如增加/删除/修改路由,也应该触发p103消息,修改对应的fpga转发表项。

下面结合具体实施例对本发明进行详细说明。

实施例

本实施例为一种fpga快速转发装置的实现范例。整个装置结构仍如图1所示。整个移动自组织网采用第三层路由,即以网络层目的地址选路。如果移动自组织网络采用第二层路由,即直接以链路层地址选路,则本发明的实现方法更为简单,不需要地址解析过程。

假设移动自组织网络节点都属于192.168.0.x/24网段。本节点ip地址192.168.0.2,站号(链路层地址为5)。现有一个192.168.0.1,站号为7的分组,要发送一个到192.168.0.4(站号3)的分组。需要192.168.0.2转发,转发关系如图2所示。

192.168.0.1发来的分组,其链路层帧格式如表3所示:

表3节点7发来的入口ip分组

该分组在无线侧收到,解调后,送入本地fpga进行解码和解帧处理。当解码后,本地fpgas104模块将查阅fpga转发表。由于节点5系统刚刚启动,所以转发表全空。此时s104模块将申请一个本地空闲id号(7789806),取一个空闲转发表,填写相应的链路层地址和目的链路层地址信息。如表4所示。

表4fpga转发表初始填写实例

然后此分组帧头将被剥除,分组将被送往高层协议栈s102处理。

s102模块在运行路由协议后,将会产生到下一跳的路由。即下一跳192.168.0.4。此时节点5可能并不知道192.168.0.4的链路层地址,因此它使用地址解析模块s103发出地址解析请求消息,向网内节点询问192.168.0.4的链路层地址。192.168.0.4听到该询问消息后,将以自己的站号(链路层地址)3回答。此时节点5知道了192.168.0.4对应的链路层地址,将该分组再次组帧,送往fpga,发送给节点3。此时s102也将发送p103消息给s104模块,其中包含该分组对应的id消息7789806,以及对应转发的下一跳,对应的网络层和tos字段消息。s104收到此消息后,填写fpga转发表如表5所示:

表5fpga转发表填写完全实例

当下次7号节点再发送一个到站号3的分组,源地址、目的地址和tos字段都保持不变的话(同一个流的后续分组),则站号5在收到该分组帧后,通过查找fpga转发表,就可以找到表5对应表项。此时该帧源地址将从7替换为5,目的地址从5替换为3,然后直接再通过发通道从无线端口发射出去,不需要再送交协议栈查表处理,从而大大提高了分组在本节点的处理效率,节省了分组在本节点的逗留时间。

本发明中涉及的缩写解释如下:

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1