一种基于编程工具的协议无关网络的转发管理方法

文档序号:10597041阅读:219来源:国知局
一种基于编程工具的协议无关网络的转发管理方法
【专利摘要】本发明公开了一种基于编程工具的协议无关网络的转发管理方法,其特征是网络管理中心根据编程工具编写协议无关网络的传输协议和控制算法,对于协议无关网络中交换机上交的数据包,编程工具根据传输协议和数据包运行网络算法,使用API路径记录网络算法的执行过程,根据API路径生成路径树,最后将路径树转化为转发规则并下发给交换机,交换机根据转发规则进行数据包的转发处理,从而实现了协议无关网络的转发控制。本发明能实现通过算法编程来自动生成交换机的转发规则,从而能自动进行协议解析,并且屏蔽低层细节,降低编程的复杂性。
【专利说明】
一种基于编程工具的协议无关网络的转发管理方法
技术领域
[0001] 本发明属于协议无关网络控制与管理领域,具体地说是一种基于编程工具的协议 无关网络的转发管理方法。
【背景技术】
[0002] 在当前的网络中,数据、应用的规模都呈爆炸式的增长,人们对网络中支持的协议 类型和设备种类的要求越来越多,而当前基于TCP/IP协议的网络协议的分布式管理的特点 导致难以对新设备和新协议进行有效的添加和管理,并且其控制面和数据面高度耦合的特 点决定了网络设备难以更改和数据面需要承担越来越多的任务。为了解决对新设备、新协 议的支持,人们提出了基于协议无感知转发技术的软件定义网络的概念,以下简称协议无 关网络。协议无关网络将控制面和数据面解耦合,使用集中的控制器对由交换机组成的转 发网络进行统一的控制和管理。
[0003] 目前,对协议无关网络中控制器的设计主要有两种技术:一是基于FloodLight的 协议无关网络控制器,但是该控制器在进行网络编程时需要用户按照转发规则的格式逐条 的进行手动编写,十分繁琐且容易出错;二是基于P0X的协议无关网络控制器,该控制器也 需要逐条的编写转发规则,同时还要考虑字段的解析问题,这些低层的细节十分繁琐,提高 了编程控制的复杂性。

【发明内容】

[0004] 本发明为了克服现有技术存在的不足之处,提供一种基于编程工具的协议无关网 络的转发管理方法,以期能实现通过算法编程来自动生成交换机的转发规则,从而能自动 进行协议解析,并且屏蔽低层细节,降低编程的复杂性。
[0005] 为达到上述发明目的,本发明采用如下技术方案:
[0006] 本发明一种基于编程工具的协议无关网络的转发管理方法;所述协议无关网络包 含一个控制器、n个交换机和网络管理中心,并由所述n个交换机组成相应的拓扑结构;其特 点是:所述编程工具包括:协议解析模块、算法执行模块、算法提取模块、转发规则生成模 块;所述转发管理方法是按如下步骤进行:
[0007] 步骤1、所述网络管理中心根据所述协议解析模块提供的协议报文定义规范,编写 所述协议无关网络的传输协议;
[0008] 步骤2、所述网络管理中心根据所述算法执行模块提供的调用接口 API,编写所述 协议无关网络的控制算法;
[0009] 步骤3、所述编程工具根据所述协议无关网络的传输协议和控制算法进行转发处 理,得到转发规则并发送给所述控制器;
[0010] 步骤3.1、所述协议解析模块对所述传输协议进行协议解析,获得协议接口;
[0011] 步骤3.2、所述算法执行模块接收任一交换机发送的数据包,并为所述数据包分配 一段缓存,将所述缓存记为元数据;
[0012] 根据所述控制算法中的调用接口 API利用所述协议接口获取所述数据包中的字段 并进行匹配,从而获得所述数据包的转发路径;
[0013] 步骤3.3、所述网络算法提取模块根据所述算法执行模块中调用接口 API的处理过 程生成相应的API路径;并根据API路径生成路径树;
[0014] 步骤3.4、所述转发规则生成模块根据所述路径树生成转发规则;
[0015] 步骤4、所述控制器将所述转发规则分发给n个交换机,用于实现n个交换机之间的 数据传输。
[0016]本发明所述的转发管理方法的特点也在于,
[0017] 所述步骤1中的传输协议是按如下过程编写:
[0018] 步骤1.1、假设所述传输协议中有n层协议,第k层有nk个协议,kG[l,n];初始化k =1;
[0019] 步骤1.2、定义第k层协议包括:协议的名字、协议中每个字段的字段名和长度;
[0020] 步骤1.3、初始化j = l; jG [1,nk];
[0021] 步骤1.4、定义第k +1层协议的第j个协议,包括:协议的名字、协议中每个字段的字 段名和长度;并在第k层协议中设置跳转到第k+1层协议中第j个协议的跳转字段值;
[0022]步骤1.5、将j+1赋值给j;判断j>nk是否成立,若成立,则执行步骤1.6;否则,返回 步骤1.4;
[0023]步骤1.6、将k+1赋值给k;判断k>n是否成立,若成立,则表示完成编写;否则,返回 步骤1.3。
[0024]所述步骤2中的调用接口 API包括:数据包操作API、网络拓扑查询API和路径规划 API;所述控制算法是按如下步骤进行编写:
[0025]步骤2.1、利用所述数据包操作API获取所述数据包的字段值;
[0026]步骤2.2、利用所述网络拓扑查询API查询所述字段值在所述协议无关网络中对应 的交换机和主机;
[0027] 步骤2.3、根据所述数据包的字段值所对应的交换机和主机以及拓扑结构,利用所 述路径规划API生成所述协议无关网络中到达相应交换机和主机的转发路径。
[0028] 所述协议解析包括:协议分析模块和数据包解析模块,所述步骤3.1中的协议接口 是按如下过程进行协议解析:
[0029] 步骤3.1. 1、所述协议分析模块将所述传输协议翻译成有限状态机;
[0030] 步骤3.1.2、所述数据包解析模块根据所述有限状态机生成相应的解释器,用于提 供给所述调用接口 API。
[0031] 所述步骤3.3中所生成的API路径的类型包括:读取、比较、跳转、写元、读元和路 径;并按如下方式生成相应的API路径:
[0032]所述调用接口 API中的数据包操作API根据所述传输协议的字段名读取所述数据 包相对应的字段值,所述字段名记为field_l,所述字段值记为^,从而生成一条类型为"读 取"的API路径,记为R(field_l,v〇 ;
[0033]所述数据包操作API比较相应数据包字段名对应的字段值与被比较值,得到比较 结果;所述相应数据包字段名记为field_2,所述被比较值记为v2,所述比较结果记为b,从 而生成一条类型为"比较"的API路径,记为T(f ield_2,v2,b);
[0034]所述数据包操作API从所述数据包的当前层协议进入下一层协议时,读取当前层 协议的字段名、字段值、跳转流表、偏移量四个值,并将所读取的字段名记为field_3,字段 值记为V3、跳转流表记为tid、偏移量记为offset,从而生成一条类型为"读取"的API路径和 一条类型为"跳转"的六?1路径,分别记为1?(;1^1(1_3,¥3)和6(1:1(1,(^861:) ;
[0035]所述数据包操作API根据所述传输协议的字段名将所述数据包的字段值写入所述 元数据,并将所述传输协议的字段名记为field_4,所述字段值记为V4,从而生成类型为"写 元"的API路径,记为WM(field_4,V4);
[0036]所述数据包操作API根据所述传输协议的相关字段名从所述元数据读取相应的字 段值,并将所述相关字段名记为field_5,所述字段值记为^,从而生成类型为"读元"的API 路径,记为1^(;1^61(1_5,¥5);
[0037]所述调路径规划API将所生成的数据包的转发路径,记为route,从而生成类型为 "路径"的API路径,记为L(r〇Ute)。
[0038]所述步骤3.3中的路径树的结点类型包括:读取、比较、跳转、写元、读元和路径;并 按如下方式生成相应的路径树:
[0039]根据所述"读取"的API路径R(field_l,V1),生成类型为"读取"的路径树结点,包 括字段名、m个字段值和m个子树,记为f (fielcLUKvhtOJvib),. . .,(Vi,ti),..., (Vm,tm)}),(Vi,ti)表示第i个字段值Vi和第i个子树ti;对i G (1,m),若vi = vi,则将R(field_ 1,vi)记录第i个子树ti中;
[0040]根据所述"比较"的API路径!'(^61(1_2^2,13),生成类型为"比较"的路径树结点, 包括字段名、字段值和两个子树,记为T' (f ield_2,V2,t_true,t_false),t_true,t_false 分别表示两个子树,若b = true,则将T(f ield_2,V2,b)记录在t_true子树中,否则将T (field_2,V2,b)记录在 t_false 子树中;
[0041]根据所述"跳转"的API路径G(tid,〇ffset),生成类型为"跳转"的路径树结点,包 括跳转流表、偏移量和一个子树,记为G' (tid,ofTset,t),t表示所述一个子树;并将G(tid, offset)记录在t子树中;
[0042]根据所述"写元"的API路径WM(field_4,V4),生成类型为"写元"的路径树结点,包 括字段名和一个子树,记为WMlfield_4,w),w表示所述一个子树;并将WM(field_4, V4)记 录在w子树中;
[0043 ]根据所述"读元"的API路径RM (f i e 1 d_5, V5),生成类型为"读元"的路径树结点,包 括字段名、q个字段值和q个子树,记为RM' 、),...,(v%,t%)}),(V P,1/P)表示第 p 个字段值 V、和第 p 个子树 1/P,对 pG(l,q),若 V5 = v' p,则将RM(field_5,V5)记录在第p个子树匕中;
[0044]根据所述"路径"的API路径L(r〇Ute),生成类型为"路径"的路径树结点,记为1/ (route),并直接将L(route)记录在1/ (route)路径树结点中。
[0045] 所述步骤3.4中的转发规则包括:匹配项和指令集;并按如下方式生成:
[0046] 从根结点开始深度遍历路径树;当遍历到"读取"、"比较"、"读元"类型的路径树结 点,则生成所述匹配项;当遍历到"写元"、"跳转"、"路径"类型的路径树结点,则生成所述指 令集;直到所有结点都遍历完成。
[0047]与已有技术相比,本发明有益效果体现在:
[0048] 1、本发明设计一种基于编程工具的协议无关网络的转发管理方法,根据编程工具 提供的协议报文定义规范和调用接口 API分别编写传输协议和控制算法,对于每个交换机 发来的数据包,编程工具根据传输协议和数据包执行控制算法,并生成API路径和路径树, 最终转化为转发规则,从而实现了通过编程语言来生成转发规则。与基于FloodLight的协 议无关网络控制器和基于P0X的协议无关网络控制器相比,屏蔽了转发规则的低层细节,有 效的降低了编程的复杂性。
[0049] 2、本发明使用协议报文定义规范描述协议无关网络中运行的传输协议,并使用编 程工具的协议解析模块对编写的传输协议进行解析,从而可以方便的支持和添加任意协 议,与基于P0X的协议无关网络控制器相比,避免了用户手动的协议解析过程,降低了用户 的负担,提高了编程效率。
[0050] 3、本发明使用调用接口 API编写协议无关网络中的控制算法,是以数据包为参数 运行控制算法,从而生成对应的API路径,再依据API路径生成路径树。通过路径树保存对数 据包的处理过程,将历史数据包的执行过程转化为转发规则下发给交换机,从而避免了交 换机每次都要上交数据包,提高了协议无关网络中交换机的转发效率。
[0051] 4、本发明使用路径树产生转发规则,通过路径树结点与转发规则的对应关系来自 动的生成转发规则,从而避免了用户对转发规则的直接接触,用户无需考虑转发规则繁琐 的组成内容,从而屏蔽了低层细节,提高了编程效率。
【附图说明】
[0052]图1为本发明使用调用接口 API编写控制算法的流程图;
[0053]图2为本发明生成API路径的实施实例图;
[0054]图3为本发明生成路径树的实施实例图。
【具体实施方式】
[0055]本实施例中,一种基于编程工具的协议无关网络的转发管理方法;协议无关网络 包含一个控制器、n个交换机和网络管理中心,并由n个交换机组成相应的拓扑结构;编程工 具包括:协议解析模块、算法执行模块、算法提取模块、转发规则生成模块;转发管理方法是 按如下步骤进行:
[0056]步骤1.1、假设所述传输协议中有n层协议,第k层有nk个协议,kG[l,n];初始化k =1;
[0057] 步骤1.2、定义第k层协议包括:协议的名字、协议中每个字段的字段名和长度;
[0058] 步骤1.3、初始化j = l; jG [1,nk];
[0059] 步骤1.4、定义第k +1层协议的第j个协议,包括:协议的名字、协议中每个字段的字 段名和长度;并在第k层协议中设置跳转到第k+1层协议中第j个协议的跳转字段值;
[0060] 步骤1.5、将j+1赋值给j;判断j>nk是否成立,若成立,则执行步骤1.6;否则,返回 步骤1.4;
[0061] 步骤1.6、将k+1赋值给k;判断k>n是否成立,若成立,则表示完成编写;否则,返回 步骤1.3。
[0062]举例说明,对于传统网络的MAC、IP双层协议,使用协议报文定义规范定义如下:
[0063]首先定义第一层MAC协议,协议的名字为ethernet,协议中三个字段分别为48位目 的地址dl_dst,48位源MAC地址dl_src,16位协议类型dl_type。则定义MAC层协议的代码为: header clhcrnot \ fields { dl_dst: 48;
[0064] dl_src : 48; dl typc : 16; }
[0065] 接着定义第二层协议,第二层只有一个协议:IP协议。使用同样的方法定义协议的 名字、每个字段和长度,协议名字为ipv4,长度和字段名为分别为:4位版本号ver,4位首部 长度ihl,8位服务类型tos,16位总长度len,16位标识id,3位标志位flag,13位片偏移off,8 位生存时间ttl,8位协议类型nw_proto,16位首部校验和sum,32位源IP地址nw_src,32位目 的IP地址nw_dst,不定长的可选选项opt。 headeripv4 j fields { ver: 4; ihl :4; tos : 8; len : 16; id : 16; flag : 3;
[0066] off: 13; ttl ; 8; nvv proto : 8; sum : 16; nvv_src : 32; nw_dst: 32; opt; > }
[0067]最后在上一层的MAC协议中加入跳转到当前IP协议的跳转值,规定当dl_type的值 为0x0800时表示下一层协议为IP协议,对应代码为: header cthcrnct } fields ; dl_dst: 48; dl_src : 48; 「一i dljypc : 16;
[0068] } next select (dl typc); ease 0x0800: ipv4; } }
[0069] 第二层协议定义完成,传输协议编写完成。
[0070] 步骤2、网络管理中心根据算法执行模块提供的调用接口 API,编写协议无关网络 的控制算法,流程图如图1所示;
[0071 ]步骤2.1、利用数据包操作API获取数据包的字段值;
[0072]步骤2.2、利用网络拓扑查询API查询字段值在协议无关网络中对应的交换机和主 机;
[0073] 步骤2.3、根据数据包的字段值所对应的交换机和主机以及拓扑结构,利用路径规 划API生成协议无关网络中到达相应交换机和主机的转发路径。
[0074] 步骤3、编程工具根据协议无关网络的传输协议和控制算法进行转发处理,得到转 发规则并发送给控制器;
[0075] 步骤3.1、协议解析模块对传输协议进行协议解析,获得协议接口;
[0076] 步骤3.1.1、协议分析模块将传输协议翻译成有限状态机;
[0077] 步骤3.1.2、数据包解析模块根据有限状态机生成相应的解释器,用于提供给调用 接口 API。
[0078] 步骤3.2、算法执行模块接收任一交换机发送的数据包,并为数据包分配一段缓 存,将缓存记为元数据;
[0079]根据控制算法中的调用接口 API利用协议接口获取数据包中的字段并进行匹配, 从而获得数据包的转发路径;
[0080] 步骤3.3、网络算法提取模块根据算法执行模块中调用接口 API的处理过程生成相 应的API路径;并根据API路径生成路径树;
[0081] 其中,所生成的API路径的类型包括:读取、比较、跳转、写元、读元和路径;并按如 下方式生成相应的API路径:
[0082]调用接口 API中的数据包操作API根据传输协议的字段名读取数据包相对应的字 段值,字段名记为field_l,字段值记为V1,从而生成一条类型为"读取"的API路径,记为R (f ield_l, vi);
[0083]数据包操作API比较相应数据包字段名对应的字段值与被比较值,得到比较结果; 相应数据包字段名记为field_2,被比较值记为v2,比较结果记为b,从而生成一条类型为 "比较"的API路径,记为T (f i e 1 d_2,v2,b);
[0084]数据包操作API从数据包的当前层协议进入下一层协议时,读取当前层协议的字 段名、字段值、跳转流表、偏移量四个值,并将所读取的字段名记为field_3,字段值记为V3、 跳转流表记为tid、偏移量记为offset,从而生成一条类型为"读取"的API路径和一条类型 为"跳转"的八?1路径,分另1」记为1?(;1^61(1_3,¥3)和6(1:1(1,(^861:) ;
[0085]数据包操作API根据传输协议的字段名将数据包的字段值写入元数据,并将传输 协议的字段名记为field_4,字段值记为V4,从而生成类型为"写元"的API路径,记为WM (field_4,V4);
[0086] 数据包操作API根据传输协议的相关字段名从元数据读取相应的字段值,并将相 关字段名记为field_5,字段值记为v5,从而生成类型为"读元"的API路径,记为RM(field_ 5,V5);
[0087] 调路径规划API将所生成的数据包的转发路径,记为route,从而生成类型为"路 径"的API路径,记为L(route) 〇
[0088]举例说明,在图2所示的API路径实施例中,根据网络管理中心编写的控制算法,调 用接口 API首先使用数据包API中的read_packet函数来读取数据包中字段名〃smac〃对应的 字段值smaC1,因此对应生成类型为"读取"的API路径R( 〃smac〃,smaC1);接着使用数据包API 中的write_metadata函数将字段名"dmac〃和其对应的字段值dmaci写入元数据中,因此对 应生成类型为"写元"的API路径丽(〃dmac〃,dmaci);接着使用数据包操作API中的pull_ header函数从数据包的当前层协议进入下一层协议,读取了字段名t、字段值t、跳转流表 tid、偏移量offset四个值,因此对应生成类型为"读取"的API路径以1〃山)和类型为"跳 转"的API路径6(〃2〃,10);接着使用数据包4?1中的^ &(1_口&(^的函数来读取数据包中字段 名〃dip"对应的字段值di Pl,因此对应生成类型为"读取"的API路径R( "dip",diPl);最后使 用数据包API中的read_metadata函数从元数据中读取字段值"dmac"对应的字段值dmaci, 因此对应生成类型为"读元"的六?1路径1^(〃(11]^(3〃,(11]^(31)。
[0089] 路径树的结点类型包括:读取、比较、跳转、写元、读元和路径;并按如下方式生成 相应的路径树:
[0090] 根据"读取"的API路径R(field_l,V1),生成类型为"读取"的路径树结点,包括字 段名、m 个字段值和 m 个子树,记为 V (field j,{(vi,ti),(V2, t2),. . .,(vi,ti),. . .,(vm, tm)}),(Vi,ti)表示第i个字段值Vi和第i个子树ti;对i G (1,m),若vi = vi,则将R(field_l, vi)记录第i个子树ti中;
[0091]根据"比较"的API路径!'出61(1_2,^,13),生成类型为"比较"的路径树结点,包括 字段名、字段值和两个子树,记为T' (f ield_2,V2,t_true,t_false),t_true,t_false分别 表示两个子树,若b = true,则将T (f ie 1 d_2,V2,b)记录在t_true子树中,否则将T(f ie 1 d_2, V2,b)记录在t_false子树中;
[0092]根据"跳转"的API路径G(tid,〇ffset),生成类型为"跳转"的路径树结点,包括跳 转流表、偏移量和一个子树,记为V (tid,offset,t),t表示一个子树;并将G(tid,offset) 记录在t子树中;
[0093]根据"写元"的API路径WM(field_4,V4),生成类型为"写元"的路径树结点,包括字 段名和一个子树,记为WIV^ (field_4,w),w表示一个子树;并将WM(field_4,V4)记录在w子树 中;
[0094]根据"读元"的API路径RM(f ield_5,v5),生成类型为"读元"的路径树结点,包括字 段名、q个字段值和q个子树,记为RM' (f ield_5,{(/ i,V 〇,(/ 2,V 2),? ? ?,(/ P,V P),? ? ?, (v%,t%)}),(/p,1/p)表示第p个字段值和第p个子树1/P,对pG (1,q),若V5 = /p,则将 1^(;1^1(1_5,¥5)记录在第?个子树1:/1)中;
[0095] 根据"路径"的API路径L(r〇ute),生成类型为"路径"的路径树结点,记为1/ (route),并直接将L(route)记录在1/ (route)路径树结点中。
[0096] 举例说明,在图3所示的路径树实施例中,根据图1中的API路径,首先对于R(" smac〃,smaci),对应生成类型为"读取"的路径树结点f (smac, {(smaci,ti)}),若在处理以 后的数据包时遇到字段名相同但字段值不同的API路径以〃观&,,观 &(:2),则只需添加一个 子树的分支,即f (smac,{(smaci,ti),(smac2,t2)});接着对于API路径WM(〃dmac〃,dmaci), 对应生成类型为"写元"的路径树结点WiT (dmac,w),w表示结点唯一的子树;对于G (〃2〃, 10),对应生成类型为"跳转"的路径树结点G' (2,10,t),t表示结点唯一的子树;最后对于RM (〃dmac〃,dmaci),对应生成类型为"读元"的路径树结点丽'(dmac,{(dmaci,1/ 1)})。
[0097] 步骤3.4、转发规则生成模块根据路径树生成转发规则;
[0098] 从根结点开始深度遍历路径树;当遍历到"读取"、"比较"、"读元"类型的路径树结 点,则生成匹配项;当遍历到"写元"、"跳转"、"路径"类型的路径树结点,则生成指令集;直 到所有结点都遍历完成。
[0099] 步骤4、控制器将转发规则分发给n个交换机,用于实现n个交换机之间的数据传 输。
【主权项】
1. 一种基于编程工具的协议无关网络的转发管理方法;所述协议无关网络包含一个控 制器、η个交换机和网络管理中心,并由所述η个交换机组成相应的拓扑结构;其特征是:所 述编程工具包括:协议解析模块、算法执行模块、算法提取模块、转发规则生成模块;所述转 发管理方法是按如下步骤进行: 步骤1、所述网络管理中心根据所述协议解析模块提供的协议报文定义规范,编写所述 协议无关网络的传输协议; 步骤2、所述网络管理中心根据所述算法执行模块提供的调用接口 API,编写所述协议 无关网络的控制算法; 步骤3、所述编程工具根据所述协议无关网络的传输协议和控制算法进行转发处理,得 到转发规则并发送给所述控制器; 步骤3.1、所述协议解析模块对所述传输协议进行协议解析,获得协议接口; 步骤3.2、所述算法执行模块接收任一交换机发送的数据包,并为所述数据包分配一段 缓存,将所述缓存记为元数据; 根据所述控制算法中的调用接口 API利用所述协议接口获取所述数据包中的字段并进 行匹配,从而获得所述数据包的转发路径; 步骤3.3、所述网络算法提取模块根据所述算法执行模块中调用接口API的处理过程生 成相应的API路径;并根据API路径生成路径树; 步骤3.4、所述转发规则生成模块根据所述路径树生成转发规则; 步骤4、所述控制器将所述转发规则分发给η个交换机,用于实现η个交换机之间的数据 传输。2. 根据权利要求1所述的转发管理方法,其特征是:所述步骤1中的传输协议是按如下 过程编写: 步骤1.1、假设所述传输协议中有η层协议,第k层有nk个协议,k e [ 1,η];初始化k = 1; 步骤1.2、定义第k层协议包括:协议的名字、协议中每个字段的字段名和长度; 步骤1.3、初始化 j = I; j e [ I,nk]; 步骤1.4、定义第k+1层协议的第j个协议,包括:协议的名字、协议中每个字段的字段名 和长度;并在第k层协议中设置跳转到第k+Ι层协议中第j个协议的跳转字段值; 步骤1.5、将j+Ι赋值给j;判断j>nk是否成立,若成立,则执行步骤1.6;否则,返回步骤 1.4; 步骤1.6、将k+Ι赋值给k;判断k>n是否成立,若成立,则表示完成编写;否则,返回步骤 1.3〇3. 根据权利要求1所述的转发管理方法,其特征是:所述步骤2中的调用接口 API包括: 数据包操作API、网络拓扑查询API和路径规划API;所述控制算法是按如下步骤进行编写: 步骤2.1、利用所述数据包操作API获取所述数据包的字段值; 步骤2.2、利用所述网络拓扑查询API查询所述字段值在所述协议无关网络中对应的交 换机和主机; 步骤2.3、根据所述数据包的字段值所对应的交换机和主机以及拓扑结构,利用所述路 径规划API生成所述协议无关网络中到达相应交换机和主机的转发路径。4. 根据权利要求1所述的转发管理方法,其特征是:所述协议解析包括:协议分析模块 和数据包解析模块,所述步骤3.1中的协议接口是按如下过程进行协议解析: 步骤3.1.1、所述协议分析模块将所述传输协议翻译成有限状态机; 步骤3.1.2、所述数据包解析模块根据所述有限状态机生成相应的解释器,用于提供给 所述调用接口 API。5. 根据权利要求1所述的转发管理方法,其特征是:所述步骤3.3中所生成的API路径的 类型包括:读取、比较、跳转、写元、读元和路径;并按如下方式生成相应的API路径: 所述调用接口 API中的数据包操作API根据所述传输协议的字段名读取所述数据包相 对应的字段值,所述字段名记为field_l,所述字段值记为^,从而生成一条类型为"读取" 的 API 路径,记为 R(field_l,V1); 所述数据包操作API比较相应数据包字段名对应的字段值与被比较值,得到比较结果; 所述相应数据包字段名记为field_2,所述被比较值记为V2,所述比较结果记为b,从而生成 一条类型为"比较"的API路径,记为T(field_2,v 2,b); 所述数据包操作API从所述数据包的当前层协议进入下一层协议时,读取当前层协议 的字段名、字段值、跳转流表、偏移量四个值,并将所读取的字段名记为field_3,字段值记 为v3、跳转流表记为tid、偏移量记为offset,从而生成一条类型为"读取"的API路径和一条 类型为"跳转"的六?1路径,分别记为1?(;1^1(1_3,¥3)和6(1^(1,(^861:) ; 所述数据包操作API根据所述传输协议的字段名将所述数据包的字段值写入所述元数 据,并将所述传输协议的字段名记为field_4,所述字段值记为V4,从而生成类型为"写元" 的 API 路径,记为 WM(field_4,V4); 所述数据包操作API根据所述传输协议的相关字段名从所述元数据读取相应的字段 值,并将所述相关字段名记为field_5,所述字段值记为^,从而生成类型为"读元"的API路 g3BSRM(field_5,V5); 所述调路径规划API将所生成的数据包的转发路径,记为route,从而生成类型为"路 径"的API路径,记为L(route) 〇6. 根据权利要求5所述的转发管理方法,其特征是:所述步骤3.3中的路径树的结点类 型包括:读取、比较、跳转、写元、读元和路径;并按如下方式生成相应的路径树: 根据所述"读取"的API路径R(f ield_l,V1),生成类型为"读取"的路径树结点,包括字段 名、m个字段值和m个子树,记为f (field_l,{(vi,ti),(V2,t2), · · ·,(vi,ti), · · ·,(Vm,tm)}), <^山)表示第;[个字段值¥1和第;[个子树1^;对;^(1,111),若¥1 = ¥1,则将1?(;1^1(1_1,¥1)记录 第i个子树ti中; 根据所述"比较"的API路径1'(行61(1_2^2,13),生成类型为"比较"的路径树结点,包括字 段名、字段值和两个子树,记为f (f ield_2,V2,t_true,t_false),t_true,t_false分别表 示两个子树,若& = 1:1'116,则将1'(;1^61(1_2,¥2,13)记录在1:_1:1'116子树中,否则将1'(;1^61(1_2,¥2, b)记录在t_false子树中; 根据所述"跳转"的API路径G(tid,〇ffset),生成类型为"跳转"的路径树结点,包括跳 转流表、偏移量和一个子树,记为G' (tid,offset,t),t表示所述一个子树;并将G(tid, offset)记录在t子树中; 根据所述"写元"的API路径WM(field_4,V4),生成类型为"写元"的路径树结点,包括字 段名和一个子树,记为WM7 (field_4,w),w表示所述一个子树;并将WM(field_4,V4)记录在w 子树中; 根据所述"读元"的API路径RM(field_5,v5),生成类型为"读元"的路径树结点,包括字 段名、q个字段值和q个子树,记为Rif (f ield_5,{(/ iV 〇,(/ 2,V 2),· · ·,(/ P,V P),· · ·, (>%,1/(1)}),(>/1),1:/1))表示第口个字段值¥ /1)和第口个子树1:/1),对1)£(1,9),若¥5 = ¥/1),则将 1^(;1^1(1_5,¥5)记录在第?个子树1:/1)中 ; 根据所述"路径"的API路径Uroute),生成类型为"路径"的路径树结点,记为1/ (route),并直接将L(route)记录在I/ (route)路径树结点中。7.根据权利要求6所述的转发管理方法,其特征是:所述步骤3.4中的转发规则包括:匹 配项和指令集;并按如下方式生成: 从根结点开始深度遍历路径树;当遍历到"读取"、"比较"、"读元"类型的路径树结点, 则生成所述匹配项;当遍历到"写元"、"跳转"、"路径"类型的路径树结点,则生成所述指令 集;直到所有结点都遍历完成。
【文档编号】H04L29/06GK105959154SQ201610471597
【公开日】2016年9月21日
【申请日】2016年6月22日
【发明人】田野, 冯新宇, 郭浩然, 何春晖, 常坤
【申请人】中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1