有效
基于SRv6可编程网络的报文传输超时处理方法
原玉磊、赵锋、赵宝康、彭伟、时向泉
中国人民解放军国防科技大学
摘要
本发明公开了一种基于SRv6可编程网络的报文传输超时处理方法,目的是解决IP网络中报文传输超时无法判断和处理的问题。技术方案是先设计报文传输超时处理协议格式,构建由部署有报文构建发送模块的报文发送节点、M个部署有报文超时处理模块的报文转发节点组成的网络报文传输超时处理系统;报文构建发送模块和M个超时处理模块并行配合工作,报文构建发送模块管理网络流传输时效时间并将网络应用传输的网络报文封装为超时控制网络报文;M个超时处理模块并行判断并对网络报文传输超时进行处理,丢弃超时了的报文。本发明能解决现有IP网络中超时无效报文占用网络资源并可能影响网络应用正常运行的问题,使得网络传输中没有超时失效报文。
1.一种基于SRv6可编程网络的报文传输超时处理方法,其特征在于包括以下步骤:第一步,设计报文传输超时处理协议格式,方法是:在SRH中用TTP TLV代替Optional TLV字段,TTP TLV包含4个字段,4个字段的长度及含义分别是:Type:表示TTPTLV的类型,Type值=type_value,type_value为0~255范围内除4和5以外的任意不会引起歧义的值;Length:取值为b,b为0~255中任意值,表示TTP TLV从Type字段开始到StartTime字段结束的总长度,长度以字节为单位;Timeout:取值为0~65535中任意值,表示报文传输的时效时间,即当报文在网络中传输时间大于该字段值时,该报文无效,单位为毫秒;StartTime:取值为0~4294967296中任意值,报文从源节点发出的时间,单位为秒;第二步,构建网络报文传输超时处理系统,方法是:网络报文传输超时处理系统由一个报文发送节点、M个报文转发节点组成;报文发送节点是网络中网络应用的客户端或服务端,其上部署有报文构建发送模块;报文转发节点是网络中实施报文转发功能的专用设备或通用服务器,其上部署有报文超时处理模块;报文构建发送模块位于报文发送节点的网络应用和外部网络之间,从网络应用接收网络报文,处理后发送至外部网络;网络应用是指利用网络传输数据的应用程序;报文构建发送模块监听网络应用,从网络应用接收网络流传输时效时间数据和要传输的网络报文;报文构建发送模块将网络流传输时效时间数据存储于网络流传输时效时间链表flow_time_list;flow_time_list中每个元素存储一个网络流的报文传输时效时间数据flow_time,flow_time包含7个域:网络流的源IP即flow_sip、网络流的目的IP即flow_dip、网络流的源端口即flow_sport、网络流的目的端口即flow_dport、网络流协议号即flow_proto、网络流最近传输报文的时间即flow_dtime、网络流传输时效时间即flow_etime;报文构建发送模块从网络应用接收要传输的网络报文,根据网络报文的源IP、目的IP、源端口、目的端口以及网络协议号数据从flow_time_list中查找对应网络流传输时效时间数据,更新网络流传输时效时间数据中的网络流最近传输报文时间flow_dtime,获取系统当前时间,并根据系统当前时间和网络流传输时效时间数据中的flow_etime字段值构建TTP TLV,并更新网络报文的SRH,将更新后的网络报文发送至外部网络;报文构建发送模块如果没有从flow_time_list中查找到对应网络流传输时效时间数据,则将报文直接发送至外部网络;报文超时处理模块位于部署于同一转发节点的转发处理部分与外部网络之间;报文超时处理模块从外部网络接收报文,完成报文传输超时处理后,发送给所在节点上的转发处理部分;报文超时处理模块获取系统当前时间,根据报文中TTP TLV中Timeout字段和StartTime字段的值,判断报文当前传输是否超时,如果超时则丢弃报文,如果没有超时,则将报文发送至转发处理部分;第三步,报文传输超时处理系统的报文构建发送模块和M个超时处理模块并行配合工作,对网络报文传输超时进行处理,方法是:报文构建发送模块管理网络流传输时效时间并将网络应用传输的网络报文封装为超时控制网络报文,方法是:监听所属报文发送节点上的网络应用,从网络应用接收网络流传输时效时间数据flow_time,将flow_time存入网络流传输时效时间链表flow_time_list,从网络应用接收要传输的网络报文pkt,根据pkt的源IP、目的IP、源端口、目的端口和协议号从flow_time_list中找出对应的flow_time_pkt,根据flow_time_pkt和第一步设计的报文传输超时处理协议格式构建TTP TLV,将TTP TLV插入pkt中,构建超时控制网络报文pkt_new,将pkt_new发送至外部网络;同时第1个报文转发节点1,…,第m个报文转发节点,…,第M个报文转发节点上的报文超时处理模块并行从外部网络接收超时控制网络报文pkt_new,从pkt_new中获取TTP TLV,根据第一步设计的报文传输超时处理协议格式从TTP TLV中获取报文传输时效时间Timeout和报文从源节点发出的时间StartTime,并获取当前系统时间CurrentTime,根据Timeout、StartTime和CurrentTime判断pkt_new传输是否超时,如果超时则丢弃pkt_new,否则将pkt_new发送给报文超时处理模块所属报文转发节点上的转发处理部分;第1个报文转发节点1,…,第m个报文转发节点,…,第M个报文转发节点上的报文超时处理模块的处理方法相同。
2.如权利要求1所述的一种基于SRv6可编程网络的报文传输超时处理方法,其特征在于所述TTP TLV中的Type字段长度为8bit,type_value选为101;Length字段长度为8bit,b=8;Timeout字段长度为16bit,Timeout设置为0~65.5秒;StartTime字段长度为32bit,StartTime采用Unix时间,即从1970年1月1日0时0分0秒开始的秒数,报文发送时间最多表示136年。
3.如权利要求1所述的一种基于SRv6可编程网络的报文传输超时处理方法,其特征在于第三步所述报文构建发送模块管理网络流传输时效时间并将网络应用传输的网络报文封装为超时控制网络报文的具体方法是:3.1.1初始化网络流传输时效时间链表flow_time_list为空;3.1.2监听报文构建发送模块所属报文发送节点上的网络应用,如果有网络流传输时效时间数据到达,转步骤3.1.3,如果有网络报文到达,转步骤3.1.4,否则转3.1.2继续监听;3.1.3初始化flow_time为0,从网络应用接收网络流传输时效时间数据并存入flow_time,将flow_time插入链表flow_time_list,转步骤3.1.2;3.1.4从网络应用接收网络报文pkt,从pkt中获取源IP字段值pkt_sip、目的IP字段值pkt_dip、源端口字段值pkt_sport、目的端口字段值pkt_dport、协议号pkt_proto;3.1.5获取链表flow_time_list中元素个数FLOWN,获取系统当前时间CT;3.1.6定义循环变量i,令i=1;3.1.7获取链表flow_time_list的第i个元素i_flow_time;3.1.8判断以下公式是否同时成立:i_flow_time.flow_sip=pkt_sip;i_flow_time.flow_dip=pkt_dip;i_flow_time.flow_sport=pkt_sport;i_flow_time.flow_dport=pkt_dport;i_flow_time.flow_proto=pkt_proto;如果同时成立,说明报文pkt属于网络流传输时效时间数据i_flow_time对应的网络流,需要对pkt做超时控制网络报文的封装,转步骤3.1.10;只要有一个公式不成立,转步骤3.1.9;3.1.9令i=i+1,如果i≤FLOWN,转步骤3.1.7,否则转步骤3.1.12;3.1.10构建TTP TLV,令:TTP TLV字段Type=type_value;TTP TLV字段Length=b;TTP TLV字段Timeout=i_flow_time.flow_etime;TTP TLV字段StartTime=CT;3.1.11将TTP TLV插入到网络报文pkt的SRH的后面,令报文pkt的SRH的Hdr Ext Len=Hdr Ext Len+1,构建超时控制网络报文pkt_new,将pkt_new发送至外部网络;转步骤3.1.2;3.1.12将报文pkt发送至外部网络,转步骤3.1.2。
4.如权利要求1所述的一种基于SRv6可编程网络的报文传输超时处理方法,其特征在于第三步所述第1个报文转发节点1,…,第m个报文转发节点,…,第M个报文转发节点上的报文超时处理模块并行从外部网络接收超时控制网络报文pkt_new,从pkt_new中获取TTPTLV,从TTP TLV中获取报文传输时效时间Timeout和报文从源节点发出的时间StartTime,并获取当前系统时间CurrentTime,根据Timeout、StartTime和CurrentTime判断pkt_new传输是否超时,如果超时则丢弃pkt_new,否则将pkt_new发送给报文超时处理模块所属报文转发节点上的转发处理部分的具体方法是:令第m个报文转发节点上的报文超时处理模块为第m个报文超时处理模块,第m个报文超时处理模块的处理方法是:3.2.1第m个报文超时处理模块监听外部网络,如果有网络报文到达,转步骤3.2.2,否则转3.2.1继续监听;3.2.2第m个报文超时处理模块从外部网络接收报文pkt_r,获取pkt_r的Next Header字段,判断Next Header是否等于43,如果是,说明pkt_r属于SRv6报文,转步骤3.2.3继续判断,否则转步骤3.2.9;3.2.3第m个报文超时处理模块获取pkt_r的Hdr Ext Len字段和Last Entry字段,判断Hdr Ext Len是否等于Last Entry+1,如果是,说明pkt_r的SRv6报文头中包含TTP TLV,转步骤3.2.4继续判断,否则转步骤3.2.9;3.2.4第m个报文超时处理模块获取pkt_r的TTP TLV;3.2.5第m个报文超时处理模块获取TTP TLV的Type、Length、Timeout字段和StartTime字段,判断Type=type_value并且Length=b是否同时成立,如果是,说明pkt_r是超时控制网络报文,转步骤3.2.6处理;如果Type=type_value和Length=b不同时成立,转步骤3.2.9;3.2.6第m个报文超时处理模块获取系统当前时间CT1;3.2.7第m个报文超时处理模块判断CT1-StartTime<Timeout是否成立,如果是,说明pkt_r传输没有超时,转步骤3.2.9,否则说明pkt_r传输超时,转步骤3.2.8;3.2.8第m个报文超时处理模块丢弃pkt_r,转步骤3.2.1;3.2.9第m个报文超时处理模块将pkt_r发送至第m个报文转发节点上的转发处理部分,转步骤3.2.1。



