CN111857945A - 数据包传输、管理方法、装置及数据转发设备、存储介质 - Google Patents
数据包传输、管理方法、装置及数据转发设备、存储介质 Download PDFInfo
- Publication number
- CN111857945A CN111857945A CN201910365452.2A CN201910365452A CN111857945A CN 111857945 A CN111857945 A CN 111857945A CN 201910365452 A CN201910365452 A CN 201910365452A CN 111857945 A CN111857945 A CN 111857945A
- Authority
- CN
- China
- Prior art keywords
- data
- data packet
- entry
- sfl
- plane
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种数据包传输、管理方法、装置及数据转发设备、存储介质,针对相关技术芯片不支持直接存储与数据包Geneve有关的信息,导致数据包的Geneve隧道头和Option TLV被剥离,完成对应SF的处理之后,无法再次进行通用网络虚拟化封装,影响数据服务功能链实现问题,通过数据面与控制面对数据包SPI、SI与SFL option TLV的交互,从而使得数据面可以在控制面的控制下,通过数据面管理表存储下SPI、SI与SFL option TLV的映射关系,当数据包从SF处返回等待封装时,可以直接通过查询数据面管理表获取到该数据包对应的SFL option TLV,实现通用网络虚拟化封装。
Description
技术领域
本发明涉及通信领域,尤其涉及一种数据包传输、管理方法、装置及数据转发设备、存储介质。
背景技术
对数据包进行Geneve(Generic Network Virtualization Encapsulation,通用网络虚拟化封装)可以在数据包中携带SFP(Service function path,服务功能路径)信息和NSH(Network service header,网络服务头)。其中,NSH封装将包括SPI(Service pathidentifier,服务路径标识)和SI(Service index,服务索引)。
当数据包在SFF(服务功能转发器)间转发时,一个SFF从另外的SFF接收到数据包之后,需要先将该数据包的Geneve隧道头和SFL Option TLV(服务功能列表选项三元组),也即会剥离数据包所携带的SFP信息剥离,然后才能传输给对应对应的SF(Servicefunction,服务功能)处理。而当SF处理完该数据包之后,会将处理完的数据包再传输给该SFF,让该SFF对该数据包进行通用网络虚拟化封装。SFF在对数据包进行通用网络虚拟化封装时,需要该数据包的SPI、SFP信息以及当前的SI。但在目前通用ASIC(ApplicationSpecific Integrated Circuit,专用集成电路)交换芯片、以及支持可编程交换芯片的语言(如P4、NPL)都不支持交换芯片直接存储于数据包通用网络虚拟化封装有关的信息,也即,当SFF将一个数据包的SFP信息剥离后,交换芯片无法记录该数据包对应的SFP信息,进而导致在对该数据包进行Geneve时,无法获取到该数据包对应的SFP信息,从而无法实现针对该数据包的Geneve。
发明内容
本发明实施例提供的数据包传输、管理方法、装置及数据转发设备、存储介质,主要解决的技术问题是:交换机的交换芯片不支持存储数据包与通用网络虚拟化封装有关的信息,导致SF处理过的数据包因SFP被剥离,无法再次进行通用网络虚拟化封装的问题。
为解决上述技术问题,本发明实施例提供一种数据包传输方法,包括:
接收并解析数据包得到数据包的原封装信息,原封装信息包括SPI、服务索引SI以及SFL option TLV;
将解析得到的原封装信息上报到控制面;
接收控制面下发的表项新增指令,并根据表项新增指令将与原封装信息对应的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容;
接收到服务功能SF发送的目标数据包时,根据目标数据包携带的SPI和SI查询数据面管理表,确定目标数据包对应的SFL option TLV;
根据查询得到的SFL option TLV封装目标数据包并传输目标数据包。
本发明实施例还提供一种数据包传输管理方法,包括:
接收数据面上报的数据包的原封装信息,原封装信息包括SPI、SI以及SFL optionTLV;
调用数据面的接口向数据面下发表项新增指令,表项新增指令用于控制数据面在数据面管理表中新增原封装信息对应的表项,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容。
本发明实施例还提供一种数据包传输装置,数据包传输装置包括:
接收解析模块,用于接收并解析数据包得到数据包的原封装信息,原封装信息包括SPI、SI以及SFL option TLV;
信息上传模块,将解析得到的原封装信息上报到控制面;
表项新增模块,用于接收控制面下发的表项新增指令,并根据表项新增指令将与原封装信息对应的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容;
信息查询模块,用于接收到服务功能SF发送的目标数据包时,根据目标数据包携带的SPI和SI查询数据面管理表,确定目标数据包对应的SFL option TLV;
封装传输模块,用于根据查询得到的SFL option TLV封装目标数据包并传输目标数据包。
本发明实施例还提供一种数据包传输管理装置,数据包传输管理装置包括:
信息接收模块,用于接收数据面上报的数据包的原封装信息,原封装信息包括SPI、SI以及SFL option TLV;
指令发送模块,用于调用数据面的接口向数据面下发表项新增指令,表项新增指令用于控制数据面在数据面管理表中新增原封装信息对应的表项,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容。
本发明实施例还提供一种数据转发设备,包括处理器、存储器及通信总线;
通信总线用于实现处理器和存储器之间的连接通信;
处理器用于执行存储器中存储的数据包传输程序,以实现上述数据包传输方法的步骤,或处理器用于执行存储器中存储的数据包传输程序,以实现上述数据包传输管理方法的步骤。
本发明实施例还提供一种存储介质,其特征在于,存储介质存储有数据包传输程序和数据包传输管理程序中的至少一个,数据包传输程序可被一个或者多个处理器执行,以实现上述数据包传输方法的步骤;数据包传输管理程序可被一个或者多个处理器执行,以实现上述数据包传输管理方法的步骤。
本发明的有益效果是:
本发明实施例提供的数据包传输、管理方法、装置及数据转发设备、存储介质,针对相关技术中芯片不支持直接存储与数据包Geneve有关的信息,导致数据包的Geneve隧道头和Option TLV被剥离,完成对应SF的处理之后,无法再次进行通用网络虚拟化封装,影响数据服务功能链实现问题,本实施例提供的数据包传输方法与数据包传输管理方法,通过数据面接收并解析数据包得到数据包的原封装信息,然后将原封装信息上报到控制面。控制面在接收到原始封装信息之后,会控制数据面在数据面管理表中添加与该原封装信息对应的表项,因为数据面管理表以SPI、SI为表关键字,以SFL option TLV为表关键字对应的表内容,因此,该表项即记录了SPI、SI与SFL option TLV间的映射关系。当SF将Geneve隧道头和Option TLV剥离的数据包处理完成以后,数据面可以根据数据包所携带的SPI、SI,从数据面管理表查找到该数据包对应的SFL option TLV,从而根据该数据包的SPI、SI以及SFL option TLV完成通用网络虚拟化封装,并实现数据包向下一节点的传输。本发明实施例提供的数据包传输、管理方案,通过数据面与控制面对数据包SPI、SI与SFL option TLV的交互,从而使得数据面可以在控制面的控制下,通过数据面管理表存储下SPI、SI与SFLoption TLV的映射关系,当数据包从SF处返回等待封装时,可以直接通过查询数据面管理表获取到该数据包对应的SFL option TLV,实现通用网络虚拟化封装。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1为本发明实施例一中示出的Geneve overlay网络的服务链示意图;
图2为本发明实施例一中示出的Geneve隧道头的数据结构示意图;
图3为本发明实施例一中示出的SFL Option TLV的数据结构示意图;
图4为本发明实施例一中提供的数据转发设备中数据面与控制面在数据传输方案中的一种交互示意图;
图5为本发明实施例二中提供的控制面的数据包传输管理方法的一种流程图;
图6为本发明实施例二中提供的数据面进行表项删除的一种流程图;
图7为本发明实施例二中提供的控制面进行表项老化评估的一种流程图;
图8为本发明实施例二中示出的控制面接收到数据面上报的原封装信息后的处理流程图;
图9为本发明实施例四中提供的数据包传输装置的一种结构示意图;
图10为本发明实施例四中提供的数据包传输管理装置的一种结构示意图;
图11为本发明实施例五中提供的数据转发设备的一种硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
数据报文在网络中传递时,往往需要经过各种各样的业务服务功能节点,才能保证网络能够按照设计要求,给网络管理人员提供安全、快速、稳定的网络服务。这些业务服务功能节点(SF)包括大家熟知的防火墙(FireWalls)、入侵检测(Intrusion PreventionSystem)、负载均衡(Load Balancing)等。网络流量需要按照业务逻辑所要求的既定顺序穿过这些业务点,才能实现所需要的安全业务。
[RFC7665]文件定义了SFC(Service function chain,服务功能链)的体系结构,SFC将服务功能路径定义为数据包在实际遍历网络时将访问的服务功能转发器/服务功能的确定集合。
优化的SFP有助于构建高效的服务功能链,可用于根据分类规则以及元数据信息控制流量,以便为NFV(Network Function Virtualization,网络功能虚拟化)提供服务。元数据通常沿着服务功能路径在服务功能和服务功能转发器SFF之间传递。NVO3(NetworkVirtualization over Layer 3,第3层的网络虚拟化)域使用隧道和封装协议(如Geneve)为租户工作负载和在其域中运行的服务功能提供连接。
[RFC8300]文件定义了一种新的封装协议,网络服务头(NSH),用于对SFP和元数据进行编码。
[draft-boutros-nvo3-geneve-applicability-for-sfc]草案提出一种使用通用网络虚拟化封装(Geneve),来携带服务功能路径(SFP)信息和网络服务头(NSH)封装的方法。在该方案中,SFP将使用新的Geneve服务功能列表(SFL)选项实现传送,并且严格限制在处于相同网络虚拟化覆盖网络中的服务功能转发器和网络虚拟化边缘(NVE)之间的传送,NSH封装将包括服务路径标识和服务索引,NSH SI将作为VNF跳转到SFL的索引。
下面对[draft-boutros-nvo3-geneve-applicability-for-sfc]草案所提出的方案在数据面的转发流程进行说明:
1)Ingress操作(入口操作)
控制器可以对入口NVE节点进行编程以对流量进行分类并识别出服务功能路径,即路径中的服务功能集。入口NVE节点(SC)填充路径中的服务功能列表(SFL),然后根据SFL解析出第一服务功能,进行Geneve隧道封装。然后将服务索引设置为n,其中n是SFL中的元素的数量,并将Geneve数据包发送到第一个NVE(SFF),请参见图1示出的是Geneve overlay网络的服务链示意图。
2)Transit操作(过境操作)
数据包沿服务功能路径在服务功能转发器(SFF)间进行转发,在SFF上识别SFL选项,基于服务索引(SI)在列表中定位服务功能。
当数据包到达一个SFF后,该数据包的Geneve隧道头和SFL Option TLV将被剥离。请参见图2示出的Geneve隧道头的数据结构:
VER(2bit):即Version(版本),目前是0;
Opt Len(6bit):以4字节为单位,表明Variable Length Options(可用长度选项)的长度。因为只有6bit,所以Variable Length Options最多是252(63*4)字节。
O(1bit):表明这是一个OAM包,包含了控制信息,而非数据。Endpoint可以根据这个bit来优先处理这个包。
C(1bit):表明在Variable Length Options里面,存在一个或者多个Critical的option。当C被置位时,Variable Length Options必须被解析,如果当前Endpoint不支持GENEVE解析,那么应该丢弃数据包。如果C没有被置位,那么Endpoint可以根据Opt Len直接丢弃所有的Variable Length Options。
Rsvd.(6bit):保留字段。
Protocol Type(16bit):被封装的协议类型,例如Ethernet就是0x6558。这个字段的存在,使得GENEVE封装其他的二层协议成为可能。
VNI(24bit),即Virtual NETwork Identifier(VXLAN Network Identifier,虚拟可扩展局域网网络标识)。
Reserved(8bit):保留字段。
Variable Length Options:由TLV构成,包含了可扩展的元数据。
图3示出的SFL Option TLV的数据结构。
经过剥离处理后的数据包将被传递到SF或VNF,由SF或VNF对数据包进行对应的处理。当数据包携带SPI与SI一起从SF返回时,SFF应当基于数据包上的SPI和SI,确定出属于该数据包的SFL Option TLV。然后根据SFL解析下一服务功能,进行Geneve隧道封装,并将服务索引减1,将Geneve数据包发送到下一个NVE(SFF)。
3)Termination操作(结束操作)
最后一个SFF节点从前一SFF节点处接收的Geneve数据包的服务索引为1,服务索引为0的数据包将被丢弃。在沿服务功能路径的最后NVE节点处,NVE基于NSH服务索引在SFLOption TLV中定位服务功能。
Geneve隧道头和SFL Option TLV将被剥离,数据包将被传递到SF。当数据包从SF返回时,基于数据包上的NSH SPI或基于NVE将能够定位SFL Option TLV。此时服务索引为0,最后一个SFF将剥离数据包的NSH封装,将数据包继续转发至目的地。
在图1中,Geneve overlay网络1中包括四个SFF节点,数据包从src节点发送到SFF4,然后从SFF4传输到SFF3,在SFF3上,数据包的Geneve隧道头和Option TLV将被剥离,随后,SFF3将会将该数据包传输给其对应的SF1,由SF1对数据包进行处理。SF1对数据包的处理完成之后,将会把处理后的数据包返回给SFF3,SFF3再对数据包进行Geneve隧道封装之后发送到SFF2。数据包在SFF2与SF2上的处理,在SF2对数据包完成处理之后数据包的服务索引变为0,此时SFF2从SF处接收到服务索引为0的数据包后,将剥离数据包的NSH封装,并将数据包发送到SFF1,然后由SFF1发送给dst节点。
在图1当中,因为只有两个服务功能节点,所以,在一些情境下,当SFF2从SF2处接收到数据包之后,可以不再将数据包发送给SFF1,而直接将数据包发送到Geneve1之外。
可见,SFF(或NVE)应当要维护SFL Option TLV与NSH服务路径标识SPI之间的关联关系。不过,当SFF将一个数据包的SFP信息剥离后,目前的交换芯片无法记录该数据包对应的SFP信息,进而导致在对该数据包进行Geneve时,无法获取到该数据包对应的SFP信息,从而无法实现针对该数据包的Geneve,对此,本实施例提供一种数据传输方案,请参见图4示出的数据转发设备中数据面与控制面在数据传输方案中的交互示意图:
S402:数据面接收并解析数据包得到数据包的原封装信息。
应当明白的是,数据面是SFF的数据面,所以在本实施例中,数据面会从入口NVE节点或其他SFF处接收到数据包,该数据包采用通用网络虚拟化封装。当数据面接收到数据包之后,对该数据包进行Geneve隧道头和Option TLV的剥离等解析处理,从而获取到该数据包的原封装信息,这里所谓的原封装信息是指该数据包的SPI、SI以及SFL option TLV(服务功能列表选项三元组)。
对于一个数据包而言,无论其当前处于SFL中的哪一个节点上,其SPI与SFLoption TLV是始终不变的,而SI则会随着其所处的节点不同而不同,具体地,SI的取值随着数据包的传输过程而逐渐递减。数据面解析数据包得到的原封装信息中的SI是指数据面接收到该数据包时,数据包所携带的的SI。
S404:数据面将解析得到的原封装信息上报到控制面。
当数据面获取到数据包的原封装信息之后,可以将原封装信息上报给控制面,应当明白的是,控制面也是SFF的控制面。不过需要说明的是,数据面和控制面可能位于不同的实体设备上。
在本实施例中,数据面在解析得到原封装信息之后,不仅会将原封装信息上报给控制面,也会将剥离了Geneve隧道头和SFL option TLV的数据包发送给对应的SF,以便SF对该数据包进行对应的功能处理。
S406:控制面调用数据面的接口向数据面下发表项新增指令。
控制面会接收数据面上报的原封装信息,在接收到数据面上报的原封装信息之后,可以下发表项新增指令给数据面,让数据面在数据面管理表中新增与该原封装信息对应的表项。
应当明白的是,数据面管理表设置在数据面侧,由数据面设置。其用于维护记录数据包对应的SPI、SI与SFL option TLV之间的映射关系,以便数据面接收到自SF返回的数据包之后,还能够确定出该数据包的SFL option TLV,进而实现对该数据包的通用网络虚拟化封装。在本实施例中,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容,请参见表1示出的数据面管理表SFL_TABLE_data:
表1
SPI | SI | SFL option TLV |
7 | 6 | x |
2 | 2 | y |
…… | …… | …… |
n | 2 | v |
在表1当中,一行就是一个表项,从表1中可以看出,表中的一行包括一个SPI值,以及一个SI值,以及一个与该SPI及SI对应的SFL option TLV。所以,一个表项中就包括SPI、SI以及与该SPI、SI对应的SFL option TLV。通过SPI与SI的唯一组合,可以唯一确定出一个数据包,所以,当一个数据包携带SPI与SI从SF返回到SFF的数据面之后,数据面可以根据该数据包上携带的SPI与SI从数据面管理表上查找到对应的SFL option TLV信息。
控制面在向数据面下发表项新增指令时,可以调用数据面包括但不限于SDK(Software Development Kit,软件开发工具包)的接口进行指令下发。
S408:数据面根据表项新增指令将与原封装信息对应的SPI、SI以及SFL optionTLV作为一个表项添加到数据面管理表。
数据面在接收到控制面发送的表项新增指令之后,将会根据表项新增指令在数据面管理表中新增一个表项。通常,在控制面向数据面发送的表项新增指令中会携带新增表项的相关信息,包括该新增表项中的SPI、SI以及SFL option TLV。
应当理解的是,控制面通过表项新增指令指示数据面新增与原封装信息对应的表项,但这并不意味着新增表项中的SPI、SI以及SFL option TLV就是原封装信息中的SPI、SI以及SFL option TLV。
例如,在本实施例的一些示例当中,当SF接收到SFF数据面发送的数据包之后,会对数据包的SI进行递减处理,通常是递减“1”,这样,尽管SF发送给SFF的数据包与SFF发送给SF的数据包是同一个数据包,区别在于前者是数据包经对应功能处理之后,而后者是数据包经对应的功能处理之前。但这两个数据包所携带的SI确实不相同的,SF发送给SFF的数据包的SI值比SFF都发送给SF的数据包的SI值要小1。在这种情况下,数据面在对数据包进行网络虚拟化封装时,如果直接采用该数据包上当前的SPI与SI作为关键字在数据面管理表上查询,则数据面在预先新增该数据包对应的表项时,也应对应的在原封装信息中SI的基础上对SI进行递减更新。这里给一个示例,假定数据面上报的原封装信息中SI的值为“4”,则SF返回给SFF数据面的数据包上所携带的SI的取值应当是“3”,自然,数据面对从SF返回的数据包进行通用网络虚拟化封装时,就会基于SI值为“3”在数据面管理表中进行查询。所以,在控制面通过表项新增指令控制数据面在数据面管理表中新增表项的时候,也应当将原封装信息中SI的值递减1之后得到“3”,让数据面新增SI值为“3”的表项。
当然,本领域技术人员可以理解的是,即使从SF处返回的数据包上所携带SI值已经被SF进行递减处理,但在本实施例的一些示例当中,控制面在控制数据面新增表项时,表项新增指令中所携带的SI值,也可以仍然为原封装信息中的SI值。这样,只需要数据面在查询数据面管理表的时候,也对应地将数据包递减1后的SI值再增加1即可。例如,假定数据面上报的原封装信息中SI的值为“4”,控制面在接收到数据面上报的原封装信息之后,可以向数据面发送表项新增指令,在该表项新增指令中,SI的值依旧为“4”。对应的,数据面在数据面管理表中新增的表项中,SI值就为“4”。SF返回给SFF数据面的数据包上所携带的SI的取值应当是“3”,数据面对从SF返回的数据包进行通用网络虚拟化封装时,可以在当前SI值“3”的基础上增加“1”之后查询数据面管理表。也即,数据面以“4”作为查询数据面管理表的关键字之一。不过需要说明的是,数据面在数据包当前SI值的基础上增加“1”这只是为了查询数据面管理表,获取到该数据包对应的SFL option TLV,并不会真正改变数据包上的SI值。
可以理解的是,只要控制面按照统一的规则确定各个数据包对应的表项新增指令内容,而数据面也统一按照对应的规则查询数据面管理表,则控制面发送的表项新增指令中SI值是否与原封装信息中的SI一致,都是可行的。
S410:数据面接收到SF发送的目标数据包时,根据目标数据包携带的SPI和SI查询数据面管理表,确定目标数据包对应的SFL option TLV。
在数据面接收到SF返回的数据包时,需要对该数据包进行通用网络虚拟化封装,为了便于介绍,这里将该数据包称为“目标数据包”。可以理解的是,对于同一数据面而言,其可能会不断地接收业务相同或不同的数据包,所以,其在接收从其他SFF或NVE发送过来的数据包的同时,也会接收到SF发送的处理后的目标数据包,该目标数据包对应的表项并不一定是数据面管理表中最新的一个表项,但一定是数据面已经添加到数据面管理表中的一个表项。
数据面可以获取到目标数据包上携带的SPI与SI,然后根据SPI与SI进行数据面管理表的查询:如果在新增表项的时候,控制面所发送的表项新增指令中SI值已经进行过递减处理,则数据面可以直接以从目标数据包上获取的SPI与SI作为关键字查询数据面管理表获得对应的SFL option TLV;如果在新增表项的时候,控制面所发送的表项新增指令中SI值没有经过递减处理,则数据面可以对从目标数据包上获取的SI值加“1”之后再同获取的SPI值一起作为关键字查询数据面管理表获得对应的SFL option TLV。
S412:数据面根据查询得到的SFL option TLV封装目标数据包并传输目标数据包。
数据面获取到一个目标数据包的SFL option TLV之后,可以根据该SFL optionTLV对目标数据包进行通用网络虚拟化封装。完成,通用网络虚拟化封装之后,数据面再将封装完成的数据包发送到SFL中本节点的下一节点。
虽然目前的交换芯片不支持直接存储所接收数据包上的信息,但本实施例提供的数据包传输方法与数据包传输管理方法中,数据面会设置专门用于关联保存数据包SFLoption TLV与SPI、SI信息的数据面管理表。当数据面接收到一个数据包并获取到该数据包的原始封装信息之后,会先上报给控制面,然后在控制面的指示下在数据面管理表中关联保存一个数据包的SPI、SI以及SFL option TLV,从而在该数据包被SF处理完成之后,可以查询到对应的SFL option TLV以便实现通用网络虚拟化封装,避免了因交换芯片不支持直接存储数据包的SFL option TLV与SPI映射关系,而导致数据包在SFF处通用网络虚拟化封装不能实现的问题。
实施例二:
本实施例将继续对数据包传输方案进行阐述,应当理解的是,在该数据包阐述方案中包括在数据面实现数据包传输方法以及由控制面实现数据包传输管理方法,下面以控制面的数据包传输管理方法为主对该数据包传输方案进行说明,请参见图5示出的流程图:
S502:控制面接收数据面上报的原封装信息。
在控制面接收的原封装信息中,应当包含数据面当前所接收数据包的SPI、SI以及SFL option TLV。当然,在本实施例的其他一些示例当中,数据面向控制面所上报的信息当中,除了SPI、SI以及SFL option TLV以外,也还可以包括其他信息。
S504:控制面在控制面管理表中添加与原封装信息对应的表项,并向数据面下发表项新增指令。
在本实施例中,不仅数据面会设置数据面管理表,并且,在控制面也会设置一个管理表,该管理表就是控制面管理表(SFL_TABLE_Control)。和数据面管理表类似,控制面管理表也是以SPI和SI作为表关键字,与表关键字对应的表内容中也包括SFL option TLV。当控制面接收到数据面上报的原封装信息之后,可以在该控制面管理表中新增与原封装信息对应的表项。和在数据面管理表中新增与原封装信息对应表项类似,控制面在控制面管理表中新增的与原封装信息“对应的”表项,并不表示新增表项中的内容完全等同于原封装信息中的内容,例如,新增表项可能中的SI值可能是在原封装信息中SI值的基础上做了递减处理之后得到的更新SI值。
在本实施例中,针对同一数据包,数据面管理表中新增表项的表项内容与控制面管理表中新增表项的表项内容相同,例如,如果数据面上报的原封装信息中,SPI为“27”,SI为“4”,SFL option TLV为“x”,控制面可以根据该原封装信息在控制面管理表中新增SPI为“27”,SI为“3”,SFL option TLV为“x”的表项。另外,控制面还可以向数据面发送针对该原封装信息的表项新增指令,在该表项新增指令,SPI为“27”,SI为“3”,SFL option TLV为“x”。所以,数据面在接收表项新增指令之后,将会在数据面管理表中新增SPI为“27”,SI为“3”,SFL option TLV为“x”的表项。
可以理解的是,控制面在控制面管理表中新增表项的过程,与向数据面下发表项新增指令的过程,可以同时进行,也可以先后执行,例如先在控制面管理表中新增表项,然后再下发表项新增指令;当然在本实施例的其他一些示例当中,控制面也就可以先下发表项新增指令,然后再在控制面管理表中新增表项。
在控制面设置控制面管理表主要是为了对数据面管理表中的各个表项进行管理,这里所说的管理包括数据面管理表中表项的新增与删除:
(1)新增:
可以理解的是,对于属于同一个业务的多个数据包而言,各个数据包的SPI、SFLoption TLV相同,自然这些数据包在同一SFF节点处的SI值也相同,那么对于这些所属业务相同的数据包,数据面如果针对每一个都在数据面管理表中新增表项,则会导致数据面管理表中存在很多实质内容相同的表项。这就会导致数据面存储资源的浪费。
而在控制面设置控制面管理表,并在控制面管理表中也添加与数据面管理表中相同内容的表项之后,当数据面向控制面上报一个数据包的原封装信息后,在控制面向数据面发送表项新增指令之前,控制面可以确定在控制面管理表中是否存在与该原封装信息对应的表项,如果判断结果为是,则控制面就不用在控制面管理表中新增对应的表项,只有在判断结果为否的情况下,才会在控制面管理表中新增对应表项。当然,因为控制面管理表与数据面管理表中表项的内容相同,因此,控制面判断在控制面管理表中是否存在与该原封装信息对应的表项,实际上也就是在确定数据面管理表中是否存在与该原封装信息对应的表项。如果控制面的判断结果为是,则控制面就不用向数据面发送表项新增指令,只有在判断结果为否的情况下,才会向数据面发送表项新增指令,让数据面新增原本不存在的表项。
所以,通过在控制面设置控制面管理表,让控制面根据控制面管理表对是否新增表项进行管理,避免了在数据面管理表中设置多个重复的表项,减少了数据面存储资源的浪费,有利于实现资源的优化配置。
(2)删除:
根据前述介绍可知,在数据面管理表中,一个表项并不仅仅用于一个数据包的封装与传输,而是用于所有SPI、SI相同的数据包的封装与传输,也即用于同一业务的所有数据包的传输。但当一个业务的所有数据包在一个SFF数据面的封装传输都完成以后,该业务数据包在数据面管理表中对应的表项就不再有意义。如果继续保留这些表项,则会占用SFF的存储资源,造成资源浪费。所以,在本实施例中,控制面可以根据控制面管理表来对数据面管理表中无效表项进行删除。
在本实施例中,虽然控制面管理表与数据面管理表中表项内容相同,但控制面管理表与数据面管理表并不完全一致:控制面管理表中的每一个表项都有对应的老化时间,控制面可以基于控制面管理表中表项的老化时间管理表项在控制面管理表中的删除或保留,若一个表项老化时间结束,则控制面将从控制面管理表中删除表项。请参见表2示出的控制面管理表:
表2
SPI | SI | SFL option TLV | 老化时间 |
7 | 6 | x | t1 |
2 | 2 | y | t0 |
…… | …… | …… | …… |
n | 2 | v | t3 |
当然,控制面管理表中存在某一个表项需要被删除时,数据面管理表中自然也就存在一个对应的表项需要被删除。所以,当控制面确定控制面管理表中的某一表项老化时间结束后,其可以通过调用数据面的接口向数据面发送表项删除指令,让数据面从数据面管理表中删除指定的表项。下面请参见图6示出的数据面进行表项删除的一种流程图:
S602:数据面接收控制面发送的表项删除指令。
控制面在向数据面发送表项删除指令的时候,需要通过表项删除指令向数,通常包括待删除目标表项的SPI和SI。
S604:数据面根据表项删除指令删除数据面管理表中的目标表项。
在数据面接收到表项删除指令之后,可以根据表项删除指令中所携带的SPI和SI,从数据面管理表中查找到目标表项,然后删除该表项。
对于控制面管理表中的各个表项,老化时间可以相同也可以不完全相同,例如,在本实施例的一种示例当中,控制面给其中一个表项设置的老化时间是t1,其他所有表项的老化时间均为t2。但在本实施例的另外一种示例当中,控制面给所有表项设置的老化时间均为t1。对于各表项老化时间的设置,可以由网络管理人员根据经验值统一设置,可选地,网络管理人员根据同一业务中相邻两个数据包传输的时间间隔设置老化时间。
可以理解的是,一个控制面管理表中可能会同时存在很多个表项,在这种情况下,如果要求控制面给每一个表项都设置对应的计时器或定时器,严格按照表项的老化时间进行计时,则控制面可能需要花费较多的处理资源来进行老化时间监测。为了节省处理资源,在本实施例的一些示例当中,控制面可以定时地、周期性地对各表项的老化时间是否结束进行评判,在本实施例的一种示例当中,控制面设置的处理周期为t0,则每隔t0时长,控制面会将控制面管理表中各表项的老化时间统一减少t0,然后判断各表项剩余的老化时间是否小于等于0,对于那些剩余老化时间不超过0的表项,则控制面可以确定是需要删除的表项。例如,假定经过前一次老化评估,控制面管理表中还剩余表项1、表项2以及表项3三个表项,这三个表项的剩余老化时间分别为5s、3s和7s,而控制面的处理周期为5s,则当处理周期到达时,表项1、表项2以及表项3三个表项的剩余老化时间分别变为0s、-2s以及2s,此时,因为表项1与表项2的剩余老化时间均小于等于0,因此表项1和表项2将会在此次处理过程中被删除,对应的,表项1与表项2在数据面管理表终端的同关键字表项也将被删除。请参见图7的流程图:
S702:从控制面管理表中选择一个尚未经历本次老化评估的表项;
S704:将该表项的老化时间减少t0;
S706:判断该表项的剩余老化时间是否小于等于0;
若判断结果为是,则进入S708,否则,进入S710。
S708:从控制面管理表删除该表项,并通过表项删除指令指示数据面在数据面管理表中删除同关键字的对应表项;
S710:判断在控制面管理表中是否还有表项未经历本次老化评估的表项。
若判断结果为是,则进入S702,否则进入S712。
S712:等待t0时长后进入下一次老化评估处理。
应当明白的是,控制面在对控制面管理表中的表项进行老化评估的过程中,如果所设置的处理周期时长越短,则控制面的评估也就越频繁,这样,当一个表项实际的老化时间结束后,能够尽快被清理,不会因为处理周期未到而不被删除处理,这样能够提升控制面管理表和数据面管理表中有效表项的比例,减少存储资源浪费,但同时也会增加控制面用于老化评估的处理资源。
因为控制面管理表中的各表项均有老化时间,只要老化时间未结束,则该表项就不会被删除。因此,在SFF的数据面从另一SFF或NVE处接收到一个数据包,并将该数据包的原封装信息上报给控制面之后,如果控制面确定在控制面管理表中已经存在与该原封装信息对应的表项,则控制面不用向数据面发送表项新增指令,也不用在控制面管理表中新增对应的表项,只需要将控制面管理表中对应表项的老化时间重置为初始值即可。如果在该表项的老化时间结束之前,数据面又接收到了同业务的数据包,则该表项的老化时间将再次被重置为初始值,如此循环,直到该业务的所有数据包传输结束,或者表项的老化时间结束先于新数据包到来。
下面结合图8的流程图对控制面接收到数据面上报的原封装信息后的处理过程进行说明:
S802:判断在控制面管理表中是否存在与所接收到的原封装信息对应的表项。
若判断结果为是,则进入S804,否则进入S806。
S804:将控制面管理表中与该原封装信息对应表项的老化时间重置为初始值。
由于控制面管理表中已经存在与原封装信息对应的表项,因此,为了减少对控制面与数据面存储资源的占用,控制面可以直接将控制面管理表中对应表项的老化时间初始化。事实上,这个过程相当于对控制面管理表中的表项进行修改,通过修改得到了与数据面所上报原封装信息对应的表项。
S806:在控制面管理表中新增与该原封装信息对应的表项。
如果控制面经过判断,确定在控制面管理表中不存在与原封装信息对应的表项,控制面可以先在控制面管理表中新增与该原封装信息对应的表项。
S808:向数据面发送对应于该原封装信息的表项新增指令。
因为在控制面管理表中不存在与原封装信息对应的表项,那么在数据面管理表中自然也就不会存在与原封装信息对应的表项,所以,控制面还会向数据面发送表项新增指令,让数据面在数据面管理表中新增与原封装信息对应的表项。
毫无疑义的是,虽然在图8当中,控制面是现在控制面管理表中新增表项,然后才向数据面发送表项新增指令,但事实上,在本实施例的其他一些示例当中,控制面也可以先发送表项新增指令,再在控制面管理表中新增表项,或者是两个过程同时进行。
当然,可以理解的是,在本实施例的其他一些示例当中,也可以不采用控制面管理表来管理数据面管理表中表项的删除,当数据面完成一个数据包SFL option TLV信息的查找以及数据包的通用网络虚拟化封装之后,可以上报控制面,让控制面下发表项删除指令,然后根据表项删除指令删除该表项。或者是数据面在完成一个数据包SFL option TLV信息的查找以及数据包的通用网络虚拟化封装之后,直接删除该表项。只不过,在后面这两种方案当中,数据面与控制面需要频繁交互,因为一旦数据面接收到一个数据包,则控制面就需要下发表项新增指令让数据面新增表项。
本实施例提供的数据包传输管理方案,通过在控制面设置与数据面管理表对应的控制面管理表,并未控制面管理表中各表项设置老化时间,基于老化时间实现控制面管理表中表项的删存管理,也即实现数据面管理表中表项的删存管理,在不需要数据面与控制面频繁交互的基础上,删除了数据面管理表中有效表项的比例,减少了对存储资源的占用,优化了资源配置。
实施例三:
为了使本领域技术人员更加了解前述实施例中数据传输方案的优点与细节,本实施例将结合具体示例对前述实施例中控制面与数据面共同实现数据包传输管理方法与数据包传输方法的过程进行说明:
·预置处理过程:
网络管理人员预先在控制面设定一个固定的表项老化时间(假定为老化时间20s),并创建一个以SPI与SI为表关键字,与表关键字对应的表项内容的包含SFL optionTLV、老化时间值的空表(这里假定该表表名为SFL_TABLE_Control)。
另一方面,控制面还通过调用交换芯片SDK(或相关技术),在数据面创建一个关键字为以SPI与SI为表关键字,以SFL option TLV作为与表关键字对应的表内容的空表(这里假定该表表名为SFL_TABLE_Data)。
另外,网络管理人员可以在控制面设定一个定时处理程序(假定定时时间为5s,也即处理周期为5s)。
·数据面的处理过程:
数据面进行Transit操作的处理:
1)当一个数据包到达SFF,数据面剥离该数据包的Geneve隧道头和SFL OptionTLV,然后将该数据包传递到服务功能(SF)或虚拟网络功能(VNF)接受处理。
2)数据面将该数据包的SFL option TLV(假设为三个IP地址列表{[10.5.2.1]、[10.6.3.1]、[10.7.3.1]})以及对应的SPI与SI值(假设为SPI=3、SI=3)上送到控制面。
3)当数据包携带SPI与SI从SF或VNF返回时,经过SF或VNF对SI的递减处理,数据包所携带的SI值变为2,也即返回的数据包SPI=3、SI=2。数据面采用数据包所携带的SPI与SI作为值为关键字查询SFL_TABLE_Data,确定出返回的数据包的SFL option TLV为{[10.5.2.1]、[10.6.3.1]、[10.7.3.1]}。
4)数据面将查询到的SFL option TLV封装数据报文内,并继续转发流程。
·控制面的处理过程:
1)控制面接收数据面上送的原封装信息据,SPI=3、SI=3,对应的SFL optionTLV为{[10.5.2.1]、[10.6.3.1]、[10.7.3.1]}。
2)控制面将原封装信息中的SI值进行减1处理,得到SI=2。
3)控制面当前的SPI与SI值(SPI=3、SI=2)作为关键字查询SFL_TABLE_Control表。
如果数据面当前接收到的数据包不是其所属业务的首包,则控制面将会查询命中,在这种情况下,控制面将SFL_TABLE_Control中查询命中的表项的老化时间重置为20s。
如果数据面当前接收到的数据包是其所属业务的首包,则不能查询命中,因此,控制面在SFL_TABLE_Control增加一个与原封装信息对应的表项,新增表项的SPI=3,SI=2,SFL option TLV为{[10.5.2.1]、[10.6.3.1]、[10.7.3.1]},并且老化时间为20s。同时,控制面调用交换芯片API(或相关技术),在数据面的SFL_TABLE_Data中增加一个SPI=3,SI=2,SFL option TLV为{[10.5.2.1]、[10.6.3.1]、[10.7.3.1]}的表项。
1)当处理周期到达时,控制面将表SFL_TABLE_Control中每一项取出来,并将取出的表项的老化时间减少5s。
2)完成老化时间减少处理后,控制面判断各表项剩余的老化时间是否小于等于0。
对于关键字SPI=3,SI=2的表项,其最初20s的老化时间经过每次老化评估处理减5s的处理后,将不断减少,这样,该表项的剩余老化时间总会在某一次老化评估过程中被减少到小于等于0。这是,控制面将删除该表项,同时调用交换芯片SDK(或相关技术),删除数据面SFL_TABLE_Data中同关键字的表项。
本实施例中通过增加控制面与数据面的交互流程,实现了数据面维护数据包SPI、SI与SFL option TLV映射关系的目的。同时,对于一个数据业务流,从开始到结束整个过程中,只有在某个业务的第一个数据包到达后,才会在控制面和数据面新增一个对应的表项。当这个业务数据流结束后,通过表项老化超时机制,在控制面和数据面产生一次删除操作,从而大大减少控制面和数据发平面的交互次数。
实施例四:
本实施例提供一种数据包传输装置,该数据包传输装置应用于数据面侧,请参见图9示出的数据包传输装置90的一种结构示意图:
数据包传输装置90包括接收解析模块902、信息上传模块904、表项新增模块906以及信息查询模块908、封装传输模块910,其中接收解析模块902用于接收并解析数据包得到数据包的原封装信息,原封装信息包括SPI、SI以及SFL option TLV。信息上传模块904将解析得到的原封装信息上报到控制面;表项新增模块906用于接收控制面下发的表项新增指令,并根据表项新增指令将与原封装信息对应的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容;信息查询模块908用于接收到服务功能SF发送的目标数据包时,根据目标数据包携带的SPI和SI查询数据面管理表,确定目标数据包对应的SFL option TLV;封装传输模块910用于根据查询得到的SFL option TLV封装目标数据包并传输目标数据包。
本实施例还提供一种数据包传输管理装置,该数据包传输管理装置应用于控制面侧,请参见图10示出的数据包传输管理装置10的一种结构示意图:
数据包传输管理装置10包括信息接收模块102,用于接收数据面上报的数据包的原封装信息,原封装信息包括SPI、SI以及SFL option TLV;另外,数据包传输管理装置10还包括指令发送模块104,用于调用数据面的接口向数据面下发表项新增指令,表项新增指令用于控制数据面在数据面管理表中新增原封装信息对应的表项。
应当明白的是,数据面是SFF的数据面,所以在本实施例中,接收解析模块902会从入口NVE节点或其他SFF处接收到数据包,该数据包采用通用网络虚拟化封装。当接收解析模块902接收到数据包之后,对该数据包进行Geneve隧道头和Option TLV的剥离等解析处理,从而获取到该数据包的原封装信息,这里所谓的原封装信息是指该数据包的SPI、SI以及SFL option TLV。
对于一个数据包而言,无论其当前处于SFL中的哪一个节点上,其SPI与SFLoption TLV是始终不变的,而SI则会随着其所处的节点不同而不同,具体地,SI的取值随着数据包的传输过程而逐渐递减。接收解析模块902解析数据包得到的原封装信息中的SI是指数据面接收到该数据包时,数据包所携带的的SI。
当接收解析模块902获取到数据包的原封装信息之后,信息上传模块904可以将原封装信息上报给控制面,应当明白的是,控制面也是SFF的控制面。不过需要说明的是,数据面和控制面可能位于不同的实体设备上。控制面侧数据包传输管理装置10的信息接收模块102将会接收接收信息上传模块904上传的原封装信息。
在本实施例中,数据面在接收解析模块902解析得到原封装信息之后,不仅会将原封装信息上报给控制面,也会将剥离了Geneve隧道头和SFL option TLV的数据包发送给对应的SF,以便SF对该数据包进行对应的功能处理。
在信息接收模块102到数据面上报的原封装信息之后,指令发送模块104可以下发表项新增指令给数据面,让数据面的数据包传输装置90在数据面管理表中新增与该原封装信息对应的表项。
应当明白的是,数据面管理表设置在数据面侧,由数据包传输装置90设置。其用于维护记录数据包对应的SPI、SI与SFL option TLV之间的映射关系,以便数据面接收到自SF返回的数据包之后,信息查询模块908能够确定出该数据包的SFL option TLV,进而实现对该数据包的通用网络虚拟化封装。在本实施例中,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容,请参见表1。
在表1当中,一行就是一个表项,从表1中可以看出,表中的一行包括一个SPI值,以及一个SI值,以及一个与该SPI及SI对应的SFL option TLV。所以,一个表项中就包括SPI、SI以及与该SPI、SI对应的SFL option TLV。通过SPI与SI的唯一组合,可以唯一确定出一个数据包,所以,当一个数据包携带SPI与SI从SF返回到SFF的数据面之后,信息查询模块908可以根据该数据包上携带的SPI与SI从数据面管理表上查找到对应的SFL option TLV信息。
指令发送模块104在向数据面下发表项新增指令时,可以调用数据面包括但不限于SDK的接口进行指令下发。
表项新增模块906在接收到控制面发送的表项新增指令之后,将会根据表项新增指令在数据面管理表中新增一个表项。通常,在控制面数据包传输管理装置10发送的表项新增指令中会携带新增表项的相关信息,包括该新增表项中的SPI、SI以及SFL optionTLV。
应当理解的是,数据包传输管理装置10通过表项新增指令指示数据包传输装置90在数据面新增与原封装信息对应的表项,但这并不意味着新增表项中的SPI、SI以及SFLoption TLV就是原封装信息中的SPI、SI以及SFL option TLV。
例如,在本实施例的一些示例当中,当SF接收到SFF数据面发送的数据包之后,会对数据包的SI进行递减处理,通常是递减“1”,这样,尽管SF发送给SFF的数据包与SFF发送给SF的数据包是同一个数据包,区别在于前者是数据包经对应功能处理之后,而后者是数据包经对应的功能处理之前。但这两个数据包所携带的SI确实不相同的,SF发送给SFF的数据包的SI值比SFF都发送给SF的数据包的SI值要小1。在这种情况下,数据面数据包传输装置90的封装传输模块910在对数据包进行网络虚拟化封装时,如果信息查询模块908直接采用该数据包上当前的SPI与SI作为关键字在数据面管理表上查询,则数据面在预先新增该数据包对应的表项时,也应对应的在原封装信息中SI的基础上对SI进行递减更新。这里给一个示例,假定数据面上报的原封装信息中SI的值为“4”,则SF返回给SFF数据面的数据包上所携带的SI的取值应当是“3”,自然,对从SF返回的数据包进行通用网络虚拟化封装时,信息查询模块908就会基于SI值为“3”在数据面管理表中进行查询。所以,在控制面的指令发送模块104通过表项新增指令控制表项新增模块906在数据面管理表中新增表项的时候,也应当将原封装信息中SI的值递减1之后得到“3”,让数据面新增SI值为“3”的表项。
当然,本领域技术人员可以理解的是,即使从SF处返回的数据包上所携带SI值已经被SF进行递减处理,但在本实施例的一些示例当中,控制面在控制数据面新增表项时,表项新增指令中所携带的SI值,也可以仍然为原封装信息中的SI值。这样,只需要数据面在查询数据面管理表的时候,也对应地将数据包递减1后的SI值再增加1即可。例如,假定数据面上报的原封装信息中SI的值为“4”,控制面在接收到数据面上报的原封装信息之后,可以向数据面发送表项新增指令,在该表项新增指令中,SI的值依旧为“4”。对应的,数据面在数据面管理表中新增的表项中,SI值就为“4”。SF返回给SFF数据面的数据包上所携带的SI的取值应当是“3”,数据面对从SF返回的数据包进行通用网络虚拟化封装时,可以在当前SI值“3”的基础上增加“1”之后查询数据面管理表。也即,数据面以“4”作为查询数据面管理表的关键字之一。不过需要说明的是,数据面在数据包当前SI值的基础上增加“1”这只是为了查询数据面管理表,获取到该数据包对应的SFL option TLV,并不会真正改变数据包上的SI值。
可以理解的是,只要控制面按照统一的规则确定各个数据包对应的表项新增指令内容,而数据面也统一按照对应的规则查询数据面管理表,则控制面发送的表项新增指令中SI值是否与原封装信息中的SI一致,都是可行的。
在数据面接收到SF返回的数据包时,需要对该数据包进行通用网络虚拟化封装,为了便于介绍,这里将该数据包称为“目标数据包”。可以理解的是,对于同一数据面而言,其可能会不断地接收业务相同或不同的数据包,所以,其在接收从其他SFF或NVE发送过来的数据包的同时,也会接收到SF发送的处理后的目标数据包,该目标数据包对应的表项并不一定是数据面管理表中最新的一个表项,但一定是数据面已经添加到数据面管理表中的一个表项。
信息查询模块908可以获取到目标数据包上携带的SPI与SI,然后根据SPI与SI进行数据面管理表的查询:如果在新增表项的时候,控制面所发送的表项新增指令中SI值已经进行过递减处理,则信息查询模块908可以直接以从目标数据包上获取的SPI与SI作为关键字查询数据面管理表获得对应的SFL option TLV;如果在新增表项的时候,控制面所发送的表项新增指令中SI值没有经过递减处理,则信息查询模块908可以对从目标数据包上获取的SI值加“1”之后再同获取的SPI值一起作为关键字查询数据面管理表获得对应的SFLoption TLV。
信息查询模块908获取到一个目标数据包的SFL option TLV之后,封装传输模块910可以根据该SFL option TLV对目标数据包进行通用网络虚拟化封装。完成,通用网络虚拟化封装之后,封装传输模块910再将封装完成的数据包发送到SFL中本节点的下一节点。
虽然目前的交换芯片不支持直接存储所接收数据包上的信息,但本发明实施例提供的数据包传输装置与数据包传输管理装置,通过在数据面设置专门用于关联保存数据包SFL option TLV与SPI、SI信息的数据面管理表,当数据面接收到一个数据包并获取到该数据包的原始封装信息之后,会先上报给控制面,然后在控制面的指示下在数据面管理表中关联保存一个数据包的SPI、SI以及SFL option TLV,从而在该数据包被SF处理完成之后,可以查询到对应的SFL option TLV以便实现通用网络虚拟化封装,避免了因交换芯片不支持直接存储数据包的SFL option TLV与SPI映射关系,而导致数据包在SFF处通用网络虚拟化封装不能实现的问题。
对于数据包传输装置与数据包传输管理装置实现数据包传输方案的其他细节,可以参见前述实施例一至实施例三的介绍,这里不再赘述。
在本实施例中,数据包传输装置90部署在数据面侧的数据转发设备上,其包括接收解析模块902、信息上传模块904、表项新增模块906以及封装传输模块910的功能均可以通过数据转发设备的处理器与通信单元共同实现,而信息查询模块908的功能则可以通过数据转发设备的处理器实现。数据面侧的数据面管理表可以存储在存储器当中。
数据包传输管理装置10部署在控制面侧的数据转发设备上,其中,信息接收模块102与指令发送模块104的功能均可以数据转发设备的处理器与通信单元共同实现。控制面面管理表可以存储在数据转发设备存储器当中。
实施例五:
本实施例提供一种存储介质,该存储介质中可以存储有一个或多个可供一个或多个处理器读取、编译并执行的计算机程序,在本实施例中,该计算机可读存储介质可以存储有数据包传输程序和数据包传输管理程序中的至少一个,其中,该数据包传输程序可供一个或多个处理器执行实现前述实施例介绍的任意一种数据包传输方法的流程;而数据包传输管理程序可供一个或多个处理器执行实现前述实施例介绍的任意一种数据包传输管理方法的流程。
本实施例中还提供一种数据转发设备,如图11所示:数据转发设备110包括处理器111、存储器112以及用于连接处理器111与存储器112的通信总线113,其中存储器112可以为前述存储有数据包传输程序和/或数据包传输管理程序的存储介质。处理器111可以读取数据包传输程序,进行编译并执行实现前述实施例中介绍的数据包传输方法的流程:
处理器111接收并解析数据包得到数据包的原封装信息,原封装信息包括服务路径标识SPI、服务索引SI以及服务功能列表选项三元组SFL option TLV;然后将解析得到的原封装信息上报到控制面,随后接收控制面下发的表项新增指令,并根据表项新增指令将与原封装信息对应的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表,数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容;
当处理器111接收到服务功能SF发送的目标数据包时,根据目标数据包携带的SPI和SI查询数据面管理表,确定目标数据包对应的SFL option TLV;并根据查询得到的SFLoption TLV封装目标数据包并传输目标数据包。
处理器111也可以读取数据包传输管理程序,进行编译并执行实现前述实施例中介绍的数据包传输管理方法的流程:
处理器111接收数据面上报的数据包的原封装信息,然后调用数据面的接口向数据面下发表项新增指令,表项新增指令用于控制数据面在数据面管理表中新增原封装信息对应的表项。
在本实施例的一些示例当中,当处理器111执行数据包传输管理程序时,还可以在控制面管理表中添加与原封装信息对应的表项,并基于表项的老化时间管理表项在控制面管理表中的删除或保留,若表项老化时间结束,则从控制面管理表中删除表项;在确定需要从控制面管理表中删除表项之后,处理器111调用数据面的接口向数据面下发表项删除指令,控制数据面从数据面管理表中删除同关键字的对应表项。
控制面管理表以SPI和SI作为表关键字,与表关键字对应的表内容包括SFLoption TLV;控制面管理表的表项具有对应的老化时间,控制面管理表中新增的表项和数据面管理表中新增的表项内容相同。
本实施例提供的数据转发设备,本实施例提供的数据包传输方法与数据包传输管理方法中,数据面会设置专门用于关联保存数据包SFL option TLV与SPI、SI信息的数据面管理表。当数据面接收到一个数据包并获取到该数据包的原始封装信息之后,会先上报给控制面,然后在控制面的指示下在数据面管理表中关联保存一个数据包的SPI、SI以及SFLoption TLV,从而在该数据包被SF处理完成之后,可以查询到对应的SFL option TLV以便实现通用网络虚拟化封装,避免了因交换芯片不支持直接存储数据包的SFL option TLV与SPI映射关系,而导致数据包在SFF处通用网络虚拟化封装不能实现的问题。
进一步地,数据转发设备通过在控制面设置与数据面管理表对应的控制面管理表,并未控制面管理表中各表项设置老化时间,基于老化时间实现控制面管理表中表项的删存管理,也即实现数据面管理表中表项的删存管理,在不需要数据面与控制面频繁交互的基础上,删除了数据面管理表中有效表项的比例,减少了对存储资源的占用,优化了资源配置。
显然,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM,ROM,EEPROM、闪存或其他存储器技术、CD-ROM,数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (12)
1.一种数据包传输方法,包括:
接收并解析数据包得到所述数据包的原封装信息,所述原封装信息包括服务路径标识SPI、服务索引SI以及服务功能列表选项三元组SFL option TLV;
将解析得到的所述原封装信息上报到控制面;
接收所述控制面下发的表项新增指令,并根据所述表项新增指令将与所述原封装信息对应的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表,所述数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容;
接收到服务功能SF发送的目标数据包时,根据所述目标数据包携带的SPI和SI查询所述数据面管理表,确定所述目标数据包对应的SFL option TLV;
根据查询得到的所述SFL option TLV封装所述目标数据包并传输所述目标数据包。
2.如权利要求1所述的数据包传输方法,其特征在于,还包括:
接收所述控制面发送的表项删除指令,所述表项删除指令中包括待删除目标表项的SPI和SI;
根据所述表项删除指令删除所述数据面管理表中的所述目标表项。
3.如权利要求1或2所述的数据包传输方法,其特征在于,所述根据所述表项新增指令将与所述原封装信息对应的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表包括:
将所述新增指令中所携带的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表,所述新增指令中所携带的SPI和SFL option TLV分别为所述原封装信息中的SPI和SFL option TLV,所述新增指令中所携带的SI为所述原封装信息中SI值减1后的更新SI值。
4.一种数据包传输管理方法,包括:
接收数据面上报的数据包的原封装信息,所述原封装信息包括SPI、SI以及SFL optionTLV;
调用所述数据面的接口向所述数据面下发表项新增指令,所述表项新增指令用于控制所述数据面在数据面管理表中新增所述原封装信息对应的表项,所述数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容。
5.如权利要求4所述的数据包传输管理方法,其特征在于,所述接收数据面上报的数据包的原封装信息之后,还包括:
在控制面管理表中添加与所述原封装信息对应的表项,所述控制面管理表以SPI和SI作为表关键字,与表关键字对应的表内容包括SFL option TLV;所述控制面管理表的表项具有对应的老化时间,所述控制面管理表中新增的表项和所述数据面管理表中新增的表项内容相同;
基于所述表项的老化时间管理所述表项在所述控制面管理表中的删除或保留,若所述表项老化时间结束,则从所述控制面管理表中删除所述表项;
在确定需要从所述控制面管理表中删除所述表项之后,调用所述数据面的接口向所述数据面下发表项删除指令,控制所述数据面从所述数据面管理表中删除同关键字的对应表项。
6.如权利要求5所述的数据包传输管理方法,其特征在于,所述在控制面管理表中添加与所述原封装信息对应的表项之前,还包括:
确定所述控制面管理表中尚不存在与所述原封装信息对应的表项。
7.如权利要求6所述的数据包传输管理方法,其特征在于,若确定所述控制面管理表中存在与所述原封装信息对应的表项,则所述数据包传输管理方法还包括:
将与所述原始封装信息对应的表项的老化时间重置为初始值。
8.如权利要求4-7任一项所述的数据包传输管理方法,其特征在于,所述新增指令中所携带的SPI和SFL option TLV分别为所述原封装信息中的SPI和SFL option TLV,所述新增指令中所携带的SI为所述原封装信息中SI值减1后的更新SI值。
9.一种数据包传输装置,所述数据包传输装置包括:
接收解析模块,用于接收并解析数据包得到所述数据包的原封装信息,所述原封装信息包括SPI、SI以及SFL option TLV;
信息上传模块,用于将解析得到的所述原封装信息上报到控制面;
表项新增模块,用于接收所述控制面下发的表项新增指令,并根据所述表项新增指令将与所述原封装信息对应的SPI、SI以及SFL option TLV作为一个表项添加到数据面管理表,所述数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容;
信息查询模块,用于接收到服务功能SF发送的目标数据包时,根据所述目标数据包携带的SPI和SI查询所述数据面管理表,确定所述目标数据包对应的SFL option TLV;
封装传输模块,用于根据查询得到的所述SFL option TLV封装所述目标数据包并传输所述目标数据包。
10.一种数据包传输管理装置,所述数据包传输管理装置包括:
信息接收模块,用于接收数据面上报的数据包的原封装信息,所述原封装信息包括SPI、SI以及SFL option TLV;
指令发送模块,用于调用所述数据面的接口向所述数据面下发表项新增指令,所述表项新增指令用于控制所述数据面在数据面管理表中新增所述原封装信息对应的表项,所述数据面管理表以SPI和SI作为表关键字,以SFL option TLV作为与表关键字对应的表内容。
11.一种数据转发设备,包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的数据包传输程序,以实现如权利要求1至3中任一项所述的数据包传输方法的步骤,或所述处理器用于执行存储器中存储的数据包传输程序,以实现如权利要求4至8中任一项所述的数据包传输管理方法的步骤。
12.一种存储介质,其特征在于,所述存储介质存储有数据包传输程序和数据包传输管理程序中的至少一个,所述数据包传输程序可被一个或者多个处理器执行,以实现如权利要求1至3中任一项所述的数据包传输方法的步骤;所述数据包传输管理程序可被一个或者多个处理器执行,以实现如权利要求4至8中任一项所述的数据包传输管理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910365452.2A CN111857945B (zh) | 2019-04-30 | 2019-04-30 | 数据包传输、管理方法、装置及数据转发设备、存储介质 |
PCT/CN2020/084612 WO2020220987A1 (zh) | 2019-04-30 | 2020-04-14 | 数据包传输、管理方法、装置及数据转发设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910365452.2A CN111857945B (zh) | 2019-04-30 | 2019-04-30 | 数据包传输、管理方法、装置及数据转发设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111857945A true CN111857945A (zh) | 2020-10-30 |
CN111857945B CN111857945B (zh) | 2025-04-29 |
Family
ID=72965942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910365452.2A Active CN111857945B (zh) | 2019-04-30 | 2019-04-30 | 数据包传输、管理方法、装置及数据转发设备、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111857945B (zh) |
WO (1) | WO2020220987A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277529A (zh) * | 2022-06-28 | 2022-11-01 | 新华三技术有限公司 | 通信方法及装置 |
WO2024000135A1 (zh) * | 2022-06-28 | 2024-01-04 | 新华三技术有限公司 | 报文处理 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111988266B (zh) * | 2019-05-24 | 2022-05-17 | 华为技术有限公司 | 一种处理报文的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017192791A1 (en) * | 2016-05-06 | 2017-11-09 | Convida Wireless, Llc | Traffic steering at the service layer |
US20170331737A1 (en) * | 2016-05-11 | 2017-11-16 | Cisco Technology, Inc. | Using a network service header to manage a network-as-a-system |
CN107925613A (zh) * | 2016-07-01 | 2018-04-17 | 华为技术有限公司 | 业务功能链sfc中用于转发报文的方法、装置和系统 |
CN108702331A (zh) * | 2016-02-22 | 2018-10-23 | 思科技术公司 | Sr应用段与服务功能链(sfc)报头元数据的集成 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104980374B (zh) * | 2014-04-04 | 2018-07-03 | 华为技术有限公司 | 一种业务路由报文的封装方法、业务转发实体及控制平面 |
CN106453204B (zh) * | 2015-08-07 | 2020-11-17 | 中兴通讯股份有限公司 | 一种处理数据报文的方法及装置 |
US10116553B1 (en) * | 2015-10-15 | 2018-10-30 | Cisco Technology, Inc. | Application identifier in service function chain metadata |
CN109088821B (zh) * | 2017-06-14 | 2022-02-25 | 中兴通讯股份有限公司 | 报文传输方法、业务链系统以及计算机可读存储介质 |
-
2019
- 2019-04-30 CN CN201910365452.2A patent/CN111857945B/zh active Active
-
2020
- 2020-04-14 WO PCT/CN2020/084612 patent/WO2020220987A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108702331A (zh) * | 2016-02-22 | 2018-10-23 | 思科技术公司 | Sr应用段与服务功能链(sfc)报头元数据的集成 |
WO2017192791A1 (en) * | 2016-05-06 | 2017-11-09 | Convida Wireless, Llc | Traffic steering at the service layer |
US20170331737A1 (en) * | 2016-05-11 | 2017-11-16 | Cisco Technology, Inc. | Using a network service header to manage a network-as-a-system |
CN107925613A (zh) * | 2016-07-01 | 2018-04-17 | 华为技术有限公司 | 业务功能链sfc中用于转发报文的方法、装置和系统 |
Non-Patent Citations (3)
Title |
---|
A. FARREL;OLD DOG CONSULTING; S. BRYANT;HUAWEI;J. DRAKE;: "An MPLS-Based Forwarding Plane for Service Function Chaining draft-ietf-mpls-sfc-05", IETF, 12 February 2019 (2019-02-12) * |
A. FARREL;OLD DOG CONSULTING;J. DRAKE; E. ROSEN; J. UTTARO;AT AMP;AMP;AMP;T;L. JALIL; VERIZON;: "BGP Control Plane for NSH SFC draft-ietf-bess-nsh-bgp-control-plane-10", IETF, 26 April 2019 (2019-04-26) * |
SAMI BOUTROS, ED. ETAL.: ""Geneve applicability for service function chaining draft-boutros-nvo3-geneve-applicability-for-sfc-03"", IETF, 6 March 2019 (2019-03-06), pages 4 - 9 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277529A (zh) * | 2022-06-28 | 2022-11-01 | 新华三技术有限公司 | 通信方法及装置 |
WO2024000135A1 (zh) * | 2022-06-28 | 2024-01-04 | 新华三技术有限公司 | 报文处理 |
CN115277529B (zh) * | 2022-06-28 | 2024-12-06 | 新华三技术有限公司 | 通信方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111857945B (zh) | 2025-04-29 |
WO2020220987A1 (zh) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113934660B (zh) | 加速网络分组处理 | |
US10237177B2 (en) | Transfer device and transfer system | |
KR102640600B1 (ko) | 하이브리드 네트워크에서 패킷을 포워딩하기 위한 방법, 디바이스, 및 시스템 | |
CN107113240B (zh) | 可扩展虚拟局域网报文发送方法、计算机设备和可读介质 | |
US8743691B2 (en) | Priority aware MAC flow control | |
WO2015081786A1 (zh) | 订阅通知的实现方法和装置 | |
US20210328860A1 (en) | Operation, Administration, and Maintenance IOAM Packet Transmission Method and Related Apparatus | |
WO2021013046A1 (zh) | 通信方法和网卡 | |
WO2017113300A1 (zh) | 路由确定方法、网络配置方法以及相关装置 | |
EP4221141A1 (en) | Network congestion control method and apparatus | |
CN111857945A (zh) | 数据包传输、管理方法、装置及数据转发设备、存储介质 | |
US9325613B2 (en) | Communication device and address learning method | |
CN114844828A (zh) | 发送报文的方法、装置及系统 | |
CN113098774A (zh) | 一种报文转发方法及装置 | |
CN116032837A (zh) | 一种流表卸载方法及装置 | |
WO2020143509A1 (zh) | 传输数据的方法和网络设备 | |
CN116668375B (zh) | 一种报文分流方法、装置、网络设备及存储介质 | |
US10999210B2 (en) | Load sharing method and network device | |
WO2024140374A1 (zh) | 信息处理方法、设备和存储介质 | |
US11765102B2 (en) | Network device and conversion apparatus | |
CN112714063B (zh) | 一种报文传输方法、设备以及数字处理芯片 | |
CN115967591B (zh) | QinQ报文处理方法及装置、存储介质及电子设备 | |
CN113541992A (zh) | 一种数据传输的方法和装置 | |
US11909624B2 (en) | Communication method, apparatus, device, system, and computer-readable storage medium | |
CN109587027B (zh) | 一种报文转发方法及装置 |
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 | ||
TG01 | Patent term adjustment | ||
TG01 | Patent term adjustment |