一种段路由扩展报文转发方法技术

技术编号:32341725 阅读:14 留言:0更新日期:2022-02-16 18:52
本发明专利技术公开了一种段路由扩展报文转发方法,目的是解决现有IPv4网络由于无法实现网络报文的段路由转发而无法灵活配置网络流传输路径的问题。技术方案是:设计面向IPv4的段路由扩展报文头SRHv4,在SRHv4中记录IPv4网络段路由信息,构建由一个网关节点、N个报文转发节点组成的IPv4段路由转发系统,在网关节点构建SRHv4并封装网络报文,在转发节点解析网络报文的SRHv4并根据SRHv4中的段路由SID完成IPv4段路由扩展报文的转发。采用本发明专利技术可以实现对IPv4报文按照配置的路径进行转发,用户可以根据需求灵活配置网络流的传输路径,进而降低网络运维的难度和并使得很多网络功能能够实现。络运维的难度和并使得很多网络功能能够实现。络运维的难度和并使得很多网络功能能够实现。

【技术实现步骤摘要】
一种段路由扩展报文转发方法


[0001]本专利技术属于计算机网络
,尤其涉及面向IPv4的段路由转发方法。

技术介绍

[0002]随着云计算、物联网等技术的发展和应用推广,超大带宽需求、大规模设备连接等给传统IP网络运营带来了巨大挑战。基于IPv6的段路由技术(SRv6,Segment Routing for IPv6)支持灵活计算和实施路径,同时极大简化网络配置,可以让用户轻松的控制网络流的传输路径,在软件定义网络、流量工程、网络服务链等
有广泛应用前景。
[0003]但是SRv6技术与IPv4协议并不兼容,只能应用于IPv6网络,无法应用于IPv4网络。虽然当前大部分网络都支持IPv6,但是在实际运行网络中特别是数据中心网络中仍然存在不支持SRv6的IPv4网络。
[0004]目前关于SRv6技术的研究主要有:IETF(Internet Engineering Task Force)RFC8402基于IPv6协议定义了段路由的技术架构;IETF RFC8754基于IPv6协议定义了段路由报文头SRH(Segment Routing Header);IETF RFC8986基于RFC8754的SRH定义了19种段路由的SID(Segment ID)指令;IETF RFC8354以及Kushwaha A等人(参见Kushwaha A,Sharma S,Gumaste A.A Survey on Segment Routing with Emphasis on Use Cases in Large Provider Networks[J].2020.)等对段路由技术的应用场景进行了研究;中国移动、华为公司(参见程伟强,刘毅松,姜文颖,张庚.G

SRv6头压缩优化技术研究与应用[J].电信科学,2020,36(08):22

27.)和思科公司(参见苏远超.uSID:SRv6新范式.[Online].Available:https://www.sdnlab.com/23390.html)等对SRv6报文头中SID压缩技术进行了研究。
[0005]这些研究都是面向IPv6网络,尚无专门关于IPv4网络段路由技术研究的文献。IPv4网络中无法部署应用段路由技术,将使得IPv4网络中用户无法灵活的配置网络流的传输路径,进而增大网络运维的难度和很多网络功能(如服务功能链、流量工程等)无法实现。
[0006]如何在IPv4网络中实现网络报文的段路由转发,进而解决IPv4网络运营中的问题是本领域技术人员极为关注的技术问题。

技术实现思路

[0007]本专利技术要解决的技术问题是基于网络报文段路由转发思想,设计面向IPv4的段路由扩展报文转发方法,解决现有IPv4网络中由于无法实现网络报文的段路由转发而无法灵活配置网络流传输路径的问题。
[0008]技术方案是:设计面向IPv4的段路由扩展报文头SRHv4,在SRHv4中记录IPv4网络段路由信息,构建IPv4段路由转发系统,在网关节点构建SRHv4并封装网络报文,在转发节点解析网络报文的SRHv4并根据SRHv4中的段路由SID(Segment ID)完成IPv4段路由扩展报文的转发。
[0009]第一步,设计面向IPv4的段路由扩展报文头,方法是:
[0010]1.1设计IPv4段路由扩展报文头格式:
[0011]为实现IPv4报文的段路由转发控制,设计面向IPv4的段路由扩展报文头SRHv4(Segment Routing Header for IPv4),如下表所示。SRHv4由Next Header、Hdr Ext Len、Routing Type、Seg Left、Last Entry、Flags、Tag、Segment List[n]、Optional TLV共9个字段组成;
[0012]表1 SRHv4格式
[0013][0014]表中各个字段的长度及含义如下:
[0015]Next Header:字段长度8bit,指示SRHv4报文头封装的内层报文的类型。若Next Header为4,表示内层报文类型为IPv4;若Next Header为41,表示内层报文类型为IPv6。
[0016]Segment List[m]:字段长度32bit,标识段路由中一个段的Segment ID,形式为IPv4地址。0≤m≤M,且M、m为正整数;
[0017]Hdr Ext Len:字段长度为8bit,指示SRHv4报文头不包括前64bit的长度,即指M+1个Segment List元素和Optional TLV的总长度,单位为4字节。
[0018]Routing Type:字段长度为8bit,指示当前报文的路由类型,取值固定为4。
[0019]Seg Left:字段长度为8bit,值等于m,指示当前要使用的Segment List元素是为Segment List[m]。
[0020]Last Entry:字段长度为8bit,指示Segment List中最后一个元素的索引,即M。
[0021]Flags:字节长度为8bit,预留标志位。
[0022]Tag:字段长度为16bit,指示报文所属报文组的组号。
[0023]Optional TLV:为预留字段,字段长度可变。
[0024]1.2定义IPv4报文头中与SRHv4相关的字段:
[0025]RFC791中定义了IPv4报文头格式,如下表所示,
[0026]表2 IPv4报文头格式
[0027][0028]在表2中,对与本专利技术SRHv4相关的字段进行重定义,包括:
[0029]Total Length:字段长度16bit,表示从IPv4 Header头开始直到Payload(Payload为封装的原始报文,见表3)结束的报文总长度,单位为字节。
[0030]Protocol:字段长度8bit,指示IPv4 Header后的报文类型,本专利技术中固定取当前协议标准未使用的任意值(优选取值201),表示报文类型为SRHv4。
[0031]Destination Address:字段长度32bit,指示报文的目的地址。在对封装后的段路由扩展报文进行转发的过程中将修改该字段值。
[0032]1.3设计IPv4段路由封装报文格式
[0033]使用SRHv4报文头和IPv4报文头对原始报文进行封装,即在原始报文Payload的外面包SRHv4报文头,再在SRHv4报文头外面包IPv4报文头。封装后的报文为IPv4段路由扩展报文。IPv4段路由扩展报文的格式如下表所示。
[0034]表3封装SRHv4报文头后的IPv4段路由扩展报文格式
[0035][0036]1.4设计IPv4段路由SID
[0037]SID(Segment ID),即Segment List中的元素,用于指示转本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种段路由扩展报文转发方法,其特征在于包括以下步骤:第一步,设计面向IPv4的段路由扩展报文头,方法是:1.1设计面向IPv4的段路由扩展报文头SRHv4,SRHv4由Next Header、Hdr Ext Len、Routing Type、Seg Left、Last Entry、Flags、Tag、Segment List[m]、Optional TLV共9个字段组成;Next Header指示SRHv4报文头封装的内层报文的类型;Segment List[m]标识段路由中一个段的Segment ID,0≤m≤M,且M、m为正整数;Hdr Ext Len指示SRHv4报文头不包括前64bit的长度;Routing Type指示当前报文的路由类型;Seg Left指示当前要使用的Segment List元素是Segment List[m];Last Entry指示Segment List中最后一个元素的索引;Flags是预留标志位;Tag指示报文所属报文组的组号;Optional TLV为预留字段;1.2对IPv4报文头格式中与SRHv4相关的字段进行重定义,包括:Total Length表示从IPv4 Header头开始直到原始报文Payload结束的报文总长度;Protocol指示IPv4 Header后的报文类型;Destination Address指示报文的目的地址;1.3设计IPv4段路由封装报文格式,方法是:使用SRHv4报文头和IPv4报文头对原始报文Payload进行封装,即在原始报文Payload的外面包SRHv4报文头,再在SRHv4报文头外面包IPv4报文头;封装后的报文为IPv4段路由扩展报文;1.4设计IPv4段路由SID,即Segment List中的元素,用于指示转发设备对当前报文的转发方式;定义2种SID:End:指示将SRHv4中Seg Left字段指示的Segment List元素值拷贝到Destination Address字段中,将Seg Left字段值减1;End.D:指示对IPv4段路由扩展报文中的SRHv4封装报文进行解封装,剥离IPv4报文头和SRHv4,恢复出原始报文Payload;第二步,构建IPv4段路由转发系统,方法是:IPv4段路由转发系统由一个网关节点、N个报文转发节点组成;网关节点位于外部网络和IPv4段路由网络之间,是外部网络报文进入IPv4段路由网络的入口节点,其上部署有配置文件、初始化模块、报文构建发送模块;报文转发节点是IPv4段路由网络中具备IPv4段路由功能的实施报文转发功能的专用设备或通用服务器,其上部署有报文转发处理模块;配置文件存储IPv4段路由转发系统运行所需的参数,包括:网络流分段传输数据个数NF;NF个网络流分段传输数据;段路由网络中报文转发节点个数N;N个报文转发节点的SID配置数据;NF和N均为正整数;网络流分段传输数据格式为flow_sid_str,flow_sid_str包含7个域:网络流的源IP地址sip,网络流的目的IP地址dip,网络流的源端口sport,网络流的目的端口dport,网络流的协议号proto,网络流分段传输的段的个数sn,网络流分段传输的段列表sid_list,sid_list为段SID的数组,共有sn个元素,每个元素存储一个SID;报文转发节点的SID配置数据格式为sid_config_str,sid_config_str包含2个域:以IPv4地址形式表示的End对应的SID值即End_sid,以IPv4地址形式表示的End.D对应的SID值即End.D_sid;初始化模块与配置文件、报文构建发送模块以及N个报文转发节点上的报文转发处理模块相连;初始化模块从配置文件读取网络流分段传输数据个数NF,按顺序读取NF个网络流分段传输数据并存入网络流分段传输数据数组flow_sid_array,flow_sid_array中每个
元素存储一个网络流的分段传输数据flow_sid_str,共NF个元素,读取段路由网络转发节点个数N,按顺序读取N个报文转发节点SID配置数据并存入转发节点SID配置数据数组sid_config_array,sid_config_array中每个元素存储一个SID配置数据sid_config_str,共N个元素,将NF和flow_sid_array发送给报文构建发送模块,将N个转发节点SID配置数据分别发送给N个转发节点上的报文转发处理模块,即将第n个报文转发节点SID配置数据sid_config_array[n]发送给第n个转发节点上的报文转发处理模块,1≤n≤N,且N、n为正整数;报文构建发送模块与初始化模块、外部网络相连;报文构建发送模块从初始化模块接收NF和flow_sid_array;报文构建发送模块从外部网络接收要进行段路由的原始IPv4报文,根据原始IPv4报文的源IP、目的IP、源端口、目的端口以及网络协议号,从flow_sid_array中查找对应网络流的分段传输数据,根据该分段传输数据、原始IPv4报文以及第一步表2中的IPv4报文头部分格式构建该网络报文的IPv4报文头,根据该分段传输数据、原始网络报文以及SRHv4格式,构建该网络报文的SRHv4报文头,最后根据IPv4段路由扩展报文,将原始报文、SRHv4报文头和IPv4报文头拼接构建IPv4段路由扩展报文,并发送至IPv4段路由网络;报文转发处理模块部署于IPv4段路由网络的报文转发节点,与初始化模块、所属报文转发节点上的IPv4转发部分相连,IPv4转发部分是转发节点上用于完成IPv4转发功能的部分;第n个报文转发节点上的报文转发处理模块从初始化模块接收转发节点SID配置数据sid_config_array[n],第n个报文转发节点上的报文转发处理模块接收第n个转发节点SID配置数据sid_config_array[n];从IPv4段路由网络接收网络报文,根据IPv4报文头格式获取Protocol字段;根据Protocol字段判断网络报文是否为IPv4段路由扩展报文,如果不是,将网络报文发送给IPv4转发部分,如果是,根据IPv4段路由扩展报文格式和SRHv4格式,获取网络报文的当前报文SID即Segment List的第Seg Left个元素,根据当前报文SID查找数值相等的本地SID,如果查找到的SID为END对应的SID,则按照END的指示修改报文的IPv4报文头和SRHv4报文头;如果查找到的SID为END.D对应的SID,则按照END.D的指示修改报文的IPv4报文头和SRHv4报文头;将处理后的网络报文发送给IPv4转发部分;第三步,初始化配置文件,方法是:确定网络流分段传输数据个数NF,以及每个网络流分段传输数据flow_sid_str,分别将NF和NF个flow_sid_str写入配置文件;确定网络中报文转发节点个数N,以及每个报文转发节点SID配置数据sid_config_str,将N和N个sid_config_str写入配置文件;第四步,初始化模块初始化IPv4段路由转发系统,将NF和flow_sid_array发送给报文构建发送模块;并将sid_config_array的N个元素分别发送给对应的转发节点,即将sid_config_array[1]发送给第1个转发节点,

,将sid_config_array[n]发送给第n个转发节点,

,将sid_config_array[N]发送给第N个转发节点;第五步,IPv4段路由转发系统的报文构建发送模块和N个报文转发处理模块并行配合工作,完成IPv4段路由扩展报文的转发,方法是:报文构建发送模块按照5.1所述流程从初始化模块接收网络流分段传输数据个数NF以及网络流分段传输数据数组flow_sid_array;同时从外部网络接收IPv4报文pkt,根据pkt的源IP、目的IP、源端口、目的端口和协议号从flow_sid_array中找出对应的元素,令该元素为flow_sid_str_pkt,根据flow_sid_str_pkt和IPv4段路由扩展报文头格式构建SRHv4
报文头;从pkt中根据IPv4报文头格式获取IPv4报文头,令为IPv4Header,修改IPv4Header中的Total Length、Protocol和Destination Address字段;根据IPv4段路由扩展报文格式,将IPv4Header、SRHv4和原始报文pkt封装为IPv4段路由扩展报文pkt_sr,将pkt_sr发送至IPv4段路由网络;同时N个报文转发处理模块均按照5.2所述流程从IPv4段路由网络接收IPv4段路由扩展报文pkt_sr,从pkt_sr中按照IPv4段路由扩展报文所述格式获取IPv4报文头IPv4Header和IPv4段路由扩展报文头SRHv4,根据SR...

【专利技术属性】
技术研发人员:原玉磊王宝生赵宝康赵锋彭伟时向泉
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1