公开/公告号CN112929299A
专利类型发明专利
公开/公告日2021-06-08
原文格式PDF
申请/专利权人 广州市品高软件股份有限公司;
申请/专利号CN202110108045.0
申请日2021-01-27
分类号H04L12/947(20130101);H04L12/931(20130101);H04L12/741(20130101);H04L29/08(20060101);G06F9/455(20060101);
代理机构44100 广州新诺专利商标事务所有限公司;
代理人张玲春
地址 510000 广东省广州市天河区软件路17号第G1栋
入库时间 2023-06-19 11:17:41
技术领域
本发明属于云网络技术领域,具体涉及一种基于FPGA加速卡的SDN云网络实现方法、装置及设备。
背景技术
在现有技术中,云网络的实现方式普遍采用SDN云网络的方式,基于Openflow控制协议对虚拟交换机进行控制,实现对云主机网络的控制与管理。传统SDN云网络的实现方式如图1所示,数据包从物理网卡或云主机的虚拟网卡进入位于内核的虚拟交换机的数据转发处理模块,该模块根据数据包内容进行Openflow流表规则匹配,若匹配则根据规则动作进行转发,若未匹配则通过netlink方式从内核态通知用户态,发送给虚拟交换机控制进程进行处理,若控制进程查询用户态的Openflow流表规则仍未匹配则数据包以首包(经过Openflow协议封装的数据报文)的形式发送给SDN控制器进行处理,SDN控制器根据云网络的组网逻辑计算出相关流表并下发至虚拟交换机。这种传统SDN云网络的实现方式,都是用节点纯软件的方式实现的,需要占用节点服务器的CPU和内存等资源,在处理高吞吐或密集型数据包转发时,虚拟交换机需要占用大量的节点服务器资源,受限于普通CPU性能,其转发性能也会到达瓶颈。
通常的解决办法有:
1、采用DPDK技术,通过对节点服务器绑定CPU的方式,实现虚拟交换机转发性能的提升。但是这种方式需要节点服务器隔离出专门的多个CPU核给虚拟交换机使用,对于云平台来说成本较高,而且实施操作复杂,不利于维护。
2、采用智能网卡的方式,如图2所示,将虚拟交换机的数据转发处理模块卸载至智能网卡内,同时智能网卡通过SR-IOV(Single Root I/O Virtualization)的方式虚拟出VF网卡给云主机使用,数据包从物理网卡或者云主机的VF网卡进入智能网卡的快速转发模块,该转发模块的包解析、Openflow流表规则匹配以及包转发由智能网卡的专用芯片处理,可以有效提升云网络数据包的转发性能。但是该方式需要购买价格昂贵的智能网卡,使节点服务器成本大大增加,采购时也受限于少数智能网卡生产厂商。
发明内容
为了克服上述技术缺陷,本发明提供了一种基于FPGA加速卡的SDN云网络实现方法、装置及设备。
为了解决上述问题,第一方面,本发明提供了一种基于FPGA加速卡的SDN云网络实现方法,包括步骤:
当网络数据包进入到网络设备时,将网络数据包转发至FPGA加速卡;
FPGA加速卡对网络数据包进行解析后,对网络数据包进行OpenFlow流表规则匹配;
若匹配,则FPGA加速卡执行已匹配的OpenFlow流表规则动作,并转发至网络设备;
若不匹配,则从内核态通知用户态,将数据包发送给虚拟机控制进程;
在控制进程查询用户态的OpenFlow流表规则匹配时,将流表下发至FPGA加速卡执行已匹配的OpenFlow流表规则动作,并转发至网络设备。
作为本发明的进一步改进,当同一节点服务器的云主机间相同访问时,所述网络设备为业务网卡,所述业务网卡虚拟出若干个虚拟网卡,并将相应的虚拟网卡绑定到云主机;
网络数据包进入到网络设备的步骤具体包括:
网络数据包从云主机所绑定的虚拟网卡发出,进入业务网卡后,将网络数据包转发至FPGA加速卡。
作为本发明的进一步改进,所述转发至网络设备的步骤具体包括:
将网络数据包返回业务网卡,到达对应云主机的虚拟网卡。
作为本发明的进一步改进,当云主机访问节点服务器外部网络时,所述网络设备为业务网卡,所述业务网卡虚拟出若干个虚拟网卡,并将相应的虚拟网卡绑定到云主机;
网络数据包进入到网络设备的步骤具体包括:
网络数据包从云主机所绑定的虚拟网卡发出,进入业务网卡后,将网络数据包转发至FPGA加速卡。
作为本发明的进一步改进,所述转发至网络设备的步骤具体包括:
将网络数据包转发至节点服务器所连接的交换机。
作为本发明的进一步改进,当节点服务器外部网络访问云主机时,所述网络设备为节点服务器所连接的交换机;
网络数据包进入到网络设备的步骤具体包括:
网络数据包从节点服务器所连接的交换机进入FPGA加速卡。
作为本发明的进一步改进,所述转发至网络设备的步骤具体包括:
将网络数据包返回业务网卡,到达对应云主机的虚拟网卡。
作为本发明的进一步改进,所述将数据包发送给虚拟机控制进程的步骤后,还包括步骤:
在控制进程查询用户态的OpenFlow流表规则未匹配时,则网络数据包以数据报文的形式发送给SDN控制器,SDN控制器计算出OpenFlow流表并下发至虚拟交换机控制进程,虚拟交换机控制进程根据缓存规则将OpenFlow流表下发至FPGA加速卡;
FPGA加速卡执行OpenFlow流表规则动作,并转发至网络设备。
第二方面,本发明还提供了一种基于FPGA加速卡的SDN云网络实现装置,包括:
云节点主板、交换机、业务网卡、FPGA加速卡,所述FPGA加速卡设置有第一万兆光口和第二万兆光口;所述FPGA加速卡与所述云节点主板连接,所述第一万兆光口与业务网卡连接,所述第二万兆光口与所述交换机连接。
第三方面,本发明提供了一种计算机可读存储介质,其特征在于,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如权利要求1至8任一项所述的SDN云网络实现方法。
第四方面,本发明提供了一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一项所述的SDN云网络实现方法。
与现有技术相比,本发明具有以下技术效果:通过给节点服务器新增一块FPGA加速卡,将虚拟交换机的内核数据转发处理模块卸载至该FPGA加速卡,用FPGA加速卡来实现Openflow规则流表的匹配和数据包转发,从而解决了传统纯软件实现的SDN云网络方法会占用云节点服务器大量CPU和内存资源的问题,同时FPGA加速卡实现上相对智能网卡简单,成本较低,也解决了智能网卡价格昂贵带来问题。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明,其中:
图1为现有技术中传统SDN云网络的实现方式示意图;
图2为现有技术中智能网卡实现SDN云网络示意图;
图3为实施例1所述SDN云网络实现方法的流程图;
图4为实施例4所述SDN云网络实现方法的硬件架构图。
标记说明:1、云节点主板;2、交换机;3、业务网卡;4、FPGA加速卡。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1
本实施例提供了一种基于FPGA加速卡的SDN云网络实现方法,包括步骤:
S1、当同一节点服务器的云主机间相同访问时,业务网卡使用SR-IO技术,虚拟出若干个虚拟网卡,并将相应的虚拟网卡绑定到云主机;网络数据包从云主机所绑定的虚拟网卡发出,进入业务网卡后,通过光纤线将网络数据包转发至FPGA加速卡的第一万兆光口。
S2、FPGA加速卡的网络数据包解析功能对网络数据包进行解析,将网络数据包的内容与FPGA加速卡中缓存的OpenFlow流表项的匹配字段进行规则匹配。
S3、若匹配,则FPGA加速卡执行已匹配的OpenFlow流表规则动作后,将网络数据包返回FPGA加速卡的第一万兆光口,经过光纤线返回业务网卡,到达对应云主机的虚拟网卡。
S4、当网络数据包在FPGA加速卡中,与缓存中的OpenFlow流表规则没有相应的匹配规则时,则通过netlink方式从内核态通知用户态,将数据包发送给虚拟机控制进程。
S5、在控制进程查询用户态的OpenFlow流表规则匹配时,将流表下发至FPGA加速卡执行已匹配的OpenFlow流表规则动作后,将网络数据包返回第一万兆光口,经过光纤线返回业务网卡,到达对应云主机的虚拟网卡。
S6、在控制进程查询用户态的OpenFlow流表规则未匹配时,则网络数据包以数据报文(此处数据报文是指经过OpenFlow协议封装的数据报文)的形式发送给SDN控制器,SDN控制器根据云网络的组网逻辑计算出OpenFlow流表并下发至虚拟交换机控制进程,虚拟交换机控制进程根据缓存规则将OpenFlow流表通过netlink的方式下发至FPGA加速卡的缓存中。
S7、FPGA加速卡执行OpenFlow流表规则动作后,将网络数据包返回第一万兆光口,经过光纤线返回业务网卡,到达对应云主机的虚拟网卡。
进一步的,在SDN控制器中实现云网络的组网逻辑具体为:首先,云节点中的虚拟交换机控制进程与SDN控制器建立OpenFlow协议的通讯连接;其次,SDN控制器根据云平台对云网络的配置,实现VPC、子网、安全组、ACL等云网络功能,当网络数据包以数据报文的形式发送给SDN控制器后,SDN控制器解析该数据包,根据云网络配置的组网逻辑下发相应的OpenFlow流表规则并缓存至FPGA加速卡中。
实施例2
本实施例提供了另一种基于FPGA加速卡的SDN云网络实现方法,其与实施例1的区别在于:
网络数据包进入到网络设备的条件和方式不一样,本实施中,当云主机访问节点服务器外部网络时,网络设备为业务网卡,业务网卡虚拟出若干个虚拟网卡,并将相应的虚拟网卡绑定到云主机,网络数据包从云主机所绑定的虚拟网卡发出时,进入业务网卡后再通过光纤线转发至FPGA加速卡的第一万兆光口。
此外,FPGA加速卡执行OpenFlow流表规则动作完毕后,将网络数据包转发至网络设备的方式也不一样,本实施例中,FPGA加速卡执行OpenFlow流表规则动作完毕后,网络数据包转发至FPGA加速卡的第二万兆光口,进入节点服务器所连接的TOR交换机。
实施例3
本实施例提供了另一种基于FPGA加速卡的SDN云网络实现方法,其与实施例1的区别在于:
网络数据包进入到网络设备的条件和方式不一样,本实施中,当节点服务器外部网络访问云主机时,网络数据包从节点服务器所连接的TOR交换机进入到FPGA加速卡的第二万兆光口。
此外,FPGA加速卡执行OpenFlow流表规则动作完毕后,将网络数据包转发至网络设备的方式也不一样,本实施例中,FPGA加速卡执行OpenFlow流表规则动作完毕后,网络数据包转发至FPGA加速卡的第一万兆光口,经过光纤线进入业务网卡,到的对应云主机的虚拟网卡。
实施例3
本实施例提供了一种基于FPGA加速卡的SDN云网络实现装置,包括:云节点主板、交换机、业务网卡、FPGA加速卡,FPGA加速卡设置有FPGA芯片、DRAM缓存、第一万兆光口和第二万兆光口;业务网卡带有SR-IOV功能和一个万兆光口,FPGA加速卡使用PCIE接口与云节点主板连接,第一万兆光口采用光纤线与业务网卡连接,第二万兆光口采用光纤线与交换机的万兆口连接。
实施例4
本实施例提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现实施例1-3的SDN云网络实现方法。
实施例5
本实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现实施例1-3的SDN云网络实现方法。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,故凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
机译: 使用实现在网络设备中的网络介体实现基于云的网络设备配置和管理的机制
机译: 使用基于云的软件定义的网络(SDN)将一个或多个最佳无线通道分配给Wi-Fi接入点的方法和系统
机译: 使用基于云的软件定义网络(SDN)为Wi-Fi访问点分配一个或多个最佳无线渠道的方法和系统