一种基于协议无感知转发的高速数据更新系统及方法转让专利

申请号 : CN201911314397.0

文献号 : CN111050339B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林国誌葛敬国陈家玓鄂跃鹏弭伟

申请人 : 中国科学院信息工程研究所

摘要 :

本发明公开了一种基于协议无感知转发的高速数据更新系统及方法,其对应的协议无关转发设备,包括:所述系统基于DPDK驱动的协议无感知转发模块,协议无感知转发模块作为一个基于DPDK驱动的模块运行在用户态,该协议无感知转发模块包括功能平面子模块、Metadata数据查询功能子模块、Metadata数据更新功能子模块、流表维护功能子模块和路由功能子模块;基于DPDK驱动的协议无感知转发模块利用DPDK开发套件,实现该模块下的子模块对协议无关转发设备的数据包的处理是经过轮询的方式从网卡硬件设备读取数据包,绕开操作系统内核。本发明具有高速更新数据的优点。

权利要求 :

1.一种基于协议无感知转发的高速数据更新系统,其对应的协议无关转发设备,其特征在于,包括:所述系统基于DPDK驱动的协议无感知转发模块,协议无感知转发模块作为一个基于DPDK驱动的模块运行在用户态,该协议无感知转发模块包括功能平面子模块、Metadata数据查询功能子模块、Metadata数据更新功能子模块、流表维护功能子模块和路由功能子模块;基于DPDK驱动的协议无感知转发模块利用DPDK开发套件,实现该模块下的子模块对协议无关转发设备的数据包的处理是经过轮询的方式从网卡硬件设备读取数据包,绕开操作系统内核;Metadata是协议无感知转发设备存储且可在流表项之间共享的数据,用户可以通过协议无感知技术和Metadata数据内容操作指令集对数据进行更新操作;

其中:

功能平面子模块,接收携带更新指令的数据包,根据所述数据包的功能平面ID的字段值判断该数据包所要触发的功能子模块;所述功能平面ID为指示协议无感知转发设备,该数据包触发的功能平面,除了所述功能平面ID的字段,数据包的字段还包括:表ID、数据ID、操作码和数据更新内容;表ID指明待更新数据所属的表;数据ID指明待更新数据在表ID所指的表中的索引;操作码指明对数据做的操作;数据更新内容指存放数据的更新内容;

Metadata数据查询功能子模块,负责对Metadata数据区域进行查询操作;

Metadata数据更新功能子模块,负责对Metadata数据区域进行更新操作;该模块具有支持修改Metadata数据所有内容的Metadata数据内容操作指令集,该指令集使得数据包携带的更新内容可直接覆盖到Metadata的指定位置,从而完成更新任务;

流表维护功能子模块,负责对协议无关转发设备的流表项进行修改、下发、删除和上报操作;所述流表项是协议无感知转发设备的基本组成,协议无感知转发设备包括若干流表,每个流表包括多个流表项;

路由功能子模块,负责对协议无关转发设备的应答数据包进行封装、转发操作。

2.一种基于协议无感知转发的高速数据更新方法,其特征在于,包括以下步骤:

(1)客户端的更新请求根据功能平面ID、表ID、数据ID、操作码、数据更新内容的协议格式封装好,作为更新数据包,发送给协议无感知转发设备;

(2)协议无感知转发模块通过DPDK驱动的CPU轮询方式从网卡设备接收客户端发来的更新数据包,协议无感知转发设备具有多个功能平面,不同的数据包,即功能平面子模块所接收到的数据包会触发协议无感知转发设备执行不同的功能,接收到的更新数据包首先进入功能平面子模块进行处理,判断所要执行的功能;

(3)功能平面子模块根据“位置+偏移”解封装更新数据包,判断解析到的更新数据包的功能平面ID字段是否是Metadata数据更新功能平面的编码,若是则进入Metadata数据更新功能子模块;

(4)Metadata数据更新功能子模块判断更新数据包的表ID字段和数据ID字段,根据这两个值定位到对应的Metadata表上的记录,这两个值是目的Metadata数据位置信息;

(5)Metadata数据更新功能子模块接着判断操作码,若操作码是更新操作的编码,更新的具体内容使用数据包的“数据更新内容”字段的值,若操作码是恢复默认值的编码,则表示更新的内容来自本地默认数据;

(6)Metadata数据更新功能子模块根据步骤(4)和步骤(5)得到的目的Metadata数据位置信息和操作码,通过Metadata数据内容操作指令集,将数据包的数据更新内容字段复制到目的Metadata数据区域;

(7)更新完成后,Metadata数据更新功能子模块更改更新数据包的功能平面ID字段的ID值为路由功能平面的编码,更新数据包的功能平面ID字段更改为路由功能平面的编码后,更新数据包变成应答数据包,返回给功能平面子模块,功能平面子模块判断该应答数据包的功能平面ID是路由功能平面的编码,将应答数据包交给路由功能子模块,该路由功能子模块将应答数据包返回给客户端。

说明书 :

一种基于协议无感知转发的高速数据更新系统及方法

技术领域

[0001] 本发明涉及一种基于协议无感知转发的高速更新系统及方法,属于软件定义网络技术领域。

背景技术

[0002] 软件定义网络是将网络的控制与转发分离,提供一种集中式的控制平面,对整个网络进行监控、配置与管理。软件定义网络是对传统网络架构的革新,软件定义网络架构分为应用层、控制层和转发层。转发层对应的物理实体是协议无感知转发设备,控制层对应的物理实体是网络控制器。协议无感知转发设备负责网络数据的高速转发,其转发决策来自于网络控制器。网络控制器通过南向接口对协议无感知转发设备进行集中统一管理。软件定义网络使得转发层具有可编程能力,数据包的解析和转发流程通过编程控制,打破了硬件设备对转发平面的功能限制。
[0003] 目前的协议转发设备分为两大类,一种是协议感知的转发设备,一种是协议无感知的转发设备。协议感知的转发设备根据已知协议类型,设计好固定的操作逻辑。若进入转发设备的数据包是已知的协议类型,则设备能按照对应的协议类型对数据包字段进行读写访问操作,若是一些未知格式的协议,则无法处理,因此称协议感知的转发设备是协议绑定的。其缺点是不灵活,对于一些新协议,若协议感知的转发设备未及时进行软件更新,则无法识别新协议的数据包。协议无感知技术克服该缺点,通过指定数据包的偏移和长度构成匹配域,利用灵活的匹配域来识别任意协议格式的数据包字段,使得转发设备无需感知报文的协议类型,协议无感知转发设备按照“匹配-动作”模式工作,即对数据包的某些字段与流表项的匹配域相比较,如果匹配一致,则执行流表项的动作,如转发数据包操作、丢弃数据包操作、修改数据包字段操作等。数据包处理逻辑由网络控制器控制,因此协议无感知的转发设备具备更大的灵活性,支持任意的协议格式的数据包。
[0004] 现有技术需要将携带用户更新指令的更新数据包先进入操作系统的协议栈解封装处理,再进入数据库系统进行更新,然后将更新结果返回协议栈进行应答数据包封装,最后将应答数据包发送客户端。这个技术存在的缺点是数据包处理过程冗长,效率低下。当前互联网对服务时延要求越来越严格,使用现有的数据更新技术,其时延无法适应万物互联时代大规模数据快速更新的场景。

发明内容

[0005] 本发明技术解决问题:克服现有技术存在的不足,提供一种基于协议无感知转发的高速数据更新系统及方法,利用数据平面协议无感知转发技术实现更新数据包解封装、数据更新、应答数据包封装等,达到高速更新数据的目的。
[0006] 本发明技术解决方案:
[0007] 本发明一种基于协议无感知转发的高速数据更新系统,其对应的协议无关转发设备,包括:所述系统基于DPDK驱动的协议无感知转发模块,协议无感知转发模块作为一个基于DPDK驱动的模块运行在用户态,该协议无感知转发模块包括功能平面子模块、Metadata数据查询功能子模块、Metadata数据更新功能子模块、流表维护功能子模块和路由功能子模块;基于DPDK驱动的协议无感知转发模块利用DPDK开发套件,实现该模块下的子模块对协议无关转发设备的数据包的处理是经过轮询的方式从网卡硬件设备读取数据包,绕开操作系统内核;Metadata是协议无感知转发设备存储且可在流表项之间共享的数据,用户可以通过协议无感知技术和Metadata数据内容操作指令集对该区域的数据进行更新操作;其中:
[0008] 功能平面子模块,接收携带更新指令的数据包,根据所述数据包的功能平面ID的字段值判断该数据包所要触发的功能子模块;所述功能平面ID为指示协议无感知转发设备,该数据包触发的功能平面,除了所述功能平面ID的字段,数据包的字段还包括:表ID、数据ID、操作码和数据更新内容;表ID指明待更新数据所属的表;数据ID指明待更新数据在表ID所指的表中的索引;操作码指明对数据做的操作;数据更新内容指存放数据的更新内容;
[0009] Metadata数据查询功能子模块,负责对Metadata数据区域进行查询操作;
[0010] Metadata数据更新功能子模块,负责对Metadata数据区域进行更新操作;该模块具有支持修改Metadata数据所有内容的Metadata数据内容操作指令集,该指令集使得数据包携带的更新内容可直接覆盖到Metadata的指定位置,从而完成更新任务;
[0011] 流表维护功能子模块,负责对协议无关转发设备的流表项进行修改、下发、删除和上报操作;所述流表项是协议无感知转发设备的基本组成,协议无感知转发设备包括若干流表,每个流表包括多个流表项;
[0012] 路由功能子模块,负责对协议无关转发设备的应答数据包进行封装、转发操作。
[0013] 本发明的一种基于协议无感知转发的高速数据更新方法,包括以下步骤:
[0014] (1)客户端的更新请求根据功能平面ID、表ID、数据ID、操作码、数据更新内容的协议格式封装好,作为更新数据包,发送给协议无感知转发设备;
[0015] (2)协议无感知转发模块通过DPDK驱动的CPU轮询方式从网卡设备接收客户端发来的更新数据包,协议无感知转发设备具有多个功能平面,不同的数据包,即功能平面子模块所接收到的数据包会触发协议无感知转发设备执行不同的功能,接收到的更新数据包首先进入功能平面子模块进行处理,判断所要执行的功能;
[0016] (3)功能平面子模块根据“位置+偏移”解封装更新数据包,判断解析到的更新数据包的功能平面ID字段是否等于0x02,0x02是一个16进制的8比特码,是Metadata数据更新功能平面的编码,若是则进入Metadata数据更新功能子模块;
[0017] (4)Metadata数据更新功能子模块判断更新数据包的表ID字段和数据ID字段,根据这两个值定位到对应的Metadata表上的记录,这两个值是目的Metadata数据位置信息;
[0018] (5)Metadata数据更新功能子模块接着判断操作码,若操作码是0xfa,则表示是更新操作,0xfa是一个16进制的8比特码,是更新操作的编码,更新的具体内容使用数据包的“数据更新内容”字段的值,若操作码是0x00,则表示恢复默认值操作,更新的内容来自本地数据;
[0019] (6)Metadata数据更新功能子模块根据步骤(4)和步骤(5)得到的目的Metadata数据位置信息和操作码,通过Metadata数据内容操作指令集,将数据包的数据更新内容字段复制到目的Metadata数据区域;
[0020] (7)更新完成后,Metadata数据更新功能子模块更改更新数据包的功能平面ID字段的ID值为0x01,0x01是一个16进制的8比特码,是路由功能平面的编码,更新数据包的功能平面ID字段更改为0x01后,更新数据包变成应答数据包,返回给功能平面子模块,功能平面子模块判断该应答数据包的功能平面ID为0x01,0x01是一个16进制的8比特码,是路由功能平面的编码,将应答数据包交给路由功能子模块,该路由功能子模块将应答数据包返回给客户端。
[0021] 本发明与现有技术相比的优点在于:
[0022] (1)现有的数据包收发技术,采用的是传统的操作系统驱动和内核协议栈收发方式,其特点是必须采用硬中断来做通讯,数据包需要经过硬中断上下文切换,数据在内核态和用户态之间的拷贝等操作,从网卡到业务进程,经过的路径太长,产生大量的CPU时间耗费。本发明利用DPDK技术进行数据包的收发,DPDK驱动屏蔽了硬件发出中断,在用户态采用主动轮询的方式,从而可以绕开内核在用户态做收发包处理,实现了零拷贝、无系统调用的好处,减少上下文切换带来的消耗。因此本发明在数据包的收发方面具有快速,高效的特点。
[0023] (2)现有的数据更新技术,主要是数据库系统或文件系统接收用户指令,然后对数据进行更新操作,从接收指令到完成指令过程需要大量的系统调用,系统资源消耗较大。本发明利用协议无感知技术,通过设计数据包协议格式、增加了支持修改Metadata数据所有内容的指令,该指令使得数据包携带的更新内容可直接覆盖到Metadata的指定位置,设备直接根据接收到的数据包的字段值即可执行数据更新操作,将数据包携带的更新数据直接覆盖到本地,从而完成更新任务。本发明从接收指令到完成指令过程简洁,系统消耗资源少。
[0024] (3)Metadata数据存储在内存上,协议无感知模块可直接进行内存访问。相比于存储在本地硬盘,数据访问更快速。
[0025] (4)相比现有的数据更新方法,本发明综合采用了DPDK收发技术、数据包驱动的更新技术、Metadata数据存储在内存的方式。三者的优点使得本发明在应对大规模数据更新场景时,效率更高。

附图说明

[0026] 图1为本发明的协议无感知转发设备功能组成图;
[0027] 图2为协议无感知转发数据高速更新系统部署图;
[0028] 图3为更新数据包和应答数据包协议封装格式;
[0029] 图4为本发明的更新方法实施过程图。

具体实施方式

[0030] 下面结合附图及实施例对本发明进行详细说明。
[0031] 术语解释:
[0032] 数据包:是包交换网络的数据传输基本单位。由头部控制信息和负载数据组成。协议无感知转发:网络转发设备对网络协议和数据包处理转发流程没有感知,对数据包的读写访问等操作均通过一套通用的网络指令集定义,网络指令集灵活定义数据包的处理逻辑。本发明的数据包包括更新数据包和应答数据包。
[0033] 协议无感知转发设备:是软件定义网络架构中转发层的组成实体,包括若干流表,每个流表包括多个流表项,每个流表项表达了对数据包处理的规则。
[0034] Metadata是协议无感知转发设备存储且可在流表项之间共享的数据,用户可以通过协议无感知技术对该区域的数据进行查询、更新等操作。
[0035] 如图1所示,本发明中的协议无感知转发设备功能组成如图1所示,协议无感知转发模块作为一个基于DPDK驱动的模块运行在用户态,该模块由功能平面子模块、Metadata数据查询功能子模块、Metadata数据更新功能子模块、流表维护功能子模块、路由功能子模块组成。功能平面子模块,负责根据数据包的“功能平面ID”字段值,判断该数据包所要触发的功能子模块;Metadata数据更新功能子模块,负责对Metadata数据区域进行更新操作;Metadata数据更新功能子模块,负责对Metadata数据区域进行更新操作;流表维护功能子模块,负责对协议无关转发设备的流表项进行修改、下发、删除、上报等操作;路由功能子模块,负责对协议无关转发设备的数据包进行封装、转发操作。所有的模块都利用DPDK技术进行数据包的收发,DPDK驱动屏蔽了硬件发出中断,在用户态采用主动轮询的方式,绕开内核在用户态做收发包处理。
[0036] 本系统部署图如图2所示,部署方式采用客户端/服务端的模式。一台或多台协议无感知转发设备作为服务端,用户终端通过网络与服务端相连接。
[0037] 协议无感知转发设备在逻辑上分为多个功能平面,Metadata数据更新功能平面、Metadata数据更新功能平面、流表维护功能平面、路由功能平面。本发明主要使用Metadata数据更新功能平面。本发明利用协议无感知技术,通过设计数据包协议格式,设备直接根据接收到的数据包的字段值执行相应的功能平面。
[0038] 图4所示的更新方法实施过程如下:
[0039] (1)客户端的更新请求根据功能平面ID、表ID、数据ID、操作码、数据更新内容的协议格式封装好,作为更新数据包,发送给协议无感知转发设备;
[0040] (2)协议无感知转发模块通过DPDK驱动的CPU轮询方式从网卡设备接收客户端发来的更新数据包,协议无感知转发设备具有多个功能平面,不同的数据包,即功能平面子模块所接收到的数据包会触发协议无感知转发设备执行不同的功能,接收到的更新数据包首先进入功能平面子模块进行处理,判断所要执行的功能;
[0041] (3)功能平面子模块根据“位置+偏移”解封装更新数据包,判断解析到的更新数据包的功能平面ID字段是否等于0x02,0x02是一个16进制的8比特码,是Metadata数据更新功能平面的编码,若是则进入Metadata数据更新功能子模块;
[0042] (4)Metadata数据更新功能子模块判断更新数据包的表ID字段和数据ID字段,根据这两个值定位到对应的Metadata表上的记录,这两个值是目的Metadata数据位置信息;
[0043] (5)Metadata数据更新功能子模块接着判断操作码,若操作码是0xfa,则表示是更新操作,0xfa是一个16进制的8比特码,是更新操作的编码,更新的具体内容使用数据包的“数据更新内容”字段的值,若操作码是0x00,则表示恢复默认值操作,更新的内容来自本地数据;
[0044] (6)Metadata数据更新功能子模块根据步骤(4)和步骤(5)得到的目的Metadata数据位置信息和操作码,通过Metadata数据内容操作指令集,将数据包的数据更新内容字段复制到目的Metadata数据区域;
[0045] (7)更新完成后,Metadata数据更新功能子模块更改更新数据包的功能平面ID字段的ID值为0x01,0x01是一个16进制的8比特码,是路由功能平面的编码,更新数据包的功能平面ID字段更改为0x01后,更新数据包变成应答数据包,返回给功能平面子模块,功能平面子模块判断该应答数据包的功能平面ID为0x01,0x01是一个16进制的8比特码,是路由功能平面的编码,将应答数据包交给路由功能子模块,该路由功能子模块将应答数据包返回给客户端。
[0046] 本发明针对更新效率要求较高的一些网络数据更新场景,如移动网络用户信息更新、网络ID和地址实时更新等,利用数据平面协议无感知转发技术实现更新数据包解封装、数据更新、应答数据包封装等,达到高速更新数据的目的。
[0047] 提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。