首页> 中国专利> 一种协议无关转发网络可编程流测量方法

一种协议无关转发网络可编程流测量方法

摘要

本发明涉及一种协议无关转发网络可编程流测量方法,控制器向交换机下发消息以传送流定义字段集和协议无关转发指令序列;控制器向交换机下发流表项,交换机执行报文测量指令序列,流标识作为该报文测量指令序列的输入参数,该指令序列修改存储所述流属性的指令可访问全局存储空间;交换机生成测量报告并向流采集器发送,测量报告中包含一个或多个流信息,每个流的可编程属性通过执行报告生成指令序列获得;流标识作为该报告生成指令序列的输入参数,可编程流属性为该报告生成指令序列的输出参数;报告生成指令序列访问存储所述可编程流属性或其相关数据的指令可访问全局存储空间以获取可编程流属性。

著录项

  • 公开/公告号CN109547288A

    专利类型发明专利

  • 公开/公告日2019-03-29

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN201811440237.6

  • 发明设计人 郑宏波;葛敬国;鄂跃鹏;

    申请日2018-11-29

  • 分类号H04L12/26(20060101);H04L12/935(20130101);

  • 代理机构11251 北京科迪生专利代理有限责任公司;

  • 代理人安丽;成金玉

  • 地址 100093 北京市海淀区闵庄路甲89号

  • 入库时间 2024-02-19 09:31:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-07

    授权

    授权

  • 2019-04-23

    实质审查的生效 IPC(主分类):H04L12/26 申请日:20181129

    实质审查的生效

  • 2019-03-29

    公开

    公开

说明书

技术领域

本发明涉及互联网技术领域,具体涉及基于协议无关转发(POF)的软件定义网络(SDN)中一种可编程流测量方法。

背景技术

协议无关转发(POF)是对软件定义网络(SDN)南向接口协议OpenFlow的扩展。POF提供了SDN控制器直接指定规则匹配字段和指令操作字段的偏移量和长度的能力,定义了字段修改、插入、删除、数学与逻辑运算、校验和计算、指令跳转等指令用于对报文进行各种操作,另外还增加了流元数据(Flow Metadata)、指令修改等新特性。在POF网络中,数据平面无需具备特定网络协议的知识,只需要按照控制器下发的规则即可实现各类数据平面协议功能,从而实现了数据平面的深度可编程能力,同时也为实现更为丰富的网络功能提供了可能性。

对于报文流的测量是网络规划、计费、流量工程、负载均衡、入侵检测与预防等网络应用的基础,对于保证服务质量(QoS)有重要的意义。目前广泛使用的报文流的测量工具有Cisco公司提出的NetFlow和IETF基于NetFlow进行标准化的IPFIX(IP FlowInformation Export)等。这些方法存在以下局限性:

(1)NetFlow/IPFIX在向采集器(Collector)发送测量报告消息时,消息中的信息单元(Information Element)需要预先定义并标准化。当有新的协议被定义或者新的流属性被定义时,均需要向IANA(Internet Assigned Numbers Authority)注册新的信息单元,而交换机、路由器等输出器和采集器均需要进行升级以支持新的信息单元,这导致了NetFlow/IPFIX对新协议和新应用的支持非常缓慢;

(2)NetFlow/IPFIX用于定义流的关键字(Flow Key)以及测量报告消息中包含的具体信息单元均需要配置而不能进行编程,不适用于SDN(软件定义网络)环境。

总之,现有的NetFlow/IPFIX等测量工具不能灵活支持新的网络协议和应用,也不能很好地满足SDN网络中流定义和测量报告消息信息单元可编程的要求。

发明内容

本发明针对现有技术中存在的问题,提供了一种协议无关转发网络中流测量方法,能够灵活地支持新的网络协议和应用,控制器也可以对数据平面的流定义以及测量报告消息格式进行编程。

本发明的技术方案为:

一种协议无关转发网络可编程流测量方法,步骤为:

(1)控制器向交换机下发消息以传送以下信息:流定义字段集和协议无关转发指令序列;其中流定义字段集包括一个报文字段集合,用于定义报文是否属于同一个流:流定义字段集中所有字段值均相等的报文属于同一个流,每个流定义字段集均有一个唯一的标识;协议无关转发指令序列分为两类,一类在对报文进行测量时执行,称为报文测量指令序列,另一类在生成测量报告时执行,称为报告生成指令序列;每个协议无关转发指令序列包含一个或多个协议无关转发指令,每个协议无关转发指令序列均有一个唯一的标识;报文测量指令序列和报告生成指令序列用于统计和输出控制器可编程的流属性,称为可编程流属性;

(2)控制器向交换机下发流表项,所述流表项包括一个匹配字段集合和测量指令,所述测量指令中直接或间接指定了报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列;

(3)当一个接收的报文匹配所述流表项时,所述报文被测量,此时如果所述报文中所有由测量指令指定的流定义字段集中的字段值均与一个已有的流的相应字段值相等,则所述报文也属于这个流;如果所述报文中由测量指令指定的流定义字段集中的字段值至少有一个与所有已有流不相等,则新创建一个流;每个流均有一个唯一的标识;

(4)交换机执行报文测量指令序列,流标识作为该报文测量指令序列的输入参数,该指令序列修改存储所述可编程流属性值或可编程流属性相关数据的指令可访问全局存储空间;

(5)交换机生成测量报告并向流采集器发送,测量报告中包含一个或多个流的信息,每个流的可编程属性通过执行报告生成指令序列获得;流标识作为该报告生成指令序列的输入参数,可编程流属性为该报告生成指令序列的输出参数;报告生成指令序列访问存储所述可编程流属性值或可编程流属性相关数据的指令可访问全局存储空间以获取可编程流属性。

本发明的另一种协议无关转发网络可编程流测量方法,步骤为:

(1)控制器向交换机下发消息以传送以下信息:流定义字段集和协议无关转发指令序列;所述流定义字段集包括一个报文字段集合,用于定义报文是否属于同一个流:字段集中所有字段值均相等的报文属于同一个流,每个流定义字段集均有一个唯一的标识;

协议无关转发指令序列分为两类,一类在对报文进行测量时执行,称为报文测量指令序列,另一类在生成测量报告时执行,称为报告生成指令序列;每个协议无关转发指令序列包含一个或多个协议无关转发指令,每个指令序列均有一个唯一的标识;报文测量指令序列和报告生成指令序列用于统计和输出控制器可编程的流属性,称为可编程流属性;

(2)控制器向交换机下发消息启动在一个测量域内的测量,并直接或间接指定报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列,一个测量域可以是一个端口、板卡或网桥等;

(3)当一个测量域收到一个报文时,如果所述报文中所有由前述消息指定的流定义字段集中的字段值均与一个已有的流的相应字段值相等,则该报文也属于这个流;如果所述报文中由前述消息指定的流定义字段集中的字段值至少有一个与所有已有流不相等,则新创建一个流;每个流均有一个唯一的标识;

(4)交换机执行报文测量指令序列,流标识作为该报文测量指令序列的输入参数,该指令序列修改存储所述可编程流属性值或可编程流属性相关数据的指令可访问全局存储空间;

(5)交换机生成测量报告并向流采集器发送,测量报告中包含一个或多个流的信息,每个流的可编程属性通过执行报告生成指令序列获得;流标识作为该报告生成指令序列的输入参数,可编程流属性为该报告生成指令序列的输出参数;报告生成指令序列访问存储所述可编程流属性值或可编程流属性相关数据的指令可访问全局存储空间以获取可编程流属性。

所述步骤(4)和(5)中,指令可访问全局存储空间为协议无关转发流元数据。

所述步骤(4)和(5)中,流标识由交换机平台在调用报文测量指令序列或报告生成指令序列时存入一个扩展的数据区域从而传递给报文测量指令序列或报告生成指令序列,这个扩展的数据区域称为指令序列数据存储空间;步骤(5)中,可编程流属性由报告生成指令序列存储在指令序列数据存储空间中传送给交换机平台。

协议无关转发指令可以通过特定的字段类型访问所述指令序列数据存储空间字段。

所述指令序列数据存储空间只在指令序列和调用指令序列的进程或线程中有效。

所述指令序列数据存储空间在软件交换机中存在于进程或线程的堆栈中。

交换机在流结束时执行步骤(5)以生成测量报告并向流采集器发送。

交换机周期性地执行步骤(5)以生成测量报告并向流采集器发送。

交换机在存储流记录的存储空间不足时删除部分流记录,此时对删除的流记录执行步骤(5),以生成测量报告并向流采集器发送。

本发明由于能够通过流定义字段集描述属于同一个流的报文特征,并能够通过报文测量指令序列生成各类可编程流属性,因此本发明具有以下积极效果:

(1)可以支持任意协议流量的测量而无需修改交换机、控制器软硬件实现,缩短了新协议部署的时间,降低了部署成本;

(2)无需对测量报告消息中的信息单元预先进行标准化,可以快速部署各种细粒度、高灵活性的测量应用。

附图说明

图1为POF流测量系统结构图;

图2为通过下发包含测量指令的流表项的方式启动测量的流程图;

图3为通过下发消息的方式启动测量的流程图。

具体实施方式

下面结合附图及实施例对本发明进行详细说明。

本发明的一种协议无关转发网络可编程流测量方法,其步骤为:

(1)控制器向交换机下发消息以传送以下信息:

流定义字段集,一个流定义字段集包括一个报文字段集合,用于定义哪些报文属于同一个流:字段集中所有字段值均相等的报文属于同一个流,每个流定义字段集均有一个唯一的标识;

两类协议无关转发指令序列,一类在对报文进行测量时执行(称为报文测量指令序列),一类在生成测量报告时执行(称为报告生成指令序列),每个序列包含一个或多个协议无关转发指令,每个指令序列均有一个唯一的标识;这两类指令序列用于统计和输出控制器可编程的流属性,称为可编程流属性;

(1)控制器向交换机下发流表项,该流表项包括一个匹配字段集合和一个指令序列,其指令序列中包含测量指令,测量指令中直接或间接指定了报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列;或者控制器向交换机下发消息启动在一个测量域内的测量,并直接或间接指定报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列,一个测量域可以是一个端口、板卡或网桥等;

(2)当一个接收的报文匹配所述流表项时,或者当一个测量域收到一个报文时,该报文被测量,此时如果所述报文中所有指定的流定义字段集中的字段值均与一个已有的流的相应字段值相等,则该报文也属于这个流;如果所述报文中指定的流定义字段集中的字段值至少有一个与所有已有流不相等,则新创建一个流;每个流均有一个唯一的标识;

(3)交换机执行报文测量指令序列,流标识可以作为该报文测量指令序列的输入参数,该指令序列修改存储所述可编程流属性值或可编程流属性相关数据的指令可访问全局存储空间;

(4)交换机生成测量报告并向流采集器发送,测量报告中包含一个或多个流的信息,每个流的可编程属性通过执行报告生成指令序列获得;流标识可以作为该报告生成指令序列的输入参数,可编程流属性为该报告生成指令序列的输出参数;报告生成指令序列访问存储所述可编程流属性值或可编程流属性相关数据的指令可访问全局存储空间以获取可编程流属性。

进一步的,步骤(4)和(5)中,指令可访问全局存储空间为协议无关转发流元数据。

进一步的,步骤(4)和(5)中,流标识由交换机平台在调用报文测量指令序列或报告生成指令序列时存入一个扩展的数据区域从而传递给报文测量指令序列或报告生成指令序列,这个扩展的数据区域称为指令序列数据存储空间,步骤(5)中,可编程流属性由报告生成指令序列存储在指令序列数据存储空间中传送给交换机平台;

进一步的,协议无关转发指令可以通过特定的字段类型,例如0xfff1,访问所述指令序列数据存储空间字段;所述指令序列数据存储空间只在指令序列和调用指令序列的进程或线程中有效;在软件交换机中,所述指令序列数据存储空间存在于进程或线程的堆栈中。

进一步的,交换机在流结束时执行步骤(5)以生成测量报告并向流采集器发送。

进一步的,交换机周期性地执行步骤(5)以生成测量报告并向流采集器发送。

进一步的,交换机在存储流记录的存储空间不足时删除部分流记录,此时对删除的流记录执行步骤(5)以生成测量报告并向流采集器发送。

本发明提出的技术方案架构如图1所示。POF交换机接收控制器下发的转发规则和其他控制消息。POF交换机上包含一个测量模块,可以由硬件或软件实现。需要测量的报文被复制至测量模块进行处理,生成流记录。交换机将流记录信息通过测量报告发送至采集器。采集器为运行在服务器或其他硬件平台上的软件程序,对测量报告进行进一步处理,并向用户或其他软件程序提供访问接口。

本发明对POF协议和现有测量方法进行的主要扩展如下:

(1)流定义字段集

一个流定义字段集包括一组报文字段,用于定义哪些报文属于同一个流,流定义字段集中所有字段值均相等的报文属于同一个流,否则属于不同的流。

现有的测量方法只能依据TCP或UDP五元组(IP源地址、IP目的地址、IP Protocol、TCP/UDP源端口号和TCP/UDP目的端口号)等字段定义哪些报文属于同一个流,不能支持新的网络协议,也不能支持隧道封装内层的报文流测量。使用流定义字段集可以灵活定义哪些报文属于同一个流。考虑这样的例子:在VxLan隧道的中间节点对隧道承载的流量进行测量,统计隧道内承载的各个TCP流的乱序和重传报文比率,以便监控网络运行状态并为网络优化提供参考。在这个场景下,外层VxLan封装以及内层IP源地址、IP目的地址、IPProtocol、TCP源端口号和TCP目的端口号相同的报文属于同一个TCP流,即流定义字段集包括以下字段:

外层EtherType

外层IP源地址

外层IP目的地址

外层IP Protocol

外层UDP源端口号

外层UDP目的端口号

VxLAN头部VNI

内层EtherType

内层IP源地址

内层IP目的地址

内层IP Protocol

内层TCP源端口号

内层TCP目的端口号

为了便于引用,每个流定义字段集均有一个唯一的标识。例如在前述例子中,流定义字段集的标识可以记为FD_1。

(2)报文测量指令序列和报告生成指令序列

现有的测量方法一般只能对流的一些简单属性进行统计,例如开始时间、结束时间、报文计数、字节计数等,不能进行较为复杂或灵活的统计,例如前述例子中的TCP流的报文乱序和重传比率。本发明提出的技术方案能够支持由控制器编程的流属性,称为可编程流属性。可编程流属性通过执行POF指令序列进行统计和输出。一个POF指令序列包括多个按顺序执行的POF指令,现有POF协议中的指令块(Instruction Block)是指令序列的一个例子。指令序列分为两类,一类在测量报文时执行,称为报文测量指令序列,这个指令序列中的指令可以对报文进行处理并将可编程流属性值或与可编程流属性相关的数据记录下来。在前述例子中,在测量报文时通过执行报文测量指令序列记录每个TCP流的报文总计数、最大序列号,并判断被测量报文的序列号是否小于或等于最大序列号,如果小于或等于,被测量的报文即为乱序或重传报文,这些报文的计数也被记录下来。另一类指令序列在生成测量报告时执行,称为报告生成指令序列,这个指令序列中的指令可以读出可编程流属性值或对记录的数据进行处理以计算出可编程流属性值,并将可编程流属性值按一定的格式输出至交换机平台(即交换机中不可由控制器编程的软硬件部分)。交换机平台不解析报告生成指令序列输出的可编程流属性值,只是将可编程流属性值复制至测量报告中。在前述例子中,报告生成指令序列将流的乱序和重传报文计数除于流的报文总计数(需要扩展POF的CALC_FIELD指令以支持除法)得到乱序和重传报文比率,并将比率值输出。

为了便于引用,每个指令序列均有一个唯一的标识。例如在前述例子中,报文测量指令序列和报告生成指令序列的标识可以分别记为IS_1和IS_2。

可编程流属性值或计算这些属性值需要的相关数据存储在一个POF指令可以访问、在交换机运行时一直有效(不随报文的接收/发送而分配/释放)的存储空间内,该存储空间称为指令可访问全局存储空间。在POF协议中,流元数据是指令可访问全局存储空间的一个例子。

(3)指令序列数据存储空间

在交换机平台调用指令序列时,需要输入一些参数,例如前述例子中报文测量指令序列为了计算不同流使用的指令可访问全局内存空间单元的位置,需要输入流标识。另外指令序列执行结束后可能需要输出一些数据,例如前述例子中报告生成指令序列输出的乱序和重传报文比率值。本发明扩展POF协议,增加了一种新的数据存储空间,用于交换机平台向指令序列传递输入参数、指令序列向交换机平台输出数据以及指令序列执行中存储临时数据,称为指令序列数据存储空间。交换机平台将指令序列需要的输入参数写入指令序列数据存储空间,然后调用指令序列;指令序列将返回交换机平台的输出参数也写入指令序列数据存储空间,供交换机平台读取。输入参数和输出参数在指令序列数据存储空间的位置可以通过标准化等方式约定。

指令序列数据存储空间的一种实现方式是使用指令可访问全局存储空间的一部分作为指令序列数据存储空间。

指令序列数据存储空间的另外一种实现方式是使用指令可访问全局存储空间之外的内存空间。在这种方式中,POF指令可以通过pof_match结构访问指令序列数据存储空间的字段,其字段类型为一指定值(例如0xfff1)。如果交换机平台支持多个上下文(例如软件线程)并发调用指令序列,以这种方式实现的指令序列数据存储空间可以仅在各上下文内可见。在软件交换机中,以这种方式实现的指令序列数据存储空间可以位于进程或线程的堆栈中。

本发明提出的技术方案之一如图2所示。详细说明如下:

在测量开始前POF控制器需要向交换机下发流定义字段集。在前述统计VxLan隧道内TCP乱序和重传报文比率的例子中,POF控制器向交换机下发流定义字段集FD_1。

在测量开始前POF控制器还需要向交换机下发报文测量指令序列和报告生成指令序列。在前述例子中,POF控制器向交换机下发报文测量指令序列IS_1和报告生成指令序列IS_2。

POF控制器可以按任意先后顺序向交换机下发流定义字段集和指令序列。

控制器向交换机下发流表项,流表项包括用于过滤需要测量报文的匹配字段集合和测量指令(同时还可能包括其他指令,例如通过某一个端口发送报文的OUTPUT指令)。测量指令中可以直接指定报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列,也可以通过引用包含流定义字段集、报文测量指令序列和报告生成指令序列等参数的其他对象(例如模板)间接指定报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列。

对报文执行测量指令将对报文按一定比例采样,采样的报文将被复制至交换机的测量模块进行处理。

在前述测量VxLan隧道内TCP乱序和重传报文比率的例子中,VxLan隧道内的报文需要被测量,流表项的匹配条件如下:

字段匹配值外层Ethertype0x0800外层IP源地址隧道源地址外层IP目的地址隧道目的地址外层协议类型0x11(UDP)外层目的端口号0x12be(VxLAN)

测量指令参数如下:

参数流定义字段集FD_1报文测量指令序列IS_1报告生成指令序列IS_2采样概率1(1:1采样)

当一个报文匹配上述流表项并被采样时,该报文将被复制至交换机测量模块进行处理。测量模块保存了所有被测量流的记录列表。每个流都有一个唯一的标识。测量模块将测量指令中指定的流定义字段集中包含的字段(称为该报文的键值)从报文中提取出来,然后从流记录列表中查找是否存在一个流,其键值(即该流中报文的键值)与被测量的报文相同。如果不存在这样一个流,则新创建一个流,为流分配一个标识,记录流的键值,如果报文测量指令序列需要的话可以将流的标识存入指令序列数据存储空间;如果存在这样一个流,在报文测量指令序列需要的情况下可以将这个流的标识存入指令序列数据存储空间。

交换机平台然后执行报文测量指令序列,在测量VxLan隧道内TCP乱序和重传报文比率的例子中,将调用指令序列IS_1,该指令序列将更新指令可访问全局存储空间中存储的流的报文总数,并在报文为乱序或重传报文的情况下更新指令可访问全局存储空间中存储的该流的乱序和重传计数。

交换机平台可能还会记录或更新流的非可编程属性,例如流开始时间等。

当一个流结束后(例如在5秒钟内没有收到报文),或者距离上次发送测量报告以经过去了一定的时间(例如10秒),交换机通过测量报告消息向流采集器发送这个流的信息。另外当系统中存储流记录的空间已经用完,需要删除部分流记录以创建新的流记录时,交换机通过测量报告消息向流采集器发送被删除流的信息。每个测量报告中包含一个或多个流的信息。交换机平台执行报告生成指令序列获取流的可编程流属性值,并将可编程流属性值由指令序列数据存储空间复制至测量报告中。测量报告中还可能包含非可编程属性,例如流开始时间等。然后交换机平台将测量报告发送至流采集器。在测量VxLan隧道内TCP乱序和重传报文比率的例子中,交换机首先将流标识存入指令序列数据存储空间的前四个字节,然后执行报告生成指令序列IS_2。该指令序列将乱序和重传报文计数除以流的报文总计数得到乱序和重传报文比率,并将比率值存储在指令序列数据存储空间。

本发明提出的另一技术方案如图3所示。与前一技术方案的不同之处在于前一技术方案通过控制器下发流表项启动测量;此技术方案通过由控制器下发一个扩展的POF消息启动某一测量域接收的报文的测量,一个测量域可以是一个端口、板卡或网桥等。控制器在向交换机下发流定义指令集、报文测量指令序列和报告生成指令序列后,下发这个扩展的消息,在消息中可以直接指定报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列,也可以通过引用包含流定义字段集、报文测量指令序列和报告生成指令序列等参数的其他对象(例如模板)间接指定报文被测量时使用的流定义字段集、报文测量指令序列和报告生成指令序列。此技术方案的其余步骤与前一技术方案相同。

提供以上实施方式仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号