发布信息

报文传输方法和报文传输装置与流程

作者:admin      2022-09-20 16:45:12     474



电子通信装置的制造及其应用技术1.本技术涉及通信技术领域,更具体地,涉及一种报文传输方法和报文传输装置。背景技术:2.高性能计算(high performance computing,hpc)的一个本质特征是可以实现跨越所有或部分并行计算任务间的信息同步,在高性能计算集群中,用来实现跨并行任务间的信息同步的方法包括组播技术和单播技术。3.对于组播技术而言,发送端只需要发出一份报文,网络将报文复制给组播组中所有的成员,以此可以通过组播组实现点对多点的信息同步。对于单播技术而言,发送端可以在多个单播会话同时发送相同的消息来实现消息复制,以此通过多个并行的单播会话实现点到多点的信息同步。4.然而,组播技术无法保证信息传输的可靠性,单播技术的带宽开销大。技术实现要素:5.本技术提供一种报文传输方法和报文传输装置,有利于减少发送端的带宽开销,并且提高报文传输的可靠性。6.第一方面,提供了一种报文传输方法,包括:发送端获取给第一接收端和第二接收端的相同的待传输消息;该发送端获取该发送端与该第一接收端之间的第一会话信息和该发送端与该第二接收端之间的第二会话信息,该第一会话信息和该第二会话信息不同;该发送端基于该第一会话信息和该第二会话信息对该待传输消息进行封装,得到第一报文,该第一报文包括该待传输消息、该第一会话信息和该第二会话信息;该发送端发送该第一报文。7.应理解,该第一报文仅包含一份待传输消息,因为发送端给第一接收端和第二接收端的待传输消息相同,即发送端发送给第一接收端和第二接收端的是同一个待传输消息,该第一报文不需要包含两份相同的待传输信息以节省带宽;该第一报文携带多个会话信息,因为发送端与第一接收端的会话信息跟该发送端与第二接收端的会话信息不同。8.在本技术实施例中,发送端可以将第一会话信息、第二会话信息和待传输消息封装到一份报文中,这样发送端只需要发送一份报文便可将同一个待传输消息发送给第一接收端和第二接收端,有助于减小发送端的带宽开销。此外,由于发送端可以重用与第一接收端对应的第一会话信息和与第二接收端对应的第二会话信息,这样可以实现传输层序列号空间的连续性,有助于提高报文传输的可靠性。9.结合第一方面,在第一方面的某些实现方式中,该发送端基于该第一会话信息和该第二会话信息对该待传输消息进行封装,得到第一报文,包括:该发送端分别将该第一会话信息和该第二会话信息封装成第一报文头和第二报文头;该发送端将该第一报文头、该第二报文头和该待传输消息进行封装,得到该第一报文。10.在本技术实施例中,发送端具有将多个报文头封装在同一份报文中的功能,该多个报文头是基于发送端和多个接收端之间的多个会话信息构建的,即发送端可以重用会话信息,有助于提高报文传输的可靠性。11.结合第一方面,在第一方面的某些实现方式中,该第一报文还包括标识信息,该标识信息用于标识该第一报文的类型。12.本技术实施例中的发送端具有将多个报文头封装在同一份报文中的功能,即封装后的第一报文中包括多个报文头,发送端可以对第一报文进行标识,有利于明确第一报文的类型。13.结合第一方面,在第一方面的某些实现方式中,该标识信息位于该第一报文的链路层头部、网络层头部或传输层头部。14.结合第一方面,在第一方面的某些实现方式中,该会话信息包括下列一种或多种:源ip地址、目的ip地址、传输层源端口、传输层目的端口、队列对qp信息以及传输层序列信息。15.在本技术实施例中,会话信息中可以包括传输层序列信息(如传输层序列号),主要用于检测丢包,发送端可以重用传输层序列号,这样可以实现与对应单播报文序列号空间的连续性,从而可以复用单播会话的丢包检测与重传状态,以此来提高传输的可靠性。16.第二方面,提供了一种报文传输方法,包括:转发设备接收第一报文,该第一报文包括发送端给第一接收端和第二接收端的相同的待传输消息、该发送端与该第一接收端之间的第一会话信息和该发送端与该第二接收端之间的第二会话信息;该转发设备对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文;该转发设备向该第一接收端发送该第二报文;该转发设备向该第二接收端发送该第三报文。17.在本技术实施例中,转发设备具有将该第一报文进行拆分并且重新封装为多个单播报文的功能,这样有利于提高报文传输的可靠性。18.结合第二方面,在第二方面的某些实现方式中,该转发设备对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文,包括:该转发设备从该第一报文中提取该待传输消息、该第一会话信息和该第二会话信息;该转发设备将该第一会话信息与该待传输消息进行封装,得到该第二报文;该转发设备将该第二会话信息与该待传输消息进行封装,得到该第三报文。19.在本技术实施例中,可以将第一会话信息与该待传输消息封装为第二报文,将第二会话信息与该待传输消息封装为第三报文,这样有助于将同一个待传输消息按照不同的会话信息发送给不同的接收端,有助于报文传输的可靠性。20.结合第二方面,在第二方面的某些实现方式中,该第一报文还包括标识信息,该标识信息用于标识该第一报文的类型;该转发设备基于该标识信息,判断该第一报文的类型是否为需重新封装类型;该转发设备对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文,包括:该转发设备在该第一报文的类型为需重新封装类型的情况下,对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文。21.在本技术实施例中,转发设备可以依据第一报文中的标识信息对该第一报文的类型进行判断,这样有利于转发设备对第一报文进行正确的处理,有利于提高报文传输的可靠性。22.结合第二方面,在第二方面的某些实现方式中,该标识信息位于该第一报文的链路层头部、网络层头部或传输层头部。23.结合第二方面,在第二方面的某些实现方式中,该会话信息包括下列一种或多种:源ip地址、目的ip地址、传输层源端口、传输层目的端口、队列对qp信息以及传输层序列信息。24.第三方面,提供了一种报文传输方法,包括:第一接收端接收第一报文,该第一报文包括发送端给该第一接收端和第二接收端的相同的待传输消息、该发送端与该第一接收端之间的第一会话信息和该发送端与该第二接收端之间的第二会话信息;该第一接收端从该第一报文中获取该待传输消息和目标会话信息,该目标会话信息中的目的ip地址与该第一接收端的ip地址相同。25.在本技术实施例中,第一接收端可以将接收到的第一会话信息和第二会话信息进行过滤,保留目标会话信息,该目标会话信息中的目的ip地址与该第一接收端的ip地址相同。第一接收端的目标会话信息即为第一会话信息。26.结合第三方面,在第三方面的某些实现方式中,该会话信息包括下列一种或多种:源ip地址、目的ip地址、传输层源端口、传输层目的端口、队列对qp信息以及传输层序列信息。27.第四方面,提供了一种报文传输装置,包括:用于执行上述第一方面中任一种可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面中任一种可能的实现方式中的方法的模块。28.第五方面,提供了另一种报文传输装置,包括:用于执行上述第二方面中任一种可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面中任一种可能的实现方式中的方法的模块。29.第六方面,提供了再一种报文传输装置,包括:用于执行上述第三方面中任一种可能的实现方式中的方法。具体地,该装置包括用于执行上述第三方面中任一种可能的实现方式中的方法的模块。30.第七方面,提供了又一种报文传输装置,包括处理器,该处理器与存储器耦合,可用于执行存储器中的指令,以实现上述第一方面至第三方面中任一种可能实现方式中的方法。可选地,该装置还包括存储器。可选地,该装置还包括通信接口,处理器与通信接口耦合。31.第八方面,提供了一种处理器,包括:输入电路、输出电路和处理电路。处理电路用于通过输入电路接收信号,并通过输出电路发射信号,使得处理器执行上述第一方面至第三方面中任一种可能实现方式中的方法。32.在具体实现过程中,上述处理器可以为芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本技术实施例对处理器及各种电路的具体实现方式不做限定。33.第九方面,提供了一种处理装置,包括处理器和存储器。该处理器用于读取存储器中存储的指令,并可通过接收器接收信号,通过发射器发射信号,以执行上述第一方面至第三方面中任一种可能实现方式中的方法。34.可选地,处理器为一个或多个,存储器为一个或多个。35.可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。36.在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,rom),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本技术实施例对存储器的类型以及存储器与处理器的设置方式不做限定。37.应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。38.上述第九方面中的处理装置可以是一个芯片,该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。39.第十方面,提供了一种报文传输系统,包括:发送端、转发设备和接收端,该发送端用于执行上述第一方面中任一种可能的实现方式中的方法,该转发设备用于执行上述第二方面中任一种可能的实现方式中的方法,该接收端用于执行上述第三方面中任一种可能的实现方式中的方法。40.第十一方面,提供了一种计算机程序产品,计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述第一方面中至第三方面任一种可能实现方式中的方法。41.第十二方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序(也可以称为代码,或指令),当其在计算机上运行时,使得计算机执行上述第一方面至第三方面中任一种可能实现方式中的方法。附图说明42.图1是一种利用组播技术实现报文传输的流程示意图;43.图2是基于组播技术的一种报文传输方法的示意性流程图;44.图3是一种利用单播技术实现报文传输的流程示意图;45.图4是基于单播技术的一种报文传输方法的示意性流程图;46.图5是本技术实施例提供的一种报文传输方法的示意性流程图;47.图6是本技术实施例提供的一种报文传输的流程示意图;48.图7是本技术实施例提供的另一种报文传输方法的示意性流程图;49.图8是本技术实施例提供的一种标识报文的示意图;50.图9是本技术实施例提供的另一种标识报文的示意图;51.图10是本技术实施例提供的再一种标识报文的示意图;52.图11是本技术实施例提供的又一种标识报文的示意图;53.图12是本技术实施例提供的再一种报文传输方法的示意性流程图;54.图13是本技术实施例提供的又一种报文传输方法的示意性流程图;55.图14是本技术实施例提供的又一种报文传输的流程示意图;56.图15是本技术实施例提供的一种报文传输装置的示意性框图;57.图16是本技术实施例提供的另一种报文传输装置的示意性框图;58.图17是本技术实施例提供的再一种报文传输装置的示意性框图;59.图18是本技术实施例提供的又一种报文传输装置的示意性框图;60.图19是本技术实施例提供的又一种报文传输装置的示意性框图;61.图20是本技术实施例提供的又一种报文传输装置的示意性框图。具体实施方式62.下面将结合附图,对本技术中的技术方案进行描述。63.在高性能计算集群中,一般用来实现跨并行任务间的信息同步的技术方案有组播技术和单播技术,下面对这两种技术进行详细介绍。64.1、组播技术65.无论是网络协议(internet protocol,ip)还是以太协议都是用特定的地址来标识组播报文的,例如,ipv4规定224.0.0.0到239.255.255.255的地址段为组播地址,以太规定以太媒体访问控制(media access control,mac)地址的第一字节第一比特为1是组播帧,mac地址所有比特全为1是特殊的组播,即广播帧。此外,以太规范也针对不同的协议应用给出了组播地址范围,例如,ipv4的组播ip报文对应的mac地址为01-00-5e-00-00到01-00-5e-7f-ff-ff,这意味着mac地址中的25比特是不变的,剩下的23比特是可以变化的,而ipv4的组播ip地址可变化范围是28比特,32个不同的ipv4组播地址会被映射到同一个以太mac地址上。66.在ip组播规范中,主机先通过信令,例如互联网组播管理协议(internet group management protocol,igmp)加入到制定的组播组,主机所接入的路由器或交换机维护主机与所加入的组播组的映射关系,接入路由器或交换机通过组播路由协议,例如协议无关组播协议(protocol independent multicast,pim)建立组播组与转发端口的映射关系。组播发送端发出组播报文后,中间的网络设备按照组播路由协议构建的组播报文组播组与出口端的映射关系,按照端口列表复制组播报文,组播报文逐跳复制到达边缘网络设备后,边缘网络设备例如路由器或交换机按照组播报文组播组与组播成员(即接收端主机)的关系复制组播报文到对应的主机。67.本技术涉及多个网络设备之间的消息传输,将网络设备按功能进行区分,可分为源端服务器、转发设备或接收端服务器,应理解,下文中提及的源端服务器、转发设备或接收端服务器仅作为功能上的区分,而不是物理设备的区分,本技术实施例所称的源端服务器、转发设备或接收端服务器仅为示例,源端服务器也可称为发送端服务器或发送端,接收端服务器也可称为接收端,转发设备也可称为中间设备,本技术在此不做限制。68.图1是一种利用组播技术实现报文传输的流程示意图。如图1所示,利用组播实现消息复制的过程涉及源端服务器10、转发设备20、转发设备30、转发设备40、接收端服务器50和接收端服务器60。其中,源端服务器10的ip地址为192.168.10.10,接收端服务器50的ip地址为162.0.20.20,接收端服务器60的ip地址为10.0.30.30,组播组的ip地址为232.2.2.10。示例性地,转发设备20上具有三个接口,其中源端服务器与转发设备20可以通过接口1进行通信,转发设备20与转发设备30可以通过接口2进行通信,转发设备20与转发设备40可以通过接口3进行通信。69.应理解,上述报文传输的本质是消息复制的过程。在如图1所示的消息复制的过程中,组播报文110中包括待传输消息,源端服务器10通过组播报文110发送待传输消息给接收端服务器50和接收端服务器60。源端服务器10发出组播报文110,组播报文110先到达转发设备20。网络设备20按照组播路由协议信令生成的组播复制表项将组播报文110进行复制,产生与组播报文110相同的组播报文120.1和组播报文120.2,转发设备20将组播报文120.1和组播报文120.2分别发送给转发设备30和40。转发设备30和转发设备40分别复制进入的组播报文120.1和组播报文120.2,产生相同的组播报文130.1和组播报文130.2,转发设备30和网络设备40分别将组播报文130.1和组播报文130.2组播发送给接收端服务器50和接收端服务器60。之后接收端服务器50接收组播报文130.1,接收端服务器60接收组播报文130.2。70.在上述组播复制过程中,转发设备可以将进入的组播报文进行复制,得到相同的组播报文,例如,转发设备20将进入的组播报文110进行复制,得到与组播报文110相同的组播报文120.1和组播报文120.2,应理解,此处的相同体现在以下几个方面:71.(1)组播报文的目的ip地址相同,即在ip头中的目标ip地址相同,例如组播报文110、组播报文120.1和组播报文130.1的目的ip地址相同,均为232.2.2.10,即组播组地址,而组播报文110、组播报文120.2和组播报文130.2的目的ip地址相同,也均为232.2.2.10。72.(2)组播报文的传输层源端口相同,此处指用户数据报协议(user datagram protocol,udp)的源端口不同,例如组播报文110、组播报文120.1和组播报文130.1的传输层源端口相同,均为39366,而组播报文110、组播报文120.2和组播报文130.2的传输层源端口相同,也均为39366。73.(3)组播报文的基本传输头(base transport header,bth)的会话目的队列对(queue pairs,qp)相同,例如组播报文110、组播报文120.1和组播报文130.1的bth目的qp相同,均为1100,而组播报文110、组播报文120.2和组播报文130.2的bth目的qp相同,也均为1100。74.(4)组播报文的bth会话目的序列号相同,例如组播报文110、组播报文120.1和组播报文130.1的bth目的序列号相同,均为70,而组播报文110、组播报文120.2和组播报文130.2的bth目的序列号相同,也均为70。75.传输层序列号是单播会话状态的一部分,主要用于检测丢包,通常若发现所在会话的前后相邻到达的两个报文序列号不连续,则认为发生丢包并反馈给源端服务器,以便源端服务器发起重传,从而保证传输的可靠性。当源端服务器通过不同路径到达不同目的地的序列号相同时,若此时发生丢包,由于组播的源端服务器无法感知接收端服务器,因此源端服务器无法确定是哪个接收端服务器发生了丢包。76.在上述利用组播实现消息复制的过程中,源端服务器、转发设备和接收端服务器分别对应组播组的ip地址产生如表一至表三的会话表项,会话表项用于记录会话信息。其中,表一是源端服务器10产生的会话表项,表二是接收端服务器50产生的会话表项,表三是接收端服务器60产生的会话表项,会话表项包括但不限于会话标识、参与会话的本地ip地址(源ip地址)、组播组标识、传输层协议类型、参与会话的本地传输层端口、组播对应的传输层端口和本地会话对应的操作系统任务标识等。77.表一[0078][0079]表二[0080][0081]表三[0082][0083]表四是转发设备20产生的会话表项,表五是转发设备30产生的会话表项,表六是转发设备40产生的会话表项,转发设备的会话表项用于记录组播组成员关系。[0084]表四[0085]组播组标识成员232.1.1.10接口2,接口3[0086]表五[0087]组播组标识成员232.1.1.10162.0.20.20[0088]表六[0089]组播组标识成员232.1.1.1010.0.30.30[0090]图2是基于上述组播技术的一种报文传输方法200的示意性流程图,方法200中的步骤可由源端服务器执行。方法200包括以下步骤:[0091]s201,接收到消息复制指令。[0092]s202,从该消息复制指令中提取待传输消息和待发送的群组标识。[0093]s203,以待发送的群组标识对应的组播组地址为目的地址,将该待传输消息封装为组播报文。[0094]s204,发送封装后的组播报文。[0095]在通过组播组实现点对多点的信息同步时,利用网络组播技术的报文复制实现消息复制,此时,源端服务器只需要发送一份组播报文,转发设备可以将这份组播报文复制给组播组中的所有成员。但是组播技术存在以下不足:[0096](1)组播组与接收者的关系是需要额外的信令动态维护的,这样无法适用于群组关系在毫秒甚至微秒快速变化的应用。[0097](2)无论源端服务器还是接收端服务器感受到的都是中间状态的组播组,源端服务器和接收端服务器没有直接感知,源端服务器无法得知哪些接收端服务器接收到组播报文,哪些接收端服务器未接收到组播报文,这样无法保证报文传输的可靠性。[0098]2、单播技术[0099]当前实现消息复制的技术方案还有单播技术。若源端服务器期望向多个接收端服务器发送相同的信息,源端服务器可以预先与多个接收端服务器建立单播会话,之后在每个单播会话上发送相同的待传输消息即可实现消息复制。[0100]图3是一种利用单播技术实现消息复制的报文流程示意图。如图3所示,利用单播实现消息复制的过程涉及源端服务器10、转发设备20、转发设备30、转发设备40、接收端服务器50和接收端服务器60。其中,源端服务器10的ip地址为192.168.10.10,接收端服务器50的ip地址为162.0.20.20,接收端服务器60的ip地址为10.0.30.30。[0101]应理解,上述报文传输的本质是消息复制的过程。在如图3所示的消息复制的过程中,源端服务器可以利用两个不同的单播报文将同一个待传输消息复制给接收端服务器50和接收端服务器60。源端服务器10发出两个不同的单播报文210.1和210.2,单播报文210.1和单播报文210.2先到达转发设备20。转发设备20按照单播报文的目的ip地址分别将单播报文210.1和单播报文210.2转发给转发设备30和40。转发设备20将单播报文210.1和单播报文210.2进行单播转发产生单播报文220.1和单播报文220.2,当单播报文220.1和单播报文220.2分别到达转发设备30和转发设备40后,转发设备30和40向接收端服务器50和60转发单播报文220.1和220.2,产生两个不同的单播报文230.1和230.2。之后接收端服务器50接收单播报文230.1,接收端服务器60接收单播报文230.2。[0102]在上述单播复制过程中,转发设备可以将进入的不同的单播报文进行单播转发,得到不同的单播报文,例如,转发设备20将单播报文210.1和单播报文210.2进行单播转发,得到两个不同的单播报文220.1和220.2,应理解,此处的不同主要体现在以下几个方面:[0103](1)单播报文的目的ip地址不同,即在ip头中的目标ip地址不相同,例如单播报文210.1、单播报文220.1和单播报文230.1的目的ip地址为162.0.20.20,即为接收端服务器50的ip地址,而单播报文210.1、单播报文220.1和单播报文230.1的目的ip地址为10.0.30.30,即为接收端服务器60的ip地址。[0104](2)单播报文的传输层源端口不同,此处指udp的源端口不同,例如单播报文210.1、单播报文220.1和单播报文230.1的传输层源端口为39366,而单播报文210.1、单播报文220.1和单播报文230.1的传输层源端口为31000。[0105](3)单播报文的基本传输头(base transport header,bth)的会话目的qp不同,例如单播报文210.1、单播报文220.1和单播报文230.1的bth目的qp为1100,而单播报文110、单播报文120.2和单播报文130.2的bth目的qp为3200。[0106](4)单播报文的bth会话目的序列号不同,例如单播报文210.1、单播报文220.1和单播报文230.1的bth目的序列号为70,而单播报文110、单播报文120.2和单播报文130.2的bth目的序列号为600。与组播技术中提及的序列号的作用相同,此处的序列号也用于检测丢包。[0107]在上述利用单播实现消息复制的过程中,源端服务器、转发设备和接收端服务器分别对应组播组的ip地址产生如表七至表九的会话表项,会话表项用于记录会话信息。其中,表七是源端服务器10产生的会话表项,表八是接收端服务器50产生的会话表项,表九是接收端服务器60产生的会话表项,会话表项包括但不限于会话标识、参与会话的本地ip地址(源ip地址)、对端ip地址、传输层协议类型、参与会话的本地传输层源端口、参与会话的本地传输层目的端口、本地会话对应的操作系统任务标识、发送报文的序列号、接收报文的序列号和会话对应的对端qp号等。[0108]表七[0109][0110]表八[0111][0112]表九[0113][0114]转发设备20、30和40除了传统的ip单播路由表项之外无需额外的表项开销。[0115]图4是基于上述单播技术的一种报文传输方法400的示意性流程图,方法400中的步骤可由源端服务器执行。方法400包括以下步骤:[0116]s401,收到消息复制指令。[0117]s402,从消息复制指令中提取待传输消息和待发送的成员标识列表。[0118]s403,判断是否存在待发送的成员。若是,则执行s404;若否,则任务结束。[0119]s404,选择一个待发送的成员。[0120]s405,基于该待发送的成员对应的单播会话信息将待传输消息封装为单播报文。[0121]s406,向该待发送的成员发送封装后的单播报文。[0122]s407,标记该待发送的成员的待传输消息已发送。[0123]在通过多个并行的单播会话实现点到多点的信息同步时,源端服务器可以在多个单播会话中同时发送相同的消息来实现消息复制,此时源端服务器需要针对所有接收端服务器发送多份单播报文。但是单播技术存在以下不足:[0124](1)源端服务器需要为每一个接收端服务器维护一个状态,例如连接建立的状态、报文可靠传输的状态等。[0125](2)在进行消息同步时,源端服务器需要分别向每一个接收端服务器发送一份报文,这样会导致源端服务器网卡的带宽开销大。[0126]鉴于组播技术无法保证信息传输的可靠性,而单播技术的带宽开销大,本技术实施例提供了一种报文传输方法和报文传输装置,源端服务器可以将多个会话信息和待传输消息封装到一份报文中,可以通过一份报文向多个接收端服务器发送相同的待传输消息,有助于减小源端服务器的带宽开销。转发设备可以对携带多个会话信息的报文进行拆分,并重新封装为多个单播报文,重新封装后的每个单播报文具有不同的会话信息,如不同的目的ip地址、不同的传输层序列信息、不同的传输层会话标识,这里的传输层会话标识可以包括但不限于传输控制协议(transmission control protocol,tcp)的源端口或目的端口、udp的源端口或目的端口、bth的目的qp、通用路由封装(generic routing encapsulation,gre)协议的序列号等。重新封装后的每个单播报文的会话信息来源于重新封装前的报文。接收端服务器可以复用既有的会话信息来实现传输层序列号空间的连续性,有助于提高报文传输的可靠性。[0127]在介绍本技术实施例提供的报文传输方法和报文传输装置之前,先做出以下几点说明。[0128]第一,在下文示出的实施例中,各术语及英文缩略语,如待传输消息、发送端、接收端、会话消息等,均为方便描述而给出的示例性举例,不应对本技术构成任何限定。本技术并不排除在已有或未来的协议中定义其它能够实现相同或相似功能的术语的可能。[0129]第二,在下文示出的实施例中第一、第二以及各种数字编号仅为描述方便进行的区分,并不用来限制本技术实施例的范围。例如,区分不同的报文等。[0130]第三,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b和c中的至少一项(个),可以表示:a,或b,或c,或a和b,或a和c,或b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。[0131]下面将结合图5至图7对本技术提供的报文传输方法进行详细说明。以下将对上文中提及的源端服务器简称为发送端,接收端服务器简称为接收端,发送端和接收端仅作为本技术所涉及的网络设备的功能上的区分,在一些情况下,此处的发送端也可以具备接收消息的功能,接收端也可以具备发送消息的功能。[0132]本技术实施例中以两个接收端,即第一接收端和第二接收端为例进行描述,应理解,接收端的数量还可扩展至三个、四个乃至更多,在具有多个接收端的场景下,本技术实施例所提供的报文传输方法仍然适用。[0133]图5是本技术实施例提供的一种报文传输方法500的示意性流程图,方法500包括以下步骤:[0134]s501,发送端获取给第一接收端和第二接收端的相同的待传输消息。[0135]应理解,发送端发送给第一接收端的待传输消息和发送给第二接收端的待传输消息为同一个待传输消息。[0136]s502,发送端获取该发送端与该第一接收端之间的第一会话信息和该发送端与该第二接收端之间的第二会话信息,该第一会话信息和该第二会话信息不同。[0137]s503,发送端基于该第一会话信息和该第二会话信息对该待传输消息进行封装,得到第一报文,该第一报文包括该待传输消息、该第一会话信息和该第二会话信息。[0138]应理解,该第一报文仅包含一份待传输消息,因为发送端给该第一接收端和该第二接收端的待传输消息相同,该第一报文不需要包含两份相同的待传输信息以便节省带宽;该第一报文携带多个会话信息,因为发送端与该第一接收端的会话信息和该发送端与该第二接收端的会话信息不同。[0139]s504,发送端向转发设备发送该第一报文。相应地,转发设备接收该第一报文。[0140]s505,转发设备对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文。[0141]应理解,第二报文和第三报文为不同的单播报文,具有不同的会话信息。[0142]s506,转发设备向接收端发送该第二报文和该第三报文。相应地,接收端接收该第二报文和该第三报文。[0143]应理解,s506中的接收端包括第一接收端和第二接收端,转发设备向第一接收端发送重新封装后得到的第二报文,相应地,第一接收端接收该第二报文;转发设备向第二接收端发送重新封装后得到的第三报文,相应地,第二接收端接收该第三报文。[0144]在本技术实施例中,重新封装后的第二报文和第三报文具有不同的会话信息,如不同的目的ip地址、不同的传输层序列信息、不同的传输层会话标识,这里的传输层会话标识可以包括但不限于tcp的源端口或目的端口、udp的源端口或目的端口、bth的目的qp、gre的序列号等。重新封装后的第二报文的会话信息和第三报文的会话信息来源于重新封装前的第一报文。[0145]在本技术实施例中,发送端可以将第一会话信息、第二会话信息和待传输消息封装到一份报文中,这样发送端只需要发送一份报文便可将同一个待传输消息发送给第一接收端和第二接收端,有助于减小发送端的带宽开销。此外,由于发送端可以重用与第一接收端对应的第一会话信息和与第二接收端对应的第二会话信息,这样可以实现传输层序列号空间的连续性,有助于提高报文传输的可靠性。转发设备具有拆分第一报文并且对第一报文重新封装为多个单播报文的功能,这样,可以提高报文传输的可靠性,并且有助于降低对接收端接收报文的硬件要求。[0146]应理解,在本技术实施例中,该第一报文的类型为需重新封装类型,且转发设备支持对第一报文进行重新封装的功能。[0147]作为一个可选的实施例,该会话信息包括下列一种或多种:源ip地址、目的ip地址、传输层源端口、传输层目的端口、qp信息以及传输层序列信息。[0148]由于发送端和多个接收端对应的单播会话信息中包括传输层序列信息(如,序列号),而序列信息可以用于检测丢包,若接收端发现所在会话的前后相邻到达的序列号不连续,则认为发生丢包并反馈给发送端,以便发送端发起重传。本技术实施例可以重用发送端和多个接收端之间的会话信息,即重用传输层序列信息,这样可以实现与对应单播报文序列号空间的连续性,从而可以复用单播会话的丢包检测与重传状态,以此来提高传输的可靠性。[0149]本技术可以应用于如图6所示的数据中心网络。下面将结合图6对数据中心网络中的报文传输过程进行详细描述。[0150]图6是本技术实施例提供的一种报文传输的流程示意图。在如图6所示的报文传输的过程中,第一报文810中包括待传输消息和多个会话信息,发送端10通过第一报文810发送同一个待传输消息给接收端50和接收端60。发送端10发出第一报文810,第一报文810先到达转发设备20,。转发设备20按照第一报文810携带的多个不同目的ip地址分别复制消息并封装为不同的单播报文820.1和单播820.2,并将单播报文820.1和820.2发送给转发设备30和40。转发设备30和转发设备40发送报文820.1和820.2分别产生不同的报文830.1和报文830.2,接收端50和接收端60分别接收报文830.1和报文830.2。[0151]应理解,该第一报文810仅包含一份待传输消息,因为发送端10给接收端50和接收端60的待传输消息相同,该第一报文810不需要包含两份相同的待传输信息以便节省带宽;该第一报文携带多个会话信息,因为发送端10与接收端50的会话信息和发送端10与接收端60的会话信息不同。[0152]本技术实施例中的发送端发送的单一报文(即第一报文)可以携带多个会话信息,单一报文中携带的会话信息的数量与接收端的数量相同,这区别于采用组播技术实现消息复制的方法下,发送端发出的每个报文仅携带单一组播会话信息,以及采用单播技术实现消息复制的方法下,发送端发出的每个报文仅携带单一单播会话信息。本技术实施例利用多个会话信息可以实现高可靠、低开销的消息复制。[0153]此外,采用传统单播技术进行消息复制时,有多少个接收端,就需要发送端发送多少份单播报文,因此发送端的带宽开销是随着接收端的数量线性增加的。而在本技术实施例中,由于发送端可以通过一份报文向多个接收端发送同一个待传输消息,因此发送端的带宽开销与接收端的数量是近似无关的,这样有利于减小发送端的带宽开销。[0154]图6中的报文头1和报文头2是基于接收端的会话信息构建的,报文头1对应接收端50的会话信息,报文头2对应接收端60的会话信息。构建报文头的过程将在下文中进行描述。[0155]在如图6所示报文传输过程中,发送端可以重用如表七至表九所示的会话表项,其中,发送端10对应重用表七,接收端50对应重用表八,接收端60对应重用表九。转发设备20、30和40除了传统的ip单播路由表项之外无需额外的表项开销。[0156]本技术实施例可以重用发送端的会话表项,将同一个待传输消息映射到多个不同的会话信息上,并将该待传输消息作为会话信息,在发送该会话信息时,可以在会话信息对应的会话表项中刷新该会话信息的传输层序列号,即实现了对传输层序列号的重用,相对于单播技术而言并未增加表项开销。[0157]应理解,在本技术实施例中,发送端在进行消息复制时与利用单播技术进行消息复制一样,需要针对所有接收端建立单播会话,但是不同之处在于,在高性能计算应用中,这些单播会话是已经建立存在的,本技术实施例是重用这些既有的会话表项,因此相较于单播技术而言并未增加表项开销,并且由于重用会话表项并且在发送端发出的报文中携带多个会话信息,这样使得丢包检测与重传成为可能,有助于提高传输的可靠性。[0158]作为一个可选的实施例,s503包括:发送端分别将第一会话信息和第二会话信息封装成第一报文头和第二报文头;发送端将该第一报文头、第二报文头和该待传输消息进行封装,得到该第一报文。[0159]在本技术实施例中,发送端可以基于不同的接收端对应的不同的会话信息构建不同的报文头,并对会话表项进行更新。[0160]以第一接收端为例,发送端可以以第一接收端对应的单播地址为报文头的目的ip地址,以该第一接收端对应的会话表项中的源ip地址封装为报文头的源ip地址,以该会话表项信息中的传输层源端口封装为报文头的传输层源端口,以该会话表项信息中的传输层目的端口封装为报文头的传输层目的端口,以该会话表项信息中的队列对信息封装为报文头bth层的目的队列对信息,以该会话表项中最近一次的传输层发送序列号确定报文头的传输层发送序列号。[0161]由于传输序列号具有连续性,因此可以由最近一次的传输层发送序列号来确定报文头的传输层发送序列号。示例性地,发送端对应该接收端最近一次的传输层发送序列号为99,则可以确定本次发送端对应该接收端的发送序列号为100。[0162]图7是本技术实施例提供的另一种报文传输方法700的示意性流程图,方法700的步骤和/或流程由发送端执行,方法700包括以下步骤:[0163]s701,接收消息复制指令。[0164]s702,从消息复制指令中提取待传输消息和待发送的成员标识列表。[0165]s703,从该待发送的成员标识列表中选择一个待发送的成员。[0166]s704,基于该待发送的成员对应的单播会话信息构建报文头。[0167]s705,将构建的报文头添加至报文头列表。[0168]s706,将该报文头列表与待传输消息合并封装为报文。[0169]s707,发送封装后的报文。[0170]示例性地,上述消息复制指令来自应用层,消息复制指令中包括待传输消息和待发送的成员标识列表,该成员标识列表中包括多个成员(即接收端)的信息。对于待发送的成员,发送端可以将构建好的报文头添加至报文头列表中,但由于报文头列表有长度限制,当达到一份报文头列表的长度上限,且待发送的成员对应的信息还未处理完成时时,可以先将这份报文头列表与待传输消息合并封装为报文发送出去,剩余待发送的成员的信息在封装成报文头之后再添加至另一份报文头列表中。[0171]应理解,在s706中得到的报文中仅包含一份待传输消息,因为发送端给多个待发送的成员(即接收端)的待传输消息相同,该报文不需要包含多份相同的待传输信息以节省带宽;该第一报文携带多个会话信息,因为发送端与多个接收端之间的多个会话信息不同。[0172]可选地,发送端可以先判断在待发送的成员标识列表中是否存在待处理的成员信息,若存在,则选择一个待发送的成员,以该成员对应的信息构建报文头并插入报文头列表中,之后标记该成员的信息已处理。每处理完成一个待发送成员的信息之后,发送端再次判断在待发送的成员标识列表中是否存在待处理的成员信息,直至所有成员信息全部处理完成。[0173]作为一个可选的实施例,第一报文还包括标识信息,该标识信息用于标识该第一报文的类型。[0174]作为一个可选的实施例,该标识信息位于该第一报文的链路层头部、网络层头部或传输层头部。[0175]在本技术实施例中,为了使转发设备能够识别这种携带多个会话信息的特殊报文(即第一报文)以进行重新封装,发送端可以在第一报文中的链路层头部、网络层头部或传输层头部插入标识信息以供转发设备进行识别。示例性地,链路层头部可以为以太头,网络层头部可以为ip头,传输层头部可以为udp头。此外,该标识信息还可以位于应用层的特定位置,网络层的特定位置,或者通过以太层特定的组播地址来标识,本技术实施例在此不做限制。[0176]下面将结合图8至图11对标识报文的过程进行详细描述。[0177]1、标识信息位于以太头[0178]图8是本技术实施例提供的一种标识报文的示意图。如图8所示,可以通过以太类型字段特定数值来对报文进行标识。例如,对于ipv4报文而言,以太类型字段数值是0x0800,本技术实施例可以申请特定的以太类型字段例如0x0f10对报文进行标识。并且可以在以太类型字段之后紧接两个字节描述报文头列表信息,报文头列表信息包括但不限于以字节数为单位的单一报文头块的尺寸和报文头块的数量。在图8中,可以认为单一报文头块的尺寸为40字节,报文头块的数量为2。[0179]其中,40字节的单一报文头块包括20字节的ipv4头、8字节的udp头和12字节的bth头。[0180]图8是通过以太头中的以太类型字段对报文进行标识的,还可以通过以太头中的特定的目的mac地址来标识,例如申请特定的以太组播mac地址对这类特殊的报文进行标识,还可以在以太头中的任意字段进行标识,本技术实施例在此不作限制。[0181]2、标识信息位于ipv4头[0182]图9是本技术实施例提供的另一种标识报文的示意图。如图9所示,可以通过ipv4协议类型字段特定数值对报文进行标识。例如,对于udp报文而言,ip协议类型字段数值是0x11,本技术实施例可以申请特定的ipv4类型字段例如0xf1对报文进行标识。并且可以在ipv4头之后紧接两个字节描述报文头列表信息,报文头列表信息包括但不限于以字节数为单位的单一报文头块的尺寸和报文头块的数量。在图9中,可以认为单一报文头块的尺寸为40字节,报文头块的数量为2。[0183]其中,40字节的单一报文头块包括20字节的ipv4头、8字节的udp头和12字节的bth头。[0184]图9是通过ipv4头中的ipv4协议类型字段对报文进行标识的,还可以通过特定的目的ip地址来标识,例如申请特定的组播ip地址对这类特殊的报文进行标识,还可以在ipv4头中的任意字段进行标识,本技术实施例在此不作限制。[0185]3、标识信息位于ipv6头[0186]图10是本技术实施例提供的再一种标识报文的示意图。如图10所示,可以通过ipv6下一个报文头类型字段特定数值对报文进行标识。例如,对于udp报文而言,ip协议类型字段数值是0x11,本技术实施例可以申请特定的ipv6下一个报文头类型字段例如0xf1对报文进行标识。并且可以在ipv6头之后紧接两个字节描述报文头列表信息,报文头列表信息包括但不限于以字节数为单位的单一报文头块的尺寸和报文头块的数量。在图10中,可以认为单一报文头块的尺寸为60字节,报文头块的数量为2。[0187]其中,60字节的单一报文头块包括40字节的ipv6头、8字节的udp头和12字节的bth头。[0188]图10是通过ipv6头中的ipv6下一个报文头类型字段对报文进行标识的,还可以通过特定的目的ip地址来标识,例如申请特定的组播ip地址对这类特殊的报文进行标识,还可以在ipv6头中的任意字段进行标识,本技术实施例在此不作限制。[0189]4、标识信息位于udp头[0190]图11是本技术实施例提供的又一种标识报文的示意图。如图11所示,可以通过udp目的端口号字段特定数值对报文进行标识。例如,对于rocev2报文而言,ip协议类型字段数值是4791,本技术实施例可以申请特定的udp目的端口字段例如0x01f1对报文进行标识。并且可以在udp头之后紧接两个字节描述报文头列表信息,报文头列表信息包括但不限于以字节数为单位的单一报文头块的尺寸和报文头块的数量。在图11中,可以认为单一报文头块的尺寸为40字节,报文头块的数量为2。[0191]其中,40字节的单一报文头块包括20字节的ipv4头、8字节的udp头和12字节的bth头。[0192]应理解,以上对报文进行标识的过程仅为示例,还可以有其他任意的标识形式和标识位置,本技术实施例在此不做限制。[0193]以上结合图5至图11对发送端的报文传输过程进行了详细描述,下面将对转发设备的报文处理过程进行详细描述。[0194]作为一个可选的实施例,s505包括:转发设备从该第一报文中提取该待传输消息、第一会话信息和第二会话信息;转发设备将该第一会话信息与该待传输消息进行封装,得到第二报文;转发设备将该第二会话信息与该待传输消息进行封装,得到第三报文。[0195]作为一个可选的实施例,该第一报文还包括标识信息,该标识信息用于标识该第一报文的类型;基于该标识信息,转发设备判断该第一报文的类型是否为需重新封装类型;转发设备在该第一报文的类型为需重新封装类型的情况下,对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文。[0196]在本技术实施例中,转发设备需要判断该第一报文的类型是否为需重新封装类型,在转发设备支持对该第一报文进行重新封装的情况下,转发设备可以按照第一报文中携带的第一报文头中的目的ip地址将该第一报文重新封装为该第二报文,按照第一报文中携带的第二报文头中的目的ip地址将该第一报文重新封装为该第三报文,该第二报文和该第三报文为单播报文,这样有助于每个接收端都能准确可靠地接收到报文。[0197]图12是本技术实施例提供的再一种报文传输方法1200的示意性流程图。方法1200的步骤和/或流程由转发设备执行。方法1200包括以下步骤:[0198]s1201,接收第一报文。[0199]s1202,从该第一报文中提取标识信息。[0200]s1203,基于该标识信息,判断该第一报文的类型是否为需重新封装类型。[0201]s1204,若该第一报文的类型为需重新封装类型,则从该第一报文中提取报文头列表和待传输消息。[0202]s1205,将报文头列表中的多个报文头分别与该待传输消息进行封装,得到多个单播报文。[0203]s1206,发送该多个单播报文。[0204]应理解,在本技术实施例中,由于第一报文中包括多个不同的会话信息,转发设备基于不同的会话信息对第一报文进行重新封装得到多个单播报文。重新封装后的每个单播报文具有不同的会话信息,如不同的目的ip地址、不同的传输层序列信息、不同的传输层会话标识,这里的传输层会话标识可以包括但不限于tcp的源端口或目的端口、udp的源端口或目的端口、bth的目的qp、gre的序列号等。重新封装后的每个单播报文的会话信息来源于重新封装前的第一报文。[0205]在本技术实施例中,若该第一报文的类型为需重新封装类型,且转发设备支持对报文进行重新封装的功能时,转发设备可以针对报文头列表中的每一个报文头,以待封装的报文头为新的报文头,以待传输消息为负荷封装为新的单播报文,转发设备可根据每个单播会话对应的路由地址将报文准确地发送至接收端。[0206]示例性地,若该第一报文的类型为需重新封装类型,而转发设备不支持对报文进行重新封装的功能时,发送端可以在封装报文时,在根据发送端与接收端之间的会话信息形成的报文头和以太头之间插入传统的组播报文头,或者通过特定的组播mac地址来标识这类报文,例如将mac地址的第一字节第一比特标识为1,这样转发设备按照组播进行复制转发即可。[0207]在转发设备不支持对报文进行重新封装的功能的情况下,接收端接收到的报文中包括多个报文头,需要对多个报文头进行过滤,每个接收端保留与其对应的报文头即可。下面将结合图13对接收端的报文处理过程进行描述。[0208]图13是本技术实施例提供的又一种报文传输方法1300的示意性流程图。方法1300中的s1301至s1304与方法500中发送端对应的步骤s501至s504相同,此处不再赘述。以第一接收端为例,方法1300还包括以下步骤:[0209]s1305,转发设备向第一接收端发送第一报文。相应地,该第一接收端接收该第一报文。[0210]s1306,第一接收端从该第一报文中获取该待传输消息和目标会话信息。[0211]应理解,该目标会话信息中的目的ip地址与该第一接收端的ip地址相同。该第一接收端的目标会话信息即为第一会话信息。[0212]在本技术实施例中,由于转发设备不支持对第一报文进行重新封装的功能,因此转发设备可以在支持传统组播的情况下将该第一报文组播发送给第一接收端。第一接收端接收到的组播报文中包括多个报文头,第一接收端需要对多个报文头进行过滤,将报文头中的目的ip地址与第一接收端的ip地址相同的报文头保留,将报文头中的目的ip地址与第一接收端的ip地址不相同的丢弃,这样通过发送端、转发设备和接收端对报文的联合处理仍然有利于降低报文传输的开销并提高报文传输的可靠性。[0213]应理解,本技术实施例以第一接收端为例进行描述,其余接收端执行的步骤与该第一接收端相同,此处不再赘述。[0214]图14是本技术实施例提供的又一种报文传输的流程示意图。在如图14所示的报文传输的过程中,第一报文1710中包括待传输消息和多个会话信息,发送端10通过第一报文1710发送待传输消息给接收端50和接收端60。应理解,图14中的第一报文1710为组播报文。[0215]应理解,该第一报文1710仅包含一份待传输消息,因为发送端10给接收端50和接收端60的待传输消息相同,该第一报文1710不需要包含两份相同的待传输信息以便节省带宽;该第一报文携带多个会话信息,因为发送端10与接收端50的会话信息和发送端10与接收端60的会话信息不同。[0216]发送端10发出第一报文1710,第一报文1710先到达转发设备20,转发设备20将第一报文1710进行组播复制产生报文1720.1和报文1720.2,并将报文1720.1和报文1720.2发送给转发设备30和转发设备40。转发设备30和转发设备40发送报文1720.1和报文1720.2分别产生不同的报文1730.1和报文1730.2,接收端50和接收端60分别接收报文1730.1和报文1730.2。[0217]由于报文1730.1和报文1730.2均有多个报文头,因此接收端50和接收端60需要对多个报文头进行过滤,将多个报文头中目的ip地址与自己的ip地址对应的报文头进行保留,不属于自己的目的ip地址对应的报文头进行丢弃。例如,接收端50接收到的报文1730.1中包括两个报文头,其中一个报文头中的目的ip地址为162.0.20.20,另一个报文头中的目的ip地址为10.0.30.30,由于接收端50的ip地址为162.0.20.20,因此接收端50将目的ip地址为162.0.20.20对应的报文头进行保留,将目的ip地址为10.0.30.30对应的报文头进行丢弃。[0218]在本技术实施例中,转发设备不具有重新封装报文的功能,但只要发送端具有封装携带多个报文头的功能,并且接收端可以对多个报文头进行过滤,那么同样可以获得高可靠、低成本的收益,降低了对转发设备的硬件要求。[0219]示例性地,若该第一报文的类型不是需重新封装的类型,则转发设备按照传统规范进行查表转发即可。[0220]应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。[0221]上文中结合图5至图14,详细描述了根据本技术实施例的报文传输方法,下面将结合图15至图20详细描述根据本技术实施例的报文传输装置。[0222]图15示出了本技术实施例提供的一种报文传输装置1500的示意性框图,该装置1500包括:获取模块1510、处理模块1520和发送模块1530。[0223]其中,获取模块1510用于:获取给第一接收端和第二接收端的相同的待传输消息;以及,获取该装置与该第一接收端之间的第一会话信息和该装置与该第二接收端之间的第二会话信息,该第一会话信息和该第二会话信息不同;处理模块1520用于:基于该第一会话信息和该第二会话信息对该待传输消息进行封装,得到第一报文,该第一报文包括该待传输消息、该第一会话信息和该第二会话信息;发送模块1530用于:发送该第一报文。[0224]可选地,处理模块1520用于:分别将该第一会话信息和该第二会话信息封装成第一报文头和第二报文头;以及,将该第一报文头、该第二报文头和该待传输消息进行封装,得到该第一报文。[0225]可选地,该第一报文还包括标识信息,该标识信息用于标识该第一报文的类型。[0226]可选地,该标识信息位于该第一报文的链路层头部、网络层头部或传输层头部。[0227]可选地,该会话信息包括下列一种或多种:源ip地址、目的ip地址、传输层源端口、传输层目的端口、队列对qp信息以及传输层序列信息。[0228]在一个可选的例子中,本领域技术人员可以理解,装置1500可以具体为上述实施例中的发送端,或者,上述实施例中发送端的功能可以集成在装置1500中。上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。例如,上述发送模块1530可以为通信接口,例如收发接口。装置1500可以用于执行上述方法实施例中与发送端对应的各个流程和/或步骤。[0229]图16示出了本技术实施例提供的另一种报文传输装置1600的示意性框图,该装置1600包括:接收模块1610、处理模块1620和发送模块1630。[0230]其中,接收模块1610用于:接收第一报文,该第一报文包括发送端给第一接收端和第二接收端的相同的待传输消息、该发送端与该第一接收端之间的第一会话信息和该发送端与该第二接收端之间的第二会话信息;处理模块1620用于:对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文;发送模块1630用于:向该第一接收端发送该第二报文;以及,向该第二接收端发送该第三报文。[0231]可选地,处理模块1620用于:从该第一报文中提取该待传输消息、该第一会话信息和该第二会话信息;将该第一会话信息与该待传输消息进行封装,得到该第二报文;以及,将该第二会话信息与该待传输消息进行封装,得到该第三报文。[0232]可选地,该第一报文还包括标识信息,该标识信息用于标识该第一报文的类型;处理模块1620用于:基于该标识信息,判断该第一报文的类型是否为需重新封装类型;以及,在该第一报文的类型为需重新封装类型的情况下,对该第一报文进行重新封装,得到与该第一会话信息对应的第二报文和与该第二会话信息对应的第三报文。[0233]可选地,该标识信息位于该第一报文的链路层头部、网络层头部或传输层头部。[0234]可选地,该会话信息包括下列一种或多种:源ip地址、目的ip地址、传输层源端口、传输层目的端口、队列对qp信息以及传输层序列信息。[0235]在一个可选的例子中,本领域技术人员可以理解,装置1600可以具体为上述实施例中的转发设备,或者,上述实施例中转发设备的功能可以集成在装置1600中。上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。例如,上述接收模块1610可以为通信接口,例如收发接口。装置1600可以用于执行上述方法实施例中与转发设备对应的各个流程和/或步骤。[0236]图17示出了本技术实施例提供的再一种报文传输装置1700的示意性框图,该装置1700包括:接收模块1710和获取模块1720。[0237]其中,接收模块1710用于:接收第一报文,该第一报文包括发送端给该装置和第二接收端的相同的待传输消息、该发送端与该装置之间的第一会话信息和该发送端与该第二接收端之间的第二会话信息;获取模块1720用于:从该第一报文中获取该待传输消息和目标会话信息,该目标会话信息中的目的ip地址与该装置的ip地址相同。[0238]可选地,该会话信息包括下列一种或多种:源ip地址、目的ip地址、传输层源端口、传输层目的端口、队列对qp信息以及传输层序列信息。[0239]在一个可选的例子中,本领域技术人员可以理解,装置1700可以具体为上述实施例中的第一接收端和/或第二接收端,或者,上述实施例中第一接收端和/或第二接收端的功能可以集成在装置1700中。上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。例如,上述接收模块1710可以为通信接口,例如收发接口。装置1700可以用于执行上述方法实施例中与第一接收端和/或第二接收端对应的各个流程和/或步骤。[0240]应理解,这里的装置1500、装置1600和装置1700以功能模块的形式体现。这里的术语“模块”可以指应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。[0241]在本技术的实施例,图15至图17中的装置1500、装置1600和装置1700也可以是芯片或者芯片系统,例如:片上系统(system on chip,soc)。对应的,接收模块1710可以是该芯片的收发电路,在此不做限定。[0242]图18示出了本技术实施例提供的又一种报文传输装置1800的示意性框图。该装置1800包括处理器1810、收发器1820和存储器1830。其中,处理器1810、收发器1820和存储器1830通过内部连接通路互相通信,该存储器1830用于存储指令,该处理器1810用于执行该存储器1830存储的指令,以控制该收发器1820发送信号和/或接收信号。[0243]应理解,装置1800可以具体为上述实施例中的发送端、转发设备或接收端,或者,上述实施例中发送端、转发设备或接收端的功能可以集成在装置2000中,装置2000可以用于执行上述方法实施例中与发送端、转发设备或接收端对应的各个步骤和/或流程。可选地,该存储器1830可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器1810可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与发送端、转发设备或接收端对应的各个步骤和/或流程。上述接收端包括第一接收端和/或第二接收端。[0244]应理解,在本技术实施例中,处理器1810可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。[0245]示例性地,发送端和接收端的产品形态可以是服务器,下面以图19为例,对发送端服务器的组成进行详细描述。[0246]图19示出了本技术实施例提供的又一种报文传输装置1900的示意性框图。该装置1900包括处理器1910、内存器件1920、外存器件1930、输入设备1940、输出设备1950以及网卡1960。[0247]其中,处理器1910为核心器件,内存器件1920可以包括作为主存的高速内存,外存器件1930可以为机械硬盘或固态硬盘。输入设备1940可以包括键盘、鼠标和麦克风,输出设备1950可以包括扬声器和显示器。网卡1960可以提供输入功能和输出功能,网卡1960可以为支持远程直接数据存取(remote direct memory access,rdma)的智能网卡。[0248]内存器件1920、外存器件1930、输入设备1940、输出设备1950以及网卡1960可以通过总线连接到处理器1910。[0249]应理解,装置1900可以具体为上述实施例中的发送端,或者,上述实施例中发送端的功能可以集成在装置1900中,装置1900可以用于执行上述方法实施例中与发送端对应的各个步骤和/或流程。[0250]在一种实现方式中,该处理器1910可以用于执行内存器件1920中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与发送端对应的各个步骤和/或流程。若处理器1910执行报文封装,则发送端的核心功能位于处理器1910上。[0251]在另一种实现方式中,该网卡1960可以用于执行内存器件1920存储的指令,并且该网卡执行该指令时,该网卡可以执行上述方法实施例中与发送端对应的各个步骤和/或流程。若网卡1960执行报文封装,则发送端的核心功能位于网卡1960上。[0252]图20示出了本技术实施例提供的又一种报文传输装置2000的示意性框图。该装置2000包括:输入接口2010、输入方向流水线2020、芯片2030、调度器2040以及输出接口2050。其中,输入接口2010和输出接口2050分别对应多个mac模块,输入方向流水线2020可以包括报文处理模块、匹配-执行模块和查询-转发模块。[0253]应理解,装置2000可以具体为上述实施例中的转发设备,或者,上述实施例中转发设备的功能可以集成在装置2000中,装置2000可以用于执行上述方法实施例中与转发设备对应的各个步骤和/或流程。[0254]在装置2000中,输入接口2010对应的多个mac模块对物理链路上接收到的比特流进行解码、存储和边界识别以形成数据帧,然后将数据帧发送给输入方向流水线2020。[0255]在输入方向流水线2020中,报文处理模块提取报文描述信息,例如报文头和报文头的目的端口号等信息。匹配-执行模块根据策略表对报文进行匹配,并且在匹配成功后执行配置的策略。查询-转发模块针对报文头信息例如目的ip地址或mac地址信息等查询转发表以确定输出端口和对应的封装信息。[0256]在输入方向流水线2020中的处理结果将会记录至报文描述信息中,报文本体可以被存储至芯片2030中,多个输出接口2050可以通过调度器2040访问芯片2030,调度器2040选择待发送的报文然后按照报文描述信息进行重新封装处理,封装后的报文经由输出接口对应的mac模块进行编码发送出去。[0257]转发设备可以支持对报文进行重新封装的功能,该功能主要体现在报文转发决策和调度后对报文的封装处理上。[0258]本技术实施例主要涉及到发送端、接收端和转发设备,发送端和接收端的产品形态可以为服务器,当发送端服务器支持将同一个待传输消息和多个不同的会话信息封装到同一个报文中的功能、转发设备支持对报文重新封装的功能以及接收端支持接收报文的功能时,便可以形成一个端到端的应用,有利于减小报文传输的开销并且可以提高报文传输的可靠性。[0259]在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。[0260]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0261]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0262]在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。[0263]所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。[0264]另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。[0265]所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0266]以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部