一种基于FPGA的最短路由实现方法与流程

文档序号:11778304阅读:215来源:国知局

本发明涉及互联网技术领域,具体涉及一种基于fpga的最短路由实现方法。



背景技术:

随着网络技术的快速发展,以及云计算、大数据等海量数据处理技术的出现,使得传统交换设备已无法满足当前网络数据传输及性能需求。sdn(软件定义网络)将转发与控制分离,在快速转发的同时又能够灵活控制。然而,sdn集中控制的方式为网络数据传输带来便利的同时也存在着问题,即当网络比较复杂,sdn的网络结构会变得非常庞大,使得单一控制器无法高效地控制交换机对数据的转发。使用多个控制器分别控制一个相对简单的网络,能够减少每个控制器的压力,但也存在着拓扑同步、传输路径选择等一系列的问题。



技术实现要素:

本发明所要解决的是多个控制器之间协同以及数据传输效率的问题,提供一种基于fpga的最短路由实现方法。

为解决上述问题,本发明是通过以下技术方案实现的:

一种基于fpga的最短路由实现方法,包括如下步骤:

步骤1、sdn控制器上传拓扑信息至fpga;

步骤2、fpga接收各个sdn控制器上传的拓扑信息,根据每条拓扑信息中的源转发器得到存储器地址,每个源转发器对应1个ddr2的存储空间,将各条拓扑信息逐条存入各拓扑信息中源转发器所对应的ddr2存储空间中;即具有相同源转发器的拓扑信息存储在ddr2的相同存储空间中,具有不同源转发器的拓扑信息存储在ddr2的不同存储空间中;

步骤3、用户发起访问请求,sdn控制器收到请求并上传请求信息至fpga;

步骤4、fpga收到用户请求信息,并根据该请求信息的源转发器得到存储器地址,每个源转发器对应1个ddr2的存储空间,去访问该请求信息中的源转发器所对应ddr2的存储空间;

步骤5、fpga提取ddr2中同一个存储空间的所有拓扑信息,并将这些拓扑信息中的权值加上由请求信息中的源转发器到当前ddr2的存储空间所对应的源转发器的权值,得到由请求信息中的源转发器到当前ddr2的存储空间中所有拓扑信息中的目的转发器的权值,找出更新后的最短路径;

步骤6、fpga判断步骤5所找出的最短路径的目的转发器是否为请求信息中的目的转发器;若是则进入步骤7;否则将找出的最短路径中的目的转发器作为新的源转发器,并根据新的源转发器得到存储器地址,每个源转发器对应1个ddr2的存储空间,去访问该存储器地址所对应的ddr2的存储空间,并转至步骤5;

步骤7、fpga生成最短路径的路径信息,并发送至各sdn控制器。

上述方法中,所述拓扑信息包括源转发器、源端口号、目的转发器、目的端口号以及该链路的性能权值。

上述方法中,所述请求信息包括源转发器、源端口号、目标转发器和目标端口号。

上述步骤5中,对链路的性能权值采用dijkstra算法去找出上述各路径中的最短路径。

上述方法中,存储器地址由高位地址和低位地址组成,高位地址为源转发器的id,低位地址为根据存储空间中已经存储的拓扑信息数动态变化。

上述方法中,ddr2的存储空间由具有相同存储器地址中的高位地址的所有存储器地址对应的ddr2的存储单元组成。

与现有技术相比,本发明的有益效果在于:通过本发明可以利用fpga实现在高速网络环境下通过对sdn控制器的协调,同步网络拓扑,加快数据的传输,减少因对传输链路性能进行决策与配置而带来的对网络性能的影响。

附图说明

图1为本发明实现的最短路由算法的整体流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例,并参照附图,对本发明进一步详细说明。

一种基于fpga的最短路由实现方法,如图1所示,具体包含如下步骤:

步骤s1:sdn控制器通过udp协议将拓扑信息封装,向上传输至fpga,该拓扑信息包括src_switch(源交换机)、src_port(源端口号)、dst_switch(目的交换机)、dst_port(目的端口号)、weight(权值);

步骤s2:fpga接收各个sdn控制器发送的udp数据,将其进行解封装提取拓扑信息,以src_switch为ram1的地址ram1_addr(片上ram1的地址),读取ram1对应的write_addr;

步骤s21:write_addr作为ddr2_addr(ddr2地址)的低8位写地址,并将该地址增加更新ram1数据,src_switch作为ddr2_addr的高8位写地址,中间11位取0,将拓扑信息作为ddr2_data[39:0],88’d1234作为判断拓扑信息的依据存入ddr2_data[127:40]一并存入ddr2中;

步骤s3:用户发起访问请求,交换机通过openflow协议上传用户信息到sdn控制器,sdn控制器收到请求,控制器通过udp协议将拓扑信息封装,并上传请求信息至fpga(源转发器、源端口号、目标转发器、目标端口号);

步骤s4:fpga接受到sdn控制器发送的udp数据,将其进行解封装提取用户请求信息,请求信息包括src_switch、src_port、dst_switch、dst_port;

步骤s5:将src_switch作为ddr2_addr的高8位地址,read_addr作为ddr2_addr的低7位地址,中间11位取0,获取ddr2中数据;

步骤s51:判断数据是否为拓扑信息数据,即判断ddr2_data[127:40]是否等于1234,若相等进入步骤s52,若不相等进入步骤s6;

步骤s52:将dst_switch作为ram2_addr(片上ram2的地址)读取ram2中的数据;

步骤s53:将拓扑信息中的weight与路径的权值和s相加与读取的数据中的weight相比较,并把权值较小的数据存入ram2中;

步骤s54:read_addr增加,重复步骤s5;

步骤s6:获取ram2中未通过路径中的最短路径(即最高位为0),判断ram2_addr是否为用户请求信息中的目标交换机。若是,则进入步骤s7,否则将数据中的最高位置1,并令src_switch等于ddr2_addr,权值和s更新为该最短路径中的权值,重复步骤s5;

步骤s7:将ram2中读取的数据添加至udp数据中等待发送,判断ram2数据中src_switch是否为用户源交换机,若是,构造udp数据包将路径信息发送至各交换机。否则进入步骤s8;

步骤s8:将该ram2数据的src_switch作为ram2_addr重复步骤s7。

本发明利用fpga的高速并发特性,sdn控制器通过udp协议上传拓扑信息,fpga解析udp数据包获取拓扑信息,存储在ddr2中。当用户发起访问请求时,访问ddr2获取拓扑信息通过最短路由算法得到最佳传输路径信息,将该信息打包成udp数据并下发至sdn控制器。本发明能实现在高速网络环境下提高数据的传输效率。

需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。

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