一种基于OVS的NFV报文转发方法技术

技术编号:25995656 阅读:29 留言:0更新日期:2020-10-20 19:05
本发明专利技术公开了一种基于OVS的NFV报文转发方法,目的是解决服务功能链节点间报文转发量大、SFC转发效率低的问题。技术方案是先构建由SF网络数据构建部件、SFC数据构建部件、报文转发控制部件、参数配置文件组成的NFV报文转发系统并将该系统部署在NFV的网络环境中。SF网络数据构建部件根据OVS网桥名称、SF节点的信息构建SF网络数据链表SF_list;SFC数据构建部件根据SF_list和SFC定义数据构建SFC结构数据sfc;报文转发控制部件根据sfc生成正向传输流表和反向传输流表;报文转发控制部件根据正向和反向传输流表完成NFV报文转发。采用本发明专利技术可以减少节点数量,避免报文在各个节点间导流时的复杂路由策略计算,避免设计新的应用协议和应用协议处理,极大提高了SFC转发性能。

【技术实现步骤摘要】
一种基于OVS的NFV报文转发方法
本专利技术涉及计算机网络领域,尤其涉及一种基于OVS(OpenVSwitch)流表的避免NSH协议封装的NFV报文转发方法。
技术介绍
传统网络架构使用大量专用硬件设备,来提供防火墙、入侵防御、网络地址转换等网络功能。随着大数据、云计算等新兴行业的迅速发展,应用对网络的要求越来越高,部署新的应用往往需要新的专用设备和网络的支持,为网络运营成本和运维带来很大挑战。为应对这些问题,欧洲电信标准协会(EuropeanTelecommunicationStandardsInstitute,ETSI)提出网络功能虚拟化(NetworkFunctionVirtualization,NFV)。NFV技术利用普通商用服务器为网络功能提供虚拟机、容器等运行环境,用虚拟机或容器中运行的软件来替换网络中硬件设备,提高网络功能的灵活性,降低投资成本、研发成本和运维成本。在NFV中,一条数据流需要按顺序经过多个网络功能处理,如先经过防火墙,再经过入侵检测,再经过IPsec(InternetProtocolSecurity,互联网安全协议),最后经过NAT(NetworkAddressTranslation,网络地址转换)等,这样的一条串联网络功能的链被称为网络服务功能链(ServiceFunctionChaining,SFC)。因此网络服务功能链的实现决定了NFV技术应用的效果和性能。根据IETF(TheInternetEngineeringTaskForce:互联网工程任务组)的SFC工作组以及RFC7665标准,网络服务功能链通过多个功能节点来实现,功能节点包括:Classifier(分类器),SFF(ServiceFunctionForwarder,服务功能转发器),SF(ServiceFunction,服务功能),SFCProxy(服务功能代理)。为了使报文能够在各个SF节点之间灵活转发,RFC8300标准定义了NSH(NetworkServiceHeader,网络业务报头)用于封装报文。其中,Classifier负责识别数据流(包括多个报文),并且将数据流和SFC进行关联,将数据流送到对应的SFC上去处理。SFF负责对封装了NSH的报文,根据NSH包含的业务路径标识和业务标识进行转发。SFCProxy是SF的代理,对于需要送给SF的报文,SFCProxy为SF解掉NSH封装;对从SF收到的报文,SFCProxy负责进行NSH封装,再发给其他节点。在传统的服务功能链中,为了实现报文在服务功能链中的转发,每个服务功能(即SF节点)的实现需要增加转发节点(即SFF节点)和代理节点(即SFCProxy节点),同时由于报文在多个节点间的转发增加了传输延时,且由于封装NSH协议,降低了传输性能。在服务功能链报文转发方法的研究中,井惟栋等(参见井惟栋,詹徐周,蔡洪波,刘海波.一种SFC报文转发方法及设备:中国专利,申请号201710947306.1)针对报文在SF和SFF之间多次转发进而影响转发性能的问题,在SFC中引入了SFC-Controller节点。SFC-Controller节点为每个SF节点或SFF节点发送下一跳节点信息,SF节点或SFF节点接收到报文后,根据预设的下一跳节点信息转发报文,减少了报文在SF和SFF间的转发次数。但是该方法并没有减少SFC中的节点,反而增加了节点(引入了SFC-Controller节点),而且要求每个SF都要能够接收、解析并处理预设的下一跳信息,使得SF的实现更为复杂,且通用的网络功能软件无法直接应用于SF。张新玲(参见张新玲.一种基于NFV的报文匹配系统和方法:中国专利,申请号201911159328.7)提出一种基于硬件加速器的NFV报文匹配系统,该系统中,vnf网元设备在处理报文时,将报文发送至硬件加速器进行匹配,使用硬件加速器提高了vnf网元设备软件处理报文匹配的性能。但是该系统仍需要vnf网元设备与硬件加速器的数据交互,大量报文到来时频繁的数据交互将严重影响系统的整体性能。毕军等(参见毕军,郑智隆,孙晨,于恒.一种NFV中网络功能并行处理基础架构:中国专利,申请号201810050345.6)提出一种并行处理的NFV网络架构。该架构通过多个网络功能处理模块的并行处理来提高系统处理性能。但是报文流在各个网络功能处理模块间的分发则是通过单一的分类模块来完成。该分类模块将成为整个系统性能的瓶颈。孟伟等(参见孟伟,王翠.业务功能链中协议报文的处理方法、系统及业务功能节点:中国专利,申请号201410554999.4)将传统服务功能链转发中的NSH封装技术应用于协议报文(即控制报文),从而实现协议报文的单独转发和处理。但是对于用户数据报文(即有效报文)的转发并没有改进,使得有效报文的转发效率没有提高。上述研究都是针对传统服务功能链中某个实现环节进行改进,都需要在服务功能链节点间报文转发中对报文进行二次封装,没有从根本上解决多节点转发、NSH协议封装等导致的节点间转发量大、SFC转发效率低的问题。
技术实现思路
本专利技术要解决的技术问题是针对RFC7665中的多节点转发、NSH协议封装的问题,基于OVS(OpenVSwitch)流表提出一种基于OVS的NFV报文转发方法,该方法与RFC7665标准中定义的转发方法相比,减少了SFF节点和SFCProxy节点,避免了NSH协议封装,极大降低了各服务功能节点计算量及节点间转发量,提高了SFC转发性能。本专利技术包括以下步骤:第一步,构建NFV报文转发系统。该系统由SF网络数据构建部件、SFC数据构建部件、报文转发控制部件、参数配置文件组成。参数配置文件用于存储NFV报文转发系统的输入参数,包括NFV网络中OVS网桥名称、SF节点数据和SFC定义数据。SF节点数据包括NFV网络环境中SF节点数量N,每个SF节点的名称、SF节点网络接口MAC地址;SFC定义数据包括SFC的名字sfcname、SFC的服务IP地址sfcip、SFC中SF节点数量sfn、SFC中按顺序排列的SF节点名字序列sfname[i],i=1,2,…,sfn。这些数据由NFV体系结构中的NFV管理与编排器(MANO,ManagementAndNetworkOrchestration,ESTI定义的NFV架构的组成部分,见http://www.etsi.org/deliver/etsi_gs/nfv/001_099/002/01.01.01_60/gs_nfv002v010101p.pdf)提供。SF网络数据构建部件与SFC数据构建部件、参数配置文件相连,它从参数配置文件中获取NFV网络环境中的SF节点数据,利用NFV网络环境中的网络工具(如ovs-ofctl)获取SF节点网络接口的编号,构建SF网络数据链表。SF网络数据链表中1个元素存储1个SF节点的SF节点信息。SF网络数据链表元素包括3个域,分别为:SF名称(即sf_name),SF节点网络接口MAC地址(即sf_mac)、SF节点网络接口的编号(即sf_i本文档来自技高网
...

【技术保护点】
1.一种基于OVS的NFV报文转发方法,其特征在于包括以下步骤:/n第一步,构建NFV报文转发系统,NFV报文转发系统由SF网络数据构建部件、SFC数据构建部件、报文转发控制部件、参数配置文件组成;所述OVS指OpenVSwitch,所述NFV指网络功能虚拟化,所述SF指服务功能,所述SFC指网络服务功能链;/n参数配置文件用于存储NFV报文转发系统的输入参数,包括NFV网络中OVS网桥名称、SF节点数据和SFC定义数据;SF节点数据包括NFV网络环境中SF节点数量N,每个SF节点的名称、SF节点网络接口MAC地址;SFC定义数据包括SFC的名字sfcname、SFC的服务IP地址sfcip、SFC中SF节点数量sfn、SFC中按顺序排列的SF节点名字序列sfname[i],i=1,2,…,sfn;/nSF网络数据构建部件与SFC数据构建部件、参数配置文件相连,它从参数配置文件中获取NFV网络环境中的SF节点数据,利用NFV网络环境中的网络工具获取SF节点网络接口的编号,构建SF网络数据链表;SF网络数据链表中1个元素存储1个SF节点的SF节点信息;SF网络数据链表元素包括3个域,分别为:SF节点的名称即sf_name,SF节点网络接口MAC地址即sf_mac、SF节点网络接口的编号即sf_id,并将SF网络数据链表输出给SFC数据构建部件;/nSFC数据构建部件与SF网络数据构建部件、报文转发控制部件、参数配置文件相连;它从SF网络数据构建部件接收SF网络数据链表,从参数配置文件读取SFC定义数据,根据SFC定义数据和SF网络数据链表构建SFC结构数据,SFC结构数据记录1个SFC的信息,包括SFC名字sfc_name、SFC服务IP地址sfc_ip、SFC中SF节点数量sfn、SFC中每个SF节点名称即sfc_sfname[1],…,sfc_sfname[j],…,sfc_sfname[sfn],sfn为SF节点个数,j=1,2,…,sfn、SFC中每个SF节点MAC地址即sfc_sfmac[1],…,sfc_sfmac[j],…,sfc_sfmac[sfn]、SFC中每个SF节点接口编号即sfc_sfid[2],…,sfc_sfid[j],…,sfc_sfid[sfn];/n报文转发控制部件与SFC数据构建部件相连,它从SFC数据构建部件接收SFC结构数据,根据SFC结构数据生成报文转发控制流表,控制NFV网络环境中的报文转发;/n第二步,将NFV报文转发系统部署在NFV的网络环境中,方法是:/n2.1在NFV网络运行的主机中启动NFV报文转发系统;/n2.2将NFV报文转发系统与NFV网络环境中的分类器相连;/n2.3将NFV报文转发系统与NFV网络环境中的NFV管理与编排器相连;/n2.4初始化NFV报文转发系统的参数配置文件,即将NFV管理与编排器中的OVS网桥名称、SF节点数据和SFC定义数据配置到参数配置文件中;/n第三步,SF网络数据构建部件从参数配置文件读取NFV网络中OVS网桥名称、每个SF节点的信息,获取每个SF节点接口在NFV网络环境中的接口编号,构建SF网络数据链表SF_list,将SF_list发送给SFC数据构建部件,具体方法是:/n3.1SF网络数据构建部件定义SF网络数据链表SF_list,并初始化SF_list为空;/n3.2从参数配置文件读取NFV网络中OVS网桥名称,设为ovs_name;从参数配置文件读取NFV网络中SF节点数量N;定义循环变量i1=1;/n3.3新建SF网络数据链表元素SF_i;从参数配置文件读取第i1个SF节点的名称,设为sfi_name;从参数配置文件读取第i1个SF节点的MAC地址,设为sfi_mac;令:/nSF_i->sf_name=sfi_name;/nSF_i->sf_mac=sfi_mac;/n其中SF_i->sf_name表示SF_i的sf_name,SF_i->sf_mac表示SF_i的sf_mac;/n3.4获取SF_i的接口在NFV网络中的编号,方法是:/n3.4.1获取网桥ovs_name上的NI个接口的接口编号及MAC地址,NI为ovs_name网桥上的接口数量:/n3.4.2从3.4.1步的输出中找到MAC地址与SF_i->sf_mac相同的接口,设该接口编号为i_id;/n3.4.3令SF_i->sf_id=i_id;/n3.5将SF_i加入SF_list;/n3.6令i1=i1+1,如果i1≤N,转步骤3.3,否则将SF_list输出给SFC数据构建部件,转第四步;/n第四步,SFC数据构建部件从SF网络数据构建部件接收SF_list,从参数配置文件读取SFC定义数据,根据SF_list和SFC定...

【技术特征摘要】
1.一种基于OVS的NFV报文转发方法,其特征在于包括以下步骤:
第一步,构建NFV报文转发系统,NFV报文转发系统由SF网络数据构建部件、SFC数据构建部件、报文转发控制部件、参数配置文件组成;所述OVS指OpenVSwitch,所述NFV指网络功能虚拟化,所述SF指服务功能,所述SFC指网络服务功能链;
参数配置文件用于存储NFV报文转发系统的输入参数,包括NFV网络中OVS网桥名称、SF节点数据和SFC定义数据;SF节点数据包括NFV网络环境中SF节点数量N,每个SF节点的名称、SF节点网络接口MAC地址;SFC定义数据包括SFC的名字sfcname、SFC的服务IP地址sfcip、SFC中SF节点数量sfn、SFC中按顺序排列的SF节点名字序列sfname[i],i=1,2,…,sfn;
SF网络数据构建部件与SFC数据构建部件、参数配置文件相连,它从参数配置文件中获取NFV网络环境中的SF节点数据,利用NFV网络环境中的网络工具获取SF节点网络接口的编号,构建SF网络数据链表;SF网络数据链表中1个元素存储1个SF节点的SF节点信息;SF网络数据链表元素包括3个域,分别为:SF节点的名称即sf_name,SF节点网络接口MAC地址即sf_mac、SF节点网络接口的编号即sf_id,并将SF网络数据链表输出给SFC数据构建部件;
SFC数据构建部件与SF网络数据构建部件、报文转发控制部件、参数配置文件相连;它从SF网络数据构建部件接收SF网络数据链表,从参数配置文件读取SFC定义数据,根据SFC定义数据和SF网络数据链表构建SFC结构数据,SFC结构数据记录1个SFC的信息,包括SFC名字sfc_name、SFC服务IP地址sfc_ip、SFC中SF节点数量sfn、SFC中每个SF节点名称即sfc_sfname[1],…,sfc_sfname[j],…,sfc_sfname[sfn],sfn为SF节点个数,j=1,2,…,sfn、SFC中每个SF节点MAC地址即sfc_sfmac[1],…,sfc_sfmac[j],…,sfc_sfmac[sfn]、SFC中每个SF节点接口编号即sfc_sfid[2],…,sfc_sfid[j],…,sfc_sfid[sfn];
报文转发控制部件与SFC数据构建部件相连,它从SFC数据构建部件接收SFC结构数据,根据SFC结构数据生成报文转发控制流表,控制NFV网络环境中的报文转发;
第二步,将NFV报文转发系统部署在NFV的网络环境中,方法是:
2.1在NFV网络运行的主机中启动NFV报文转发系统;
2.2将NFV报文转发系统与NFV网络环境中的分类器相连;
2.3将NFV报文转发系统与NFV网络环境中的NFV管理与编排器相连;
2.4初始化NFV报文转发系统的参数配置文件,即将NFV管理与编排器中的OVS网桥名称、SF节点数据和SFC定义数据配置到参数配置文件中;
第三步,SF网络数据构建部件从参数配置文件读取NFV网络中OVS网桥名称、每个SF节点的信息,获取每个SF节点接口在NFV网络环境中的接口编号,构建SF网络数据链表SF_list,将SF_list发送给SFC数据构建部件,具体方法是:
3.1SF网络数据构建部件定义SF网络数据链表SF_list,并初始化SF_list为空;
3.2从参数配置文件读取NFV网络中OVS网桥名称,设为ovs_name;从参数配置文件读取NFV网络中SF节点数量N;定义循环变量i1=1;
3.3新建SF网络数据链表元素SF_i;从参数配置文件读取第i1个SF节点的名称,设为sfi_name;从参数配置文件读取第i1个SF节点的MAC地址,设为sfi_mac;令:
SF_i->sf_name=sfi_name;
SF_i->sf_mac=sfi_mac;
其中SF_i->sf_name表示SF_i的sf_name,SF_i->sf_mac表示SF_i的sf_mac;
3.4获取SF_i的接口在NFV网络中的编号,方法是:
3.4.1获取网桥ovs_name上的NI个接口的接口编号及MAC地址,NI为ovs_name网桥上的接口数量:
3.4.2从3.4.1步的输出中找到MAC地址与SF_i->sf_mac相同的接口,设该接口编号为i_id;
3.4.3令SF_i->sf_id=i_id;
3.5将SF_i加入SF_list;
3.6令i1=i1+1,如果i1≤N,转步骤3.3,否则将SF_list输出给SFC数据构建部件,转第四步;
第四步,SFC数据构建部件从SF网络数据构建部件接收SF_list,从参数配置文件读取SFC定义数据,根据SF_list和SFC定义数据构建SFC结构数据,并将SFC结构数据输出给报文转发控制部件,具体方法是:
4.1初始化SFC结构数据sfc为空;
4.2从SF网络数据构建部件接收SF_list,从配置文件读取SFC名字sfcname、SFC服务IP地址sfcip、SFC中SF节点数量sfn、按照报文正向转发先后顺序排列的SF名字sfname[i],i=1,2,…,sfn;
4.3根据从配置文件读取的SFC定义数据为sfc赋值,令:
sfc->sfc_name=sfcname...

【专利技术属性】
技术研发人员:原玉磊时向泉苏金树陈曙晖陶静赵宝康
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1