有效
基于SRv6和网络测量的网络报文时延确定性传输方法
原玉磊、赵宝康、赵锋、陶静、时向泉、虞万荣、韩彪、魏子令
中国人民解放军国防科技大学
摘要
本发明公开了一种基于SRv6和网络测量的网络报文时延确定性传输方法,目的是解决网络报文传输时延确定性问题。技术方案是构建网络报文时延确定性传输控制系统,网络控制节点上安装配置文件、初始化模块、路径计算模块、路径选择模块、测量数据接收模块,网络应用节点上安装传输代理模块。测量数据接收模块、路径计算模块、路径选择模块和传输代理模块并行工作,利用网络测量获得的网络拓扑数据以及转发节点的转发时延数据,根据网络流的传输时延要求计算出传输时延确定且传输时延满足网络流需求的传输路径,利用SRv6路由转发机制控制报文按照计算出的路径传输,实现网络流中每个报文传输时延确定且满足要求。
1.一种基于SRv6和网络测量的网络报文时延确定性传输方法,其特征在于包括以下步骤:第一步,构建网络报文时延确定性传输控制系统,方法是:网络报文时延确定性传输控制系统由一个网络控制节点、M个网络应用节点组成;网络控制节点是服务器,其上安装有配置文件、初始化模块、路径计算模块、路径选择模块、测量数据接收模块;网络应用节点是服务器或者终端,其上安装有传输代理模块;配置文件存储网络报文时延确定性传输控制系统运行所需的参数,包括网络中转发节点数量N,N为正整数,且N≥3,网络流传输失效时间T,报文传输路径中最大转发节点数量PN,PN为正整数且PN≤N,N个转发节点的编号及IP地址;初始化模块与配置文件、路径计算模块、路径选择模块、传输代理模块相连;初始化模块从配置文件读取网络中转发节点数量N、网络流传输失效时间T、报文传输路径中最大节点数量PN,按照顺序分别从配置文件中读取N个转发节点的编号及IP地址,将转发节点IP地址存入IP地址数组ip_array;初始化模块将N发送给路径计算模块,将PN和ip_array发送给路径选择模块,将T发送给传输代理模块;测量数据接收模块与路径计算模块、路径选择模块和外部网络测量系统相连;测量数据接收模块监听外部网络测量系统,从外部网络测量系统接收网络拓扑数据和转发节点转发时延数据;网络拓扑数据由N个邻接表数据组成;测量数据接收模块将网络拓扑数据存入邻接表数组topo_array;测量数据接收模块将topo_array发送给路径计算模块;转发节点转发时延数据由N个时延数据组成;测量数据接收模块将转发节点时延数据存入转发时延数组delay_array;测量数据接收模块将delay_array发送给路径选择模块;路径计算模块与初始化模块、测量数据接收模块和路径选择模块相连;路径计算模块从初始化模块接收网络中转发节点数量N和路径中最大转发节点数量PN,从测量数据接收模块接收邻接表数组topo_array;路径计算模块根据N、PN和topo_array计算网络中任意两个转发节点之间的所有传输路径,并存储于传输路径数组path_array中,路径计算模块将计算出的传输路径数组path_array发送给路径选择模块;传输代理模块与初始化模块、路径选择模块和外部网络应用相连;传输代理模块维护一个传输路径信息链表flow_path_list,链表中每个元素为网络流传输路径数据结构flow_path_str,存储一个正在传输的网络流的路径信息,flow_path_str包含7个域:网络流最近传输报文的时间flow_t、网络流的源IP即flow_sip、网络流的目的IP即flow_dip、网络流的源端口即flow_sport、网络流的目的端口即flow_dport、网络流传输路径中节点数量即flow_nn、网络流传输路径节点IP数组即flow_ip_array;传输代理模块从初始化模块接收网络流传输时效时间T,从外部网络应用接收网络应用对报文传输时延确定性的需求,并将网络应用对报文传输时延确定性的需求存储于传输时延需求数据结构req_str,req_str包含6个域:网络流源节点IP地址即req_sip,网络流目的节点IP地址即req_dip,网络应用的网络流源端口,网络应用的网络流目的端口,网络传输最大时延即maxT,网络传输最小时延即minT;传输代理模块将req_str发送给路径选择模块,然后从路径选择模块接收路径信息,根据路径信息构建flow_path_str,并将flow_path_str加入flow_path_list;同时,传输代理模块从外部网络应用接收要传输的网络报文,根据网络报文的源IP、目的IP、源端口、目的端口信息从flow_path_list中查找对应网络流传输路径数据,并根据网络流传输路径数据中的传输节点IP数组为网络报文封装SRv6报文头,将封装了SRv6报文头的网络报文发送至网络中;路径选择模块与初始化模块、测量数据接收模块、路径计算模块和传输代理模块相连;从初始化模块接收网络中转发节点数量N和路径中最大转发节点数量PN,从测量数据接收模块接收转发时延数组delay_array,从路径计算模块接收传输路径数组path_array,从传输代理模块接收传输时延需求req_str;路径选择模块根据N,PN,delay_array,path_array计算满足req_str需求的传输路径信息,并将计算结果存入路径信息数据pathinfo,pathinfo包含2个域:传输路径上所有转发节点的数量即pin,传输路径上顺序经历的转发节点的IP地址数组pinIP_array,pinIP_array中每个元素存储一个转发节点的IP地址,共有pin个元素;路径选择模块将pathinfo发送给传输代理模块;第二步,初始化配置文件,即根据应用网络的网络拓扑确定N、T、PN、每个转发节点的编号和IP地址;第三步,初始化模块对网络报文时延确定性传输控制系统进行初始化,方法是:3.1从配置文件读取N,T,PN,按照顺序读取N个转发节点的编号和IP地址;3.2初始化ip_array,即将N个转发节点的编号和IP地址分别存入ip_array的N个元素中,ip_array共有N个元素,每个元素有两个域,一个域为序号,存储一个转发节点的编号,另一个域为值,存储相应编号转发节点的IP地址;3.3将N发送给测量数据接收模块;3.4将N发送给路径计算模块;3.5将T发送给传输代理模块;3.6将N、PN和ip_array发送给路径选择模块;第四步,网络报文时延确定性传输控制系统的测量数据接收模块、路径计算模块、路径选择模块和M个网络应用节点上的传输代理模块并行配合工作,对网络报文传输进行时延确定性传输控制,方法是:测量数据接收模块按照4.1所述流程从初始化模块接收网络中转发节点数量N,同时监听外部网络测量系统,从外部网络测量系统接收网络拓扑数据和转发节点转发时延数据,将接收的网络拓扑数据存入邻接表数组topo_array并将topo_array发送给路径计算模块,将接收的转发节点转发时延数据存入转发节点转发时延数组delay_array并将delay_array发送给路径选择模块;同时,路径计算模块按照4.2所述流程从测量数据接收模块接收topo_array,根据topo_array计算网络中任意两个转发节点间的所有路径,将任意两个转发节点间的所有路径存入传输路径数组path_array并将path_array发送给路径选择模块;同时,路径选择模块按照4.3所述流程从测量数据接收模块接收转发时延数组delay_array,从传输代理模块接收传输时延需求数据req_str,根据delay_array和req_str计算出满足传输时延要求的路径,构建传输路径信息数据pathinfo,将计算出的路径存入pathinfo,并将pathinfo发送给传输代理模块;同时,M个网络应用节点上的传输代理模块按照4.4所述流程从外部网络应用接收需要时延确定性传输控制的网络流的源IP地址和目的IP地址,以及时延的最大值maxT和最小值minT,将接收数据存入传输时延需求数据结构req_str并将req_str发送给路径选择模块,从路径选择模块接收传输路径信息pathinfo,并利用pathinfo为网络流中的每个报文封装SRv6报文头,实现对网络报文的时延确定性传输;4.1测量数据接收模块按4.1.1-4.1.4所述方法接收数据并进行转发:4.1.1测量数据接收模块从初始化模块接收转发节点数量N;4.1.2测量数据接收模块监听外部网络测量系统,如果有网络拓扑数据到达,转步骤4.1.3,如果有转发节点转发时延数据到达,转步骤4.1.4,否则转4.1.2继续监听;4.1.3测量数据接收模块从外部网络测量系统接收网络拓扑数据,并发送给路径计算模块;方法是:4.1.3.1初始化邻接表数组topo_array为空;topo_array中共有N个元素,每个元素存储一个邻接表数据;邻接表数据包括3个域:该邻接表代表的转发节点编号nid,与编号为nid的转发节点直接相连的转发节点个数an,与编号为nid的转发节点直接相连的转发节点编号数组id_array,id_arrray中每个元素存储与编号为nid的转发节点直接相连的一个转发节点的编号,共有an个元素;4.1.3.2依序接收N个邻接表数据,将这N个邻接表数据存入topo_array;4.1.3.3将topo_array发送给路径计算模块;4.1.3.4转步骤4.1.2;4.1.4测量数据接收模块从外部网络测量系统接收转发节点时延数据,并发送给路径选择模块;方法是:4.1.4.1初始化转发时延数据数组delay_array为空;delay_array中共有N个元素,每个元素存储一个转发节点的转发时延,包括2个域:转发节点编号nid,转发节点的转发时延delay;4.1.4.2依序接收N个转发时延数据,并将这N个转发时延数据存入delay_array;4.1.4.3将delay_array发送给路径选择模块;4.1.4.4转步骤4.1.2;4.2路径计算模块按照4.2.1-4.2.9所述方法计算网络中任意两个转发节点间的所有路径:4.2.1从初始化模块接收转发节点数量N;4.2.2监听测量数据接收模块,如果有topo_array到达,转步骤4.2.3,否则转4.2.2继续监听;4.2.3接收网络拓扑数据topo_array,构建含有(N-1)×N/2个元素的传输路径数组path_array,将path_array中所有元素的每一个域的值初始化为0;path_array中共有N×(N-1)/2个元素,每个元素为path_str数据结构,每个path_str数据存储多条路径,path_str数据结构包含4个域:路径起始节点编号sid,路径终止节点编号did,从路径起始节点到路径终止节点的所有路径数量pn,每个路径中转发节点数量数组nn,nn中共有pn个元素,第i_nn个元素存储第i_nn个路径中转发节点数量,i_nn=1,2,…,pn,每个路径顺序经过的转发节点编号数组node_array,node_array为二维数组,node_array中共有pn个元素,每个元素为一个数组;node_array中第i_node_array个元素是存储第i_node_array个路径中转发节点编号的数组,该数组顺序存储第i_node_array个路径中转发节点编号,每个元素存储一个转发节点编号,共有nn[i_node_array]个元素,nn[i_node_array]表示第i_node_array个路径中转发节点数量;4.2.4.定义循环变量i、j、k,令i=0,k=0;4.2.5令j=i+1,如果j≤N,转步骤4.2.6,否则转步骤4.2.8;4.2.6计算编号为i的转发节点和编号为j的转发节点之间的所有路径,得到路径path_str_i_j,path_str_i_j的数据结构与第一步所述path_str相同;4.2.7将计算出的路径path_str_i_j添加到传输路径数组中;方法是:将path_str_i_j复制到path_array[k]中,path_array[k]表示path_array的第k个元素;4.2.8令i=i+1,如果i≤N,转步骤4.2.5,否则转步骤4.2.9;4.2.9将传输路径数组path_array发送给路径选择模块;4.3路径选择模块按照4.3.1-4.3.6所述方法计算出满足传输时延要求的路径:4.3.1从初始化模块接收转发节点数量N、每个路径最大转发节点数量PN、转发节点IP地址数组ip_array;4.3.2路径选择模块监听测量数据接收模块、路径计算模块和传输代理模块,当有delay_array到达时转步骤4.3.3,当有path_array到达时转步骤4.3.4,当有传输时延需求数据req_str到达时转步骤4.3.5,否则转4.3.2继续监听;4.3.3从测量数据接收模块接收转发时延数据数组delay_array,转步骤4.3.2;4.3.4从路径计算模块接收传输路径数据数组path_array,转步骤4.3.2;4.3.5从传输代理模块接收传输时延需求数据req_str;4.3.6路径选择模块根据delay_array和req_str从path_array中计算出满足传输时延需求的路径,满足传输时延需求的路径存入传输路径信息pathinfo,将pathinfo发送给传输代理模块,转步骤4.3.2;4.4网络应用节点1,…,网络应用节点m,…,网络应用节点M上的传输代理模块并行按照4.4.1-4.4.14所述方法利用pathinfo为网络流中的每个报文封装SRv6报文头,实现对网络报文的时延确定性传输,1≤m≤M,方法是:4.4.1传输代理模块从初始化模块接收网络流传输失效时间T;4.4.2构建传输路径信息链表flow_path_list并初始化为空;4.4.3监听外部网络应用;如果有传输时延确定性需求到达,转步骤4.4.4;如果有网络报文到达,转步骤4.4.10;否则转4.4.3继续监听;4.4.4从外部网络应用接收传输时延确定性需求;4.4.5构建传输时延需求数据结构req_str,将传输时延确定性需求存入req_str,并将req_str发送给路径选择模块;4.4.6从路径选择模块接收路径信息pathinfo;4.4.7构建网络流传输路径数据结构flow_path_str,获取系统当前时间t_current;4.4.8利用传输时延需求和路径信息为网络流传输路径数据结构flow_path_str赋值;4.4.9将网络流传输路径数据flow_path_str加入到传输路径信息链表flow_path_list中;转步骤4.4.3;4.4.10从外部网络应用接收要传输的网络报文pkt;4.4.11提取网络报文pkt的源IP地址pkt_sip、目的IP地址pkt_dip、源端口pkt_sport、目的端口pkt_dport,获取系统当前时间t_current;4.4.12遍历传输路径信息链表flow_path_list,从中找出满足如下条件的元素flow_path_pkt:域网络流的源IP值与pkt_sip相等,并且域网络流的目的IP值与pkt_dip相等,并且域网络流源端口值与pkt_sport相等,并且域网络流目的端口值与pkt_dport相等,并且域网络流最近传输报文的时间相距当前时间小于T即t_current-flow_path_pkt.flow_t<T;如果找到,转步骤4.4.13,如果没有找到转步骤4.4.15;4.4.13更新传输路径数据中的域网络流最近传输报文的时间,即令flow_path_pkt.flow_t=t_current;4.4.14顺序利用数组flow_path_pkt.flow_ip_array中的IP地址,根据SRH规范为网络报文封装SRv6报文头,并将封装后的报文发送至网络;转步骤4.4.3;4.4.15将网络报文pkt发送至网络;转步骤4.4.3。
2.如权利要求1所述的基于SRv6和网络测量的网络报文时延确定性传输方法,其特征在于所述配置文件中的转发节点指网络中转发报文的节点,上面不运行传输控制系统的模块;配置文件中的网络流传输失效时间T为正整数,单位为秒。
3.如权利要求1所述的基于SRv6和网络测量的网络报文时延确定性传输方法,其特征在于所述转发节点的转发时延delay为正整数,以微秒为单位。
4.如权利要求1所述的基于SRv6和网络测量的网络报文时延确定性传输方法,其特征在于第二步所述初始化配置文件的方法是:根据应用网络的网络拓扑,统计网络中转发节点的数量N,并将其写入配置文件;确定网络流传输失效时间T为60,并将其写入配置文件;根据应用网络的网络协议确定路径中最大转发节点数量PN,当N<32时,PN=N;当N≥32时,PN为32,并将其写入配置文件;根据应用网络中每个转发节点的IP地址以及对应每个转发节点对应网络拓扑中的编号,分别将每个转发节点的编号和IP地址写入配置文件。
5.如权利要求1所述的基于SRv6和网络测量的网络报文时延确定性传输方法,其特征在于4.2.6步所述计算编号为i的转发节点和编号为j的转发节点之间的所有路径的方法是:使用深度优先遍历算法计算编号为i和编号为j的转发节点之间所有路径,算法输入为i、j和topo_array,算法输出为路径path_str_i_j,path_str_i_j的数据结构与path_str相同。
6.如权利要求1所述的基于SRv6和网络测量的网络报文时延确定性传输方法,其特征在于4.3.6步所述路径选择模块根据delay_array和req_str从path_array中计算出满足传输时延需求的路径,并发送给传输代理模块的方法是:4.3.6.1计算req_str中传输控制起始节点的编号req_sid,方法是:在数组ip_array中找出与req_str.sip相等的元素,该元素编号即为传输控制起始节点的编号;4.3.6.2计算req_str中传输控制终止节点的编号req_did,方法是:在数组ip_array中找出与req_str.dip相等的元素,该元素编号即为传输控制终止节点的编号;4.3.6.3遍历path_array,找出path_array中域sid等于req_sid并且域did等于req_did的元素,令其编号为path_id_req;4.3.6.4遍历节点req_sid和节点req_did之间的所有路径,定义循环变量i2,j2,令i2=0;4.3.6.5保证路径中转发节点数量不大于PN;方法是:如果path_array[path_id_req].nn[i2]>PN,转步骤4.3.6.10,否则转步骤4.3.6.6;4.3.6.6计算第i2个路径的转发时延;定义转发时延变量delay_time=0,令j2=0;4.3.6.7令delay_time=delay_time+delay_array[path_array[path_id_req].node_array[i2][j2]];4.3.6.8令j2=j2+1,如果j2≤path_array[path_id_req].nn[i2],转步骤4.3.6.7,否则转步骤4.3.6.9;4.3.6.9判断delay_time是否≥req_str.minT并且<=req_str.maxT,如果是,转步骤4.3.6.11,否则转步骤4.3.6.10;4.3.6.10令i2=i2+1,如果i2≤path_array[path_id_req].pn,转步骤4.3.6.5,否则转步骤4.3.6.11;4.3.6.11构建传输路径信息pathinfo,令pathinfo.pin=path_array[path_id_req].nn[i2];4.3.6.12令j2=0;4.3.6.13为pathinfo的第i2个节点的IP地址赋值,令pathinfo.pinIP_array[j2]=ip_array[path_array[path_id_req].node_array[i2][j2]];4.3.6.14令j2=j2+1,如果j2≤path_array[path_id_req].nn[i2],转步骤4.3.6.13,否则转步骤4.3.6.15;4.3.6.15将pathinfo发送给传输代理模块,转步骤4.3.2。
7.如权利要求1所述的基于SRv6和网络测量的网络报文时延确定性传输方法,其特征在于4.4.8步所述利用传输时延需求和路径信息为网络流传输路径数据赋值的方法是,令:flow_path_str.flow_t=t_current;flow_path_str.flow_sip=req_str.sip;flow_path_str.flow_dip=req_str.dip;flow_path_str.flow_sport=req_str.sport;flow_path_str.flow_dport=req_str.dport;flow_path_str.flow_nn=pathinfo.pin;将数组pathinfo.pinIP_array中的pathinfo.pin个元素按顺序复制到flow_path_str.flow_ip_array中。



