技术领域
本发明涉及互联网技术领域,尤其是涉及一种基于FPGA的反向网络代理服务器的方法及装置。
背景技术
随着互联网的发展,网络数据的快速扩张,海量的网络数据正快速增加着对网络服务器的性能要求。
反向代理服务器作为网络服务器中服务器集群中最前端的设备,在网络环境中起着极其重要的角色,其对于网络的抗压能力的要求尤为苛刻。由于CPU架构本质的存在,网络响应速度难以得到质的优化,同时对CPU性能要求较高,往往需要花费高额的成本和资源。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于FPGA的反向网络代理服务器的方法及装置。
本发明的目的可以通过以下技术方案来实现:
一种基于FPGA的反向网络代理服务器的方法,该方法包括以下步骤:
步骤1:由FPGA从对应光口接收客户端发出的数据请求,基于数据请求中的访问地址进行Hash计算,得到第一Hash值;
步骤2:将第一Hash值与存储器中的第二Hash值比较,当比较结果为相同则命中并进行静态数据响应,读取缓存中的数据产生响应报文以及空请求报文并经对应光口发出;
步骤3:当比较结果为不相同则未命中,基于数据请求中的其余参数进行Hash计算,得到第三Hash值;
步骤4:查找第三Hash值对应映射服务器的数量,若不为1则进行负载均衡,并经对应光口进行映射地址,替换对应数据后,产生请求及响应报文并发出;
步骤5:若为1则直接根据FPGA配置中的对应映射地址进行替换,替换对应数据后,产生请求及响应报文后并发出。
进一步地,所述的步骤1中还包括:开启电源,由FPGA首先从闪存中加载预存储的静态资源于DDR缓存中,并于随机存储器中记录其地址的Hash值、首地址和长度信息。
进一步地,所述的步骤1中由FPGA从对应光口接收客户端发出的数据请求,基于数据请求中的访问地址进行Hash计算,得到第一Hash值的过程具体包括:由FPGA从对应光口接收客户端发出的数据请求,提取数据请求中头部的源IP、源端口、目标IP、目标端口、访问地址以及首地址信息,对访问地址进行Hash计算,得到第一Hash值。
进一步地,所述的步骤3具体包括:当比较结果为不相同则未命中,基于数据请求中的目标IP、目标端口以及首地址信息,进行Hash计算,得到第三Hash值。
进一步地,所述的步骤4中负载均衡的过程包括以下分步骤:
步骤401:基于数据请求中的源IP以及源端口信息,进行Hash计算和Sum计算,分别得到第四Hash值和第四Sum值;
步骤402:将所述第四Sum值除以第三Hash值对应映射服务器的数量后,取余,并以余数为偏移地址得到新的IP地址。
本发明还提供一种用于所述的基于FPGA的反向网络代理服务器的方法的装置,该装置包括稳压电源以及与其相连接的FPGA加速卡、LCD显示模块以及按键控制模块。
进一步地,所述FPGA加速卡的输入电压为市电220V。
进一步地,所述FPGA加速卡的工作电压为12V。
进一步地,所述FPGA加速卡内置有FPGA主控芯片、多网口网络收发电路模块、USB调试电路模块、FLASH存储模块、DDR3存储模块、电源管理模块以及配置电路模块。
进一步地,所述的FPGA主控芯片内置有网络收发模块、串口收发模块、DDR管理模块、Hash运算模块、负载均衡模块以及RAM查找表模块。
与现有技术相比,本发明具有以下优点:
(1)为了降低服务器成本,提高网络请求相应速度,本发明公开了一种基于FPGA的反向代理网络服务器的方法及装置,可以代替高成本的CPU服务器,依靠FPGA并行架构的优势,达到低延迟、低响应时间、高并发、高带宽的效果。
(2)FPGA中实现Hash查找快速精准定位静态网络资源。
(3)FPGA中实现服务器地址和端口映射,并可动态配置。
(4)依据负载均衡策略,实现实时地对网络请求进行负载均衡。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例中FPGA反向代理服务器的网络架构图;
图2为本发明实施例中FPGA反向代理服务器装置结构示意图;
图3为本发明实施例中FPGA反向代理流程图;
图4为本发明实施例中负载均衡模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
此外,术语“水平”、“竖直”等术语并不表示要求部件绝对水平或悬垂,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本发明公开了一种基于FPGA的反向代理网络服务器的方法及装置,如图1所示,反向代理服务器作为客户端和服务器集群之间的枢纽,负责将客户端和服务器发出的数据相互转换。FPGA反向代理服务器装置结构如图2所示,主要由FPGA加速卡、稳压电源、LCD显示和按键控制等模块组成,其结构简单,成本低廉。稳压电源允许FPGA加速卡可以接入到220V市电,并在稳定的12V电压下工作。LCD显示用于将FPGA的工作状态,配合按键控制模块手动对代理服务器配置各项参数。FPGA网卡上有FPGA主控芯片、多网口网络收发电路、USB调试电路、FLASH存储模块、DDR3存储模块、电源管理模块和配置电路等电路构成。FPGA芯片具有功耗低、运行稳定、灵活性强等特点,非常适合用于复杂度一般的网络节点。
FPGA芯片在MAC层实现对网络数据处理,省去高额的TCP/IP开发成本,其主要由高速网络收发模块、串口收发模块、DDR管理模块、Hash运算模块、负载均衡模块、RAM查找表模块等模块组成。
FPGA主要负责将客户端发出的网络请求包,根据请求地址和内容,转换分配到服务器集群中不同的服务器上,以降低对单一服务器过大的压力,同时也能将不同的任务分配到不同的服务器上。FPGA中设立本地flash(存储器),对静态数据的请求以最快的速度予以响应。
本发明涉及一种基于FPGA的反向代理网络服务器的方法及装置,系统架构简单明了,实施方式如下:
(1)将FPGA板卡上的光口1接入到外网环境;
(2)将FPGA板卡上的光口2、3、4、5接入到内网环境;
(3)接入电源,并打开开关,直到看到光口处灯光闪烁;
(4)使用外网客户端通过网络访问内网服务器。
FPGA板卡实现反向代理流程如图3所示,具体如下:
(1)开启电源后,FPGA首先从flash中加载预存储的静态资源到DDR3中,并在RAM1中记录其地址的hash值、首地址、长度信息;
(2)当FPGA从光口1接收到客户端发出的数据请求package1,提取其头部的源IPip1、源端口port1、目标IP ip2、目标端口port2以及访问地址url1、首地址url2等信息;
(3)对上一步中的url1进行Hash运算,计算得到其Hash值hash1;
(4)依次取出RAM1中存储的Hash字段hash2、首地址字段addr2、长度字段len2;
(6)将步骤2中的hash1和步骤5中的hash2进行比较,如果相同则命中,跳转到步骤14,否则往下执行;
(7)如果上一步未命中,则根据步骤1中的ip2、port2和url2,计算其Hash值hash3;
(8)查找hash3对应映射服务器的数量count1,如果count1不为1则跳转到步骤10,否则继续执行;
(9)根据FPGA配置中的对应映射地址进行替换,将ip2和port2替换为新的ip3和port3;跳转至步骤11;
(10)如果count1不为1,则需要进行负载均衡,负载均衡模块如图4所示;计算步骤1中的ip1、port1的Hash值hash4,计算hash4的和sum4,将sum4除以count1,取其余数,以余数为偏移地址得到新的IP地址ip3和port3;
(11)将上一步替换后的请求报文通过光口2、3、4、5发出;
(12)当光口2、3、4、5收到服务器发出的响应报文时,FPGA将报文中源IP ip3、源端口port3替换为对应映射地址的ip2和ip3;
(13)将上一步替换后的响应报文通过光口1发出;
(14)如果步骤6中命中,则需要进行静态数据响应;读取DDR3中add2地址长度为len2的数据;
(15)以上一步读出的数据产生一个新的响应报文,通过光口1发出;
(16)产生一个更新sequence的空请求报文通过光口2、3、4、5发出。
本发明实现一种基于FPGA的反向代理网络服务器的方法及装置,实现效果如下:
(1)用FPGA在物理层上实现反向代理服务器的方法及装置;
(2)FPGA部署成本低,功耗降低,响应时间减小,延迟降低;
(3)通过USB的调试和配置接口,实现静态资源的动态配置以及FPGA运行状态的监控。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
机译: 基于机器学习的FPGA位流逆向工程的FPGA方法和装置
机译: 支持现场可编程门阵列的FPGA AIC SSD方法和装置基于FPGA的嵌入式AIC固态驱动器SSD
机译: 基于机器学习的FPGA位流逆向工程的FPGA方法和装置