一种报文发送方法及装置与流程

文档序号:11138513阅读:239来源:国知局
一种报文发送方法及装置与制造工艺
本发明涉及通信
技术领域
,特别是涉及一种报文发送方法及装置。
背景技术
:隧道技术是一种封装技术,它可以利用一种网络协议来传输另一种网络协议的报文。即一种网络协议将其他网络协议的报文封装在自己的报文中,然后在网络中传输。封装后的报文在网络中传输的路径,称为隧道。隧道是一个虚拟的点到点的连接,其两端的网络设备分别对报文进行封装及解封装。在实际应用中,网络设备在发送封装后的报文时,需要将报文从隧道对应的物理出接口发送出去。而物理出接口由其对应的MTU(MaximumTransmissionUnit,最大传输单元),也就是说,通过物理出接口发送报文时,报文大小需小于或等于该物理出接口的MTU值。当报文大小大于物理出接口的MTU值时,需要对报文进行分片才可以再发送。P2MP(Pointtomulti-point,点对多点)隧道是指点到多点隧道。P2MP隧道有不确定的多个对端网络设备,报文可能从一台网络设备的多个物理出接口发送出去。但是,现有技术中,一个P2MP隧道只有一个MTU值,而这一个MTU值不能适应多个对端网络设备。从而,会导致在报文发送过程中,对端网络设备需要对报文进行组片再分片,严重影响对端网络设备性能。技术实现要素:本发明实施例的目的在于提供一种报文发送方法及装置,以使P2MP隧道的MTU值适应多个对端网络设备,从而在通过P2MP隧道发送报文时,能够避免对端网络设备对报文进行组片再分片,提升对端网络设备性能。具体技术方案如下:第一方面,本发明实施例提供了一种报文发送方法,应用于网络设备,所述网络设备本地保存有各目的地址与点对多点P2MP隧道各最大传输单元MTU值的对应关系,所述各MTU值是根据与各目的地址对应的物理出接口的MTU值确定的,所述方法包括:确定报文的目的地址,并在本地保存的各目的地址与P2MP隧道各MTU值的对应关系中,查找与所述目的地址匹配的目标隧道MTU值;根据所述目标隧道MTU值,确定是否对所述报文进行分片;如果是,对所述报文进行分片,并将分片后的报文进行封装后,通过与所述目的地址对应的物理出接口发送;如果否,将所述报文进行封装后,通过所述物理出接口发送。第二方面,本发明实施例提供了一种报文发送装置,应用于网络设备,所述网络设备本地保存有各目的地址与点对多点P2MP隧道各最大传输单元MTU值的对应关系,所述各MTU值是根据与各目的地址对应的物理出接口的MTU值确定的,所述装置包括:执行模块,用于确定报文的目的地址,并在本地保存的各目的地址与P2MP隧道各MTU值的对应关系中,查找与所述目的地址匹配的目标隧道MTU值;确定模块,用于根据所述目标隧道MTU值,确定是否对所述报文进行分片;处理模块,用于当所述确定模块确定结果为是时,对所述报文进行分片,并将分片后的报文进行封装后,通过与所述目的地址对应的物理出接口发送;当所述确定模块确定结果为否时,将所述报文进行封装后,通过所述物理出接口发送。本发明实施例提供了一种报文发送方法及装置,网络设备可以在本地保存各目的地址与P2MP隧道各MTU值的对应关系,在通过P2MP隧道发送报文前,可以根据该报文的目的地址,获取对应的目标隧道MTU值,进而可以根据该目标隧道MTU值,确定是否对报文进行分片。也就是说,P2MP隧道的MTU值能够适应多个对端网络设备,从而在通过P2MP隧道发送报文时,能够避免对端网络设备对报文进行组片再分片,提升对端网络设备性能。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的报文发送方法的流程图;图2为本发明实施例提供的一种网络架构示意图;图3为本发明实施例提供的报文发送方法的另一流程图;图4为本发明实施例提供的报文发送装置的结构示意图;图5为本发明实施例提供的报文发送装置的另一结构示意图。具体实施方式为了使P2MP隧道的MTU值适应多个对端网络设备,从而在通过P2MP隧道发送报文时,能够避免对端网络设备对报文进行组片再分片,提升对端网络设备性能,本发明实施例提供了一种报文发送方法及装置。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。在本发明实施例中,为了使P2MP隧道的MTU值适应多个对端网络设备,从而在通过P2MP隧道发送报文时,能够避免对端网络设备对报文进行组片再分片,提升对端网络设备性能,网络设备在发送报文时,可以根据其目的地址,选用匹配的隧道MTU值。进一步地,可以根据该隧道MTU值,确定是否对报文进行分片。从而可以避免网络设备先对报文进行封装后再分片,导致对端网络设备需要对报文进行先组片再分片。本发明实施例提供了一种报文发送方法,过程如图1所示,该过程可以包括以下步骤:S101,确定报文的目的地址,并在本地保存的各目的地址与P2MP隧道各MTU值的对应关系中,查找与所述目的地址匹配的目标隧道MTU值。本发明实施例提供的方法,可以应用于网络设备。具体地,该网络设备可以为P2MP隧道发送端网络设备。其中,该网络设备可以为交换机、路由器等。网络设备可以在本地保存各目的地址与P2MP隧道各MTU值的对应关系。也就是说,在网络设备中,一个P2MP隧道对应有多个MTU值。其中,各MTU值可以是根据与各目的地址对应的物理出接口的MTU值确定的。例如,可以将各目的地址对应的隧道MTU值确定为该目的地址对应的物理出接口MTU值减去隧道封装头大小。具体的,在本发明实施例中,网络设备发送报文时,可以首先确定报文的目的地址。进一步地,可以在本地保存的各目的地址与P2MP隧道各MTU值的对应关系中,查找与该目的地址匹配的目标隧道MTU值。例如,网络设备本地保存的各目的地址与P2MP隧道各MTU值的对应关系可以如下表所示:目的地址隧道MTU值主机11476主机21376主机31476当网络设备待发送的报文的目的地址为主机2时,其可以查找到与主机2匹配的隧道MTU值为1376。S102,根据所述目标隧道MTU值,确定是否对所述报文进行分片;如果是,执行步骤S103,如果否,执行步骤S104。确定目标隧道MTU值后,网络设备可以进一步根据该目标隧道MTU值,确定是否对报文进行分片。例如,网络设备可以判断报文的大小是否大于目标隧道MTU值,如果大于,表明需要对报文进行分片;如果不大于,表明不需要对报文进行分片。S103,对所述报文进行分片,并将分片后的报文进行封装后,通过与所述目的地址对应的物理出接口发送。当网络设备确定需要对报文进行分片时,其可以对该报文进行分片。网络设备对报文进行分片的过程,可以采用现有方法,本发明实施例对此过程不进行赘述。并且,将报文发送到隧道之前,网络设备还可以将分片后的报文进行封装。例如,网络设备可以根据该报文的目的地址,查找本地的转发表,查找到对应的隧道目的地址,将外层目的地址设为隧道目的地址,完成对该报文的封装。完成对报文的封装后,网络设备可以通过与该目的地址对应的物理出接口发送该报文。网络设备在发送报文时,根据本地保存的各目的地址与P2MP隧道各MTU值的对应关系,找到对应的MTU,这种情况下,当报文大小大于对应的隧道MTU值时,网络设备就可以先对该报文进行分片,再将分片后的报文进行封装。由于查找到的隧道MTU值为根据对应的物理出接口MTU值确定的,因此,能保证封装后的报文,从物理口发送时,不超过物理出接口的MTU,也就不会被物理出接口二次分片。S104,将所述报文进行封装后,通过所述物理出接口发送。当网络设备确定不需要对报文进行分片时,其可以将该报文进行封装。例如,网络设备可以根据该报文的目的地址,查找本地的转发表,查找到对应的隧道目的地址,将外层目的地址设为隧道目的地址,完成对该报文的封装。完成对报文的封装后,网络设备可以通过与该目的地址对应的物理出接口发送该报文。从而使得对端网络设备接收到该报文后,会先解封装得到分片报文,当其确定需要继续转发各分片报文时,当各分片报文的大小均不大于对应的物理出接口的MTU值时,对端网络设备可以直接将各分片报文转发出去,从而避免了对端网络设备对报文先组片再分片。本发明实施例提供了一种报文发送方法,网络设备可以在本地保存各目的地址与P2MP隧道各MTU值的对应关系,在通过P2MP隧道发送报文前,可以根据该报文的目的地址,获取对应的目标隧道MTU值,进而可以根据该目标隧道MTU值,确定是否对报文进行分片。因此,避免了当隧道MTU为默认的较大值时,封装前不对报文进行分片,而封装后由于报文大小大于物理出接口的MTU值而需要分片,从而导致的接收端网络设备对报文进行组片再分片,从而能够提升接收端网络设备性能提升接收端网络设备性能。有些情况下,网络设备本地保存的各目的地址与各隧道MTU值的对应关系中,有的隧道MTU值是默认值,即最大值。即使设置为最大值,若报文在加封装之后超过了物理口的MTU值,则报文依然会在物理口处进行分片。因此,在本发明实施例中,为了确保网络设备获取到的为与目的地址匹配的隧道MTU值,可以根据目的地址对应的物理出接口调整的隧道MTU值,避免对端网络设备对报文进行组片再分片的问题,提升对端网络设备性能。具体地,网络设备可以将物理出接口的MTU值减去隧道封装头大小,得到隧道MTU值。可以理解,在实际应用中,物理出接口的MTU值可能会被重新配置。因此,在本发明实施例中,当网络设备配置任一物理出接口的MTU值时,其可以将本地保存的各目的地址与P2MP隧道各MTU值的对应关系中各MTU值均配置为默认值,如为64000。当物理出接口的MTU值变化时,同时将本地保存的各目的地址与P2MP隧道各MTU值的对应关系中各MTU值均配置为默认值,可以避免本地保存的各MTU值与物理出接口的MTU值不一致,进一步避免了发送报文时,需要对端网络设备对报文进行组片再分片。进一步的,网络设备在获取到目标隧道MTU值,根据该目标隧道MTU值,确定是否对报文进行分片之前,还可以判断该目标隧道MTU值是否为默认值。例如,网络设备可以根据已知的默认值,判断获取到的目标隧道MTU值是否为该默认值。当网络设备确认获取到的目标隧道MTU值为默认值时,通过该目标隧道MTU值发送的报文,可能会导致对端网络设备对报文进行组片再分片。这种情况下,网络设备可以确定该目的地址对应的物理出接口的MTU值,根据该MTU值,计算隧道MTU值,并更新目标隧道MTU值为所计算得到的隧道MTU值。通过判断目标隧道MTU值是否为默认值,如果是,则根据对应的物理出接口更新目标隧道MTU值,能够保证网络设备获取到的目标隧道MTU值为根据对应物理出接口调整的隧道MTU值,进而确保对端网络设备不会对报文进行组片再分片,提升对端网络设备性能。GRE(GenericRoutingEncapsulation,通用路由封装)隧道是一种常见的隧道,如,P2MPGRE隧道。本实施例具体以图2所示的网络架构,详细说明该报文发送方法。如图2所示的网络架构中,主机A与网络设备A之间建立连接;网络设备A与网络设备B及网络设备C之间建立了P2MPGRE隧道;主机B与网络设备B之间建立连接。在图2所示的网络架构中,网络设备A中的P2MPGRE隧道对应有两个对端网络设备,即网络设备B和网络设备C。网络设备A通过P2MPGRE隧道的报文可能通过不同的物理出接口分别发送给网络设备B或网络设备C。而网络设备A的P2MPGRE隧道的MTU值不能同时适应网络设备B和网络设备C,例如,可以将其配置为适应网络设备C的隧道MTU值,如为3376。下面以主机A发送一个2000大小的报文给主机B为例,来说明现有的报文发送过程。主机A将该报文发送给网络设备A,其中,该报文的目的地址为主机B的地址。网络设备A接收到该报文后,确定该报文大小为2000,本端的P2MPGRE隧道的MTU值为3376,因此,网络设备A不会对该报文分片。网络设备A直接对该报文进行封装。具体地,网络设备A可以根据该报文的目的地址,即主机B的地址,在本地的转发表中查找到对应的隧道目的地址,即网络设备B。从而将外层目的地址设为网络设备B的地址,完成对该报文的封装。假定网络设备A对应网络设备B的物理出接口的MTU值为1500,网络设备A封装之后的报文大小为原始报文大小2000、封装头24(IP头20、以及GRE头4),即为2024。封装后的报文通过对应的物理出接口发送时,由于其大小大于该物理出接口的MTU值,因此,网络设备A需对该报文进行分片。例如,网络设备A可以将该报文分为两片,每片的大小均小于或等于1500。网络设备B可以接收到网络设备A发送的两个分片报文。接收到分片报文后,网络设备B会先对分片报文进行组片,得到一个完整的隧道报文。再解封装,解封装之后得到一个2000大小的原始报文。网络设备B获取原始报文中包含的目的地址,即为主机B的地址。因此,网络设备B需要将该报文转发给主机B。假定网络设备B对应主机B的物理出接口的MTU值为1500,网络设备B将报文转发给主机B时,该报文的大小大于该物理出接口的MTU值,因此,网络设备B需对该报文进行分片。例如,网络设备B可以将该报文分为两片,每片的大小均小于或等于1500。主机B可以接收到网络设备B发送的两个分片报文。接收到分片报文后,主机B判断该报文的目的端为本机,主机B会对分片报文进行组片,得到一个完整的原始报文。从上述流程可以看出,由于网络设备A端的P2MP隧道MTU值不能适应各个对端网络设备,从而导致同一个报文,在网络设备A上作了分片,网络设备B上先组片,再分片,主机B上再组片。也就是说,对端网络设备需要同时组片再分片,会极大地影响对端网络设备的性能。在本发明实施例中,网络设备可以在本地保存各目的地址与P2MP隧道各MTU值的对应关系。具体地,如图3所示,网络设备保存各目的地址与P2MP隧道各MTU值的对应关系的过程可以包括:S301,接收GRE报文,并获取所述GRE报文的源地址。在本发明实施例中,网络设备可以接收对端网络设备发送的GRE报文,并获取该GRE报文的源地址。其中,上述对端网络设备可以为P2MP隧道对端任一网络设备。例如,如图2所示的网络架构中,GRE报文可以是网络设备B发送的,也可以是网络设备C发送的。该报文的源地址可以为网络设备接收到的报文的外层源地址,或者,也可以为网络设备对该报文进行解封装后,获取的原始报文的源地址。例如,以图2所示网络架构为例,当主机B向主机A发送报文时,主机B将向网络设备B发送原始报文,该原始报文的源地址为主机B的地址。网络设备B接收到该原始报文后,其可以将该原始报文封装,将其外层源地址设置为网络设备B的地址,并将封装后的报文发送给网络设备A。网络设备A将接收到网络设备B发送的报文后,其可以获取到该报文的外层源地址,即网络设备B的地址;或者,其也可以对该报文进行解封装后,获取到内层原始报文的源地址,即主机B的地址。S302,根据所述源地址,以及本地保存的转发表,确定与所述源地址匹配的物理出接口;并获取该物理出接口的MTU值,根据该MTU值,计算隧道MTU值。当网络设备A接收到网络设备B发送的报文,并获取到报文的源地址后,还可以根据该源地址,以及本地保存的转发表,确定与该源地址匹配的物理出接口。进一步地,网络设备A还可以获取该物理出接口的MTU值,并根据该MTU值,计算隧道MTU值。也就是说,网络设备A可以确定在自身的多个物理出接口中,对应该源地址的物理出接口。进一步地确定该物理出接口的MTU值,进而根据该物理出接口的MTU值,计算隧道MTU值。例如,网络设备A可以将物理出接口的MTU值减去隧道封装头大小,得到隧道MTU值。S303,将所述源地址作为目的地址,在本地保存该目的地址与计算得到的隧道MTU值的对应关系。计算得到的隧道MTU值也即为与接收该报文的物理出接口对应的隧道MTU值。也就是说,网络设备A发送报文时,根据该隧道MTU值对报文进行分片后,可以直接通过该物理出接口发送分片并封装后的报文。可以理解,网络设备A接收到的报文中的源地址,即为后续该网络设备A发送报文时的目的地址。因此,为了指导后续发送报文时,如何对报文进行分片,网络设备A可以将源地址作为目的地址,在本地保存该目的地址与计算得到的隧道MTU值的对应关系。这种情况下,当网络设备A发送报文给该目的地址对应的设备时,其可以根据保存的该隧道MTU对报文进行分片,即可保证分片并封装后的报文能够通过物理出接口发送,从而对端网络设备不会对报文进行组片再分片,提升对端网络设备性能。可选地,在本发明实施例中,网络设备A可以将各目的地址与各隧道MTU值的对应关系保存在网络设备的哈希表中,以在查找与目的地址匹配的目标隧道MTU时,提高查找效率。例如,网络设备A可以将针对每个目的地址保存的隧道MTU值,保存在哈希表的一个节点中。相应于上面的方法实施例,本发明实施例还提供了相应的装置实施例。图4为本发明实施例提供的一种报文发送装置,应用于网络设备,所述网络设备本地保存有各目的地址与点对多点P2MP隧道各最大传输单元MTU值的对应关系,所述各MTU值是根据与各目的地址对应的物理出接口的MTU值确定的,所述装置包括:执行模块410,用于确定报文的目的地址,并在本地保存的各目的地址与P2MP隧道各MTU值的对应关系中,查找与所述目的地址匹配的目标隧道MTU值;确定模块420,用于根据所述目标隧道MTU值,确定是否对所述报文进行分片;处理模块430,用于当所述确定模块确定结果为是时,对所述报文进行分片,并将分片后的报文进行封装后,通过与所述目的地址对应的物理出接口发送;当所述确定模块确定结果为否时,将所述报文进行封装后,通过所述物理出接口发送。本发明实施例提供了一种报文发送装置,网络设备可以在本地保存各目的地址与P2MP隧道各MTU值的对应关系,在通过P2MP隧道发送报文前,可以根据该报文的目的地址,获取对应的目标隧道MTU值,进而可以根据该目标隧道MTU值,确定是否对报文进行分片。也就是说,P2MP隧道的MTU值能够适应多个对端网络设备,从而在通过P2MP隧道发送报文时,能够避免对端网络设备对报文进行组片再分片,提升对端网络设备性能。进一步地,如图5所示,所述装置还包括:接收模块440,用于接收GRE报文,并获取所述GRE报文的源地址;计算模块450,用于根据所述源地址,以及本地保存的转发表,确定与所述源地址匹配的物理出接口;并获取该物理出接口的MTU值,根据该MTU值,计算隧道MTU值;存储模块460,用于将所述源地址作为目的地址,在本地保存该目的地址与计算得到的隧道MTU值的对应关系。进一步地,所述装置还包括:判断模块(图中未示出),用于判断所述目标隧道MTU值是否为默认值;更新模块(图中未示出),用于当所述判断模块判断结果为是时,确定所述物理出接口的MTU值,根据该MTU值,计算隧道MTU值,并更新所述目标隧道MTU值为所计算得到的隧道MTU值。进一步地,所述更新模块,具体用于将所述该MTU值减去隧道封装头大小,得到隧道MTU值。进一步地,所述装置还包括:配置模块(图中未示出),用于当配置物理出接口的MTU值时,将本地保存的各目的地址与P2MP隧道各MTU值的对应关系中,各MTU值均配置为所述默认值。对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1