CN111800342A - 一种基于ovs的nfv报文转发方法 - Google Patents
一种基于ovs的nfv报文转发方法 Download PDFInfo
- Publication number
- CN111800342A CN111800342A CN202010634384.8A CN202010634384A CN111800342A CN 111800342 A CN111800342 A CN 111800342A CN 202010634384 A CN202010634384 A CN 202010634384A CN 111800342 A CN111800342 A CN 111800342A
- Authority
- CN
- China
- Prior art keywords
- sfc
- message
- node
- ovs
- nfv
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
Abstract
本发明公开了一种基于OVS的NFV报文转发方法,目的是解决服务功能链节点间报文转发量大、SFC转发效率低的问题。技术方案是先构建由SF网络数据构建部件、SFC数据构建部件、报文转发控制部件、参数配置文件组成的NFV报文转发系统并将该系统部署在NFV的网络环境中。SF网络数据构建部件根据OVS网桥名称、SF节点的信息构建SF网络数据链表SF_list;SFC数据构建部件根据SF_list和SFC定义数据构建SFC结构数据sfc;报文转发控制部件根据sfc生成正向传输流表和反向传输流表;报文转发控制部件根据正向和反向传输流表完成NFV报文转发。采用本发明可以减少节点数量,避免报文在各个节点间导流时的复杂路由策略计算,避免设计新的应用协议和应用协议处理,极大提高了SFC转发性能。
Description
技术领域
本发明涉及计算机网络领域,尤其涉及一种基于OVS(OpenVSwitch)流表的避免NSH协议封装的NFV报文转发方法。
背景技术
传统网络架构使用大量专用硬件设备,来提供防火墙、入侵防御、网络地址转换等网络功能。随着大数据、云计算等新兴行业的迅速发展,应用对网络的要求越来越高,部署新的应用往往需要新的专用设备和网络的支持,为网络运营成本和运维带来很大挑战。为应对这些问题,欧洲电信标准协会(EuropeanTelecommunication Standards Institute,ETSI)提出网络功能虚拟化(Network FunctionVirtualization,NFV)。NFV技术利用普通商用服务器为网络功能提供虚拟机、容器等运行环境,用虚拟机或容器中运行的软件来替换网络中硬件设备,提高网络功能的灵活性,降低投资成本、研发成本和运维成本。
在NFV中,一条数据流需要按顺序经过多个网络功能处理,如先经过防火墙,再经过入侵检测,再经过IPsec(Internet Protocol Security,互联网安全协议),最后经过NAT(Network Address Translation,网络地址转换)等,这样的一条串联网络功能的链被称为网络服务功能链(ServiceFunction Chaining,SFC)。因此网络服务功能链的实现决定了NFV技术应用的效果和性能。
根据IETF(The Internet Engineering Task Force:互联网工程任务组)的SFC工作组以及RFC7665标准,网络服务功能链通过多个功能节点来实现,功能节点包括:Classifier(分类器),SFF(Service Function Forwarder,服务功能转发器),SF(ServiceFunction,服务功能),SFC Proxy(服务功能代理)。为了使报文能够在各个SF节点之间灵活转发,RFC8300标准定义了NSH(Network Service Header,网络业务报头)用于封装报文。其中,Classifier负责识别数据流(包括多个报文),并且将数据流和SFC进行关联,将数据流送到对应的SFC上去处理。SFF负责对封装了NSH的报文,根据NSH包含的业务路径标识和业务标识进行转发。SFC Proxy是SF的代理,对于需要送给SF的报文,SFC Proxy为SF解掉NSH封装;对从SF收到的报文,SFC Proxy负责进行NSH封装,再发给其他节点。
在传统的服务功能链中,为了实现报文在服务功能链中的转发,每个服务功能(即SF节点)的实现需要增加转发节点(即SFF节点)和代理节点(即SFC Proxy节点),同时由于报文在多个节点间的转发增加了传输延时,且由于封装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节点和SFC Proxy节点,避免了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,Management And NetworkOrchestration,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_id),并将SF网络数据链表输出给SFC数据构建部件。
SFC数据构建部件与SF网络数据构建部件、报文转发控制部件、参数配置文件相连。它从SF网络数据构建部件接收SF网络数据链表,从参数配置文件读取SFC定义数据(包括SFC名字sfcname,SFC服务IP地址sfcip,SFC中SF节点数量sfn,按照报文正向转发先后顺序排列的SF名字序列sfname[i],i=1,2,…,sfn),根据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网络环境中的分类器相连,使NFV报文转发系统的报文转发控制部件可以从分类器接收报文,也可以向分类器发送报文。
2.3将NFV报文转发系统与NFV网络环境中的NFV管理与编排器相连。
2.4初始化NFV报文转发系统的参数配置文件,即将NFV管理与编排器中的OVS网桥名称、SF节点数据和SFC定义数据配置到参数配置文件中。
第三步,SF网络数据构建部件从参数配置文件读取NFV网络中OVS网桥名称、每个SF节点的信息,通过OVS提供的命令获取每个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提供的如下命令获取网桥ovs_name上的NI个接口的信息,NI为ovs_name网桥上的接口数量:
ovs-ofctl show ovs_name;
该命令的执行结果是输出当前网络环境中ovs_name上的NI个接口的接口编号及MAC地址。
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;
sfc->sfc_ip=sfcip;
sfc->sfc_sfn=sfn;
sfc->sfc_sfname[i]=sfname[i],i=1,2,…,sfn。
4.4根据SF_list为sfc赋值,具体方法为:
4.4.1定义循环变量i2=1。
4.4.2从SF网络数据链表SF_list中找出sf_name域与sfname[i2]相同的元素,设为sf_i2。
4.4.3令:
sfc->sfc_sfmac[i2]=sf_i2->sf_mac;
sfc->sfc_sfid[i2]=sf_i2->sf_id;
4.4.4令i2=i2+1,如果i2≤sfn,转步骤4.4.2,否则将sfc输出给报文转发控制部件,转第五步。
第五步,报文转发控制部件根据从SFC数据构建部件接收的SFC结构数据(即sfc),生成控制报文转发的正向传输流表和反向传输流表;具体方法是:
5.1报文转发控制部件生成正向传输流表并配置OVS以控制报文正向传输。具体方法为:
5.1.1定义循环变量i3,令i3=1。
5.1.2根据sfc和i3生成正向传输流表flow1_i3:
flow1_i3=”ip,in_port=sfc->sfc_sfid[i3],nw_dst=sfc->sfc_ip actions=output:sfc->sfc_sfid[i3+1]”。
表示流表flow1_i3将第i3个SF节点(SF节点接口编号为sfc->sfc_sfid[i3])输出的、协议号为ip并且目的IP地址为sfc->sfc_ip的报文转发至第i3+1个SF节点(SF节点接口编号为sfc->sfc_sfid[i3+1])。
5.1.3使用OVS提供的ovs-ofctl命令配置OVS:
ovs-ofctladd-flow ovs_name flow1_i3,该命令为OVS网桥ovs_name配置报文转发流表flow1_i3。
5.1.4令i3=i3+1,如果i3<sfn,转步骤5.1.2,否则转步骤5.2。
5.2报文转发控制部件生成反向传输流表并配置OVS以控制报文反向传输。具体方法为:
5.2.1定义循环变量i4,令i4=sfn。
5.2.2根据sfc和i4生成反向传输流表flow2_i4:
flow2_i4=”ip,in_port=sfc->sfc_sfid[i4],nw_src=sfc->sfc_ip actions=output:sfc->sfc_sfid[i4-1]”
流表flow2_i4将第i4个SF节点(SF节点接口编号为sfc->sfc_sfid[i4])输出的、协议号为ip并且源IP地址为sfc->sfc_ip的报文转发至第i4-1个SF节点(SF节点接口编号为sfc->sfc_sfid[i4-1])。
5.2.3使用OVS提供的ovs-ofctl命令配置OVS:
ovs-ofctladd-flow ovs_name flow2_i4,该命令为OVS网桥ovs_name配置报文转发流表flow2_i4。
5.2.4令i4=i4-1,如果i4>1,转步骤5.2.2,否则转第六步。
第六步,报文转发控制部件根据正向传输流表和反向传输流表完成NFV报文转发。具体方法为:
6.1报文转发控制部件从分类器和各个SF节点接收报文,获取报文的协议号、输入端口、源IP地址、目的IP地址。如果报文的协议号不是ip,转步骤6.4。如果报文的协议号是ip,转步骤6.2。
6.2从流表flow1_1,flow1_2,…,flow1_i3,…,flow1_sfn-1这sfn-1个正向传输流表中找出in_port与报文输入端口相同并且nw_dst与报文目的IP地址相同的流表,如果没有找到,转步骤6.3;如果找到,设为flow1_j3(正常情况下只能匹配到一个这样的正向传输流表,如果有多个,只使用第一个);将报文转发给第j3+1个SF节点,转步骤6.1,继续接收报文。
6.3从流表flow2_sfn,flow2_sfn-1,…,flow2_i4,…,flow2_2这sfn-1个反向传输流表中找出in_port与报文输入端口相同并且nw_src与报文源IP地址相同的流表,如果没有找到,转步骤6.4;如果找到,设为flow2_j4(正常情况下只能匹配到一个这样的反向传输流表,如果有多个,只使用第一个),将报文转发给第j4-1个SF节点,转步骤6.1,继续接收报文。
6.4将报文转发至报文目的IP地址所在节点。转步骤6.1,继续接收报文。
采用本发明可以达到如下技术效果:
1)本发明第一步构建了基于OVS的NFV报文转发系统,通过SF网络数据构建部件和SFC数据构建部件处理NFV体系结构中NFV管理与编排器输出的网络环境数据、SF节点数据及SFC定义数据,通过报文转发控制部件来控制NFV中报文根据SFC定义的顺序转发(第五步和第六步),避免了为每个SF节点增加SFF节点和SFC Proxy节点,减少了SFC中的节点数量,同时避免了报文在各个SF节点间导流时的复杂路由策略计算。
2)本发明第五步报文转发控制部件在第四步构建的SFC结构数据基础上,生成控制报文正向传输的正向传输流表和控制报文反向传输的反向传输流表,并根据流表直接控制报文转发(第六步),避免在服务功能链中设计新的应用协议,同时避免了SFC中各个SF节点的应用协议处理,极大提高了服务功能链运行的性能。
附图说明
图1是ETSI提出的NFV体系结构及本发明在NFV体系结构中的位置
图2是本发明总体流程图;
图3是本发明逻辑结构图;
具体实施方式
下面结合附图,对本发明的实施方式进行说明。
如图2所示,本发明包括以下步骤:
第一步,构建NFV报文转发系统。该系统如图3所示,由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管理与编排器提供。
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_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的网络环境中。如图1所示,具体方法是:
2.1在NFV网络运行的主机中启动NFV报文转发系统。
2.2将NFV报文转发系统与NFV网络环境中的分类器相连,使NFV报文转发系统的报文转发控制部件可以从分类器接收报文,也可以向分类器发送报文。
2.3将NFV报文转发系统与NFV网络环境中的NFV管理与编排器相连。
2.4初始化NFV报文转发系统的参数配置文件,即将NFV管理与编排器中的OVS网桥名称、SF节点数据和SFC定义数据配置到参数配置文件中。
第三步,SF网络数据构建部件从参数配置文件读取NFV网络中OVS网桥名称、每个SF节点的信息,通过OVS提供的命令获取每个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提供的如下命令获取网桥ovs_name上的NI个接口的信息,NI为ovs_name网桥上的接口数量:
ovs-ofctl show ovs_name;
该命令的执行结果是输出当前网络环境中ovs_name上的NI个接口的接口编号及MAC地址。
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;
sfc->sfc_ip=sfcip;
sfc->sfc_sfn=sfn;
sfc->sfc_sfname[i]=sfname[i],i=1,2,…,sfn。
4.4根据SF_list为sfc赋值,具体方法为:
4.4.1定义循环变量i2=1。
4.4.2从SF网络数据链表SF_list中找出sf_name域与sfname[i2]相同的元素,设为sf_i2。
4.4.3令:
sfc->sfc_sfmac[i2]=sf_i2->sf_mac;
sfc->sfc_sfid[i2]=sf_i2->sf_id;
4.4.4令i2=i2+1,如果i2≤sfn,转步骤4.4.2,否则将sfc输出给报文转发控制部件,转第五步。
第五步,报文转发控制部件根据从SFC数据构建部件接收的SFC结构数据(即sfc),生成控制报文转发的正向传输流表和反向传输流表;具体方法是:
5.1报文转发控制部件生成正向传输流表并配置OVS以控制报文正向传输。具体方法为:
5.1.1定义循环变量i3,令i3=1。
5.1.2根据sfc和i3生成正向传输流表flow1_i3:
flow1_i3=”ip,in_port=sfc->sfc_sfid[i3],nw_dst=sfc->sfc_ip actions=output:sfc->sfc_sfid[i3+1]”。
表示流表flow1_i3将第i3个SF节点(SF节点接口编号为sfc->sfc_sfid[i3])输出的、协议号为ip并且目的IP地址为sfc->sfc_ip的报文转发至第i3+1个SF节点(SF节点接口编号为sfc->sfc_sfid[i3+1])。
5.1.3使用OVS提供的ovs-ofctl命令配置OVS:
ovs-ofctladd-flow ovs_name flow1_i3,该命令为OVS网桥ovs_name配置报文转发流表flow1_i3。
5.1.4令i3=i3+1,如果i3<sfn,转步骤5.1.2,否则转步骤5.2。
5.2报文转发控制部件生成反向传输流表并配置OVS以控制报文反向传输。具体方法为:
5.2.1定义循环变量i4,令i4=sfn。
5.2.2根据sfc和i4生成反向传输流表flow2_i4:
flow2_i4=”ip,in_port=sfc->sfc_sfid[i4],nw_src=sfc->sfc_ip actions=output:sfc->sfc_sfid[i4-1]”
流表flow2_i4将第i4个SF节点(SF节点接口编号为sfc->sfc_sfid[i4])输出的、协议号为ip并且源IP地址为sfc->sfc_ip的报文转发至第i4-1个SF节点(SF节点接口编号为sfc->sfc_sfid[i4-1])。
5.2.3使用OVS提供的ovs-ofctl命令配置OVS:
ovs-ofctladd-flow ovs_name flow2_i4,该命令为OVS网桥ovs_name配置报文转发流表flow2_i4。
5.2.4令i4=i4-1,如果i4>1,转步骤5.2.2,否则转第六步。
第六步,报文转发控制部件根据正向传输流表和反向传输流表完成NFV报文转发。具体方法为:
6.1报文转发控制部件从分类器和各个SF节点接收报文,获取报文的协议号、输入端口、源IP地址、目的IP地址。如果报文的协议号不是ip,转步骤6.4。如果报文的协议号是ip,转步骤6.2。
6.2从流表flow1_1,flow1_2,…,flow1_i3,…,flow1_sfn-1这sfn-1个正向传输流表中找出in_port与报文输入端口相同并且nw_dst与报文目的IP地址相同的流表,如果没有找到,转步骤6.3;如果找到,设为flow1_j3;将报文转发给第j3+1个SF节点,转步骤6.1,继续接收报文。
6.3从流表flow2_sfn,flow2_sfn-1,…,flow2_i4,…,flow2_2这sfn-1个反向传输流表中找出in_port与报文输入端口相同并且nw_src与报文源IP地址相同的流表,如果没有找到,转步骤6.4;如果找到,设为flow2_j4,将报文转发给第j4-1个SF节点,转步骤6.1,继续接收报文。
6.4将报文转发至报文目的IP地址所在节点。转步骤6.1,继续接收报文。
Claims (4)
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;
sfc->sfc_ip=sfcip;
sfc->sfc_sfn=sfn;
sfc->sfc_sfname[i]=sfname[i],i=1,2,…,sfn;
4.4根据SF_list为sfc赋值,具体方法为:
4.4.1定义循环变量i2=1;
4.4.2从SF网络数据链表SF_list中找出sf_name域与sfname[i2]相同的元素,设为sf_i2;
4.4.3令:
sfc->sfc_sfmac[i2]=sf_i2->sf_mac;
sfc->sfc_sfid[i2]=sf_i2->sf_id;
4.4.4令i2=i2+1,如果i2≤sfn,转步骤4.4.2,否则将sfc输出给报文转发控制部件,转第五步;
第五步,报文转发控制部件根据从SFC数据构建部件接收的SFC结构数据sfc,生成控制报文转发的正向传输流表和反向传输流表,具体方法是:
5.1报文转发控制部件生成正向传输流表并配置OVS以控制报文正向传输;具体方法为:
5.1.1定义循环变量i3,令i3=1;
5.1.2根据sfc和i3生成正向传输流表flow1_i3:
flow1_i3=”ip,in_port=sfc->sfc_sfid[i3],nw_dst=sfc->sfc_ip
actions=output:sfc->sfc_sfid[i3+1]”;
表示将节点接口编号为sfc->sfc_sfid[i3]的SF节点输出的、协议号为ip并且目的IP地址为sfc->sfc_ip的报文转发至SF节点接口编号为sfc->sfc_sfid[i3+1]的SF节点;
5.1.3使用OVS提供的ovs-ofctl命令配置OVS:
ovs-ofctladd-flow ovs_name flow1_i3,该命令为OVS网桥ovs_name配置报文转发流表flow1_i3;
5.1.4令i3=i3+1,如果i3<sfn,转步骤5.1.2,否则转步骤5.2;
5.2报文转发控制部件生成反向传输流表并配置OVS以控制报文反向传输;具体方法为:
5.2.1定义循环变量i4,令i4=sfn;
5.2.2根据sfc和i4生成反向传输流表flow2_i4:
flow2_i4=”ip,in_port=sfc->sfc_sfid[i4],nw_src=sfc->sfc_ip
actions=output:sfc->sfc_sfid[i4-1]”;
表示将SF节点接口编号为sfc->sfc_sfid[i4]的SF节点输出的、协议号为ip并且源IP地址为sfc->sfc_ip的报文转发至SF节点接口编号为sfc->sfc_sfid[i4-1]的SF节点;
5.2.3使用OVS提供的ovs-ofctl命令配置OVS:
ovs-ofctladd-flow ovs_name flow2_i4,该命令为OVS网桥ovs_name配置报文转发流表flow2_i4;
5.2.4令i4=i4-1,如果i4>1,转步骤5.2.2,否则转第六步;
第六步,报文转发控制部件收发报文并完成NFV报文转发,具体方法为:
6.1报文转发控制部件从分类器和各个SF节点接收报文,获取报文的协议号、输入端口、源IP地址、目的IP地址;如果报文的协议号不是ip,转步骤6.4;如果报文的协议号是ip,转步骤6.2;
6.2从流表flow1_1,flow1_2,…,flow1_i3,…,flow1_sfn-1这sfn-1个正向传输流表中找出in_port与报文输入端口相同并且nw_dst与报文目的IP地址相同的流表,如果没有找到,转步骤6.3;如果找到,设为flow1_j3;将报文转发给第j3+1个SF节点,转步骤6.1,继续接收报文;
6.3从流表flow2_sfn,flow2_sfn-1,…,flow2_i4,…,flow2_2这sfn-1个反向传输流表中找出in_port与报文输入端口相同并且nw_src与报文源IP地址相同的流表,如果没有找到,转步骤6.4;如果找到,设为flow2_j4,将报文转发给第j4-1个SF节点,转步骤6.1,继续接收报文;
6.4将报文转发至报文目的IP地址所在节点,转步骤6.1,继续接收报文。
2.如权利要求1所述的一种基于OVS的NFV报文转发方法,其特征在于SF节点网络接口的编号利用NFV网络环境中的网络工具ovs-ofctl获取。
3.如权利要求1所述的一种基于OVS的NFV报文转发方法,其特征在于3.4.1步获取网桥ovs_name上的NI个接口的接口编号及MAC地址的方法是通过OVS提供的命令ovs-ofctlshow ovs_name。
4.如权利要求1所述的一种基于OVS的NFV报文转发方法,其特征在于6.2步如果找到了多个in_port与报文输入端口相同并且nw_dst与报文目的IP地址相同的正向传输流表,则将第一个设为flow1_j3;6.3步如果找到了多个in_port与报文输入端口相同并且nw_src与报文源IP地址相同的反向传输流表,则将第一个设为flow2_j4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010634384.8A CN111800342B (zh) | 2020-07-02 | 2020-07-02 | 一种基于ovs的nfv报文转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010634384.8A CN111800342B (zh) | 2020-07-02 | 2020-07-02 | 一种基于ovs的nfv报文转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111800342A true CN111800342A (zh) | 2020-10-20 |
CN111800342B CN111800342B (zh) | 2021-12-24 |
Family
ID=72810128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010634384.8A Active CN111800342B (zh) | 2020-07-02 | 2020-07-02 | 一种基于ovs的nfv报文转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111800342B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112367258A (zh) * | 2020-10-29 | 2021-02-12 | 浪潮云信息技术股份公司 | 基于Openstack架构实现服务链功能的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106059650A (zh) * | 2016-05-24 | 2016-10-26 | 北京交通大学 | 基于sdn和nfv技术的天地一体化网络架构及数据传输方法 |
CN106953770A (zh) * | 2017-04-19 | 2017-07-14 | 南京大学 | 一种轻量级网络功能虚拟化系统及其虚拟化方法 |
US20180316543A1 (en) * | 2017-04-28 | 2018-11-01 | Electronics And Telecommunications Research Institute | Apparatus and method for managing integrated platform of wired and mobile communication services |
CN109743244A (zh) * | 2019-03-21 | 2019-05-10 | 山东华辰泰尔信息科技股份有限公司 | 一种基于sdn与nfv技术实现高速互联互通的系统和方法 |
CN109922002A (zh) * | 2017-12-13 | 2019-06-21 | 中国电信股份有限公司 | 基于SFC的业务数据转发方法以及Overlay系统 |
CN110391993A (zh) * | 2019-07-12 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种数据处理方法及系统 |
US20200076686A1 (en) * | 2016-12-09 | 2020-03-05 | British Telecommunications Public Limited Company | Implementing service function chains |
-
2020
- 2020-07-02 CN CN202010634384.8A patent/CN111800342B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106059650A (zh) * | 2016-05-24 | 2016-10-26 | 北京交通大学 | 基于sdn和nfv技术的天地一体化网络架构及数据传输方法 |
US20200076686A1 (en) * | 2016-12-09 | 2020-03-05 | British Telecommunications Public Limited Company | Implementing service function chains |
CN106953770A (zh) * | 2017-04-19 | 2017-07-14 | 南京大学 | 一种轻量级网络功能虚拟化系统及其虚拟化方法 |
US20180316543A1 (en) * | 2017-04-28 | 2018-11-01 | Electronics And Telecommunications Research Institute | Apparatus and method for managing integrated platform of wired and mobile communication services |
CN109922002A (zh) * | 2017-12-13 | 2019-06-21 | 中国电信股份有限公司 | 基于SFC的业务数据转发方法以及Overlay系统 |
CN109743244A (zh) * | 2019-03-21 | 2019-05-10 | 山东华辰泰尔信息科技股份有限公司 | 一种基于sdn与nfv技术实现高速互联互通的系统和方法 |
CN110391993A (zh) * | 2019-07-12 | 2019-10-29 | 苏州浪潮智能科技有限公司 | 一种数据处理方法及系统 |
Non-Patent Citations (2)
Title |
---|
JEREMY FANGUEDE;MICHELE PAOLINO;DIMITAR DIMITROV;DANIEL RAHO: "A novel pflua-based OpenFlow implementation for VOSYSwitch", 《2018 THIRD INTERNATIONAL CONFERENCE ON FOG AND MOBILE EDGE COMPUTING (FMEC)》 * |
唐强: "面向网络功能虚拟化的加速关键技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112367258A (zh) * | 2020-10-29 | 2021-02-12 | 浪潮云信息技术股份公司 | 基于Openstack架构实现服务链功能的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111800342B (zh) | 2021-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220368654A1 (en) | Managing network traffic in virtual switches based on logical port identifiers | |
US8913613B2 (en) | Method and system for classification and management of inter-blade network traffic in a blade server | |
US8934486B2 (en) | System and method for implementing multicast over a label-switched core network | |
CN108737272B (zh) | 一种云计算中高性能路由转发方法 | |
CN110601983A (zh) | 一种协议无感知源路由转发方法及系统 | |
US20140269415A1 (en) | Credit-based flow control for multicast packets in lossless ethernet networks | |
CN105453492A (zh) | 具有第三层分布式路由器功能的交换机集群 | |
CN103428094A (zh) | 开放流OpenFlow系统中的报文转发方法及装置 | |
CN105706398A (zh) | 重叠网络中的虚拟端口信道弹回 | |
JP5993817B2 (ja) | キャリア網における経路制御システム及び方法 | |
CN110838954B (zh) | 一种轻量级大规模自主网络协议功能测试方法 | |
Dixit et al. | Composing heterogeneous SDN controllers with flowbricks | |
US10581738B2 (en) | Efficient inter-VLAN routing in openflow networks | |
Bonola et al. | Implementing advanced network functions for datacenters with stateful programmable data planes | |
CN111800342B (zh) | 一种基于ovs的nfv报文转发方法 | |
Laassiri et al. | Evaluation of the QoS parameters in different SDN architecture using Omnet 4.6++ | |
Koldehofe et al. | Tutorial: Event-based systems meet software-defined networking | |
Geissler et al. | Tablevisor 2.0: Towards full-featured, scalable and hardware-independent multi table processing | |
CN113193998B (zh) | 网络仿真方法、可编程交换机和计算机可读存储介质 | |
WO2023116268A1 (zh) | 网络隔离方法和系统及代理设备 | |
Kataria et al. | Programmable Data Plane for New IP using eXpress Data Path (XDP) in Linux | |
WO2015154393A1 (zh) | 业务节点能力处理方法、装置、业务分类器及业务控制器 | |
JP2015231212A (ja) | データ転送システム、データ転送サーバ、データ転送方法、および、プログラム | |
Altangerel et al. | Performance analysis of sdn controllers: Pox, floodlight and opendaylight | |
Becerra et al. | Solving MP-TCP‘s Shared Bottlenecks Using a SDN with OpenDayLight as the Controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |