报文转发方法、装置、设备、可读存储介质及程序产品
文献发布时间:2023-06-19 12:10:19
技术领域
本发明涉及通信技术领域,尤其涉及一种报文转发方法、装置、设备、可读存储介质及程序产品。
背景技术
当前SRv6(Segment Routing Internet Protocol Version 6,分段路由与IPv6网络的结合)技术因其兼容性、可编程性,在SDN(SoftwareDefinedNetwork,软件定义网络)网络架构下得到了广泛应用,结合可编程交换机成为了SDN的新标准,当前主流的SRv6算法包括Unified SID算法、G-SRv6算法,以及Micro SID算法,但上述Unified SID算法增加了标识字段,增加到已有的SRv6网络中时不能兼容原有的SRv6网络,上述G-SRv6算法在转发面的计算过程比较复杂,需要更多的硬件资源,上述Micro SID算法所使用的偏移算法也消耗很多的硬件计算资源。
发明内容
本发明的主要目的在于提供一种报文转发方法、装置、设备、可读存储介质及程序产品,旨在解决现有的SRv6算法存在的计算过程复杂和所需硬件资源多的技术问题。
此外,为实现上述目的,本发明还提供一种报文转发方法,所述报文转发方法应用于SRv6网络,所述SRv6网络包括发送主机、交换机和接收主机,所述报文转发方法包括以下步骤:
接收所述发送主机触发的报文转发指令,获取所述报文转发指令对应的待发送数据,并将所述待发送数据放入基于所述SRv6网络生成的待发送报文;
基于所述SRv6网络的转发规则,确定所述待发送数据对应的接收主机,并对所述发送主机和所述接收主机进行路由,得到报文转发线路;
筛选出所述报文转发线路上的压缩交换机和非压缩交换机,获取所述非压缩交换机的第一地址,并对所述压缩交换机的地址进行压缩,得到第二地址;
将包含所述第一地址或所述第二地址的段ID放入所述待发送报文,并基于所述第一地址和所述第二地址确定的目标二维数组转发所述待发送报文。
可选地,所述对所述压缩交换机的地址进行压缩,得到第二地址的步骤包括:
对所述压缩交换机的地址进行拆分,将拆分得到的公共前缀去除,以实现对所述压缩交换机的地址的压缩,得到第二地址,其中,所述第二地址对应的字节数小于所述第一地址对应的字节数,且所述第一地址对应的字节数是所述第二地址对应的字节数的m倍,m为整数。
可选地,定义目标二维数组中的第一数值为所述段ID的序号,目标二维数组中的第二数值为所述段ID中的地址序号,所述基于所述第一地址和所述第二地址确定目标二维数组的步骤包括:
若所述段ID存在一个,且所述段ID包含所述第一地址,则确定所述第一数值为一,所述第二数值小于或等于m;
若所述段ID存在一个,且所述段ID包含所述第二地址,则确定所述第一数值为一,所述第二数值属于第一区间,其中,所述第一区间的极小值为一,极大值为2m。
可选地,所述基于所述第一地址和所述第二地址确定目标二维数组的步骤,还包括:
若所述段ID存在多个,且所有段ID均包含所述第一地址,则确定所述第二数值小于或等于m,所述第一数值属于第二区间,其中,所述第二区间的极小值为二,极大值为所述段ID的个数;
若所述段ID存在多个,且所述段ID中存在包含所述第二地址的段ID,则确定所述第一数值属于第二区间,所述第二数值属于所述第一区间。
可选地,获取所述待发送报文的转发要求,所述对所述发送主机和所述接收主机进行路由,得到报文转发线路的步骤包括:
对所述发送主机和所述接收主机进行路由,得到目标转发路线;
若所述目标转发路线存在一个,则将所述目标转发路线作为报文转发线路;
若所述目标转发路线存在多个,则对所述目标转发路线进行筛选,并将筛选得到的与所述转发要求匹配的目标转发路线作为报文转发线路。
可选地,所述基于所述第一地址和所述第二地址确定的目标二维数组转发所述待发送报文的步骤包括:
获取所述目标二维数组当前指定的段ID,若所述目标二维数组当前指定的段ID包含所述第二地址,则对所述目标二维数组当前指定的段ID进行偏移操作;
根据所述偏移操作,确定接收所述待发送报文的目标交换机的地址,以基于所述目标交换机的地址转发所述待发送报文。
此外,为实现上述目的,本发明还提供一种报文转发装置,所述报文转发装置包括:
待发送数据获取模块,用于接收发送主机触发的报文转发指令,获取所述报文转发指令对应的待发送数据,并将所述待发送数据放入基于SRv6网络生成的待发送报文;
报文转发线路获取模块,用于基于所述SRv6网络的转发规则,确定待发送数据对应的所述接收主机,并对所述发送主机和所述接收主机进行路由,得到报文转发线路;
地址压缩模块,用于筛选出所述报文转发线路上的压缩交换机和非压缩交换机,获取所述非压缩交换机的第一地址,并对所述压缩交换机的地址进行压缩,得到第二地址;
报文发送模块,用于将包含所述第一地址或所述第二地址的段ID放入所述待发送报文,并基于所述第一地址和所述第二地址确定的目标二维数组转发所述待发送报文。
此外,为实现上述目的,本发明还提供一种报文转发设备,所述报文转发设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的报文转发程序,所述报文转发程序被所述处理器执行时实现如上述的报文转发方法的步骤。
此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有报文转发程序,所述报文转发程序被处理器执行时实现如上述的报文转发方法的步骤。
此外,为实现上述目的,本发明还提供一种程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的报文转发方法的步骤。
本发明实施例提出的一种报文转发方法、装置、设备及可读存储介质。本发明提出的报文转发方法应用于包括发送主机和交换机的SRv6网络,首先SRv6网络接收发送主机触发的报文转发指令,获取报文转发指令对应的待发送数据,并将待发送数据放入基于SRv6网络生成的待发送报文,然后基于SRv6网络的转发规则,确定待发送数据对应的接收主机,并对发送主机和接收主机进行路由,得到报文转发线路,筛选出报文转发线路上的压缩交换机和非压缩交换机,获取非压缩交换机的第一地址,并对压缩交换机的地址进行压缩,得到第二地址,最后将包含第一地址或第二地址的段ID放入待发送报文,并基于第一地址和第二地址确定的目标二维数组转发待发送报文,本发明通过对包含第一地址或第二地址的段ID进行设计,使用了较少的交换机硬件资源,报文转发的计算过程也比较简单。
附图说明
图1为本发明实施例提供的报文转发设备一种实施方式的硬件结构示意图;
图2为本发明报文转发方法第一实施例的流程示意图;
图3为本发明报文转发方法第一实施例中段ID的示意图;
图4为本发明报文转发方法第一实施例中报文转发线路的示意图;
图5为本发明报文转发方法第二实施例的流程示意图;
图6为本发明报文转发装置一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
本发明实施例报文转发终端(又叫终端、设备或者终端设备)可以是主机和交换机等用于通信网络部署的设备,以及个人电脑等具有程序编译功能的设备。
如图1所示,该终端可以包括:处理器1001,例如CPU(Central Processing Unit,中央处理器),通信总线1002,存储器1003。其中,通信总线1002用于实现这些组件之间的连接通信。存储器1003可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1003可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1003中可以包括报文转发程序。
在图1所示的终端中,处理器1001可以用于调用存储器1003中存储的报文转发程序,并执行以下操作:
接收所述发送主机触发的报文转发指令,获取所述报文转发指令对应的待发送数据,并将所述待发送数据放入基于所述SRv6网络生成的待发送报文;
基于所述SRv6网络的转发规则,确定所述待发送数据对应的接收主机,并对所述发送主机和所述接收主机进行路由,得到报文转发线路;
筛选出所述报文转发线路上的压缩交换机和非压缩交换机,获取所述非压缩交换机的第一地址,并对所述压缩交换机的地址进行压缩,得到第二地址;
将包含所述第一地址或所述第二地址的段ID放入所述待发送报文,并基于所述第一地址和所述第二地址确定的目标二维数组转发所述待发送报文。
进一步地,处理器1001可以用于调用存储器1003中存储的报文转发程序,还执行以下操作:
对所述压缩交换机的地址进行拆分,将拆分得到的公共前缀去除,以实现对所述压缩交换机的地址的压缩,得到第二地址,其中,所述第二地址对应的字节数小于所述第一地址对应的字节数,且所述第一地址对应的字节数是所述第二地址对应的字节数的m倍,m为整数。
进一步地,处理器1001可以用于调用存储器1003中存储的报文转发程序,还执行以下操作:
若所述段ID存在一个,且所述段ID包含所述第一地址,则确定所述第一数值为一,所述第二数值小于或等于m;
若所述段ID存在一个,且所述段ID包含所述第二地址,则确定所述第一数值为一,所述第二数值属于第一区间,其中,所述第一区间的极小值为一,极大值为2m。
进一步地,处理器1001可以用于调用存储器1003中存储的报文转发程序,还执行以下操作:
若所述段ID存在多个,且所有段ID均包含所述第一地址,则确定所述第二数值小于或等于m,所述第一数值属于第二区间,其中,所述第二区间的极小值为二,极大值为所述段ID的个数;
若所述段ID存在多个,且所述段ID中存在包含所述第二地址的段ID,则确定所述第一数值属于第二区间,所述第二数值属于所述第一区间。
进一步地,处理器1001可以用于调用存储器1003中存储的报文转发程序,还执行以下操作:
对所述发送主机和所述接收主机进行路由,得到目标转发路线;
若所述目标转发路线存在一个,则将所述目标转发路线作为报文转发线路;
若所述目标转发路线存在多个,则对所述目标转发路线进行筛选,并将筛选得到的与所述转发要求匹配的目标转发路线作为报文转发线路。
进一步地,处理器1001可以用于调用存储器1003中存储的报文转发程序,还执行以下操作:
获取所述目标二维数组当前指定的段ID,若所述目标二维数组当前指定的段ID包含所述第二地址,则对所述目标二维数组当前指定的段ID进行偏移操作;
根据所述偏移操作,确定接收所述待发送报文的目标交换机的地址,以基于所述目标交换机的地址转发所述待发送报文。
基于上述设备硬件结构,提出了本发明报文转发方法的实施例。
需要说明的是,当前SRv6技术因其兼容性和可编程性,在SDN网络架构下得到了广泛应用,结合可编程交换机成为了SDN的新标准。但是SRv6同样具有明显的缺点,SRv6技术在网络中实际部署当前主要面临的挑战包括:SRv6报文开销大、网络链路带宽利用率低、SRv6技术的报文处理对芯片要求高,以及复杂的报文头的复制和操作有难度。近年来基于ASIC(一种可用于交换机的芯片名称)芯片的可编程交换机因其低成本、高带宽、可编程性成为通信网络应用领域的热点,同样,可编程交换机也有其弱点,它的硬件资源是有限的,首先,报文头解析长度有限,当前市面上大部分的交换机不能解析超过5个SID的SRv6报文头,这意味着SRv6路由最多6跳(首跳可以不用封装),这显然不能满足大规模网络的需求。另外,可编程交换机的ALU(arithmetic and logic unit,算术逻辑单元)计算资源也比较稀缺,现有的交换机每个段只有32比特的计算单元。
因此,为了解决以上的问题,各个运营商、设备商都在找寻SRv6压缩算法,现有的SRv6压缩算法有Unified SID算法、G-SRv6算法,以及Micro SID算法,Unified SID算法中增加了标识字段,虽然通用性好,但是增加到已有的SRv6网络中,不能兼容原有的SRv6协议,而且极大地增加了硬件资源解析报文头的负担;G-SRv6算法设计巧妙,能很好的兼容原有的SRv6协议,而且可以有不错的压缩效果,但是其转发面的计算过程复杂;Micro SID算法扩展了SRv6的行为,将复杂度抛给了控制面,转发面算法很简单,可是所用偏移算法消耗的资源也不低。
针对上述问题,本发明提出一种报文转发方法,参照图2,在本发明报文转发方法的第一实施例中,所述报文转发方法包括:
步骤S10,接收所述发送主机触发的报文转发指令,获取所述报文转发指令对应的待发送数据,并将所述待发送数据放入基于所述SRv6网络生成的待发送报文;
在本发明提出的SRv6网络中,发送主机存在需要发送的数据时,触发生成报文转发指令,获取报文转发指令对应的待发送数据,即上述发送主机需要发送的数据,然后基于SRv6网络生成待发送报文,需要说明的是,基于SRv6网络生成的待发送报文会被封装SRH(Segment Routing Header,分段路由头)和sidlist(SID列表,SID(segment ID,段ID)列表),其中,段ID包含设备ID和端口ID,分别对应待发送报文可以转发的设备,以及通过的端口,待发送数据会被放入基于SRv6网络生成的待发送报文中。
步骤S20,基于所述SRv6网络的转发规则,确定所述待发送数据对应的接收主机,并对所述发送主机和所述接收主机进行路由,得到报文转发线路;
需要说明的是,本发明提出的SRv6网络具有自身的转发规则,具体地,在SRv6网络中转发的报文,需要预先将报文转发到的下一个节点对应的交换机或者接收机的设备地址以及端口地址写入段ID中,已知SRv6网络的段ID的长度为128比特,段ID的128比特中包含64比特的公共前缀,交换机又包括支持压缩的交换机和不支持压缩的交换机,其中,交换机的设备地址的长度为16比特,交换机的端口地址的长度也是16比特,接收机的设备地址和端口地址与交换机相同,支持压缩的交换机的设备地址和端口地址的长度可以被压缩为8比特,地址压缩的方法一般是,把多个地址的相同部分去除,需要说明的是,支持压缩的交换机确定设备地址和端口地址时,所使用的地址块是相同的,即所有支持压缩的交换机的设备地址和端口地址都具有相同的长度为8比特的内容,这也是支持压缩的前提。
当待发送数据对应的接收主机确定后,基于SRv6网络的转发规则,需要预先确定接收主机之后的下一个交换机的设备地址以及端口地址,确定接收主机之后的下一个交换机的设备地址以及端口地址的过程即是本实施例中的路由,需要说明的是,本实施例中的路由方法可以是:先确定当前节点及其下一个节点的设备地址以及端口地址,然后将待发送报文转发至下一个节点,再确定其后的节点的设备地址以及端口地址,路由方法还可以是:预先确定待发送报文转发时经过的所有交换机或者接收主机的设备地址以及端口地址,发送主机到其下一个节点对应的交换机、交换机到其下一个节点对应的交换机或接收主机,或者,发送主机到接收主机之间的路径即是本实施例中的报文转发线路。
步骤S30,筛选出所述报文转发线路上的压缩交换机和非压缩交换机,获取所述非压缩交换机的第一地址,并对所述压缩交换机的地址进行压缩,得到第二地址;
需要说明的是,报文转发线路中包含支持压缩的交换机(即本实施例中的压缩交换机)和不支持压缩的交换机(即本实施例中的非压缩交换机),然后基于SRv6网络的转发规则,获取非压缩交换机的设备地址以及端口地址,统称为第一地址,以及压缩交换机的地址,然后对压缩交换机的地址进行压缩,得到压缩交换机的经过压缩后的设备地址以及端口地址,统称为第二地址,如图3所示,非压缩交换机的第一地址将被写入SID1或者SID3中,设备地址以及端口地址分别占用16比特的长度,压缩交换机的第二地址将被写入SID2中,设备地址以及端口地址分别占用8比特的长度。
步骤S40,将包含所述第一地址或所述第二地址的段ID放入所述待发送报文,并基于所述第一地址和所述第二地址确定的目标二维数组转发所述待发送报文。
需要说明的是,本实施例以预先确定待发送报文转发时经过的所有交换机或者接收主机的设备地址以及端口地址的路由方法为例说明待发送报文的转发过程,具体地,报文转发线路如图4所示,发送主机到接收主机之间经过5个交换机,其中,有三个交换机为压缩交换机,两个交换机为非压缩交换机,写入这5个交换机以及接收主机的设备地址以及端口地址需要3个段ID,如图3所示,SID1和SID3是写入非压缩交换机以及接收主机的设备地址以及端口地址的,SID2是写入压缩交换机的设备地址以及端口地址的,图3中的内容会被写入待发送报文中。
本实施例中基于第一地址和第二地址确定目标二维数组的过程是:先定义二维数组,由图4可知,由5个交换机和一个接收主机可确定本实施例中的目标二维数组中包含6个二维数组,若图4中的交换机1和交换机3是压缩交换机,则交换机1的设备地址将被写入图3中SID2中设备地址的第一部分,交换机1的端口地址将被写入图3中SID2中端口地址的第一部分,交换机3的设备地址将被写入图3中SID2中设备地址的第二部分,交换机3的端口地址将被写入图3中SID2中端口地址的第二部分;同理,交换机2的设备地址将被写入图3中SID1中设备地址的第一部分,交换机2的端口地址将被写入图3中SID1中端口地址的第一部分,以此类推,接收主机的设备地址将被写入图3中SID3中设备地址的第二部分,接收主机的端口地址将被写入图3中SID3中端口地址的第二部分,本实施例定义的二维数组中的第一个数(下文用L表示)表示SID的个数,例如,SID1对应的L值为1,本实施例定义的二维数组中的第二个数(下文用I表示SID中设备地址或者端口地址的第几部分),例如SID2中设备地址的第一部分,以及SID2中端口地址的第一部分,对应的I值为1,根据图4对应的报文转发线路,以及压缩交换机和非压缩交换机的位置可知,对应的目标二维数组为[(2,1)(1,1)(2,2)(1,2)(3,1)(3,2)],上述目标二维数组中的第一个二维数组(2,1)表示,发送主机的下一个节点对应的交换机(即图4中的交换机1)的设备地址在SID2中设备地址的第一部分,发送主机的下一个节点对应的交换机的端口地址在SID2中端口地址的第一部分,基于上述确定的目标二维数组完成待发送报文的转发过程。
进一步地,在一种可行的实施例中,获取所述待发送报文的转发要求,上述步骤S20,对所述发送主机和所述接收主机进行路由,得到报文转发线路,包括:
步骤S21,对所述发送主机和所述接收主机进行路由,得到目标转发路线;
步骤S22,若所述目标转发路线存在一个,则将所述目标转发路线作为报文转发线路;
步骤S23,若所述目标转发路线存在多个,则对所述目标转发路线进行筛选,并将筛选得到的与所述转发要求匹配的目标转发路线作为报文转发线路。
需要说明的是,本实施例以预先确定待发送报文转发时经过的所有交换机或者接收主机的设备地址以及端口地址的路由方法为例说明待发送报文的转发过程,具体地,发送主机和接收主机之间可进行路由的交换机可能比较多,报文可以转发的线路也可能有多条,若发送主机和接收主机之间可以转发报文的线路只有一条,即目标转发路线存在一个,则将目标转发路线作为待发送报文的转发线路;若发送主机和接收主机之间可以转发报文的线路存在多个,则通过预先获取的待发送报文的转发要求,对所有目标转发路线进行筛选,并将筛选得到的与待发送报文的转发要求匹配的目标转发路线作为报文转发线路,其中,转发要求可以是转发次数和转发速度等,匹配的判断规则也可以包括相同和相似。
进一步地,在一种可行的实施例中,上述步骤S30,对所述压缩交换机的地址进行压缩,得到第二地址,包括:
步骤S31,对所述压缩交换机的地址进行拆分,将拆分得到的公共前缀去除,以实现对所述压缩交换机的地址的压缩,得到第二地址,其中,所述第二地址对应的字节数小于所述第一地址对应的字节数,且所述第一地址对应的字节数是所述第二地址对应的字节数的m倍,m为整数。
需要说明的是,上述内容中已经指出,交换机的设备地址的长度为16比特,交换机的端口地址的长度也是16比特,接收机的设备地址和端口地址与交换机相同,支持压缩的交换机的设备地址和端口地址的长度可以被压缩为8比特,地址压缩的方法一般是,把多个地址的相同部分去除,需要说明的是,支持压缩的交换机确定设备地址和端口地址时,所使用的地址块是相同的,即所有支持压缩的交换机的设备地址和端口地址都具有相同的长度为8比特的内容,这是支持压缩的前提,首先获取所有压缩交换机的设备地址,然后对设备地址进行拆分,定义所有压缩交换机的设备地址中相同的部分为公共前缀或者公共后缀,然后将所有压缩交换机的设备地址中的公共前缀去除,便实现了对压缩交换机的设备地址的压缩,压缩交换机的端口地址同理,压缩交换机的设备地址在压缩前的长度为16比特,压缩交换机的设备地址在压缩后的长度为8比特,则本实施例中第一地址对应的字节数是第二地址对应的字节数的m倍,m为整数2。
进一步地,在一种可行的实施例中,定义目标二维数组中的第一数值为所述段ID的序号,目标二维数组中的第二数值为所述段ID中的地址序号,上述步骤S40,基于所述第一地址和所述第二地址确定目标二维数组,包括:
步骤a1,若所述段ID存在一个,且所述段ID包含所述第一地址,则确定所述第一数值为一,所述第二数值小于或等于m;
步骤a2,若所述段ID存在一个,且所述段ID包含所述第二地址,则确定所述第一数值为一,所述第二数值属于第一区间,其中,所述第一区间的极小值为一,极大值为2m。
需要说明的是,若段ID存在一个,且段ID包含第一地址,这说明报文转发线路上包含两个以内的不支持压缩的交换机,L值(即本实施例中的第一数值)表示SID的个数,段ID存在一个,则L值为一,I值表示SID中设备地址或者端口地址的第几部分,不支持压缩的交换机的设备地址以及端口地址分别占用16比特的长度,则I值最大为2,即I值最大为m,最小为1;若段ID存在一个,且段ID包含第二地址,这说明报文转发线路上包含四个以内的支持压缩的交换机,L值为一,I值最大为4,即I值最大为2m,最小为1。
进一步地,在一种可行的实施例中,定义目标二维数组中的第一数值为所述段ID的序号,目标二维数组中的第二数值为所述段ID中的地址序号,上述步骤S40,基于所述第一地址和所述第二地址确定目标二维数组,还包括:
步骤a3,若所述段ID存在多个,且所有段ID均包含所述第一地址,则确定所述第二数值小于或等于m,所述第一数值属于第二区间,其中,所述第二区间的极小值为二,极大值为所述段ID的个数;
步骤a4,若所述段ID存在多个,且所述段ID中存在包含所述第二地址的段ID,则确定所述第一数值属于第二区间,所述第二数值属于所述第一区间。
需要说明的是,若段ID存在多个,且所有段ID均包含第一地址,这说明报文转发线路上包含两个以上的不支持压缩的交换机,L值(即本实施例中的第一数值)表示SID的个数,段ID存在多个,则L值大于或等于2,I值表示SID中设备地址或者端口地址的第几部分,不支持压缩的交换机的设备地址以及端口地址分别占用16比特的长度,则I值最大为2,即I值最大为m,最小为1;若段ID存在多个,且所有的段ID中存在包含第二地址的段ID,这说明报文转发线路上包含支持压缩的交换机和不支持压缩的交换机,例如图3,L值大于或等于2,I值最大为4,即I值最大为2m,最小为1。
本发明提出的报文转发方法应用于包括发送主机和交换机的SRv6网络,首先SRv6网络接收发送主机触发的报文转发指令,获取报文转发指令对应的待发送数据,并将待发送数据放入基于SRv6网络生成的待发送报文,然后基于SRv6网络的转发规则,确定待发送数据对应的接收主机,并对发送主机和接收主机进行路由,得到报文转发线路,筛选出报文转发线路上的压缩交换机和非压缩交换机,获取非压缩交换机的第一地址,并对压缩交换机的地址进行压缩,得到第二地址,最后将包含第一地址或第二地址的段ID放入待发送报文,并基于第一地址和第二地址确定的目标二维数组转发待发送报文,本发明通过对包含第一地址或第二地址的段ID进行设计,并结合SRv6网络的报文转发机制,设计新的相较于现有技术更少的SRv6执行动作,使用了较少的交换机硬件资源,报文转发的计算过程也比较简单。
进一步地,参照图5,在本发明上述实施例的基础上,提出了本发明报文转发方法的第二实施例。
本实施例是第一实施例中步骤S40细化的步骤,本实施例与本发明上述实施例的区别在于:
步骤S41,获取所述目标二维数组当前指定的段ID,若所述目标二维数组当前指定的段ID包含所述第二地址,则对所述目标二维数组当前指定的段ID进行偏移操作;
步骤S42,根据所述偏移操作,确定接收所述待发送报文的目标交换机的地址,以基于所述目标交换机的地址转发所述待发送报文。
需要说明的是,上述实施例已经简单介绍了根据目标二维数值转发待发送报文的方法,具体地,如图3和图4所示,图4中的交换机1和交换机3是压缩交换机,根据图4对应的报文转发线路,以及压缩交换机和非压缩交换机的位置可知,对应的目标二维数组为[(2,1)(1,1)(2,2)(1,2)(3,1)(3,2)],获取目标二维数组当前指定的段ID,若目标二维数组当前指定的段ID为SID2,即目标二维数组当前指定的段ID包含第二地址,则对目标二维数组当前指定的段ID进行偏移操作,例如,目标二维数组当前对应的二维数组为(2,2),则图3中SID2中设备地址和端口地址的第二部分到第四部分整体向前偏移8个比特的长度,即偏移前的SID2中设备地址和端口地址的第二部分至第四部分,变成了偏移后的SID2中设备地址和端口地址的第一部分至第三部分,偏移后的SID2中设备地址和端口地址的第四部分变成0,通过将设备地址和端口地址同时向前偏移8个比特的长度,设计出新的相较于现有技术更少的SRv6执行动作,使用了较少的交换机硬件资源。
偏移后的SID2中设备地址和端口地址的第一部分将作为下一个节点对应的交换机(或者接收主机)的设备地址和端口地址,将待转发报文发送到下一个节点对应的交换机或者接收主机的设备地址和端口地址,以此实现待发送报文的转发。
本发明提出的新的相较于现有技术更少的SRv6执行偏移动作,通过定义设备地址和端口地址各部分的含义,减少了交换机硬件资源的使用。
此外,参照图6,本发明实施例还提出一种报文转发装置,所述报文转发装置包括:
待发送数据获取模块10,用于接收发送主机触发的报文转发指令,获取所述报文转发指令对应的待发送数据,并将所述待发送数据放入基于SRv6网络生成的待发送报文;
报文转发线路获取模块20,用于基于所述SRv6网络的转发规则,确定所述待发送数据对应的接收主机,并对所述发送主机和所述接收主机进行路由,得到报文转发线路;
地址压缩模块30,用于筛选出所述报文转发线路上的压缩交换机和非压缩交换机,获取所述非压缩交换机的第一地址,并对所述压缩交换机的地址进行压缩,得到第二地址;
报文发送模块40,用于将包含所述第一地址或所述第二地址的段ID放入所述待发送报文,并基于所述第一地址和所述第二地址确定的目标二维数组转发所述待发送报文。
可选地,所述地址压缩模块30,包括:
压缩单元,用于对所述压缩交换机的地址进行拆分,将拆分得到的公共前缀去除,以实现对所述压缩交换机的地址的压缩,得到第二地址,其中,所述第二地址对应的字节数小于所述第一地址对应的字节数,且所述第一地址对应的字节数是所述第二地址对应的字节数的m倍,m为整数。
可选地,定义目标二维数组中的第一数值为所述段ID的序号,目标二维数组中的第二数值为所述段ID中的地址序号,所述报文发送模块40,包括:
第一确定单元,用于若所述段ID存在一个,且所述段ID包含所述第一地址,则确定所述第一数值为一,所述第二数值小于或等于m;
第二确定单元,用于若所述段ID存在一个,且所述段ID包含所述第二地址,则确定所述第一数值为一,所述第二数值属于第一区间,其中,所述第一区间的极小值为一,极大值为2m。
可选地,所述报文发送模块40,还包括:
第三确定单元,用于若所述段ID存在多个,且所有段ID均包含所述第一地址,则确定所述第二数值小于或等于m,所述第一数值属于第二区间,其中,所述第二区间的极小值为二,极大值为所述段ID的个数;
第四确定单元,用于若所述段ID存在多个,且所述段ID中存在包含所述第二地址的段ID,则确定所述第一数值属于第二区间,所述第二数值属于所述第一区间。
可选地,获取所述待发送报文的转发要求,所述报文转发线路获取模块20,包括:
目标转发路线获取单元,用于对所述发送主机和所述接收主机进行路由,得到目标转发路线;
第五确定单元,用于若所述目标转发路线存在一个,则将所述目标转发路线作为报文转发线路;
目标转发路线筛选单元,用于若所述目标转发路线存在多个,则对所述目标转发路线进行筛选,并将筛选得到的与所述转发要求匹配的目标转发路线作为报文转发线路。
可选地,所述报文发送模块40,包括:
偏移操作单元,用于获取所述目标二维数组当前指定的段ID,若所述目标二维数组当前指定的段ID包含所述第二地址,则对所述目标二维数组当前指定的段ID进行偏移操作;
地址确定单元,用于根据所述偏移操作,确定接收所述待发送报文的目标交换机的地址,以基于所述目标交换机的地址转发所述待发送报文。
此外,本发明实施例还提出一种可读存储介质,所述可读存储介质上存储有报文转发程序,所述报文转发程序被处理器执行时实现上述实施例提供的报文转发方法中的操作。
上述各程序模块所执行的方法可参照本发明方法各个实施例,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序;术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的报文转发方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
- 报文转发方法、装置、设备、可读存储介质及程序产品
- 一种报文转发方法、装置及程序产品、存储介质