本發明涉及通信
技術領域:
,特別是涉及一種報文發送方法及裝置。
背景技術:
:隧道技術是一種封裝技術,它可以利用一種網絡協議來傳輸另一種網絡協議的報文。即一種網絡協議將其他網絡協議的報文封裝在自己的報文中,然后在網絡中傳輸。封裝后的報文在網絡中傳輸的路徑,稱為隧道。隧道是一個虛擬的點到點的連接,其兩端的網絡設備分別對報文進行封裝及解封裝。在實際應用中,網絡設備在發送封裝后的報文時,需要將報文從隧道對應的物理出接口發送出去。而物理出接口由其對應的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