CN114050996A - 一种段路由扩展报文转发方法 - Google Patents
一种段路由扩展报文转发方法 Download PDFInfo
- Publication number
- CN114050996A CN114050996A CN202111429538.0A CN202111429538A CN114050996A CN 114050996 A CN114050996 A CN 114050996A CN 202111429538 A CN202111429538 A CN 202111429538A CN 114050996 A CN114050996 A CN 114050996A
- Authority
- CN
- China
- Prior art keywords
- message
- sid
- ipv4
- network
- forwarding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种段路由扩展报文转发方法,目的是解决现有IPv4网络由于无法实现网络报文的段路由转发而无法灵活配置网络流传输路径的问题。技术方案是:设计面向IPv4的段路由扩展报文头SRHv4,在SRHv4中记录IPv4网络段路由信息,构建由一个网关节点、N个报文转发节点组成的IPv4段路由转发系统,在网关节点构建SRHv4并封装网络报文,在转发节点解析网络报文的SRHv4并根据SRHv4中的段路由SID完成IPv4段路由扩展报文的转发。采用本发明可以实现对IPv4报文按照配置的路径进行转发,用户可以根据需求灵活配置网络流的传输路径,进而降低网络运维的难度和并使得很多网络功能能够实现。
Description
技术领域
本发明属于计算机网络技术领域,尤其涉及面向IPv4的段路由转发方法。
背景技术
随着云计算、物联网等技术的发展和应用推广,超大带宽需求、大规模设备连接等给传统IP网络运营带来了巨大挑战。基于IPv6的段路由技术(SRv6,Segment Routing forIPv6)支持灵活计算和实施路径,同时极大简化网络配置,可以让用户轻松的控制网络流的传输路径,在软件定义网络、流量工程、网络服务链等技术领域有广泛应用前景。
但是SRv6技术与IPv4协议并不兼容,只能应用于IPv6网络,无法应用于IPv4网络。虽然当前大部分网络都支持IPv6,但是在实际运行网络中特别是数据中心网络中仍然存在不支持SRv6的IPv4网络。
目前关于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 inLarge Provider Networks[J].2020.)等对段路由技术的应用场景进行了研究;中国移动、华为公司(参见程伟强,刘毅松,姜文颖,张庚.G-SRv6头压缩优化技术研究与应用[J].电信科学,2020,36(08):22-27.)和思科公司(参见苏远超.uSID:SRv6新范式.[Online].Available:https://www.sdnlab.com/23390.html)等对SRv6报文头中SID压缩技术进行了研究。
这些研究都是面向IPv6网络,尚无专门关于IPv4网络段路由技术研究的文献。IPv4网络中无法部署应用段路由技术,将使得IPv4网络中用户无法灵活的配置网络流的传输路径,进而增大网络运维的难度和很多网络功能(如服务功能链、流量工程等)无法实现。
如何在IPv4网络中实现网络报文的段路由转发,进而解决IPv4网络运营中的问题是本领域技术人员极为关注的技术问题。
发明内容
本发明要解决的技术问题是基于网络报文段路由转发思想,设计面向IPv4的段路由扩展报文转发方法,解决现有IPv4网络中由于无法实现网络报文的段路由转发而无法灵活配置网络流传输路径的问题。
技术方案是:设计面向IPv4的段路由扩展报文头SRHv4,在SRHv4中记录IPv4网络段路由信息,构建IPv4段路由转发系统,在网关节点构建SRHv4并封装网络报文,在转发节点解析网络报文的SRHv4并根据SRHv4中的段路由SID(Segment ID)完成IPv4段路由扩展报文的转发。
第一步,设计面向IPv4的段路由扩展报文头,方法是:
1.1设计IPv4段路由扩展报文头格式:
为实现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个字段组成;
表1 SRHv4格式
表中各个字段的长度及含义如下:
Next Header:字段长度8bit,指示SRHv4报文头封装的内层报文的类型。若NextHeader为4,表示内层报文类型为IPv4;若Next Header为41,表示内层报文类型为IPv6。
Segment List[m]:字段长度32bit,标识段路由中一个段的Segment ID,形式为IPv4地址。0≤m≤M,且M、m为正整数;
Hdr Ext Len:字段长度为8bit,指示SRHv4报文头不包括前64bit的长度,即指M+1个Segment List元素和Optional TLV的总长度,单位为4字节。
Routing Type:字段长度为8bit,指示当前报文的路由类型,取值固定为4。
Seg Left:字段长度为8bit,值等于m,指示当前要使用的Segment List元素是为Segment List[m]。
Last Entry:字段长度为8bit,指示Segment List中最后一个元素的索引,即M。
Flags:字节长度为8bit,预留标志位。
Tag:字段长度为16bit,指示报文所属报文组的组号。
Optional TLV:为预留字段,字段长度可变。
1.2定义IPv4报文头中与SRHv4相关的字段:
RFC791中定义了IPv4报文头格式,如下表所示,
表2 IPv4报文头格式
在表2中,对与本发明SRHv4相关的字段进行重定义,包括:
Total Length:字段长度16bit,表示从IPv4 Header头开始直到Payload(Payload为封装的原始报文,见表3)结束的报文总长度,单位为字节。
Protocol:字段长度8bit,指示IPv4 Header后的报文类型,本发明中固定取当前协议标准未使用的任意值(优选取值201),表示报文类型为SRHv4。
Destination Address:字段长度32bit,指示报文的目的地址。在对封装后的段路由扩展报文进行转发的过程中将修改该字段值。
1.3设计IPv4段路由封装报文格式
使用SRHv4报文头和IPv4报文头对原始报文进行封装,即在原始报文Payload的外面包SRHv4报文头,再在SRHv4报文头外面包IPv4报文头。封装后的报文为IPv4段路由扩展报文。IPv4段路由扩展报文的格式如下表所示。
表3封装SRHv4报文头后的IPv4段路由扩展报文格式
1.4设计IPv4段路由SID
SID(Segment ID),即Segment List中的元素,用于指示转发设备对当前报文的转发方式。本发明定义2种SID:
End:指示将表1中Seg Left字段指示的Segment List元素值拷贝到DestinationAddress字段中,将Seg Left字段值减1。
End.D:指示对表3中的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(1≤n≤N,且N、n为正整数)个报文转发节点SID配置数据sid_config_array[n]发送给第n个转发节点上的报文转发处理模块。
报文构建发送模块与初始化模块、外部网络相连。报文构建发送模块从初始化模块接收NF和flow_sid_array。报文构建发送模块从外部网络接收要进行段路由的原始IPv4报文,根据原始IPv4报文的源IP、目的IP、源端口、目的端口以及网络协议号,从flow_sid_array中查找对应网络流的分段传输数据,根据该分段传输数据、原始IPv4报文以及第一步表2中的IPv4报文头部分格式构建该网络报文的IPv4报文头,根据该分段传输数据、原始网络报文以及第一步表1所述SRHv4格式,构建该网络报文的SRHv4报文头,最后根据第一步表3所述IPv4段路由扩展报文,将原始报文、SRHv4报文头和IPv4报文头拼接构建IPv4段路由扩展报文,并发送至IPv4段路由网络。
报文转发处理模块部署于IPv4段路由网络的报文转发节点,与初始化模块、所属报文转发节点上的IPv4转发部分相连(IPv4转发部分是转发节点上用于完成IPv4转发功能的部分)。第n个报文转发节点上的报文转发处理模块从初始化模块接收转发节点SID配置数据sid_config_array[n](第n个报文转发节点上的报文转发处理模块接收第n个转发节点SID配置数据sid_config_array[n]);从IPv4段路由网络接收网络报文,根据第一步表2所述IPv4报文头格式获取Protocol字段;根据Protocol字段判断网络报文是否为IPv4段路由扩展报文,如果不是,将网络报文发送给IPv4转发部分,如果是,根据第一步表3和表1所述格式,获取网络报文的当前报文SID(即Segment List的第Seg Left个元素),根据当前报文SID查找数值相等的本地SID,根据查找到的SID按步骤1.4所述对应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段路由转发系统,方法是:
4.1从配置文件读取NF,按照顺序从配置文件读取NF个网络流分段传输数据flow_sid_str。
4.2初始化网络流分段传输数据数组flow_sid_array,将NF个flow_sid_str存入flow_sid_array中。
4.3从配置文件读取N,按照顺序从配置文件读取N个转发节点SID配置数据sid_config_str。
4.4初始化转发节点SID配置数据数组sid_config_array,将N个sid_config_str存入sid_config_array中。
4.5将NF和flow_sid_array发送给报文构建发送模块。
4.6将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段路由扩展报文头格式(表1所示)构建SRHv4报文头;从pkt中根据第一步表2所述格式获取IPv4报文头,令为IPv4Header,修改IPv4Header中的Total Length、Protocol和Destination Address字段;根据第一步表3所述格式,将IPv4Header、SRHv4和原始报文pkt封装为IPv4段路由扩展报文pkt_sr,将pkt_sr发送至IPv4段路由网络。同时N个报文转发处理模块均按照5.2所述流程从IPv4段路由网络接收IPv4段路由扩展报文pkt_sr,从pkt_sr中按照第一步表3所述格式获取IPv4报文头IPv4Header和IPv4段路由扩展报文头SRHv4,根据表1所述格式从SRHv4中获取Seg Left字段,根据Seg Left字段值和SRHv4获取当前使用的Segment List,根据Segment List从SID配置数据sid_config_str中查找对应的SID,根据查找的SID及1.4步中SID的定义修改IPv4Header和SRHv4中的字段值,将修改后的IPv4Header和SRHv4更新至pkt_sr中,将pkt_sr发送给所在转发节点的IPv4转发部分。
5.1报文构建发送模块按照5.1.1-5.1.11所述方法根据网络流分段传输数据将IPv4报文封装为IPv4段路由扩展报文,将IPv4段路由扩展报文发送至IPv4段路由网络:
5.1.1从初始化模块接收NF以及flow_sid_array。
5.1.2监听外部网络,如果有网络报文到达,转步骤5.1.3,否则转步骤5.1.2继续监听。
5.1.3从外部网络接收IPv4报文pkt,从pkt中获取源IP字段值pkt_sip、目的IP字段值pkt_dip、源端口字段值pkt_sport、目的端口字段值pkt_dport、协议号字段值pkt_proto。
5.1.4定义循环变量i,令i=1。
5.1.5获取数组flow_sid_array的第i个元素flow_sid_array[i]。
5.1.6判断以下式子是否同时成立:
flow_sid_array[i].sip=pkt_sip;
flow_sid_array[i].dip=pkt_dip;
flow_sid_array[i].sport=pkt_sport;
flow_sid_array[i].dport=pkt_dport;
flow_sid_array[i].proto=pkt_proto;
如果同时成立,说明报文pkt属于第i个要进行分段传输的网络流,需要对pkt进行段路由处理,转步骤5.1.8;只要有一个式子不成立,转步骤5.1.7。
5.1.7令i=i+1,如果i≤NF,转步骤5.1.5,否则说明报文pkt不需要进行段路由处理,转步骤5.1.11。
5.1.8按照1.1步表1格式构建IPv4段路由扩展报文头SRHv4,设置SRHv4各个字段的值:
令sn=flow_sid_array[i].sn,sn表示报文pkt所在网络流进行段路由传输的SID的个数。
令Next Header=4;
令Hdr Ext Len=2+sn;
令Routing Type=4;
令Seg Left=sn-1;
令Last Entry=sn-1;
令Flags=0;
令Tag=0;
令Segment List[0]=flow_sid_array[i].sid_list[0];flow_sid_array[i].sid_list[0]表示报文pkt所在网络流进行段路由传输的第0个SID;
……
令Segment List[sn]=flow_sid_array[i].sid_list[sn];flow_sid_array[i].sid_list[0]表示报文pkt所在网络流进行段路由传输的第sn个SID。
设置Optional TLV字段为空。
5.1.9从pkt中获取IPv4报文头IPv4Header,修改Total Length字段和Protocol字段的值:
令Total Length=Total Length+(2+flow_sid_array[i].sn)×4;
令Protocol=当前协议标准未使用的任意值;
5.1.10将SRHv4、修改后的IPv4Header和pkt(原始报文)按照第一步表3的格式封装为IPv4段路由扩展报文pkt_sr,将pkt_sr发送至IPv4段路由网络,转5.1.2。
5.1.11将pkt发送至IPv4段路由网络,转5.1.2。
5.2第1个转发节点,…,第n个转发节点,…,第N个转发节点上的报文转发处理模块并行按照5.2.1-5.2.10所述方法从IPv4段路由网络接收报文,判断报文是否为IPv4段路由扩展报文,处理IPv4段路由扩展报文;令第n个转发节点上的报文转发处理模块为第n个报文转发处理模块,第n个报文转发处理模块接收处理IPv4段路由扩展报文的方法是:
5.2.1第n个报文转发处理模块从初始化模块接收SID配置数据sid_config_array[n]。
5.2.2第n个报文转发处理模块监听IPv4段路由网络,如果有网络报文到达,转步骤5.2.3,否则转5.2.2继续监听。
5.2.3第n个报文转发处理模块从IPv4段路由网络接收报文pkt_r,按照第一步中表3的格式从pkt_r中获取Protocol字段的值,判断Protocol是否等于5.1.9步修改后的Protocol字段的值,如果是,说明pkt_r属于IPv4段路由扩展报文,转步骤5.2.4,否则转步骤5.2.10。
5.2.4第n个报文转发处理模块按照第一步中表3的格式从pkt_r中获取Seg Left字段的值,令为k。
5.2.5第n个报文转发处理模块按照第一步中表3的格式从pkt_r中获取SegmentList[k]的值,令为sid_r。
5.2.6判断sid_r是否等于sid_config_array[m].End_sid,如果是,说明需要对报文pkt_r按1.4步骤所述的END指示的操作处理,转步骤5.2.7,否则转步骤5.2.8。
5.2.7修改Destination Address字段值,令Destination Address=SegmentList[k],修改Seg Left字段值,令Seg Left=Seg Left-1。转步骤5.2.10。
5.2.8判断sid_r是否等于sid_config_array[m].End.D_sid,如果是,说明需要对报文pkt_r按1.4步骤所述的END.D指示的操作处理,转步骤5.2.9,否则转步骤5.2.10。
5.2.9按照表3的格式,从pkt_r中剥离IPv4 Header和SRHv4,恢复出原始报文pkt,将pkt发送给第n个报文转发节点的IPv4转发部分,转步骤5.2.2。
5.2.10将pkt_r发送给第n个报文节点IPv4转发部分,转步骤5.2.2。
本发明基于网络报文段路由转发思想,面向IPv4协议和报文,设计了IPv4段路由扩展报文头SRHv4,定义了SRHv4各个字段的长度及含义;在SRHv4基础上设计了IPv4段路由的报文格式;基于设计的IPv4段路由的报文格式和SRHv4设计了IPv4报文段路由转发方法,能够解决IPv4网络中报文段路由转发的实现问题。
采用本发明可以达到以下技术效果:
1)本发明第一步设计了面向IPv4协议的段路由扩展报文头SRHv4,SRHv4中记录了IPv4报文段路由各个段的SID信息(Segment List[0],…,Segment List[n])以及当前使用段的信息(Seg Left),根据这些信息可以实现对IPv4报文按照配置的路径进行转发。
2)本发明第一步设计了IPv4段路由扩展报文的格式以及两种段路由SID,可用于指导IPv4报文段路由时的报文封装、解封以及报文在段路由中每个段的处理。
3)本发明第二步基于段路由思想和SRHv4构建了IPv4段路由转发系统,根据配置的网络流分段传输数据,构建IPv4段路由扩展报文,并在后续根据分段传输数据转发报文,使得用户可以根据需求灵活配置网络流的传输路径,进而降低网络运维的难度和并使得很多网络功能(如服务功能链、流量工程等)能够实现。
4)本发明兼容IPv4协议,可以在IPv4网络中实现增量部署。
附图说明
图1是本发明的总体流程图;
图2是本发明第二步构建的IPv4段路由转发系统逻辑结构图。
具体实施方式
下面对照附图和具体实施例对本发明进行详细说明。
如图1所示,本发明包括以下步骤:
第一步,设计面向IPv4的段路由扩展报文头,方法是:
1.1设计面向IPv4的段路由扩展报文头SRHv4,如表1所示。SRHv4由Next Header、Hdr Ext Len、Routing Type、Seg Left、Last Entry、Flags、Tag、Segment List[n]、Optional TLV共9个字段组成;
表中各个字段的长度及含义如下:
Next Header:字段长度8bit,指示SRHv4报文头封装的内层报文的类型。若NextHeader为4,表示内层报文类型为IPv4;若Next Header为41,表示内层报文类型为IPv6。
Segment List[m]:字段长度32bit,标识段路由中一个段的Segment ID,形式为IPv4地址。0≤m≤M,且M、m为正整数;
Hdr Ext Len:字段长度为8bit,指示SRHv4报文头不包括前64bit的长度,即指M+1个Segment List元素和Optional TLV的总长度,单位为4字节。
Routing Type:字段长度为8bit,指示当前报文的路由类型,取值固定为4。
Seg Left:字段长度为8bit,值等于m,指示当前要使用的Segment List元素是为Segment List[m]。
Last Entry:字段长度为8bit,指示Segment List中最后一个元素的索引,即M。
Flags:字节长度为8bit,预留标志位。
Tag:字段长度为16bit,指示报文所属报文组的组号。
Optional TLV:为预留字段,字段长度可变。
1.2定义IPv4报文头中与SRHv4相关的字段:
对与SRHv4相关的字段进行重定义,包括:
Total Length:字段长度16bit,表示从IPv4 Header头开始直到Payload结束的报文总长度,单位为字节。
Protocol:字段长度8bit,指示IPv4 Header后的报文类型,本实施例中取值201,表示报文类型为SRHv4。
Destination Address:字段长度32bit,指示报文的目的地址。在对封装后的段路由扩展报文进行转发的过程中将修改该字段值。
1.3设计IPv4段路由封装报文格式
使用SRHv4报文头和IPv4报文头对原始报文进行封装,即在原始报文Payload的外面包SRHv4报文头,再在SRHv4报文头外面包IPv4报文头。封装后的报文为IPv4段路由扩展报文。IPv4段路由扩展报文的格式如表3所示。
1.4设计IPv4段路由SID
SID(Segment ID),即Segment List中的元素,用于指示转发设备对当前报文的转发方式。定义2种SID:
End:指示将表1中Seg Left字段指示的Segment List元素值拷贝到DestinationAddress字段中,将Seg Left字段值减1。
End.D:指示对表3中的SRHv4封装报文进行解封装,剥离IPv4报文头和SRHv4,恢复出原始报文Payload。
第二步,构建IPv4段路由转发系统,方法是:
IPv4段路由转发系统如图2所示,由一个网关节点、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(1≤n≤N,且N、n为正整数)个报文转发节点SID配置数据sid_config_array[n]发送给第n个转发节点上的报文转发处理模块。
报文构建发送模块与初始化模块、外部网络相连。报文构建发送模块从初始化模块接收NF和flow_sid_array。报文构建发送模块从外部网络接收要进行段路由的原始IPv4报文,根据原始IPv4报文的源IP、目的IP、源端口、目的端口以及网络协议号,从flow_sid_array中查找对应网络流的分段传输数据,根据该分段传输数据、原始IPv4报文以及第一步表2中的IPv4报文头部分格式构建该网络报文的IPv4报文头,根据该分段传输数据、原始网络报文以及第一步表1所述SRHv4格式,构建该网络报文的SRHv4报文头,最后根据第一步表3所述IPv4段路由扩展报文,将原始报文、SRHv4报文头和IPv4报文头拼接构建IPv4段路由扩展报文,并发送至IPv4段路由网络。
报文转发处理模块部署于IPv4段路由网络的报文转发节点,与初始化模块、所属报文转发节点上的IPv4转发部分相连(IPv4转发部分是转发节点上用于完成IPv4转发功能的部分)。第n个报文转发节点上的报文转发处理模块从初始化模块接收转发节点SID配置数据sid_config_array[n](第n个报文转发节点上的报文转发处理模块接收第n个转发节点SID配置数据sid_config_array[n]);从IPv4段路由网络接收网络报文,根据第一步表2所述IPv4报文头格式获取Protocol字段;根据Protocol字段判断网络报文是否为IPv4段路由扩展报文,如果不是,将网络报文发送给IPv4转发部分,如果是,根据表3和表1所述格式,获取网络报文的当前报文SID(即Segment List的第Seg Left个元素),根据当前报文SID查找数值相等的本地SID,根据查找到的SID按步骤1.4所述对应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段路由转发系统,方法是:
4.1从配置文件读取NF,按照顺序从配置文件读取NF个网络流分段传输数据flow_sid_str。
4.2初始化网络流分段传输数据数组flow_sid_array,将NF个flow_sid_str存入flow_sid_array中。
4.3从配置文件读取N,按照顺序从配置文件读取N个转发节点SID配置数据sid_config_str。
4.4初始化转发节点SID配置数据数组sid_config_array,将N个sid_config_str存入sid_config_array中。
4.5将NF和flow_sid_array发送给报文构建发送模块。
4.6将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段路由扩展报文头格式(表1所示)构建SRHv4报文头;从pkt中根据第一步表2所述格式获取IPv4报文头,令为IPv4Header,修改IPv4Header中的Total Length、Protocol和DestinationAddress字段;根据第一步表3所述格式,将IPv4Header、SRHv4和原始报文pkt封装为IPv4段路由扩展报文pkt_sr,将pkt_sr发送至IPv4段路由网络。同时N个报文转发处理模块均按照5.2所述流程从IPv4段路由网络接收IPv4段路由扩展报文pkt_sr,从pkt_sr中按照第一步表3所述格式获取IPv4报文头IPv4Header和IPv4段路由扩展报文头SRHv4,根据表1所述格式从SRHv4中获取Seg Left字段,根据Seg Left字段值和SRHv4获取当前使用的Segment List,根据Segment List从SID配置数据sid_config_str中查找对应的SID,根据查找的SID及1.4步中SID的定义修改IPv4Header和SRHv4中的字段值,将修改后的IPv4Header和SRHv4更新至pkt_sr中,将pkt_sr发送给所在转发节点的IPv4转发部分。
5.1报文构建发送模块按照5.1.1-5.1.11所述方法根据网络流分段传输数据将IPv4报文封装为IPv4段路由扩展报文,将IPv4段路由扩展报文发送至IPv4段路由网络:
5.1.1从初始化模块接收NF以及flow_sid_array。
5.1.2监听外部网络,如果有网络报文到达,转步骤5.1.3,否则转步骤5.1.2继续监听。
5.1.3从外部网络接收IPv4报文pkt,从pkt中获取源IP字段值pkt_sip、目的IP字段值pkt_dip、源端口字段值pkt_sport、目的端口字段值pkt_dport、协议号字段值pkt_proto。
5.1.4定义循环变量i,令i=1。
5.1.5获取数组flow_sid_array的第i个元素flow_sid_array[i]。
5.1.6判断以下式子是否同时成立:
flow_sid_array[i].sip=pkt_sip;
flow_sid_array[i].dip=pkt_dip;
flow_sid_array[i].sport=pkt_sport;
flow_sid_array[i].dport=pkt_dport;
flow_sid_array[i].proto=pkt_proto;
如果同时成立,说明报文pkt属于第i个要进行分段传输的网络流,需要对pkt进行段路由处理,转步骤5.1.8;只要有一个式子不成立,转步骤5.1.7。
5.1.7令i=i+1,如果i≤NF,转步骤5.1.5,否则说明报文pkt不需要进行段路由处理,转步骤5.1.11。
5.1.8按照1.1步表1格式构建IPv4段路由扩展报文头SRHv4,设置SRHv4各个字段的值:
令sn=flow_sid_array[i].sn,sn表示报文pkt所在网络流进行段路由传输的SID的个数。
令Next Header=4;
令Hdr Ext Len=2+sn;
令Routing Type=4;
令Seg Left=sn-1;
令Last Entry=sn-1;
令Flags=0;
令Tag=0;
令Segment List[0]=flow_sid_array[i].sid_list[0];flow_sid_array[i].sid_list[0]表示报文pkt所在网络流进行段路由传输的第0个SID;
……
令Segment List[sn]=flow_sid_array[i].sid_list[sn];flow_sid_array[i].sid_list[0]表示报文pkt所在网络流进行段路由传输的第sn个SID。
设置Optional TLV字段为空。
5.1.9从pkt中获取IPv4报文头IPv4Header,修改Total Length字段和Protocol字段的值:
令Total Length=Total Length+(2+flow_sid_array[i].sn)×4;
令Protocol=201;
5.1.10将SRHv4、修改后的IPv4Header和pkt(原始报文)按照第一步表3的格式封装为IPv4段路由扩展报文pkt_sr,将pkt_sr发送至IPv4段路由网络,转5.1.2。
5.1.11将pkt发送至IPv4段路由网络,转5.1.2。
5.2第1个转发节点,…,第n个转发节点,…,第N个转发节点上的报文转发处理模块并行按照5.2.1-5.2.10所述方法从IPv4段路由网络接收报文,判断报文是否为IPv4段路由扩展报文,处理IPv4段路由扩展报文;令第n个转发节点上的报文转发处理模块为第n个报文转发处理模块,第n个报文转发处理模块接收处理IPv4段路由扩展报文的方法是:
5.2.1第n个报文转发处理模块从初始化模块接收SID配置数据sid_config_array[n]。
5.2.2第n个报文转发处理模块监听IPv4段路由网络,如果有网络报文到达,转步骤5.2.3,否则转5.2.2继续监听。
5.2.3第n个报文转发处理模块从IPv4段路由网络接收报文pkt_r,按照第一步中表3的格式从pkt_r中获取Protocol字段的值,判断Protocol是否等于5.1.9步修改后的Protocol字段的值,如果是,说明pkt_r属于IPv4段路由扩展报文,转步骤5.2.4,否则转步骤5.2.10。
5.2.4第n个报文转发处理模块按照第一步中表3的格式从pkt_r中获取Seg Left字段的值,令为k。
5.2.5第n个报文转发处理模块按照第一步中表3的格式从pkt_r中获取SegmentList[k]的值,令为sid_r。
5.2.6判断sid_r是否等于sid_config_array[m].End_sid,如果是,说明需要对报文pkt_r按1.4步骤所述的END指示的操作处理,转步骤5.2.7,否则转步骤5.2.8。
5.2.7修改Destination Address字段值,令Destination Address=SegmentList[k],修改Seg Left字段值,令Seg Left=Seg Left-1。转步骤5.2.10。
5.2.8判断sid_r是否等于sid_config_array[m].End.D_sid,如果是,说明需要对报文pkt_r按1.4步骤所述的END.D指示的操作处理,转步骤5.2.9,否则转步骤5.2.10。
5.2.9按照表3的格式,从pkt_r中剥离IPv4 Header和SRHv4,恢复出原始报文pkt,将pkt发送给第n个报文转发节点的IPv4转发部分,转步骤5.2.2。
5.2.10将pkt_r发送给第n个报文节点IPv4转发部分,转步骤5.2.2。
Claims (7)
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元素值拷贝到DestinationAddress字段中,将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,根据SRHv4格式从SRHv4中获取Seg Left字段,根据Seg Left字段值和SRHv4获取当前使用的Segment List,根据Segment List从SID配置数据sid_config_str中查找对应的SID,根据查找的SID及SID的定义修改IPv4Header和SRHv4中的字段值,将修改后的IPv4Header和SRHv4更新至pkt_sr中,将pkt_sr发送给所在转发节点的IPv4转发部分;
5.1报文构建发送模块按照5.1.1-5.1.11所述方法根据网络流分段传输数据将IPv4报文封装为IPv4段路由扩展报文,将IPv4段路由扩展报文发送至IPv4段路由网络:
5.1.1从初始化模块接收NF以及flow_sid_array;
5.1.2监听外部网络,如果有网络报文到达,转步骤5.1.3,否则转步骤5.1.2继续监听;
5.1.3从外部网络接收IPv4报文pkt,从pkt中获取源IP字段值pkt_sip、目的IP字段值pkt_dip、源端口字段值pkt_sport、目的端口字段值pkt_dport、协议号字段值pkt_proto;
5.1.4定义循环变量i,令i=1;
5.1.5获取数组flow_sid_array的第i个元素flow_sid_array[i];
5.1.6判断以下式子是否同时成立:
flow_sid_array[i].sip=pkt_sip;
flow_sid_array[i].dip=pkt_dip;
flow_sid_array[i].sport=pkt_sport;
flow_sid_array[i].dport=pkt_dport;
flow_sid_array[i].proto=pkt_proto;
如果同时成立,说明报文pkt属于第i个要进行分段传输的网络流,需要对pkt进行段路由处理,转步骤5.1.8;只要有一个式子不成立,转步骤5.1.7;
5.1.7令i=i+1,如果i≤NF,转步骤5.1.5,否则说明报文pkt不需要进行段路由处理,转步骤5.1.11;
5.1.8按照SRHv4格式构建IPv4段路由扩展报文头SRHv4,设置SRHv4各个字段的值;
5.1.9从pkt中获取IPv4报文头IPv4Header,修改Total Length字段和Protocol字段的值;
5.1.10将SRHv4、修改后的IPv4Header和原始报文pkt按照IPv4段路由扩展报文的格式封装为IPv4段路由扩展报文pkt_sr,将pkt_sr发送至IPv4段路由网络,转5.1.2;
5.1.11将pkt发送至IPv4段路由网络,转5.1.2;
5.2第1个转发节点,…,第n个转发节点,…,第N个转发节点上的报文转发处理模块并行按照5.2.1-5.2.10所述方法从IPv4段路由网络接收报文,判断报文是否为IPv4段路由扩展报文,处理IPv4段路由扩展报文;令第n个转发节点上的报文转发处理模块为第n个报文转发处理模块,第n个报文转发处理模块接收处理IPv4段路由扩展报文的方法是:
5.2.1第n个报文转发处理模块从初始化模块接收SID配置数据sid_config_array[n];
5.2.2第n个报文转发处理模块监听IPv4段路由网络,如果有网络报文到达,转步骤5.2.3,否则转5.2.2继续监听;
5.2.3第n个报文转发处理模块从IPv4段路由网络接收报文pkt_r,按照IPv4段路由扩展报文的格式从pkt_r中获取Protocol字段的值,判断Protocol是否等于5.1.9步修改后的Protocol字段的值,如果是,说明pkt_r属于IPv4段路由扩展报文,转步骤5.2.4,否则转步骤5.2.10;
5.2.4第n个报文转发处理模块按照IPv4段路由扩展报文的格式从pkt_r中获取SegLeft字段的值,令为k;
5.2.5第n个报文转发处理模块按照IPv4段路由扩展报文的格式从pkt_r中获取Segment List[k]的值,令为sid_r;
5.2.6判断sid_r是否等于sid_config_array[m].End_sid,如果是,转步骤5.2.7,否则转步骤5.2.8;
5.2.7修改Destination Address字段值,令Destination Address=Segment List[k],修改Seg Left字段值,令Seg Left=Seg Left-1;转步骤5.2.10;
5.2.8判断sid_r是否等于sid_config_array[m].End.D_sid,如果是,说明需要对报文pkt_r按END.D指示的操作处理,转步骤5.2.9,否则转步骤5.2.10;
5.2.9按照IPv4段路由扩展报文的格式,从pkt_r中剥离IPv4 Header和SRHv4,恢复出原始报文pkt,将pkt发送给第n个报文转发节点的IPv4转发部分,转步骤5.2.2;
5.2.10将pkt_r发送给第n个报文节点IPv4转发部分,转步骤5.2.2。
2.如权利要求1所述的一种段路由扩展报文转发方法,其特征在于1.1步所述SRHv4中的9个字段的长度及具体含义分别是:
Next Header:字段长度8bit,若Next Header为4,表示内层报文类型为IPv4;若NextHeader为41,表示内层报文类型为IPv6;
Segment List[m]:字段长度32bit;
Hdr Ext Len:字段长度8bit,其所指的M+1个Segment List元素和Optional TLV的总长度的单位为4字节;
Routing Type:字段长度8bit,取值固定为4;
Seg Left:字段长度为8bit,值等于m;
Last Entry:字段长度为8bit,值为M;
Flags:字节长度8bit;
Tag:字段长度16bit;
Optional TLV:字段长度可变。
3.如权利要求1所述的一种段路由扩展报文转发方法,其特征在于1.2步所述对IPv4报文头格式中与SRHv4相关的字段进行重定义的具体方法是:Total Length的字段长度为16bit,其所表示的从IPv4 Header头开始直到原始报文Payload结束的报文总长度的单位为字节;Protocol字段长度为8bit,固定取当前协议标准未使用的任意值,表示报文类型为SRHv4;Destination Address的字段长度为32bit。
4.如权利要求3所述的一种段路由扩展报文转发方法,其特征在于所述Protocol固定取值201。
5.如权利要求1所述的一种段路由扩展报文转发方法,其特征在于第四步所述初始化模块初始化IPv4段路由转发系统的方法是:
4.1从配置文件读取NF,按照顺序从配置文件读取NF个网络流分段传输数据flow_sid_str;
4.2初始化网络流分段传输数据数组flow_sid_array,将NF个flow_sid_str存入flow_sid_array中;
4.3从配置文件读取N,按照顺序从配置文件读取N个转发节点SID配置数据sid_config_str;
4.4初始化转发节点SID配置数据数组sid_config_array,将N个sid_config_str存入sid_config_array中。
6.如权利要求1所述的一种段路由扩展报文转发方法,其特征在于5.1.8步所述构建IPv4段路由扩展报文头SRHv4的方法是:
令sn=flow_sid_array[i].sn表示报文pkt所在网络流进行段路由传输的SID的个数;
令Next Header=4;
令Hdr Ext Len=2+sn;
令Routing Type=4;
令Seg Left=sn-1;
令Last Entry=sn-1;
令Flags=0;
令Tag=0;
令Segment List[0]=flow_sid_array[i].sid_list[0];flow_sid_array[i].sid_list[0]表示报文pkt所在网络流进行段路由传输的第0个SID;
……
令Segment List[sn]=flow_sid_array[i].sid_list[sn];flow_sid_array[i].sid_list[0]表示报文pkt所在网络流进行段路由传输的第sn个SID;
设置Optional TLV字段为空。
7.如权利要求1所述的一种段路由扩展报文转发方法,其特征在于5.1.9步所述修改Total Length字段和Protocol字段的值的方法是:
令Total Length=Total Length+(2+flow_sid_array[i].sn)×4;
令Protocol=当前协议标准未使用的任意值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111429538.0A CN114050996B (zh) | 2021-11-29 | 2021-11-29 | 一种段路由扩展报文转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111429538.0A CN114050996B (zh) | 2021-11-29 | 2021-11-29 | 一种段路由扩展报文转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114050996A true CN114050996A (zh) | 2022-02-15 |
CN114050996B CN114050996B (zh) | 2023-03-24 |
Family
ID=80211455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111429538.0A Active CN114050996B (zh) | 2021-11-29 | 2021-11-29 | 一种段路由扩展报文转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114050996B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016391A (zh) * | 2022-12-29 | 2023-04-25 | 天翼云科技有限公司 | 一种基于nat网关的报文转发方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108023815A (zh) * | 2016-11-03 | 2018-05-11 | 中兴通讯股份有限公司 | 信息传输方法、装置及系统 |
US20200358698A1 (en) * | 2018-09-05 | 2020-11-12 | Huawei Technologies Co., Ltd. | Segment routing in mpls network |
CN112787927A (zh) * | 2021-03-26 | 2021-05-11 | 新华三信息安全技术有限公司 | 一种分段路由报文转发方法、装置及预设逻辑电路单元 |
CN113259239A (zh) * | 2020-02-10 | 2021-08-13 | 华为技术有限公司 | 一种在混合网络中转发报文的方法、设备和系统 |
CN113300949A (zh) * | 2020-02-24 | 2021-08-24 | 华为技术有限公司 | 转发报文的方法、发布路由信息的方法、装置及系统 |
-
2021
- 2021-11-29 CN CN202111429538.0A patent/CN114050996B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108023815A (zh) * | 2016-11-03 | 2018-05-11 | 中兴通讯股份有限公司 | 信息传输方法、装置及系统 |
US20200358698A1 (en) * | 2018-09-05 | 2020-11-12 | Huawei Technologies Co., Ltd. | Segment routing in mpls network |
CN113259239A (zh) * | 2020-02-10 | 2021-08-13 | 华为技术有限公司 | 一种在混合网络中转发报文的方法、设备和系统 |
CN113300949A (zh) * | 2020-02-24 | 2021-08-24 | 华为技术有限公司 | 转发报文的方法、发布路由信息的方法、装置及系统 |
CN112787927A (zh) * | 2021-03-26 | 2021-05-11 | 新华三信息安全技术有限公司 | 一种分段路由报文转发方法、装置及预设逻辑电路单元 |
Non-Patent Citations (2)
Title |
---|
FENG ZHAO 等: "ABN: Attribute Based Networking for Enterprise Networks", 《2017 17TH IEEE INTERNATIONAL CONFERENCE ON COMMUNICATION TECHNOLOGY》 * |
黄浩然 等: "SR+SDN技术在广电IP城域网中的应用实践", 《广播电视信息》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016391A (zh) * | 2022-12-29 | 2023-04-25 | 天翼云科技有限公司 | 一种基于nat网关的报文转发方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114050996B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | Protocol oblivious forwarding (POF): Software-defined networking with enhanced programmability | |
EP1522174B1 (en) | Apparatus and method for a virtual hierarchial local area network | |
CN111953604B (zh) | 一种为业务流提供业务服务的方法和装置 | |
JP4460195B2 (ja) | パケット転送装置およびルーティング制御装置 | |
JP7235397B2 (ja) | Dcnパケット処理方法、ネットワークデバイスおよびネットワークシステム | |
US9894003B2 (en) | Method, apparatus and system for processing data packet | |
EP2993836B1 (en) | Method and device for routing data message | |
EP2833576A1 (en) | Lan multiplexer apparatus | |
US20020165978A1 (en) | Multi-service optical infiniband router | |
US8964641B2 (en) | System and method for transporting digital baseband streams in a network environment | |
US20090207860A1 (en) | Method, apparatus and system for transferring data | |
US20220255772A1 (en) | Packet sending method, apparatus, and system | |
CN111147372B (zh) | 下行报文发送、转发方法和装置 | |
EP3119057A1 (en) | Packet conversion device and method for allowing transparent packet-based multipath bundling | |
CN104869013A (zh) | 一种基于sdn的网关配置方法及sdn控制器 | |
US20220191138A1 (en) | Method for Making Host Network Performance Requirement Programmable, Device, and System | |
CN112583718B (zh) | 一种SRoU场景下SRv6报文传递方法、系统、设备及介质 | |
CN114050996B (zh) | 一种段路由扩展报文转发方法 | |
CN115665272A (zh) | 基于NDP协议的IPv6 over AOS空间通信系统 | |
JP3930035B2 (ja) | データ転送装置およびデータ転送システム | |
WO2023115367A1 (zh) | 一种多协议数据传输方法及装置、网络和存储介质 | |
US20230327983A1 (en) | Performance measurement in a segment routing network | |
JP2021090161A (ja) | フォーマット変換装置及び方法並びにプログラム | |
JP2007053789A (ja) | エッジルータ装置、コアルータ装置、及びネットワークシステム | |
US20040258056A1 (en) | Provider connection system, packet exchange apparatus thereof, dns server, packet exchange method, and computer program thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |